@n8n/instance-ai 1.12.3 → 1.13.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 (250) hide show
  1. package/dist/agent/apply-agent-thinking.d.ts +2 -0
  2. package/dist/agent/apply-agent-thinking.js +41 -0
  3. package/dist/agent/apply-agent-thinking.js.map +1 -0
  4. package/dist/agent/instance-agent.js +10 -2
  5. package/dist/agent/instance-agent.js.map +1 -1
  6. package/dist/agent/sanitize-mcp-schemas.js +133 -125
  7. package/dist/agent/sanitize-mcp-schemas.js.map +1 -1
  8. package/dist/agent/shared-prompts.d.ts +0 -1
  9. package/dist/agent/shared-prompts.js +4 -11
  10. package/dist/agent/shared-prompts.js.map +1 -1
  11. package/dist/agent/sub-agent-debriefing.d.ts +4 -4
  12. package/dist/agent/system-prompt.js +3 -10
  13. package/dist/agent/system-prompt.js.map +1 -1
  14. package/dist/build.tsbuildinfo +1 -1
  15. package/dist/debug/run-debug-buffer.d.ts +63 -0
  16. package/dist/debug/run-debug-buffer.js +177 -0
  17. package/dist/debug/run-debug-buffer.js.map +1 -0
  18. package/dist/debug/sanitize-debug-snapshot.d.ts +2 -0
  19. package/dist/debug/sanitize-debug-snapshot.js +88 -0
  20. package/dist/debug/sanitize-debug-snapshot.js.map +1 -0
  21. package/dist/error-formatting.js +3 -5
  22. package/dist/error-formatting.js.map +1 -1
  23. package/dist/index.d.ts +5 -2
  24. package/dist/index.js +8 -3
  25. package/dist/index.js.map +1 -1
  26. package/dist/knowledge-base/build-templates-index.d.ts +1 -0
  27. package/dist/knowledge-base/build-templates-index.js +18 -2
  28. package/dist/knowledge-base/build-templates-index.js.map +1 -1
  29. package/dist/knowledge-base/materialize-knowledge-base.d.ts +2 -3
  30. package/dist/knowledge-base/materialize-knowledge-base.js +10 -7
  31. package/dist/knowledge-base/materialize-knowledge-base.js.map +1 -1
  32. package/dist/mcp/mcp-client-manager.d.ts +1 -1
  33. package/dist/mcp/mcp-client-manager.js +13 -9
  34. package/dist/mcp/mcp-client-manager.js.map +1 -1
  35. package/dist/runtime/memory-task-registry.d.ts +8 -0
  36. package/dist/runtime/memory-task-registry.js +42 -0
  37. package/dist/runtime/memory-task-registry.js.map +1 -0
  38. package/dist/runtime/resumable-stream-executor.d.ts +3 -0
  39. package/dist/runtime/resumable-stream-executor.js +171 -90
  40. package/dist/runtime/resumable-stream-executor.js.map +1 -1
  41. package/dist/runtime/run-state-registry.d.ts +2 -0
  42. package/dist/runtime/run-state-registry.js +3 -0
  43. package/dist/runtime/run-state-registry.js.map +1 -1
  44. package/dist/runtime/stream-runner.d.ts +3 -0
  45. package/dist/runtime/stream-runner.js +3 -0
  46. package/dist/runtime/stream-runner.js.map +1 -1
  47. package/dist/skills/materialize-runtime-skills.d.ts +3 -3
  48. package/dist/skills/materialize-runtime-skills.js +1 -1
  49. package/dist/skills/materialize-runtime-skills.js.map +1 -1
  50. package/dist/source-map-filter.js +0 -1
  51. package/dist/source-map-filter.js.map +1 -1
  52. package/dist/storage/terminal-outcome-storage.d.ts +2 -2
  53. package/dist/storage/workflow-loop-storage.d.ts +75 -4
  54. package/dist/stream/map-chunk.js +198 -237
  55. package/dist/stream/map-chunk.js.map +1 -1
  56. package/dist/stream/output-redaction.js +2 -2
  57. package/dist/stream/output-redaction.js.map +1 -1
  58. package/dist/stream/usage-accumulator.d.ts +90 -0
  59. package/dist/stream/usage-accumulator.js +89 -0
  60. package/dist/stream/usage-accumulator.js.map +1 -0
  61. package/dist/stream/work-summary-accumulator.d.ts +6 -6
  62. package/dist/tools/attachments/parse-file.tool.js +1 -1
  63. package/dist/tools/attachments/parse-file.tool.js.map +1 -1
  64. package/dist/tools/credentials.tool.js +4 -1
  65. package/dist/tools/credentials.tool.js.map +1 -1
  66. package/dist/tools/data-tables.tool.js +5 -2
  67. package/dist/tools/data-tables.tool.js.map +1 -1
  68. package/dist/tools/evals/column-ref-utils.d.ts +1 -2
  69. package/dist/tools/evals/column-ref-utils.js +19 -18
  70. package/dist/tools/evals/column-ref-utils.js.map +1 -1
  71. package/dist/tools/evals/describe-metric-for-workflow.service.js +7 -25
  72. package/dist/tools/evals/describe-metric-for-workflow.service.js.map +1 -1
  73. package/dist/tools/evals/detect-tool-refs.service.js +2 -1
  74. package/dist/tools/evals/detect-tool-refs.service.js.map +1 -1
  75. package/dist/tools/evals/eval-data-requirements.service.js +10 -9
  76. package/dist/tools/evals/eval-data-requirements.service.js.map +1 -1
  77. package/dist/tools/evals/evals.tool.js +2 -2
  78. package/dist/tools/evals/evals.tool.js.map +1 -1
  79. package/dist/tools/evals/extract-rows-from-history.service.js +8 -8
  80. package/dist/tools/evals/extract-rows-from-history.service.js.map +1 -1
  81. package/dist/tools/evals/generate-sample-rows.service.d.ts +2 -2
  82. package/dist/tools/evals/generate-sample-rows.service.js +30 -49
  83. package/dist/tools/evals/generate-sample-rows.service.js.map +1 -1
  84. package/dist/tools/evals/generate-tool-ref-pin-data.service.js +10 -23
  85. package/dist/tools/evals/generate-tool-ref-pin-data.service.js.map +1 -1
  86. package/dist/tools/evals/metric-catalog.js +3 -3
  87. package/dist/tools/evals/metric-catalog.js.map +1 -1
  88. package/dist/tools/executions.tool.js +10 -2
  89. package/dist/tools/executions.tool.js.map +1 -1
  90. package/dist/tools/filesystem/create-tools-from-mcp-server.d.ts +1 -1
  91. package/dist/tools/filesystem/create-tools-from-mcp-server.js +8 -10
  92. package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
  93. package/dist/tools/index.js +1 -1
  94. package/dist/tools/index.js.map +1 -1
  95. package/dist/tools/nodes/node-search-engine.js +21 -42
  96. package/dist/tools/nodes/node-search-engine.js.map +1 -1
  97. package/dist/tools/nodes/node-search-engine.types.d.ts +2 -0
  98. package/dist/tools/nodes/preferred-chat-model.d.ts +1 -0
  99. package/dist/tools/nodes/preferred-chat-model.js +19 -0
  100. package/dist/tools/nodes/preferred-chat-model.js.map +1 -0
  101. package/dist/tools/nodes/suggested-nodes-data.js +13 -3
  102. package/dist/tools/nodes/suggested-nodes-data.js.map +1 -1
  103. package/dist/tools/nodes.tool.js +32 -7
  104. package/dist/tools/nodes.tool.js.map +1 -1
  105. package/dist/tools/orchestration/complete-checkpoint.tool.js +3 -5
  106. package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -1
  107. package/dist/tools/orchestration/eval-data-agent.tool.js +2 -1
  108. package/dist/tools/orchestration/eval-data-agent.tool.js.map +1 -1
  109. package/dist/tools/orchestration/eval-setup-agent.prompt.d.ts +1 -1
  110. package/dist/tools/orchestration/eval-setup-agent.prompt.js +3 -3
  111. package/dist/tools/orchestration/report-verification-verdict.tool.d.ts +2 -2
  112. package/dist/tools/orchestration/report-verification-verdict.tool.js +1 -1
  113. package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
  114. package/dist/tools/orchestration/verify-built-workflow.tool.js +320 -307
  115. package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
  116. package/dist/tools/research.tool.js +1 -1
  117. package/dist/tools/research.tool.js.map +1 -1
  118. package/dist/tools/shared/ask-user.tool.d.ts +4 -4
  119. package/dist/tools/shared/ask-user.tool.js +6 -1
  120. package/dist/tools/shared/ask-user.tool.js.map +1 -1
  121. package/dist/tools/tool-ids.d.ts +0 -1
  122. package/dist/tools/tool-ids.js +0 -1
  123. package/dist/tools/tool-ids.js.map +1 -1
  124. package/dist/tools/workflows/build-workflow.tool.d.ts +4 -22
  125. package/dist/tools/workflows/build-workflow.tool.js +373 -317
  126. package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
  127. package/dist/tools/workflows/classify-node-destructiveness.service.d.ts +7 -0
  128. package/dist/tools/workflows/classify-node-destructiveness.service.js +307 -0
  129. package/dist/tools/workflows/classify-node-destructiveness.service.js.map +1 -0
  130. package/dist/tools/workflows/generate-simulation-fixtures.service.d.ts +8 -0
  131. package/dist/tools/workflows/generate-simulation-fixtures.service.js +95 -0
  132. package/dist/tools/workflows/generate-simulation-fixtures.service.js.map +1 -0
  133. package/dist/tools/workflows/plan-verification-simulation.d.ts +15 -0
  134. package/dist/tools/workflows/plan-verification-simulation.js +32 -0
  135. package/dist/tools/workflows/plan-verification-simulation.js.map +1 -0
  136. package/dist/tools/workflows/resolve-credentials.d.ts +0 -2
  137. package/dist/tools/workflows/resolve-credentials.js +0 -13
  138. package/dist/tools/workflows/resolve-credentials.js.map +1 -1
  139. package/dist/tools/workflows/setup-workflow.service.js +259 -215
  140. package/dist/tools/workflows/setup-workflow.service.js.map +1 -1
  141. package/dist/tools/workflows/validate-workflow.service.js +81 -66
  142. package/dist/tools/workflows/validate-workflow.service.js.map +1 -1
  143. package/dist/tools/workflows/workflow-build-context.d.ts +33 -0
  144. package/dist/tools/workflows/workflow-build-context.js +80 -0
  145. package/dist/tools/workflows/workflow-build-context.js.map +1 -0
  146. package/dist/tools/workflows/workflow-build-remediation.d.ts +11 -0
  147. package/dist/tools/workflows/workflow-build-remediation.js +89 -0
  148. package/dist/tools/workflows/workflow-build-remediation.js.map +1 -0
  149. package/dist/tools/workflows/workflow-build-reporting.d.ts +19 -0
  150. package/dist/tools/workflows/workflow-build-reporting.js +78 -0
  151. package/dist/tools/workflows/workflow-build-reporting.js.map +1 -0
  152. package/dist/tools/workflows/workflow-build-routing.d.ts +2 -0
  153. package/dist/tools/workflows/workflow-build-routing.js +83 -0
  154. package/dist/tools/workflows/workflow-build-routing.js.map +1 -0
  155. package/dist/tools/workflows/workflow-build-telemetry.d.ts +18 -0
  156. package/dist/tools/workflows/workflow-build-telemetry.js +33 -0
  157. package/dist/tools/workflows/workflow-build-telemetry.js.map +1 -0
  158. package/dist/tools/workflows/workflow-file-bindings.d.ts +28 -0
  159. package/dist/tools/workflows/workflow-file-bindings.js +104 -0
  160. package/dist/tools/workflows/workflow-file-bindings.js.map +1 -0
  161. package/dist/tools/workflows/workflow-json-utils.d.ts +3 -0
  162. package/dist/tools/workflows/workflow-json-utils.js +54 -5
  163. package/dist/tools/workflows/workflow-json-utils.js.map +1 -1
  164. package/dist/tools/workflows/workflow-source-compiler.d.ts +19 -0
  165. package/dist/tools/workflows/workflow-source-compiler.js +217 -0
  166. package/dist/tools/workflows/workflow-source-compiler.js.map +1 -0
  167. package/dist/tools/workflows/workflow-validation-warnings.d.ts +14 -0
  168. package/dist/tools/workflows/workflow-validation-warnings.js +28 -0
  169. package/dist/tools/workflows/workflow-validation-warnings.js.map +1 -0
  170. package/dist/tools/workflows.tool.js +107 -99
  171. package/dist/tools/workflows.tool.js.map +1 -1
  172. package/dist/tracing/langsmith-tracing.js +7 -7
  173. package/dist/tracing/langsmith-tracing.js.map +1 -1
  174. package/dist/tracing/trace-payloads.d.ts +2 -1
  175. package/dist/tracing/trace-payloads.js +152 -114
  176. package/dist/tracing/trace-payloads.js.map +1 -1
  177. package/dist/types.d.ts +24 -4
  178. package/dist/types.js.map +1 -1
  179. package/dist/utils/eval-agents.d.ts +0 -3
  180. package/dist/utils/eval-agents.js +3 -11
  181. package/dist/utils/eval-agents.js.map +1 -1
  182. package/dist/utils/generate-validated-json.d.ts +16 -0
  183. package/dist/utils/generate-validated-json.js +38 -0
  184. package/dist/utils/generate-validated-json.js.map +1 -0
  185. package/dist/utils/stream-helpers.d.ts +0 -1
  186. package/dist/utils/stream-helpers.js +5 -8
  187. package/dist/utils/stream-helpers.js.map +1 -1
  188. package/dist/workflow-builder/build-failure-tracker.js +25 -1
  189. package/dist/workflow-builder/build-failure-tracker.js.map +1 -1
  190. package/dist/workflow-builder/index.d.ts +0 -4
  191. package/dist/workflow-builder/index.js +1 -11
  192. package/dist/workflow-builder/index.js.map +1 -1
  193. package/dist/workflow-loop/guidance.js +14 -15
  194. package/dist/workflow-loop/guidance.js.map +1 -1
  195. package/dist/workflow-loop/runtime.js +1 -0
  196. package/dist/workflow-loop/runtime.js.map +1 -1
  197. package/dist/workflow-loop/verification-obligation.js +8 -1
  198. package/dist/workflow-loop/verification-obligation.js.map +1 -1
  199. package/dist/workflow-loop/workflow-loop-controller.js +17 -1
  200. package/dist/workflow-loop/workflow-loop-controller.js.map +1 -1
  201. package/dist/workflow-loop/workflow-loop-state.d.ts +90 -6
  202. package/dist/workflow-loop/workflow-loop-state.js +13 -1
  203. package/dist/workflow-loop/workflow-loop-state.js.map +1 -1
  204. package/dist/workspace/builder-templates-service.d.ts +5 -5
  205. package/dist/workspace/builder-templates-service.js +17 -14
  206. package/dist/workspace/builder-templates-service.js.map +1 -1
  207. package/dist/workspace/create-workspace.js +8 -1
  208. package/dist/workspace/create-workspace.js.map +1 -1
  209. package/dist/workspace/prebaked-workspace-bundle.d.ts +2 -2
  210. package/dist/workspace/prebaked-workspace-bundle.js +5 -5
  211. package/dist/workspace/prebaked-workspace-bundle.js.map +1 -1
  212. package/dist/workspace/sandbox-setup.d.ts +1 -1
  213. package/dist/workspace/sandbox-setup.js +10 -37
  214. package/dist/workspace/sandbox-setup.js.map +1 -1
  215. package/dist/workspace/snapshot-manager.d.ts +1 -1
  216. package/dist/workspace/template-telemetry.js +2 -5
  217. package/dist/workspace/template-telemetry.js.map +1 -1
  218. package/dist/workspace/workspace-files.d.ts +1 -1
  219. package/dist/workspace/workspace-files.js +3 -3
  220. package/dist/workspace/workspace-files.js.map +1 -1
  221. package/dist/workspace/workspace-manifest.js +2 -2
  222. package/dist/workspace/workspace-manifest.js.map +1 -1
  223. package/dist/workspace/workspace-paths.d.ts +4 -0
  224. package/dist/workspace/workspace-paths.js +25 -0
  225. package/dist/workspace/workspace-paths.js.map +1 -0
  226. package/knowledge-base/reference/open-ai-output-shape.md +79 -0
  227. package/knowledge-base/reference/workflow-builder-guardrails.md +15 -0
  228. package/package.json +13 -12
  229. package/skills/planned-task-runtime/SKILL.md +3 -2
  230. package/skills/planning/SKILL.md +5 -0
  231. package/skills/post-build-flow/SKILL.md +25 -9
  232. package/skills/workflow-builder/SKILL.md +89 -134
  233. package/dist/tools/workflows/submit-workflow-identity.d.ts +0 -39
  234. package/dist/tools/workflows/submit-workflow-identity.js +0 -181
  235. package/dist/tools/workflows/submit-workflow-identity.js.map +0 -1
  236. package/dist/tools/workflows/submit-workflow.tool.d.ts +0 -223
  237. package/dist/tools/workflows/submit-workflow.tool.js +0 -491
  238. package/dist/tools/workflows/submit-workflow.tool.js.map +0 -1
  239. package/dist/workflow-builder/extract-code.d.ts +0 -5
  240. package/dist/workflow-builder/extract-code.js +0 -105
  241. package/dist/workflow-builder/extract-code.js.map +0 -1
  242. package/dist/workflow-builder/parse-validate.d.ts +0 -10
  243. package/dist/workflow-builder/parse-validate.js +0 -50
  244. package/dist/workflow-builder/parse-validate.js.map +0 -1
  245. package/dist/workflow-builder/patch-code.d.ts +0 -14
  246. package/dist/workflow-builder/patch-code.js +0 -117
  247. package/dist/workflow-builder/patch-code.js.map +0 -1
  248. package/dist/workflow-builder/types.d.ts +0 -11
  249. package/dist/workflow-builder/types.js +0 -3
  250. package/dist/workflow-builder/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-files.js","sourceRoot":"","sources":["../../src/workspace/workspace-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-files.js","sourceRoot":"","sources":["../../src/workspace/workspace-files.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WORKSPACE_MANIFEST_FILE = void 0;
