@n8n/instance-ai 1.4.1 → 1.6.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 (266) hide show
  1. package/dist/agent/computer-use-prompt.d.ts +5 -0
  2. package/dist/agent/computer-use-prompt.js +97 -0
  3. package/dist/agent/computer-use-prompt.js.map +1 -0
  4. package/dist/agent/instance-agent.js +48 -73
  5. package/dist/agent/instance-agent.js.map +1 -1
  6. package/dist/agent/mcp-tool-name-validation.d.ts +15 -0
  7. package/dist/agent/mcp-tool-name-validation.js +67 -0
  8. package/dist/agent/mcp-tool-name-validation.js.map +1 -0
  9. package/dist/agent/sanitize-mcp-schemas.d.ts +56 -2
  10. package/dist/agent/sanitize-mcp-schemas.js +226 -19
  11. package/dist/agent/sanitize-mcp-schemas.js.map +1 -1
  12. package/dist/agent/sub-agent-debriefing.d.ts +2 -2
  13. package/dist/agent/sub-agent-factory.d.ts +1 -0
  14. package/dist/agent/sub-agent-factory.js +1 -0
  15. package/dist/agent/sub-agent-factory.js.map +1 -1
  16. package/dist/agent/system-prompt.d.ts +1 -1
  17. package/dist/agent/system-prompt.js +46 -104
  18. package/dist/agent/system-prompt.js.map +1 -1
  19. package/dist/build.tsbuildinfo +1 -1
  20. package/dist/constants/model-settings.d.ts +3 -0
  21. package/dist/constants/model-settings.js +7 -0
  22. package/dist/constants/model-settings.js.map +1 -0
  23. package/dist/domain-access/domain-access-tracker.d.ts +3 -0
  24. package/dist/domain-access/domain-access-tracker.js +16 -0
  25. package/dist/domain-access/domain-access-tracker.js.map +1 -1
  26. package/dist/domain-access/domain-gating.d.ts +35 -6
  27. package/dist/domain-access/domain-gating.js +47 -1
  28. package/dist/domain-access/domain-gating.js.map +1 -1
  29. package/dist/domain-access/index.d.ts +1 -1
  30. package/dist/domain-access/index.js +3 -1
  31. package/dist/domain-access/index.js.map +1 -1
  32. package/dist/index.d.ts +14 -6
  33. package/dist/index.js +19 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/logger.d.ts +6 -0
  36. package/dist/mcp/mcp-client-manager.d.ts +18 -2
  37. package/dist/mcp/mcp-client-manager.js +124 -20
  38. package/dist/mcp/mcp-client-manager.js.map +1 -1
  39. package/dist/parsers/docx-parser.d.ts +6 -0
  40. package/dist/parsers/docx-parser.js +65 -0
  41. package/dist/parsers/docx-parser.js.map +1 -0
  42. package/dist/parsers/html-parser.d.ts +7 -0
  43. package/dist/parsers/html-parser.js +67 -0
  44. package/dist/parsers/html-parser.js.map +1 -0
  45. package/dist/parsers/index.d.ts +4 -0
  46. package/dist/parsers/index.js +16 -0
  47. package/dist/parsers/index.js.map +1 -0
  48. package/dist/parsers/pdf-parser.d.ts +7 -0
  49. package/dist/parsers/pdf-parser.js +72 -0
  50. package/dist/parsers/pdf-parser.js.map +1 -0
  51. package/dist/parsers/structured-file-parser.d.ts +8 -3
  52. package/dist/parsers/structured-file-parser.js +36 -4
  53. package/dist/parsers/structured-file-parser.js.map +1 -1
  54. package/dist/parsers/validate-attachments.d.ts +14 -0
  55. package/dist/parsers/validate-attachments.js +61 -0
  56. package/dist/parsers/validate-attachments.js.map +1 -0
  57. package/dist/parsers/xlsx-parser.d.ts +2 -0
  58. package/dist/parsers/xlsx-parser.js +75 -0
  59. package/dist/parsers/xlsx-parser.js.map +1 -0
  60. package/dist/planned-tasks/planned-task-permissions.d.ts +2 -0
  61. package/dist/planned-tasks/planned-task-permissions.js +8 -2
  62. package/dist/planned-tasks/planned-task-permissions.js.map +1 -1
  63. package/dist/planned-tasks/planned-task-service.d.ts +14 -1
  64. package/dist/planned-tasks/planned-task-service.js +138 -2
  65. package/dist/planned-tasks/planned-task-service.js.map +1 -1
  66. package/dist/runtime/background-task-manager.d.ts +32 -1
  67. package/dist/runtime/background-task-manager.js +134 -4
  68. package/dist/runtime/background-task-manager.js.map +1 -1
  69. package/dist/runtime/builder-sandbox-session-registry.d.ts +45 -0
  70. package/dist/runtime/builder-sandbox-session-registry.js +159 -0
  71. package/dist/runtime/builder-sandbox-session-registry.js.map +1 -0
  72. package/dist/runtime/liveness-policy.d.ts +40 -0
  73. package/dist/runtime/liveness-policy.js +74 -0
  74. package/dist/runtime/liveness-policy.js.map +1 -0
  75. package/dist/runtime/resumable-stream-executor.d.ts +1 -0
  76. package/dist/runtime/resumable-stream-executor.js +1 -0
  77. package/dist/runtime/resumable-stream-executor.js.map +1 -1
  78. package/dist/runtime/run-state-registry.d.ts +21 -5
  79. package/dist/runtime/run-state-registry.js +109 -7
  80. package/dist/runtime/run-state-registry.js.map +1 -1
  81. package/dist/runtime/stream-runner.d.ts +3 -0
  82. package/dist/runtime/stream-runner.js +3 -0
  83. package/dist/runtime/stream-runner.js.map +1 -1
  84. package/dist/runtime/terminal-response-guard.d.ts +30 -0
  85. package/dist/runtime/terminal-response-guard.js +149 -0
  86. package/dist/runtime/terminal-response-guard.js.map +1 -0
  87. package/dist/storage/agent-tree-snapshot.d.ts +2 -0
  88. package/dist/storage/index.d.ts +2 -0
  89. package/dist/storage/index.js +3 -1
  90. package/dist/storage/index.js.map +1 -1
  91. package/dist/storage/planned-task-storage.js +2 -1
  92. package/dist/storage/planned-task-storage.js.map +1 -1
  93. package/dist/storage/terminal-outcome-storage.d.ts +48 -0
  94. package/dist/storage/terminal-outcome-storage.js +84 -0
  95. package/dist/storage/terminal-outcome-storage.js.map +1 -0
  96. package/dist/storage/workflow-loop-storage.d.ts +442 -16
  97. package/dist/stream/consume-with-hitl.d.ts +2 -0
  98. package/dist/stream/consume-with-hitl.js +2 -0
  99. package/dist/stream/consume-with-hitl.js.map +1 -1
  100. package/dist/stream/map-chunk.js +6 -0
  101. package/dist/stream/map-chunk.js.map +1 -1
  102. package/dist/tools/attachments/parse-file.tool.d.ts +46 -34
  103. package/dist/tools/attachments/parse-file.tool.js +115 -56
  104. package/dist/tools/attachments/parse-file.tool.js.map +1 -1
  105. package/dist/tools/credentials.tool.d.ts +120 -1
  106. package/dist/tools/credentials.tool.js +65 -12
  107. package/dist/tools/credentials.tool.js.map +1 -1
  108. package/dist/tools/data-tables.tool.d.ts +1 -0
  109. package/dist/tools/data-tables.tool.js +64 -24
  110. package/dist/tools/data-tables.tool.js.map +1 -1
  111. package/dist/tools/executions.tool.js +4 -1
  112. package/dist/tools/executions.tool.js.map +1 -1
  113. package/dist/tools/filesystem/create-tools-from-mcp-server.d.ts +2 -1
  114. package/dist/tools/filesystem/create-tools-from-mcp-server.js +74 -5
  115. package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
  116. package/dist/tools/index.d.ts +4 -24
  117. package/dist/tools/index.js +23 -7
  118. package/dist/tools/index.js.map +1 -1
  119. package/dist/tools/nodes.tool.js +15 -15
  120. package/dist/tools/nodes.tool.js.map +1 -1
  121. package/dist/tools/orchestration/add-plan-item.tool.js +3 -1
  122. package/dist/tools/orchestration/add-plan-item.tool.js.map +1 -1
  123. package/dist/tools/orchestration/blueprint-accumulator.d.ts +4 -1
  124. package/dist/tools/orchestration/blueprint-accumulator.js +28 -0
  125. package/dist/tools/orchestration/blueprint-accumulator.js.map +1 -1
  126. package/dist/tools/orchestration/blueprint.schema.d.ts +61 -16
  127. package/dist/tools/orchestration/blueprint.schema.js +15 -1
  128. package/dist/tools/orchestration/blueprint.schema.js.map +1 -1
  129. package/dist/tools/orchestration/browser-credential-setup.nudge.d.ts +5 -0
  130. package/dist/tools/orchestration/browser-credential-setup.nudge.js +11 -0
  131. package/dist/tools/orchestration/browser-credential-setup.nudge.js.map +1 -0
  132. package/dist/tools/orchestration/browser-credential-setup.prompt.js +2 -1
  133. package/dist/tools/orchestration/browser-credential-setup.prompt.js.map +1 -1
  134. package/dist/tools/orchestration/browser-credential-setup.tool.js +55 -7
  135. package/dist/tools/orchestration/browser-credential-setup.tool.js.map +1 -1
  136. package/dist/tools/orchestration/build-workflow-agent.prompt.js +86 -60
  137. package/dist/tools/orchestration/build-workflow-agent.prompt.js.map +1 -1
  138. package/dist/tools/orchestration/build-workflow-agent.tool.d.ts +56 -3
  139. package/dist/tools/orchestration/build-workflow-agent.tool.js +1020 -300
  140. package/dist/tools/orchestration/build-workflow-agent.tool.js.map +1 -1
  141. package/dist/tools/orchestration/builder-memory-compaction.d.ts +38 -0
  142. package/dist/tools/orchestration/builder-memory-compaction.js +146 -0
  143. package/dist/tools/orchestration/builder-memory-compaction.js.map +1 -0
  144. package/dist/tools/orchestration/complete-checkpoint.tool.d.ts +2 -0
  145. package/dist/tools/orchestration/complete-checkpoint.tool.js +76 -0
  146. package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -0
  147. package/dist/tools/orchestration/data-table-agent.tool.js +34 -17
  148. package/dist/tools/orchestration/data-table-agent.tool.js.map +1 -1
  149. package/dist/tools/orchestration/delegate.tool.js +34 -16
  150. package/dist/tools/orchestration/delegate.tool.js.map +1 -1
  151. package/dist/tools/orchestration/plan-agent-prompt.d.ts +1 -1
  152. package/dist/tools/orchestration/plan-agent-prompt.js +7 -0
  153. package/dist/tools/orchestration/plan-agent-prompt.js.map +1 -1
  154. package/dist/tools/orchestration/plan-with-agent.tool.d.ts +23 -0
  155. package/dist/tools/orchestration/plan-with-agent.tool.js +314 -13
  156. package/dist/tools/orchestration/plan-with-agent.tool.js.map +1 -1
  157. package/dist/tools/orchestration/plan.tool.js +17 -1
  158. package/dist/tools/orchestration/plan.tool.js.map +1 -1
  159. package/dist/tools/orchestration/report-verification-verdict.tool.d.ts +40 -2
  160. package/dist/tools/orchestration/report-verification-verdict.tool.js +85 -6
  161. package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
  162. package/dist/tools/orchestration/research-with-agent.tool.js +33 -16
  163. package/dist/tools/orchestration/research-with-agent.tool.js.map +1 -1
  164. package/dist/tools/orchestration/tracing-utils.js +8 -0
  165. package/dist/tools/orchestration/tracing-utils.js.map +1 -1
  166. package/dist/tools/orchestration/verify-built-workflow.tool.d.ts +8 -2
  167. package/dist/tools/orchestration/verify-built-workflow.tool.js +476 -6
  168. package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
  169. package/dist/tools/research.tool.js +56 -10
  170. package/dist/tools/research.tool.js.map +1 -1
  171. package/dist/tools/shared/ask-user.tool.d.ts +1 -0
  172. package/dist/tools/shared/ask-user.tool.js +3 -2
  173. package/dist/tools/shared/ask-user.tool.js.map +1 -1
  174. package/dist/tools/templates.tool.js +5 -90
  175. package/dist/tools/templates.tool.js.map +1 -1
  176. package/dist/tools/web-research/sanitize-web-content.d.ts +0 -1
  177. package/dist/tools/web-research/sanitize-web-content.js +0 -9
  178. package/dist/tools/web-research/sanitize-web-content.js.map +1 -1
  179. package/dist/tools/workflows/apply-workflow-credentials.tool.d.ts +2 -2
  180. package/dist/tools/workflows/build-workflow.tool.d.ts +2 -2
  181. package/dist/tools/workflows/build-workflow.tool.js +6 -4
  182. package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
  183. package/dist/tools/workflows/materialize-node-type.tool.d.ts +8 -8
  184. package/dist/tools/workflows/resolve-credentials.d.ts +9 -4
  185. package/dist/tools/workflows/resolve-credentials.js +59 -27
  186. package/dist/tools/workflows/resolve-credentials.js.map +1 -1
  187. package/dist/tools/workflows/setup-workflow.schema.d.ts +40 -0
  188. package/dist/tools/workflows/setup-workflow.service.d.ts +5 -1
  189. package/dist/tools/workflows/setup-workflow.service.js +71 -5
  190. package/dist/tools/workflows/setup-workflow.service.js.map +1 -1
  191. package/dist/tools/workflows/submit-workflow-identity.d.ts +25 -3
  192. package/dist/tools/workflows/submit-workflow-identity.js +92 -5
  193. package/dist/tools/workflows/submit-workflow-identity.js.map +1 -1
  194. package/dist/tools/workflows/submit-workflow.tool.d.ts +60 -6
  195. package/dist/tools/workflows/submit-workflow.tool.js +102 -19
  196. package/dist/tools/workflows/submit-workflow.tool.js.map +1 -1
  197. package/dist/tools/workflows/workflow-json-utils.d.ts +4 -0
  198. package/dist/tools/workflows/workflow-json-utils.js +54 -0
  199. package/dist/tools/workflows/workflow-json-utils.js.map +1 -0
  200. package/dist/tools/workflows.tool.d.ts +7 -1
  201. package/dist/tools/workflows.tool.js +283 -54
  202. package/dist/tools/workflows.tool.js.map +1 -1
  203. package/dist/tracing/langsmith-tracing.d.ts +2 -0
  204. package/dist/tracing/langsmith-tracing.js +12 -3
  205. package/dist/tracing/langsmith-tracing.js.map +1 -1
  206. package/dist/tracing/trace-replay.d.ts +3 -0
  207. package/dist/tracing/trace-replay.js +65 -0
  208. package/dist/tracing/trace-replay.js.map +1 -1
  209. package/dist/types.d.ts +92 -16
  210. package/dist/workflow-builder/parse-validate.d.ts +5 -1
  211. package/dist/workflow-builder/parse-validate.js +5 -4
  212. package/dist/workflow-builder/parse-validate.js.map +1 -1
  213. package/dist/workflow-loop/guidance.js +8 -2
  214. package/dist/workflow-loop/guidance.js.map +1 -1
  215. package/dist/workflow-loop/index.d.ts +3 -2
  216. package/dist/workflow-loop/index.js +11 -1
  217. package/dist/workflow-loop/index.js.map +1 -1
  218. package/dist/workflow-loop/remediation.d.ts +13 -0
  219. package/dist/workflow-loop/remediation.js +36 -0
  220. package/dist/workflow-loop/remediation.js.map +1 -0
  221. package/dist/workflow-loop/runtime.js +7 -0
  222. package/dist/workflow-loop/runtime.js.map +1 -1
  223. package/dist/workflow-loop/workflow-loop-controller.d.ts +1 -1
  224. package/dist/workflow-loop/workflow-loop-controller.js +196 -29
  225. package/dist/workflow-loop/workflow-loop-controller.js.map +1 -1
  226. package/dist/workflow-loop/workflow-loop-state.d.ts +500 -10
  227. package/dist/workflow-loop/workflow-loop-state.js +74 -1
  228. package/dist/workflow-loop/workflow-loop-state.js.map +1 -1
  229. package/dist/workflow-loop/workflow-task-service.d.ts +2 -1
  230. package/dist/workflow-loop/workflow-task-service.js +4 -0
  231. package/dist/workflow-loop/workflow-task-service.js.map +1 -1
  232. package/dist/workspace/builder-sandbox-factory.d.ts +3 -4
  233. package/dist/workspace/builder-sandbox-factory.js +74 -35
  234. package/dist/workspace/builder-sandbox-factory.js.map +1 -1
  235. package/dist/workspace/create-workspace.d.ts +2 -0
  236. package/dist/workspace/create-workspace.js.map +1 -1
  237. package/dist/workspace/n8n-sandbox-filesystem.js +2 -2
  238. package/dist/workspace/n8n-sandbox-filesystem.js.map +1 -1
  239. package/dist/workspace/n8n-sandbox-sandbox.d.ts +2 -3
  240. package/dist/workspace/n8n-sandbox-sandbox.js +3 -7
  241. package/dist/workspace/n8n-sandbox-sandbox.js.map +1 -1
  242. package/dist/workspace/sandbox-setup.d.ts +1 -1
  243. package/dist/workspace/sandbox-setup.js +41 -16
  244. package/dist/workspace/sandbox-setup.js.map +1 -1
  245. package/dist/workspace/snapshot-manager.d.ts +14 -2
  246. package/dist/workspace/snapshot-manager.js +57 -1
  247. package/dist/workspace/snapshot-manager.js.map +1 -1
  248. package/package.json +35 -10
  249. package/dist/tools/templates/template-api.d.ts +0 -21
  250. package/dist/tools/templates/template-api.js +0 -104
  251. package/dist/tools/templates/template-api.js.map +0 -1
  252. package/dist/tools/templates/types.d.ts +0 -52
  253. package/dist/tools/templates/types.js +0 -37
  254. package/dist/tools/templates/types.js.map +0 -1
  255. package/dist/tools/utils/mermaid.utils.d.ts +0 -15
  256. package/dist/tools/utils/mermaid.utils.js +0 -622
  257. package/dist/tools/utils/mermaid.utils.js.map +0 -1
  258. package/dist/tools/utils/node-configuration.utils.d.ts +0 -6
  259. package/dist/tools/utils/node-configuration.utils.js +0 -77
  260. package/dist/tools/utils/node-configuration.utils.js.map +0 -1
  261. package/dist/workspace/n8n-sandbox-client.d.ts +0 -105
  262. package/dist/workspace/n8n-sandbox-client.js +0 -335
  263. package/dist/workspace/n8n-sandbox-client.js.map +0 -1
  264. package/dist/workspace/n8n-sandbox-image-manager.d.ts +0 -5
  265. package/dist/workspace/n8n-sandbox-image-manager.js +0 -25
  266. package/dist/workspace/n8n-sandbox-image-manager.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ import { type LocalGatewayStatus } from '../types';
