@n8n/ai-workflow-builder 0.13.0 → 0.14.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.d.ts +28 -0
- package/dist/ai-workflow-builder-agent.service.js +160 -0
- package/dist/ai-workflow-builder-agent.service.js.map +1 -0
- package/dist/build.tsbuildinfo +1 -1
- package/dist/chains/conversation-compact.d.ts +8 -0
- package/dist/chains/conversation-compact.js +56 -0
- package/dist/chains/conversation-compact.js.map +1 -0
- package/dist/chains/parameter-updater.d.ts +16 -0
- package/dist/chains/parameter-updater.js +94 -0
- package/dist/chains/parameter-updater.js.map +1 -0
- package/dist/chains/planner.js +2 -2
- package/dist/chains/planner.js.map +1 -1
- package/dist/chains/prompts/base/common-patterns.d.ts +1 -0
- package/dist/chains/prompts/base/common-patterns.js +13 -0
- package/dist/chains/prompts/base/common-patterns.js.map +1 -0
- package/dist/chains/prompts/base/core-instructions.d.ts +1 -0
- package/dist/chains/prompts/base/core-instructions.js +28 -0
- package/dist/chains/prompts/base/core-instructions.js.map +1 -0
- package/dist/chains/prompts/base/expression-rules.d.ts +1 -0
- package/dist/chains/prompts/base/expression-rules.js +15 -0
- package/dist/chains/prompts/base/expression-rules.js.map +1 -0
- package/dist/chains/prompts/base/output-format.d.ts +1 -0
- package/dist/chains/prompts/base/output-format.js +7 -0
- package/dist/chains/prompts/base/output-format.js.map +1 -0
- package/dist/chains/prompts/examples/advanced/resource-locator-examples.d.ts +1 -0
- package/dist/chains/prompts/examples/advanced/resource-locator-examples.js +79 -0
- package/dist/chains/prompts/examples/advanced/resource-locator-examples.js.map +1 -0
- package/dist/chains/prompts/examples/advanced/tool-node-examples.d.ts +1 -0
- package/dist/chains/prompts/examples/advanced/tool-node-examples.js +71 -0
- package/dist/chains/prompts/examples/advanced/tool-node-examples.js.map +1 -0
- package/dist/chains/prompts/examples/basic/if-node-examples.d.ts +1 -0
- package/dist/chains/prompts/examples/basic/if-node-examples.js +138 -0
- package/dist/chains/prompts/examples/basic/if-node-examples.js.map +1 -0
- package/dist/chains/prompts/examples/basic/set-node-examples.d.ts +1 -0
- package/dist/chains/prompts/examples/basic/set-node-examples.js +148 -0
- package/dist/chains/prompts/examples/basic/set-node-examples.js.map +1 -0
- package/dist/chains/prompts/examples/basic/simple-updates.d.ts +1 -0
- package/dist/chains/prompts/examples/basic/simple-updates.js +51 -0
- package/dist/chains/prompts/examples/basic/simple-updates.js.map +1 -0
- package/dist/chains/prompts/node-types/http-request.d.ts +1 -0
- package/dist/chains/prompts/node-types/http-request.js +113 -0
- package/dist/chains/prompts/node-types/http-request.js.map +1 -0
- package/dist/chains/prompts/node-types/if-node.d.ts +1 -0
- package/dist/chains/prompts/node-types/if-node.js +158 -0
- package/dist/chains/prompts/node-types/if-node.js.map +1 -0
- package/dist/chains/prompts/node-types/set-node.d.ts +1 -0
- package/dist/chains/prompts/node-types/set-node.js +91 -0
- package/dist/chains/prompts/node-types/set-node.js.map +1 -0
- package/dist/chains/prompts/node-types/tool-nodes.d.ts +1 -0
- package/dist/chains/prompts/node-types/tool-nodes.js +73 -0
- package/dist/chains/prompts/node-types/tool-nodes.js.map +1 -0
- package/dist/chains/prompts/parameter-types/resource-locator.d.ts +1 -0
- package/dist/chains/prompts/parameter-types/resource-locator.js +95 -0
- package/dist/chains/prompts/parameter-types/resource-locator.js.map +1 -0
- package/dist/chains/prompts/parameter-types/text-fields.d.ts +1 -0
- package/dist/chains/prompts/parameter-types/text-fields.js +22 -0
- package/dist/chains/prompts/parameter-types/text-fields.js.map +1 -0
- package/dist/chains/prompts/prompt-builder.d.ts +14 -0
- package/dist/chains/prompts/prompt-builder.js +118 -0
- package/dist/chains/prompts/prompt-builder.js.map +1 -0
- package/dist/chains/prompts/prompt-config.d.ts +5 -0
- package/dist/chains/prompts/prompt-config.js +52 -0
- package/dist/chains/prompts/prompt-config.js.map +1 -0
- package/dist/errors/index.d.ts +45 -0
- package/dist/errors/index.js +122 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/llm-config.d.ts +6 -5
- package/dist/llm-config.js +19 -4
- package/dist/llm-config.js.map +1 -1
- package/dist/tools/add-node.tool.d.ts +56 -0
- package/dist/tools/add-node.tool.js +136 -0
- package/dist/tools/add-node.tool.js.map +1 -0
- package/dist/tools/connect-nodes.tool.d.ts +45 -0
- package/dist/tools/connect-nodes.tool.js +223 -0
- package/dist/tools/connect-nodes.tool.js.map +1 -0
- package/dist/tools/engines/node-search-engine.d.ts +25 -0
- package/dist/tools/engines/node-search-engine.js +121 -0
- package/dist/tools/engines/node-search-engine.js.map +1 -0
- package/dist/tools/helpers/index.d.ts +4 -0
- package/dist/tools/helpers/index.js +21 -0
- package/dist/tools/helpers/index.js.map +1 -0
- package/dist/tools/helpers/progress.d.ts +9 -0
- package/dist/tools/helpers/progress.js +114 -0
- package/dist/tools/helpers/progress.js.map +1 -0
- package/dist/tools/helpers/response.d.ts +7 -0
- package/dist/tools/helpers/response.js +31 -0
- package/dist/tools/helpers/response.js.map +1 -0
- package/dist/tools/helpers/state.d.ts +13 -0
- package/dist/tools/helpers/state.js +70 -0
- package/dist/tools/helpers/state.js.map +1 -0
- package/dist/tools/helpers/validation.d.ts +12 -0
- package/dist/tools/helpers/validation.js +69 -0
- package/dist/tools/helpers/validation.js.map +1 -0
- package/dist/tools/node-details.tool.d.ts +19 -0
- package/dist/tools/node-details.tool.js +133 -0
- package/dist/tools/node-details.tool.js.map +1 -0
- package/dist/tools/node-search.tool.d.ts +49 -0
- package/dist/tools/node-search.tool.js +146 -0
- package/dist/tools/node-search.tool.js.map +1 -0
- package/dist/tools/prompts/main-agent.prompt.d.ts +2 -0
- package/dist/tools/prompts/main-agent.prompt.js +390 -0
- package/dist/tools/prompts/main-agent.prompt.js.map +1 -0
- package/dist/tools/remove-node.tool.d.ts +13 -0
- package/dist/tools/remove-node.tool.js +97 -0
- package/dist/tools/remove-node.tool.js.map +1 -0
- package/dist/tools/update-node-parameters.tool.d.ts +19 -0
- package/dist/tools/update-node-parameters.tool.js +131 -0
- package/dist/tools/update-node-parameters.tool.js.map +1 -0
- package/dist/tools/utils/connection-parameters.utils.d.ts +8 -0
- package/dist/tools/utils/connection-parameters.utils.js +47 -0
- package/dist/tools/utils/connection-parameters.utils.js.map +1 -0
- package/dist/tools/utils/connection.utils.d.ts +15 -0
- package/dist/tools/utils/connection.utils.js +321 -0
- package/dist/tools/utils/connection.utils.js.map +1 -0
- package/dist/tools/utils/node-creation.utils.d.ts +8 -0
- package/dist/tools/utils/node-creation.utils.js +52 -0
- package/dist/tools/utils/node-creation.utils.js.map +1 -0
- package/dist/tools/utils/node-positioning.utils.d.ts +17 -0
- package/dist/tools/utils/node-positioning.utils.js +87 -0
- package/dist/tools/utils/node-positioning.utils.js.map +1 -0
- package/dist/tools/utils/parameter-update.utils.d.ts +6 -0
- package/dist/tools/utils/parameter-update.utils.js +75 -0
- package/dist/tools/utils/parameter-update.utils.js.map +1 -0
- package/dist/types/config.d.ts +53 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/connections.d.ts +30 -0
- package/dist/types/connections.js +3 -0
- package/dist/types/connections.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.js +25 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/messages.d.ts +38 -0
- package/dist/types/messages.js +3 -0
- package/dist/types/messages.js.map +1 -0
- package/dist/types/nodes.d.ts +26 -0
- package/dist/{types.js → types/nodes.js} +1 -1
- package/dist/types/nodes.js.map +1 -0
- package/dist/types/streaming.d.ts +33 -0
- package/dist/types/streaming.js +3 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/types/tools.d.ts +76 -0
- package/dist/types/tools.js +3 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/types/utils.d.ts +2 -0
- package/dist/types/utils.js +3 -0
- package/dist/types/utils.js.map +1 -0
- package/dist/types/workflow.d.ts +21 -0
- package/dist/types/workflow.js +3 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/utils/node-helpers.d.ts +2 -0
- package/dist/utils/node-helpers.js +54 -0
- package/dist/utils/node-helpers.js.map +1 -0
- package/dist/utils/operations-processor.d.ts +10 -0
- package/dist/utils/operations-processor.js +114 -0
- package/dist/utils/operations-processor.js.map +1 -0
- package/dist/utils/stream-processor.d.ts +6 -0
- package/dist/utils/stream-processor.js +153 -0
- package/dist/utils/stream-processor.js.map +1 -0
- package/dist/utils/tool-executor.d.ts +3 -0
- package/dist/utils/tool-executor.js +86 -0
- package/dist/utils/tool-executor.js.map +1 -0
- package/dist/workflow-builder-agent.d.ts +41 -0
- package/dist/workflow-builder-agent.js +205 -0
- package/dist/workflow-builder-agent.js.map +1 -0
- package/dist/workflow-state.d.ts +12 -7
- package/dist/workflow-state.js +26 -7
- package/dist/workflow-state.js.map +1 -1
- package/package.json +25 -6
- package/dist/ai-workflow-builder.service.d.ts +0 -21
- package/dist/ai-workflow-builder.service.js +0 -294
- package/dist/ai-workflow-builder.service.js.map +0 -1
- package/dist/chains/connection-composer.d.ts +0 -10
- package/dist/chains/connection-composer.js +0 -135
- package/dist/chains/connection-composer.js.map +0 -1
- package/dist/chains/node-selector.d.ts +0 -8
- package/dist/chains/node-selector.js +0 -90
- package/dist/chains/node-selector.js.map +0 -1
- package/dist/chains/nodes-composer.d.ts +0 -8
- package/dist/chains/nodes-composer.js +0 -451
- package/dist/chains/nodes-composer.js.map +0 -1
- package/dist/chains/validator.d.ts +0 -2
- package/dist/chains/validator.js +0 -67
- package/dist/chains/validator.js.map +0 -1
- package/dist/types.d.ts +0 -87
- package/dist/types.js.map +0 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractNodeParameters = extractNodeParameters;
|
|
4
|
+
exports.mergeParameters = mergeParameters;
|
|
5
|
+
exports.updateNodeWithParameters = updateNodeWithParameters;
|
|
6
|
+
exports.formatChangesForPrompt = formatChangesForPrompt;
|
|
7
|
+
exports.fixExpressionPrefixes = fixExpressionPrefixes;
|
|
8
|
+
function extractNodeParameters(node) {
|
|
9
|
+
return node.parameters || {};
|
|
10
|
+
}
|
|
11
|
+
function mergeParameters(existingParams, newParams) {
|
|
12
|
+
return deepMerge(existingParams, newParams);
|
|
13
|
+
}
|
|
14
|
+
function deepMerge(target, source) {
|
|
15
|
+
if (!target) {
|
|
16
|
+
return source || {};
|
|
17
|
+
}
|
|
18
|
+
if (!source) {
|
|
19
|
+
return target;
|
|
20
|
+
}
|
|
21
|
+
const output = { ...target };
|
|
22
|
+
if (isObject(target) && isObject(source)) {
|
|
23
|
+
Object.keys(source).forEach((key) => {
|
|
24
|
+
if (isObject(source[key])) {
|
|
25
|
+
if (!target || !(key in target) || !target[key]) {
|
|
26
|
+
Object.assign(output, { [key]: source[key] });
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
output[key] = deepMerge(target[key], source[key]);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
Object.assign(output, { [key]: source[key] });
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return output;
|
|
38
|
+
}
|
|
39
|
+
function isObject(item) {
|
|
40
|
+
return item !== null && typeof item === 'object' && !Array.isArray(item);
|
|
41
|
+
}
|
|
42
|
+
function updateNodeWithParameters(node, newParameters) {
|
|
43
|
+
return {
|
|
44
|
+
...node,
|
|
45
|
+
parameters: newParameters,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function formatChangesForPrompt(changes) {
|
|
49
|
+
return changes.map((change, index) => `${index + 1}. ${change}`).join('\n');
|
|
50
|
+
}
|
|
51
|
+
function fixExpressionPrefixes(value) {
|
|
52
|
+
if (typeof value === 'string') {
|
|
53
|
+
let updatedValue = value;
|
|
54
|
+
if (value.includes('{{ $json }}')) {
|
|
55
|
+
updatedValue = value.replace('{{ $json }}', '{{ $json.toJsonString() }}');
|
|
56
|
+
}
|
|
57
|
+
if (updatedValue.includes('{{') && !updatedValue.startsWith('=')) {
|
|
58
|
+
return ('=' + updatedValue);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (Array.isArray(value)) {
|
|
62
|
+
return value.map((item) => fixExpressionPrefixes(item));
|
|
63
|
+
}
|
|
64
|
+
if (value !== null && typeof value === 'object') {
|
|
65
|
+
const fixed = {};
|
|
66
|
+
for (const key in value) {
|
|
67
|
+
if (Object.prototype.hasOwnProperty.call(value, key)) {
|
|
68
|
+
fixed[key] = fixExpressionPrefixes(value[key]);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return fixed;
|
|
72
|
+
}
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=parameter-update.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter-update.utils.js","sourceRoot":"","sources":["../../../src/tools/utils/parameter-update.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { DynamicStructuredTool } from '@langchain/core/tools';
|
|
2
|
+
import type { INodeTypeDescription } from 'n8n-workflow';
|
|
3
|
+
import type { WorkflowState } from '../workflow-state';
|
|
4
|
+
export interface LLMConfig {
|
|
5
|
+
openAIApiKey?: string;
|
|
6
|
+
model: string;
|
|
7
|
+
temperature?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ParameterUpdaterOptions {
|
|
10
|
+
nodeType: string;
|
|
11
|
+
nodeDefinition: INodeTypeDescription;
|
|
12
|
+
requestedChanges: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface NodePromptConfig {
|
|
15
|
+
nodeTypePatterns: {
|
|
16
|
+
set: string[];
|
|
17
|
+
if: string[];
|
|
18
|
+
httpRequest: string[];
|
|
19
|
+
tool: string[];
|
|
20
|
+
};
|
|
21
|
+
parameterKeywords: {
|
|
22
|
+
resourceLocator: string[];
|
|
23
|
+
textExpressions: string[];
|
|
24
|
+
};
|
|
25
|
+
maxExamples: number;
|
|
26
|
+
targetTokenBudget: number;
|
|
27
|
+
}
|
|
28
|
+
export interface PromptGenerationOptions {
|
|
29
|
+
includeExamples?: boolean;
|
|
30
|
+
maxExamples?: number;
|
|
31
|
+
forceInclude?: {
|
|
32
|
+
setNode?: boolean;
|
|
33
|
+
ifNode?: boolean;
|
|
34
|
+
httpRequest?: boolean;
|
|
35
|
+
toolNodes?: boolean;
|
|
36
|
+
resourceLocator?: boolean;
|
|
37
|
+
textFields?: boolean;
|
|
38
|
+
};
|
|
39
|
+
tokenBudget?: number;
|
|
40
|
+
verbose?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface PromptBuilderContext {
|
|
43
|
+
nodeType: string;
|
|
44
|
+
nodeDefinition: INodeTypeDescription;
|
|
45
|
+
requestedChanges: string[];
|
|
46
|
+
hasResourceLocatorParams?: boolean;
|
|
47
|
+
options?: PromptGenerationOptions;
|
|
48
|
+
config?: NodePromptConfig;
|
|
49
|
+
}
|
|
50
|
+
export interface ToolExecutorOptions {
|
|
51
|
+
state: typeof WorkflowState.State;
|
|
52
|
+
toolMap: Map<string, DynamicStructuredTool>;
|
|
53
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { INode, NodeConnectionType } from 'n8n-workflow';
|
|
2
|
+
export interface ConnectionResult {
|
|
3
|
+
sourceNode: string;
|
|
4
|
+
targetNode: string;
|
|
5
|
+
connectionType: string;
|
|
6
|
+
swapped: boolean;
|
|
7
|
+
message: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ConnectionValidationResult {
|
|
10
|
+
valid: boolean;
|
|
11
|
+
error?: string;
|
|
12
|
+
shouldSwap?: boolean;
|
|
13
|
+
swappedSource?: INode;
|
|
14
|
+
swappedTarget?: INode;
|
|
15
|
+
}
|
|
16
|
+
export interface ConnectionOperationResult {
|
|
17
|
+
success: boolean;
|
|
18
|
+
sourceNode: string;
|
|
19
|
+
targetNode: string;
|
|
20
|
+
connectionType: string;
|
|
21
|
+
swapped: boolean;
|
|
22
|
+
message: string;
|
|
23
|
+
error?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface InferConnectionTypeResult {
|
|
26
|
+
connectionType?: NodeConnectionType;
|
|
27
|
+
possibleTypes?: NodeConnectionType[];
|
|
28
|
+
requiresSwap?: boolean;
|
|
29
|
+
error?: string;
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../../src/types/connections.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
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
|
+
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
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAEA,6CAA2B;AAC3B,6CAA2B;AAC3B,0CAAwB;AACxB,gDAA8B;AAC9B,8CAA4B;AAC5B,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export interface QuickReplyOption {
|
|
2
|
+
text: string;
|
|
3
|
+
type: string;
|
|
4
|
+
isFeedback?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface AssistantChatMessage {
|
|
7
|
+
role: 'assistant';
|
|
8
|
+
type: 'message';
|
|
9
|
+
text: string;
|
|
10
|
+
step?: string;
|
|
11
|
+
codeSnippet?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface AssistantSummaryMessage {
|
|
14
|
+
role: 'assistant';
|
|
15
|
+
type: 'summary';
|
|
16
|
+
title: string;
|
|
17
|
+
content: string;
|
|
18
|
+
}
|
|
19
|
+
export interface EndSessionMessage {
|
|
20
|
+
role: 'assistant';
|
|
21
|
+
type: 'event';
|
|
22
|
+
eventName: 'end-session';
|
|
23
|
+
}
|
|
24
|
+
export interface AgentChatMessage {
|
|
25
|
+
role: 'assistant';
|
|
26
|
+
type: 'agent-suggestion';
|
|
27
|
+
title: string;
|
|
28
|
+
text: string;
|
|
29
|
+
}
|
|
30
|
+
export interface PromptValidationMessage {
|
|
31
|
+
role: 'assistant';
|
|
32
|
+
type: 'prompt-validation';
|
|
33
|
+
isWorkflowPrompt: boolean;
|
|
34
|
+
id: string;
|
|
35
|
+
}
|
|
36
|
+
export type MessageResponse = ((AssistantChatMessage | AssistantSummaryMessage | AgentChatMessage | PromptValidationMessage) & {
|
|
37
|
+
quickReplies?: QuickReplyOption[];
|
|
38
|
+
}) | EndSessionMessage;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/types/messages.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { INodeParameters, INodeProperties, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export interface NodeDetails {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
description: string;
|
|
6
|
+
properties: INodeProperties[];
|
|
7
|
+
subtitle?: string;
|
|
8
|
+
inputs: INodeTypeDescription['inputs'];
|
|
9
|
+
outputs: INodeTypeDescription['outputs'];
|
|
10
|
+
}
|
|
11
|
+
export interface NodeSearchResult {
|
|
12
|
+
name: string;
|
|
13
|
+
displayName: string;
|
|
14
|
+
description: string;
|
|
15
|
+
score: number;
|
|
16
|
+
inputs: INodeTypeDescription['inputs'];
|
|
17
|
+
outputs: INodeTypeDescription['outputs'];
|
|
18
|
+
}
|
|
19
|
+
export interface AddedNode {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
type: string;
|
|
23
|
+
displayName?: string;
|
|
24
|
+
parameters?: INodeParameters;
|
|
25
|
+
position: [number, number];
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/types/nodes.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface AgentMessageChunk {
|
|
2
|
+
role: 'assistant';
|
|
3
|
+
type: 'message';
|
|
4
|
+
text: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ToolProgressChunk {
|
|
7
|
+
type: 'tool';
|
|
8
|
+
toolName: string;
|
|
9
|
+
status: string;
|
|
10
|
+
[key: string]: unknown;
|
|
11
|
+
}
|
|
12
|
+
export interface WorkflowUpdateChunk {
|
|
13
|
+
role: 'assistant';
|
|
14
|
+
type: 'workflow-updated';
|
|
15
|
+
codeSnippet: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ExecutionRequestChunk {
|
|
18
|
+
role: 'assistant';
|
|
19
|
+
type: 'execution-requested';
|
|
20
|
+
reason: string;
|
|
21
|
+
}
|
|
22
|
+
export type StreamChunk = AgentMessageChunk | ToolProgressChunk | WorkflowUpdateChunk | ExecutionRequestChunk;
|
|
23
|
+
export interface StreamOutput {
|
|
24
|
+
messages: StreamChunk[];
|
|
25
|
+
}
|
|
26
|
+
export interface StreamProcessorConfig {
|
|
27
|
+
threadConfig: {
|
|
28
|
+
configurable: {
|
|
29
|
+
thread_id: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
workflowUpdateTools?: string[];
|
|
33
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../src/types/streaming.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { INodeParameters } from 'n8n-workflow';
|
|
2
|
+
import type { ZodIssue } from 'zod';
|
|
3
|
+
import type { AddedNode, NodeDetails, NodeSearchResult } from './nodes';
|
|
4
|
+
export type ProgressUpdateType = 'input' | 'output' | 'progress' | 'error';
|
|
5
|
+
export interface ProgressUpdate<T = Record<string, unknown>> {
|
|
6
|
+
type: ProgressUpdateType;
|
|
7
|
+
data: T;
|
|
8
|
+
timestamp?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ToolProgressMessage<TToolName extends string = string> {
|
|
11
|
+
type: 'tool';
|
|
12
|
+
toolName: TToolName;
|
|
13
|
+
toolCallId?: string;
|
|
14
|
+
status: 'running' | 'completed' | 'error';
|
|
15
|
+
updates: ProgressUpdate[];
|
|
16
|
+
}
|
|
17
|
+
export interface ToolError {
|
|
18
|
+
message: string;
|
|
19
|
+
code?: string;
|
|
20
|
+
details?: ZodIssue[] | Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
export interface ProgressReporter {
|
|
23
|
+
start: <T>(input: T) => void;
|
|
24
|
+
progress: (message: string, data?: Record<string, unknown>) => void;
|
|
25
|
+
complete: <T>(output: T) => void;
|
|
26
|
+
error: (error: ToolError) => void;
|
|
27
|
+
createBatchReporter: (scope: string) => BatchReporter;
|
|
28
|
+
}
|
|
29
|
+
export interface BatchReporter {
|
|
30
|
+
init: (total: number) => void;
|
|
31
|
+
next: (itemDescription: string) => void;
|
|
32
|
+
complete: () => void;
|
|
33
|
+
}
|
|
34
|
+
export interface UpdateNodeParametersOutput {
|
|
35
|
+
nodeId: string;
|
|
36
|
+
nodeName: string;
|
|
37
|
+
nodeType: string;
|
|
38
|
+
updatedParameters: INodeParameters;
|
|
39
|
+
appliedChanges: string[];
|
|
40
|
+
message: string;
|
|
41
|
+
}
|
|
42
|
+
export interface AddNodeOutput {
|
|
43
|
+
addedNode: AddedNode;
|
|
44
|
+
message: string;
|
|
45
|
+
}
|
|
46
|
+
export interface ConnectNodesOutput {
|
|
47
|
+
sourceNode: string;
|
|
48
|
+
targetNode: string;
|
|
49
|
+
connectionType: string;
|
|
50
|
+
swapped: boolean;
|
|
51
|
+
message: string;
|
|
52
|
+
found: {
|
|
53
|
+
sourceNode: boolean;
|
|
54
|
+
targetNode: boolean;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export interface RemoveNodeOutput {
|
|
58
|
+
removedNodeId: string;
|
|
59
|
+
removedNodeName: string;
|
|
60
|
+
removedNodeType: string;
|
|
61
|
+
connectionsRemoved: number;
|
|
62
|
+
message: string;
|
|
63
|
+
}
|
|
64
|
+
export interface NodeDetailsOutput {
|
|
65
|
+
details: NodeDetails;
|
|
66
|
+
found: boolean;
|
|
67
|
+
message: string;
|
|
68
|
+
}
|
|
69
|
+
export interface NodeSearchOutput {
|
|
70
|
+
results: Array<{
|
|
71
|
+
query: string;
|
|
72
|
+
results: NodeSearchResult[];
|
|
73
|
+
}>;
|
|
74
|
+
totalResults: number;
|
|
75
|
+
message: string;
|
|
76
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/types/utils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { IWorkflowBase, INode, IConnections } from 'n8n-workflow';
|
|
2
|
+
export type SimpleWorkflow = Pick<IWorkflowBase, 'nodes' | 'connections'>;
|
|
3
|
+
export type WorkflowOperation = {
|
|
4
|
+
type: 'clear';
|
|
5
|
+
} | {
|
|
6
|
+
type: 'removeNode';
|
|
7
|
+
nodeIds: string[];
|
|
8
|
+
} | {
|
|
9
|
+
type: 'addNodes';
|
|
10
|
+
nodes: INode[];
|
|
11
|
+
} | {
|
|
12
|
+
type: 'updateNode';
|
|
13
|
+
nodeId: string;
|
|
14
|
+
updates: Partial<INode>;
|
|
15
|
+
} | {
|
|
16
|
+
type: 'setConnections';
|
|
17
|
+
connections: IConnections;
|
|
18
|
+
} | {
|
|
19
|
+
type: 'mergeConnections';
|
|
20
|
+
connections: IConnections;
|
|
21
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/types/workflow.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSubNode = isSubNode;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
function isSubNode(nodeType, node) {
|
|
6
|
+
if (node?.parameters?.mode === 'retrieve-as-tool') {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
if (nodeType.name === '@n8n/n8n-nodes-langchain.agent') {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (!nodeType.inputs || (Array.isArray(nodeType.inputs) && nodeType.inputs.length === 0)) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
if (Array.isArray(nodeType.inputs)) {
|
|
16
|
+
const hasMainInput = nodeType.inputs.some((input) => {
|
|
17
|
+
if (typeof input === 'string') {
|
|
18
|
+
return input === n8n_workflow_1.NodeConnectionTypes.Main || input.toLowerCase() === 'main';
|
|
19
|
+
}
|
|
20
|
+
return input.type === n8n_workflow_1.NodeConnectionTypes.Main || input.type.toLowerCase() === 'main';
|
|
21
|
+
});
|
|
22
|
+
return !hasMainInput;
|
|
23
|
+
}
|
|
24
|
+
if (typeof nodeType.inputs === 'string') {
|
|
25
|
+
const mainInputPatterns = [
|
|
26
|
+
'NodeConnectionTypes.Main',
|
|
27
|
+
'type: "main"',
|
|
28
|
+
"type: 'main'",
|
|
29
|
+
'type:"main"',
|
|
30
|
+
"type:'main'",
|
|
31
|
+
'type: `main`',
|
|
32
|
+
'type: NodeConnectionTypes.Main',
|
|
33
|
+
'type:NodeConnectionTypes.Main',
|
|
34
|
+
'{ displayName: "", type: "main"',
|
|
35
|
+
"{ displayName: '', type: 'main'",
|
|
36
|
+
'{ displayName: "", type: NodeConnectionTypes.Main',
|
|
37
|
+
"{ displayName: '', type: NodeConnectionTypes.Main",
|
|
38
|
+
'return ["main"',
|
|
39
|
+
"return ['main'",
|
|
40
|
+
'return [`main`',
|
|
41
|
+
'return[["main"',
|
|
42
|
+
"return[['main'",
|
|
43
|
+
'return [[`main`',
|
|
44
|
+
'["main", ...',
|
|
45
|
+
"['main', ...",
|
|
46
|
+
'[`main`, ...',
|
|
47
|
+
];
|
|
48
|
+
const hasMainInput = mainInputPatterns.some((pattern) => typeof nodeType.inputs === 'string' &&
|
|
49
|
+
nodeType.inputs.toLowerCase().includes(pattern.toLowerCase()));
|
|
50
|
+
return !hasMainInput;
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=node-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-helpers.js","sourceRoot":"","sources":["../../src/utils/node-helpers.ts"],"names":[],"mappings":";;AAQA,8BAmEC;AA3ED,+CAA0F;AAQ1F,SAAgB,SAAS,CAAC,QAA8B,EAAE,IAAY;IACrE,IAAI,IAAI,EAAE,UAAU,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,gCAAgC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,IAAI,CAAC;IACb,CAAC;IAGD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAEpC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,KAAK,KAAK,kCAAmB,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;YAC7E,CAAC;YAED,OAAO,KAAK,CAAC,IAAI,KAAK,kCAAmB,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAGzC,MAAM,iBAAiB,GAAG;YACzB,0BAA0B;YAC1B,cAAc;YACd,cAAc;YACd,aAAa;YACb,aAAa;YACb,cAAc;YACd,gCAAgC;YAChC,+BAA+B;YAC/B,iCAAiC;YACjC,iCAAiC;YACjC,mDAAmD;YACnD,mDAAmD;YAEnD,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,iBAAiB;YAEjB,cAAc;YACd,cAAc;YACd,cAAc;SACd,CAAC;QAGF,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAC1C,CAAC,OAAO,EAAE,EAAE,CACX,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ;YACnC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAC9D,CAAC;QAEF,OAAO,CAAC,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SimpleWorkflow, WorkflowOperation } from '../types/workflow';
|
|
2
|
+
import type { WorkflowState } from '../workflow-state';
|
|
3
|
+
export declare function applyOperations(workflow: SimpleWorkflow, operations: WorkflowOperation[]): SimpleWorkflow;
|
|
4
|
+
export declare function processOperations(state: typeof WorkflowState.State): {
|
|
5
|
+
workflowJSON?: undefined;
|
|
6
|
+
workflowOperations?: undefined;
|
|
7
|
+
} | {
|
|
8
|
+
workflowJSON: SimpleWorkflow;
|
|
9
|
+
workflowOperations: null;
|
|
10
|
+
};
|