@n8n/instance-ai 1.1.0 → 1.2.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 (373) hide show
  1. package/dist/agent/instance-agent.js +17 -45
  2. package/dist/agent/instance-agent.js.map +1 -1
  3. package/dist/agent/register-with-mastra.d.ts +1 -1
  4. package/dist/agent/register-with-mastra.js +5 -9
  5. package/dist/agent/register-with-mastra.js.map +1 -1
  6. package/dist/agent/sub-agent-briefing.d.ts +20 -0
  7. package/dist/agent/sub-agent-briefing.js +39 -0
  8. package/dist/agent/sub-agent-briefing.js.map +1 -0
  9. package/dist/agent/sub-agent-debriefing.d.ts +71 -0
  10. package/dist/agent/sub-agent-debriefing.js +39 -0
  11. package/dist/agent/sub-agent-debriefing.js.map +1 -0
  12. package/dist/agent/sub-agent-factory.d.ts +1 -1
  13. package/dist/agent/sub-agent-factory.js +15 -3
  14. package/dist/agent/sub-agent-factory.js.map +1 -1
  15. package/dist/agent/system-prompt.d.ts +1 -0
  16. package/dist/agent/system-prompt.js +67 -43
  17. package/dist/agent/system-prompt.js.map +1 -1
  18. package/dist/agent/tool-access.d.ts +2 -0
  19. package/dist/agent/tool-access.js +28 -0
  20. package/dist/agent/tool-access.js.map +1 -0
  21. package/dist/build.tsbuildinfo +1 -1
  22. package/dist/domain-access/domain-gating.d.ts +1 -0
  23. package/dist/domain-access/domain-gating.js +3 -0
  24. package/dist/domain-access/domain-gating.js.map +1 -1
  25. package/dist/index.d.ts +5 -3
  26. package/dist/index.js +13 -4
  27. package/dist/index.js.map +1 -1
  28. package/dist/memory/memory-config.js +1 -3
  29. package/dist/memory/memory-config.js.map +1 -1
  30. package/dist/parsers/structured-file-parser.d.ts +56 -0
  31. package/dist/parsers/structured-file-parser.js +354 -0
  32. package/dist/parsers/structured-file-parser.js.map +1 -0
  33. package/dist/planned-tasks/planned-task-service.js +6 -0
  34. package/dist/planned-tasks/planned-task-service.js.map +1 -1
  35. package/dist/runtime/background-task-manager.d.ts +2 -1
  36. package/dist/runtime/background-task-manager.js +13 -1
  37. package/dist/runtime/background-task-manager.js.map +1 -1
  38. package/dist/runtime/resumable-stream-executor.d.ts +6 -3
  39. package/dist/runtime/resumable-stream-executor.js +66 -119
  40. package/dist/runtime/resumable-stream-executor.js.map +1 -1
  41. package/dist/runtime/stream-runner.d.ts +2 -2
  42. package/dist/runtime/stream-runner.js +4 -25
  43. package/dist/runtime/stream-runner.js.map +1 -1
  44. package/dist/stream/consume-with-hitl.d.ts +4 -1
  45. package/dist/stream/consume-with-hitl.js +11 -2
  46. package/dist/stream/consume-with-hitl.js.map +1 -1
  47. package/dist/stream/map-chunk.d.ts +1 -1
  48. package/dist/stream/map-chunk.js +20 -15
  49. package/dist/stream/map-chunk.js.map +1 -1
  50. package/dist/stream/work-summary-accumulator.d.ts +63 -0
  51. package/dist/stream/work-summary-accumulator.js +66 -0
  52. package/dist/stream/work-summary-accumulator.js.map +1 -0
  53. package/dist/tools/attachments/parse-file.tool.d.ts +90 -0
  54. package/dist/tools/attachments/parse-file.tool.js +135 -0
  55. package/dist/tools/attachments/parse-file.tool.js.map +1 -0
  56. package/dist/tools/best-practices/get-best-practices.tool.d.ts +6 -9
  57. package/dist/tools/best-practices/get-best-practices.tool.js +7 -5
  58. package/dist/tools/best-practices/get-best-practices.tool.js.map +1 -1
  59. package/dist/tools/best-practices/index.js +5 -29
  60. package/dist/tools/best-practices/index.js.map +1 -1
  61. package/dist/tools/best-practices/techniques.d.ts +1 -20
  62. package/dist/tools/best-practices/techniques.js +3 -36
  63. package/dist/tools/best-practices/techniques.js.map +1 -1
  64. package/dist/tools/credentials/delete-credential.tool.d.ts +13 -14
  65. package/dist/tools/credentials/delete-credential.tool.js +18 -11
  66. package/dist/tools/credentials/delete-credential.tool.js.map +1 -1
  67. package/dist/tools/credentials/get-credential.tool.d.ts +8 -2
  68. package/dist/tools/credentials/get-credential.tool.js +13 -7
  69. package/dist/tools/credentials/get-credential.tool.js.map +1 -1
  70. package/dist/tools/credentials/list-credentials.tool.d.ts +13 -3
  71. package/dist/tools/credentials/list-credentials.tool.js +50 -8
  72. package/dist/tools/credentials/list-credentials.tool.js.map +1 -1
  73. package/dist/tools/credentials/search-credential-types.tool.d.ts +7 -3
  74. package/dist/tools/credentials/search-credential-types.tool.js +7 -5
  75. package/dist/tools/credentials/search-credential-types.tool.js.map +1 -1
  76. package/dist/tools/credentials/setup-credentials.tool.d.ts +40 -44
  77. package/dist/tools/credentials/setup-credentials.tool.js +37 -31
  78. package/dist/tools/credentials/setup-credentials.tool.js.map +1 -1
  79. package/dist/tools/credentials/test-credential.tool.d.ts +7 -4
  80. package/dist/tools/credentials/test-credential.tool.js +5 -3
  81. package/dist/tools/credentials/test-credential.tool.js.map +1 -1
  82. package/dist/tools/data-tables/add-data-table-column.tool.d.ts +15 -19
  83. package/dist/tools/data-tables/add-data-table-column.tool.js +16 -9
  84. package/dist/tools/data-tables/add-data-table-column.tool.js.map +1 -1
  85. package/dist/tools/data-tables/create-data-table.tool.d.ts +26 -24
  86. package/dist/tools/data-tables/create-data-table.tool.js +49 -22
  87. package/dist/tools/data-tables/create-data-table.tool.js.map +1 -1
  88. package/dist/tools/data-tables/delete-data-table-column.tool.d.ts +13 -14
  89. package/dist/tools/data-tables/delete-data-table-column.tool.js +15 -8
  90. package/dist/tools/data-tables/delete-data-table-column.tool.js.map +1 -1
  91. package/dist/tools/data-tables/delete-data-table-rows.tool.d.ts +49 -15
  92. package/dist/tools/data-tables/delete-data-table-rows.tool.js +25 -9
  93. package/dist/tools/data-tables/delete-data-table-rows.tool.js.map +1 -1
  94. package/dist/tools/data-tables/delete-data-table.tool.d.ts +11 -14
  95. package/dist/tools/data-tables/delete-data-table.tool.js +17 -9
  96. package/dist/tools/data-tables/delete-data-table.tool.js.map +1 -1
  97. package/dist/tools/data-tables/get-data-table-schema.tool.d.ts +7 -8
  98. package/dist/tools/data-tables/get-data-table-schema.tool.js +5 -3
  99. package/dist/tools/data-tables/get-data-table-schema.tool.js.map +1 -1
  100. package/dist/tools/data-tables/insert-data-table-rows.tool.d.ts +14 -15
  101. package/dist/tools/data-tables/insert-data-table-rows.tool.js +22 -12
  102. package/dist/tools/data-tables/insert-data-table-rows.tool.js.map +1 -1
  103. package/dist/tools/data-tables/list-data-tables.tool.d.ts +7 -3
  104. package/dist/tools/data-tables/list-data-tables.tool.js +8 -6
  105. package/dist/tools/data-tables/list-data-tables.tool.js.map +1 -1
  106. package/dist/tools/data-tables/query-data-table-rows.tool.d.ts +49 -8
  107. package/dist/tools/data-tables/query-data-table-rows.tool.js +14 -12
  108. package/dist/tools/data-tables/query-data-table-rows.tool.js.map +1 -1
  109. package/dist/tools/data-tables/rename-data-table-column.tool.d.ts +15 -14
  110. package/dist/tools/data-tables/rename-data-table-column.tool.js +16 -9
  111. package/dist/tools/data-tables/rename-data-table-column.tool.js.map +1 -1
  112. package/dist/tools/data-tables/update-data-table-rows.tool.d.ts +51 -14
  113. package/dist/tools/data-tables/update-data-table-rows.tool.js +19 -9
  114. package/dist/tools/data-tables/update-data-table-rows.tool.js.map +1 -1
  115. package/dist/tools/executions/debug-execution.tool.d.ts +8 -2
  116. package/dist/tools/executions/debug-execution.tool.js +5 -3
  117. package/dist/tools/executions/debug-execution.tool.js.map +1 -1
  118. package/dist/tools/executions/get-execution.tool.d.ts +8 -2
  119. package/dist/tools/executions/get-execution.tool.js +5 -3
  120. package/dist/tools/executions/get-execution.tool.js.map +1 -1
  121. package/dist/tools/executions/get-node-output.tool.d.ts +14 -2
  122. package/dist/tools/executions/get-node-output.tool.js +14 -17
  123. package/dist/tools/executions/get-node-output.tool.js.map +1 -1
  124. package/dist/tools/executions/list-executions.tool.d.ts +11 -3
  125. package/dist/tools/executions/list-executions.tool.js +16 -14
  126. package/dist/tools/executions/list-executions.tool.js.map +1 -1
  127. package/dist/tools/executions/run-workflow.tool.d.ts +17 -15
  128. package/dist/tools/executions/run-workflow.tool.js +35 -25
  129. package/dist/tools/executions/run-workflow.tool.js.map +1 -1
  130. package/dist/tools/executions/stop-execution.tool.d.ts +7 -4
  131. package/dist/tools/executions/stop-execution.tool.js +8 -3
  132. package/dist/tools/executions/stop-execution.tool.js.map +1 -1
  133. package/dist/tools/filesystem/create-tools-from-mcp-server.js +2 -1
  134. package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
  135. package/dist/tools/index.d.ts +67 -2380
  136. package/dist/tools/index.js +9 -15
  137. package/dist/tools/index.js.map +1 -1
  138. package/dist/tools/nodes/explore-node-resources.tool.d.ts +23 -10
  139. package/dist/tools/nodes/explore-node-resources.tool.js +27 -25
  140. package/dist/tools/nodes/explore-node-resources.tool.js.map +1 -1
  141. package/dist/tools/nodes/get-node-description.tool.d.ts +7 -20
  142. package/dist/tools/nodes/get-node-description.tool.js +5 -3
  143. package/dist/tools/nodes/get-node-description.tool.js.map +1 -1
  144. package/dist/tools/nodes/get-node-type-definition.tool.d.ts +29 -6
  145. package/dist/tools/nodes/get-node-type-definition.tool.js +9 -7
  146. package/dist/tools/nodes/get-node-type-definition.tool.js.map +1 -1
  147. package/dist/tools/nodes/get-suggested-nodes.tool.d.ts +7 -12
  148. package/dist/tools/nodes/get-suggested-nodes.tool.js +9 -7
  149. package/dist/tools/nodes/get-suggested-nodes.tool.js.map +1 -1
  150. package/dist/tools/nodes/list-nodes.tool.d.ts +7 -3
  151. package/dist/tools/nodes/list-nodes.tool.js +8 -6
  152. package/dist/tools/nodes/list-nodes.tool.js.map +1 -1
  153. package/dist/tools/nodes/node-search-engine.d.ts +1 -0
  154. package/dist/tools/nodes/node-search-engine.js +12 -9
  155. package/dist/tools/nodes/node-search-engine.js.map +1 -1
  156. package/dist/tools/nodes/search-nodes.tool.d.ts +12 -24
  157. package/dist/tools/nodes/search-nodes.tool.js +21 -17
  158. package/dist/tools/nodes/search-nodes.tool.js.map +1 -1
  159. package/dist/tools/orchestration/add-plan-item.tool.d.ts +5 -0
  160. package/dist/tools/orchestration/add-plan-item.tool.js +91 -0
  161. package/dist/tools/orchestration/add-plan-item.tool.js.map +1 -0
  162. package/dist/tools/orchestration/blueprint-accumulator.d.ts +50 -0
  163. package/dist/tools/orchestration/blueprint-accumulator.js +215 -0
  164. package/dist/tools/orchestration/blueprint-accumulator.js.map +1 -0
  165. package/dist/tools/orchestration/blueprint.schema.d.ts +271 -0
  166. package/dist/tools/orchestration/blueprint.schema.js +61 -0
  167. package/dist/tools/orchestration/blueprint.schema.js.map +1 -0
  168. package/dist/tools/orchestration/browser-credential-setup.tool.d.ts +15 -12
  169. package/dist/tools/orchestration/browser-credential-setup.tool.js +26 -21
  170. package/dist/tools/orchestration/browser-credential-setup.tool.js.map +1 -1
  171. package/dist/tools/orchestration/build-workflow-agent.prompt.d.ts +1 -1
  172. package/dist/tools/orchestration/build-workflow-agent.prompt.js +43 -149
  173. package/dist/tools/orchestration/build-workflow-agent.prompt.js.map +1 -1
  174. package/dist/tools/orchestration/build-workflow-agent.tool.d.ts +11 -4
  175. package/dist/tools/orchestration/build-workflow-agent.tool.js +50 -82
  176. package/dist/tools/orchestration/build-workflow-agent.tool.js.map +1 -1
  177. package/dist/tools/orchestration/cancel-background-task.tool.d.ts +7 -3
  178. package/dist/tools/orchestration/cancel-background-task.tool.js +5 -3
  179. package/dist/tools/orchestration/cancel-background-task.tool.js.map +1 -1
  180. package/dist/tools/orchestration/correct-background-task.tool.d.ts +9 -3
  181. package/dist/tools/orchestration/correct-background-task.tool.js +8 -6
  182. package/dist/tools/orchestration/correct-background-task.tool.js.map +1 -1
  183. package/dist/tools/orchestration/data-table-agent.prompt.d.ts +1 -1
  184. package/dist/tools/orchestration/data-table-agent.prompt.js +20 -0
  185. package/dist/tools/orchestration/data-table-agent.prompt.js.map +1 -1
  186. package/dist/tools/orchestration/data-table-agent.tool.d.ts +9 -4
  187. package/dist/tools/orchestration/data-table-agent.tool.js +22 -25
  188. package/dist/tools/orchestration/data-table-agent.tool.js.map +1 -1
  189. package/dist/tools/orchestration/delegate.schemas.d.ts +12 -0
  190. package/dist/tools/orchestration/delegate.schemas.js +17 -0
  191. package/dist/tools/orchestration/delegate.schemas.js.map +1 -1
  192. package/dist/tools/orchestration/delegate.tool.d.ts +1 -10
  193. package/dist/tools/orchestration/delegate.tool.js +40 -41
  194. package/dist/tools/orchestration/delegate.tool.js.map +1 -1
  195. package/dist/tools/orchestration/plan-agent-prompt.d.ts +1 -0
  196. package/dist/tools/orchestration/plan-agent-prompt.js +76 -0
  197. package/dist/tools/orchestration/plan-agent-prompt.js.map +1 -0
  198. package/dist/tools/orchestration/plan-with-agent.tool.d.ts +2 -0
  199. package/dist/tools/orchestration/plan-with-agent.tool.js +277 -0
  200. package/dist/tools/orchestration/plan-with-agent.tool.js.map +1 -0
  201. package/dist/tools/orchestration/plan.tool.d.ts +7 -39
  202. package/dist/tools/orchestration/plan.tool.js +15 -13
  203. package/dist/tools/orchestration/plan.tool.js.map +1 -1
  204. package/dist/tools/orchestration/report-verification-verdict.tool.d.ts +23 -3
  205. package/dist/tools/orchestration/report-verification-verdict.tool.js +27 -28
  206. package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
  207. package/dist/tools/orchestration/research-with-agent.tool.d.ts +11 -4
  208. package/dist/tools/orchestration/research-with-agent.tool.js +25 -21
  209. package/dist/tools/orchestration/research-with-agent.tool.js.map +1 -1
  210. package/dist/tools/orchestration/submit-plan.tool.d.ts +3 -0
  211. package/dist/tools/orchestration/submit-plan.tool.js +81 -0
  212. package/dist/tools/orchestration/submit-plan.tool.js.map +1 -0
  213. package/dist/tools/orchestration/update-tasks.tool.d.ts +1 -9
  214. package/dist/tools/orchestration/update-tasks.tool.js.map +1 -1
  215. package/dist/tools/orchestration/verify-built-workflow.tool.d.ts +13 -7
  216. package/dist/tools/orchestration/verify-built-workflow.tool.js +14 -15
  217. package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
  218. package/dist/tools/shared/ask-user.tool.d.ts +42 -31
  219. package/dist/tools/shared/ask-user.tool.js +16 -15
  220. package/dist/tools/shared/ask-user.tool.js.map +1 -1
  221. package/dist/tools/templates/search-template-parameters.tool.d.ts +14 -7
  222. package/dist/tools/templates/search-template-parameters.tool.js +17 -15
  223. package/dist/tools/templates/search-template-parameters.tool.js.map +1 -1
  224. package/dist/tools/templates/search-template-structures.tool.d.ts +11 -8
  225. package/dist/tools/templates/search-template-structures.tool.js +13 -11
  226. package/dist/tools/templates/search-template-structures.tool.js.map +1 -1
  227. package/dist/tools/web-research/fetch-url.tool.d.ts +9 -23
  228. package/dist/tools/web-research/fetch-url.tool.js +30 -14
  229. package/dist/tools/web-research/fetch-url.tool.js.map +1 -1
  230. package/dist/tools/web-research/web-search.tool.d.ts +12 -2
  231. package/dist/tools/web-research/web-search.tool.js +20 -18
  232. package/dist/tools/web-research/web-search.tool.js.map +1 -1
  233. package/dist/tools/workflows/apply-workflow-credentials.tool.d.ts +11 -5
  234. package/dist/tools/workflows/apply-workflow-credentials.tool.js +7 -5
  235. package/dist/tools/workflows/apply-workflow-credentials.tool.js.map +1 -1
  236. package/dist/tools/workflows/build-workflow.tool.d.ts +26 -5
  237. package/dist/tools/workflows/build-workflow.tool.js +23 -20
  238. package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
  239. package/dist/tools/workflows/delete-workflow.tool.d.ts +13 -14
  240. package/dist/tools/workflows/delete-workflow.tool.js +15 -11
  241. package/dist/tools/workflows/delete-workflow.tool.js.map +1 -1
  242. package/dist/tools/workflows/get-workflow-as-code.tool.d.ts +6 -10
  243. package/dist/tools/workflows/get-workflow-as-code.tool.js +5 -3
  244. package/dist/tools/workflows/get-workflow-as-code.tool.js.map +1 -1
  245. package/dist/tools/workflows/get-workflow-version.tool.d.ts +8 -16
  246. package/dist/tools/workflows/get-workflow-version.tool.js +6 -4
  247. package/dist/tools/workflows/get-workflow-version.tool.js.map +1 -1
  248. package/dist/tools/workflows/get-workflow.tool.d.ts +7 -15
  249. package/dist/tools/workflows/get-workflow.tool.js +5 -3
  250. package/dist/tools/workflows/get-workflow.tool.js.map +1 -1
  251. package/dist/tools/workflows/list-workflow-versions.tool.d.ts +11 -3
  252. package/dist/tools/workflows/list-workflow-versions.tool.js +13 -11
  253. package/dist/tools/workflows/list-workflow-versions.tool.js.map +1 -1
  254. package/dist/tools/workflows/list-workflows.tool.d.ts +9 -10
  255. package/dist/tools/workflows/list-workflows.tool.js +12 -10
  256. package/dist/tools/workflows/list-workflows.tool.js.map +1 -1
  257. package/dist/tools/workflows/materialize-node-type.tool.d.ts +29 -11
  258. package/dist/tools/workflows/materialize-node-type.tool.js +9 -7
  259. package/dist/tools/workflows/materialize-node-type.tool.js.map +1 -1
  260. package/dist/tools/workflows/publish-workflow.tool.d.ts +6 -20
  261. package/dist/tools/workflows/publish-workflow.tool.js +29 -24
  262. package/dist/tools/workflows/publish-workflow.tool.js.map +1 -1
  263. package/dist/tools/workflows/restore-workflow-version.tool.d.ts +13 -15
  264. package/dist/tools/workflows/restore-workflow-version.tool.js +15 -8
  265. package/dist/tools/workflows/restore-workflow-version.tool.js.map +1 -1
  266. package/dist/tools/workflows/setup-workflow.service.d.ts +0 -1
  267. package/dist/tools/workflows/setup-workflow.service.js +23 -6
  268. package/dist/tools/workflows/setup-workflow.service.js.map +1 -1
  269. package/dist/tools/workflows/setup-workflow.tool.d.ts +7 -144
  270. package/dist/tools/workflows/setup-workflow.tool.js +10 -14
  271. package/dist/tools/workflows/setup-workflow.tool.js.map +1 -1
  272. package/dist/tools/workflows/submit-workflow.tool.d.ts +12 -9
  273. package/dist/tools/workflows/submit-workflow.tool.js +15 -17
  274. package/dist/tools/workflows/submit-workflow.tool.js.map +1 -1
  275. package/dist/tools/workflows/unpublish-workflow.tool.d.ts +13 -15
  276. package/dist/tools/workflows/unpublish-workflow.tool.js +15 -11
  277. package/dist/tools/workflows/unpublish-workflow.tool.js.map +1 -1
  278. package/dist/tools/workflows/update-workflow-version.tool.d.ts +13 -3
  279. package/dist/tools/workflows/update-workflow-version.tool.js +12 -10
  280. package/dist/tools/workflows/update-workflow-version.tool.js.map +1 -1
  281. package/dist/tools/workflows/write-sandbox-file.tool.d.ts +9 -9
  282. package/dist/tools/workflows/write-sandbox-file.tool.js +8 -6
  283. package/dist/tools/workflows/write-sandbox-file.tool.js.map +1 -1
  284. package/dist/tools/workspace/cleanup-test-executions.tool.d.ts +15 -14
  285. package/dist/tools/workspace/cleanup-test-executions.tool.js +19 -15
  286. package/dist/tools/workspace/cleanup-test-executions.tool.js.map +1 -1
  287. package/dist/tools/workspace/create-folder.tool.d.ts +15 -16
  288. package/dist/tools/workspace/create-folder.tool.js +25 -12
  289. package/dist/tools/workspace/create-folder.tool.js.map +1 -1
  290. package/dist/tools/workspace/delete-folder.tool.d.ts +19 -14
  291. package/dist/tools/workspace/delete-folder.tool.js +24 -17
  292. package/dist/tools/workspace/delete-folder.tool.js.map +1 -1
  293. package/dist/tools/workspace/list-folders.tool.d.ts +7 -3
  294. package/dist/tools/workspace/list-folders.tool.js +5 -3
  295. package/dist/tools/workspace/list-folders.tool.js.map +1 -1
  296. package/dist/tools/workspace/list-projects.tool.d.ts +3 -3
  297. package/dist/tools/workspace/list-projects.tool.js +3 -1
  298. package/dist/tools/workspace/list-projects.tool.js.map +1 -1
  299. package/dist/tools/workspace/list-tags.tool.d.ts +3 -6
  300. package/dist/tools/workspace/list-tags.tool.js +3 -1
  301. package/dist/tools/workspace/list-tags.tool.js.map +1 -1
  302. package/dist/tools/workspace/move-workflow-to-folder.tool.d.ts +17 -14
  303. package/dist/tools/workspace/move-workflow-to-folder.tool.js +20 -16
  304. package/dist/tools/workspace/move-workflow-to-folder.tool.js.map +1 -1
  305. package/dist/tools/workspace/tag-workflow.tool.d.ts +15 -14
  306. package/dist/tools/workspace/tag-workflow.tool.js +16 -12
  307. package/dist/tools/workspace/tag-workflow.tool.js.map +1 -1
  308. package/dist/tracing/langsmith-tracing.d.ts +1 -0
  309. package/dist/tracing/langsmith-tracing.js +47 -57
  310. package/dist/tracing/langsmith-tracing.js.map +1 -1
  311. package/dist/types.d.ts +24 -50
  312. package/dist/utils/eval-agents.d.ts +10 -0
  313. package/dist/utils/eval-agents.js +54 -0
  314. package/dist/utils/eval-agents.js.map +1 -0
  315. package/dist/workflow-builder/sdk-prompt-sections.d.ts +1 -4
  316. package/dist/workflow-builder/sdk-prompt-sections.js +5 -513
  317. package/dist/workflow-builder/sdk-prompt-sections.js.map +1 -1
  318. package/dist/workflow-loop/guidance.js +3 -5
  319. package/dist/workflow-loop/guidance.js.map +1 -1
  320. package/dist/workspace/daytona-filesystem.js +15 -1
  321. package/dist/workspace/daytona-filesystem.js.map +1 -1
  322. package/package.json +15 -9
  323. package/dist/memory/working-memory-template.d.ts +0 -1
  324. package/dist/memory/working-memory-template.js +0 -25
  325. package/dist/memory/working-memory-template.js.map +0 -1
  326. package/dist/runtime/working-memory-tracing.d.ts +0 -19
  327. package/dist/runtime/working-memory-tracing.js +0 -111
  328. package/dist/runtime/working-memory-tracing.js.map +0 -1
  329. package/dist/tools/best-practices/guides/chatbot.d.ts +0 -1
  330. package/dist/tools/best-practices/guides/chatbot.js +0 -111
  331. package/dist/tools/best-practices/guides/chatbot.js.map +0 -1
  332. package/dist/tools/best-practices/guides/content-generation.d.ts +0 -1
  333. package/dist/tools/best-practices/guides/content-generation.js +0 -108
  334. package/dist/tools/best-practices/guides/content-generation.js.map +0 -1
  335. package/dist/tools/best-practices/guides/data-extraction.d.ts +0 -1
  336. package/dist/tools/best-practices/guides/data-extraction.js +0 -115
  337. package/dist/tools/best-practices/guides/data-extraction.js.map +0 -1
  338. package/dist/tools/best-practices/guides/data-persistence.d.ts +0 -1
  339. package/dist/tools/best-practices/guides/data-persistence.js +0 -198
  340. package/dist/tools/best-practices/guides/data-persistence.js.map +0 -1
  341. package/dist/tools/best-practices/guides/data-transformation.d.ts +0 -1
  342. package/dist/tools/best-practices/guides/data-transformation.js +0 -139
  343. package/dist/tools/best-practices/guides/data-transformation.js.map +0 -1
  344. package/dist/tools/best-practices/guides/document-processing.d.ts +0 -1
  345. package/dist/tools/best-practices/guides/document-processing.js +0 -326
  346. package/dist/tools/best-practices/guides/document-processing.js.map +0 -1
  347. package/dist/tools/best-practices/guides/form-input.d.ts +0 -1
  348. package/dist/tools/best-practices/guides/form-input.js +0 -166
  349. package/dist/tools/best-practices/guides/form-input.js.map +0 -1
  350. package/dist/tools/best-practices/guides/notification.d.ts +0 -1
  351. package/dist/tools/best-practices/guides/notification.js +0 -128
  352. package/dist/tools/best-practices/guides/notification.js.map +0 -1
  353. package/dist/tools/best-practices/guides/scheduling.d.ts +0 -1
  354. package/dist/tools/best-practices/guides/scheduling.js +0 -145
  355. package/dist/tools/best-practices/guides/scheduling.js.map +0 -1
  356. package/dist/tools/best-practices/guides/scraping-and-research.d.ts +0 -1
  357. package/dist/tools/best-practices/guides/scraping-and-research.js +0 -151
  358. package/dist/tools/best-practices/guides/scraping-and-research.js.map +0 -1
  359. package/dist/tools/best-practices/guides/triage.d.ts +0 -1
  360. package/dist/tools/best-practices/guides/triage.js +0 -142
  361. package/dist/tools/best-practices/guides/triage.js.map +0 -1
  362. package/dist/tools/filesystem/get-file-tree.tool.d.ts +0 -22
  363. package/dist/tools/filesystem/get-file-tree.tool.js +0 -64
  364. package/dist/tools/filesystem/get-file-tree.tool.js.map +0 -1
  365. package/dist/tools/filesystem/list-files.tool.d.ts +0 -30
  366. package/dist/tools/filesystem/list-files.tool.js +0 -100
  367. package/dist/tools/filesystem/list-files.tool.js.map +0 -1
  368. package/dist/tools/filesystem/read-file.tool.d.ts +0 -25
  369. package/dist/tools/filesystem/read-file.tool.js +0 -83
  370. package/dist/tools/filesystem/read-file.tool.js.map +0 -1
  371. package/dist/tools/filesystem/search-files.tool.d.ts +0 -31
  372. package/dist/tools/filesystem/search-files.tool.js +0 -96
  373. package/dist/tools/filesystem/search-files.tool.js.map +0 -1
