@n8n/ai-workflow-builder 0.32.0 → 0.33.0-exp.0
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/dist/agents/responder.agent.d.ts +21 -0
- package/dist/agents/responder.agent.js +102 -0
- package/dist/agents/responder.agent.js.map +1 -0
- package/dist/agents/supervisor.agent.d.ts +31 -0
- package/dist/agents/supervisor.agent.js +104 -0
- package/dist/agents/supervisor.agent.js.map +1 -0
- package/dist/ai-workflow-builder-agent.service.d.ts +2 -1
- package/dist/ai-workflow-builder-agent.service.js +13 -4
- package/dist/ai-workflow-builder-agent.service.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/chains/prompts/examples/basic/switch-node-examples.d.ts +1 -0
- package/dist/chains/prompts/examples/basic/switch-node-examples.js +128 -0
- package/dist/chains/prompts/examples/basic/switch-node-examples.js.map +1 -0
- package/dist/chains/prompts/node-types/switch-node.d.ts +1 -0
- package/dist/chains/prompts/node-types/switch-node.js +72 -0
- package/dist/chains/prompts/node-types/switch-node.js.map +1 -0
- package/dist/chains/prompts/prompt-builder.d.ts +1 -0
- package/dist/chains/prompts/prompt-builder.js +12 -0
- package/dist/chains/prompts/prompt-builder.js.map +1 -1
- package/dist/chains/prompts/prompt-config.js +1 -0
- package/dist/chains/prompts/prompt-config.js.map +1 -1
- package/dist/constants.d.ts +6 -0
- package/dist/constants.js +7 -1
- package/dist/constants.js.map +1 -1
- package/dist/llm-config.d.ts +1 -0
- package/dist/llm-config.js +20 -1
- package/dist/llm-config.js.map +1 -1
- package/dist/multi-agent-workflow-subgraphs.d.ts +122 -0
- package/dist/multi-agent-workflow-subgraphs.js +153 -0
- package/dist/multi-agent-workflow-subgraphs.js.map +1 -0
- package/dist/parent-graph-state.d.ts +27 -0
- package/dist/parent-graph-state.js +47 -0
- package/dist/parent-graph-state.js.map +1 -0
- package/dist/subgraphs/builder.subgraph.d.ts +122 -0
- package/dist/subgraphs/builder.subgraph.js +384 -0
- package/dist/subgraphs/builder.subgraph.js.map +1 -0
- package/dist/subgraphs/configurator.subgraph.d.ts +132 -0
- package/dist/subgraphs/configurator.subgraph.js +272 -0
- package/dist/subgraphs/configurator.subgraph.js.map +1 -0
- package/dist/subgraphs/discovery.subgraph.d.ts +158 -0
- package/dist/subgraphs/discovery.subgraph.js +487 -0
- package/dist/subgraphs/discovery.subgraph.js.map +1 -0
- package/dist/subgraphs/subgraph-interface.d.ts +23 -0
- package/dist/subgraphs/subgraph-interface.js +7 -0
- package/dist/subgraphs/subgraph-interface.js.map +1 -0
- package/dist/tools/best-practices/content-generation.js +38 -2
- package/dist/tools/best-practices/content-generation.js.map +1 -1
- package/dist/tools/builder-tools.d.ts +5 -2
- package/dist/tools/builder-tools.js +15 -25
- package/dist/tools/builder-tools.js.map +1 -1
- package/dist/tools/get-best-practices.tool.d.ts +1 -1
- package/dist/tools/get-workflow-examples.tool.d.ts +34 -0
- package/dist/tools/get-workflow-examples.tool.js +172 -0
- package/dist/tools/get-workflow-examples.tool.js.map +1 -0
- package/dist/tools/node-details.tool.d.ts +4 -4
- package/dist/tools/node-details.tool.js +30 -2
- package/dist/tools/node-details.tool.js.map +1 -1
- package/dist/tools/node-search.tool.d.ts +1 -1
- package/dist/tools/prompts/main-agent.prompt.d.ts +4 -0
- package/dist/tools/prompts/main-agent.prompt.js +113 -57
- package/dist/tools/prompts/main-agent.prompt.js.map +1 -1
- package/dist/tools/utils/markdown-workflow.utils.d.ts +14 -0
- package/dist/tools/utils/markdown-workflow.utils.js +174 -0
- package/dist/tools/utils/markdown-workflow.utils.js.map +1 -0
- package/dist/tools/utils/test/workflows/ai-assistant.workflow.d.ts +2 -0
- package/dist/tools/utils/test/workflows/ai-assistant.workflow.js +541 -0
- package/dist/tools/utils/test/workflows/ai-assistant.workflow.js.map +1 -0
- package/dist/tools/validate-configuration.tool.d.ts +4 -0
- package/dist/tools/validate-configuration.tool.js +70 -0
- package/dist/tools/validate-configuration.tool.js.map +1 -0
- package/dist/tools/validate-structure.tool.d.ts +4 -0
- package/dist/tools/validate-structure.tool.js +66 -0
- package/dist/tools/validate-structure.tool.js.map +1 -0
- package/dist/tools/web/templates.d.ts +7 -0
- package/dist/tools/web/templates.js +71 -0
- package/dist/tools/web/templates.js.map +1 -0
- package/dist/types/config.d.ts +1 -0
- package/dist/types/coordination.d.ts +42 -0
- package/dist/types/coordination.js +23 -0
- package/dist/types/coordination.js.map +1 -0
- package/dist/types/discovery-types.d.ts +14 -0
- package/dist/types/discovery-types.js +3 -0
- package/dist/types/discovery-types.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +15 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/langchain.d.ts +1 -0
- package/dist/types/langchain.js +8 -0
- package/dist/types/langchain.js.map +1 -1
- package/dist/types/tools.d.ts +20 -0
- package/dist/types/web/templates.d.ts +44 -0
- package/dist/types/web/templates.js +37 -0
- package/dist/types/web/templates.js.map +1 -0
- package/dist/utils/cache-control/helpers.d.ts +1 -0
- package/dist/utils/cache-control/helpers.js +36 -0
- package/dist/utils/cache-control/helpers.js.map +1 -1
- package/dist/utils/cache-control/index.d.ts +1 -1
- package/dist/utils/cache-control/index.js +2 -1
- package/dist/utils/cache-control/index.js.map +1 -1
- package/dist/utils/context-builders.d.ts +10 -0
- package/dist/utils/context-builders.js +71 -0
- package/dist/utils/context-builders.js.map +1 -0
- package/dist/utils/coordination-log.d.ts +15 -0
- package/dist/utils/coordination-log.js +75 -0
- package/dist/utils/coordination-log.js.map +1 -0
- package/dist/utils/operations-processor.d.ts +4 -2
- package/dist/utils/operations-processor.js.map +1 -1
- package/dist/utils/state-modifier.d.ts +32 -0
- package/dist/utils/state-modifier.js +112 -0
- package/dist/utils/state-modifier.js.map +1 -0
- package/dist/utils/state-reducers.d.ts +4 -0
- package/dist/utils/state-reducers.js +25 -0
- package/dist/utils/state-reducers.js.map +1 -0
- package/dist/utils/stream-processor.d.ts +6 -2
- package/dist/utils/stream-processor.js +138 -83
- package/dist/utils/stream-processor.js.map +1 -1
- package/dist/utils/subgraph-helpers.d.ts +16 -0
- package/dist/utils/subgraph-helpers.js +118 -0
- package/dist/utils/subgraph-helpers.js.map +1 -0
- package/dist/utils/token-usage.js +4 -1
- package/dist/utils/token-usage.js.map +1 -1
- package/dist/utils/tool-executor.js +55 -38
- package/dist/utils/tool-executor.js.map +1 -1
- package/dist/utils/workflow-validation.js +1 -0
- package/dist/utils/workflow-validation.js.map +1 -1
- package/dist/validation/checks/connections.js +6 -14
- package/dist/validation/checks/connections.js.map +1 -1
- package/dist/validation/checks/index.d.ts +2 -1
- package/dist/validation/checks/index.js +3 -1
- package/dist/validation/checks/index.js.map +1 -1
- package/dist/validation/checks/nodes.d.ts +4 -0
- package/dist/validation/checks/nodes.js +36 -0
- package/dist/validation/checks/nodes.js.map +1 -0
- package/dist/validation/checks/tools.js +0 -10
- package/dist/validation/checks/tools.js.map +1 -1
- package/dist/validation/checks/trigger.js +0 -6
- package/dist/validation/checks/trigger.js.map +1 -1
- package/dist/validation/programmatic.js +2 -0
- package/dist/validation/programmatic.js.map +1 -1
- package/dist/validation/types.d.ts +5 -1
- package/dist/validation/types.js +8 -0
- package/dist/validation/types.js.map +1 -1
- package/dist/workflow-builder-agent.d.ts +9 -0
- package/dist/workflow-builder-agent.js +44 -10
- package/dist/workflow-builder-agent.js.map +1 -1
- package/dist/workflow-state.d.ts +4 -2
- package/dist/workflow-state.js +9 -0
- package/dist/workflow-state.js.map +1 -1
- package/package.json +9 -8
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
|
2
|
+
import type { AIMessage, BaseMessage } from '@langchain/core/messages';
|
|
3
|
+
import type { CoordinationLogEntry } from '../types/coordination';
|
|
4
|
+
import type { DiscoveryContext } from '../types/discovery-types';
|
|
5
|
+
import type { SimpleWorkflow } from '../types/workflow';
|
|
6
|
+
export interface ResponderAgentConfig {
|
|
7
|
+
llm: BaseChatModel;
|
|
8
|
+
}
|
|
9
|
+
export interface ResponderContext {
|
|
10
|
+
messages: BaseMessage[];
|
|
11
|
+
coordinationLog: CoordinationLogEntry[];
|
|
12
|
+
discoveryContext?: DiscoveryContext | null;
|
|
13
|
+
workflowJSON: SimpleWorkflow;
|
|
14
|
+
previousSummary?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare class ResponderAgent {
|
|
17
|
+
private llm;
|
|
18
|
+
constructor(config: ResponderAgentConfig);
|
|
19
|
+
private buildContextMessage;
|
|
20
|
+
invoke(context: ResponderContext): Promise<AIMessage>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResponderAgent = void 0;
|
|
4
|
+
const messages_1 = require("@langchain/core/messages");
|
|
5
|
+
const prompts_1 = require("@langchain/core/prompts");
|
|
6
|
+
const coordination_log_1 = require("../utils/coordination-log");
|
|
7
|
+
const RESPONDER_PROMPT = `You are a helpful AI assistant for n8n workflow automation.
|
|
8
|
+
|
|
9
|
+
You have access to context about what has been built, including:
|
|
10
|
+
- Discovery results (nodes found)
|
|
11
|
+
- Builder output (workflow structure)
|
|
12
|
+
- Configuration summary (setup instructions)
|
|
13
|
+
|
|
14
|
+
FOR WORKFLOW COMPLETION RESPONSES:
|
|
15
|
+
When you receive [Internal Context], synthesize a clean user-facing response:
|
|
16
|
+
1. Summarize what was built in a friendly way
|
|
17
|
+
2. Explain the workflow structure briefly
|
|
18
|
+
3. Include setup instructions if provided
|
|
19
|
+
4. Ask if user wants adjustments
|
|
20
|
+
|
|
21
|
+
Example response structure:
|
|
22
|
+
"I've created your [workflow type] workflow! Here's what it does:
|
|
23
|
+
[Brief explanation of the flow]
|
|
24
|
+
|
|
25
|
+
**Setup Required:**
|
|
26
|
+
[List any configuration steps from the context]
|
|
27
|
+
|
|
28
|
+
Let me know if you'd like to adjust anything."
|
|
29
|
+
|
|
30
|
+
FOR QUESTIONS/CONVERSATIONS:
|
|
31
|
+
- Be friendly and concise
|
|
32
|
+
- Explain n8n capabilities when asked
|
|
33
|
+
- Provide practical examples when helpful
|
|
34
|
+
|
|
35
|
+
RESPONSE STYLE:
|
|
36
|
+
- Keep responses focused and not overly long
|
|
37
|
+
- Use markdown formatting for readability
|
|
38
|
+
- Be conversational and helpful`;
|
|
39
|
+
const systemPrompt = prompts_1.ChatPromptTemplate.fromMessages([
|
|
40
|
+
[
|
|
41
|
+
'system',
|
|
42
|
+
[
|
|
43
|
+
{
|
|
44
|
+
type: 'text',
|
|
45
|
+
text: RESPONDER_PROMPT,
|
|
46
|
+
cache_control: { type: 'ephemeral' },
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
],
|
|
50
|
+
['placeholder', '{messages}'],
|
|
51
|
+
]);
|
|
52
|
+
class ResponderAgent {
|
|
53
|
+
llm;
|
|
54
|
+
constructor(config) {
|
|
55
|
+
this.llm = config.llm;
|
|
56
|
+
}
|
|
57
|
+
buildContextMessage(context) {
|
|
58
|
+
const contextParts = [];
|
|
59
|
+
if (context.previousSummary) {
|
|
60
|
+
contextParts.push(`**Previous Conversation Summary:**\n${context.previousSummary}`);
|
|
61
|
+
}
|
|
62
|
+
const stateManagementEntry = context.coordinationLog.find((e) => e.phase === 'state_management');
|
|
63
|
+
if (stateManagementEntry) {
|
|
64
|
+
contextParts.push(`**State Management:** ${stateManagementEntry.summary}`);
|
|
65
|
+
}
|
|
66
|
+
const errorEntry = (0, coordination_log_1.getErrorEntry)(context.coordinationLog);
|
|
67
|
+
if (errorEntry) {
|
|
68
|
+
contextParts.push(`**Error:** An error occurred in the ${errorEntry.phase} phase: ${errorEntry.summary}`);
|
|
69
|
+
contextParts.push('Please apologize to the user and explain that something went wrong while building their workflow.');
|
|
70
|
+
}
|
|
71
|
+
if (context.discoveryContext?.nodesFound.length) {
|
|
72
|
+
contextParts.push(`**Discovery:** Found ${context.discoveryContext.nodesFound.length} relevant nodes`);
|
|
73
|
+
}
|
|
74
|
+
const builderOutput = (0, coordination_log_1.getBuilderOutput)(context.coordinationLog);
|
|
75
|
+
if (builderOutput) {
|
|
76
|
+
contextParts.push(`**Builder:** ${builderOutput}`);
|
|
77
|
+
}
|
|
78
|
+
else if (context.workflowJSON.nodes.length) {
|
|
79
|
+
contextParts.push(`**Workflow:** ${context.workflowJSON.nodes.length} nodes created`);
|
|
80
|
+
}
|
|
81
|
+
const configuratorOutput = (0, coordination_log_1.getConfiguratorOutput)(context.coordinationLog);
|
|
82
|
+
if (configuratorOutput) {
|
|
83
|
+
contextParts.push(`**Configuration:**\n${configuratorOutput}`);
|
|
84
|
+
}
|
|
85
|
+
if (contextParts.length === 0) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
return new messages_1.HumanMessage({
|
|
89
|
+
content: `[Internal Context - Use this to craft your response]\n${contextParts.join('\n\n')}`,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
async invoke(context) {
|
|
93
|
+
const agent = systemPrompt.pipe(this.llm);
|
|
94
|
+
const contextMessage = this.buildContextMessage(context);
|
|
95
|
+
const messagesToSend = contextMessage
|
|
96
|
+
? [...context.messages, contextMessage]
|
|
97
|
+
: context.messages;
|
|
98
|
+
return (await agent.invoke({ messages: messagesToSend }));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.ResponderAgent = ResponderAgent;
|
|
102
|
+
//# sourceMappingURL=responder.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responder.agent.js","sourceRoot":"","sources":["../../src/agents/responder.agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
|
2
|
+
import type { BaseMessage } from '@langchain/core/messages';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import type { CoordinationLogEntry } from '../types/coordination';
|
|
5
|
+
import type { SimpleWorkflow } from '../types/workflow';
|
|
6
|
+
export declare const supervisorRoutingSchema: z.ZodObject<{
|
|
7
|
+
reasoning: z.ZodString;
|
|
8
|
+
next: z.ZodEnum<["responder", "discovery", "builder", "configurator"]>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
reasoning: string;
|
|
11
|
+
next: "responder" | "discovery" | "builder" | "configurator";
|
|
12
|
+
}, {
|
|
13
|
+
reasoning: string;
|
|
14
|
+
next: "responder" | "discovery" | "builder" | "configurator";
|
|
15
|
+
}>;
|
|
16
|
+
export type SupervisorRouting = z.infer<typeof supervisorRoutingSchema>;
|
|
17
|
+
export interface SupervisorAgentConfig {
|
|
18
|
+
llm: BaseChatModel;
|
|
19
|
+
}
|
|
20
|
+
export interface SupervisorContext {
|
|
21
|
+
messages: BaseMessage[];
|
|
22
|
+
workflowJSON: SimpleWorkflow;
|
|
23
|
+
coordinationLog: CoordinationLogEntry[];
|
|
24
|
+
previousSummary?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare class SupervisorAgent {
|
|
27
|
+
private llm;
|
|
28
|
+
constructor(config: SupervisorAgentConfig);
|
|
29
|
+
private buildContextMessage;
|
|
30
|
+
invoke(context: SupervisorContext): Promise<SupervisorRouting>;
|
|
31
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SupervisorAgent = exports.supervisorRoutingSchema = void 0;
|
|
4
|
+
const messages_1 = require("@langchain/core/messages");
|
|
5
|
+
const prompts_1 = require("@langchain/core/prompts");
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const context_builders_1 = require("../utils/context-builders");
|
|
8
|
+
const coordination_log_1 = require("../utils/coordination-log");
|
|
9
|
+
const SUPERVISOR_PROMPT = `You are a Supervisor that routes user requests to specialist agents.
|
|
10
|
+
|
|
11
|
+
AVAILABLE AGENTS:
|
|
12
|
+
- discovery: Find n8n nodes for building/modifying workflows
|
|
13
|
+
- builder: Create nodes and connections (requires discovery first for new node types)
|
|
14
|
+
- configurator: Set parameters on EXISTING nodes (no structural changes)
|
|
15
|
+
- responder: Answer questions, confirm completion (TERMINAL)
|
|
16
|
+
|
|
17
|
+
ROUTING DECISION TREE:
|
|
18
|
+
|
|
19
|
+
1. Is user asking a question or chatting? → responder
|
|
20
|
+
Examples: "what does this do?", "explain the workflow", "thanks"
|
|
21
|
+
|
|
22
|
+
2. Does the request involve NEW or DIFFERENT node types? → discovery
|
|
23
|
+
Examples:
|
|
24
|
+
- "Build a workflow that..." (new workflow)
|
|
25
|
+
- "Use [ServiceB] instead of [ServiceA]" (replacing node type)
|
|
26
|
+
- "Add [some integration]" (new integration)
|
|
27
|
+
- "Switch from [ServiceA] to [ServiceB]" (swapping services)
|
|
28
|
+
|
|
29
|
+
3. Is the request about connecting/disconnecting existing nodes? → builder
|
|
30
|
+
Examples: "Connect node A to node B", "Remove the connection to X"
|
|
31
|
+
|
|
32
|
+
4. Is the request about changing VALUES in existing nodes? → configurator
|
|
33
|
+
Examples:
|
|
34
|
+
- "Change the URL to https://..."
|
|
35
|
+
- "Set the timeout to 30 seconds"
|
|
36
|
+
- "Update the email subject to..."
|
|
37
|
+
|
|
38
|
+
KEY DISTINCTION:
|
|
39
|
+
- "Use [ServiceB] instead of [ServiceA]" = REPLACEMENT = discovery (new node type needed)
|
|
40
|
+
- "Change the [ServiceA] API key" = CONFIGURATION = configurator (same node, different value)
|
|
41
|
+
|
|
42
|
+
OUTPUT:
|
|
43
|
+
- reasoning: One sentence explaining your routing decision
|
|
44
|
+
- next: Agent name`;
|
|
45
|
+
const systemPrompt = prompts_1.ChatPromptTemplate.fromMessages([
|
|
46
|
+
[
|
|
47
|
+
'system',
|
|
48
|
+
[
|
|
49
|
+
{
|
|
50
|
+
type: 'text',
|
|
51
|
+
text: SUPERVISOR_PROMPT +
|
|
52
|
+
'\n\nGiven the conversation above, which agent should act next? Provide your reasoning and selection.',
|
|
53
|
+
cache_control: { type: 'ephemeral' },
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
],
|
|
57
|
+
['placeholder', '{messages}'],
|
|
58
|
+
]);
|
|
59
|
+
exports.supervisorRoutingSchema = zod_1.z.object({
|
|
60
|
+
reasoning: zod_1.z.string().describe('One sentence explaining why this agent should act next'),
|
|
61
|
+
next: zod_1.z
|
|
62
|
+
.enum(['responder', 'discovery', 'builder', 'configurator'])
|
|
63
|
+
.describe('The next agent to call'),
|
|
64
|
+
});
|
|
65
|
+
class SupervisorAgent {
|
|
66
|
+
llm;
|
|
67
|
+
constructor(config) {
|
|
68
|
+
this.llm = config.llm;
|
|
69
|
+
}
|
|
70
|
+
buildContextMessage(context) {
|
|
71
|
+
const contextParts = [];
|
|
72
|
+
if (context.previousSummary) {
|
|
73
|
+
contextParts.push('<previous_conversation_summary>');
|
|
74
|
+
contextParts.push(context.previousSummary);
|
|
75
|
+
contextParts.push('</previous_conversation_summary>');
|
|
76
|
+
}
|
|
77
|
+
if (context.workflowJSON.nodes.length > 0) {
|
|
78
|
+
contextParts.push('<workflow_summary>');
|
|
79
|
+
contextParts.push((0, context_builders_1.buildWorkflowSummary)(context.workflowJSON));
|
|
80
|
+
contextParts.push('</workflow_summary>');
|
|
81
|
+
}
|
|
82
|
+
if (context.coordinationLog.length > 0) {
|
|
83
|
+
contextParts.push('<completed_phases>');
|
|
84
|
+
contextParts.push((0, coordination_log_1.summarizeCoordinationLog)(context.coordinationLog));
|
|
85
|
+
contextParts.push('</completed_phases>');
|
|
86
|
+
}
|
|
87
|
+
if (contextParts.length === 0) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
return new messages_1.HumanMessage({ content: contextParts.join('\n\n') });
|
|
91
|
+
}
|
|
92
|
+
async invoke(context) {
|
|
93
|
+
const agent = systemPrompt.pipe(this.llm.withStructuredOutput(exports.supervisorRoutingSchema, {
|
|
94
|
+
name: 'routing_decision',
|
|
95
|
+
}));
|
|
96
|
+
const contextMessage = this.buildContextMessage(context);
|
|
97
|
+
const messagesToSend = contextMessage
|
|
98
|
+
? [...context.messages, contextMessage]
|
|
99
|
+
: context.messages;
|
|
100
|
+
return await agent.invoke({ messages: messagesToSend });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.SupervisorAgent = SupervisorAgent;
|
|
104
|
+
//# sourceMappingURL=supervisor.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor.agent.js","sourceRoot":"","sources":["../../src/agents/supervisor.agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,11 +9,12 @@ export declare class AiWorkflowBuilderService {
|
|
|
9
9
|
private readonly logger?;
|
|
10
10
|
private readonly instanceId?;
|
|
11
11
|
private readonly instanceUrl?;
|
|
12
|
+
private readonly n8nVersion?;
|
|
12
13
|
private readonly onCreditsUpdated?;
|
|
13
14
|
private readonly onTelemetryEvent?;
|
|
14
15
|
private readonly parsedNodeTypes;
|
|
15
16
|
private sessionManager;
|
|
16
|
-
constructor(parsedNodeTypes: INodeTypeDescription[], client?: AiAssistantClient | undefined, logger?: Logger | undefined, instanceId?: string | undefined, instanceUrl?: string | undefined, onCreditsUpdated?: OnCreditsUpdated | undefined, onTelemetryEvent?: OnTelemetryEvent | undefined);
|
|
17
|
+
constructor(parsedNodeTypes: INodeTypeDescription[], client?: AiAssistantClient | undefined, logger?: Logger | undefined, instanceId?: string | undefined, instanceUrl?: string | undefined, n8nVersion?: string | undefined, onCreditsUpdated?: OnCreditsUpdated | undefined, onTelemetryEvent?: OnTelemetryEvent | undefined);
|
|
17
18
|
private static getAnthropicClaudeModel;
|
|
18
19
|
private getApiProxyAuthHeaders;
|
|
19
20
|
private setupModels;
|
|
@@ -30,15 +30,17 @@ let AiWorkflowBuilderService = AiWorkflowBuilderService_1 = class AiWorkflowBuil
|
|
|
30
30
|
logger;
|
|
31
31
|
instanceId;
|
|
32
32
|
instanceUrl;
|
|
33
|
+
n8nVersion;
|
|
33
34
|
onCreditsUpdated;
|
|
34
35
|
onTelemetryEvent;
|
|
35
36
|
parsedNodeTypes;
|
|
36
37
|
sessionManager;
|
|
37
|
-
constructor(parsedNodeTypes, client, logger, instanceId, instanceUrl, onCreditsUpdated, onTelemetryEvent) {
|
|
38
|
+
constructor(parsedNodeTypes, client, logger, instanceId, instanceUrl, n8nVersion, onCreditsUpdated, onTelemetryEvent) {
|
|
38
39
|
this.client = client;
|
|
39
40
|
this.logger = logger;
|
|
40
41
|
this.instanceId = instanceId;
|
|
41
42
|
this.instanceUrl = instanceUrl;
|
|
43
|
+
this.n8nVersion = n8nVersion;
|
|
42
44
|
this.onCreditsUpdated = onCreditsUpdated;
|
|
43
45
|
this.onTelemetryEvent = onTelemetryEvent;
|
|
44
46
|
this.parsedNodeTypes = this.filterNodeTypes(parsedNodeTypes);
|
|
@@ -122,7 +124,7 @@ let AiWorkflowBuilderService = AiWorkflowBuilderService_1 = class AiWorkflowBuil
|
|
|
122
124
|
};
|
|
123
125
|
});
|
|
124
126
|
}
|
|
125
|
-
async getAgent(user) {
|
|
127
|
+
async getAgent(user, featureFlags) {
|
|
126
128
|
const { anthropicClaude, tracingClient, authHeaders } = await this.setupModels(user);
|
|
127
129
|
const agent = new workflow_builder_agent_1.WorkflowBuilderAgent({
|
|
128
130
|
parsedNodeTypes: this.parsedNodeTypes,
|
|
@@ -137,6 +139,10 @@ let AiWorkflowBuilderService = AiWorkflowBuilderService_1 = class AiWorkflowBuil
|
|
|
137
139
|
onGenerationSuccess: async () => {
|
|
138
140
|
await this.onGenerationSuccess(user, authHeaders);
|
|
139
141
|
},
|
|
142
|
+
runMetadata: {
|
|
143
|
+
n8nVersion: this.n8nVersion,
|
|
144
|
+
featureFlags: featureFlags ?? {},
|
|
145
|
+
},
|
|
140
146
|
});
|
|
141
147
|
return agent;
|
|
142
148
|
}
|
|
@@ -158,7 +164,7 @@ let AiWorkflowBuilderService = AiWorkflowBuilderService_1 = class AiWorkflowBuil
|
|
|
158
164
|
}
|
|
159
165
|
}
|
|
160
166
|
async *chat(payload, user, abortSignal) {
|
|
161
|
-
const agent = await this.getAgent(user);
|
|
167
|
+
const agent = await this.getAgent(user, payload.featureFlags);
|
|
162
168
|
const userId = user?.id?.toString();
|
|
163
169
|
const workflowId = payload.workflowContext?.currentWorkflow?.id;
|
|
164
170
|
for await (const output of agent.chat(payload, userId, abortSignal)) {
|
|
@@ -197,6 +203,9 @@ let AiWorkflowBuilderService = AiWorkflowBuilderService_1 = class AiWorkflowBuil
|
|
|
197
203
|
tools_called: toolsCalled,
|
|
198
204
|
techniques_categories: state.values.techniqueCategories,
|
|
199
205
|
validations: state.values.validationHistory,
|
|
206
|
+
...(state.values.templateIds.length > 0 && {
|
|
207
|
+
templates_selected: state.values.templateIds,
|
|
208
|
+
}),
|
|
200
209
|
};
|
|
201
210
|
this.onTelemetryEvent('Builder replied to user message', properties);
|
|
202
211
|
}
|
|
@@ -218,6 +227,6 @@ exports.AiWorkflowBuilderService = AiWorkflowBuilderService;
|
|
|
218
227
|
exports.AiWorkflowBuilderService = AiWorkflowBuilderService = AiWorkflowBuilderService_1 = __decorate([
|
|
219
228
|
(0, di_1.Service)(),
|
|
220
229
|
__metadata("design:paramtypes", [Array, ai_assistant_sdk_1.AiAssistantClient,
|
|
221
|
-
backend_common_1.Logger, String, String, Function, Function])
|
|
230
|
+
backend_common_1.Logger, String, String, String, Function, Function])
|
|
222
231
|
], AiWorkflowBuilderService);
|
|
223
232
|
//# sourceMappingURL=ai-workflow-builder-agent.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-workflow-builder-agent.service.js","sourceRoot":"","sources":["../src/ai-workflow-builder-agent.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,uDAAkE;AAElE,+EAA2E;AAC3E,wDAA6C;AAC7C,gCAAkC;AAClC,+DAA6E;AAC7E,oDAA4B;AAC5B,yCAAoD;AAGpD,qCAA2C;AAC3C,6CAAuD;AACvD,uEAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"ai-workflow-builder-agent.service.js","sourceRoot":"","sources":["../src/ai-workflow-builder-agent.service.ts"],"names":[],"mappings":"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"}
|