@n8n/ai-workflow-builder 0.28.0 → 0.30.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/build.tsbuildinfo +1 -1
- package/dist/chains/prompt-categorization.d.ts +3 -0
- package/dist/chains/prompt-categorization.js +109 -0
- package/dist/chains/prompt-categorization.js.map +1 -0
- package/dist/chains/test/integration/test-helpers.d.ts +3 -0
- package/dist/chains/test/integration/test-helpers.js +16 -0
- package/dist/chains/test/integration/test-helpers.js.map +1 -0
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/llm-config.js +13 -0
- package/dist/llm-config.js.map +1 -1
- package/dist/tools/add-node.tool.d.ts +29 -0
- package/dist/tools/add-node.tool.js +26 -8
- package/dist/tools/add-node.tool.js.map +1 -1
- package/dist/tools/best-practices/chatbot.d.ts +7 -0
- package/dist/tools/best-practices/chatbot.js +118 -0
- package/dist/tools/best-practices/chatbot.js.map +1 -0
- package/dist/tools/best-practices/content-generation.d.ts +7 -0
- package/dist/tools/best-practices/content-generation.js +79 -0
- package/dist/tools/best-practices/content-generation.js.map +1 -0
- package/dist/tools/best-practices/data-extraction.d.ts +7 -0
- package/dist/tools/best-practices/data-extraction.js +105 -0
- package/dist/tools/best-practices/data-extraction.js.map +1 -0
- package/dist/tools/best-practices/form-input.d.ts +7 -0
- package/dist/tools/best-practices/form-input.js +173 -0
- package/dist/tools/best-practices/form-input.js.map +1 -0
- package/dist/tools/best-practices/index.d.ts +3 -0
- package/dist/tools/best-practices/index.js +27 -0
- package/dist/tools/best-practices/index.js.map +1 -0
- package/dist/tools/best-practices/scraping-and-research.d.ts +7 -0
- package/dist/tools/best-practices/scraping-and-research.js +147 -0
- package/dist/tools/best-practices/scraping-and-research.js.map +1 -0
- package/dist/tools/builder-tools.js +6 -0
- package/dist/tools/builder-tools.js.map +1 -1
- package/dist/tools/categorize-prompt.tool.d.ts +5 -0
- package/dist/tools/categorize-prompt.tool.js +84 -0
- package/dist/tools/categorize-prompt.tool.js.map +1 -0
- package/dist/tools/engines/node-search-engine.d.ts +0 -9
- package/dist/tools/engines/node-search-engine.js +74 -73
- package/dist/tools/engines/node-search-engine.js.map +1 -1
- package/dist/tools/get-best-practices.tool.d.ts +33 -0
- package/dist/tools/get-best-practices.tool.js +94 -0
- package/dist/tools/get-best-practices.tool.js.map +1 -0
- package/dist/tools/helpers/validation.d.ts +1 -1
- package/dist/tools/helpers/validation.js +3 -2
- package/dist/tools/helpers/validation.js.map +1 -1
- package/dist/tools/node-details.tool.d.ts +4 -0
- package/dist/tools/node-details.tool.js +3 -2
- package/dist/tools/node-details.tool.js.map +1 -1
- package/dist/tools/prompts/main-agent.prompt.js +23 -5
- package/dist/tools/prompts/main-agent.prompt.js.map +1 -1
- package/dist/tools/update-node-parameters.tool.js +1 -1
- package/dist/tools/update-node-parameters.tool.js.map +1 -1
- package/dist/tools/utils/node-creation.utils.d.ts +2 -2
- package/dist/tools/utils/node-creation.utils.js +7 -3
- package/dist/tools/utils/node-creation.utils.js.map +1 -1
- package/dist/tools/validate-workflow.tool.js +0 -16
- package/dist/tools/validate-workflow.tool.js.map +1 -1
- package/dist/types/best-practices.d.ts +6 -0
- package/dist/types/best-practices.js +3 -0
- package/dist/types/best-practices.js.map +1 -0
- package/dist/types/categorization.d.ts +23 -0
- package/dist/types/categorization.js +38 -0
- package/dist/types/categorization.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/nodes.d.ts +1 -0
- package/dist/types/tools.d.ts +4 -0
- package/dist/utils/http-proxy-agent.d.ts +2 -0
- package/dist/utils/http-proxy-agent.js +16 -0
- package/dist/utils/http-proxy-agent.js.map +1 -0
- package/dist/utils/stream-processor.js +85 -58
- package/dist/utils/stream-processor.js.map +1 -1
- package/dist/validation/checks/agent-prompt.js +1 -1
- package/dist/validation/checks/agent-prompt.js.map +1 -1
- package/dist/validation/checks/connections.js +32 -1
- package/dist/validation/checks/connections.js.map +1 -1
- package/dist/workflow-builder-agent.js +30 -22
- package/dist/workflow-builder-agent.js.map +1 -1
- package/dist/workflow-state.d.ts +1 -1
- package/dist/workflow-state.js.map +1 -1
- package/package.json +10 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-creation.utils.js","sourceRoot":"","sources":["../../../src/tools/utils/node-creation.utils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"node-creation.utils.js","sourceRoot":"","sources":["../../../src/tools/utils/node-creation.utils.ts"],"names":[],"mappings":";;AAaA,gDAUC;AAOD,4CAOC;AAMD,wCAEC;AAMD,8CAEC;AAOD,0CAEC;AAYD,gDA4BC;AAQD,8CAMC;AApHD,+CAKsB;AAQtB,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,aAAsB;IAC1E,IAAI,UAAU,GAAG,QAAQ,CAAC;IAC1B,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QACzD,UAAU,GAAG,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC;QACrC,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC;AAOD,SAAgB,gBAAgB,CAAC,QAA8B;IAC9D,OAAO,CACN,QAAQ,CAAC,cAAc;QACvB,CAAC,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;YACpC,CAAC,CAAC,QAAQ,CAAC,OAAO;YAClB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CACjD,CAAC;AACH,CAAC;AAMD,SAAgB,cAAc;IAC7B,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC5B,CAAC;AAMD,SAAgB,iBAAiB;IAChC,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC5B,CAAC;AAOD,SAAgB,eAAe,CAAC,QAA8B;IAC7D,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAYD,SAAgB,kBAAkB,CACjC,QAA8B,EAC9B,WAAmB,EACnB,IAAY,EACZ,QAA0B,EAC1B,aAAqD,EAAE,EACvD,EAAW;IAEX,IAAA,qBAAM,EACL,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC9B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QACxC,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,OAAO,CACnC,CAAC;IACF,MAAM,IAAI,GAAU;QACnB,EAAE,EAAE,EAAE,IAAI,cAAc,EAAE;QAC1B,IAAI;QACJ,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,WAAW;QACX,QAAQ;QACR,UAAU;KACV,CAAC;IAGF,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAQD,SAAgB,iBAAiB,CAChC,UAAkD,EAClD,QAA8B;IAE9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;IACzC,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -26,22 +26,6 @@ function createValidateWorkflowTool(parsedNodeTypes, logger) {
|
|
|
26
26
|
const violations = (0, programmatic_1.programmaticValidation)({
|
|
27
27
|
generatedWorkflow: state.workflowJSON,
|
|
28
28
|
}, parsedNodeTypes);
|
|
29
|
-
const blockingViolations = [
|
|
30
|
-
...violations.connections,
|
|
31
|
-
...violations.trigger,
|
|
32
|
-
...violations.agentPrompt,
|
|
33
|
-
...violations.tools,
|
|
34
|
-
...violations.fromAi,
|
|
35
|
-
].filter((violation) => violation.type === 'critical' || violation.type === 'major');
|
|
36
|
-
if (blockingViolations.length > 0) {
|
|
37
|
-
const summary = (0, workflow_validation_1.formatWorkflowValidation)(violations);
|
|
38
|
-
const validationError = new errors_1.ValidationError(`Workflow validation failed due to critical or major violations.\n${summary}`, { extra: { violations: blockingViolations } });
|
|
39
|
-
reporter.error(validationError);
|
|
40
|
-
logger?.warn('validate_workflow tool detected blocking violations', {
|
|
41
|
-
violations: blockingViolations,
|
|
42
|
-
});
|
|
43
|
-
return (0, response_1.createErrorResponse)(config, validationError);
|
|
44
|
-
}
|
|
45
29
|
const message = (0, workflow_validation_1.formatWorkflowValidation)(violations);
|
|
46
30
|
reporter.complete({ message });
|
|
47
31
|
return (0, response_1.createSuccessResponse)(config, message, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-workflow.tool.js","sourceRoot":"","sources":["../../src/tools/validate-workflow.tool.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"validate-workflow.tool.js","sourceRoot":"","sources":["../../src/tools/validate-workflow.tool.ts"],"names":[],"mappings":";;;AAqBA,gEAoEC;AAzFD,iDAA6C;AAG7C,6BAAwB;AAGxB,4DAAmE;AAEnE,sCAAgE;AAChE,sEAAwE;AACxE,iDAA4E;AAC5E,iDAAgF;AAChF,2CAAmD;AAEnD,MAAM,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEpD,QAAA,sBAAsB,GAAoB;IACtD,QAAQ,EAAE,mBAAmB;IAC7B,YAAY,EAAE,qBAAqB;CACnC,CAAC;AAEF,SAAgB,0BAA0B,CACzC,eAAuC,EACvC,MAAe;IAEf,MAAM,WAAW,GAAG,IAAA,YAAI,EACvB,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,IAAA,iCAAsB,EACtC,MAAM,EACN,8BAAsB,CAAC,QAAQ,EAC/B,8BAAsB,CAAC,YAAY,CACnC,CAAC;QAEF,IAAI,CAAC;YACJ,MAAM,cAAc,GAAG,sBAAsB,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACjE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAE/B,MAAM,KAAK,GAAG,IAAA,wBAAgB,GAAE,CAAC;YACjC,IAAA,yBAAc,EAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;YAExD,MAAM,UAAU,GAAG,IAAA,qCAAsB,EACxC;gBACC,iBAAiB,EAAE,KAAK,CAAC,YAAY;aACrC,EACD,eAAe,CACf,CAAC;YAEF,MAAM,OAAO,GAAG,IAAA,8CAAwB,EAAC,UAAU,CAAC,CAAC;YAErD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YAE/B,OAAO,IAAA,gCAAqB,EAAC,MAAM,EAAE,OAAO,EAAE;gBAC7C,kBAAkB,EAAE,UAAU;aAC9B,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,OAAC,CAAC,QAAQ,EAAE,CAAC;gBACjC,MAAM,eAAe,GAAG,IAAI,wBAAe,CAAC,0BAA0B,EAAE;oBACvE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;iBAC/B,CAAC,CAAC;gBACH,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBAChC,OAAO,IAAA,8BAAmB,EAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,2BAAkB,CACvC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,EACtE;gBACC,QAAQ,EAAE,8BAAsB,CAAC,QAAQ;gBACzC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aACjD,CACD,CAAC;YAEF,MAAM,EAAE,IAAI,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAEpE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO,IAAA,8BAAmB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC,EACD;QACC,IAAI,EAAE,8BAAsB,CAAC,QAAQ;QACrC,WAAW,EACV,qHAAqH;QACtH,MAAM,EAAE,sBAAsB;KAC9B,CACD,CAAC;IAEF,OAAO;QACN,IAAI,EAAE,WAAW;QACjB,GAAG,8BAAsB;KACzB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"best-practices.js","sourceRoot":"","sources":["../../src/types/best-practices.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const WorkflowTechnique: {
|
|
2
|
+
readonly SCHEDULING: "scheduling";
|
|
3
|
+
readonly CHATBOT: "chatbot";
|
|
4
|
+
readonly FORM_INPUT: "form_input";
|
|
5
|
+
readonly SCRAPING_AND_RESEARCH: "scraping_and_research";
|
|
6
|
+
readonly MONITORING: "monitoring";
|
|
7
|
+
readonly ENRICHMENT: "enrichment";
|
|
8
|
+
readonly TRIAGE: "triage";
|
|
9
|
+
readonly CONTENT_GENERATION: "content_generation";
|
|
10
|
+
readonly DOCUMENT_PROCESSING: "document_processing";
|
|
11
|
+
readonly DATA_EXTRACTION: "data_extraction";
|
|
12
|
+
readonly DATA_ANALYSIS: "data_analysis";
|
|
13
|
+
readonly DATA_TRANSFORMATION: "data_transformation";
|
|
14
|
+
readonly NOTIFICATION: "notification";
|
|
15
|
+
readonly KNOWLEDGE_BASE: "knowledge_base";
|
|
16
|
+
readonly HUMAN_IN_THE_LOOP: "human_in_the_loop";
|
|
17
|
+
};
|
|
18
|
+
export type WorkflowTechniqueType = (typeof WorkflowTechnique)[keyof typeof WorkflowTechnique];
|
|
19
|
+
export declare const TechniqueDescription: Record<WorkflowTechniqueType, string>;
|
|
20
|
+
export interface PromptCategorization {
|
|
21
|
+
techniques: WorkflowTechniqueType[];
|
|
22
|
+
confidence?: number;
|
|
23
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TechniqueDescription = exports.WorkflowTechnique = void 0;
|
|
4
|
+
exports.WorkflowTechnique = {
|
|
5
|
+
SCHEDULING: 'scheduling',
|
|
6
|
+
CHATBOT: 'chatbot',
|
|
7
|
+
FORM_INPUT: 'form_input',
|
|
8
|
+
SCRAPING_AND_RESEARCH: 'scraping_and_research',
|
|
9
|
+
MONITORING: 'monitoring',
|
|
10
|
+
ENRICHMENT: 'enrichment',
|
|
11
|
+
TRIAGE: 'triage',
|
|
12
|
+
CONTENT_GENERATION: 'content_generation',
|
|
13
|
+
DOCUMENT_PROCESSING: 'document_processing',
|
|
14
|
+
DATA_EXTRACTION: 'data_extraction',
|
|
15
|
+
DATA_ANALYSIS: 'data_analysis',
|
|
16
|
+
DATA_TRANSFORMATION: 'data_transformation',
|
|
17
|
+
NOTIFICATION: 'notification',
|
|
18
|
+
KNOWLEDGE_BASE: 'knowledge_base',
|
|
19
|
+
HUMAN_IN_THE_LOOP: 'human_in_the_loop',
|
|
20
|
+
};
|
|
21
|
+
exports.TechniqueDescription = {
|
|
22
|
+
[exports.WorkflowTechnique.SCHEDULING]: 'Running an action at a specific time or interval',
|
|
23
|
+
[exports.WorkflowTechnique.CHATBOT]: 'Receiving chat messages and replying (built-in chat, Telegram, Slack, MS Teams, etc.)',
|
|
24
|
+
[exports.WorkflowTechnique.FORM_INPUT]: 'Gathering data from users via forms',
|
|
25
|
+
[exports.WorkflowTechnique.SCRAPING_AND_RESEARCH]: 'Methodically collecting information from websites or APIs to compile structured data',
|
|
26
|
+
[exports.WorkflowTechnique.MONITORING]: 'Repeatedly checking service/website status and taking action when conditions are met',
|
|
27
|
+
[exports.WorkflowTechnique.ENRICHMENT]: 'Adding extra details to existing data by merging information from other sources',
|
|
28
|
+
[exports.WorkflowTechnique.TRIAGE]: 'Classifying data for routing or prioritization',
|
|
29
|
+
[exports.WorkflowTechnique.CONTENT_GENERATION]: 'Creating text, images, audio, video, etc.',
|
|
30
|
+
[exports.WorkflowTechnique.DOCUMENT_PROCESSING]: 'Taking action on content within files (PDFs, Word docs, images)',
|
|
31
|
+
[exports.WorkflowTechnique.DATA_EXTRACTION]: 'Pulling specific information from structured or unstructured inputs',
|
|
32
|
+
[exports.WorkflowTechnique.DATA_ANALYSIS]: 'Examining data to find patterns, trends, anomalies, or insights',
|
|
33
|
+
[exports.WorkflowTechnique.DATA_TRANSFORMATION]: 'Cleaning, formatting, or restructuring data (including summarization)',
|
|
34
|
+
[exports.WorkflowTechnique.NOTIFICATION]: 'Sending alerts or updates via email, chat, SMS when events occur',
|
|
35
|
+
[exports.WorkflowTechnique.KNOWLEDGE_BASE]: 'Building or using a centralized information collection (usually vector database for LLM use)',
|
|
36
|
+
[exports.WorkflowTechnique.HUMAN_IN_THE_LOOP]: 'Pausing for human decision/input before resuming',
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=categorization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categorization.js","sourceRoot":"","sources":["../../src/types/categorization.ts"],"names":[],"mappings":";;;AAGa,QAAA,iBAAiB,GAAG;IAEhC,UAAU,EAAE,YAAY;IAExB,OAAO,EAAE,SAAS;IAElB,UAAU,EAAE,YAAY;IAExB,qBAAqB,EAAE,uBAAuB;IAE9C,UAAU,EAAE,YAAY;IAExB,UAAU,EAAE,YAAY;IAExB,MAAM,EAAE,QAAQ;IAEhB,kBAAkB,EAAE,oBAAoB;IAExC,mBAAmB,EAAE,qBAAqB;IAE1C,eAAe,EAAE,iBAAiB;IAElC,aAAa,EAAE,eAAe;IAE9B,mBAAmB,EAAE,qBAAqB;IAE1C,YAAY,EAAE,cAAc;IAE5B,cAAc,EAAE,gBAAgB;IAEhC,iBAAiB,EAAE,mBAAmB;CAC7B,CAAC;AAOE,QAAA,oBAAoB,GAA0C;IAC1E,CAAC,yBAAiB,CAAC,UAAU,CAAC,EAAE,kDAAkD;IAClF,CAAC,yBAAiB,CAAC,OAAO,CAAC,EAC1B,uFAAuF;IACxF,CAAC,yBAAiB,CAAC,UAAU,CAAC,EAAE,qCAAqC;IACrE,CAAC,yBAAiB,CAAC,qBAAqB,CAAC,EACxC,sFAAsF;IACvF,CAAC,yBAAiB,CAAC,UAAU,CAAC,EAC7B,sFAAsF;IACvF,CAAC,yBAAiB,CAAC,UAAU,CAAC,EAC7B,iFAAiF;IAClF,CAAC,yBAAiB,CAAC,MAAM,CAAC,EAAE,gDAAgD;IAC5E,CAAC,yBAAiB,CAAC,kBAAkB,CAAC,EAAE,2CAA2C;IACnF,CAAC,yBAAiB,CAAC,mBAAmB,CAAC,EACtC,iEAAiE;IAClE,CAAC,yBAAiB,CAAC,eAAe,CAAC,EAClC,qEAAqE;IACtE,CAAC,yBAAiB,CAAC,aAAa,CAAC,EAChC,iEAAiE;IAClE,CAAC,yBAAiB,CAAC,mBAAmB,CAAC,EACtC,uEAAuE;IACxE,CAAC,yBAAiB,CAAC,YAAY,CAAC,EAC/B,kEAAkE;IACnE,CAAC,yBAAiB,CAAC,cAAc,CAAC,EACjC,8FAA8F;IAC/F,CAAC,yBAAiB,CAAC,iBAAiB,CAAC,EAAE,kDAAkD;CACzF,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
package/dist/types/nodes.d.ts
CHANGED
package/dist/types/tools.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { INodeParameters } from 'n8n-workflow';
|
|
2
2
|
import type { ZodIssue } from 'zod';
|
|
3
|
+
import type { PromptCategorization } from './categorization';
|
|
3
4
|
import type { AddedNode, NodeDetails, NodeSearchResult } from './nodes';
|
|
4
5
|
export type ProgressUpdateType = 'input' | 'output' | 'progress' | 'error';
|
|
5
6
|
export interface ProgressUpdate<T = Record<string, unknown>> {
|
|
@@ -89,3 +90,6 @@ export interface RemoveConnectionOutput {
|
|
|
89
90
|
targetInputIndex: number;
|
|
90
91
|
message: string;
|
|
91
92
|
}
|
|
93
|
+
export interface CategorizePromptOutput {
|
|
94
|
+
categorization: PromptCategorization;
|
|
95
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getProxyAgent = getProxyAgent;
|
|
7
|
+
const proxy_from_env_1 = __importDefault(require("proxy-from-env"));
|
|
8
|
+
const undici_1 = require("undici");
|
|
9
|
+
function getProxyAgent(targetUrl) {
|
|
10
|
+
const proxyUrl = proxy_from_env_1.default.getProxyForUrl(targetUrl ?? 'https://example.nonexistent/');
|
|
11
|
+
if (!proxyUrl) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return new undici_1.ProxyAgent(proxyUrl);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=http-proxy-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-proxy-agent.js","sourceRoot":"","sources":["../../src/utils/http-proxy-agent.ts"],"names":[],"mappings":";;;;;AAOA,sCAWC;AAlBD,oEAA0C;AAC1C,mCAAoC;AAMpC,SAAgB,aAAa,CAAC,SAAkB;IAI/C,MAAM,QAAQ,GAAG,wBAAY,CAAC,cAAc,CAAC,SAAS,IAAI,8BAA8B,CAAC,CAAC;IAE1F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,mBAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -6,74 +6,101 @@ exports.createStreamProcessor = createStreamProcessor;
|
|
|
6
6
|
exports.cleanContextTags = cleanContextTags;
|
|
7
7
|
exports.formatMessages = formatMessages;
|
|
8
8
|
const messages_1 = require("@langchain/core/messages");
|
|
9
|
+
function isAgentUpdateChunk(chunk) {
|
|
10
|
+
return (typeof chunk === 'object' &&
|
|
11
|
+
chunk !== null &&
|
|
12
|
+
('agent' in chunk ||
|
|
13
|
+
'compact_messages' in chunk ||
|
|
14
|
+
'delete_messages' in chunk ||
|
|
15
|
+
'process_operations' in chunk));
|
|
16
|
+
}
|
|
17
|
+
function isToolProgressChunk(chunk) {
|
|
18
|
+
return typeof chunk === 'object' && chunk !== null && 'type' in chunk && chunk.type === 'tool';
|
|
19
|
+
}
|
|
9
20
|
exports.DEFAULT_WORKFLOW_UPDATE_TOOLS = [
|
|
10
21
|
'add_nodes',
|
|
11
22
|
'connect_nodes',
|
|
12
23
|
'update_node_parameters',
|
|
13
24
|
'remove_node',
|
|
14
25
|
];
|
|
26
|
+
function getLastMessage(messages) {
|
|
27
|
+
if (!messages || messages.length === 0) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return messages[messages.length - 1];
|
|
31
|
+
}
|
|
32
|
+
function extractTextFromContent(content) {
|
|
33
|
+
if (Array.isArray(content)) {
|
|
34
|
+
return content
|
|
35
|
+
.filter((part) => part.type === 'text')
|
|
36
|
+
.map((part) => part.text)
|
|
37
|
+
.join('\n');
|
|
38
|
+
}
|
|
39
|
+
return content;
|
|
40
|
+
}
|
|
41
|
+
function createMessageChunk(text) {
|
|
42
|
+
return {
|
|
43
|
+
role: 'assistant',
|
|
44
|
+
type: 'message',
|
|
45
|
+
text,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function processDeleteMessages(chunk) {
|
|
49
|
+
const messages = chunk.delete_messages?.messages;
|
|
50
|
+
if (!messages || messages.length === 0) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return { messages: [createMessageChunk('Deleted, refresh?')] };
|
|
54
|
+
}
|
|
55
|
+
function processCompactMessages(chunk) {
|
|
56
|
+
const lastMessage = getLastMessage(chunk.compact_messages?.messages);
|
|
57
|
+
if (!lastMessage) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const text = extractTextFromContent(lastMessage.content);
|
|
61
|
+
return { messages: [createMessageChunk(text)] };
|
|
62
|
+
}
|
|
63
|
+
function processAgentMessages(chunk) {
|
|
64
|
+
const lastMessage = getLastMessage(chunk.agent?.messages);
|
|
65
|
+
if (!lastMessage?.content) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const text = extractTextFromContent(lastMessage.content);
|
|
69
|
+
if (!text) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
return { messages: [createMessageChunk(text)] };
|
|
73
|
+
}
|
|
74
|
+
function processOperations(chunk) {
|
|
75
|
+
const update = chunk.process_operations;
|
|
76
|
+
if (!update?.workflowJSON || update.workflowOperations === undefined) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const workflowUpdateChunk = {
|
|
80
|
+
role: 'assistant',
|
|
81
|
+
type: 'workflow-updated',
|
|
82
|
+
codeSnippet: JSON.stringify(update.workflowJSON, null, 2),
|
|
83
|
+
};
|
|
84
|
+
return { messages: [workflowUpdateChunk] };
|
|
85
|
+
}
|
|
86
|
+
function processCustomToolChunk(chunk) {
|
|
87
|
+
if (!isToolProgressChunk(chunk)) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
return { messages: [chunk] };
|
|
91
|
+
}
|
|
15
92
|
function processStreamChunk(streamMode, chunk) {
|
|
16
93
|
if (streamMode === 'updates') {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const messageChunk = {
|
|
20
|
-
role: 'assistant',
|
|
21
|
-
type: 'message',
|
|
22
|
-
text: 'Deleted, refresh?',
|
|
23
|
-
};
|
|
24
|
-
return { messages: [messageChunk] };
|
|
25
|
-
}
|
|
26
|
-
if ((agentChunk?.compact_messages?.messages ?? []).length > 0) {
|
|
27
|
-
const lastMessage = agentChunk.compact_messages.messages[agentChunk.compact_messages.messages.length - 1];
|
|
28
|
-
const messageChunk = {
|
|
29
|
-
role: 'assistant',
|
|
30
|
-
type: 'message',
|
|
31
|
-
text: lastMessage.content,
|
|
32
|
-
};
|
|
33
|
-
return { messages: [messageChunk] };
|
|
34
|
-
}
|
|
35
|
-
if ((agentChunk?.agent?.messages ?? []).length > 0) {
|
|
36
|
-
const lastMessage = agentChunk.agent.messages[agentChunk.agent.messages.length - 1];
|
|
37
|
-
if (lastMessage.content) {
|
|
38
|
-
let content;
|
|
39
|
-
if (Array.isArray(lastMessage.content)) {
|
|
40
|
-
content = lastMessage.content
|
|
41
|
-
.filter((c) => c.type === 'text')
|
|
42
|
-
.map((b) => b.text)
|
|
43
|
-
.join('\n');
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
content = lastMessage.content;
|
|
47
|
-
}
|
|
48
|
-
if (content) {
|
|
49
|
-
const messageChunk = {
|
|
50
|
-
role: 'assistant',
|
|
51
|
-
type: 'message',
|
|
52
|
-
text: content,
|
|
53
|
-
};
|
|
54
|
-
return { messages: [messageChunk] };
|
|
55
|
-
}
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
if (agentChunk?.process_operations) {
|
|
60
|
-
const update = agentChunk.process_operations;
|
|
61
|
-
if (update.workflowJSON && update.workflowOperations !== undefined) {
|
|
62
|
-
const workflowUpdateChunk = {
|
|
63
|
-
role: 'assistant',
|
|
64
|
-
type: 'workflow-updated',
|
|
65
|
-
codeSnippet: JSON.stringify(update.workflowJSON, null, 2),
|
|
66
|
-
};
|
|
67
|
-
return { messages: [workflowUpdateChunk] };
|
|
68
|
-
}
|
|
94
|
+
if (!isAgentUpdateChunk(chunk)) {
|
|
95
|
+
return null;
|
|
69
96
|
}
|
|
97
|
+
return (processDeleteMessages(chunk) ??
|
|
98
|
+
processCompactMessages(chunk) ??
|
|
99
|
+
processAgentMessages(chunk) ??
|
|
100
|
+
processOperations(chunk));
|
|
70
101
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if (toolChunk?.type === 'tool') {
|
|
74
|
-
const output = { messages: [toolChunk] };
|
|
75
|
-
return output;
|
|
76
|
-
}
|
|
102
|
+
if (streamMode === 'custom') {
|
|
103
|
+
return processCustomToolChunk(chunk);
|
|
77
104
|
}
|
|
78
105
|
return null;
|
|
79
106
|
}
|
|
@@ -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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"}
|
|
@@ -22,7 +22,7 @@ function validateAgentPrompt(workflow) {
|
|
|
22
22
|
if (isOptionsWithSystemMessage(options)) {
|
|
23
23
|
systemMessage = options.systemMessage;
|
|
24
24
|
}
|
|
25
|
-
if (promptType !== 'auto') {
|
|
25
|
+
if (promptType !== 'auto' && promptType !== 'guardrails') {
|
|
26
26
|
if (!textParam || !(0, expressions_1.containsExpression)(textParam)) {
|
|
27
27
|
violations.push({
|
|
28
28
|
type: 'major',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-prompt.js","sourceRoot":"","sources":["../../../src/validation/checks/agent-prompt.ts"],"names":[],"mappings":";;AA4BA,kDAiDC;AAxED,sDAA0D;AAK1D,SAAS,0BAA0B,CAClC,KAAc;IAEd,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,eAAe,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAC7D,CAAC;AACH,CAAC;AASD,SAAgB,mBAAmB,CAAC,QAAwB;IAC3D,MAAM,UAAU,GAA4B,EAAE,CAAC;IAG/C,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,CAAC;IACX,CAAC;IAGD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEnC,IAAI,IAAI,CAAC,IAAI,KAAK,gCAAgC,EAAE,CAAC;YAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;YACxC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;YAGzC,IAAI,aAAiC,CAAC;YACtC,IAAI,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YACvC,CAAC;YAID,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-prompt.js","sourceRoot":"","sources":["../../../src/validation/checks/agent-prompt.ts"],"names":[],"mappings":";;AA4BA,kDAiDC;AAxED,sDAA0D;AAK1D,SAAS,0BAA0B,CAClC,KAAc;IAEd,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,eAAe,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAC7D,CAAC;AACH,CAAC;AASD,SAAgB,mBAAmB,CAAC,QAAwB;IAC3D,MAAM,UAAU,GAA4B,EAAE,CAAC;IAG/C,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,CAAC;IACX,CAAC;IAGD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEnC,IAAI,IAAI,CAAC,IAAI,KAAK,gCAAgC,EAAE,CAAC;YAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;YACxC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;YAGzC,IAAI,aAAiC,CAAC;YACtC,IAAI,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YACvC,CAAC;YAID,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;gBAE1D,IAAI,CAAC,SAAS,IAAI,CAAC,IAAA,gCAAkB,EAAC,SAAS,CAAC,EAAE,CAAC;oBAClD,UAAU,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,OAAO;wBACb,WAAW,EAAE,eAAe,IAAI,CAAC,IAAI,0GAA0G;wBAC/I,cAAc,EAAE,EAAE;qBAClB,CAAC,CAAC;gBACJ,CAAC;gBAID,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzD,UAAU,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,OAAO;wBACb,WAAW,EAAE,eAAe,IAAI,CAAC,IAAI,sIAAsI;wBAC3K,cAAc,EAAE,EAAE;qBAClB,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateConnections = validateConnections;
|
|
4
4
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const node_helpers_1 = require("../../utils/node-helpers");
|
|
5
6
|
const resolve_connections_1 = require("../../validation/utils/resolve-connections");
|
|
6
7
|
function getProvidedInputTypes(nodeConnections) {
|
|
7
8
|
const providedInputTypes = new Map();
|
|
@@ -91,14 +92,43 @@ function checkMergeNodeConnections(nodeInfo, nodeConnections) {
|
|
|
91
92
|
}
|
|
92
93
|
return issues;
|
|
93
94
|
}
|
|
95
|
+
function checkSubNodeRootConnections(workflow, nodeInfo, nodesByName) {
|
|
96
|
+
const issues = [];
|
|
97
|
+
const { node, nodeType, resolvedOutputs } = nodeInfo;
|
|
98
|
+
if (!resolvedOutputs || resolvedOutputs.size === 0) {
|
|
99
|
+
return issues;
|
|
100
|
+
}
|
|
101
|
+
if (!(0, node_helpers_1.isSubNode)(nodeType, node)) {
|
|
102
|
+
return issues;
|
|
103
|
+
}
|
|
104
|
+
const aiOutputs = Array.from(resolvedOutputs).filter((output) => output.startsWith('ai_'));
|
|
105
|
+
if (aiOutputs.length === 0) {
|
|
106
|
+
return issues;
|
|
107
|
+
}
|
|
108
|
+
const nodeConnections = workflow.connections?.[node.name];
|
|
109
|
+
for (const outputType of aiOutputs) {
|
|
110
|
+
const connectionsForType = nodeConnections?.[outputType];
|
|
111
|
+
const hasRootConnection = connectionsForType?.some((connectionGroup) => connectionGroup?.some((connection) => connection?.node && nodesByName.has(connection.node)));
|
|
112
|
+
if (!hasRootConnection) {
|
|
113
|
+
issues.push({
|
|
114
|
+
type: 'critical',
|
|
115
|
+
description: `Sub-node ${node.name} (${node.type}) provides ${outputType} but is not connected to a root node.`,
|
|
116
|
+
pointsDeducted: 50,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return issues;
|
|
121
|
+
}
|
|
94
122
|
function validateConnections(workflow, nodeTypes) {
|
|
95
123
|
const violations = [];
|
|
96
124
|
if (!workflow.connections) {
|
|
97
125
|
workflow.connections = {};
|
|
98
126
|
}
|
|
99
127
|
const connectionsByDestination = (0, n8n_workflow_1.mapConnectionsByDestination)(workflow.connections);
|
|
128
|
+
const nodesByName = new Map(workflow.nodes.map((node) => [node.name, node]));
|
|
129
|
+
const nodeTypeMap = new Map(nodeTypes.map((type) => [type.name, type]));
|
|
100
130
|
for (const node of workflow.nodes) {
|
|
101
|
-
const nodeType =
|
|
131
|
+
const nodeType = nodeTypeMap.get(node.type);
|
|
102
132
|
if (!nodeType) {
|
|
103
133
|
violations.push({
|
|
104
134
|
type: 'critical',
|
|
@@ -125,6 +155,7 @@ function validateConnections(workflow, nodeTypes) {
|
|
|
125
155
|
violations.push(...checkMissingRequiredInputs(nodeInfo, providedInputTypes));
|
|
126
156
|
violations.push(...checkUnsupportedConnections(nodeInfo, providedInputTypes));
|
|
127
157
|
violations.push(...checkMergeNodeConnections(nodeInfo, nodeConnections));
|
|
158
|
+
violations.push(...checkSubNodeRootConnections(workflow, nodeInfo, nodesByName));
|
|
128
159
|
}
|
|
129
160
|
return violations;
|
|
130
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../../../src/validation/checks/connections.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../../../src/validation/checks/connections.ts"],"names":[],"mappings":";;AAiLA,kDAuDC;AAvOD,+CAA2D;AAG3D,uDAAiD;AACjD,gFAA+F;AAQ/F,SAAS,qBAAqB,CAC7B,eAAkC;IAElC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEjE,IAAI,CAAC,eAAe;QAAE,OAAO,kBAAkB,CAAC;IAEhD,KAAK,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAC7E,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,KAAK,MAAM,aAAa,IAAI,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,aAAa;gBAAE,SAAS;YAC7B,gBAAgB,IAAI,aAAa,CAAC,MAAM,CAAC;QAC1C,CAAC;QACD,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YAC1B,kBAAkB,CAAC,GAAG,CAAC,cAAoC,EAAE,gBAAgB,CAAC,CAAC;QAChF,CAAC;IACF,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC3B,CAAC;AAED,SAAS,0BAA0B,CAClC,QAAyC,EACzC,kBAAmD;IAEnD,MAAM,MAAM,GAAwC,EAAE,CAAC;IAEvD,IAAI,CAAC,QAAQ,CAAC,cAAc;QAAE,OAAO,MAAM,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9D,IAAI,KAAK,CAAC,QAAQ,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,uCAAuC,KAAK,CAAC,IAAI,EAAE;gBACjH,cAAc,EAAE,EAAE;aAClB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,2BAA2B,CACnC,QAAyC,EACzC,kBAAmD;IAEnD,MAAM,MAAM,GAAwC,EAAE,CAAC;IAEvD,IAAI,CAAC,QAAQ,CAAC,cAAc;QAAE,OAAO,MAAM,CAAC;IAE5C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,0CAA0C,IAAI,EAAE;gBAC9G,cAAc,EAAE,EAAE;aAClB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,yBAAyB,CACjC,QAAyC,EACzC,eAAkC;IAElC,MAAM,MAAM,GAAwC,EAAE,CAAC;IAEvD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAElE,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAElE,IAAI,qBAAqB,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,cAAc,QAAQ,CAAC,IAAI,CAAC,IAAI,aAAa,qBAAqB,mFAAmF;gBAClK,cAAc,EAAE,EAAE;aAClB,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GACnB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;QAE/E,IAAI,qBAAqB,KAAK,cAAc,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,cAAc,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,qBAAqB,kDAAkD,cAAc,GAAG;gBAC7I,cAAc,EAAE,EAAE;aAClB,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC;QACpD,MAAM,cAAc,GAAa,EAAE,CAAC;QAEpC,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,cAAc,EAAE,UAAU,EAAE,EAAE,CAAC;YACpE,MAAM,mBAAmB,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;YACxD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;YAE5F,IAAI,CAAC,cAAc,EAAE,CAAC;gBACrB,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YACrC,CAAC;QACF,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,cAAc,QAAQ,CAAC,IAAI,CAAC,IAAI,wCAAwC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBACjH,cAAc,EAAE,EAAE;aAClB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,2BAA2B,CACnC,QAAwB,EACxB,QAAyC,EACzC,WAAyD;IAEzD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC;IAErD,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,IAAI,CAAC,IAAA,wBAAS,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAE3F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC;IACf,CAAC;IAED,MAAM,eAAe,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1D,KAAK,MAAM,UAAU,IAAI,SAAS,EAAE,CAAC;QACpC,MAAM,kBAAkB,GAAG,eAAe,EAAE,CAAC,UAAU,CAAC,CAAC;QAEzD,MAAM,iBAAiB,GAAG,kBAAkB,EAAE,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE,CACtE,eAAe,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAC3F,CAAC;QAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,YAAY,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,cAAc,UAAU,uCAAuC;gBAC/G,cAAc,EAAE,EAAE;aAClB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAgB,mBAAmB,CAClC,QAAwB,EACxB,SAAiC;IAEjC,MAAM,UAAU,GAAwC,EAAE,CAAC;IAE3D,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC3B,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,wBAAwB,GAAG,IAAA,0CAA2B,EAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAExE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,aAAa,IAAI,CAAC,IAAI,uBAAuB,IAAI,CAAC,IAAI,EAAE;gBACrE,cAAc,EAAE,EAAE;aAClB,CAAC,CAAC;YACH,SAAS;QACV,CAAC;QAED,MAAM,QAAQ,GAAoC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAErE,IAAI,CAAC;YACJ,QAAQ,CAAC,cAAc,GAAG,IAAA,uCAAiB,EAAC,QAAQ,CAAC,CAAC;YACtD,QAAQ,CAAC,eAAe,GAAG,IAAA,wCAAkB,EAAC,QAAQ,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,UAAU,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,0CAA0C,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAC7E,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACtD,EAAE;gBACF,cAAc,EAAE,EAAE;aAClB,CAAC,CAAC;YAEH,SAAS;QACV,CAAC;QAED,MAAM,eAAe,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAElE,UAAU,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAE7E,UAAU,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAE9E,UAAU,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;QAEzE,UAAU,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC"}
|
|
@@ -35,12 +35,40 @@ function shouldModifyState(state, autoCompactThresholdTokens) {
|
|
|
35
35
|
if (isDefaultName && nodesLength === 0 && messages.length === 1) {
|
|
36
36
|
return 'create_workflow_name';
|
|
37
37
|
}
|
|
38
|
-
const
|
|
38
|
+
const workflowContextToAppend = getWorkflowContext(state);
|
|
39
|
+
const estimatedTokens = (0, token_usage_1.estimateTokenCountFromMessages)([
|
|
40
|
+
...messages,
|
|
41
|
+
new messages_1.HumanMessage(workflowContextToAppend),
|
|
42
|
+
]);
|
|
39
43
|
if (estimatedTokens > autoCompactThresholdTokens) {
|
|
40
44
|
return 'auto_compact_messages';
|
|
41
45
|
}
|
|
42
46
|
return 'agent';
|
|
43
47
|
}
|
|
48
|
+
function getWorkflowContext(state) {
|
|
49
|
+
const trimmedWorkflow = (0, trim_workflow_context_1.trimWorkflowJSON)(state.workflowJSON);
|
|
50
|
+
const executionData = state.workflowContext?.executionData ?? {};
|
|
51
|
+
const executionSchema = state.workflowContext?.executionSchema ?? [];
|
|
52
|
+
const workflowContext = [
|
|
53
|
+
'',
|
|
54
|
+
'<current_workflow_json>',
|
|
55
|
+
JSON.stringify(trimmedWorkflow),
|
|
56
|
+
'</current_workflow_json>',
|
|
57
|
+
'<trimmed_workflow_json_note>',
|
|
58
|
+
'Note: Large property values of the nodes in the workflow JSON above may be trimmed to fit within token limits.',
|
|
59
|
+
'Use get_node_parameter tool to get full details when needed.',
|
|
60
|
+
'</trimmed_workflow_json_note>',
|
|
61
|
+
'',
|
|
62
|
+
'<current_simplified_execution_data>',
|
|
63
|
+
JSON.stringify(executionData),
|
|
64
|
+
'</current_simplified_execution_data>',
|
|
65
|
+
'',
|
|
66
|
+
'<current_execution_nodes_schemas>',
|
|
67
|
+
JSON.stringify(executionSchema),
|
|
68
|
+
'</current_execution_nodes_schemas>',
|
|
69
|
+
].join('\n');
|
|
70
|
+
return workflowContext;
|
|
71
|
+
}
|
|
44
72
|
class WorkflowBuilderAgent {
|
|
45
73
|
checkpointer;
|
|
46
74
|
parsedNodeTypes;
|
|
@@ -85,9 +113,6 @@ class WorkflowBuilderAgent {
|
|
|
85
113
|
});
|
|
86
114
|
}
|
|
87
115
|
const hasPreviousSummary = state.previousSummary && state.previousSummary !== 'EMPTY';
|
|
88
|
-
const trimmedWorkflow = (0, trim_workflow_context_1.trimWorkflowJSON)(state.workflowJSON);
|
|
89
|
-
const executionData = state.workflowContext?.executionData ?? {};
|
|
90
|
-
const executionSchema = state.workflowContext?.executionSchema ?? [];
|
|
91
116
|
const prompt = await main_agent_prompt_1.mainAgentPrompt.invoke({
|
|
92
117
|
...state,
|
|
93
118
|
workflowJSON: (0, trim_workflow_context_1.trimWorkflowJSON)(state.workflowJSON),
|
|
@@ -97,24 +122,7 @@ class WorkflowBuilderAgent {
|
|
|
97
122
|
instanceUrl: this.instanceUrl,
|
|
98
123
|
previousSummary: hasPreviousSummary ? state.previousSummary : '',
|
|
99
124
|
});
|
|
100
|
-
const workflowContext =
|
|
101
|
-
'',
|
|
102
|
-
'<current_workflow_json>',
|
|
103
|
-
JSON.stringify(trimmedWorkflow, null, 2),
|
|
104
|
-
'</current_workflow_json>',
|
|
105
|
-
'<trimmed_workflow_json_note>',
|
|
106
|
-
'Note: Large property values of the nodes in the workflow JSON above may be trimmed to fit within token limits.',
|
|
107
|
-
'Use get_node_parameter tool to get full details when needed.',
|
|
108
|
-
'</trimmed_workflow_json_note>',
|
|
109
|
-
'',
|
|
110
|
-
'<current_simplified_execution_data>',
|
|
111
|
-
JSON.stringify(executionData, null, 2),
|
|
112
|
-
'</current_simplified_execution_data>',
|
|
113
|
-
'',
|
|
114
|
-
'<current_execution_nodes_schemas>',
|
|
115
|
-
JSON.stringify(executionSchema, null, 2),
|
|
116
|
-
'</current_execution_nodes_schemas>',
|
|
117
|
-
].join('\n');
|
|
125
|
+
const workflowContext = getWorkflowContext(state);
|
|
118
126
|
const userToolIndices = (0, helpers_1.findUserToolMessageIndices)(prompt.messages);
|
|
119
127
|
(0, helpers_1.cleanStaleWorkflowContext)(prompt.messages, userToolIndices);
|
|
120
128
|
(0, helpers_1.applyCacheControlMarkers)(prompt.messages, userToolIndices, workflowContext);
|