@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.
Files changed (189) hide show
  1. package/dist/ai-workflow-builder-agent.service.d.ts +28 -0
  2. package/dist/ai-workflow-builder-agent.service.js +160 -0
  3. package/dist/ai-workflow-builder-agent.service.js.map +1 -0
  4. package/dist/build.tsbuildinfo +1 -1
  5. package/dist/chains/conversation-compact.d.ts +8 -0
  6. package/dist/chains/conversation-compact.js +56 -0
  7. package/dist/chains/conversation-compact.js.map +1 -0
  8. package/dist/chains/parameter-updater.d.ts +16 -0
  9. package/dist/chains/parameter-updater.js +94 -0
  10. package/dist/chains/parameter-updater.js.map +1 -0
  11. package/dist/chains/planner.js +2 -2
  12. package/dist/chains/planner.js.map +1 -1
  13. package/dist/chains/prompts/base/common-patterns.d.ts +1 -0
  14. package/dist/chains/prompts/base/common-patterns.js +13 -0
  15. package/dist/chains/prompts/base/common-patterns.js.map +1 -0
  16. package/dist/chains/prompts/base/core-instructions.d.ts +1 -0
  17. package/dist/chains/prompts/base/core-instructions.js +28 -0
  18. package/dist/chains/prompts/base/core-instructions.js.map +1 -0
  19. package/dist/chains/prompts/base/expression-rules.d.ts +1 -0
  20. package/dist/chains/prompts/base/expression-rules.js +15 -0
  21. package/dist/chains/prompts/base/expression-rules.js.map +1 -0
  22. package/dist/chains/prompts/base/output-format.d.ts +1 -0
  23. package/dist/chains/prompts/base/output-format.js +7 -0
  24. package/dist/chains/prompts/base/output-format.js.map +1 -0
  25. package/dist/chains/prompts/examples/advanced/resource-locator-examples.d.ts +1 -0
  26. package/dist/chains/prompts/examples/advanced/resource-locator-examples.js +79 -0
  27. package/dist/chains/prompts/examples/advanced/resource-locator-examples.js.map +1 -0
  28. package/dist/chains/prompts/examples/advanced/tool-node-examples.d.ts +1 -0
  29. package/dist/chains/prompts/examples/advanced/tool-node-examples.js +71 -0
  30. package/dist/chains/prompts/examples/advanced/tool-node-examples.js.map +1 -0
  31. package/dist/chains/prompts/examples/basic/if-node-examples.d.ts +1 -0
  32. package/dist/chains/prompts/examples/basic/if-node-examples.js +138 -0
  33. package/dist/chains/prompts/examples/basic/if-node-examples.js.map +1 -0
  34. package/dist/chains/prompts/examples/basic/set-node-examples.d.ts +1 -0
  35. package/dist/chains/prompts/examples/basic/set-node-examples.js +148 -0
  36. package/dist/chains/prompts/examples/basic/set-node-examples.js.map +1 -0
  37. package/dist/chains/prompts/examples/basic/simple-updates.d.ts +1 -0
  38. package/dist/chains/prompts/examples/basic/simple-updates.js +51 -0
  39. package/dist/chains/prompts/examples/basic/simple-updates.js.map +1 -0
  40. package/dist/chains/prompts/node-types/http-request.d.ts +1 -0
  41. package/dist/chains/prompts/node-types/http-request.js +113 -0
  42. package/dist/chains/prompts/node-types/http-request.js.map +1 -0
  43. package/dist/chains/prompts/node-types/if-node.d.ts +1 -0
  44. package/dist/chains/prompts/node-types/if-node.js +158 -0
  45. package/dist/chains/prompts/node-types/if-node.js.map +1 -0
  46. package/dist/chains/prompts/node-types/set-node.d.ts +1 -0
  47. package/dist/chains/prompts/node-types/set-node.js +91 -0
  48. package/dist/chains/prompts/node-types/set-node.js.map +1 -0
  49. package/dist/chains/prompts/node-types/tool-nodes.d.ts +1 -0
  50. package/dist/chains/prompts/node-types/tool-nodes.js +73 -0
  51. package/dist/chains/prompts/node-types/tool-nodes.js.map +1 -0
  52. package/dist/chains/prompts/parameter-types/resource-locator.d.ts +1 -0
  53. package/dist/chains/prompts/parameter-types/resource-locator.js +95 -0
  54. package/dist/chains/prompts/parameter-types/resource-locator.js.map +1 -0
  55. package/dist/chains/prompts/parameter-types/text-fields.d.ts +1 -0
  56. package/dist/chains/prompts/parameter-types/text-fields.js +22 -0
  57. package/dist/chains/prompts/parameter-types/text-fields.js.map +1 -0
  58. package/dist/chains/prompts/prompt-builder.d.ts +14 -0
  59. package/dist/chains/prompts/prompt-builder.js +118 -0
  60. package/dist/chains/prompts/prompt-builder.js.map +1 -0
  61. package/dist/chains/prompts/prompt-config.d.ts +5 -0
  62. package/dist/chains/prompts/prompt-config.js +52 -0
  63. package/dist/chains/prompts/prompt-config.js.map +1 -0
  64. package/dist/errors/index.d.ts +45 -0
  65. package/dist/errors/index.js +122 -0
  66. package/dist/errors/index.js.map +1 -0
  67. package/dist/index.d.ts +1 -1
  68. package/dist/index.js +1 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/llm-config.d.ts +6 -5
  71. package/dist/llm-config.js +19 -4
  72. package/dist/llm-config.js.map +1 -1
  73. package/dist/tools/add-node.tool.d.ts +56 -0
  74. package/dist/tools/add-node.tool.js +136 -0
  75. package/dist/tools/add-node.tool.js.map +1 -0
  76. package/dist/tools/connect-nodes.tool.d.ts +45 -0
  77. package/dist/tools/connect-nodes.tool.js +223 -0
  78. package/dist/tools/connect-nodes.tool.js.map +1 -0
  79. package/dist/tools/engines/node-search-engine.d.ts +25 -0
  80. package/dist/tools/engines/node-search-engine.js +121 -0
  81. package/dist/tools/engines/node-search-engine.js.map +1 -0
  82. package/dist/tools/helpers/index.d.ts +4 -0
  83. package/dist/tools/helpers/index.js +21 -0
  84. package/dist/tools/helpers/index.js.map +1 -0
  85. package/dist/tools/helpers/progress.d.ts +9 -0
  86. package/dist/tools/helpers/progress.js +114 -0
  87. package/dist/tools/helpers/progress.js.map +1 -0
  88. package/dist/tools/helpers/response.d.ts +7 -0
  89. package/dist/tools/helpers/response.js +31 -0
  90. package/dist/tools/helpers/response.js.map +1 -0
  91. package/dist/tools/helpers/state.d.ts +13 -0
  92. package/dist/tools/helpers/state.js +70 -0
  93. package/dist/tools/helpers/state.js.map +1 -0
  94. package/dist/tools/helpers/validation.d.ts +12 -0
  95. package/dist/tools/helpers/validation.js +69 -0
  96. package/dist/tools/helpers/validation.js.map +1 -0
  97. package/dist/tools/node-details.tool.d.ts +19 -0
  98. package/dist/tools/node-details.tool.js +133 -0
  99. package/dist/tools/node-details.tool.js.map +1 -0
  100. package/dist/tools/node-search.tool.d.ts +49 -0
  101. package/dist/tools/node-search.tool.js +146 -0
  102. package/dist/tools/node-search.tool.js.map +1 -0
  103. package/dist/tools/prompts/main-agent.prompt.d.ts +2 -0
  104. package/dist/tools/prompts/main-agent.prompt.js +390 -0
  105. package/dist/tools/prompts/main-agent.prompt.js.map +1 -0
  106. package/dist/tools/remove-node.tool.d.ts +13 -0
  107. package/dist/tools/remove-node.tool.js +97 -0
  108. package/dist/tools/remove-node.tool.js.map +1 -0
  109. package/dist/tools/update-node-parameters.tool.d.ts +19 -0
  110. package/dist/tools/update-node-parameters.tool.js +131 -0
  111. package/dist/tools/update-node-parameters.tool.js.map +1 -0
  112. package/dist/tools/utils/connection-parameters.utils.d.ts +8 -0
  113. package/dist/tools/utils/connection-parameters.utils.js +47 -0
  114. package/dist/tools/utils/connection-parameters.utils.js.map +1 -0
  115. package/dist/tools/utils/connection.utils.d.ts +15 -0
  116. package/dist/tools/utils/connection.utils.js +321 -0
  117. package/dist/tools/utils/connection.utils.js.map +1 -0
  118. package/dist/tools/utils/node-creation.utils.d.ts +8 -0
  119. package/dist/tools/utils/node-creation.utils.js +52 -0
  120. package/dist/tools/utils/node-creation.utils.js.map +1 -0
  121. package/dist/tools/utils/node-positioning.utils.d.ts +17 -0
  122. package/dist/tools/utils/node-positioning.utils.js +87 -0
  123. package/dist/tools/utils/node-positioning.utils.js.map +1 -0
  124. package/dist/tools/utils/parameter-update.utils.d.ts +6 -0
  125. package/dist/tools/utils/parameter-update.utils.js +75 -0
  126. package/dist/tools/utils/parameter-update.utils.js.map +1 -0
  127. package/dist/types/config.d.ts +53 -0
  128. package/dist/types/config.js +3 -0
  129. package/dist/types/config.js.map +1 -0
  130. package/dist/types/connections.d.ts +30 -0
  131. package/dist/types/connections.js +3 -0
  132. package/dist/types/connections.js.map +1 -0
  133. package/dist/types/index.d.ts +8 -0
  134. package/dist/types/index.js +25 -0
  135. package/dist/types/index.js.map +1 -0
  136. package/dist/types/messages.d.ts +38 -0
  137. package/dist/types/messages.js +3 -0
  138. package/dist/types/messages.js.map +1 -0
  139. package/dist/types/nodes.d.ts +26 -0
  140. package/dist/{types.js → types/nodes.js} +1 -1
  141. package/dist/types/nodes.js.map +1 -0
  142. package/dist/types/streaming.d.ts +33 -0
  143. package/dist/types/streaming.js +3 -0
  144. package/dist/types/streaming.js.map +1 -0
  145. package/dist/types/tools.d.ts +76 -0
  146. package/dist/types/tools.js +3 -0
  147. package/dist/types/tools.js.map +1 -0
  148. package/dist/types/utils.d.ts +2 -0
  149. package/dist/types/utils.js +3 -0
  150. package/dist/types/utils.js.map +1 -0
  151. package/dist/types/workflow.d.ts +21 -0
  152. package/dist/types/workflow.js +3 -0
  153. package/dist/types/workflow.js.map +1 -0
  154. package/dist/utils/node-helpers.d.ts +2 -0
  155. package/dist/utils/node-helpers.js +54 -0
  156. package/dist/utils/node-helpers.js.map +1 -0
  157. package/dist/utils/operations-processor.d.ts +10 -0
  158. package/dist/utils/operations-processor.js +114 -0
  159. package/dist/utils/operations-processor.js.map +1 -0
  160. package/dist/utils/stream-processor.d.ts +6 -0
  161. package/dist/utils/stream-processor.js +153 -0
  162. package/dist/utils/stream-processor.js.map +1 -0
  163. package/dist/utils/tool-executor.d.ts +3 -0
  164. package/dist/utils/tool-executor.js +86 -0
  165. package/dist/utils/tool-executor.js.map +1 -0
  166. package/dist/workflow-builder-agent.d.ts +41 -0
  167. package/dist/workflow-builder-agent.js +205 -0
  168. package/dist/workflow-builder-agent.js.map +1 -0
  169. package/dist/workflow-state.d.ts +12 -7
  170. package/dist/workflow-state.js +26 -7
  171. package/dist/workflow-state.js.map +1 -1
  172. package/package.json +25 -6
  173. package/dist/ai-workflow-builder.service.d.ts +0 -21
  174. package/dist/ai-workflow-builder.service.js +0 -294
  175. package/dist/ai-workflow-builder.service.js.map +0 -1
  176. package/dist/chains/connection-composer.d.ts +0 -10
  177. package/dist/chains/connection-composer.js +0 -135
  178. package/dist/chains/connection-composer.js.map +0 -1
  179. package/dist/chains/node-selector.d.ts +0 -8
  180. package/dist/chains/node-selector.js +0 -90
  181. package/dist/chains/node-selector.js.map +0 -1
  182. package/dist/chains/nodes-composer.d.ts +0 -8
  183. package/dist/chains/nodes-composer.js +0 -451
  184. package/dist/chains/nodes-composer.js.map +0 -1
  185. package/dist/chains/validator.d.ts +0 -2
  186. package/dist/chains/validator.js +0 -67
  187. package/dist/chains/validator.js.map +0 -1
  188. package/dist/types.d.ts +0 -87
  189. 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=config.js.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=connections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connections.js","sourceRoot":"","sources":["../../src/types/connections.ts"],"names":[],"mappings":""}
@@ -0,0 +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';
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=messages.js.map
@@ -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
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
3
+ //# sourceMappingURL=nodes.js.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=streaming.js.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import type { WorkflowState } from '../workflow-state';
2
+ export type StateUpdater<TState = typeof WorkflowState.State> = Partial<TState> | ((state: TState) => Partial<TState>);
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=utils.js.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/types/workflow.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import { type INode, type INodeTypeDescription } from 'n8n-workflow';
2
+ export declare function isSubNode(nodeType: INodeTypeDescription, node?: INode): boolean;
@@ -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
+ };