@n8n/agents 0.20.1 → 0.21.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 (91) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/index.d.ts +2 -2
  3. package/dist/index.js +4 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/runtime/loop/agent-runtime.d.ts +2 -0
  6. package/dist/runtime/loop/agent-runtime.js +26 -2
  7. package/dist/runtime/loop/agent-runtime.js.map +1 -1
  8. package/dist/runtime/loop/generate-sink.js +1 -0
  9. package/dist/runtime/loop/generate-sink.js.map +1 -1
  10. package/dist/runtime/loop/run-output-sink.d.ts +1 -0
  11. package/dist/runtime/loop/runtime-context.d.ts +1 -0
  12. package/dist/runtime/loop/runtime-context.js +1 -0
  13. package/dist/runtime/loop/runtime-context.js.map +1 -1
  14. package/dist/runtime/loop/runtime-helpers.d.ts +1 -0
  15. package/dist/runtime/loop/runtime-helpers.js +12 -7
  16. package/dist/runtime/loop/runtime-helpers.js.map +1 -1
  17. package/dist/runtime/loop/stream-sink.js +1 -0
  18. package/dist/runtime/loop/stream-sink.js.map +1 -1
  19. package/dist/runtime/mcp/mcp-connection.js +4 -1
  20. package/dist/runtime/mcp/mcp-connection.js.map +1 -1
  21. package/dist/runtime/memory/memory-orchestrator.js +3 -2
  22. package/dist/runtime/memory/memory-orchestrator.js.map +1 -1
  23. package/dist/runtime/model/model-factory.js +68 -23
  24. package/dist/runtime/model/model-factory.js.map +1 -1
  25. package/dist/runtime/model/prompt-cache.d.ts +1 -0
  26. package/dist/runtime/model/prompt-cache.js +8 -4
  27. package/dist/runtime/model/prompt-cache.js.map +1 -1
  28. package/dist/runtime/model/provider-credentials.d.ts +35 -0
  29. package/dist/runtime/model/provider-credentials.js +9 -0
  30. package/dist/runtime/model/provider-credentials.js.map +1 -1
  31. package/dist/runtime/model/provider-quirks.d.ts +3 -0
  32. package/dist/runtime/model/provider-quirks.js +50 -20
  33. package/dist/runtime/model/provider-quirks.js.map +1 -1
  34. package/dist/runtime/model/raw-usage.js +1 -0
  35. package/dist/runtime/model/raw-usage.js.map +1 -1
  36. package/dist/runtime/state/run-state.js +1 -6
  37. package/dist/runtime/state/run-state.js.map +1 -1
  38. package/dist/runtime/tools/delegate-sub-agent-tool.d.ts +2 -1
  39. package/dist/runtime/tools/delegate-sub-agent-tool.js +3 -0
  40. package/dist/runtime/tools/delegate-sub-agent-tool.js.map +1 -1
  41. package/dist/runtime/tools/tool-call-executor.d.ts +3 -0
  42. package/dist/runtime/tools/tool-call-executor.js +16 -4
  43. package/dist/runtime/tools/tool-call-executor.js.map +1 -1
  44. package/dist/runtime/tools/tool-result-guard.d.ts +16 -4
  45. package/dist/runtime/tools/tool-result-guard.js +94 -15
  46. package/dist/runtime/tools/tool-result-guard.js.map +1 -1
  47. package/dist/sdk/agent.js +3 -0
  48. package/dist/sdk/agent.js.map +1 -1
  49. package/dist/sdk/catalog.js +1 -0
  50. package/dist/sdk/catalog.js.map +1 -1
  51. package/dist/sdk/guardrails/redactor.d.ts +1 -0
  52. package/dist/sdk/guardrails/redactor.js +14 -3
  53. package/dist/sdk/guardrails/redactor.js.map +1 -1
  54. package/dist/types/index.d.ts +1 -1
  55. package/dist/types/index.js.map +1 -1
  56. package/dist/types/sdk/agent.d.ts +3 -1
  57. package/dist/types/sdk/provider.d.ts +8 -5
  58. package/dist/types/sdk/tool.d.ts +2 -1
  59. package/dist/workspace/filesystem/n8n-sandbox-filesystem.d.ts +1 -1
  60. package/dist/workspace/filesystem/n8n-sandbox-filesystem.js +1 -1
  61. package/dist/workspace/filesystem/n8n-sandbox-filesystem.js.map +1 -1
  62. package/dist/workspace/index.d.ts +3 -1
  63. package/dist/workspace/index.js +8 -1
  64. package/dist/workspace/index.js.map +1 -1
  65. package/dist/workspace/sandbox/n8n-sandbox-sandbox.d.ts +2 -0
  66. package/dist/workspace/sandbox/n8n-sandbox-sandbox.js +21 -2
  67. package/dist/workspace/sandbox/n8n-sandbox-sandbox.js.map +1 -1
  68. package/dist/workspace/sandbox/workspace-root.d.ts +1 -0
  69. package/dist/workspace/sandbox/workspace-root.js +9 -12
  70. package/dist/workspace/sandbox/workspace-root.js.map +1 -1
  71. package/dist/workspace/scoped-workspace.d.ts +2 -0
  72. package/dist/workspace/scoped-workspace.js +135 -0
  73. package/dist/workspace/scoped-workspace.js.map +1 -0
  74. package/dist/workspace/tool-result-storage.d.ts +12 -0
  75. package/dist/workspace/tool-result-storage.js +89 -0
  76. package/dist/workspace/tool-result-storage.js.map +1 -0
  77. package/dist/workspace/tools/execute-command.js +0 -2
  78. package/dist/workspace/tools/execute-command.js.map +1 -1
  79. package/dist/workspace/tools/{batch-str-replace-file.d.ts → read-tool-result.d.ts} +1 -1
  80. package/dist/workspace/tools/read-tool-result.js +321 -0
  81. package/dist/workspace/tools/read-tool-result.js.map +1 -0
  82. package/dist/workspace/tools/str-replace-file.js +28 -11
  83. package/dist/workspace/tools/str-replace-file.js.map +1 -1
  84. package/dist/workspace/tools/workspace-tools.d.ts +1 -0
  85. package/dist/workspace/tools/workspace-tools.js +10 -2
  86. package/dist/workspace/tools/workspace-tools.js.map +1 -1
  87. package/dist/workspace/types.d.ts +0 -1
  88. package/dist/workspace/types.js.map +1 -1
  89. package/package.json +12 -11
  90. package/dist/workspace/tools/batch-str-replace-file.js +0 -76
  91. package/dist/workspace/tools/batch-str-replace-file.js.map +0 -1
