@n8n/ai-workflow-builder 0.19.0 → 0.20.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/workflow-planner-agent.d.ts +58 -0
- package/dist/agents/workflow-planner-agent.js +269 -0
- package/dist/agents/workflow-planner-agent.js.map +1 -0
- package/dist/build.tsbuildinfo +1 -1
- package/dist/constants.d.ts +7 -0
- package/dist/constants.js +8 -1
- package/dist/constants.js.map +1 -1
- package/dist/errors/index.d.ts +7 -0
- package/dist/errors/index.js +16 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/llm-config.js +2 -1
- package/dist/llm-config.js.map +1 -1
- package/dist/tools/add-node.tool.d.ts +38 -34
- package/dist/tools/add-node.tool.js +17 -2
- package/dist/tools/add-node.tool.js.map +1 -1
- package/dist/tools/connect-nodes.tool.d.ts +29 -26
- package/dist/tools/connect-nodes.tool.js +7 -2
- package/dist/tools/connect-nodes.tool.js.map +1 -1
- package/dist/tools/get-node-parameter.tool.d.ts +18 -0
- package/dist/tools/get-node-parameter.tool.js +109 -0
- package/dist/tools/get-node-parameter.tool.js.map +1 -0
- package/dist/tools/helpers/progress.d.ts +1 -1
- package/dist/tools/helpers/progress.js +14 -2
- package/dist/tools/helpers/progress.js.map +1 -1
- package/dist/tools/helpers/validation.d.ts +1 -0
- package/dist/tools/helpers/validation.js +13 -0
- package/dist/tools/helpers/validation.js.map +1 -1
- package/dist/tools/node-details.tool.d.ts +20 -17
- package/dist/tools/node-details.tool.js +7 -2
- package/dist/tools/node-details.tool.js.map +1 -1
- package/dist/tools/node-search.tool.d.ts +54 -45
- package/dist/tools/node-search.tool.js +7 -2
- package/dist/tools/node-search.tool.js.map +1 -1
- package/dist/tools/prompts/main-agent.prompt.d.ts +2 -0
- package/dist/tools/prompts/main-agent.prompt.js +89 -41
- package/dist/tools/prompts/main-agent.prompt.js.map +1 -1
- package/dist/tools/remove-node.tool.d.ts +14 -11
- package/dist/tools/remove-node.tool.js +7 -2
- package/dist/tools/remove-node.tool.js.map +1 -1
- package/dist/tools/update-node-parameters.tool.d.ts +19 -16
- package/dist/tools/update-node-parameters.tool.js +21 -4
- package/dist/tools/update-node-parameters.tool.js.map +1 -1
- package/dist/types/index.d.ts +8 -8
- package/dist/types/index.js +0 -22
- package/dist/types/index.js.map +1 -1
- package/dist/types/langchain.d.ts +2 -0
- package/dist/types/langchain.js +7 -0
- package/dist/types/langchain.js.map +1 -0
- package/dist/types/messages.d.ts +1 -7
- package/dist/types/streaming.d.ts +6 -1
- package/dist/types/tools.d.ts +8 -1
- package/dist/utils/stream-processor.d.ts +7 -1
- package/dist/utils/stream-processor.js +121 -63
- package/dist/utils/stream-processor.js.map +1 -1
- package/dist/utils/token-usage.d.ts +3 -0
- package/dist/utils/token-usage.js +27 -0
- package/dist/utils/token-usage.js.map +1 -1
- package/dist/utils/trim-workflow-context.d.ts +2 -0
- package/dist/utils/trim-workflow-context.js +53 -0
- package/dist/utils/trim-workflow-context.js.map +1 -0
- package/dist/workflow-builder-agent.d.ts +1 -0
- package/dist/workflow-builder-agent.js +136 -8
- package/dist/workflow-builder-agent.js.map +1 -1
- package/dist/workflow-state.d.ts +17 -0
- package/dist/workflow-state.js +12 -0
- package/dist/workflow-state.js.map +1 -1
- package/package.json +6 -5
- package/dist/chains/planner.d.ts +0 -4
- package/dist/chains/planner.js +0 -87
- package/dist/chains/planner.js.map +0 -1
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createUpdateNodeParametersTool = createUpdateNodeParametersTool;
|
|
4
4
|
const tools_1 = require("@langchain/core/tools");
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
|
+
const trim_workflow_context_1 = require("../utils/trim-workflow-context");
|
|
6
7
|
const parameter_updater_1 = require("../chains/parameter-updater");
|
|
7
8
|
const errors_1 = require("../errors");
|
|
8
9
|
const progress_1 = require("./helpers/progress");
|
|
@@ -10,6 +11,7 @@ const response_1 = require("./helpers/response");
|
|
|
10
11
|
const state_1 = require("./helpers/state");
|
|
11
12
|
const validation_1 = require("./helpers/validation");
|
|
12
13
|
const parameter_update_utils_1 = require("./utils/parameter-update.utils");
|
|
14
|
+
const DISPLAY_TITLE = 'Updating node parameters';
|
|
13
15
|
const updateNodeParametersSchema = zod_1.z.object({
|
|
14
16
|
nodeId: zod_1.z.string().describe('The ID of the node to update'),
|
|
15
17
|
changes: zod_1.z
|
|
@@ -32,7 +34,7 @@ async function processParameterUpdates(node, nodeType, nodeId, changes, state, l
|
|
|
32
34
|
requestedChanges: changes,
|
|
33
35
|
}, logger);
|
|
34
36
|
const newParameters = (await parametersChain.invoke({
|
|
35
|
-
workflow_json: workflow,
|
|
37
|
+
workflow_json: (0, trim_workflow_context_1.trimWorkflowJSON)(workflow),
|
|
36
38
|
execution_schema: state.workflowContext?.executionSchema ?? 'NO SCHEMA',
|
|
37
39
|
execution_data: state.workflowContext?.executionData ?? 'NO EXECUTION DATA YET',
|
|
38
40
|
node_id: nodeId,
|
|
@@ -57,15 +59,26 @@ async function processParameterUpdates(node, nodeType, nodeId, changes, state, l
|
|
|
57
59
|
}
|
|
58
60
|
return (0, parameter_update_utils_1.fixExpressionPrefixes)(newParameters.parameters);
|
|
59
61
|
}
|
|
62
|
+
function getCustomNodeTitle(input, nodes) {
|
|
63
|
+
if ('nodeId' in input && typeof input['nodeId'] === 'string') {
|
|
64
|
+
const targetNode = nodes?.find((node) => node.id === input.nodeId);
|
|
65
|
+
if (targetNode) {
|
|
66
|
+
return `Updating "${targetNode.name}" node parameters`;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return DISPLAY_TITLE;
|
|
70
|
+
}
|
|
60
71
|
function createUpdateNodeParametersTool(nodeTypes, llm, logger, instanceUrl) {
|
|
61
|
-
|
|
62
|
-
const reporter = (0, progress_1.createProgressReporter)(config, 'update_node_parameters');
|
|
72
|
+
const dynamicTool = (0, tools_1.tool)(async (input, config) => {
|
|
73
|
+
const reporter = (0, progress_1.createProgressReporter)(config, 'update_node_parameters', DISPLAY_TITLE);
|
|
63
74
|
try {
|
|
64
75
|
const validatedInput = updateNodeParametersSchema.parse(input);
|
|
65
76
|
const { nodeId, changes } = validatedInput;
|
|
66
|
-
reporter.start(validatedInput);
|
|
67
77
|
const state = (0, state_1.getWorkflowState)();
|
|
68
78
|
const workflow = (0, state_1.getCurrentWorkflow)(state);
|
|
79
|
+
reporter.start(validatedInput, {
|
|
80
|
+
customDisplayTitle: getCustomNodeTitle(input, workflow.nodes),
|
|
81
|
+
});
|
|
69
82
|
const node = (0, validation_1.validateNodeExists)(nodeId, workflow.nodes);
|
|
70
83
|
if (!node) {
|
|
71
84
|
const error = (0, validation_1.createNodeNotFoundError)(nodeId);
|
|
@@ -131,5 +144,9 @@ function createUpdateNodeParametersTool(nodeTypes, llm, logger, instanceUrl) {
|
|
|
131
144
|
description: 'Update the parameters of an existing node in the workflow based on natural language changes. This tool intelligently modifies only the specified parameters while preserving others. Examples: "Set the URL to https://api.example.com", "Add authentication header", "Change method to POST", "Set the condition to check if status equals success".',
|
|
132
145
|
schema: updateNodeParametersSchema,
|
|
133
146
|
});
|
|
147
|
+
return {
|
|
148
|
+
tool: dynamicTool,
|
|
149
|
+
displayTitle: DISPLAY_TITLE,
|
|
150
|
+
};
|
|
134
151
|
}
|
|
135
152
|
//# sourceMappingURL=update-node-parameters.tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-node-parameters.tool.js","sourceRoot":"","sources":["../../src/tools/update-node-parameters.tool.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"update-node-parameters.tool.js","sourceRoot":"","sources":["../../src/tools/update-node-parameters.tool.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from './workflow';
|
|
2
|
-
export * from './messages';
|
|
3
|
-
export * from './tools';
|
|
4
|
-
export * from './connections';
|
|
5
|
-
export * from './streaming';
|
|
6
|
-
export * from './nodes';
|
|
7
|
-
export * from './config';
|
|
8
|
-
export * from './utils';
|
|
1
|
+
export type * from './workflow';
|
|
2
|
+
export type * from './messages';
|
|
3
|
+
export type * from './tools';
|
|
4
|
+
export type * from './connections';
|
|
5
|
+
export type * from './streaming';
|
|
6
|
+
export type * from './nodes';
|
|
7
|
+
export type * from './config';
|
|
8
|
+
export type * from './utils';
|
package/dist/types/index.js
CHANGED
|
@@ -1,25 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./workflow"), exports);
|
|
18
|
-
__exportStar(require("./messages"), exports);
|
|
19
|
-
__exportStar(require("./tools"), exports);
|
|
20
|
-
__exportStar(require("./connections"), exports);
|
|
21
|
-
__exportStar(require("./streaming"), exports);
|
|
22
|
-
__exportStar(require("./nodes"), exports);
|
|
23
|
-
__exportStar(require("./config"), exports);
|
|
24
|
-
__exportStar(require("./utils"), exports);
|
|
25
3
|
//# sourceMappingURL=index.js.map
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain.js","sourceRoot":"","sources":["../../src/types/langchain.ts"],"names":[],"mappings":";;AAEA,kCAEC;AAFD,SAAgB,WAAW,CAAC,GAAgB;IAC3C,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC;AAC/B,CAAC"}
|
package/dist/types/messages.d.ts
CHANGED
|
@@ -27,12 +27,6 @@ export interface AgentChatMessage {
|
|
|
27
27
|
title: string;
|
|
28
28
|
text: string;
|
|
29
29
|
}
|
|
30
|
-
export
|
|
31
|
-
role: 'assistant';
|
|
32
|
-
type: 'prompt-validation';
|
|
33
|
-
isWorkflowPrompt: boolean;
|
|
34
|
-
id: string;
|
|
35
|
-
}
|
|
36
|
-
export type MessageResponse = ((AssistantChatMessage | AssistantSummaryMessage | AgentChatMessage | PromptValidationMessage) & {
|
|
30
|
+
export type MessageResponse = ((AssistantChatMessage | AssistantSummaryMessage | AgentChatMessage) & {
|
|
37
31
|
quickReplies?: QuickReplyOption[];
|
|
38
32
|
}) | EndSessionMessage;
|
|
@@ -19,7 +19,12 @@ export interface ExecutionRequestChunk {
|
|
|
19
19
|
type: 'execution-requested';
|
|
20
20
|
reason: string;
|
|
21
21
|
}
|
|
22
|
-
export
|
|
22
|
+
export interface PlanChunk {
|
|
23
|
+
role: 'assistant';
|
|
24
|
+
type: 'plan';
|
|
25
|
+
plan: unknown;
|
|
26
|
+
}
|
|
27
|
+
export type StreamChunk = AgentMessageChunk | ToolProgressChunk | WorkflowUpdateChunk | ExecutionRequestChunk | PlanChunk;
|
|
23
28
|
export interface StreamOutput {
|
|
24
29
|
messages: StreamChunk[];
|
|
25
30
|
}
|
package/dist/types/tools.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export interface ToolProgressMessage<TToolName extends string = string> {
|
|
|
13
13
|
toolCallId?: string;
|
|
14
14
|
status: 'running' | 'completed' | 'error';
|
|
15
15
|
updates: ProgressUpdate[];
|
|
16
|
+
displayTitle?: string;
|
|
17
|
+
customDisplayTitle?: string;
|
|
16
18
|
}
|
|
17
19
|
export interface ToolError {
|
|
18
20
|
message: string;
|
|
@@ -20,7 +22,9 @@ export interface ToolError {
|
|
|
20
22
|
details?: ZodIssue[] | Record<string, unknown>;
|
|
21
23
|
}
|
|
22
24
|
export interface ProgressReporter {
|
|
23
|
-
start: <T>(input: T
|
|
25
|
+
start: <T>(input: T, options?: {
|
|
26
|
+
customDisplayTitle: string;
|
|
27
|
+
}) => void;
|
|
24
28
|
progress: (message: string, data?: Record<string, unknown>) => void;
|
|
25
29
|
complete: <T>(output: T) => void;
|
|
26
30
|
error: (error: ToolError) => void;
|
|
@@ -74,3 +78,6 @@ export interface NodeSearchOutput {
|
|
|
74
78
|
totalResults: number;
|
|
75
79
|
message: string;
|
|
76
80
|
}
|
|
81
|
+
export interface GetNodeParameterOutput {
|
|
82
|
+
message: string;
|
|
83
|
+
}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { AIMessage, HumanMessage, ToolMessage } from '@langchain/core/messages';
|
|
2
|
+
import type { DynamicStructuredTool } from '@langchain/core/tools';
|
|
2
3
|
import type { StreamOutput } from '../types/streaming';
|
|
4
|
+
export interface BuilderTool {
|
|
5
|
+
tool: DynamicStructuredTool;
|
|
6
|
+
displayTitle: string;
|
|
7
|
+
getCustomDisplayTitle?: (values: Record<string, unknown>) => string;
|
|
8
|
+
}
|
|
3
9
|
export declare const DEFAULT_WORKFLOW_UPDATE_TOOLS: string[];
|
|
4
10
|
export declare function processStreamChunk(streamMode: string, chunk: unknown): StreamOutput | null;
|
|
5
11
|
export declare function createStreamProcessor(stream: AsyncGenerator<[string, unknown], void, unknown>): AsyncGenerator<StreamOutput>;
|
|
6
|
-
export declare function formatMessages(messages: Array<AIMessage | HumanMessage | ToolMessage
|
|
12
|
+
export declare function formatMessages(messages: Array<AIMessage | HumanMessage | ToolMessage>, builderTools?: BuilderTool[]): Array<Record<string, unknown>>;
|
|
@@ -44,14 +44,46 @@ function processStreamChunk(streamMode, chunk) {
|
|
|
44
44
|
else {
|
|
45
45
|
content = lastMessage.content;
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
if (content) {
|
|
48
|
+
const messageChunk = {
|
|
49
|
+
role: 'assistant',
|
|
50
|
+
type: 'message',
|
|
51
|
+
text: content,
|
|
52
|
+
};
|
|
53
|
+
return { messages: [messageChunk] };
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
53
56
|
}
|
|
54
57
|
}
|
|
58
|
+
if (agentChunk?.create_plan?.workflowPlan) {
|
|
59
|
+
const workflowPlan = agentChunk.create_plan.workflowPlan;
|
|
60
|
+
const planChunk = {
|
|
61
|
+
role: 'assistant',
|
|
62
|
+
type: 'plan',
|
|
63
|
+
plan: workflowPlan.plan,
|
|
64
|
+
message: workflowPlan.intro,
|
|
65
|
+
};
|
|
66
|
+
return { messages: [planChunk] };
|
|
67
|
+
}
|
|
68
|
+
else if ((agentChunk?.create_plan?.messages ?? []).length > 0) {
|
|
69
|
+
const lastMessage = agentChunk.create_plan.messages[agentChunk.create_plan.messages.length - 1];
|
|
70
|
+
const messageChunk = {
|
|
71
|
+
role: 'assistant',
|
|
72
|
+
type: 'message',
|
|
73
|
+
text: lastMessage.content,
|
|
74
|
+
};
|
|
75
|
+
return { messages: [messageChunk] };
|
|
76
|
+
}
|
|
77
|
+
if (agentChunk?.adjust_plan?.workflowPlan) {
|
|
78
|
+
const workflowPlan = agentChunk.adjust_plan.workflowPlan;
|
|
79
|
+
const planChunk = {
|
|
80
|
+
role: 'assistant',
|
|
81
|
+
type: 'plan',
|
|
82
|
+
plan: workflowPlan.plan,
|
|
83
|
+
message: workflowPlan.intro,
|
|
84
|
+
};
|
|
85
|
+
return { messages: [planChunk] };
|
|
86
|
+
}
|
|
55
87
|
if (agentChunk?.process_operations) {
|
|
56
88
|
const update = agentChunk.process_operations;
|
|
57
89
|
if (update.workflowJSON && update.workflowOperations !== undefined) {
|
|
@@ -81,71 +113,97 @@ async function* createStreamProcessor(stream) {
|
|
|
81
113
|
}
|
|
82
114
|
}
|
|
83
115
|
}
|
|
84
|
-
function
|
|
116
|
+
function formatHumanMessage(msg) {
|
|
117
|
+
return {
|
|
118
|
+
role: 'user',
|
|
119
|
+
type: 'message',
|
|
120
|
+
text: msg.content,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function processArrayContent(content) {
|
|
124
|
+
const textMessages = content.filter((c) => typeof c === 'object' && c !== null && 'type' in c && c.type === 'text' && 'text' in c);
|
|
125
|
+
return textMessages.map((textMessage) => ({
|
|
126
|
+
role: 'assistant',
|
|
127
|
+
type: 'message',
|
|
128
|
+
text: textMessage.text,
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
function processAIMessageContent(msg) {
|
|
132
|
+
if (!msg.content) {
|
|
133
|
+
return [];
|
|
134
|
+
}
|
|
135
|
+
if (Array.isArray(msg.content)) {
|
|
136
|
+
return processArrayContent(msg.content);
|
|
137
|
+
}
|
|
138
|
+
return [
|
|
139
|
+
{
|
|
140
|
+
role: 'assistant',
|
|
141
|
+
type: 'message',
|
|
142
|
+
text: msg.content,
|
|
143
|
+
},
|
|
144
|
+
];
|
|
145
|
+
}
|
|
146
|
+
function createToolCallMessage(toolCall, builderTool) {
|
|
147
|
+
if (toolCall.name === 'generate_workflow_plan') {
|
|
148
|
+
const workflowPlan = toolCall.args;
|
|
149
|
+
return {
|
|
150
|
+
role: 'assistant',
|
|
151
|
+
type: 'plan',
|
|
152
|
+
plan: workflowPlan.plan,
|
|
153
|
+
message: workflowPlan.intro,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
id: toolCall.id,
|
|
158
|
+
toolCallId: toolCall.id,
|
|
159
|
+
role: 'assistant',
|
|
160
|
+
type: 'tool',
|
|
161
|
+
toolName: toolCall.name,
|
|
162
|
+
displayTitle: builderTool?.displayTitle,
|
|
163
|
+
customDisplayTitle: toolCall.args && builderTool?.getCustomDisplayTitle?.(toolCall.args),
|
|
164
|
+
status: 'completed',
|
|
165
|
+
updates: [
|
|
166
|
+
{
|
|
167
|
+
type: 'input',
|
|
168
|
+
data: toolCall.args || {},
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
function processToolCalls(toolCalls, builderTools) {
|
|
174
|
+
return toolCalls.map((toolCall) => {
|
|
175
|
+
const builderTool = builderTools?.find((bt) => bt.tool.name === toolCall.name);
|
|
176
|
+
return createToolCallMessage(toolCall, builderTool);
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
function processToolMessage(msg, formattedMessages) {
|
|
180
|
+
const toolCallId = msg.tool_call_id;
|
|
181
|
+
for (let i = formattedMessages.length - 1; i >= 0; i--) {
|
|
182
|
+
const m = formattedMessages[i];
|
|
183
|
+
if (m.type === 'tool' && m.id === toolCallId) {
|
|
184
|
+
m.updates ??= [];
|
|
185
|
+
m.updates.push({
|
|
186
|
+
type: 'output',
|
|
187
|
+
data: typeof msg.content === 'string' ? { result: msg.content } : msg.content,
|
|
188
|
+
});
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function formatMessages(messages, builderTools) {
|
|
85
194
|
const formattedMessages = [];
|
|
86
195
|
for (const msg of messages) {
|
|
87
196
|
if (msg instanceof messages_1.HumanMessage) {
|
|
88
|
-
formattedMessages.push(
|
|
89
|
-
role: 'user',
|
|
90
|
-
type: 'message',
|
|
91
|
-
text: msg.content,
|
|
92
|
-
});
|
|
197
|
+
formattedMessages.push(formatHumanMessage(msg));
|
|
93
198
|
}
|
|
94
199
|
else if (msg instanceof messages_1.AIMessage) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
textMessages.forEach((textMessage) => {
|
|
99
|
-
if (textMessage.type !== 'text') {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
formattedMessages.push({
|
|
103
|
-
role: 'assistant',
|
|
104
|
-
type: 'message',
|
|
105
|
-
text: textMessage.text,
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
formattedMessages.push({
|
|
111
|
-
role: 'assistant',
|
|
112
|
-
type: 'message',
|
|
113
|
-
text: msg.content,
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
if (msg.tool_calls && msg.tool_calls.length > 0) {
|
|
118
|
-
for (const toolCall of msg.tool_calls) {
|
|
119
|
-
formattedMessages.push({
|
|
120
|
-
id: toolCall.id,
|
|
121
|
-
toolCallId: toolCall.id,
|
|
122
|
-
role: 'assistant',
|
|
123
|
-
type: 'tool',
|
|
124
|
-
toolName: toolCall.name,
|
|
125
|
-
status: 'completed',
|
|
126
|
-
updates: [
|
|
127
|
-
{
|
|
128
|
-
type: 'input',
|
|
129
|
-
data: toolCall.args || {},
|
|
130
|
-
},
|
|
131
|
-
],
|
|
132
|
-
});
|
|
133
|
-
}
|
|
200
|
+
formattedMessages.push(...processAIMessageContent(msg));
|
|
201
|
+
if (msg.tool_calls?.length) {
|
|
202
|
+
formattedMessages.push(...processToolCalls(msg.tool_calls, builderTools));
|
|
134
203
|
}
|
|
135
204
|
}
|
|
136
205
|
else if (msg instanceof messages_1.ToolMessage) {
|
|
137
|
-
|
|
138
|
-
for (let i = formattedMessages.length - 1; i >= 0; i--) {
|
|
139
|
-
const m = formattedMessages[i];
|
|
140
|
-
if (m.type === 'tool' && m.id === toolCallId) {
|
|
141
|
-
m.updates ??= [];
|
|
142
|
-
m.updates.push({
|
|
143
|
-
type: 'output',
|
|
144
|
-
data: typeof msg.content === 'string' ? { result: msg.content } : msg.content,
|
|
145
|
-
});
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
206
|
+
processToolMessage(msg, formattedMessages);
|
|
149
207
|
}
|
|
150
208
|
}
|
|
151
209
|
return formattedMessages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-processor.js","sourceRoot":"","sources":["../../src/utils/stream-processor.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"stream-processor.js","sourceRoot":"","sources":["../../src/utils/stream-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BaseMessage } from '@langchain/core/messages';
|
|
1
2
|
import { AIMessage } from '@langchain/core/messages';
|
|
2
3
|
export type AIMessageWithUsageMetadata = AIMessage & {
|
|
3
4
|
response_metadata: {
|
|
@@ -14,3 +15,5 @@ export interface TokenUsage {
|
|
|
14
15
|
output_tokens: number;
|
|
15
16
|
}
|
|
16
17
|
export declare function extractLastTokenUsage(messages: unknown[]): TokenUsage | undefined;
|
|
18
|
+
export declare function estimateTokenCountFromString(text: string): number;
|
|
19
|
+
export declare function estimateTokenCountFromMessages(messages: BaseMessage[]): number;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.extractLastTokenUsage = extractLastTokenUsage;
|
|
4
|
+
exports.estimateTokenCountFromString = estimateTokenCountFromString;
|
|
5
|
+
exports.estimateTokenCountFromMessages = estimateTokenCountFromMessages;
|
|
4
6
|
const messages_1 = require("@langchain/core/messages");
|
|
7
|
+
const constants_1 = require("../constants");
|
|
5
8
|
function extractLastTokenUsage(messages) {
|
|
6
9
|
const lastAiAssistantMessage = messages.findLast((m) => m instanceof messages_1.AIMessage &&
|
|
7
10
|
m.response_metadata?.usage !== undefined &&
|
|
@@ -12,4 +15,28 @@ function extractLastTokenUsage(messages) {
|
|
|
12
15
|
}
|
|
13
16
|
return lastAiAssistantMessage.response_metadata.usage;
|
|
14
17
|
}
|
|
18
|
+
function concatenateMessageContent(messages) {
|
|
19
|
+
return messages.reduce((acc, message) => {
|
|
20
|
+
if (typeof message.content === 'string') {
|
|
21
|
+
return acc + message.content;
|
|
22
|
+
}
|
|
23
|
+
else if (Array.isArray(message.content)) {
|
|
24
|
+
return (acc +
|
|
25
|
+
message.content.reduce((innerAcc, item) => {
|
|
26
|
+
if (typeof item === 'object' && item !== null && 'text' in item) {
|
|
27
|
+
return innerAcc + item.text;
|
|
28
|
+
}
|
|
29
|
+
return innerAcc;
|
|
30
|
+
}, ''));
|
|
31
|
+
}
|
|
32
|
+
return acc;
|
|
33
|
+
}, '');
|
|
34
|
+
}
|
|
35
|
+
function estimateTokenCountFromString(text) {
|
|
36
|
+
return Math.ceil(text.length / constants_1.AVG_CHARS_PER_TOKEN_ANTHROPIC);
|
|
37
|
+
}
|
|
38
|
+
function estimateTokenCountFromMessages(messages) {
|
|
39
|
+
const entireInput = concatenateMessageContent(messages);
|
|
40
|
+
return estimateTokenCountFromString(entireInput);
|
|
41
|
+
}
|
|
15
42
|
//# sourceMappingURL=token-usage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage.js","sourceRoot":"","sources":["../../src/utils/token-usage.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"token-usage.js","sourceRoot":"","sources":["../../src/utils/token-usage.ts"],"names":[],"mappings":";;AAwBA,sDAcC;AAqBD,oEAEC;AAED,wEAIC;AAlED,uDAAqD;AAErD,2CAA4D;AAqB5D,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;AAED,SAAS,yBAAyB,CAAC,QAAuB;IACzD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,OAAO,EAAE,EAAE;QAC/C,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzC,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,OAAO,CACN,GAAG;gBACH,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAgB,EAAE,IAAI,EAAE,EAAE;oBACjD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;wBACjE,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;oBAC7B,CAAC;oBACD,OAAO,QAAQ,CAAC;gBACjB,CAAC,EAAE,EAAE,CAAC,CACN,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC,EAAE,EAAE,CAAC,CAAC;AACR,CAAC;AAED,SAAgB,4BAA4B,CAAC,IAAY;IACxD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,yCAA6B,CAAC,CAAC;AAC/D,CAAC;AAED,SAAgB,8BAA8B,CAAC,QAAuB;IACrE,MAAM,WAAW,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAExD,OAAO,4BAA4B,CAAC,WAAW,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.trimWorkflowJSON = trimWorkflowJSON;
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const token_usage_1 = require("../utils/token-usage");
|
|
6
|
+
const MAX_PARAMETER_VALUE_LENGTH_THRESHOLDS = [10000, 5000, 2000, 1000];
|
|
7
|
+
function trimParameterValue(value, threshold) {
|
|
8
|
+
if (value === undefined || value === null) {
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
const valueStr = JSON.stringify(value);
|
|
12
|
+
if (valueStr.length > threshold) {
|
|
13
|
+
if (typeof value === 'string') {
|
|
14
|
+
return '[Large value omitted]';
|
|
15
|
+
}
|
|
16
|
+
else if (Array.isArray(value)) {
|
|
17
|
+
return '[Large array omitted]';
|
|
18
|
+
}
|
|
19
|
+
else if (typeof value === 'object' && value !== null) {
|
|
20
|
+
return '[Large object omitted]';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
function trimWorkflowJsonWithThreshold(workflow, threshold) {
|
|
26
|
+
const simplifiedWorkflow = { ...workflow };
|
|
27
|
+
if (simplifiedWorkflow.nodes) {
|
|
28
|
+
simplifiedWorkflow.nodes = simplifiedWorkflow.nodes.map((node) => {
|
|
29
|
+
const simplifiedNode = { ...node };
|
|
30
|
+
if (simplifiedNode.parameters) {
|
|
31
|
+
const simplifiedParameters = {};
|
|
32
|
+
for (const [key, value] of Object.entries(simplifiedNode.parameters)) {
|
|
33
|
+
simplifiedParameters[key] = trimParameterValue(value, threshold);
|
|
34
|
+
}
|
|
35
|
+
simplifiedNode.parameters = simplifiedParameters;
|
|
36
|
+
}
|
|
37
|
+
return simplifiedNode;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return simplifiedWorkflow;
|
|
41
|
+
}
|
|
42
|
+
function trimWorkflowJSON(workflow) {
|
|
43
|
+
for (const threshold of MAX_PARAMETER_VALUE_LENGTH_THRESHOLDS) {
|
|
44
|
+
const simplified = trimWorkflowJsonWithThreshold(workflow, threshold);
|
|
45
|
+
const workflowStr = JSON.stringify(simplified);
|
|
46
|
+
const estimatedTokens = (0, token_usage_1.estimateTokenCountFromString)(workflowStr);
|
|
47
|
+
if (estimatedTokens <= constants_1.MAX_WORKFLOW_LENGTH_TOKENS) {
|
|
48
|
+
return simplified;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return trimWorkflowJsonWithThreshold(workflow, MAX_PARAMETER_VALUE_LENGTH_THRESHOLDS[MAX_PARAMETER_VALUE_LENGTH_THRESHOLDS.length - 1]);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=trim-workflow-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trim-workflow-context.js","sourceRoot":"","sources":["../../src/utils/trim-workflow-context.ts"],"names":[],"mappings":";;AAoFA,4CAmBC;AArGD,2CAAyD;AAEzD,qDAAmE;AAMnE,MAAM,qCAAqC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAUxE,SAAS,kBAAkB,CAC1B,KAA6B,EAC7B,SAAiB;IAGjB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAEjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,uBAAuB,CAAC;QAChC,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,uBAAuB,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACxD,OAAO,wBAAwB,CAAC;QACjC,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAUD,SAAS,6BAA6B,CACrC,QAAwB,EACxB,SAAiB;IAEjB,MAAM,kBAAkB,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC3C,IAAI,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC9B,kBAAkB,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAChE,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAGnC,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,oBAAoB,GAAoB,EAAE,CAAC;gBACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;oBACtE,oBAAoB,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAClE,CAAC;gBACD,cAAc,CAAC,UAAU,GAAG,oBAAoB,CAAC;YAClD,CAAC;YAED,OAAO,cAAc,CAAC;QACvB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC3B,CAAC;AASD,SAAgB,gBAAgB,CAAC,QAAwB;IAExD,KAAK,MAAM,SAAS,IAAI,qCAAqC,EAAE,CAAC;QAC/D,MAAM,UAAU,GAAG,6BAA6B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,eAAe,GAAG,IAAA,0CAA4B,EAAC,WAAW,CAAC,CAAC;QAGlE,IAAI,eAAe,IAAI,sCAA0B,EAAE,CAAC;YACnD,OAAO,UAAU,CAAC;QACnB,CAAC;IACF,CAAC;IAID,OAAO,6BAA6B,CACnC,QAAQ,EACR,qCAAqC,CAAC,qCAAqC,CAAC,MAAM,GAAG,CAAC,CAAC,CACvF,CAAC;AACH,CAAC"}
|
|
@@ -31,6 +31,7 @@ export declare class WorkflowBuilderAgent {
|
|
|
31
31
|
private autoCompactThresholdTokens;
|
|
32
32
|
private instanceUrl?;
|
|
33
33
|
constructor(config: WorkflowBuilderAgentConfig);
|
|
34
|
+
private getBuilderTools;
|
|
34
35
|
private createWorkflow;
|
|
35
36
|
getState(workflowId: string, userId?: string): Promise<import("@langchain/langgraph").StateSnapshot>;
|
|
36
37
|
static generateThreadId(workflowId?: string, userId?: string): string;
|