4
4
  exports.parseVersionedWorkspaceManifest = parseVersionedWorkspaceManifest;
5
- const stream_helpers_1 = require("../utils/stream-helpers");
5
+ const utils_1 = require("@n8n/utils");
6
6
  exports.WORKSPACE_MANIFEST_FILE = '.manifest.json';
7
7
  function parseVersionedWorkspaceManifest(raw, options) {
8
8
  let parsed;
@@ -12,7 +12,7 @@ function parseVersionedWorkspaceManifest(raw, options) {
12
12
  catch {
13
13
  return null;
14
14
  }
15
- if (!(0, stream_helpers_1.isRecord)(parsed))
15
+ if (!(0, utils_1.isRecord)(parsed))
16
16
  return null;
17
17
  if (parsed.schemaVersion !== options.schemaVersion)
18
18
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-manifest.js","sourceRoot":"","sources":["../../src/workspace/workspace-manifest.ts"],"names":[],"mappings":";;;AAgBA,0EAsBC;AAtCD,4DAAmD;AAEtC,QAAA,uBAAuB,GAAG,gBAAgB,CAAC;AAcxD,SAAgB,+BAA+B,CAC9C,GAAW,EACX,OAA2D;IAE3D,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,CAAC,IAAA,yBAAQ,EAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,MAAM,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/D,OAAO;QACN,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,IAAI;KACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"workspace-manifest.js","sourceRoot":"","sources":["../../src/workspace/workspace-manifest.ts"],"names":[],"mappings":";;;AAgBA,0EAsBC;AAtCD,sCAAsC;AAEzB,QAAA,uBAAuB,GAAG,gBAAgB,CAAC;AAcxD,SAAgB,+BAA+B,CAC9C,GAAW,EACX,OAA2D;IAE3D,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,CAAC,IAAA,gBAAQ,EAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,MAAM,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/D,OAAO;QACN,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,IAAI;KACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function normalizeWorkspaceRelativePath(path: string, options?: {
2
+ resourceLabel?: string;
3
+ }): string;
4
+ export declare function joinWorkspacePath(root: string, path: string): string;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeWorkspaceRelativePath = normalizeWorkspaceRelativePath;
4
+ exports.joinWorkspacePath = joinWorkspacePath;
5
+ function normalizeWorkspaceRelativePath(path, options = {}) {
6
+ const label = options.resourceLabel ?? 'Workspace';
7
+ const trimmed = path.trim().replace(/^\.\/+/, '');
8
+ const segments = trimmed.split('/');
9
+ const normalized = segments.filter((segment) => segment.length > 0 && segment !== '.').join('/');
10
+ if (normalized.length === 0 ||
11
+ trimmed.startsWith('/') ||
12
+ trimmed.startsWith('~/') ||
13
+ trimmed.includes('\\') ||
14
+ trimmed.includes('\0') ||
15
+ segments.some((segment) => segment === '..')) {
16
+ throw new Error(`${label} path must stay within the workspace root: ${path}`);
17
+ }
18
+ return normalized;
19
+ }
20
+ function joinWorkspacePath(root, path) {
21
+ const normalizedRoot = root.replace(/\/+$/, '') || '/';
22
+ const normalizedPath = normalizeWorkspaceRelativePath(path);
23
+ return normalizedRoot === '/' ? `/${normalizedPath}` : `${normalizedRoot}/${normalizedPath}`;
24
+ }
25
+ //# sourceMappingURL=workspace-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-paths.js","sourceRoot":"","sources":["../../src/workspace/workspace-paths.ts"],"names":[],"mappings":";;AAAA,wEAqBC;AAED,8CAKC;AA5BD,SAAgB,8BAA8B,CAC7C,IAAY,EACZ,UAAsC,EAAE;IAExC,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,IAAI,WAAW,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjG,IACC,UAAU,CAAC,MAAM,KAAK,CAAC;QACvB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QACvB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,EAC3C,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8CAA8C,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAY,EAAE,IAAY;IAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IACvD,MAAM,cAAc,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;IAE5D,OAAO,cAAc,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,cAAc,IAAI,cAAc,EAAE,CAAC;AAC9F,CAAC"}
@@ -0,0 +1,79 @@
1
+ # OpenAI node output shape
2
+
3
+ Node type: `@n8n/n8n-nodes-langchain.openAi` (default type version **2.3**)
4
+
5
+ Use this when mapping downstream fields from an OpenAI node with `$json.<field>` or
6
+ `$('NodeName').item.json.<field>`. Output shape depends on **node type version**,
7
+ resource, operation, and simplify settings — consult `nodes(action="type-definition")`
8
+ when in doubt.
9
+
10
+ ## Version and operation
11
+
12
+ | Node version | Text operation | API |
13
+ | --- | --- | --- |
14
+ | **v2+** (default) | `response` | OpenAI Responses API |
15
+ | **v1.x** | `message` | Chat Completions API |
16
+
17
+ On v2+, `operation: message` is invalid. Prefer v2 with `operation: response` for
18
+ new workflows. The sections below match the operation for each version.
19
+
20
+ Default **Simplify Output** is `true` on both paths unless noted otherwise.
21
+
22
+ ## Text → Response — v2+ (`resource: text`, `operation: response`)
23
+
24
+ With simplify enabled (default), the node emits only `message`-type output items:
25
+
26
+ ```json
27
+ {
28
+ "output": [
29
+ {
30
+ "type": "message",
31
+ "role": "assistant",
32
+ "content": [{ "type": "output_text", "text": "..." }]
33
+ }
34
+ ]
35
+ }
36
+ ```
37
+
38
+ For a simple single-message text reply, read the assistant text with
39
+ **`$json.output[0].content[0].text`**. Do not use `$json.text` — that field does
40
+ not exist on this output.
41
+
42
+ When the downstream node has a different immediate upstream (e.g. Google Sheets
43
+ after OpenAI, with form fields from an earlier node), use an explicit node
44
+ reference:
45
+
46
+ `={{ $('Generate Confirmation').first().json.output[0].content[0].text }}`
47
+
48
+ ### Caveats (response)
49
+
50
+ - **`[0]` is a convenience, not universal.** Simplified `output` can contain
51
+ multiple `message` items, and each message can have multiple `content` parts.
52
+ Pick the index that matches the text you need.
53
+ - **Structured / JSON output** (`text.format.type` of `json_object` or
54
+ `json_schema`): `content[].text` is parsed into an **object**, not a string.
55
+ - **`simplify: false`**: `$json` is the full Responses API payload (`id`, `status`,
56
+ `output`, `usage`, …). Message text is still under `output`, but `output` may
57
+ also include non-message items (reasoning, tool calls, etc.).
58
+ - **Tool-heavy runs**: if no `message`-type item exists, `output[0]` may be wrong
59
+ or missing — inspect `$json.output` or disable simplify.
60
+
61
+ ## Text → Message — v1.x only (`resource: text`, `operation: message`)
62
+
63
+ With simplify enabled (default), each choice object is emitted at the root of
64
+ `$json` (fields such as `message`, `index`, `finish_reason`). Read assistant
65
+ content from **`$json.message.content`**, not `$json.text`.
66
+
67
+ `message.content` is a **string** for plain text replies.
68
+
69
+ ### Caveats (message)
70
+
71
+ - **v1 only.** Do not use this section when configuring or referencing v2 nodes.
72
+ - **Output Content as JSON** enabled: `message.content` may be a parsed **object**,
73
+ not a string.
74
+ - **`simplify: false`**: `$json` is the full completion (`choices`, `usage`, …).
75
+ Read text from `$json.choices[0].message.content`.
76
+ - **Multiple choices** (`n` > 1): the node emits one item per choice; each item
77
+ has its own `$json.message`.
78
+ - **Tool calls**: `message.content` may be empty and `message.tool_calls` may be
79
+ populated instead.
@@ -42,6 +42,21 @@ upserting, or posting, check the actual item shape. Preserve itemized flow or
42
42
  split arrays into one item per record; do not collapse to no work because
