Compare commits

..

1 Commits

Author SHA1 Message Date
Hermes Pipeline 27789456db Add Skill: conditional-input-routing
Extracted from: https://github.com/jwwelbor/AgentMap.git
Score: 1.0
2026-08-08 23:48:40 +00:00
9 changed files with 151 additions and 159 deletions
+73
View File
@@ -0,0 +1,73 @@
---
name: conditional-input-routing
version: 1.0.0
description: Collect user input, classify or branch on its content, and route to appropriate
success or failure handling paths to produce a final result
inputs:
- name: request
type: string
description: User-provided input or request to be evaluated
steps:
- name: Start
action: input agent captures initial request into state
agent_type: input
output_field: request
- name: Classify
action: branching agent evaluates request and routes to next_node or on_failure
agent_type: branching
input_fields: request
output_field: decision
next_node: Approve
on_failure: Reject
- name: Approve
action: default agent processes approved request and sets result
agent_type: default
input_fields: request
output_field: result
prompt: 'Request approved: {request}'
- name: Reject
action: default agent processes rejected request and sets result
agent_type: default
input_fields: request
output_field: result
prompt: 'Request rejected: {request}'
outputs:
- name: result
type: string
description: Final output from either the approve or reject branch
tags: []
metadata:
source_repo: https://github.com/jwwelbor/AgentMap.git
extracted_at: ''
confidence: 0.9
---
# conditional-input-routing
Collect user input, classify or branch on its content, and route to appropriate success or failure handling paths to produce a final result
## Steps
1. {'name': 'Start', 'action': 'input agent captures initial request into state', 'agent_type': 'input', 'output_field': 'request'}
2. {'name': 'Classify', 'action': 'branching agent evaluates request and routes to next_node or on_failure', 'agent_type': 'branching', 'input_fields': 'request', 'output_field': 'decision', 'next_node': 'Approve', 'on_failure': 'Reject'}
3. {'name': 'Approve', 'action': 'default agent processes approved request and sets result', 'agent_type': 'default', 'input_fields': 'request', 'output_field': 'result', 'prompt': 'Request approved: {request}'}
4. {'name': 'Reject', 'action': 'default agent processes rejected request and sets result', 'agent_type': 'default', 'input_fields': 'request', 'output_field': 'result', 'prompt': 'Request rejected: {request}'}
## Inputs
- {'name': 'request', 'type': 'string', 'description': 'User-provided input or request to be evaluated'}
## Outputs
- {'name': 'result', 'type': 'string', 'description': 'Final output from either the approve or reject branch'}
## Failure Modes
- Input node fails to capture request (handled by on_failure if defined)
- Branching condition not met and no on_failure path defined
- Missing input_fields in state causing agent execution error
## Source
Extracted from: [https://github.com/jwwelbor/AgentMap.git](https://github.com/jwwelbor/AgentMap.git)
Confidence: 0.9
@@ -0,0 +1,6 @@
# Commands: conditional-input-routing
## Available Commands
- `/skill conditional-input-routing` — Load this skill
- `/run conditional-input-routing` — Execute workflow
@@ -0,0 +1,10 @@
# Examples: conditional-input-routing
## Usage Example
```python
# How to use this skill
# Inputs: {'name': 'request', 'type': 'string', 'description': 'User-provided input or request to be evaluated'}
# Process: {'name': 'Start', 'action': 'input agent captures initial request into state', 'agent_type': 'input', 'output_field': 'request'} → {'name': 'Classify', 'action': 'branching agent evaluates request and routes to next_node or on_failure', 'agent_type': 'branching', 'input_fields': 'request', 'output_field': 'decision', 'next_node': 'Approve', 'on_failure': 'Reject'} → {'name': 'Approve', 'action': 'default agent processes approved request and sets result', 'agent_type': 'default', 'input_fields': 'request', 'output_field': 'result', 'prompt': 'Request approved: {request}'}
# Outputs: {'name': 'result', 'type': 'string', 'description': 'Final output from either the approve or reject branch'}
```
@@ -0,0 +1,61 @@
{
"name": "conditional-input-routing",
"version": "1.0.0",
"goal": "Collect user input, classify or branch on its content, and route to appropriate success or failure handling paths to produce a final result",
"inputs": [
{
"name": "request",
"type": "string",
"description": "User-provided input or request to be evaluated"
}
],
"steps": [
{
"name": "Start",
"action": "input agent captures initial request into state",
"agent_type": "input",
"output_field": "request"
},
{
"name": "Classify",
"action": "branching agent evaluates request and routes to next_node or on_failure",
"agent_type": "branching",
"input_fields": "request",
"output_field": "decision",
"next_node": "Approve",
"on_failure": "Reject"
},
{
"name": "Approve",
"action": "default agent processes approved request and sets result",
"agent_type": "default",
"input_fields": "request",
"output_field": "result",
"prompt": "Request approved: {request}"
},
{
"name": "Reject",
"action": "default agent processes rejected request and sets result",
"agent_type": "default",
"input_fields": "request",
"output_field": "result",
"prompt": "Request rejected: {request}"
}
],
"outputs": [
{
"name": "result",
"type": "string",
"description": "Final output from either the approve or reject branch"
}
],
"failure_modes": [
"Input node fails to capture request (handled by on_failure if defined)",
"Branching condition not met and no on_failure path defined",
"Missing input_fields in state causing agent execution error"
],
"confidence": 0.9,
"explanation": "Extracted from AgentMap's documented conditional workflow example (ReviewFlow). This CSV-declared pattern of input to branching to dual-path handling is reusable for any approval, triage, or routing scenario without writing orchestration code.",
"source_repo": "https://github.com/jwwelbor/AgentMap.git",
"score": 1.0
}
@@ -1,4 +1,4 @@
# Tests: graph-based-node-orchestration # Tests: conditional-input-routing
## Test Checklist ## Test Checklist
@@ -1,108 +0,0 @@
---
name: graph-based-node-orchestration
version: 1.0.0
description: Build a typed node graph that processes data through a sequence of operations
and produces a final result
inputs:
- NIM_MODEL constant (e.g., 'nim:meta/llama-3.1-8b-instruct') for the LLM model
- blacknode package with Graph, Node, and cook functionality
- Python script defining node types with inputs/outputs and connecting them via edges
steps:
- Import required modules (blacknode as bn, NIM_MODEL) and ensure API keys are available
via require_nim_api_key()
- Create a bn.Graph() instance to hold all nodes and their connections
- Define individual nodes with specific input/output parameters (e.g., Text node with
'value' input, LLMAgent node with model parameter, Output node with 'value' output)
- Connect nodes together using edge definitions (from_port -> to_port) to establish
data flow
- Execute the graph using g.cook() to run the pipeline and process data through the
node chain
- Extract the final result from the output node to complete the workflow
outputs:
- A fully constructed graph with typed nodes and defined connections
- Executed result (e.g., processed text, summary, or other output) from the final
node
- A reusable pattern that can be adapted to different models, hardware, or task types
tags: []
metadata:
source_repo: https://github.com/temiroff/Blacknode.git
extracted_at: ''
confidence: 0.95
---
# graph-based-node-orchestration
Build a typed node graph that processes data through a sequence of operations and produces a final result
## Setup
**Dependencies:**
```text
pip install blacknode >= 0.3.0 Python >= 3.11 NVIDIA NIM API key (optional but recommended) Anthropic, OpenAI, or other LLM models
```
**Setup steps:**
1. Clone the repository and install dependencies: pip install -e .
1. Set NVIDIA_API_KEY or other required API keys in .env
1. Run the example script: python examples/hello_agent.py
1. For production, configure hardware pairing and deploy via the blacknode CLI
## Key Files
- `examples/converted_nvidia_nim.py - Full graph with Model, Text, LLMAgent, Output nodes`
- `examples/hello_agent.py - Minimal agent example connecting Literal → LLMAgent → Print`
- `blacknode/core - Graph and node implementation (internal)`
## Steps
1. Import required modules (blacknode as bn, NIM_MODEL) and ensure API keys are available via require_nim_api_key()
2. Create a bn.Graph() instance to hold all nodes and their connections
3. Define individual nodes with specific input/output parameters (e.g., Text node with 'value' input, LLMAgent node with model parameter, Output node with 'value' output)
4. Connect nodes together using edge definitions (from_port -> to_port) to establish data flow
5. Execute the graph using g.cook() to run the pipeline and process data through the node chain
6. Extract the final result from the output node to complete the workflow
## Implementation Details
```python
g = bn.Graph()
```
```python
model = g.node('Model', **{'value': 'nim:meta/llama-3.1-8b-instruct'})
```
```python
agent = g.node('LLMAgent', **{model})
```
```python
result = g.cook(output, 'value')
```
## Inputs
- NIM_MODEL constant (e.g., 'nim:meta/llama-3.1-8b-instruct') for the LLM model
- blacknode package with Graph, Node, and cook functionality
- Python script defining node types with inputs/outputs and connecting them via edges
## Outputs
- A fully constructed graph with typed nodes and defined connections
- Executed result (e.g., processed text, summary, or other output) from the final node
- A reusable pattern that can be adapted to different models, hardware, or task types
## Failure Modes
- Missing or invalid API key (NIM_API_KEY, OPENAI_API_KEY) causing require_nim_api_key() to fail
- Type mismatch in node connections (e.g., expecting 'value' but receiving 'text') breaking the data flow
- Model not available or unreachable (NIM_MODEL not found) causing the LLMAgent node to fail
- Graph execution error due to incorrect edge configuration or circular dependencies
- Resource exhaustion (e.g., GPU memory) when processing large inputs in the pipeline
## Source
Extracted from: [https://github.com/temiroff/Blacknode.git](https://github.com/temiroff/Blacknode.git)
Confidence: 0.95
@@ -1,6 +0,0 @@
# Commands: graph-based-node-orchestration
## Available Commands
- `/skill graph-based-node-orchestration` — Load this skill
- `/run graph-based-node-orchestration` — Execute workflow
@@ -1,10 +0,0 @@
# Examples: graph-based-node-orchestration
## Usage Example
```python
# How to use this skill
# Inputs: NIM_MODEL constant (e.g., 'nim:meta/llama-3.1-8b-instruct') for the LLM model, blacknode package with Graph, Node, and cook functionality, Python script defining node types with inputs/outputs and connecting them via edges
# Process: Import required modules (blacknode as bn, NIM_MODEL) and ensure API keys are available via require_nim_api_key() → Create a bn.Graph() instance to hold all nodes and their connections → Define individual nodes with specific input/output parameters (e.g., Text node with 'value' input, LLMAgent node with model parameter, Output node with 'value' output)
# Outputs: A fully constructed graph with typed nodes and defined connections, Executed result (e.g., processed text, summary, or other output) from the final node, A reusable pattern that can be adapted to different models, hardware, or task types
```
@@ -1,34 +0,0 @@
{
"name": "graph-based-node-orchestration",
"version": "1.0.0",
"goal": "Build a typed node graph that processes data through a sequence of operations and produces a final result",
"inputs": [
"NIM_MODEL constant (e.g., 'nim:meta/llama-3.1-8b-instruct') for the LLM model",
"blacknode package with Graph, Node, and cook functionality",
"Python script defining node types with inputs/outputs and connecting them via edges"
],
"steps": [
"Import required modules (blacknode as bn, NIM_MODEL) and ensure API keys are available via require_nim_api_key()",
"Create a bn.Graph() instance to hold all nodes and their connections",
"Define individual nodes with specific input/output parameters (e.g., Text node with 'value' input, LLMAgent node with model parameter, Output node with 'value' output)",
"Connect nodes together using edge definitions (from_port -> to_port) to establish data flow",
"Execute the graph using g.cook() to run the pipeline and process data through the node chain",
"Extract the final result from the output node to complete the workflow"
],
"outputs": [
"A fully constructed graph with typed nodes and defined connections",
"Executed result (e.g., processed text, summary, or other output) from the final node",
"A reusable pattern that can be adapted to different models, hardware, or task types"
],
"failure_modes": [
"Missing or invalid API key (NIM_API_KEY, OPENAI_API_KEY) causing require_nim_api_key() to fail",
"Type mismatch in node connections (e.g., expecting 'value' but receiving 'text') breaking the data flow",
"Model not available or unreachable (NIM_MODEL not found) causing the LLMAgent node to fail",
"Graph execution error due to incorrect edge configuration or circular dependencies",
"Resource exhaustion (e.g., GPU memory) when processing large inputs in the pipeline"
],
"confidence": 0.95,
"explanation": "This workflow demonstrates a declarative graph-based orchestration pattern where nodes are connected via explicit ports and data flows through the graph. The pattern is highly reusable across different domains (robotics, research, data processing) because it separates graph structure from execution logic. The same graph construction and cook pattern can be adapted to different models (NIM, Anthropic, OpenAI), hardware targets (CPU, GPU, Jetson), and task types (LLM reasoning, file I/O, sensor processing).",
"source_repo": "https://github.com/temiroff/Blacknode.git",
"score": 1.0
}