node-red-contrib-ai-agent 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ Your feedback and contributions are highly appreciated!
|
|
|
19
19
|
## Features
|
|
20
20
|
|
|
21
21
|
- **AI Agent Node**: Process messages with AI, maintaining conversation context
|
|
22
|
-
- **AI Agent
|
|
22
|
+
- **AI Orchestrator Agent Node**: Participates in orchestrated flows via Chain Discovery
|
|
23
23
|
- **Memory Nodes**:
|
|
24
24
|
- **In-Memory**: Store conversation context in memory (volatile)
|
|
25
25
|
- **File-based**: Persist conversation context to disk
|
|
@@ -62,7 +62,7 @@ Processes messages using the configured AI model and maintains conversation cont
|
|
|
62
62
|
- **System Prompt**: Initial instructions for the AI
|
|
63
63
|
- **Response Type**: Format of the response (text or JSON object)
|
|
64
64
|
|
|
65
|
-
### AI Agent
|
|
65
|
+
### AI Orchestrator Agent
|
|
66
66
|
A specialized version of the AI Agent designed for multi-agent workflows. It "tags" messages in a pipeline so the **AI Orchestrator** can discover it.
|
|
67
67
|
|
|
68
68
|
**Properties:**
|
|
@@ -200,7 +200,7 @@ Each agent will maintain its own conversation context based on its memory config
|
|
|
200
200
|
The AI Orchestrator can manage complex, multi-step tasks by utilizing specialized agents in a pipeline:
|
|
201
201
|
|
|
202
202
|
1. Add an **AI Orchestrator** node.
|
|
203
|
-
2. Add one or more **AI Agent
|
|
203
|
+
2. Add one or more **AI Orchestrator Agent** nodes (e.g., "Coder", "Researcher").
|
|
204
204
|
3. Connect them in a line: `[Inject Goal] --> [Coder] --> [Researcher] --> [Orchestrator] --> [Debug]`.
|
|
205
205
|
4. The Orchestrator will automatically discover the "Coder" and "Researcher" via the message pipeline and call them as needed to achieve the goal.
|
|
206
206
|
|
|
@@ -87,7 +87,7 @@ module.exports = function (RED) {
|
|
|
87
87
|
|
|
88
88
|
const agentNode = RED.nodes.getNode(agentInfo.id);
|
|
89
89
|
if (!agentNode || typeof agentNode.executeTask !== 'function') {
|
|
90
|
-
throw new Error(`Agent node ${agentInfo.name} [${agentInfo.id}] is not an AI Agent
|
|
90
|
+
throw new Error(`Agent node ${agentInfo.name} [${agentInfo.id}] is not an AI Orchestrator Agent or is missing executeTask API.`);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
node.status({ fill: 'blue', shape: 'ring', text: `agent: ${agentInfo.name}` });
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
outputs: 1,
|
|
18
18
|
icon: 'agent/ai-agent-icon.svg',
|
|
19
19
|
label: function () {
|
|
20
|
-
return this.name || 'AI Agent
|
|
20
|
+
return this.name || 'AI Orchestrator Agent';
|
|
21
21
|
},
|
|
22
|
-
paletteLabel: 'Agent
|
|
22
|
+
paletteLabel: 'Orchestrator Agent',
|
|
23
23
|
oneditprepare: function () {
|
|
24
24
|
}
|
|
25
25
|
});
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
<script type="text/x-red" data-template-name="ai-orchestrator-agent">
|
|
29
29
|
<div class="form-row">
|
|
30
30
|
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
|
|
31
|
-
<input type="text" id="node-input-name" placeholder="AI Agent
|
|
31
|
+
<input type="text" id="node-input-name" placeholder="AI Orchestrator Agent">
|
|
32
32
|
</div>
|
|
33
33
|
|
|
34
34
|
<div class="form-row">
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
</script>
|
|
52
52
|
|
|
53
53
|
<script type="text/x-red" data-help-name="ai-orchestrator-agent">
|
|
54
|
-
<h3>AI Agent
|
|
54
|
+
<h3>AI Orchestrator Agent Node</h3>
|
|
55
55
|
<p>A specialized version of the AI Agent designed for multi-agent workflows.</p>
|
|
56
56
|
|
|
57
57
|
<h4>Features</h4>
|
|
@@ -65,7 +65,7 @@ function updateContext(msg, userMessage, assistantResponse) {
|
|
|
65
65
|
function handleError(node, msg, error) {
|
|
66
66
|
const errorMsg = error.response?.data?.error?.message || error.message || 'Unknown error';
|
|
67
67
|
node.status({ fill: 'red', shape: 'ring', text: 'Error' });
|
|
68
|
-
node.error('AI Agent
|
|
68
|
+
node.error('AI Orchestrator Agent Error: ' + errorMsg, msg);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
/**
|
|
@@ -188,7 +188,7 @@ async function processToolCalls(node, responseMessage, tools, messages, aiConfig
|
|
|
188
188
|
module.exports = function (RED) {
|
|
189
189
|
function AIOrchestratorAgent(config) {
|
|
190
190
|
RED.nodes.createNode(this, config);
|
|
191
|
-
this.name = config.name || 'AI Agent
|
|
191
|
+
this.name = config.name || 'AI Orchestrator Agent';
|
|
192
192
|
this.systemPrompt = config.systemPrompt || 'You are a helpful AI assistant.';
|
|
193
193
|
this.capabilities = (config.capabilities || '').split(',').map(s => s.trim()).filter(Boolean);
|
|
194
194
|
|