43
43
  `$input.first().json` is a single object.
44
44
 
45
+ A top-level array response (for example Binance klines, list endpoints, search
46
+ results) is split by the HTTP Request node into one item per element, so
47
+ `$input.first().json` is a single element, not the whole array. In a Code node
48
+ that must process every row, read `$input.all().map(i => i.json)` (or iterate
49
+ the items) instead of mapping over `$input.first().json`, which would only see
50
+ the first record and produce null/empty downstream values.
51
+
52
+ When a downstream node must reason over the whole collection at once — a single
53
+ AI Agent analysing a series, an indicator/metric computed across all rows, a
54
+ summary, or a structured-output parser expecting one object — first aggregate
55
+ the split items into a single item with a Code node (`return [{ json: { rows:
56
+ $input.all().map(i => i.json) } }]`) and feed that one item in. A single-shot
57
+ Agent or output parser wired directly to N split items runs once per row and
58
+ produces malformed or unparseable output.
59
+
45
60
  For one digest, ranking, summary, count, or report, aggregate first and send one
46
61
  final item. For one action per source record, keep the stream itemized. Use
47
62
  `executeOnce: true` only for shared-context reads, report construction,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@n8n/instance-ai",
3
- "version": "1.12.3",
3
+ "version": "1.13.0",
4
4
  "main": "dist/index.js",
