@n8n/instance-ai 1.24.4 → 1.25.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 (270) hide show
  1. package/README.md +2 -3
  2. package/dist/agent/credential-guardrails.prompt.d.ts +1 -0
  3. package/dist/agent/credential-guardrails.prompt.js +2 -1
  4. package/dist/agent/credential-guardrails.prompt.js.map +1 -1
  5. package/dist/agent/instance-agent.js +11 -18
  6. package/dist/agent/instance-agent.js.map +1 -1
  7. package/dist/agent/shared-prompts.d.ts +2 -2
  8. package/dist/agent/shared-prompts.js +2 -2
  9. package/dist/agent/shared-prompts.js.map +1 -1
  10. package/dist/agent/sub-agent-factory.d.ts +1 -1
  11. package/dist/agent/sub-agent-factory.js +2 -1
  12. package/dist/agent/sub-agent-factory.js.map +1 -1
  13. package/dist/agent/system-prompt.d.ts +1 -0
  14. package/dist/agent/system-prompt.js +29 -4
  15. package/dist/agent/system-prompt.js.map +1 -1
  16. package/dist/build.tsbuildinfo +1 -1
  17. package/dist/constants/max-steps.d.ts +0 -1
  18. package/dist/constants/max-steps.js +0 -1
  19. package/dist/constants/max-steps.js.map +1 -1
  20. package/dist/debug/sanitize-debug-snapshot.js +3 -3
  21. package/dist/debug/sanitize-debug-snapshot.js.map +1 -1
  22. package/dist/error-formatting.js +5 -12
  23. package/dist/error-formatting.js.map +1 -1
  24. package/dist/index.d.ts +5 -10
  25. package/dist/index.js +10 -9
  26. package/dist/index.js.map +1 -1
  27. package/dist/knowledge-base/materialize-knowledge-base.js +24 -16
  28. package/dist/knowledge-base/materialize-knowledge-base.js.map +1 -1
  29. package/dist/mcp/mcp-client-manager.js +3 -4
  30. package/dist/mcp/mcp-client-manager.js.map +1 -1
  31. package/dist/runtime/background-task-manager.js +5 -5
  32. package/dist/runtime/background-task-manager.js.map +1 -1
  33. package/dist/runtime/resumable-stream-executor.js +2 -3
  34. package/dist/runtime/resumable-stream-executor.js.map +1 -1
  35. package/dist/runtime/run-state-registry.js +1 -1
  36. package/dist/runtime/run-state-registry.js.map +1 -1
  37. package/dist/skills/materialize-runtime-skills.js +30 -23
  38. package/dist/skills/materialize-runtime-skills.js.map +1 -1
  39. package/dist/skills/runtime-skills.d.ts +1 -0
  40. package/dist/skills/runtime-skills.js +11 -0
  41. package/dist/skills/runtime-skills.js.map +1 -1
  42. package/dist/skills/skill-gates.d.ts +2 -0
  43. package/dist/skills/skill-gates.js +4 -1
  44. package/dist/skills/skill-gates.js.map +1 -1
  45. package/dist/storage/workflow-loop-storage.d.ts +550 -0
  46. package/dist/storage/workflow-loop-storage.js +31 -1
  47. package/dist/storage/workflow-loop-storage.js.map +1 -1
  48. package/dist/stream/consume-with-hitl.d.ts +0 -28
  49. package/dist/stream/consume-with-hitl.js +0 -50
  50. package/dist/stream/consume-with-hitl.js.map +1 -1
  51. package/dist/tools/activity.tool.d.ts +2 -0
  52. package/dist/tools/activity.tool.js +102 -0
  53. package/dist/tools/activity.tool.js.map +1 -0
  54. package/dist/tools/credentials.tool.js +5 -3
  55. package/dist/tools/credentials.tool.js.map +1 -1
  56. package/dist/tools/executions.tool.js +47 -10
  57. package/dist/tools/executions.tool.js.map +1 -1
  58. package/dist/tools/filesystem/create-tools-from-mcp-server.js +1 -0
  59. package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
  60. package/dist/tools/index.d.ts +1 -1
  61. package/dist/tools/index.js +45 -55
  62. package/dist/tools/index.js.map +1 -1
  63. package/dist/tools/n8n-docs/schemas.js +1 -1
  64. package/dist/tools/n8n-docs/schemas.js.map +1 -1
  65. package/dist/tools/n8n-docs.tool.d.ts +2 -1
  66. package/dist/tools/n8n-docs.tool.js +11 -3
  67. package/dist/tools/n8n-docs.tool.js.map +1 -1
  68. package/dist/tools/orchestration/agent-persistence.d.ts +0 -12
  69. package/dist/tools/orchestration/agent-persistence.js +0 -34
  70. package/dist/tools/orchestration/agent-persistence.js.map +1 -1
  71. package/dist/tools/orchestration/build-agent.tool.js +3 -3
  72. package/dist/tools/orchestration/build-agent.tool.js.map +1 -1
  73. package/dist/tools/orchestration/complete-checkpoint.tool.js +1 -1
  74. package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -1
  75. package/dist/tools/orchestration/plan.tool.js +5 -1
  76. package/dist/tools/orchestration/plan.tool.js.map +1 -1
  77. package/dist/tools/orchestration/report-verification-verdict.tool.js +7 -1
  78. package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
  79. package/dist/tools/orchestration/tracing-utils.d.ts +1 -6
  80. package/dist/tools/orchestration/tracing-utils.js +0 -99
  81. package/dist/tools/orchestration/tracing-utils.js.map +1 -1
  82. package/dist/tools/orchestration/verification/analyze-result.d.ts +5 -0
  83. package/dist/tools/orchestration/verification/analyze-result.js +27 -5
  84. package/dist/tools/orchestration/verification/analyze-result.js.map +1 -1
  85. package/dist/tools/orchestration/verification/claim.d.ts +14 -0
  86. package/dist/tools/orchestration/verification/claim.js +52 -0
  87. package/dist/tools/orchestration/verification/claim.js.map +1 -0
  88. package/dist/tools/orchestration/verification/finalize-result.d.ts +5 -2
  89. package/dist/tools/orchestration/verification/finalize-result.js +21 -25
  90. package/dist/tools/orchestration/verification/finalize-result.js.map +1 -1
  91. package/dist/tools/orchestration/verification/resolve-target.js +39 -15
  92. package/dist/tools/orchestration/verification/resolve-target.js.map +1 -1
  93. package/dist/tools/orchestration/verification/resolved-parameter-warnings.d.ts +58 -0
  94. package/dist/tools/orchestration/verification/resolved-parameter-warnings.js +127 -0
  95. package/dist/tools/orchestration/verification/resolved-parameter-warnings.js.map +1 -0
  96. package/dist/tools/orchestration/verification/scripted-gate-run.d.ts +3 -0
  97. package/dist/tools/orchestration/verification/scripted-gate-run.js +22 -2
  98. package/dist/tools/orchestration/verification/scripted-gate-run.js.map +1 -1
  99. package/dist/tools/orchestration/verification/types.d.ts +8 -1
  100. package/dist/tools/orchestration/verify-built-workflow.tool.d.ts +3 -0
  101. package/dist/tools/orchestration/verify-built-workflow.tool.js +141 -18
  102. package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
  103. package/dist/tools/research.tool.js +3 -2
  104. package/dist/tools/research.tool.js.map +1 -1
  105. package/dist/tools/task-control.tool.js +8 -1
  106. package/dist/tools/task-control.tool.js.map +1 -1
  107. package/dist/tools/tool-ids.d.ts +1 -3
  108. package/dist/tools/tool-ids.js +2 -3
  109. package/dist/tools/tool-ids.js.map +1 -1
  110. package/dist/tools/web-research/sanitize-web-content.d.ts +1 -2
  111. package/dist/tools/web-research/sanitize-web-content.js +6 -19
  112. package/dist/tools/web-research/sanitize-web-content.js.map +1 -1
  113. package/dist/tools/workflows/build-workflow.tool.d.ts +12 -0
  114. package/dist/tools/workflows/build-workflow.tool.js +158 -12
  115. package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
  116. package/dist/tools/workflows/detect-unparseable-openai-schema.js +1 -1
  117. package/dist/tools/workflows/detect-unparseable-openai-schema.js.map +1 -1
  118. package/dist/tools/workflows/detect-wrong-kind-locator.js +7 -9
  119. package/dist/tools/workflows/detect-wrong-kind-locator.js.map +1 -1
  120. package/dist/tools/workflows/reconcile-simulation-plan.js +1 -1
  121. package/dist/tools/workflows/reconcile-simulation-plan.js.map +1 -1
  122. package/dist/tools/workflows/resolve-credentials.js.map +1 -1
  123. package/dist/tools/workflows/setup-items.d.ts +5 -0
  124. package/dist/tools/workflows/setup-items.js +29 -0
  125. package/dist/tools/workflows/setup-items.js.map +1 -1
  126. package/dist/tools/workflows/setup-panel-state.d.ts +31 -0
  127. package/dist/tools/workflows/setup-panel-state.js +197 -0
  128. package/dist/tools/workflows/setup-panel-state.js.map +1 -0
  129. package/dist/tools/workflows/setup-workflow.service.d.ts +3 -1
  130. package/dist/tools/workflows/setup-workflow.service.js +20 -13
  131. package/dist/tools/workflows/setup-workflow.service.js.map +1 -1
  132. package/dist/tools/workflows/validate-workflow.service.js.map +1 -1
  133. package/dist/tools/workflows/wait-gate-script.js +1 -1
  134. package/dist/tools/workflows/wait-gate-script.js.map +1 -1
  135. package/dist/tools/workflows/workflow-build-reporting.d.ts +1 -0
  136. package/dist/tools/workflows/workflow-build-reporting.js +1 -0
  137. package/dist/tools/workflows/workflow-build-reporting.js.map +1 -1
  138. package/dist/tools/workflows/workflow-build-telemetry.d.ts +5 -1
  139. package/dist/tools/workflows/workflow-build-telemetry.js +8 -0
  140. package/dist/tools/workflows/workflow-build-telemetry.js.map +1 -1
  141. package/dist/tools/workflows/workflow-file-bindings.js +0 -2
  142. package/dist/tools/workflows/workflow-file-bindings.js.map +1 -1
  143. package/dist/tools/workflows/workflow-source-compiler.js +80 -25
  144. package/dist/tools/workflows/workflow-source-compiler.js.map +1 -1
  145. package/dist/tools/workflows/workflow-validation-warnings.d.ts +13 -2
  146. package/dist/tools/workflows/workflow-validation-warnings.js +55 -1
  147. package/dist/tools/workflows/workflow-validation-warnings.js.map +1 -1
  148. package/dist/tools/workflows.tool.d.ts +1 -5
  149. package/dist/tools/workflows.tool.js +112 -136
  150. package/dist/tools/workflows.tool.js.map +1 -1
  151. package/dist/tracing/langsmith-tracing.d.ts +10 -22
  152. package/dist/tracing/langsmith-tracing.js +106 -110
  153. package/dist/tracing/langsmith-tracing.js.map +1 -1
  154. package/dist/tracing/sandbox-tracing.d.ts +17 -0
  155. package/dist/tracing/sandbox-tracing.js +60 -0
  156. package/dist/tracing/sandbox-tracing.js.map +1 -0
  157. package/dist/tracing/trace-payloads.d.ts +1 -0
  158. package/dist/tracing/trace-payloads.js +17 -4
  159. package/dist/tracing/trace-payloads.js.map +1 -1
  160. package/dist/tracing/trace-replay.js.map +1 -1
  161. package/dist/types.d.ts +53 -66
  162. package/dist/types.js.map +1 -1
  163. package/dist/utils/eval-agents.js +3 -7
  164. package/dist/utils/eval-agents.js.map +1 -1
  165. package/dist/utils/generate-validated-json.js +2 -6
  166. package/dist/utils/generate-validated-json.js.map +1 -1
  167. package/dist/workflow-loop/guidance.d.ts +1 -0
  168. package/dist/workflow-loop/guidance.js +48 -4
  169. package/dist/workflow-loop/guidance.js.map +1 -1
  170. package/dist/workflow-loop/render-claim.d.ts +6 -0
  171. package/dist/workflow-loop/render-claim.js +61 -0
  172. package/dist/workflow-loop/render-claim.js.map +1 -0
  173. package/dist/workflow-loop/setup-verification-policy.d.ts +3 -1
  174. package/dist/workflow-loop/setup-verification-policy.js +38 -0
  175. package/dist/workflow-loop/setup-verification-policy.js.map +1 -1
  176. package/dist/workflow-loop/verification-obligation.d.ts +1 -0
  177. package/dist/workflow-loop/verification-obligation.js +47 -14
  178. package/dist/workflow-loop/verification-obligation.js.map +1 -1
  179. package/dist/workflow-loop/verification-progress.d.ts +62 -0
  180. package/dist/workflow-loop/verification-progress.js +64 -0
  181. package/dist/workflow-loop/verification-progress.js.map +1 -0
  182. package/dist/workflow-loop/workflow-loop-controller.js +2 -0
  183. package/dist/workflow-loop/workflow-loop-controller.js.map +1 -1
  184. package/dist/workflow-loop/workflow-loop-state.d.ts +993 -0
  185. package/dist/workflow-loop/workflow-loop-state.js +32 -1
  186. package/dist/workflow-loop/workflow-loop-state.js.map +1 -1
  187. package/dist/workflow-loop/workflow-task-service.d.ts +6 -1
  188. package/dist/workflow-loop/workflow-task-service.js +86 -6
  189. package/dist/workflow-loop/workflow-task-service.js.map +1 -1
  190. package/dist/workspace/lazy-runtime-workspace.js +57 -9
  191. package/dist/workspace/lazy-runtime-workspace.js.map +1 -1
  192. package/dist/workspace/prebaked-workspace-bundle.js +93 -58
  193. package/dist/workspace/prebaked-workspace-bundle.js.map +1 -1
  194. package/dist/workspace/sandbox-fs.js +56 -32
  195. package/dist/workspace/sandbox-fs.js.map +1 -1
  196. package/dist/workspace/sandbox-setup.js +65 -52
  197. package/dist/workspace/sandbox-setup.js.map +1 -1
  198. package/dist/workspace/workspace-files.js +76 -57
  199. package/dist/workspace/workspace-files.js.map +1 -1
  200. package/knowledge-base/reference/workflow-builder-guardrails.md +4 -2
  201. package/package.json +12 -12
  202. package/skills/agent-builder/SKILL.md +15 -6
  203. package/skills/credential-recipe-research/SKILL.md +1 -1
  204. package/skills/debugging-executions/SKILL.md +24 -0
  205. package/skills/instance-awareness/SKILL.md +122 -0
  206. package/skills/intent-recognition/SKILL.md +83 -49
  207. package/skills/n8n-docs-assistant/SKILL.md +5 -9
  208. package/skills/planned-task-runtime/SKILL.md +2 -2
  209. package/skills/post-build-flow/SKILL.md +173 -23
  210. package/skills/workflow-builder/SKILL.md +45 -21
  211. package/dist/agent/sub-agent-briefing.d.ts +0 -20
  212. package/dist/agent/sub-agent-briefing.js +0 -39
  213. package/dist/agent/sub-agent-briefing.js.map +0 -1
  214. package/dist/tools/evals/analyze-agent-input-columns.service.d.ts +0 -6
  215. package/dist/tools/evals/analyze-agent-input-columns.service.js +0 -17
  216. package/dist/tools/evals/analyze-agent-input-columns.service.js.map +0 -1
  217. package/dist/tools/evals/apply-pin-data.service.d.ts +0 -3
  218. package/dist/tools/evals/apply-pin-data.service.js +0 -19
  219. package/dist/tools/evals/apply-pin-data.service.js.map +0 -1
  220. package/dist/tools/evals/column-ref-utils.d.ts +0 -20
  221. package/dist/tools/evals/column-ref-utils.js +0 -274
  222. package/dist/tools/evals/column-ref-utils.js.map +0 -1
  223. package/dist/tools/evals/describe-metric-for-workflow.service.d.ts +0 -6
  224. package/dist/tools/evals/describe-metric-for-workflow.service.js +0 -90
  225. package/dist/tools/evals/describe-metric-for-workflow.service.js.map +0 -1
  226. package/dist/tools/evals/detect-agent-named-refs.service.d.ts +0 -9
  227. package/dist/tools/evals/detect-agent-named-refs.service.js +0 -83
  228. package/dist/tools/evals/detect-agent-named-refs.service.js.map +0 -1
  229. package/dist/tools/evals/detect-ai-nodes.d.ts +0 -7
  230. package/dist/tools/evals/detect-ai-nodes.js +0 -75
  231. package/dist/tools/evals/detect-ai-nodes.js.map +0 -1
  232. package/dist/tools/evals/detect-tool-refs.service.d.ts +0 -7
  233. package/dist/tools/evals/detect-tool-refs.service.js +0 -66
  234. package/dist/tools/evals/detect-tool-refs.service.js.map +0 -1
  235. package/dist/tools/evals/ensure-eval-data-table.service.d.ts +0 -15
  236. package/dist/tools/evals/ensure-eval-data-table.service.js +0 -83
  237. package/dist/tools/evals/ensure-eval-data-table.service.js.map +0 -1
  238. package/dist/tools/evals/eval-data-requirements.service.d.ts +0 -20
  239. package/dist/tools/evals/eval-data-requirements.service.js +0 -187
  240. package/dist/tools/evals/eval-data-requirements.service.js.map +0 -1
  241. package/dist/tools/evals/evals.tool.d.ts +0 -45
  242. package/dist/tools/evals/evals.tool.js +0 -454
  243. package/dist/tools/evals/evals.tool.js.map +0 -1
  244. package/dist/tools/evals/extract-rows-from-history.service.d.ts +0 -17
  245. package/dist/tools/evals/extract-rows-from-history.service.js +0 -103
  246. package/dist/tools/evals/extract-rows-from-history.service.js.map +0 -1
  247. package/dist/tools/evals/format-eval-setup-task.d.ts +0 -16
  248. package/dist/tools/evals/format-eval-setup-task.js +0 -167
  249. package/dist/tools/evals/format-eval-setup-task.js.map +0 -1
  250. package/dist/tools/evals/generate-sample-rows.service.d.ts +0 -35
  251. package/dist/tools/evals/generate-sample-rows.service.js +0 -259
  252. package/dist/tools/evals/generate-sample-rows.service.js.map +0 -1
  253. package/dist/tools/evals/generate-tool-ref-pin-data.service.d.ts +0 -11
  254. package/dist/tools/evals/generate-tool-ref-pin-data.service.js +0 -112
  255. package/dist/tools/evals/generate-tool-ref-pin-data.service.js.map +0 -1
  256. package/dist/tools/evals/metric-catalog.d.ts +0 -63
  257. package/dist/tools/evals/metric-catalog.js +0 -81
  258. package/dist/tools/evals/metric-catalog.js.map +0 -1
  259. package/dist/tools/orchestration/eval-data-agent.tool.d.ts +0 -2
  260. package/dist/tools/orchestration/eval-data-agent.tool.js +0 -184
  261. package/dist/tools/orchestration/eval-data-agent.tool.js.map +0 -1
  262. package/dist/tools/orchestration/eval-setup-agent.prompt.d.ts +0 -1
  263. package/dist/tools/orchestration/eval-setup-agent.prompt.js +0 -238
  264. package/dist/tools/orchestration/eval-setup-agent.prompt.js.map +0 -1
  265. package/dist/tools/orchestration/eval-setup-agent.tool.d.ts +0 -31
  266. package/dist/tools/orchestration/eval-setup-agent.tool.js +0 -204
  267. package/dist/tools/orchestration/eval-setup-agent.tool.js.map +0 -1
  268. package/dist/tools/workflows/observed-workflow-checksums.d.ts +0 -4
  269. package/dist/tools/workflows/observed-workflow-checksums.js +0 -82
  270. package/dist/tools/workflows/observed-workflow-checksums.js.map +0 -1