2
+ export declare function getComputerUsePrompt({ browserAvailable, localGateway, }: {
3
+ browserAvailable: boolean | undefined;
4
+ localGateway: LocalGatewayStatus | undefined;
5
+ }): string;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getComputerUsePrompt = getComputerUsePrompt;
4
+ const BROWSER_USE_EXTENSION_URL = 'https://chromewebstore.google.com/detail/n8n-browser-use/cegmdpndekdfpnafgacidejijecomlhh';
5
+ function getComputerUsePrompt({ browserAvailable, localGateway, }) {
6
+ if (localGateway && localGateway.status !== 'disabledGlobally') {
7
+ const promptParts = [];
8
+ promptParts.push(`
9
+ ## Computer Use
10
+ This instance support "Computer Use", which allows connecting to user's computer and execute following functionality:
11
+ - *filesystem* - read and write files. Use it when users want to include their own files in the automation.
12
+ - *shell* - Execute shell commands. Use it when you need or are asked to execute commands on user's computer
13
+ - *browser* - Automate user's browser to access web pages and do tasks on user's behalf. Use it when you require access to user's browser session for example when creating credentials with user's accounts. Requires installing the "n8n Browser Use" Chrome extension from the Chrome Web Store: ${BROWSER_USE_EXTENSION_URL}
14
+ - *screenshot*, *mouse-keyboard* - control user's computer mouse, keyboard and do screenshots (do not advertise or use this functionality if user does not explicitly ask for it)
15
+
16
+ Users have control over this functionality and can enable only the tools they want to provide.
17
+ Users can reconnect Computer Use with different set of functionality, so always rely on Computer Use status and the available tools and not the conversation history.
18
+
19
+ ### When to suggest or use Computer Use
20
+
21
+ Proactively suggest Computer Use (or use it directly if connected) when you detect these signals:
22
+
23
+ - **Credential / OAuth setup** — user needs to set up, create, configure, or connect credentials for any service that requires OAuth or API key generation through a web portal (Slack, Google, Microsoft, HubSpot, Notion, Stripe, Twilio, etc.) → *browser*
24
+ - **Local file as context** — user mentions a file, PDF, CSV, spec, or requirements doc they want to use as reference while building a workflow → *filesystem*
25
+ - **Documentation / output to files** — user asks to document, write up, export, or save a workflow description, runbook, or handover doc → *filesystem*
26
+ - **Authenticated web research** — user wants to check something on a site they're logged into, or gather data from a web-based tool → *browser*
27
+ - **Form / frontend testing** — user is building n8n forms or a web app with n8n as backend and wants end-to-end testing → *browser*
28
+ - **Shell / environment** — user asks to run a command (curl, CLI, DB query), automate something locally, or debug connectivity → *shell*
29
+ - **Platform migration** — user wants to migrate from Make, Zapier, or another automation platform, or replicate an existing workflow from it → *browser* + *filesystem*
30
+ `);
31
+ promptParts.push(`
32
+ ### Computer Use status`);
33
+ switch (localGateway.status) {
34
+ case 'connected':
35
+ if (localGateway.capabilities.length > 0) {
36
+ promptParts.push(`Computer Use is connected, the user has enabled following capabilities: ${localGateway.capabilities.join(',')}`);
37
+ if (localGateway.capabilities.includes('filesystem')) {
38
+ promptParts.push(`
39
+ ### Computer Use - Filesystem Exploration
40
+
41
+ Keep exploration shallow: start at depth 1–2, prefer \`search\` over browsing, and read specific files rather than whole directories.`);
42
+ }
43
+ if (browserAvailable) {
44
+ promptParts.push(`
45
+ ### Computer Use - Browser Automation rules
46
+
47
+ You can control the user's browser using the browser_* tools. Since this is their real browser, you share it with them.
48
+
49
+ #### Handing control to the user
50
+
51
+ When the user needs to act in the browser, **end your turn** with a clear message explaining what they should do. Resume after they reply. Hand off when:
52
+ - **Authentication** — login pages, OAuth, SSO, 2FA/MFA prompts
53
+ - **CAPTCHAs or visual challenges** — you cannot solve these
54
+ - **Accessing downloads** — you can click download buttons, but you cannot open or read downloaded files; ask the user to open the file and share the content you need
55
+ - **Sensitive content on screen** — passwords, tokens, secrets visible in the browser
56
+ - **User requests manual control** — they explicitly want to do something themselves
57
+
58
+ After the user confirms they're done, take a snapshot to verify before continuing.
59
+
60
+ #### Secrets and sensitive data
61
+
62
+ **NEVER include passwords, API keys, tokens, or secrets in your chat messages** — even if visible on a page. If the user asks you to retrieve a secret, tell them to read it directly from their browser.
63
+
64
+ #### When browser tools fail at runtime
65
+
66
+ If a browser_* tool call fails because the browser is unreachable (e.g. connection lost, extension not responding), ask the user to verify the **n8n Browser Use** Chrome extension is installed and connected. If needed, they can reinstall from the Chrome Web Store: ${BROWSER_USE_EXTENSION_URL}`);
67
+ }
68
+ else {
69
+ promptParts.push(`
70
+ ### Browser Automation (Disabled in Computer Use)
71
+
72
+ Browser tools are not enabled in the user's Computer Use configuration. If the user asks for browser automation, tell them to (1) enable browser tools in their Computer Use config, and (2) install the n8n Browser Use Chrome extension from the Chrome Web Store: ${BROWSER_USE_EXTENSION_URL}`);
73
+ }
74
+ }
75
+ else {
76
+ promptParts.push('Computer Use is connected, but the user did not enable any capabilities');
77
+ }
78
+ break;
79
+ case 'disconnected':
80
+ promptParts.push(`Computer Use is not connected. Do NOT attempt to use Computer Use tools — they are not available. You can provide these instructions to establish a connection:
81
+ 1. open the right sidebar
82
+ 2. click on the "..." button next to "Computer Use"
83
+ 3. click on "Connect" and follow the instructions in the dialog`);
84
+ break;
85
+ case 'disabled':
86
+ promptParts.push(`Computer Use is not connected and not set-up. Do NOT attempt to use Computer Use tools — they are not available. You can provide these instructions to establish a connection:
87
+ 1. open the right sidebar
88
+ 2. click on "Setup computer use"
89
+ 3. follow the instructions in the dialog`);
90
+ break;
91
+ default:
92
+ }
93
+ return promptParts.join('\n');
94
+ }
95
+ return '';
96
+ }
97
+ //# sourceMappingURL=computer-use-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computer-use-prompt.js","sourceRoot":"","sources":["../../src/agent/computer-use-prompt.ts"],"names":[],"mappings":";;AAKA,oDA6GC;AAhHD,MAAM,yBAAyB,GAC9B,2FAA2F,CAAC;AAE7F,SAAgB,oBAAoB,CAAC,EACpC,gBAAgB,EAChB,YAAY,GAIZ;IACA,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;QAChE,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,WAAW,CAAC,IAAI,CAAC;;;;;sSAKmR,yBAAyB;;;;;;;;;;;;;;;;;CAiB9T,CAAC,CAAC;QAED,WAAW,CAAC,IAAI,CAAC;wBACK,CAAC,CAAC;QAExB,QAAQ,YAAY,CAAC,MAAM,EAAE,CAAC;YAC7B,KAAK,WAAW;gBACf,IAAI,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1C,WAAW,CAAC,IAAI,CACf,2EAA2E,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAChH,CAAC;oBACF,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;wBACtD,WAAW,CAAC,IAAI,CAAC;;;sIAG+G,CAAC,CAAC;oBACnI,CAAC;oBACD,IAAI,gBAAgB,EAAE,CAAC;wBACtB,WAAW,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;2QAsBoP,yBAAyB,EAAE,CAAC,CAAC;oBACnS,CAAC;yBAAM,CAAC;wBACP,WAAW,CAAC,IAAI,CAAC;;;uQAGgP,yBAAyB,EAAE,CAAC,CAAC;oBAC/R,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,WAAW,CAAC,IAAI,CACf,yEAAyE,CACzE,CAAC;gBACH,CAAC;gBAED,MAAM;YACP,KAAK,cAAc;gBAClB,WAAW,CAAC,IAAI,CACf;;;gEAG2D,CAC3D,CAAC;gBACF,MAAM;YACP,KAAK,UAAU;gBACd,WAAW,CAAC,IAAI,CACf;;;yCAGoC,CACpC,CAAC;gBACF,MAAM;YACP,QAAQ;QACT,CAAC;QAED,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,EAAE,CAAC;AACX,CAAC"}
@@ -4,30 +4,12 @@ exports.createInstanceAgent = createInstanceAgent;
4
4
  const agent_1 = require("@mastra/core/agent");