5
5
  "module": "src/index.ts",
6
6
  "types": "dist/index.d.ts",
@@ -32,8 +32,9 @@
32
32
  }
33
33
  },
34
34
  "dependencies": {
35
- "@daytonaio/sdk": "0.175.0",
36
- "@joplin/turndown-plugin-gfm": "^1.0.12",
35
+ "@daytona/sdk": "0.187.0",
36
+ "@joplin/turndown-plugin-gfm": "1.0.64",
37
+ "@langchain/anthropic": "1.3.27",
37
38
  "@mozilla/readability": "^0.6.0",
38
39
  "@opentelemetry/api": "^1.9.0",
39
40
  "@thednp/dommatrix": "^2.0.12",
@@ -48,20 +49,20 @@
48
49
  "p-limit": "^3.1.0",
49
50
  "pdf-parse": "2.4.5",
50
51
  "psl": "1.9.0",
51
- "turndown": "^7.2.0",
52
+ "source-map-support": "0.5.21",
53
+ "turndown": "^7.2.2",
52
54
  "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz",
53
55
  "zod": "3.25.67",
54
56
  "zod-from-json-schema-v3": "npm:zod-from-json-schema@^0.0.5",
55
- "@n8n/api-types": "1.27.1",
56
- "@n8n/agents": "0.12.1",
57
- "@n8n/workflow-sdk": "0.20.1",
58
- "@n8n/utils": "1.35.0",
59
- "n8n-workflow": "2.27.1",
60
- "@n8n/mcp-browser": "0.10.0"
57
+ "@n8n/agents": "0.13.0",
58
+ "@n8n/mcp-browser": "0.11.0",
59
+ "@n8n/api-types": "1.28.0",
60
+ "@n8n/utils": "1.36.0",
61
+ "@n8n/workflow-sdk": "0.21.0",
62
+ "n8n-workflow": "2.28.0"
61
63
  },