@@ -1,274 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unique = unique;
4
- exports.nodeTypeEndsWith = nodeTypeEndsWith;
5
- exports.nodeHasName = nodeHasName;
6
- exports.collectStrings = collectStrings;
7
- exports.jsonFieldAccessor = jsonFieldAccessor;
8
- exports.currentJsonExpression = currentJsonExpression;
9
- exports.nodeItemJsonExpression = nodeItemJsonExpression;
10
- exports.extractJsonColumnRefs = extractJsonColumnRefs;
11
- exports.extractNamedRefMatches = extractNamedRefMatches;
12
- exports.connectionSlotTargetsNode = connectionSlotTargetsNode;
13
- exports.findAgentSubComponents = findAgentSubComponents;
14
- const is_record_1 = require("@n8n/utils/is-record");
15
- function unique(values) {
16
- return [...new Set(values.filter((value) => value.length > 0))];
17
- }
18
- function nodeTypeEndsWith(node, suffix) {
19
- return node.type === suffix || node.type.endsWith(`.${suffix}`);
20
- }
21
- function nodeHasName(node) {
22
- return typeof node.name === 'string' && node.name.length > 0;
23
- }
24
- function collectStrings(value) {
25
- if (typeof value === 'string')
26
- return [value];
27
- if (Array.isArray(value))
28
- return value.flatMap(collectStrings);
29
- if (!(0, is_record_1.isRecord)(value))
30
- return [];
31
- return Object.values(value).flatMap(collectStrings);
32
- }
33
- const JS_IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
34
- const JS_IDENTIFIER_START = /^[A-Za-z_$]$/;
35
- const JS_IDENTIFIER_PART = /^[A-Za-z0-9_$]$/;
36
- function charAt(text, index) {
37
- return text[index] ?? '';
38
- }
39
- function isIdentifierPart(char) {
40
- return JS_IDENTIFIER_PART.test(char);
41
- }
42
- function skipWhitespace(text, start) {
43
- let index = start;
44
- while (/\s/.test(charAt(text, index)))
45
- index++;
46
- return index;
47
- }
48
- function readIdentifier(text, start) {
49
- const first = charAt(text, start);
50
- if (!JS_IDENTIFIER_START.test(first))
51
- return undefined;
52
- let endIndex = start + 1;
53
- while (JS_IDENTIFIER_PART.test(charAt(text, endIndex)))
54
- endIndex++;
55
- return { value: text.slice(start, endIndex), endIndex };
56
- }
57
- function readQuotedString(text, start) {
58
- const quote = charAt(text, start);
59
- if (quote !== "'" && quote !== '"')
60
- return undefined;
61
- let value = '';
62
- for (let index = start + 1; index < text.length; index++) {
63
- const char = charAt(text, index);
64
- if (char === '\\') {
65
- const next = charAt(text, index + 1);
66
- if (next.length === 0)
67
- return undefined;
68
- value += next;
69
- index++;
70
- continue;
71
- }
72
- if (char === quote) {
73
- return { value, endIndex: index + 1 };
74
- }
75
- value += char;
76
- }
77
- return undefined;
78
- }
79
- function readFieldAccessor(text, start) {
80
- if (charAt(text, start) === '.') {
81
- const identifier = readIdentifier(text, start + 1);
82
- if (!identifier)
83
- return undefined;
84
- return { field: identifier.value, endIndex: identifier.endIndex };
85
- }
86
- if (charAt(text, start) !== '[')
87
- return undefined;
88
- const quoteStart = skipWhitespace(text, start + 1);
89
- const quoted = readQuotedString(text, quoteStart);
90
- if (!quoted)
91
- return undefined;
92
- const closeBracketIndex = skipWhitespace(text, quoted.endIndex);
93
- if (charAt(text, closeBracketIndex) !== ']')
94
- return undefined;
95
- return { field: quoted.value, endIndex: closeBracketIndex + 1 };
96
- }
97
- const ITEM_JSON_ACCESSOR_PATTERNS = [
98
- '.item.json',
99
- '.first().json',
100
- '.last().json',
101
- '.all().json',
102
- ];
103
- function readItemJsonField(text, start) {
104
- for (const accessor of ITEM_JSON_ACCESSOR_PATTERNS) {
105
- if (!text.startsWith(accessor, start))
106
- continue;
107
- return readFieldAccessor(text, start + accessor.length);
108
- }
109
- const itemMatching = /^\.itemMatching\(\d+\)\.json/.exec(text.slice(start));
110
- if (itemMatching) {
111
- return readFieldAccessor(text, start + itemMatching[0].length);
112
- }
113
- const allItem = /^\.all\(\)\[\d+\]\.json/.exec(text.slice(start));
114
- if (allItem) {
115
- return readFieldAccessor(text, start + allItem[0].length);
116
- }
117
- return undefined;
118
- }
119
- function readDirectJsonField(text, start) {
120
- if (!text.startsWith('.json', start))
121
- return undefined;
122
- return readFieldAccessor(text, start + '.json'.length);
123
- }
124
- function readItemsJsonField(text, start) {
125
- const itemIndex = /^\[\d+\]/.exec(text.slice(start));
126
- const jsonStart = start + (itemIndex?.[0].length ?? 0);
127
- return readDirectJsonField(text, jsonStart);
128
- }
129
- function readNamedNodeJsonField(text, start) {
130
- return readItemJsonField(text, start) ?? readDirectJsonField(text, start);
131
- }
132
- function jsonFieldAccessor(field) {
133
- return JS_IDENTIFIER.test(field) ? `.${field}` : `[${JSON.stringify(field)}]`;
134
- }
135
- function currentJsonExpression(field) {
136
- return `$json${jsonFieldAccessor(field)}`;
137
- }
138
- function nodeItemJsonExpression(nodeName, field) {
139
- return `$(${JSON.stringify(nodeName)}).item.json${jsonFieldAccessor(field)}`;
140
- }
141
- function extractJsonColumnRefs(text) {
142
- const refs = [];
143
- for (let index = 0; index < text.length; index++) {
144
- if (text.startsWith('$json', index) && !isIdentifierPart(charAt(text, index + 5))) {
145
- const match = readFieldAccessor(text, index + 5);
146
- if (match) {
147
- refs.push(match.field);
148
- index = match.endIndex - 1;
149
- }
150
- continue;
151
- }
152
- if (text.startsWith('$input', index) && !isIdentifierPart(charAt(text, index + 6))) {
153
- const match = readItemJsonField(text, index + 6) ?? readItemsJsonField(text, index + 6);
154
- if (match) {
155
- refs.push(match.field);
156
- index = match.endIndex - 1;
157
- }
158
- }
159
- }
160
- return unique(refs);
161
- }
162
- function readDollarNodeRef(text, start) {
163
- const quoteStart = skipWhitespace(text, start + '$('.length);
164
- const nodeName = readQuotedString(text, quoteStart);
165
- if (!nodeName)
166
- return undefined;
167
- const closeParenIndex = skipWhitespace(text, nodeName.endIndex);
168
- if (charAt(text, closeParenIndex) !== ')')
169
- return undefined;
170
- const field = readItemJsonField(text, closeParenIndex + 1);
171
- if (!field)
172
- return undefined;
173
- return {
174
- nodeName: nodeName.value,
175
- field: field.field,
176
- originalExpression: text.slice(start, field.endIndex),
177
- };
178
- }
179
- function readItemsNodeRef(text, start) {
180
- const quoteStart = skipWhitespace(text, start + '$items('.length);
181
- const nodeName = readQuotedString(text, quoteStart);
182
- if (!nodeName)
183
- return undefined;
184
- const closeParenIndex = text.indexOf(')', nodeName.endIndex);
185
- if (closeParenIndex < 0)
186
- return undefined;
187
- const field = readItemsJsonField(text, closeParenIndex + 1);
188
- if (!field)
189
- return undefined;
190
- return {
191
- nodeName: nodeName.value,
192
- field: field.field,
193
- originalExpression: text.slice(start, field.endIndex),
194
- };
195
- }
196
- function readNodeBracketRef(text, start) {
197
- const quoteStart = skipWhitespace(text, start + '$node['.length);
198
- const nodeName = readQuotedString(text, quoteStart);
199
- if (!nodeName)
200
- return undefined;
201
- const closeBracketIndex = skipWhitespace(text, nodeName.endIndex);
202
- if (charAt(text, closeBracketIndex) !== ']')
203
- return undefined;
204
- const field = readNamedNodeJsonField(text, closeBracketIndex + 1);
205
- if (!field)
206
- return undefined;
207
- return {
208
- nodeName: nodeName.value,
209
- field: field.field,
210
- originalExpression: text.slice(start, field.endIndex),
211
- };
212
- }
213
- function readNodeDotRef(text, start) {
214
- const nodeName = readIdentifier(text, start + '$node.'.length);
215
- if (!nodeName)
216
- return undefined;
217
- const field = readNamedNodeJsonField(text, nodeName.endIndex);
218
- if (!field)
219
- return undefined;
220
- return {
221
- nodeName: nodeName.value,
222
- field: field.field,
223
- originalExpression: text.slice(start, field.endIndex),
224
- };
225
- }
226
- function readNamedRefAt(text, start) {
227
- if (text.startsWith('$items(', start))
228
- return readItemsNodeRef(text, start);
229
- if (text.startsWith('$(', start))
230
- return readDollarNodeRef(text, start);
231
- if (text.startsWith('$node[', start))
232
- return readNodeBracketRef(text, start);
233
- if (text.startsWith('$node.', start))
234
- return readNodeDotRef(text, start);
235
- return undefined;
236
- }
237
- function extractNamedRefMatches(text) {
238
- const matches = [];
239
- for (let index = 0; index < text.length; index++) {
240
- const match = readNamedRefAt(text, index);
241
- if (match) {
242
- matches.push(match);
243
- index += match.originalExpression.length - 1;
244
- }
245
- }
246
- return matches;
247
- }
248
- function connectionSlotTargetsNode(slot, targetNodeName) {
249
- if (!Array.isArray(slot))
250
- return false;
251
- for (const inner of slot) {
252
- if (!Array.isArray(inner))
253
- continue;
254
- for (const conn of inner) {
255
- if ((0, is_record_1.isRecord)(conn) && conn.node === targetNodeName)
256
- return true;
257
- }
258
- }
259
- return false;
260
- }
261
- function findAgentSubComponents(workflow, agentNodeName) {
262
- const subs = new Set();
263
- for (const [sourceName, byType] of Object.entries(workflow.connections ?? {})) {
264
- if (!(0, is_record_1.isRecord)(byType))
265
- continue;
266
- for (const [connType, slot] of Object.entries(byType)) {
267
- if (connType.startsWith('ai_') && connectionSlotTargetsNode(slot, agentNodeName)) {
268
- subs.add(sourceName);
269
- }
270
- }
271
- }
272
- return [...subs];
273
- }
274
- //# sourceMappingURL=column-ref-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"column-ref-utils.js","sourceRoot":"","sources":["../../../src/tools/evals/column-ref-utils.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { WorkflowJSON } from '@n8n/workflow-sdk';
2
- import type { MetricId } from './metric-catalog';
3
- type RecommendedMetricId = Exclude<MetricId, 'helpfulness'>;
4
- export declare function describeMetricForWorkflow(workflow: WorkflowJSON, agentNodeName: string, metricId: string): string;
5
- export declare function recommendedMetricId(workflow: WorkflowJSON, agentNodeName: string): RecommendedMetricId;
6
- export {};
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.describeMetricForWorkflow = describeMetricForWorkflow;
4
- exports.recommendedMetricId = recommendedMetricId;
5
- const is_record_1 = require("@n8n/utils/is-record");
6
- const column_ref_utils_1 = require("./column-ref-utils");
7
- function findSourceNodesByConnectionType(workflow, targetNodeName, connectionType) {
8
- const sources = [];
9
- const connections = workflow.connections ?? {};
10
- for (const [sourceName, byType] of Object.entries(connections)) {
11
- if (!(0, is_record_1.isRecord)(byType))
12
- continue;
13
- if ((0, column_ref_utils_1.connectionSlotTargetsNode)(byType[connectionType], targetNodeName)) {
14
- sources.push(sourceName);
15
- }
16
- }
17
- return sources;
18
- }
19
- function getAgentToolNames(workflow, agentNodeName) {
20
- return findSourceNodesByConnectionType(workflow, agentNodeName, 'ai_tool');
21
- }
22
- function getAgentRetrieverNames(workflow, agentNodeName) {
23
- const connections = workflow.connections ?? {};
24
- const candidates = new Set();
25
- for (const [sourceName, byType] of Object.entries(connections)) {
26
- if (!(0, is_record_1.isRecord)(byType))
27
- continue;
28
- for (const [connType, slot] of Object.entries(byType)) {
29
- if (connType.startsWith('ai_') && (0, column_ref_utils_1.connectionSlotTargetsNode)(slot, agentNodeName)) {
30
- candidates.add(sourceName);
31
- }
32
- }
33
- }
34
- const nodeTypes = new Map();
35
- for (const node of workflow.nodes ?? []) {
36
- if (typeof node.name === 'string' && typeof node.type === 'string') {
37
- nodeTypes.set(node.name, node.type);
38
- }
39
- }
40
- return [...candidates].filter((name) => {
41
- const type = (nodeTypes.get(name) ?? '').toLowerCase();
42
- return /\.(retriever|vectorstore)/.test(type);
43
- });
44
- }
45
- function formatNameList(names) {
46
- if (names.length === 0)
47
- return '';
48
- if (names.length === 1)
49
- return `\`${names[0]}\``;
50
- if (names.length === 2)
51
- return `\`${names[0]}\`, \`${names[1]}\``;
52
- const last = names[names.length - 1];
53
- const head = names
54
- .slice(0, -1)
55
- .map((n) => `\`${n}\``)
56
- .join(', ');
57
- return `${head}, \`${last}\``;
58
- }
59
- function describeMetricForWorkflow(workflow, agentNodeName, metricId) {
60
- switch (metricId) {
61
- case 'correctness':
62
- return `Compares ${agentNodeName}'s response to a ground-truth column in your dataset`;
63
- case 'tool_use': {
64
- const tools = getAgentToolNames(workflow, agentNodeName);
65
- if (tools.length === 0) {
66
- return 'Add tools to your agent first to use this metric';
67
- }
68
- return `Verifies the agent picks correctly between ${formatNameList(tools)}`;
69
- }
70
- case 'relevance': {
71
- const retrievers = getAgentRetrieverNames(workflow, agentNodeName);
72
- if (retrievers.length === 0) {
73
- return 'Rates retrieved context relevance — best for RAG workflows';
74
- }
75
- return `Rates whether retrieved context from ${formatNameList(retrievers)} matches the user query`;
76
- }
77
- case 'helpfulness':
78
- return "Rates whether the agent's response addresses the user's intent";
79
- default:
80
- return '';
81
- }
82
- }
83
- function recommendedMetricId(workflow, agentNodeName) {
84
- if (getAgentToolNames(workflow, agentNodeName).length > 0)
85
- return 'tool_use';
86
- if (getAgentRetrieverNames(workflow, agentNodeName).length > 0)
87
- return 'relevance';
88
- return 'correctness';
89
- }
90
- //# sourceMappingURL=describe-metric-for-workflow.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"describe-metric-for-workflow.service.js","sourceRoot":"","sources":["../../../src/tools/evals/describe-metric-for-workflow.service.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { WorkflowJSON } from '@n8n/workflow-sdk';
2
- export interface NamedRef {
3
- nodeName: string;
4
- field: string;
5
- originalExpression: string;
6
- column: string;
7
- targetNodeName: string;
8
- }
9
- export declare function detectAgentNamedRefs(workflow: WorkflowJSON, agentNodeName: string): NamedRef[];
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.detectAgentNamedRefs = detectAgentNamedRefs;
4
- const column_ref_utils_1 = require("./column-ref-utils");
5
- function slug(name) {
6
- const result = name
7
- .toLowerCase()
8
- .replace(/[^a-z0-9]+/g, '_')
9
- .replace(/^_+|_+$/g, '');
10
- return result.length > 0 ? result : 'node';
11
- }
12
- function detectAgentNamedRefs(workflow, agentNodeName) {
13
- const node = (workflow.nodes ?? []).find((n) => (0, column_ref_utils_1.nodeHasName)(n) && n.name === agentNodeName);
14
- if (!node) {
15
- throw new Error(`Agent node "${agentNodeName}" not found in workflow`);
16
- }
17
- const targets = [agentNodeName, ...(0, column_ref_utils_1.findAgentSubComponents)(workflow, agentNodeName)];
18
- const nodesByName = new Map((workflow.nodes ?? []).filter(column_ref_utils_1.nodeHasName).map((n) => [n.name, n]));
19
- const targetMatches = new Map();
20
- for (const target of targets) {
21
- const tNode = nodesByName.get(target);
22
- if (!tNode)
23
- continue;
24
- const matches = (0, column_ref_utils_1.collectStrings)(tNode.parameters).flatMap((text) => (0, column_ref_utils_1.extractNamedRefMatches)(text));
25
- const dedup = new Map();
26
- for (const m of matches) {
27
- const key = `${m.nodeName}\x00${m.field}`;
28
- if (!dedup.has(key))
29
- dedup.set(key, m);
30
- }
31
- if (dedup.size > 0)
32
- targetMatches.set(target, [...dedup.values()]);
33
- }
34
- const allPairs = new Map();
35
- for (const matches of targetMatches.values()) {
36
- for (const m of matches) {
37
- const key = `${m.nodeName}\x00${m.field}`;
38
- if (!allPairs.has(key)) {
39
- allPairs.set(key, { nodeName: m.nodeName, field: m.field });
40
- }
41
- }
42
- }
43
- const byField = new Map();
44
- for (const p of allPairs.values()) {
45
- const arr = byField.get(p.field) ?? [];
46
- arr.push(p);
47
- byField.set(p.field, arr);
48
- }
49
- const columnsByPair = new Map();
50
- const usedColumns = new Set();
51
- function uniqueColumn(base) {
52
- let candidate = base;
53
- let suffix = 1;
54
- while (usedColumns.has(candidate)) {
55
- candidate = `${base}_${suffix}`;
56
- suffix++;
57
- }
58
- usedColumns.add(candidate);
59
- return candidate;
60
- }
61
- for (const p of allPairs.values()) {
62
- const group = byField.get(p.field) ?? [];
63
- const base = group.length === 1 ? p.field : `${slug(p.nodeName)}_${p.field}`;
64
- columnsByPair.set(`${p.nodeName}\x00${p.field}`, uniqueColumn(base));
65
- }
66
- const result = [];
67
- for (const [target, matches] of targetMatches) {
68
- for (const m of matches) {
69
- const column = columnsByPair.get(`${m.nodeName}\x00${m.field}`);
70
- if (!column)
71
- continue;
72
- result.push({
73
- nodeName: m.nodeName,
74
- field: m.field,
75
- originalExpression: m.originalExpression,
76
- column,
77
- targetNodeName: target,
78
- });
79
- }
80
- }
81
- return result;
82
- }
83
- //# sourceMappingURL=detect-agent-named-refs.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detect-agent-named-refs.service.js","sourceRoot":"","sources":["../../../src/tools/evals/detect-agent-named-refs.service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { WorkflowJSON } from '@n8n/workflow-sdk';
2
- export interface DetectAiNodesResult {
3
- isAiWorkflow: boolean;
4
- aiNodeNames: string[];
5
- alreadyConfigured: boolean;
6
- }
7
- export declare function detectAiNodes(workflow: WorkflowJSON): DetectAiNodesResult;
@@ -1,75 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.detectAiNodes = detectAiNodes;
4
- const LANGCHAIN_TYPE_PREFIX = '@n8n/n8n-nodes-langchain.';
5
- const EVALUATION_TYPES = new Set([
6
- 'n8n-nodes-base.evaluation',
7
- 'n8n-nodes-base.evaluationTrigger',
8
- ]);
9
- const ROOT_AI_TYPES = new Set([
10
- `${LANGCHAIN_TYPE_PREFIX}agent`,
11
- `${LANGCHAIN_TYPE_PREFIX}openAiAssistant`,
12
- `${LANGCHAIN_TYPE_PREFIX}chainLlm`,
13
- `${LANGCHAIN_TYPE_PREFIX}chainRetrievalQa`,
14
- `${LANGCHAIN_TYPE_PREFIX}chainSummarization`,
15
- `${LANGCHAIN_TYPE_PREFIX}informationExtractor`,
16
- `${LANGCHAIN_TYPE_PREFIX}sentimentAnalysis`,
17
- `${LANGCHAIN_TYPE_PREFIX}textClassifier`,
18
- `${LANGCHAIN_TYPE_PREFIX}openAi`,
19
- `${LANGCHAIN_TYPE_PREFIX}anthropic`,
20
- `${LANGCHAIN_TYPE_PREFIX}googleGemini`,
21
- `${LANGCHAIN_TYPE_PREFIX}ollama`,
22
- `${LANGCHAIN_TYPE_PREFIX}alibabaCloud`,
23
- `${LANGCHAIN_TYPE_PREFIX}miniMax`,
24
- `${LANGCHAIN_TYPE_PREFIX}moonshot`,
25
- ]);
26
- const SUB_COMPONENT_PREFIXES = [
27
- 'lm',
28
- 'embedding',
29
- 'memory',
30
- 'tool',
31
- 'outputparser',
32
- 'document',
33
- 'textsplitter',
34
- 'vectorstore',
35
- 'retriever',
36
- 'chattrigger',
37
- 'manualchattrigger',
38
- ];
39
- function isRootAgentType(type) {
40
- return ROOT_AI_TYPES.has(type);
41
- }
42
- function isAnyLangchainNode(type) {
43
- return type.startsWith(LANGCHAIN_TYPE_PREFIX);
44
- }
45
- function isLikelySubComponent(type) {
46
- if (!type.startsWith(LANGCHAIN_TYPE_PREFIX))
47
- return false;
48
- const localPart = type.slice(LANGCHAIN_TYPE_PREFIX.length).toLowerCase();
49
- return SUB_COMPONENT_PREFIXES.some((prefix) => localPart.startsWith(prefix));
50
- }
51
- function detectAiNodes(workflow) {
52
- const aiNodeNames = [];
53
- const fallbackCandidates = [];
54
- let alreadyConfigured = false;
55
- for (const node of workflow.nodes ?? []) {
56
- if (!node.name)
57
- continue;
58
- if (isRootAgentType(node.type)) {
59
- aiNodeNames.push(node.name);
60
- }
61
- else if (isAnyLangchainNode(node.type) && !isLikelySubComponent(node.type)) {
62
- fallbackCandidates.push(node.name);
63
- }
64
- if (EVALUATION_TYPES.has(node.type)) {
65
- alreadyConfigured = true;
66
- }
67
- }
68
- const finalAiNodeNames = aiNodeNames.length > 0 ? aiNodeNames : fallbackCandidates;
69
- return {
70
- isAiWorkflow: finalAiNodeNames.length > 0,
71
- aiNodeNames: finalAiNodeNames,
72
- alreadyConfigured,
73
- };
74
- }
75
- //# sourceMappingURL=detect-ai-nodes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detect-ai-nodes.js","sourceRoot":"","sources":["../../../src/tools/evals/detect-ai-nodes.ts"],"names":[],"mappings":";;;AAEA,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAC1D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS;IACxC,2BAA2B;IAC3B,kCAAkC;CAClC,CAAC,CAAC;AASH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS;IAErC,GAAG,qBAAqB,OAAO;IAC/B,GAAG,qBAAqB,iBAAiB;IACzC,GAAG,qBAAqB,UAAU;IAClC,GAAG,qBAAqB,kBAAkB;IAC1C,GAAG,qBAAqB,oBAAoB;IAC5C,GAAG,qBAAqB,sBAAsB;IAC9C,GAAG,qBAAqB,mBAAmB;IAC3C,GAAG,qBAAqB,gBAAgB;IAGxC,GAAG,qBAAqB,QAAQ;IAChC,GAAG,qBAAqB,WAAW;IACnC,GAAG,qBAAqB,cAAc;IACtC,GAAG,qBAAqB,QAAQ;IAChC,GAAG,qBAAqB,cAAc;IACtC,GAAG,qBAAqB,SAAS;IACjC,GAAG,qBAAqB,UAAU;CAClC,CAAC,CAAC;AAKH,MAAM,sBAAsB,GAAG;IAC9B,IAAI;IACJ,WAAW;IACX,QAAQ;IACR,MAAM;IACN,cAAc;IACd,UAAU;IACV,cAAc;IACd,aAAa;IACb,WAAW;IACX,aAAa;IACb,mBAAmB;CACnB,CAAC;AAQF,SAAS,eAAe,CAAC,IAAY;IACpC,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAC/C,CAAC;AAKD,SAAS,oBAAoB,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACzE,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,uBAA8B,QAAsB;IACnD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,SAAS;QACzB,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAI9E,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,iBAAiB,GAAG,IAAI,CAAC;QAC1B,CAAC;IACF,CAAC;IAID,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAEnF,OAAO;QACN,YAAY,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC;QACzC,WAAW,EAAE,gBAAgB;QAC7B,iBAAiB;KACjB,CAAC;AACH,CAAC"}
@@ -1,7 +0,0 @@
1
- import type { WorkflowJSON } from '@n8n/workflow-sdk';
2
- export interface ToolRef {
3
- sourceNodeName: string;
4
- field: string;
5
- toolNodeName: string;
6
- }
7
- export declare function detectToolRefs(workflow: WorkflowJSON, agentNodeName: string): ToolRef[];
@@ -1,66 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.detectToolRefs = detectToolRefs;
4
- const is_record_1 = require("@n8n/utils/is-record");
5
- const column_ref_utils_1 = require("./column-ref-utils");
6
- function reachableDownstreamMain(workflow, startNodeName) {
7
- const reached = new Set();
8
- const queue = [startNodeName];
9
- while (queue.length > 0) {
10
- const current = queue.shift();
11
- const slot = workflow.connections?.[current]?.main;
12
- if (!Array.isArray(slot))
13
- continue;
14
- for (const inner of slot) {
15
- if (!Array.isArray(inner))
16
- continue;
17
- for (const conn of inner) {
18
- if (!(0, is_record_1.isRecord)(conn) || typeof conn.node !== 'string')
19
- continue;
20
- if (reached.has(conn.node))
21
- continue;
22
- reached.add(conn.node);
23
- queue.push(conn.node);
24
- }
25
- }
26
- }
27
- return reached;
28
- }
29
- function detectToolRefs(workflow, agentNodeName) {
30
- const agent = (workflow.nodes ?? []).find((n) => (0, column_ref_utils_1.nodeHasName)(n) && n.name === agentNodeName);
31
- if (!agent) {
32
- throw new Error(`Agent node "${agentNodeName}" not found in workflow`);
33
- }
34
- const subComponents = (0, column_ref_utils_1.findAgentSubComponents)(workflow, agentNodeName);
35
- if (subComponents.length === 0)
36
- return [];
37
- const nodesByName = new Map((workflow.nodes ?? []).filter(column_ref_utils_1.nodeHasName).map((n) => [n.name, n]));
38
- const downstream = reachableDownstreamMain(workflow, agentNodeName);
39
- const seen = new Set();
40
- const result = [];
41
- for (const toolNodeName of subComponents) {
42
- const toolNode = nodesByName.get(toolNodeName);
43
- if (!toolNode)
44
- continue;
45
- const matches = (0, column_ref_utils_1.collectStrings)(toolNode.parameters).flatMap((text) => (0, column_ref_utils_1.extractNamedRefMatches)(text));
46
- for (const m of matches) {
47
- if (m.nodeName === agentNodeName)
48
- continue;
49
- if (downstream.has(m.nodeName))
50
- continue;
51
- if (!nodesByName.has(m.nodeName))
52
- continue;
53
- const key = `${toolNodeName}\x00${m.nodeName}\x00${m.field}`;
54
- if (seen.has(key))
55
- continue;
56
- seen.add(key);
57
- result.push({
58
- sourceNodeName: m.nodeName,
59
- field: m.field,
60
- toolNodeName,
61
- });
62
- }
63
- }
64
- return result;
65
- }
66
- //# sourceMappingURL=detect-tool-refs.service.js.map