5
5
  const mastra_1 = require("@mastra/core/mastra");
6
6
  const processors_1 = require("@mastra/core/processors");
7
- const mcp_1 = require("@mastra/mcp");
8
- const nanoid_1 = require("nanoid");
9
7
  const memory_config_1 = require("../memory/memory-config");
10
8
  const tools_1 = require("../tools");
11
- const sanitize_mcp_schemas_1 = require("./sanitize-mcp-schemas");
12
9
  const system_prompt_1 = require("./system-prompt");
13
10
  const create_tools_from_mcp_server_1 = require("../tools/filesystem/create-tools-from-mcp-server");
14
11
  const langsmith_tracing_1 = require("../tracing/langsmith-tracing");
15
- function buildMcpServers(configs) {
16
- const servers = {};
17
- for (const server of configs) {
18
- if (server.url) {
19
- servers[server.name] = { url: new URL(server.url) };
20
- }
21
- else if (server.command) {
22
- servers[server.name] = { command: server.command, args: server.args, env: server.env };
23
- }
24
- }
25
- return servers;
26
- }
27
- let cachedMcpTools = null;
28
- let cachedMcpServersKey = '';
29
- let cachedBrowserMcpTools = null;
30
- let cachedBrowserMcpKey = '';
12
+ const mcp_tool_name_validation_1 = require("./mcp-tool-name-validation");
31
13
  let cachedMastra = null;