62
64
  "devDependencies": {
63
65
  "@ai-sdk/anthropic": "^3.0.81",
64
- "@langchain/anthropic": "1.3.27",
65
66
  "@langchain/core": "1.1.41",
66
67
  "@types/luxon": "3.2.0",
67
68
  "@types/psl": "1.1.3",
@@ -70,8 +71,8 @@
70
71
  "tsx": "^4.19.3",
71
72
  "vitest": "^4.1.1",
72
73
  "vitest-mock-extended": "^3.1.0",
73
- "@n8n/ai-workflow-builder": "1.27.2",
74
74
  "@n8n/typescript-config": "1.6.0",
75
+ "@n8n/ai-workflow-builder": "1.28.0",
75
76
  "@n8n/vitest-config": "1.15.0"
76
77
  },
77
78
  "license": "SEE LICENSE IN LICENSE.md",
@@ -117,8 +117,9 @@ exactly one checkpoint task (`checkpoint.id`, `checkpoint.title`,
117
117
  tasks, including workflow build outcomes with their `outcome.workItemId` /
118
118
  `outcome.workflowId`). **Always require structured verification evidence —
119
119
  never trust builder prose.** Before completing the checkpoint, inspect each
120
- dependent persisted workflow with `workflows(action="get-json", workflowId)` and
121
- compare the actual graph to the build task and checkpoint goal. Build/save
120
+ dependent persisted workflow with `workflows(action="get-as-code", workflowId)` or
121
+ the bound workspace source file, and compare the actual graph to the build task
122
+ and checkpoint goal. Build/save
122
123
  success is not proof of workflow quality. If the saved workflow is only a draft,
