@n8n/ai-workflow-builder 0.16.1 → 0.17.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/ai-workflow-builder-agent.service.js +9 -2
- package/dist/ai-workflow-builder-agent.service.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/chains/conversation-compact.d.ts +2 -3
- package/dist/chains/conversation-compact.js +26 -15
- package/dist/chains/conversation-compact.js.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -0
- package/dist/tools/engines/node-search-engine.js +1 -0
- package/dist/tools/engines/node-search-engine.js.map +1 -1
- package/dist/tools/prompts/main-agent.prompt.js +27 -0
- package/dist/tools/prompts/main-agent.prompt.js.map +1 -1
- package/dist/utils/token-usage.d.ts +5 -0
- package/dist/utils/token-usage.js +15 -0
- package/dist/utils/token-usage.js.map +1 -0
- package/dist/workflow-builder-agent.d.ts +2 -0
- package/dist/workflow-builder-agent.js +53 -7
- package/dist/workflow-builder-agent.js.map +1 -1
- package/dist/workflow-state.d.ts +2 -0
- package/dist/workflow-state.js +21 -0
- package/dist/workflow-state.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
|
2
2
|
import type { BaseMessage } from '@langchain/core/messages';
|
|
3
|
-
export declare function conversationCompactChain(llm: BaseChatModel, messages: BaseMessage[]): Promise<{
|
|
3
|
+
export declare function conversationCompactChain(llm: BaseChatModel, messages: BaseMessage[], previousSummary?: string): Promise<{
|
|
4
4
|
success: boolean;
|
|
5
5
|
summary: Record<string, any>;
|
|
6
|
-
|
|
7
|
-
messagesRemoved: number;
|
|
6
|
+
summaryPlain: string;
|
|
8
7
|
}>;
|
|
@@ -5,8 +5,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.conversationCompactChain = conversationCompactChain;
|
|
7
7
|
const messages_1 = require("@langchain/core/messages");
|
|
8
|
+
const prompts_1 = require("@langchain/core/prompts");
|
|
8
9
|
const zod_1 = __importDefault(require("zod"));
|
|
9
|
-
|
|
10
|
+
const compactPromptTemplate = prompts_1.PromptTemplate.fromTemplate(`Please summarize the following conversation between a user and an AI assistant building an n8n workflow:
|
|
11
|
+
|
|
12
|
+
<previous_summary>
|
|
13
|
+
{previousSummary}
|
|
14
|
+
</previous_summary>
|
|
15
|
+
|
|
16
|
+
<conversation>
|
|
17
|
+
{conversationText}
|
|
18
|
+
</conversation>
|
|
19
|
+
|
|
20
|
+
Provide a structured summary that captures the key points, decisions made, current state of the workflow, and suggested next steps.`);
|
|
21
|
+
async function conversationCompactChain(llm, messages, previousSummary = '') {
|
|
10
22
|
const CompactedSession = zod_1.default.object({
|
|
11
23
|
summary: zod_1.default.string().describe('A concise summary of the conversation so far'),
|
|
12
24
|
key_decisions: zod_1.default.array(zod_1.default.string()).describe('List of key decisions and actions taken'),
|
|
@@ -20,20 +32,23 @@ async function conversationCompactChain(llm, messages) {
|
|
|
20
32
|
return `User: ${msg.content}`;
|
|
21
33
|
}
|
|
22
34
|
else if (msg instanceof messages_1.AIMessage) {
|
|
23
|
-
|
|
35
|
+
if (typeof msg.content === 'string') {
|
|
36
|
+
return `Assistant: ${msg.content}`;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return 'Assistant: Used tools';
|
|
40
|
+
}
|
|
24
41
|
}
|
|
25
42
|
return '';
|
|
26
43
|
})
|
|
27
44
|
.filter(Boolean)
|
|
28
45
|
.join('\n');
|
|
29
|
-
const compactPrompt =
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
Provide a structured summary that captures the key points, decisions made, current state of the workflow, and suggested next steps.`;
|
|
46
|
+
const compactPrompt = await compactPromptTemplate.invoke({
|
|
47
|
+
previousSummary,
|
|
48
|
+
conversationText,
|
|
49
|
+
});
|
|
34
50
|
const structuredOutput = await modelWithStructure.invoke(compactPrompt);
|
|
35
|
-
const
|
|
36
|
-
content: `## Previous Conversation Summary
|
|
51
|
+
const formattedSummary = `## Previous Conversation Summary
|
|
37
52
|
|
|
38
53
|
**Summary:** ${structuredOutput.summary}
|
|
39
54
|
|
|
@@ -42,15 +57,11 @@ ${structuredOutput.key_decisions.map((d) => `- ${d}`).join('\n')}
|
|
|
42
57
|
|
|
43
58
|
**Current State:** ${structuredOutput.current_state}
|
|
44
59
|
|
|
45
|
-
**Next Steps:** ${structuredOutput.next_steps}
|
|
46
|
-
});
|
|
47
|
-
const lastUserMessage = messages.slice(-1);
|
|
48
|
-
const newMessages = [lastUserMessage[0], compactedMessage];
|
|
60
|
+
**Next Steps:** ${structuredOutput.next_steps}`;
|
|
49
61
|
return {
|
|
50
62
|
success: true,
|
|
51
63
|
summary: structuredOutput,
|
|
52
|
-
|
|
53
|
-
messagesRemoved: messages.length - newMessages.length,
|
|
64
|
+
summaryPlain: formattedSummary,
|
|
54
65
|
};
|
|
55
66
|
}
|
|
56
67
|
//# sourceMappingURL=conversation-compact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-compact.js","sourceRoot":"","sources":["../../src/chains/conversation-compact.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"conversation-compact.js","sourceRoot":"","sources":["../../src/chains/conversation-compact.ts"],"names":[],"mappings":";;;;;AAoBA,4DAyDC;AA3ED,uDAAmE;AACnE,qDAAyD;AACzD,8CAAoB;AAEpB,MAAM,qBAAqB,GAAG,wBAAc,CAAC,YAAY,CACxD;;;;;;;;;;oIAUmI,CACnI,CAAC;AAEK,KAAK,UAAU,wBAAwB,CAC7C,GAAkB,EAClB,QAAuB,EACvB,kBAA0B,EAAE;IAG5B,MAAM,gBAAgB,GAAG,aAAC,CAAC,MAAM,CAAC;QACjC,OAAO,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QAC5E,aAAa,EAAE,aAAC,CAAC,KAAK,CAAC,aAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACtF,aAAa,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QAC/E,UAAU,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;KACjF,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,GAAG,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IAGtE,MAAM,gBAAgB,GAAG,QAAQ;SAC/B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACZ,IAAI,GAAG,YAAY,uBAAY,EAAE,CAAC;YAEjC,OAAO,SAAS,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;aAAM,IAAI,GAAG,YAAY,oBAAS,EAAE,CAAC;YACrC,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,cAAc,GAAG,CAAC,OAAO,EAAE,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACP,OAAO,uBAAuB,CAAC;YAChC,CAAC;QACF,CAAC;QAED,OAAO,EAAE,CAAC;IACX,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC;QACxD,eAAe;QACf,gBAAgB;KAChB,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAExE,MAAM,gBAAgB,GAAG;;eAEX,gBAAgB,CAAC,OAAO;;;EAGpC,gBAAgB,CAAC,aAA0B,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;qBAEjE,gBAAgB,CAAC,aAAa;;kBAEjC,gBAAgB,CAAC,UAAU,EAAE,CAAC;IAE/C,OAAO;QACN,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,gBAAgB;QACzB,YAAY,EAAE,gBAAgB;KAC9B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_AUTO_COMPACT_THRESHOLD_TOKENS = exports.MAX_AI_BUILDER_PROMPT_LENGTH = void 0;
|
|
4
|
+
exports.MAX_AI_BUILDER_PROMPT_LENGTH = 1000;
|
|
5
|
+
exports.DEFAULT_AUTO_COMPACT_THRESHOLD_TOKENS = 20_000;
|
|
6
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,4BAA4B,GAAG,IAAI,CAAC;AAEpC,QAAA,qCAAqC,GAAG,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-search-engine.js","sourceRoot":"","sources":["../../../src/tools/engines/node-search-engine.ts"],"names":[],"mappings":";;;AACA,+CAAmD;AAOtC,QAAA,aAAa,GAAG;IAC5B,aAAa,EAAE,EAAE;IACjB,qBAAqB,EAAE,CAAC;IACxB,oBAAoB,EAAE,CAAC;IACvB,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,EAAE;IACd,kBAAkB,EAAE,EAAE;IACtB,gBAAgB,EAAE,GAAG;IACrB,wBAAwB,EAAE,EAAE;CACnB,CAAC;AAMX,MAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"node-search-engine.js","sourceRoot":"","sources":["../../../src/tools/engines/node-search-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -149,6 +149,24 @@ Why: Vector Store needs three things: data (main input), document processing cap
|
|
|
149
149
|
</rag_workflow_pattern>
|
|
150
150
|
</node_connections_understanding>
|
|
151
151
|
|
|
152
|
+
<agent_node_distinction>
|
|
153
|
+
CRITICAL: Distinguish between two different agent node types:
|
|
154
|
+
|
|
155
|
+
1. **AI Agent** (n8n-nodes-langchain.agent)
|
|
156
|
+
- Main workflow node that orchestrates AI tasks
|
|
157
|
+
- Accepts inputs: trigger data, memory, tools, language models
|
|
158
|
+
- Use for: Primary AI logic, chatbots, autonomous workflows
|
|
159
|
+
- Example: "Add an AI agent to analyze customer emails"
|
|
160
|
+
|
|
161
|
+
2. **AI Agent Tool** (n8n-nodes-langchain.agentTool)
|
|
162
|
+
- Sub-node that acts as a tool for another AI Agent
|
|
163
|
+
- Provides agent-as-a-tool capability to parent agents
|
|
164
|
+
- Use for: Multi-agent systems where one agent calls another
|
|
165
|
+
- Example: "Add a research agent tool for the main agent to use"
|
|
166
|
+
|
|
167
|
+
Default assumption: When users ask for "an agent" or "AI agent", they mean the main AI Agent node unless they explicitly mention "tool", "sub-agent", or "agent for another agent".
|
|
168
|
+
</agent_node_distinction>
|
|
169
|
+
|
|
152
170
|
<node_defaults_warning>
|
|
153
171
|
⚠️ CRITICAL: NEVER RELY ON DEFAULT PARAMETER VALUES ⚠️
|
|
154
172
|
|
|
@@ -357,6 +375,10 @@ const currentExecutionNodesSchemas = `
|
|
|
357
375
|
<current_execution_nodes_schemas>
|
|
358
376
|
{executionSchema}
|
|
359
377
|
</current_execution_nodes_schemas>`;
|
|
378
|
+
const previousConversationSummary = `
|
|
379
|
+
<previous_summary>
|
|
380
|
+
{previousSummary}
|
|
381
|
+
</previous_summary>`;
|
|
360
382
|
exports.mainAgentPrompt = prompts_1.ChatPromptTemplate.fromMessages([
|
|
361
383
|
[
|
|
362
384
|
'system',
|
|
@@ -383,6 +405,11 @@ exports.mainAgentPrompt = prompts_1.ChatPromptTemplate.fromMessages([
|
|
|
383
405
|
text: responsePatterns,
|
|
384
406
|
cache_control: { type: 'ephemeral' },
|
|
385
407
|
},
|
|
408
|
+
{
|
|
409
|
+
type: 'text',
|
|
410
|
+
text: previousConversationSummary,
|
|
411
|
+
cache_control: { type: 'ephemeral' },
|
|
412
|
+
},
|
|
386
413
|
],
|
|
387
414
|
],
|
|
388
415
|
['placeholder', '{messages}'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main-agent.prompt.js","sourceRoot":"","sources":["../../../src/tools/prompts/main-agent.prompt.ts"],"names":[],"mappings":";;;AAAA,qDAA6D;AAE7D,MAAM,YAAY,GAAG
|
|
1
|
+
{"version":3,"file":"main-agent.prompt.js","sourceRoot":"","sources":["../../../src/tools/prompts/main-agent.prompt.ts"],"names":[],"mappings":";;;AAAA,qDAA6D;AAE7D,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAyUG,CAAC;AAEzB,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BxB,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;yBAGH,CAAC;AAE1B,MAAM,oBAAoB,GAAG;;;qCAGQ,CAAC;AAEtC,MAAM,4BAA4B,GAAG;;;mCAGF,CAAC;AAEpC,MAAM,2BAA2B,GAAG;;;oBAGhB,CAAC;AAER,QAAA,eAAe,GAAG,4BAAkB,CAAC,YAAY,CAAC;IAC9D;QACC,QAAQ;QACR;YACC;gBACC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,YAAY;gBAClB,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;aACpC;YACD;gBACC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,mBAAmB;aACzB;YACD;gBACC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,oBAAoB;aAC1B;YACD;gBACC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,4BAA4B;aAClC;YACD;gBACC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,gBAAgB;gBACtB,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;aACpC;YACD;gBACC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,2BAA2B;gBACjC,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;aACpC;SACD;KACD;IACD,CAAC,aAAa,EAAE,YAAY,CAAC;CAC7B,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractLastTokenUsage = extractLastTokenUsage;
|
|
4
|
+
const messages_1 = require("@langchain/core/messages");
|
|
5
|
+
function extractLastTokenUsage(messages) {
|
|
6
|
+
const lastAiAssistantMessage = messages.findLast((m) => m instanceof messages_1.AIMessage &&
|
|
7
|
+
m.response_metadata?.usage !== undefined &&
|
|
8
|
+
'input_tokens' in m.response_metadata.usage &&
|
|
9
|
+
'output_tokens' in m.response_metadata.usage);
|
|
10
|
+
if (!lastAiAssistantMessage) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
return lastAiAssistantMessage.response_metadata.usage;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=token-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-usage.js","sourceRoot":"","sources":["../../src/utils/token-usage.ts"],"names":[],"mappings":";;AAmBA,sDAcC;AAjCD,uDAAqD;AAmBrD,SAAgB,qBAAqB,CAAC,QAAmB;IACxD,MAAM,sBAAsB,GAAG,QAAQ,CAAC,QAAQ,CAC/C,CAAC,CAAC,EAAmC,EAAE,CACtC,CAAC,YAAY,oBAAS;QACtB,CAAC,CAAC,iBAAiB,EAAE,KAAK,KAAK,SAAS;QACxC,cAAc,IAAI,CAAC,CAAC,iBAAiB,CAAC,KAAK;QAC3C,eAAe,IAAI,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAC7C,CAAC;IAEF,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,sBAAsB,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACvD,CAAC"}
|
|
@@ -10,6 +10,7 @@ export interface WorkflowBuilderAgentConfig {
|
|
|
10
10
|
logger?: Logger;
|
|
11
11
|
checkpointer?: MemorySaver;
|
|
12
12
|
tracer?: LangChainTracer;
|
|
13
|
+
autoCompactThresholdTokens?: number;
|
|
13
14
|
}
|
|
14
15
|
export interface ChatPayload {
|
|
15
16
|
message: string;
|
|
@@ -26,6 +27,7 @@ export declare class WorkflowBuilderAgent {
|
|
|
26
27
|
private llmComplexTask;
|
|
27
28
|
private logger?;
|
|
28
29
|
private tracer?;
|
|
30
|
+
private autoCompactThresholdTokens;
|
|
29
31
|
constructor(config: WorkflowBuilderAgentConfig);
|
|
30
32
|
private createWorkflow;
|
|
31
33
|
getState(workflowId: string, userId?: string): Promise<import("@langchain/langgraph").StateSnapshot>;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.WorkflowBuilderAgent = void 0;
|
|
4
4
|
const messages_1 = require("@langchain/core/messages");
|
|
5
5
|
const langgraph_1 = require("@langchain/langgraph");
|
|
6
|
+
const constants_1 = require("./constants");
|
|
6
7
|
const conversation_compact_1 = require("./chains/conversation-compact");
|
|
7
8
|
const errors_1 = require("./errors");
|
|
8
9
|
const add_node_tool_1 = require("./tools/add-node.tool");
|
|
@@ -14,9 +15,17 @@ const remove_node_tool_1 = require("./tools/remove-node.tool");
|
|
|
14
15
|
const update_node_parameters_tool_1 = require("./tools/update-node-parameters.tool");
|
|
15
16
|
const operations_processor_1 = require("./utils/operations-processor");
|
|
16
17
|
const stream_processor_1 = require("./utils/stream-processor");
|
|
18
|
+
const token_usage_1 = require("./utils/token-usage");
|
|
17
19
|
const tool_executor_1 = require("./utils/tool-executor");
|
|
18
20
|
const workflow_state_1 = require("./workflow-state");
|
|
19
21
|
class WorkflowBuilderAgent {
|
|
22
|
+
checkpointer;
|
|
23
|
+
parsedNodeTypes;
|
|
24
|
+
llmSimpleTask;
|
|
25
|
+
llmComplexTask;
|
|
26
|
+
logger;
|
|
27
|
+
tracer;
|
|
28
|
+
autoCompactThresholdTokens;
|
|
20
29
|
constructor(config) {
|
|
21
30
|
this.parsedNodeTypes = config.parsedNodeTypes;
|
|
22
31
|
this.llmSimpleTask = config.llmSimpleTask;
|
|
@@ -24,6 +33,8 @@ class WorkflowBuilderAgent {
|
|
|
24
33
|
this.logger = config.logger;
|
|
25
34
|
this.checkpointer = config.checkpointer ?? new langgraph_1.MemorySaver();
|
|
26
35
|
this.tracer = config.tracer;
|
|
36
|
+
this.autoCompactThresholdTokens =
|
|
37
|
+
config.autoCompactThresholdTokens ?? constants_1.DEFAULT_AUTO_COMPACT_THRESHOLD_TOKENS;
|
|
27
38
|
}
|
|
28
39
|
createWorkflow() {
|
|
29
40
|
const tools = [
|
|
@@ -52,14 +63,32 @@ class WorkflowBuilderAgent {
|
|
|
52
63
|
const response = await this.llmSimpleTask.bindTools(tools).invoke(prompt);
|
|
53
64
|
return { messages: [response] };
|
|
54
65
|
};
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
if (
|
|
66
|
+
const shouldAutoCompact = ({ messages }) => {
|
|
67
|
+
const tokenUsage = (0, token_usage_1.extractLastTokenUsage)(messages);
|
|
68
|
+
if (!tokenUsage) {
|
|
69
|
+
this.logger?.debug('No token usage metadata found');
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
const tokensUsed = tokenUsage.input_tokens + tokenUsage.output_tokens;
|
|
73
|
+
this.logger?.debug('Token usage', {
|
|
74
|
+
inputTokens: tokenUsage.input_tokens,
|
|
75
|
+
outputTokens: tokenUsage.output_tokens,
|
|
76
|
+
totalTokens: tokensUsed,
|
|
77
|
+
});
|
|
78
|
+
return tokensUsed > this.autoCompactThresholdTokens;
|
|
79
|
+
};
|
|
80
|
+
const shouldModifyState = (state) => {
|
|
81
|
+
const { messages } = state;
|
|
82
|
+
const lastHumanMessage = messages.findLast((m) => m instanceof messages_1.HumanMessage);
|
|
83
|
+
if (lastHumanMessage.content === '/compact') {
|
|
58
84
|
return 'compact_messages';
|
|
59
85
|
}
|
|
60
|
-
if (
|
|
86
|
+
if (lastHumanMessage.content === '/clear') {
|
|
61
87
|
return 'delete_messages';
|
|
62
88
|
}
|
|
89
|
+
if (shouldAutoCompact(state)) {
|
|
90
|
+
return 'auto_compact_messages';
|
|
91
|
+
}
|
|
63
92
|
return 'agent';
|
|
64
93
|
};
|
|
65
94
|
const shouldContinue = ({ messages }) => {
|
|
@@ -89,12 +118,20 @@ class WorkflowBuilderAgent {
|
|
|
89
118
|
if (!this.llmSimpleTask) {
|
|
90
119
|
throw new errors_1.LLMServiceError('LLM not setup');
|
|
91
120
|
}
|
|
92
|
-
const messages = state
|
|
93
|
-
const
|
|
121
|
+
const { messages, previousSummary } = state;
|
|
122
|
+
const lastHumanMessage = messages[messages.length - 1];
|
|
123
|
+
const isAutoCompact = lastHumanMessage.content !== '/compact';
|
|
124
|
+
this.logger?.debug('Compacting conversation history', {
|
|
125
|
+
isAutoCompact,
|
|
126
|
+
});
|
|
127
|
+
const compactedMessages = await (0, conversation_compact_1.conversationCompactChain)(this.llmSimpleTask, messages, previousSummary);
|
|
94
128
|
return {
|
|
129
|
+
previousSummary: compactedMessages.summaryPlain,
|
|
95
130
|
messages: [
|
|
96
131
|
...messages.map((m) => new messages_1.RemoveMessage({ id: m.id })),
|
|
97
|
-
|
|
132
|
+
new messages_1.HumanMessage('Please compress the conversation history'),
|
|
133
|
+
new messages_1.AIMessage('Successfully compacted conversation history'),
|
|
134
|
+
...(isAutoCompact ? [new messages_1.HumanMessage({ content: lastHumanMessage.content })] : []),
|
|
98
135
|
],
|
|
99
136
|
};
|
|
100
137
|
};
|
|
@@ -104,9 +141,11 @@ class WorkflowBuilderAgent {
|
|
|
104
141
|
.addNode('process_operations', operations_processor_1.processOperations)
|
|
105
142
|
.addNode('delete_messages', deleteMessages)
|
|
106
143
|
.addNode('compact_messages', compactSession)
|
|
144
|
+
.addNode('auto_compact_messages', compactSession)
|
|
107
145
|
.addConditionalEdges('__start__', shouldModifyState)
|
|
108
146
|
.addEdge('tools', 'process_operations')
|
|
109
147
|
.addEdge('process_operations', 'agent')
|
|
148
|
+
.addEdge('auto_compact_messages', 'agent')
|
|
110
149
|
.addEdge('delete_messages', langgraph_1.END)
|
|
111
150
|
.addEdge('compact_messages', langgraph_1.END)
|
|
112
151
|
.addConditionalEdges('agent', shouldContinue);
|
|
@@ -131,6 +170,13 @@ class WorkflowBuilderAgent {
|
|
|
131
170
|
});
|
|
132
171
|
}
|
|
133
172
|
async *chat(payload, userId, abortSignal) {
|
|
173
|
+
if (payload.message.length > constants_1.MAX_AI_BUILDER_PROMPT_LENGTH) {
|
|
174
|
+
this.logger?.warn('Message exceeds maximum length', {
|
|
175
|
+
messageLength: payload.message.length,
|
|
176
|
+
maxLength: constants_1.MAX_AI_BUILDER_PROMPT_LENGTH,
|
|
177
|
+
});
|
|
178
|
+
throw new errors_1.ValidationError(`Message exceeds maximum length of ${constants_1.MAX_AI_BUILDER_PROMPT_LENGTH} characters`);
|
|
179
|
+
}
|
|
134
180
|
const agent = this.createWorkflow().compile({ checkpointer: this.checkpointer });
|
|
135
181
|
const workflowId = payload.workflowContext?.currentWorkflow?.id;
|
|
136
182
|
const threadId = WorkflowBuilderAgent.generateThreadId(workflowId, userId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-builder-agent.js","sourceRoot":"","sources":["../src/workflow-builder-agent.ts"],"names":[],"mappings":";;;AAEA,uDAAkF;AAGlF,oDAAoE;AASpE,wEAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"workflow-builder-agent.js","sourceRoot":"","sources":["../src/workflow-builder-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/workflow-state.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { BaseMessage } from '@langchain/core/messages';
|
|
2
2
|
import type { SimpleWorkflow, WorkflowOperation } from './types/workflow';
|
|
3
|
+
export declare function createTrimMessagesReducer(maxUserMessages: number): (current: BaseMessage[]) => BaseMessage[];
|
|
3
4
|
export declare const WorkflowState: import("@langchain/langgraph").AnnotationRoot<{
|
|
4
5
|
messages: import("@langchain/langgraph").BinaryOperatorAggregate<BaseMessage[], BaseMessage[]>;
|
|
5
6
|
workflowJSON: import("@langchain/langgraph").BinaryOperatorAggregate<SimpleWorkflow, SimpleWorkflow>;
|
|
@@ -13,4 +14,5 @@ export declare const WorkflowState: import("@langchain/langgraph").AnnotationRoo
|
|
|
13
14
|
currentWorkflow?: Partial<import("n8n-workflow").IWorkflowBase>;
|
|
14
15
|
executionData?: import("n8n-workflow").IRunExecutionData["resultData"];
|
|
15
16
|
} | undefined>;
|
|
17
|
+
previousSummary: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
|
|
16
18
|
}>;
|
package/dist/workflow-state.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WorkflowState = void 0;
|
|
4
|
+
exports.createTrimMessagesReducer = createTrimMessagesReducer;
|
|
5
|
+
const messages_1 = require("@langchain/core/messages");
|
|
4
6
|
const langgraph_1 = require("@langchain/langgraph");
|
|
5
7
|
function operationsReducer(current, update) {
|
|
6
8
|
if (update === null) {
|
|
@@ -17,6 +19,21 @@ function operationsReducer(current, update) {
|
|
|
17
19
|
}
|
|
18
20
|
return [...(current ?? []), ...update];
|
|
19
21
|
}
|
|
22
|
+
function createTrimMessagesReducer(maxUserMessages) {
|
|
23
|
+
return (current) => {
|
|
24
|
+
const humanMessageIndices = [];
|
|
25
|
+
current.forEach((msg, index) => {
|
|
26
|
+
if (msg instanceof messages_1.HumanMessage) {
|
|
27
|
+
humanMessageIndices.push(index);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
if (humanMessageIndices.length <= maxUserMessages) {
|
|
31
|
+
return current;
|
|
32
|
+
}
|
|
33
|
+
const startHumanMessageIndex = humanMessageIndices[humanMessageIndices.length - maxUserMessages];
|
|
34
|
+
return current.slice(startHumanMessageIndex);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
20
37
|
exports.WorkflowState = langgraph_1.Annotation.Root({
|
|
21
38
|
messages: (0, langgraph_1.Annotation)({
|
|
22
39
|
reducer: langgraph_1.messagesStateReducer,
|
|
@@ -33,5 +50,9 @@ exports.WorkflowState = langgraph_1.Annotation.Root({
|
|
|
33
50
|
workflowContext: (0, langgraph_1.Annotation)({
|
|
34
51
|
reducer: (x, y) => y ?? x,
|
|
35
52
|
}),
|
|
53
|
+
previousSummary: (0, langgraph_1.Annotation)({
|
|
54
|
+
reducer: (x, y) => y ?? x,
|
|
55
|
+
default: () => 'EMPTY',
|
|
56
|
+
}),
|
|
36
57
|
});
|
|
37
58
|
//# sourceMappingURL=workflow-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../src/workflow-state.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../src/workflow-state.ts"],"names":[],"mappings":";;;AAoCA,8DAsBC;AAzDD,uDAAwD;AACxD,oDAAwE;AASxE,SAAS,iBAAiB,CACzB,OAAmC,EACnC,MAA8C;IAE9C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,OAAO,IAAI,EAAE,CAAC;IACtB,CAAC;IAGD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC;QAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AACxC,CAAC;AAGD,SAAgB,yBAAyB,CAAC,eAAuB;IAChE,OAAO,CAAC,OAAsB,EAAiB,EAAE;QAEhD,MAAM,mBAAmB,GAAa,EAAE,CAAC;QACzC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC9B,IAAI,GAAG,YAAY,uBAAY,EAAE,CAAC;gBACjC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACF,CAAC,CAAC,CAAC;QAGH,IAAI,mBAAmB,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;YACnD,OAAO,OAAO,CAAC;QAChB,CAAC;QAGD,MAAM,sBAAsB,GAC3B,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;QAGnE,OAAO,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC9C,CAAC,CAAC;AACH,CAAC;AAEY,QAAA,aAAa,GAAG,sBAAU,CAAC,IAAI,CAAC;IAC5C,QAAQ,EAAE,IAAA,sBAAU,EAAgB;QACnC,OAAO,EAAE,gCAAoB;QAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KACjB,CAAC;IAIF,YAAY,EAAE,IAAA,sBAAU,EAAiB;QACxC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;KAC/C,CAAC;IAEF,kBAAkB,EAAE,IAAA,sBAAU,EAA6B;QAC1D,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KACjB,CAAC;IAGF,eAAe,EAAE,IAAA,sBAAU,EAA6C;QACvE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;KACzB,CAAC;IAGF,eAAe,EAAE,IAAA,sBAAU,EAAS;QACnC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;KACtB,CAAC;CACF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n/ai-workflow-builder",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "src/index.ts",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"langsmith": "^0.3.45",
|
|
26
26
|
"picocolors": "1.0.1",
|
|
27
27
|
"zod": "3.25.67",
|
|
28
|
-
"@n8n/backend-common": "^0.
|
|
29
|
-
"n8n-workflow": "1.103.1",
|
|
28
|
+
"@n8n/backend-common": "^0.17.0",
|
|
30
29
|
"@n8n/di": "0.9.0",
|
|
31
|
-
"@n8n/config": "1.
|
|
30
|
+
"@n8n/config": "1.50.0",
|
|
31
|
+
"n8n-workflow": "1.104.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/cli-progress": "^3.11.5",
|