32
14
  let cachedMastraStorageKey = '';
33
15
  const ALWAYS_LOADED_TOOLS = new Set(['plan', 'delegate', 'ask-user', 'research']);
@@ -37,37 +19,6 @@ function getOrCreateToolSearchProcessor(tools) {
37
19
  search: { topK: 5 },
38
20
  });
39
21
  }
40
- async function getMcpTools(mcpServers) {
41
- const key = JSON.stringify(mcpServers);
42
- if (cachedMcpTools && cachedMcpServersKey === key)
43
- return cachedMcpTools;
44
- if (mcpServers.length === 0) {
45
- cachedMcpTools = {};
46
- cachedMcpServersKey = key;
47
- return cachedMcpTools;
48
- }
49
- const mcpClient = new mcp_1.MCPClient({
50
- id: `mcp-${(0, nanoid_1.nanoid)(6)}`,
51
- servers: buildMcpServers(mcpServers),
52
- });
53
- cachedMcpTools = (0, sanitize_mcp_schemas_1.sanitizeMcpToolSchemas)(await mcpClient.listTools());
54
- cachedMcpServersKey = key;
55
- return cachedMcpTools;
56
- }
57
- async function getBrowserMcpTools(config) {
58
- if (!config)
59
- return {};
60
- const key = JSON.stringify(config);
61
- if (cachedBrowserMcpTools && cachedBrowserMcpKey === key)
62
- return cachedBrowserMcpTools;
63
- const browserClient = new mcp_1.MCPClient({
64
- id: `browser-mcp-${(0, nanoid_1.nanoid)(6)}`,
65
- servers: buildMcpServers([config]),
66
- });
67
- cachedBrowserMcpTools = (0, sanitize_mcp_schemas_1.sanitizeMcpToolSchemas)(await browserClient.listTools());
68
- cachedBrowserMcpKey = key;
69
- return cachedBrowserMcpTools;
70
- }
71
22
  function ensureMastraRegistered(agent, storage) {
72
23
  const key = storage.id ?? 'default';
73
24
  if (!cachedMastra || cachedMastraStorageKey !== key) {
@@ -77,25 +28,26 @@ function ensureMastraRegistered(agent, storage) {
77
28
  agent.__registerMastra(cachedMastra);
78
29
  }
79
30
  async function createInstanceAgent(options) {
80
- const { modelId, context, orchestrationContext, mcpServers = [], memoryConfig, disableDeferredTools = false, } = options;
31
+ const { modelId, context, orchestrationContext, mcpServers = [], mcpManager, memoryConfig, disableDeferredTools = false, } = options;
81
32
  const domainTools = (0, tools_1.createAllTools)(context);
82
33
  const orchestratorDomainTools = (0, tools_1.createOrchestratorDomainTools)(context);
83
- const mcpTools = await getMcpTools(mcpServers);
84
- const browserMcpTools = await getBrowserMcpTools(orchestrationContext?.browserMcpConfig);
34
+ const mcpTools = await mcpManager.getRegularTools(mcpServers, context.logger);
35
+ const browserMcpTools = await mcpManager.getBrowserTools(orchestrationContext?.browserMcpConfig, context.logger);
36
+ const rawLocalMcpTools = context.localMcpServer
37
+ ? (0, create_tools_from_mcp_server_1.createToolsFromLocalMcpServer)(context.localMcpServer, context.logger)
38
+ : {};
85
39
  const browserToolNames = new Set([
86
40
  ...Object.keys(browserMcpTools),
87
41
  ...(context.localMcpServer?.getToolsByCategory('browser').map((t) => t.name) ?? []),
88
42
  ]);
89
43
  const allMcpTools = {};
90
- const domainToolNames = new Set(Object.keys(domainTools));
91
- for (const [name, tool] of Object.entries({ ...mcpTools, ...browserMcpTools })) {
92
- if (!domainToolNames.has(name)) {
93
- allMcpTools[name] = tool;
94
- }
95
- }
96
- if (orchestrationContext && Object.keys(allMcpTools).length > 0) {
97
- orchestrationContext.mcpTools = allMcpTools;
98
- }
44
+ const warnSkippedMcpTool = (error) => {
45
+ context.logger?.warn('Skipped MCP tool with unsafe name', {
46
+ toolName: error.toolName,
47
+ source: error.source,
48
+ reason: error.message,
49
+ });
50
+ };
99
51
  const orchestrationTools = orchestrationContext
100
52
  ? (0, tools_1.createOrchestrationTools)(orchestrationContext)
101
53
  : {};
@@ -103,20 +55,44 @@ async function createInstanceAgent(options) {
103
55
  ...Object.keys(domainTools),
104
56
  ...Object.keys(orchestrationTools),
105
57
  ]);
106
- const safeMcpTools = {};
107
- for (const [name, tool] of Object.entries(mcpTools)) {
108
- if (reservedToolNames.has(name))
109
- continue;
110
- safeMcpTools[name] = tool;
58
+ const mcpContextToolNames = (0, mcp_tool_name_validation_1.createClaimedToolNames)(reservedToolNames);
59
+ (0, mcp_tool_name_validation_1.addSafeMcpTools)(allMcpTools, rawLocalMcpTools, {
60
+ source: 'local gateway MCP',
61
+ claimedToolNames: mcpContextToolNames,
62
+ warn: warnSkippedMcpTool,
63
+ });
64
+ (0, mcp_tool_name_validation_1.addSafeMcpTools)(allMcpTools, mcpTools, {
65
+ source: 'external MCP',
66
+ claimedToolNames: mcpContextToolNames,
67
+ warn: warnSkippedMcpTool,
68
+ });
69
+ (0, mcp_tool_name_validation_1.addSafeMcpTools)(allMcpTools, browserMcpTools, {
70
+ source: 'browser MCP',
71
+ claimedToolNames: mcpContextToolNames,
72
+ warn: warnSkippedMcpTool,
73
+ });
74
+ const orchestratorLocalMcpTools = Object.fromEntries(Object.entries(rawLocalMcpTools).filter(([name]) => !browserToolNames.has(name)));
75
+ if (orchestrationContext && Object.keys(allMcpTools).length > 0) {
76
+ orchestrationContext.mcpTools = allMcpTools;
111
77
  }
112
- const localMcpTools = context.localMcpServer
113
- ? Object.fromEntries(Object.entries((0, create_tools_from_mcp_server_1.createToolsFromLocalMcpServer)(context.localMcpServer)).filter(([name]) => !browserToolNames.has(name)))
114
- : {};
78
+ const claimedOrchestratorToolNames = (0, mcp_tool_name_validation_1.createClaimedToolNames)(reservedToolNames);
79
+ const safeLocalMcpTools = {};
80
+ (0, mcp_tool_name_validation_1.addSafeMcpTools)(safeLocalMcpTools, orchestratorLocalMcpTools, {
81
+ source: 'local gateway MCP',
82
+ claimedToolNames: claimedOrchestratorToolNames,
83
+ warn: warnSkippedMcpTool,
84
+ });
85
+ const safeMcpTools = {};
86
+ (0, mcp_tool_name_validation_1.addSafeMcpTools)(safeMcpTools, mcpTools, {
87
+ source: 'external MCP',
88
+ claimedToolNames: claimedOrchestratorToolNames,
89
+ warn: warnSkippedMcpTool,
90
+ });
115
91
  const allOrchestratorTools = {
116
92
  ...orchestratorDomainTools,
117
93
  ...orchestrationTools,
94
+ ...safeLocalMcpTools,
118
95
  ...safeMcpTools,
119
- ...localMcpTools,
120
96
  };
121
97
  const tracedOrchestratorTools = orchestrationContext?.tracing?.wrapTools(allOrchestratorTools, {
122
98
  agentRole: 'orchestrator',
@@ -140,7 +116,7 @@ async function createInstanceAgent(options) {
140
116
  const systemPrompt = (0, system_prompt_1.getSystemPrompt)({
141
117
  researchMode: orchestrationContext?.researchMode,
142
118
  webhookBaseUrl: orchestrationContext?.webhookBaseUrl,
143
- filesystemAccess: (context.localMcpServer?.getToolsByCategory('filesystem').length ?? 0) > 0,
119
+ formBaseUrl: orchestrationContext?.formBaseUrl,
144
120
  localGateway: context.localGatewayStatus,
145
121
  toolSearchEnabled: hasDeferrableTools,
146
122
  licenseHints: context.licenseHints,
@@ -162,7 +138,6 @@ async function createInstanceAgent(options) {
162
138
  tools: hasDeferrableTools ? coreTools : tracedOrchestratorTools,
163
139
  inputProcessors: toolSearchProcessor ? [toolSearchProcessor] : undefined,
164
140
  memory,
165
- workspace: options.workspace,
166
141
  });
167
142
  (0, langsmith_tracing_1.mergeTraceRunInputs)(orchestrationContext?.tracing?.actorRun, (0, langsmith_tracing_1.buildAgentTraceInputs)({
168
143
  systemPrompt,
@@ -1 +1 @@
1
- {"version":3,"file":"instance-agent.js","sourceRoot":"","sources":["../../src/agent/instance-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instance-agent.js","sourceRoot":"","sources":["../../src/agent/instance-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ToolsInput } from '@mastra/core/agent';
2
+ export declare class McpToolNameValidationError extends Error {
3
+ readonly toolName: string;
4
+ readonly source: string;
5
+ constructor(message: string, toolName: string, source: string);
6
+ }
7
+ export declare function isSafeMcpIdentifierName(name: string): boolean;
8
+ export declare function normalizeMcpToolName(name: string): string;
9
+ export declare function validateMcpToolName(name: string, source: string): string;
10
+ export declare function createClaimedToolNames(names: Iterable<string>): Map<string, string>;
11
+ export declare function addSafeMcpTools(target: ToolsInput, sourceTools: ToolsInput, options: {
12
+ source: string;
13
+ claimedToolNames: Map<string, string>;
14
+ warn?: (error: McpToolNameValidationError) => void;
15
+ }): void;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.McpToolNameValidationError = void 0;
4
+ exports.isSafeMcpIdentifierName = isSafeMcpIdentifierName;
5
+ exports.normalizeMcpToolName = normalizeMcpToolName;
6
+ exports.validateMcpToolName = validateMcpToolName;
7
+ exports.createClaimedToolNames = createClaimedToolNames;
8
+ exports.addSafeMcpTools = addSafeMcpTools;
9
+ const api_types_1 = require("@n8n/api-types");
10
+ class McpToolNameValidationError extends Error {
11
+ toolName;
12
+ source;
13
+ constructor(message, toolName, source) {
14
+ super(message);
15
+ this.toolName = toolName;
16
+ this.source = source;
17
+ this.name = 'McpToolNameValidationError';
18
+ }
19
+ }
20
+ exports.McpToolNameValidationError = McpToolNameValidationError;
21
+ const MCP_TOOL_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9_-]{0,63}$/;
22
+ function isSafeMcpIdentifierName(name) {
23
+ const normalizedName = name.normalize('NFKC');
24
+ return (normalizedName === name &&
25
+ MCP_TOOL_NAME_PATTERN.test(name) &&
26
+ (0, api_types_1.isSafeObjectKey)(normalizedName.toLowerCase()));
27
+ }
28
+ function normalizeMcpToolName(name) {
29
+ return name
30
+ .normalize('NFKC')
31
+ .toLowerCase()
32
+ .replace(/[^a-z0-9]/g, '');
33
+ }
34
+ function validateMcpToolName(name, source) {
35
+ if (!isSafeMcpIdentifierName(name)) {
36
+ throw new McpToolNameValidationError(`MCP tool "${name}" from ${source} has an invalid name`, name, source);
37
+ }
38
+ return normalizeMcpToolName(name);
39
+ }
40
+ function createClaimedToolNames(names) {
41
+ const claimed = new Map();
42
+ for (const name of names) {
43
+ claimed.set(normalizeMcpToolName(name), name);
44
+ }
45
+ return claimed;
46
+ }
47
+ function addSafeMcpTools(target, sourceTools, options) {
48
+ for (const [name, tool] of Object.entries(sourceTools)) {
49
+ try {
50
+ const normalizedName = validateMcpToolName(name, options.source);
51
+ const claimedBy = options.claimedToolNames.get(normalizedName);
52
+ if (claimedBy) {
53
+ throw new McpToolNameValidationError(`MCP tool "${name}" from ${options.source} conflicts with "${claimedBy}"`, name, options.source);
54
+ }
55
+ options.claimedToolNames.set(normalizedName, name);
56
+ target[name] = tool;
57
+ }
58
+ catch (error) {
59
+ if (error instanceof McpToolNameValidationError) {
60
+ options.warn?.(error);
61
+ continue;
62
+ }
63
+ throw error;
64
+ }
65
+ }
66
+ }
67
+ //# sourceMappingURL=mcp-tool-name-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tool-name-validation.js","sourceRoot":"","sources":["../../src/agent/mcp-tool-name-validation.ts"],"names":[],"mappings":";;;AAgBA,0DAOC;AAED,oDAKC;AAED,kDASC;AAED,wDAMC;AAED,0CA8BC;AAhFD,8CAAiD;AAEjD,MAAa,0BAA2B,SAAQ,KAAK;IAG1C;IACA;IAHV,YACC,OAAe,EACN,QAAgB,EAChB,MAAc;QAEvB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QAGvB,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC1C,CAAC;CACD;AATD,gEASC;AAED,MAAM,qBAAqB,GAAG,+BAA+B,CAAC;AAE9D,SAAgB,uBAAuB,CAAC,IAAY;IACnD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO,CACN,cAAc,KAAK,IAAI;QACvB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAA,2BAAe,EAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAC7C,CAAC;AACH,CAAC;AAED,SAAgB,oBAAoB,CAAC,IAAY;IAChD,OAAO,IAAI;SACT,SAAS,CAAC,MAAM,CAAC;SACjB,WAAW,EAAE;SACb,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY,EAAE,MAAc;IAC/D,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,0BAA0B,CACnC,aAAa,IAAI,UAAU,MAAM,sBAAsB,EACvD,IAAI,EACJ,MAAM,CACN,CAAC;IACH,CAAC;IACD,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAAuB;IAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAgB,eAAe,CAC9B,MAAkB,EAClB,WAAuB,EACvB,OAIC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC;YACJ,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACjE,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC/D,IAAI,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,0BAA0B,CACnC,aAAa,IAAI,UAAU,OAAO,CAAC,MAAM,oBAAoB,SAAS,GAAG,EACzE,IAAI,EACJ,OAAO,CAAC,MAAM,CACd,CAAC;YACH,CAAC;YACD,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,0BAA0B,EAAE,CAAC;gBACjD,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;gBACtB,SAAS;YACV,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;AACF,CAAC"}
@@ -1,6 +1,60 @@
1
1
  import type { ToolsInput } from '@mastra/core/agent';
2
2
  import { z } from 'zod';
3
- export declare function sanitizeZodType(schema: z.ZodTypeAny, strict?: boolean): z.ZodTypeAny;
3
+ export declare const MCP_SCHEMA_MAX_DEPTH = 32;
4
+ export declare const MCP_SCHEMA_MAX_NODES = 1000;
5
+ export declare const MCP_SCHEMA_MAX_OBJECT_PROPERTIES = 250;
6
+ export declare const MCP_SCHEMA_MAX_UNION_OPTIONS = 100;
7
+ type McpSchemaLimitType = 'depth' | 'nodes' | 'objectProperties' | 'unionOptions' | 'unsupportedType';
8
+ export declare class McpSchemaSanitizationError extends Error {
9
+ readonly details: {
10
+ toolName?: string;
11
+ path: string;
12
+ depth: number;
13
+ maxDepth: number;
14
+ limit?: number;
15
+ limitType?: McpSchemaLimitType;
16
+ count?: number;
17
+ zodType?: string;
18
+ };
19
+ constructor(message: string, details: {
20
+ toolName?: string;
21
+ path: string;
22
+ depth: number;
23
+ maxDepth: number;
24
+ limit?: number;
25
+ limitType?: McpSchemaLimitType;
26
+ count?: number;
27
+ zodType?: string;
28
+ });
29
+ }
30
+ interface SanitizeBudget {
31
+ nodes: number;
32
+ }
33
+ interface SanitizeZodTypeOptions {
34
+ maxDepth?: number;
35
+ maxNodes?: number;
36
+ maxObjectProperties?: number;
37
+ maxUnionOptions?: number;
38
+ toolName?: string;
39
+ path?: string;
40
+ budget?: SanitizeBudget;
41
+ }
42
+ interface ValidateJsonSchemaOptions {
43
+ maxDepth?: number;
44
+ maxNodes?: number;
45
+ maxObjectProperties?: number;
46
+ maxUnionOptions?: number;
47
+ toolName?: string;
48
+ }
49
+ export declare function assertMcpJsonSchemaWithinLimits(schema: unknown, options?: ValidateJsonSchemaOptions): void;
50
+ export declare function sanitizeZodType(schema: z.ZodTypeAny, strict?: boolean, options?: SanitizeZodTypeOptions): z.ZodTypeAny;
4
51
  export declare function ensureTopLevelObject(schema: z.ZodTypeAny): z.ZodTypeAny;
5
52
  export declare function sanitizeInputSchema<T extends z.ZodTypeAny>(schema: T): T;
6
- export declare function sanitizeMcpToolSchemas(tools: ToolsInput): ToolsInput;
53
+ export declare function sanitizeMcpToolSchemas(tools: ToolsInput, options?: {
54
+ maxDepth?: number;
55
+ maxNodes?: number;
56
+ maxObjectProperties?: number;
57
+ maxUnionOptions?: number;
58
+ onError?: (error: McpSchemaSanitizationError) => void;
59
+ }): ToolsInput;
60
+ export {};