123
124
  lacks the requested outcome, or verification evidence is weak, patch the same
124
125
  workflow in this checkpoint turn and re-read/re-verify it. If a dependency outcome
@@ -140,6 +140,11 @@ with direct `data-tables` and `parse-file` calls.
140
140
  includes already-collected answers or already-discovered resources, treat them
141
141
  as authoritative and do not ask again for purpose, trigger, integrations,
142
142
  schedule, model, resource, or credential choices already listed there.
143
+ - A question is asked at most once. Once the user has answered, deferred
144
+ ("later"), or skipped it, never re-present it. On a skip or deferral, record a
145
+ sensible assumption in `planningContext.assumptions` where a default exists
146
+ (for example a default morning time for a digest), otherwise leave the detail
147
+ for the builder or setup — do not block on it and do not ask again.
143
148
  - If exactly one matching credential exists, assume it and mention the
144
149
  credential name in `planningContext.assumptions`.
145
150
  - If no matching credential exists, plan normally. The builder will mock or
@@ -55,9 +55,10 @@ workflow as a precondition for running it.
55
55
  `setupRequirement` from the tool output. If the output is missing a
56
56
  `workflowId`, explain that the build did not submit.
57
57
  - Before treating a saved workflow as done, inspect the persisted workflow
58
- with `workflows(action="get-json", workflowId)` and compare the actual
59
- graph to the user's requested outcome. Build/save success only means a
60
- workflow was saved; it does not prove the saved workflow is good.
58
+ with `workflows(action="get-as-code", workflowId)` or read the bound
59
+ workspace source file, and compare the actual graph to the user's requested
60
+ outcome. Build/save success only means a workflow was saved; it does not
61
+ prove the saved workflow is good.
61
62
  - If the persisted workflow is missing the requested outcome, has an obvious