@@ -1,142 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDocumentation = getDocumentation;
4
- function getDocumentation() {
5
- return `# Best Practices: Triage Workflows
6
-
7
- ## Workflow Design
8
-
9
- Triage workflows automatically classify incoming data and route it based on priority or category. Common use cases include sorting support tickets by urgency, categorizing emails for follow-up, or scoring leads for sales routing.
10
-
11
- Define clear categories and outcomes before building. Design in logical stages:
12
-
13
- 1. **Trigger & Input**: Capture incoming items (webhook, email trigger, form submission, schedule)
14
- 2. **Preprocessing**: Fetch additional data if needed (CRM lookup, field normalization)
15
- 3. **Classification**: Assign categories via rules or AI
16
- 4. **Routing**: Direct items to appropriate branches using Switch node or Text Classifier Node
17
- 5. **Actions**: Execute category-specific tasks (create tasks, send alerts, update records)
18
- 6. **Logging**: Track outcomes for monitoring and analysis
19
-
20
- Include a default/fallback path to catch unclassified items so data is tracked rather than dropped silently.
21
-
22
- ## Classification Strategies
23
-
24
- ### Rule-Based Classification
25
- Use IF/Switch nodes for keyword detection, sender addresses, or numeric thresholds. Chain multiple conditions or use Switch for multi-way branching.
26
-
27
- Example: IF email contains "urgent" -> High Priority branch
28
-
29
- ### AI-Powered Classification
30
- For unstructured text or nuanced decisions, use AI nodes with clear prompts and defined output labels.
31
-
32
- Example prompt: "Classify this email as INTERESTED, NOT_INTERESTED, or QUESTION"
33
-
34
- Best practices:
35
- - Use structured output format (JSON with specific fields)
36
- - Set low temperature parameter of the model (0-0.2) for consistency
37
- - Include few-shot examples of input + classification
38
- - Implement error handling for unexpected outputs
39
-
40
- #### Text Classifier Node
41
- Use the Text Classifier node (@n8n/n8n-nodes-langchain.textClassifier) for straightforward text classification tasks. Configure with predefined category labels and descriptions for accurate results.
42
-
43
- Example workflow pattern:
44
- \`\`\`mermaid
45
- flowchart LR
46
- A[Webhook Trigger] --> B[Set: Normalize Data]
47
- B --> C[Text Classifier]
48
- C --> D{Switch: Route by Category}
49
- D -->|High Priority| E[Slack: Alert Team]
50
- D -->|Medium Priority| F[Create Task]
51
- D -->|Low Priority| G[Log to Sheet]
52
- D -->|Default| H[Manual Review]
53
- \`\`\`
54
-
55
- ### Combined Approach
56
- For robust triage, combine rule-based and AI classification. Use AI Agent node with structured output to assign categories, scores, or tags, then route with Switch nodes.
57
- When using AI with structured output, always add reasoning field alongside category or score to aid debugging.
58
-
59
- Example workflow pattern:
60
- \`\`\`mermaid
61
- flowchart LR
62
- A[Email Trigger] --> B[Set: Extract Fields]
63
- B --> C{IF: Contains Keywords}
64
- C -->|Yes| D[Set: Rule-based Category]
65
- C -->|No| E[AI Agent: Classify with Structured Output]
66
- D --> F[Merge]
67
- E --> F
68
- F --> G{Switch: Route by Category}
69
- G -->|Category A| H[Action A]
70
- G -->|Category B| I[Action B]
71
- G -->|Default| J[Manual Review]
72
- \`\`\`
73
-
74
- **Structured Output Schema Example:**
75
- \`\`\`json
76
- {
77
- "category": "INTERESTED | NOT_INTERESTED | QUESTION",
78
- "confidence": 0.95,
79
- "reasoning": "Customer asked about pricing and availability"
80
- }
81
- \`\`\`
82
-
83
- ## Routing & Branching
84
-
85
- Use Switch node as primary traffic controller:
86
- - Configure cases for each classification value
87
- - Always define Default case for unexpected values
88
- - Each item follows exactly one branch
89
-
90
- Avoid parallel IF nodes that could match multiple conditions - use Switch node.
91
-
92
- ## Recommended Nodes
93
-
94
- **IF** (n8n-nodes-base.if):
95
- - Purpose: Simple binary decisions
96
- - Use when: Two-way branching based on conditions
97
- - Example: Check if priority field equals "high"
98
-
99
- **Switch** (n8n-nodes-base.switch):
100
- - Purpose: Multi-way branching based on field values
101
- - Use when: Multiple categories (3+ outcomes)
102
- - Configure Default output for unmatched items
103
-
104
- **Merge** (n8n-nodes-base.merge):
105
- - Purpose: Consolidate branches for unified logging
106
- - Use after: Category-specific actions before final logging step
107
-
108
- **Text Classifier** (@n8n/n8n-nodes-langchain.textClassifier):
109
- - Purpose: AI-powered text classification with predefined labels
110
- - Use when: Need to assign categories to unstructured text
111
- - Configure "When No Clear Match" option to output items to "Other" branch
112
-
113
- **AI Agent** (@n8n/n8n-nodes-langchain.agent):
114
- - Purpose: Complex classification or scoring requiring multiple steps or tool use
115
- - Use when: Classification needs context lookup, multi-step reasoning with tools, numerical scoring or other complex outputs
116
- - Use structured output format (JSON schema)
117
-
118
- For all AI nodes (Text Classifier, AI Agent):
119
- - Set low temperature of the model (0-0.2) for consistency
120
- - Include few-shot examples in prompts
121
-
122
- ## Common Pitfalls to Avoid
123
-
124
- ### No Default Path
125
- **Problem**: Every Switch must have a Default output. Unmatched items should go to manual review or logging, never drop silently.
126
-
127
- **Solution**: Always configure Default case to route unclassified items to a fallback action (e.g., manual review queue, admin notification)
128
-
129
- ### No "Other" Branch in Text Classifier
130
- **Problem**: Items that don't match any category get dropped if "When No Clear Match" isn't set.
131
-
132
- **Solution**: In Text Classifier node, set "When No Clear Match" to "Output on Extra, 'Other' Branch" to capture unmatched items.
133
-
134
- ### Overlapping Conditions
135
- **Problem**: Categories must be mutually exclusive. Items matching multiple conditions cause unpredictable routing.
136
-
137
- **Solution**:
138
- - Order checks from most specific to general
139
- - Use Switch with distinct values instead of multiple IF nodes
140
- `;
141
- }
142
- //# sourceMappingURL=triage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"triage.js","sourceRoot":"","sources":["../../../../src/tools/best-practices/guides/triage.ts"],"names":[],"mappings":";;AAAA,4CAyIC;AAzID,SAAgB,gBAAgB;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuIP,CAAC;AACF,CAAC"}
@@ -1,22 +0,0 @@
1
- import type { InstanceAiContext } from '../../types';
2
- export declare function createGetFileTreeTool(context: InstanceAiContext): import("@mastra/core/tools").Tool<{
3
- dirPath: string;
4
- maxDepth?: number | undefined;
5
- }, {
6
- tree: string;
7
- truncated: boolean;
8
- denied?: boolean | undefined;
9
- reason?: string | undefined;
10
- }, {
11
- message: string;
12
- requestId: string;
13
- severity: "destructive" | "warning" | "info";
14
- }, {
15
- approved: boolean;
16
- }, import("@mastra/core/tools").ToolExecutionContext<{
17
- message: string;
18
- requestId: string;
19
- severity: "destructive" | "warning" | "info";
20
- }, {
21
- approved: boolean;
22
- }, unknown>, "get-file-tree", unknown>;
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createGetFileTreeTool = createGetFileTreeTool;
4
- const tools_1 = require("@mastra/core/tools");
5
- const api_types_1 = require("@n8n/api-types");
6
- const nanoid_1 = require("nanoid");
7
- const zod_1 = require("zod");
8
- function createGetFileTreeTool(context) {
9
- return (0, tools_1.createTool)({
10
- id: 'get-file-tree',
11
- description: 'Get a shallow directory tree. Start at depth 1-2 for an overview, then call again on specific subdirectories to drill deeper. Always use absolute paths or ~/relative paths.',
12
- inputSchema: zod_1.z.object({
13
- dirPath: zod_1.z
14
- .string()
15
- .describe('Absolute directory path or ~/relative path (e.g. "/home/user/project" or "~/project/src"). Call with subdirectory paths to explore deeper.'),
16
- maxDepth: zod_1.z
17
- .number()
18
- .int()
19
- .positive()
20
- .max(5)
21
- .default(2)
22
- .optional()
23
- .describe('Maximum directory depth to show (default 2, max 5). Start low and increase only if needed.'),
24
- }),
25
- outputSchema: zod_1.z.object({
26
- tree: zod_1.z.string().describe('Directory tree as indented text'),
27
- truncated: zod_1.z.boolean(),
28
- denied: zod_1.z.boolean().optional(),
29
- reason: zod_1.z.string().optional(),
30
- }),
31
- suspendSchema: zod_1.z.object({
32
- requestId: zod_1.z.string(),
33
- message: zod_1.z.string(),
34
- severity: api_types_1.instanceAiConfirmationSeveritySchema,
35
- }),
36
- resumeSchema: zod_1.z.object({
37
- approved: zod_1.z.boolean(),
38
- }),
39
- execute: async ({ dirPath, maxDepth }, ctx) => {
40
- const { resumeData, suspend } = ctx?.agent ?? {};
41
- const needsApproval = context.permissions?.readFilesystem !== 'always_allow';
42
- if (needsApproval && (resumeData === undefined || resumeData === null)) {
43
- await suspend?.({
44
- requestId: (0, nanoid_1.nanoid)(),
45
- message: `Read filesystem tree at "${dirPath}"?`,
46
- severity: 'info',
47
- });
48
- return { tree: '', truncated: false };
49
- }
50
- if (resumeData !== undefined && resumeData !== null && !resumeData.approved) {
51
- return { tree: '', truncated: false, denied: true, reason: 'User denied the action' };
52
- }
53
- if (!context.filesystemService) {
54
- throw new Error('No filesystem access available.');
55
- }
56
- const tree = await context.filesystemService.getFileTree(dirPath, {
57
- maxDepth: maxDepth ?? 2,
58
- });
59
- const truncated = tree.includes('call get-file-tree on a subdirectory') || tree.includes('... (truncated at');
60
- return { tree, truncated };
61
- },
62
- });
63
- }
64
- //# sourceMappingURL=get-file-tree.tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-file-tree.tool.js","sourceRoot":"","sources":["../../../src/tools/filesystem/get-file-tree.tool.ts"],"names":[],"mappings":";;AAOA,sDAiEC;AAxED,8CAAgD;AAChD,8CAAsE;AACtE,mCAAgC;AAChC,6BAAwB;AAIxB,SAAgB,qBAAqB,CAAC,OAA0B;IAC/D,OAAO,IAAA,kBAAU,EAAC;QACjB,EAAE,EAAE,eAAe;QACnB,WAAW,EACV,8KAA8K;QAC/K,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,OAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CACR,4IAA4I,CAC5I;YACF,QAAQ,EAAE,OAAC;iBACT,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,GAAG,CAAC,CAAC,CAAC;iBACN,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,EAAE;iBACV,QAAQ,CACR,4FAA4F,CAC5F;SACF,CAAC;QACF,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAC5D,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE;YACtB,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAC9B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC7B,CAAC;QACF,aAAa,EAAE,OAAC,CAAC,MAAM,CAAC;YACvB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;YACrB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;YACnB,QAAQ,EAAE,gDAAoC;SAC9C,CAAC;QACF,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC;YACtB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE;SACrB,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;YAC7C,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;YACjD,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,cAAc,KAAK,cAAc,CAAC;YAE7E,IAAI,aAAa,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,CAAC,EAAE,CAAC;gBACxE,MAAM,OAAO,EAAE,CAAC;oBACf,SAAS,EAAE,IAAA,eAAM,GAAE;oBACnB,OAAO,EAAE,4BAA4B,OAAO,IAAI;oBAChD,QAAQ,EAAE,MAAe;iBACzB,CAAC,CAAC;gBACH,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YACvC,CAAC;YAED,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;YACvF,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE;gBACjE,QAAQ,EAAE,QAAQ,IAAI,CAAC;aACvB,CAAC,CAAC;YACH,MAAM,SAAS,GACd,IAAI,CAAC,QAAQ,CAAC,sCAAsC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YAE7F,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC5B,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
@@ -1,30 +0,0 @@
1
- import type { InstanceAiContext } from '../../types';
2
- export declare function createListFilesTool(context: InstanceAiContext): import("@mastra/core/tools").Tool<{
3
- dirPath: string;
4
- type?: "directory" | "file" | "all" | undefined;
5
- recursive?: boolean | undefined;
6
- pattern?: string | undefined;
7
- maxResults?: number | undefined;
8
- }, {
9
- files: {
10
- type: "directory" | "file";
11
- path: string;
12
- sizeBytes?: number | undefined;
13
- }[];
14
- truncated: boolean;
15
- totalCount: number;
16
- denied?: boolean | undefined;
17
- reason?: string | undefined;
18
- }, {
19
- message: string;
20
- requestId: string;
21
- severity: "destructive" | "warning" | "info";
22
- }, {
23
- approved: boolean;
24
- }, import("@mastra/core/tools").ToolExecutionContext<{
25
- message: string;
26
- requestId: string;
27
- severity: "destructive" | "warning" | "info";
28
- }, {
29
- approved: boolean;
30
- }, unknown>, "list-files", unknown>;
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createListFilesTool = createListFilesTool;
4
- const tools_1 = require("@mastra/core/tools");
5
- const api_types_1 = require("@n8n/api-types");
6
- const nanoid_1 = require("nanoid");
7
- const zod_1 = require("zod");
8
- function createListFilesTool(context) {
9
- return (0, tools_1.createTool)({
10
- id: 'list-files',
11
- description: "List files and/or directories matching optional filters. Use this to explore what exists in a directory. To see only top-level folders, set type='directory' and recursive=false. Always use absolute paths or ~/relative paths.",
12
- inputSchema: zod_1.z.object({
13
- dirPath: zod_1.z
14
- .string()
15
- .describe('Absolute directory path or ~/relative path (e.g. "/home/user/project" or "~/project"). Do NOT use bare relative paths.'),
16
- pattern: zod_1.z
17
- .string()
18
- .optional()
19
- .describe('Glob pattern to filter files (e.g. "**/*.ts", "src/**/*.json")'),
20
- type: zod_1.z
21
- .enum(['file', 'directory', 'all'])
22
- .default('all')
23
- .optional()
24
- .describe('Filter by entry type: "file" for files only, "directory" for folders only, "all" for both (default "all")'),
25
- recursive: zod_1.z
26
- .boolean()
27
- .default(true)
28
- .optional()
29
- .describe('Whether to recurse into subdirectories (default true). Set to false for a shallow listing of immediate children only.'),
30
- maxResults: zod_1.z
31
- .number()
32
- .int()
33
- .positive()
34
- .max(1000)
35
- .default(200)
36
- .optional()
37
- .describe('Maximum number of results to return (default 200, max 1000)'),
38
- }),
39
- outputSchema: zod_1.z.object({
40
- files: zod_1.z.array(zod_1.z.object({
41
- path: zod_1.z.string(),
42
- type: zod_1.z.enum(['file', 'directory']),
43
- sizeBytes: zod_1.z.number().optional(),
44
- })),
45
- truncated: zod_1.z.boolean(),
46
- totalCount: zod_1.z.number(),
47
- denied: zod_1.z.boolean().optional(),
48
- reason: zod_1.z.string().optional(),
49
- }),
50
- suspendSchema: zod_1.z.object({
51
- requestId: zod_1.z.string(),
52
- message: zod_1.z.string(),
53
- severity: api_types_1.instanceAiConfirmationSeveritySchema,
54
- }),
55
- resumeSchema: zod_1.z.object({
56
- approved: zod_1.z.boolean(),
57
- }),
58
- execute: async ({ dirPath, pattern, maxResults, type, recursive }, ctx) => {
59
- const { resumeData, suspend } = ctx?.agent ?? {};
60
- const needsApproval = context.permissions?.readFilesystem !== 'always_allow';
61
- if (needsApproval && (resumeData === undefined || resumeData === null)) {
62
- await suspend?.({
63
- requestId: (0, nanoid_1.nanoid)(),
64
- message: `List files in "${dirPath}"?`,
65
- severity: 'info',
66
- });
67
- return { files: [], truncated: false, totalCount: 0 };
68
- }
69
- if (resumeData !== undefined && resumeData !== null && !resumeData.approved) {
70
- return {
71
- files: [],
72
- truncated: false,
73
- totalCount: 0,
74
- denied: true,
75
- reason: 'User denied the action',
76
- };
77
- }
78
- if (!context.filesystemService) {
79
- throw new Error('No filesystem access available.');
80
- }
81
- const limit = maxResults ?? 200;
82
- const typeFilter = type ?? 'all';
83
- const isRecursive = recursive ?? true;
84
- const fetched = await context.filesystemService.listFiles(dirPath, {
85
- pattern: pattern ?? undefined,
86
- maxResults: limit + 1,
87
- type: typeFilter,
88
- recursive: isRecursive,
89
- });
90
- const truncated = fetched.length > limit;
91
- const files = truncated ? fetched.slice(0, limit) : fetched;
92
- return {
93
- files,
94
- truncated,
95
- totalCount: files.length,
96
- };
97
- },
98
- });
99
- }
100
- //# sourceMappingURL=list-files.tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-files.tool.js","sourceRoot":"","sources":["../../../src/tools/filesystem/list-files.tool.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import type { InstanceAiContext } from '../../types';
2
- export declare function createReadFileTool(context: InstanceAiContext): import("@mastra/core/tools").Tool<{
3
- filePath: string;
4
- startLine?: number | undefined;
5
- maxLines?: number | undefined;
6
- }, {
7
- path: string;
8
- content: string;
9
- truncated: boolean;
10
- totalLines: number;
11
- denied?: boolean | undefined;
12
- reason?: string | undefined;
13
- }, {
14
- message: string;
15
- requestId: string;
16
- severity: "destructive" | "warning" | "info";
17
- }, {
18
- approved: boolean;
19
- }, import("@mastra/core/tools").ToolExecutionContext<{
20
- message: string;
21
- requestId: string;
22
- severity: "destructive" | "warning" | "info";
23
- }, {
24
- approved: boolean;
25
- }, unknown>, "read-file", unknown>;
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createReadFileTool = createReadFileTool;
4
- const tools_1 = require("@mastra/core/tools");
5
- const api_types_1 = require("@n8n/api-types");
6
- const nanoid_1 = require("nanoid");
7
- const zod_1 = require("zod");
8
- const sanitize_web_content_1 = require("../web-research/sanitize-web-content");
9
- function createReadFileTool(context) {
10
- return (0, tools_1.createTool)({
11
- id: 'read-file',
12
- description: 'Read the contents of a file. Returns the text content with optional line range. Use after list-files or search-files to read specific files. Always use absolute paths or ~/relative paths.',
13
- inputSchema: zod_1.z.object({
14
- filePath: zod_1.z
15
- .string()
16
- .describe('Absolute file path or ~/relative path (e.g. "/home/user/project/file.ts" or "~/project/file.ts"). Do NOT use bare relative paths.'),
17
- startLine: zod_1.z
18
- .number()
19
- .int()
20
- .positive()
21
- .optional()
22
- .describe('Start reading from this line (1-indexed, default: 1)'),
23
- maxLines: zod_1.z
24
- .number()
25
- .int()
26
- .positive()
27
- .max(500)
28
- .default(200)
29
- .optional()
30
- .describe('Maximum number of lines to read (default 200, max 500)'),
31
- }),
32
- outputSchema: zod_1.z.object({
33
- path: zod_1.z.string(),
34
- content: zod_1.z.string(),
35
- truncated: zod_1.z.boolean(),
36
- totalLines: zod_1.z.number(),
37
- denied: zod_1.z.boolean().optional(),
38
- reason: zod_1.z.string().optional(),
39
- }),
40
- suspendSchema: zod_1.z.object({
41
- requestId: zod_1.z.string(),
42
- message: zod_1.z.string(),
43
- severity: api_types_1.instanceAiConfirmationSeveritySchema,
44
- }),
45
- resumeSchema: zod_1.z.object({
46
- approved: zod_1.z.boolean(),
47
- }),
48
- execute: async ({ filePath, startLine, maxLines }, ctx) => {
49
- const { resumeData, suspend } = ctx?.agent ?? {};
50
- const needsApproval = context.permissions?.readFilesystem !== 'always_allow';
51
- if (needsApproval && (resumeData === undefined || resumeData === null)) {
52
- await suspend?.({
53
- requestId: (0, nanoid_1.nanoid)(),
54
- message: `Read file "${filePath}"?`,
55
- severity: 'info',
56
- });
57
- return { path: '', content: '', truncated: false, totalLines: 0 };
58
- }
59
- if (resumeData !== undefined && resumeData !== null && !resumeData.approved) {
60
- return {
61
- path: '',
62
- content: '',
63
- truncated: false,
64
- totalLines: 0,
65
- denied: true,
66
- reason: 'User denied the action',
67
- };
68
- }
69
- if (!context.filesystemService) {
70
- throw new Error('No filesystem access available.');
71
- }
72
- const result = await context.filesystemService.readFile(filePath, {
73
- startLine: startLine ?? undefined,
74
- maxLines: maxLines ?? undefined,
75
- });
76
- return {
77
- ...result,
78
- content: (0, sanitize_web_content_1.wrapUntrustedData)(result.content, 'file', filePath),
79
- };
80
- },
81
- });
82
- }
83
- //# sourceMappingURL=read-file.tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read-file.tool.js","sourceRoot":"","sources":["../../../src/tools/filesystem/read-file.tool.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import type { InstanceAiContext } from '../../types';
2
- export declare function createSearchFilesTool(context: InstanceAiContext): import("@mastra/core/tools").Tool<{
3
- query: string;
4
- dirPath: string;
5
- maxResults?: number | undefined;
6
- filePattern?: string | undefined;
7
- ignoreCase?: boolean | undefined;
8
- }, {
9
- query: string;
10
- truncated: boolean;
11
- matches: {
12
- path: string;
13
- lineNumber: number;
14
- line: string;
15
- }[];
16
- totalMatches: number;
17
- denied?: boolean | undefined;
18
- reason?: string | undefined;
19
- }, {
20
- message: string;
21
- requestId: string;
22
- severity: "destructive" | "warning" | "info";
23
- }, {
24
- approved: boolean;
25
- }, import("@mastra/core/tools").ToolExecutionContext<{
26
- message: string;
27
- requestId: string;
28
- severity: "destructive" | "warning" | "info";
29
- }, {
30
- approved: boolean;
31
- }, unknown>, "search-files", unknown>;
@@ -1,96 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createSearchFilesTool = createSearchFilesTool;
4
- const tools_1 = require("@mastra/core/tools");
5
- const api_types_1 = require("@n8n/api-types");
6
- const nanoid_1 = require("nanoid");
7
- const zod_1 = require("zod");
8
- const sanitize_web_content_1 = require("../web-research/sanitize-web-content");
9
- function createSearchFilesTool(context) {
10
- return (0, tools_1.createTool)({
11
- id: 'search-files',
12
- description: 'Search file contents for a text pattern or regex across a directory. Returns matching lines with file paths and line numbers. Always use absolute paths or ~/relative paths.',
13
- inputSchema: zod_1.z.object({
14
- dirPath: zod_1.z
15
- .string()
16
- .describe('Absolute directory path or ~/relative path (e.g. "/home/user/project" or "~/project"). Do NOT use bare relative paths.'),
17
- query: zod_1.z.string().describe('Search query — supports regex patterns'),
18
- filePattern: zod_1.z
19
- .string()
20
- .optional()
21
- .describe('File pattern to restrict search (e.g. "*.ts", "*.json")'),
22
- ignoreCase: zod_1.z
23
- .boolean()
24
- .default(true)
25
- .optional()
26
- .describe('Case-insensitive search (default: true)'),
27
- maxResults: zod_1.z
28
- .number()
29
- .int()
30
- .positive()
31
- .max(100)
32
- .default(50)
33
- .optional()
34
- .describe('Maximum number of matching lines to return (default 50, max 100)'),
35
- }),
36
- outputSchema: zod_1.z.object({
37
- query: zod_1.z.string(),
38
- matches: zod_1.z.array(zod_1.z.object({
39
- path: zod_1.z.string(),
40
- lineNumber: zod_1.z.number(),
41
- line: zod_1.z.string(),
42
- })),
43
- truncated: zod_1.z.boolean(),
44
- totalMatches: zod_1.z.number(),
45
- denied: zod_1.z.boolean().optional(),
46
- reason: zod_1.z.string().optional(),
47
- }),
48
- suspendSchema: zod_1.z.object({
49
- requestId: zod_1.z.string(),
50
- message: zod_1.z.string(),
51
- severity: api_types_1.instanceAiConfirmationSeveritySchema,
52
- }),
53
- resumeSchema: zod_1.z.object({
54
- approved: zod_1.z.boolean(),
55
- }),
56
- execute: async ({ dirPath, query, filePattern, ignoreCase, maxResults }, ctx) => {
57
- const { resumeData, suspend } = ctx?.agent ?? {};
58
- const needsApproval = context.permissions?.readFilesystem !== 'always_allow';
59
- if (needsApproval && (resumeData === undefined || resumeData === null)) {
60
- await suspend?.({
61
- requestId: (0, nanoid_1.nanoid)(),
62
- message: `Search files in "${dirPath}" for "${query}"?`,
63
- severity: 'info',
64
- });
65
- return { query, matches: [], truncated: false, totalMatches: 0 };
66
- }
67
- if (resumeData !== undefined && resumeData !== null && !resumeData.approved) {
68
- return {
69
- query,
70
- matches: [],
71
- truncated: false,
72
- totalMatches: 0,
73
- denied: true,
74
- reason: 'User denied the action',
75
- };
76
- }
77
- if (!context.filesystemService) {
78
- throw new Error('No filesystem access available.');
79
- }
80
- const result = await context.filesystemService.searchFiles(dirPath, {
81
- query,
82
- filePattern: filePattern ?? undefined,
83
- ignoreCase: ignoreCase ?? undefined,
84
- maxResults: maxResults ?? undefined,
85
- });
86
- return {
87
- ...result,
88
- matches: result.matches.map((match) => ({
89
- ...match,
90
- line: (0, sanitize_web_content_1.wrapUntrustedData)(match.line, 'file', `${match.path}:${match.lineNumber}`),
91
- })),
92
- };
93
- },
94
- });
95
- }
96
- //# sourceMappingURL=search-files.tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-files.tool.js","sourceRoot":"","sources":["../../../src/tools/filesystem/search-files.tool.ts"],"names":[],"mappings":"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"}