@@ -5,15 +5,31 @@ const generic_text_editor_1 = require("@n8n/ai-utilities/generic-text-editor");
5
5
  const zod_1 = require("zod");
6
6
  const abort_1 = require("../../sdk/abort");
7
7
  const tool_1 = require("../../sdk/tool");
8
- const inputSchema = zod_1.z.object({
9
- path: zod_1.z.string().describe('Path to the file to edit'),
8
+ const strReplacementSchema = zod_1.z.object({
10
9
  old_str: zod_1.z.string().describe('Exact text to replace. Must match exactly and be unique.'),
11
10
  new_str: zod_1.z.string().describe('Replacement text to write in place of old_str.'),
12
11
  });
12
+ const inputSchema = zod_1.z.object({
13
+ path: zod_1.z.string().describe('Path to the file to edit'),
14
+ replacements: zod_1.z
15
+ .array(strReplacementSchema)
16
+ .min(1)
17
+ .describe('Ordered exact string replacements applied atomically.'),
18
+ });
19
+ const replaceResultSchema = zod_1.z.object({
20
+ index: zod_1.z.number().int(),
21
+ old_str: zod_1.z.string(),
22
+ status: zod_1.z.enum(['success', 'failed', 'not_attempted']),
23
+ error: zod_1.z.string().optional(),
24
+ });
13
25
  const outputSchema = zod_1.z.object({
14
- success: zod_1.z.boolean().describe('Whether the edit was applied'),
26
+ success: zod_1.z.boolean().describe('Whether all replacements were applied'),
15
27
  result: zod_1.z.string().optional().describe('Success message'),
16
- error: zod_1.z.string().optional().describe('Error message when the edit could not be applied'),
28
+ error: zod_1.z.string().optional().describe('Error message when replacements could not be applied'),
29
+ results: zod_1.z
30
+ .array(replaceResultSchema)
31
+ .optional()
32
+ .describe('Per-replacement statuses for a failed edit'),
17
33
  });
18
34
  function createErrorOutput(error) {
19
35
  return {
@@ -21,9 +37,12 @@ function createErrorOutput(error) {
21
37
  error: error instanceof Error ? error.message : 'Unknown workspace edit error.',
22
38
  };
23
39
  }
40
+ function isBatchReplaceResult(result) {
41
+ return Array.isArray(result);
42
+ }
24
43
  function createStrReplaceFileTool(filesystem) {
25
44
  return new tool_1.Tool('workspace_str_replace_file')
26
- .description('Replace one exact, unique text match in a workspace file without rewriting the whole file.')
45
+ .description('Apply one or more exact text replacements to a workspace file atomically. If any replacement fails, no changes are written.')
27
46
  .input(inputSchema)
28
47
  .output(outputSchema)
29
48
  .handler(async (input, ctx) => {
@@ -33,12 +52,10 @@ function createStrReplaceFileTool(filesystem) {
33
52
  abortSignal: ctx.abortSignal,
34
53
  });
35
54
  const editor = new generic_text_editor_1.TextEditorDocument({ initialText: content.toString() });
36
- const result = editor.execute({
37
- command: 'str_replace',
38
- path: input.path,
39
- old_str: input.old_str,
40
- new_str: input.new_str,
41
- });
55
+ const result = editor.executeBatch(input.replacements);
56
+ if (isBatchReplaceResult(result)) {
57
+ return { success: false, error: 'String replacement failed.', results: result };
58
+ }
42
59
  const editedContent = editor.getText();
43
60
  if (editedContent === null) {
44
61
  throw new Error(`File "${input.path}" is not loaded.`);
@@ -1 +1 @@
1
- {"version":3,"file":"str-replace-file.js","sourceRoot":"","sources":["../../../src/workspace/tools/str-replace-file.ts"],"names":[],"mappings":";;;AAAA,+EAA2E;AAC3E,6BAAwB;AAExB,2CAA+C;AAC/C,yCAAsC;AAItC,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACrD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACxF,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;CAC9E,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC7D,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACzD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CACzF,CAAC,CAAC;AAIH,SAAS,iBAAiB,CAAC,KAAc;IACxC,OAAO;QACN,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B;KAC/E,CAAC;AACH,CAAC;AAED,kCAAyC,UAA+B;IACvE,OAAO,IAAI,WAAI,CAAC,4BAA4B,CAAC;SAC3C,WAAW,CACX,4FAA4F,CAC5F;SACA,KAAK,CAAC,WAAW,CAAC;SAClB,MAAM,CAAC,YAAY,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC7B,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;gBACrD,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,GAAG,CAAC,WAAW;aAC5B,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,wCAAkB,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC7B,OAAO,EAAE,aAAa;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE;gBACrD,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,GAAG,CAAC,WAAW;aAC5B,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,IAAA,oBAAY,EAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YACrC,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACF,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"str-replace-file.js","sourceRoot":"","sources":["../../../src/workspace/tools/str-replace-file.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,6 @@ interface WorkspaceLike {
4
4
  filesystem?: WorkspaceFilesystem;
5
5
  sandbox?: WorkspaceSandbox;
6
6
  }
7
+ export declare const CORE_WORKSPACE_TOOL_NAMES: ReadonlySet<string>;
7
8
  export declare function createWorkspaceTools(workspace: WorkspaceLike): BuiltTool[];
8
9
  export {};
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CORE_WORKSPACE_TOOL_NAMES = void 0;
3
4
  exports.createWorkspaceTools = createWorkspaceTools;
4
5
  const append_file_1 = require("./append-file");
5
- const batch_str_replace_file_1 = require("./batch-str-replace-file");
6
6
  const copy_file_1 = require("./copy-file");
7
7
  const delete_file_1 = require("./delete-file");
8
8
  const execute_command_1 = require("./execute-command");
@@ -12,15 +12,23 @@ const mkdir_1 = require("./mkdir");
12
12
  const move_file_1 = require("./move-file");
13
13
  const process_tools_1 = require("./process-tools");
14
14
  const read_file_1 = require("./read-file");
15
+ const read_tool_result_1 = require("./read-tool-result");
15
16
  const rmdir_1 = require("./rmdir");
16
17
  const str_replace_file_1 = require("./str-replace-file");
17
18
  const write_file_1 = require("./write-file");
19
+ exports.CORE_WORKSPACE_TOOL_NAMES = new Set([
20
+ 'workspace_read_file',
21
+ 'workspace_read_tool_result',
22
+ 'workspace_write_file',
23
+ 'workspace_str_replace_file',
24
+ 'workspace_execute_command',
25
+ ]);
18
26
  function createWorkspaceTools(workspace) {
19
27
  const tools = [];
20
28
  if (workspace.filesystem) {
21
29
  tools.push((0, read_file_1.createReadFileTool)(workspace.filesystem));
30
+ tools.push((0, read_tool_result_1.createReadToolResultTool)(workspace.filesystem));
22
31
  tools.push((0, str_replace_file_1.createStrReplaceFileTool)(workspace.filesystem));
23
- tools.push((0, batch_str_replace_file_1.createBatchStrReplaceFileTool)(workspace.filesystem));
24
32
  tools.push((0, write_file_1.createWriteFileTool)(workspace.filesystem));
25
33
  tools.push((0, list_files_1.createListFilesTool)(workspace.filesystem));
26
34
  tools.push((0, file_stat_1.createFileStatTool)(workspace.filesystem));
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-tools.js","sourceRoot":"","sources":["../../../src/workspace/tools/workspace-tools.ts"],"names":[],"mappings":";;;AAEA,+CAAqD;AACrD,qEAAyE;AACzE,2CAAiD;AACjD,+CAAqD;AACrD,uDAA6D;AAC7D,2CAAiD;AACjD,6CAAmD;AACnD,mCAA0C;AAC1C,2CAAiD;AACjD,mDAAiF;AACjF,2CAAiD;AACjD,mCAA0C;AAC1C,yDAA8D;AAC9D,6CAAmD;AAOnD,8BAAqC,SAAwB;IAC5D,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,IAAA,8BAAkB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,IAAA,2CAAwB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,IAAA,sDAA6B,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,IAAA,gCAAmB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,IAAA,gCAAmB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,IAAA,8BAAkB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,IAAA,kCAAoB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,IAAA,kCAAoB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,IAAA,8BAAkB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,IAAA,8BAAkB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,IAAA,0CAAwB,EAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,IAAA,uCAAuB,EAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,IAAA,qCAAqB,EAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"workspace-tools.js","sourceRoot":"","sources":["../../../src/workspace/tools/workspace-tools.ts"],"names":[],"mappings":";;;;AAEA,+CAAqD;AACrD,2CAAiD;AACjD,+CAAqD;AACrD,uDAA6D;AAC7D,2CAAiD;AACjD,6CAAmD;AACnD,mCAA0C;AAC1C,2CAAiD;AACjD,mDAAiF;AACjF,2CAAiD;AACjD,yDAA8D;AAC9D,mCAA0C;AAC1C,yDAA8D;AAC9D,6CAAmD;AAOtC,QAAA,yBAAyB,GAAwB,IAAI,GAAG,CAAC;IACrE,qBAAqB;IACrB,4BAA4B;IAC5B,sBAAsB;IACtB,4BAA4B;IAC5B,2BAA2B;CAC3B,CAAC,CAAC;AAEH,8BAAqC,SAAwB;IAC5D,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,IAAA,8BAAkB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,IAAA,2CAAwB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,IAAA,2CAAwB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,IAAA,gCAAmB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,IAAA,gCAAmB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,IAAA,8BAAkB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,IAAA,kCAAoB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,IAAA,kCAAoB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,IAAA,8BAAkB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,IAAA,8BAAkB,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,IAAA,0CAAwB,EAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,IAAA,uCAAuB,EAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,IAAA,qCAAqB,EAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
@@ -107,7 +107,6 @@ export interface WorkspaceSandbox {
107
107
  readonly provider: string;
108
108
  status: ProviderStatus;
109
109
  getInstructions?(): string;
110
- getDefaultCommandEnv?(): NodeJS.ProcessEnv;
111
110
  executeCommand?(command: string, args?: string[], options?: ExecuteCommandOptions): Promise<CommandResult>;
112
111
  readonly processes?: SandboxProcessManager;
113
112
  start?(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/workspace/types.ts"],"names":[],"mappings":";;;AAqKA,qCAAiE;AAAxD,gHAAA,qBAAqB,OAAA;AAAE,wGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/workspace/types.ts"],"names":[],"mappings":";;;AAoKA,qCAAiE;AAAxD,gHAAA,qBAAqB,OAAA;AAAE,wGAAA,aAAa,OAAA"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@n8n/agents",
3
- "version": "0.20.1",
3
+ "version": "0.21.0",
4
4
  "description": "AI agent SDK for n8n's code-first execution engine",
5
5
  "engines": {
6
- "node": ">=22.22"
6
+ "node": ">=24.0.0"
7
7
  },
8
8
  "main": "dist/index.js",
9
9
  "module": "dist/index.js",
@@ -75,18 +75,19 @@
75
75
  ],
76
76
  "dependencies": {
77
77
  "@ai-sdk/amazon-bedrock": "^5.0.31",
78
- "@ai-sdk/anthropic": "^4.0.27",
78
+ "@ai-sdk/anthropic": "^4.0.32",
79
79
  "@ai-sdk/azure": "^4.0.21",
80
80
  "@ai-sdk/cohere": "^4.0.12",
81
81
  "@ai-sdk/deepseek": "^3.0.13",
82
- "@ai-sdk/gateway": "^4.0.37",
82
+ "@ai-sdk/gateway": "^4.0.42",
83
83
  "@ai-sdk/google": "^4.0.24",
84
+ "@ai-sdk/google-vertex": "^5.0.47",
84
85
  "@ai-sdk/groq": "^4.0.13",
85
86
  "@ai-sdk/mistral": "^4.0.14",
86
87
  "@ai-sdk/openai": "^4.0.20",
87
88
  "@ai-sdk/openai-compatible": "^3.0.14",
88
- "@ai-sdk/otel": "^1.0.48",
89
- "@ai-sdk/provider-utils": "^5.0.18",
89
+ "@ai-sdk/otel": "^1.0.54",
90
+ "@ai-sdk/provider-utils": "^5.0.22",
90
91
  "@ai-sdk/xai": "^4.0.18",
91
92
  "@daytona/sdk": "0.187.0",
92
93
  "@modelcontextprotocol/sdk": "1.26.0",
@@ -95,14 +96,14 @@
95
96
  "@opentelemetry/exporter-trace-otlp-http": ">=0.50.0",
96
97
  "@opentelemetry/sdk-trace-base": ">=1.0.0",
97
98
  "@opentelemetry/sdk-trace-node": ">=1.0.0",
98
- "ai": "^7.0.48",
99
+ "ai": "^7.0.54",
99
100
  "ajv": "^8.18.0",
100
101
  "langsmith": "0.6.0",
101
102
  "undici": "^7.29.0",
102
103
  "yaml": "2.8.3",
103
104
  "zod-to-json-schema": "3.23.3",
104
- "@n8n/ai-utilities": "0.28.1",
105
- "@n8n/utils": "1.43.0"
105
+ "@n8n/ai-utilities": "0.29.0",
106
+ "@n8n/utils": "1.44.0"
106
107
  },
107
108
  "peerDependencies": {
108
109
  "@pinecone-database/pinecone": "^5.0.2",
@@ -156,8 +157,8 @@
156
157
  "vitest": "^4.1.9",
157
158
  "vitest-mock-extended": "^3.1.0",
158
159
  "zod": "3.25.76",
159
- "@n8n/vitest-config": "1.20.0",
160
- "@n8n/typescript-config": "1.9.0"
160
+ "@n8n/typescript-config": "1.10.0",
161
+ "@n8n/vitest-config": "1.21.0"
161
162
  },
162
163
  "license": "SEE LICENSE IN LICENSE.md",
163
164
  "homepage": "https://n8n.io",
@@ -1,76 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createBatchStrReplaceFileTool = createBatchStrReplaceFileTool;
4
- const generic_text_editor_1 = require("@n8n/ai-utilities/generic-text-editor");
5
- const zod_1 = require("zod");
6
- const abort_1 = require("../../sdk/abort");
7
- const tool_1 = require("../../sdk/tool");
8
- const strReplacementSchema = zod_1.z.object({
9
- old_str: zod_1.z.string().describe('Exact text to replace. Must match exactly and be unique.'),
10
- new_str: zod_1.z.string().describe('Replacement text to write in place of old_str.'),
11
- });
12
- const inputSchema = zod_1.z.object({
13
- path: zod_1.z.string().describe('Path to the file to edit'),
14
- replacements: zod_1.z
15
- .array(strReplacementSchema)
16
- .describe('Ordered exact string replacements applied atomically.'),
17
- });
18
- const batchReplaceResultSchema = zod_1.z.object({
19
- index: zod_1.z.number().int(),
20
- old_str: zod_1.z.string(),
21
- status: zod_1.z.enum(['success', 'failed', 'not_attempted']),
22
- error: zod_1.z.string().optional(),
23
- });
24
- const outputSchema = zod_1.z.object({
25
- success: zod_1.z.boolean().describe('Whether all replacements were applied'),
26
- result: zod_1.z.string().optional().describe('Success message'),
27
- error: zod_1.z.string().optional().describe('Error message when replacements could not be applied'),
28
- results: zod_1.z
29
- .array(batchReplaceResultSchema)
30
- .optional()
31
- .describe('Per-replacement statuses for a failed batch edit'),
32
- });
33
- function createErrorOutput(error) {
34
- return {
35
- success: false,
36
- error: error instanceof Error ? error.message : 'Unknown workspace edit error.',
37
- };
38
- }
39
- function isBatchReplaceResult(result) {
40
- return Array.isArray(result);
41
- }
42
- function createBatchStrReplaceFileTool(filesystem) {
43
- return new tool_1.Tool('workspace_batch_str_replace_file')
44
- .description('Apply multiple exact text replacements to a workspace file atomically. If any replacement fails, no changes are written.')
45
- .input(inputSchema)
46
- .output(outputSchema)
47
- .handler(async (input, ctx) => {
48
- try {
49
- const content = await filesystem.readFile(input.path, {
50
- encoding: 'utf-8',
51
- abortSignal: ctx.abortSignal,
52
- });
53
- const editor = new generic_text_editor_1.TextEditorDocument({ initialText: content.toString() });
54
- const result = editor.executeBatch(input.replacements);
55
- if (isBatchReplaceResult(result)) {
56
- return { success: false, error: 'Batch replacement failed.', results: result };
57
- }
58
- const editedContent = editor.getText();
59
- if (editedContent === null) {
60
- throw new Error(`File "${input.path}" is not loaded.`);
61
- }
62
- await filesystem.writeFile(input.path, editedContent, {
63
- overwrite: true,
64
- abortSignal: ctx.abortSignal,
65
- });
66
- return { success: true, result };
67
- }
68
- catch (error) {
69
- if ((0, abort_1.isAbortError)(error))
70
- throw error;
71
- return createErrorOutput(error);
72
- }
73
- })
74
- .build();
75
- }
76
- //# sourceMappingURL=batch-str-replace-file.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"batch-str-replace-file.js","sourceRoot":"","sources":["../../../src/workspace/tools/batch-str-replace-file.ts"],"names":[],"mappings":"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"}