62
63
  dead-end draft shape, or the verification evidence is weak, load the
63
64
  `workflow-builder` skill and patch the same workflow with `build-workflow`
@@ -75,18 +76,33 @@ workflow as a precondition for running it.
75
76
  lower-level verification conditions; use the readiness guidance to give a
76
77
  clear warning or manual-test note. This is a warning completion state, not
77
78
  a verified state and not an infinite blocker.
78
- 2. After verification handling, if `setupRequirement.status === "required"` and
79
+ 2. Judge coverage, not just status. A `verify-built-workflow` result with
80
+ `success: true` but a non-empty `nodesNotReached` is **partial** evidence:
81
+ the execution ended early (see `lastNodeExecuted` and `coverageNote`) and
82
+ the listed nodes — including any planned simulations — never ran.
83
+ - Most common cause: a lookup/query node returned zero items (n8n stops
84
+ downstream nodes on empty item lists). If the dead-end is a Data Table
85
+ lookup, insert a matching test row with `data-tables(action="insert-rows")`,
86
+ re-run `verify-built-workflow`, and delete the test row afterwards.
87
+ - If you cannot seed the data source, report honestly: name which nodes
88
+ were verified and which were not, and tell the user the unreached part
89
+ needs a manual test. Never claim end-to-end verification when
90
+ `nodesNotReached` is non-empty.
91
+ - Relay `simulationNote` (nodes whose output was simulated) to the user
92
+ whenever it is present.
93
+ 3. After verification handling, if `setupRequirement.status === "required"` and
79
94
  setup has not already run for this build, call `workflows(action="setup")`
80
95
  with the workflowId.
81
- 3. When `workflows(action="setup")` opens the inline setup card, the card is the
96
+ 4. When `workflows(action="setup")` opens the inline setup card, the card is the
82
97
  user-visible surface. Do not tell the user to open the editor, use the canvas,
83
98
  or click a Setup button; the user does not need to navigate anywhere.
84
- 4. When `workflows(action="setup")` returns `deferred: true`, respect the user's
99
+ 5. When `workflows(action="setup")` returns `deferred: true`, respect the user's
85
100
  decision — do not retry with `credentials(action="setup")` or any other
86
101
  setup tool. The user chose to set things up later.
87
- 5. Ask the user if they want to test the workflow (skip this if
88
- `verify-built-workflow` already proved it works end-to-end).
89
- 6. Only call `workflows(action="publish")` when the user explicitly asks to
102
+ 6. Ask the user if they want to test the workflow (skip this if
103
+ `verify-built-workflow` already proved it works end-to-end with full
104
+ coverage).
105
+ 7. Only call `workflows(action="publish")` when the user explicitly asks to
90
106
  publish. Never publish automatically.
91
107
 
92
108
  ## Credentials before build