@levelcode/sdk 0.0.5 → 0.1.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/common/src/actions.d.ts +176 -0
  2. package/dist/common/src/analytics-core.d.ts +52 -0
  3. package/dist/common/src/analytics.d.ts +9 -0
  4. package/dist/common/src/browser-actions.d.ts +1200 -0
  5. package/dist/common/src/constants/agents.d.ts +47 -0
  6. package/dist/common/src/constants/analytics-events.d.ts +107 -0
  7. package/dist/common/src/constants/byok.d.ts +2 -0
  8. package/dist/common/src/constants/claude-oauth.d.ts +36 -0
  9. package/dist/common/src/constants/index.d.ts +4 -0
  10. package/dist/common/src/constants/knowledge.d.ts +21 -0
  11. package/dist/common/src/constants/limits.d.ts +14 -0
  12. package/dist/common/src/constants/model-config.d.ts +117 -0
  13. package/dist/common/src/constants/paths.d.ts +23 -0
  14. package/dist/common/src/constants/skills.d.ts +42 -0
  15. package/dist/common/src/constants/ui.d.ts +14 -0
  16. package/dist/common/src/env-ci.d.ts +22 -0
  17. package/dist/common/src/env-process.d.ts +28 -0
  18. package/dist/common/src/env-schema.d.ts +24 -0
  19. package/dist/common/src/env.d.ts +16 -0
  20. package/dist/common/src/mcp/client.d.ts +6 -0
  21. package/dist/common/src/old-constants.d.ts +10 -0
  22. package/dist/common/src/project-file-tree.d.ts +27 -0
  23. package/dist/common/src/templates/agent-validation.d.ts +48 -0
  24. package/dist/common/src/templates/initial-agents-dir/types/agent-definition.d.ts +296 -0
  25. package/dist/common/src/templates/initial-agents-dir/types/tools.d.ts +308 -0
  26. package/dist/common/src/templates/initial-agents-dir/types/util-types.d.ts +128 -0
  27. package/dist/common/src/testing/errors.d.ts +14 -0
  28. package/dist/common/src/testing/mock-modules.d.ts +11 -0
  29. package/dist/common/src/testing/mock-types.d.ts +97 -0
  30. package/dist/common/src/testing/mocks/analytics.d.ts +182 -0
  31. package/dist/common/src/testing/mocks/child-process.d.ts +29 -0
  32. package/dist/common/src/testing/mocks/crypto.d.ts +159 -0
  33. package/dist/common/src/testing/mocks/database.d.ts +197 -0
  34. package/dist/common/src/testing/mocks/fetch.d.ts +35 -0
  35. package/dist/common/src/testing/mocks/filesystem.d.ts +31 -0
  36. package/dist/common/src/testing/mocks/index.d.ts +25 -0
  37. package/dist/common/src/testing/mocks/logger.d.ts +35 -0
  38. package/dist/common/src/testing/mocks/stream.d.ts +203 -0
  39. package/dist/common/src/testing/mocks/timers.d.ts +27 -0
  40. package/dist/common/src/testing/mocks/tree-sitter.d.ts +58 -0
  41. package/dist/common/src/testing-env-process.d.ts +7 -0
  42. package/dist/common/src/tools/constants.d.ts +17 -0
  43. package/dist/common/src/tools/list.d.ts +1140 -0
  44. package/dist/common/src/tools/params/tool/add-message.d.ts +19 -0
  45. package/dist/common/src/tools/params/tool/add-subgoal.d.ts +26 -0
  46. package/dist/common/src/tools/params/tool/ask-user.d.ts +59 -0
  47. package/dist/common/src/tools/params/tool/browser-logs.d.ts +127 -0
  48. package/dist/common/src/tools/params/tool/code-search.d.ts +30 -0
  49. package/dist/common/src/tools/params/tool/create-plan.d.ts +30 -0
  50. package/dist/common/src/tools/params/tool/end-turn.d.ts +13 -0
  51. package/dist/common/src/tools/params/tool/find-files.d.ts +31 -0
  52. package/dist/common/src/tools/params/tool/glob.d.ts +26 -0
  53. package/dist/common/src/tools/params/tool/list-directory.d.ts +25 -0
  54. package/dist/common/src/tools/params/tool/lookup-agent-info.d.ts +13 -0
  55. package/dist/common/src/tools/params/tool/propose-str-replace.d.ts +40 -0
  56. package/dist/common/src/tools/params/tool/propose-write-file.d.ts +29 -0
  57. package/dist/common/src/tools/params/tool/read-docs.d.ts +19 -0
  58. package/dist/common/src/tools/params/tool/read-files.d.ts +35 -0
  59. package/dist/common/src/tools/params/tool/read-subtree.d.ts +40 -0
  60. package/dist/common/src/tools/params/tool/run-file-change-hooks.d.ts +63 -0
  61. package/dist/common/src/tools/params/tool/run-terminal-command.d.ts +88 -0
  62. package/dist/common/src/tools/params/tool/send-message.d.ts +26 -0
  63. package/dist/common/src/tools/params/tool/set-messages.d.ts +15 -0
  64. package/dist/common/src/tools/params/tool/set-output.d.ts +15 -0
  65. package/dist/common/src/tools/params/tool/skill.d.ts +28 -0
  66. package/dist/common/src/tools/params/tool/spawn-agent-inline.d.ts +17 -0
  67. package/dist/common/src/tools/params/tool/spawn-agents.d.ts +26 -0
  68. package/dist/common/src/tools/params/tool/str-replace.d.ts +43 -0
  69. package/dist/common/src/tools/params/tool/suggest-followups.d.ts +26 -0
  70. package/dist/common/src/tools/params/tool/task-completed.d.ts +13 -0
  71. package/dist/common/src/tools/params/tool/task-create.d.ts +18 -0
  72. package/dist/common/src/tools/params/tool/task-get.d.ts +15 -0
  73. package/dist/common/src/tools/params/tool/task-list.d.ts +13 -0
  74. package/dist/common/src/tools/params/tool/task-update.d.ts +23 -0
  75. package/dist/common/src/tools/params/tool/team-create.d.ts +17 -0
  76. package/dist/common/src/tools/params/tool/team-delete.d.ts +13 -0
  77. package/dist/common/src/tools/params/tool/think-deeply.d.ts +15 -0
  78. package/dist/common/src/tools/params/tool/update-subgoal.d.ts +25 -0
  79. package/dist/common/src/tools/params/tool/web-search.d.ts +25 -0
  80. package/dist/common/src/tools/params/tool/write-file.d.ts +31 -0
  81. package/dist/common/src/tools/params/tool/write-todos.d.ts +18 -0
  82. package/dist/common/src/tools/params/utils.d.ts +35 -0
  83. package/dist/common/src/tools/utils.d.ts +4 -0
  84. package/dist/common/src/types/agent-template.d.ts +156 -0
  85. package/dist/common/src/types/contracts/agent-runtime.d.ts +36 -0
  86. package/dist/common/src/types/contracts/analytics.d.ts +8 -0
  87. package/dist/common/src/types/contracts/billing.d.ts +40 -0
  88. package/dist/common/src/types/contracts/client.d.ts +45 -0
  89. package/dist/common/src/types/contracts/database.d.ts +80 -0
  90. package/dist/common/src/types/contracts/env.d.ts +150 -0
  91. package/dist/common/src/types/contracts/llm.d.ts +102 -0
  92. package/dist/common/src/types/contracts/logger.d.ts +8 -0
  93. package/dist/common/src/types/dynamic-agent-template.d.ts +227 -0
  94. package/dist/common/src/types/filesystem.d.ts +6 -0
  95. package/dist/common/src/types/function-params.d.ts +15 -0
  96. package/dist/common/src/types/grant.d.ts +2 -0
  97. package/dist/common/src/types/json.d.ts +9 -0
  98. package/dist/common/src/types/mcp.d.ts +31 -0
  99. package/dist/common/src/types/messages/content-part.d.ts +46 -0
  100. package/dist/common/src/types/messages/data-content.d.ts +3 -0
  101. package/dist/common/src/types/messages/levelcode-message.d.ts +37 -0
  102. package/dist/common/src/types/messages/provider-metadata.d.ts +3 -0
  103. package/dist/common/src/types/print-mode.d.ts +155 -0
  104. package/dist/common/src/types/session-state.d.ts +94 -0
  105. package/dist/common/src/types/skill.d.ts +31 -0
  106. package/dist/common/src/types/source.d.ts +8 -0
  107. package/dist/common/src/types/spawn.d.ts +8 -0
  108. package/dist/common/src/types/team-config.d.ts +39 -0
  109. package/dist/common/src/types/team-protocol.d.ts +64 -0
  110. package/dist/common/src/util/agent-id-parsing.d.ts +22 -0
  111. package/dist/common/src/util/agent-name-normalization.d.ts +12 -0
  112. package/dist/common/src/util/array.d.ts +6 -0
  113. package/dist/common/src/util/credentials.d.ts +11 -0
  114. package/dist/common/src/util/error.d.ts +128 -0
  115. package/dist/common/src/util/file.d.ts +133 -0
  116. package/dist/common/src/util/format-code-search.d.ts +16 -0
  117. package/dist/common/src/util/lru-cache.d.ts +30 -0
  118. package/dist/common/src/util/messages.d.ts +46 -0
  119. package/dist/common/src/util/model-utils.d.ts +8 -0
  120. package/dist/common/src/util/object.d.ts +22 -0
  121. package/dist/common/src/util/promise.d.ts +16 -0
  122. package/dist/common/src/util/random.d.ts +1 -0
  123. package/dist/common/src/util/skills.d.ts +5 -0
  124. package/dist/common/src/util/stop-sequence.d.ts +14 -0
  125. package/dist/common/src/util/string.d.ts +82 -0
  126. package/dist/common/src/util/xml.d.ts +12 -0
  127. package/dist/common/src/util/zod-schema.d.ts +5 -0
  128. package/dist/common/src/utils/team-fs.d.ts +17 -0
  129. package/dist/index.cjs +1940 -917
  130. package/dist/index.cjs.map +24 -9
  131. package/dist/index.mjs +2380 -1357
  132. package/dist/index.mjs.map +24 -9
  133. package/dist/packages/agent-runtime/src/constants.d.ts +1 -0
  134. package/dist/packages/agent-runtime/src/fast-rewrite.d.ts +45 -0
  135. package/dist/packages/agent-runtime/src/find-files/request-files-prompt.d.ts +71 -0
  136. package/dist/packages/agent-runtime/src/generate-diffs-prompt.d.ts +53 -0
  137. package/dist/packages/agent-runtime/src/get-file-reading-updates.d.ts +8 -0
  138. package/dist/packages/agent-runtime/src/llm-api/claude.d.ts +5 -0
  139. package/dist/packages/agent-runtime/src/llm-api/context7-api.d.ts +55 -0
  140. package/dist/packages/agent-runtime/src/llm-api/gemini-with-fallbacks.d.ts +40 -0
  141. package/dist/packages/agent-runtime/src/llm-api/levelcode-web-api.d.ts +49 -0
  142. package/dist/packages/agent-runtime/src/llm-api/relace-api.d.ts +16 -0
  143. package/dist/packages/agent-runtime/src/main-prompt.d.ts +29 -0
  144. package/dist/packages/agent-runtime/src/mcp-constants.d.ts +12 -0
  145. package/dist/packages/agent-runtime/src/mcp.d.ts +10 -0
  146. package/dist/packages/agent-runtime/src/process-file-block.d.ts +56 -0
  147. package/dist/packages/agent-runtime/src/process-str-replace.d.ts +21 -0
  148. package/dist/packages/agent-runtime/src/prompt-agent-stream.d.ts +28 -0
  149. package/dist/packages/agent-runtime/src/run-agent-step.d.ts +73 -0
  150. package/dist/packages/agent-runtime/src/run-programmatic-step.d.ts +40 -0
  151. package/dist/packages/agent-runtime/src/system-prompt/prompts.d.ts +19 -0
  152. package/dist/packages/agent-runtime/src/system-prompt/search-system-prompt.d.ts +14 -0
  153. package/dist/packages/agent-runtime/src/system-prompt/truncate-file-tree.d.ts +13 -0
  154. package/dist/packages/agent-runtime/src/templates/agent-registry.d.ts +35 -0
  155. package/dist/packages/agent-runtime/src/templates/prompts.d.ts +35 -0
  156. package/dist/packages/agent-runtime/src/templates/strings.d.ts +32 -0
  157. package/dist/packages/agent-runtime/src/templates/types.d.ts +13 -0
  158. package/dist/packages/agent-runtime/src/tool-stream-parser.d.ts +31 -0
  159. package/dist/packages/agent-runtime/src/tools/handlers/handler-function-type.d.ts +51 -0
  160. package/dist/packages/agent-runtime/src/tools/handlers/list.d.ts +347 -0
  161. package/dist/packages/agent-runtime/src/tools/handlers/tool/add-message.d.ts +9 -0
  162. package/dist/packages/agent-runtime/src/tools/handlers/tool/add-subgoal.d.ts +9 -0
  163. package/dist/packages/agent-runtime/src/tools/handlers/tool/ask-user.d.ts +10 -0
  164. package/dist/packages/agent-runtime/src/tools/handlers/tool/browser-logs.d.ts +8 -0
  165. package/dist/packages/agent-runtime/src/tools/handlers/tool/code-search.d.ts +8 -0
  166. package/dist/packages/agent-runtime/src/tools/handlers/tool/create-plan.d.ts +13 -0
  167. package/dist/packages/agent-runtime/src/tools/handlers/tool/end-turn.d.ts +7 -0
  168. package/dist/packages/agent-runtime/src/tools/handlers/tool/find-files.d.ts +27 -0
  169. package/dist/packages/agent-runtime/src/tools/handlers/tool/glob.d.ts +10 -0
  170. package/dist/packages/agent-runtime/src/tools/handlers/tool/list-directory.d.ts +10 -0
  171. package/dist/packages/agent-runtime/src/tools/handlers/tool/lookup-agent-info.d.ts +14 -0
  172. package/dist/packages/agent-runtime/src/tools/handlers/tool/propose-str-replace.d.ts +15 -0
  173. package/dist/packages/agent-runtime/src/tools/handlers/tool/propose-write-file.d.ts +7 -0
  174. package/dist/packages/agent-runtime/src/tools/handlers/tool/proposed-content-store.d.ts +27 -0
  175. package/dist/packages/agent-runtime/src/tools/handlers/tool/read-docs.d.ts +21 -0
  176. package/dist/packages/agent-runtime/src/tools/handlers/tool/read-files.d.ts +13 -0
  177. package/dist/packages/agent-runtime/src/tools/handlers/tool/read-subtree.d.ts +13 -0
  178. package/dist/packages/agent-runtime/src/tools/handlers/tool/run-file-change-hooks.d.ts +10 -0
  179. package/dist/packages/agent-runtime/src/tools/handlers/tool/run-terminal-command.d.ts +10 -0
  180. package/dist/packages/agent-runtime/src/tools/handlers/tool/send-message.d.ts +10 -0
  181. package/dist/packages/agent-runtime/src/tools/handlers/tool/set-messages.d.ts +9 -0
  182. package/dist/packages/agent-runtime/src/tools/handlers/tool/set-output.d.ts +18 -0
  183. package/dist/packages/agent-runtime/src/tools/handlers/tool/skill.d.ts +11 -0
  184. package/dist/packages/agent-runtime/src/tools/handlers/tool/spawn-agent-inline.d.ts +29 -0
  185. package/dist/packages/agent-runtime/src/tools/handlers/tool/spawn-agent-utils.d.ts +100 -0
  186. package/dist/packages/agent-runtime/src/tools/handlers/tool/spawn-agents.d.ts +35 -0
  187. package/dist/packages/agent-runtime/src/tools/handlers/tool/str-replace.d.ts +16 -0
  188. package/dist/packages/agent-runtime/src/tools/handlers/tool/suggest-followups.d.ts +9 -0
  189. package/dist/packages/agent-runtime/src/tools/handlers/tool/task-completed.d.ts +7 -0
  190. package/dist/packages/agent-runtime/src/tools/handlers/tool/task-create.d.ts +9 -0
  191. package/dist/packages/agent-runtime/src/tools/handlers/tool/task-get.d.ts +9 -0
  192. package/dist/packages/agent-runtime/src/tools/handlers/tool/task-list.d.ts +9 -0
  193. package/dist/packages/agent-runtime/src/tools/handlers/tool/task-update.d.ts +9 -0
  194. package/dist/packages/agent-runtime/src/tools/handlers/tool/team-create.d.ts +10 -0
  195. package/dist/packages/agent-runtime/src/tools/handlers/tool/team-delete.d.ts +10 -0
  196. package/dist/packages/agent-runtime/src/tools/handlers/tool/think-deeply.d.ts +9 -0
  197. package/dist/packages/agent-runtime/src/tools/handlers/tool/update-subgoal.d.ts +11 -0
  198. package/dist/packages/agent-runtime/src/tools/handlers/tool/web-search.d.ts +22 -0
  199. package/dist/packages/agent-runtime/src/tools/handlers/tool/write-file.d.ts +49 -0
  200. package/dist/packages/agent-runtime/src/tools/handlers/tool/write-todos.d.ts +9 -0
  201. package/dist/packages/agent-runtime/src/tools/prompts.d.ts +31 -0
  202. package/dist/packages/agent-runtime/src/tools/stream-parser.d.ts +33 -0
  203. package/dist/packages/agent-runtime/src/tools/tool-executor.d.ts +87 -0
  204. package/dist/packages/agent-runtime/src/util/agent-output.d.ts +3 -0
  205. package/dist/packages/agent-runtime/src/util/messages.d.ts +68 -0
  206. package/dist/packages/agent-runtime/src/util/parse-tool-calls-from-text.d.ts +38 -0
  207. package/dist/packages/agent-runtime/src/util/render-read-files-result.d.ts +15 -0
  208. package/dist/packages/agent-runtime/src/util/simplify-tool-results.d.ts +7 -0
  209. package/dist/packages/agent-runtime/src/util/stream-xml-parser.d.ts +34 -0
  210. package/dist/packages/agent-runtime/src/util/token-counter.d.ts +3 -0
  211. package/dist/packages/code-map/src/index.d.ts +3 -0
  212. package/dist/packages/code-map/src/init-node.d.ts +4 -0
  213. package/dist/packages/code-map/src/languages.d.ts +36 -0
  214. package/dist/packages/code-map/src/parse.d.ts +21 -0
  215. package/dist/packages/code-map/src/types.d.ts +8 -0
  216. package/dist/packages/code-map/src/utils.d.ts +1 -0
  217. package/dist/sdk/src/__tests__/client.test.d.ts +1 -0
  218. package/dist/sdk/src/__tests__/code-search.test.d.ts +1 -0
  219. package/dist/sdk/src/__tests__/credentials.test.d.ts +1 -0
  220. package/dist/sdk/src/__tests__/database.test.d.ts +1 -0
  221. package/dist/sdk/src/__tests__/env.test.d.ts +1 -0
  222. package/dist/sdk/src/__tests__/error-utils.test.d.ts +1 -0
  223. package/dist/sdk/src/__tests__/initial-session-state.test.d.ts +1 -0
  224. package/dist/sdk/src/__tests__/knowledge-file-selection.test.d.ts +1 -0
  225. package/dist/sdk/src/__tests__/load-agents.test.d.ts +1 -0
  226. package/dist/sdk/src/__tests__/load-mcp-config.test.d.ts +1 -0
  227. package/dist/sdk/src/__tests__/model-provider.test.d.ts +1 -0
  228. package/dist/sdk/src/__tests__/read-files.test.d.ts +1 -0
  229. package/dist/sdk/src/__tests__/run-cancellation.test.d.ts +1 -0
  230. package/dist/sdk/src/__tests__/run-file-filter.test.d.ts +1 -0
  231. package/dist/sdk/src/__tests__/run-handle-event.test.d.ts +1 -0
  232. package/dist/sdk/src/__tests__/run.integration.test.d.ts +1 -0
  233. package/dist/sdk/src/__tests__/user-knowledge-files.test.d.ts +1 -0
  234. package/dist/sdk/src/__tests__/validate-agents.test.d.ts +1 -0
  235. package/dist/sdk/src/agents/load-agents.d.ts +106 -0
  236. package/dist/sdk/src/agents/load-mcp-config.d.ts +69 -0
  237. package/dist/sdk/src/client.d.ts +33 -0
  238. package/dist/sdk/src/constants.d.ts +4 -0
  239. package/dist/sdk/src/credentials.d.ts +58 -0
  240. package/dist/sdk/src/custom-tool.d.ts +32 -0
  241. package/dist/sdk/src/env.d.ts +31 -0
  242. package/dist/sdk/src/error-utils.d.ts +55 -0
  243. package/dist/sdk/src/impl/__tests__/prompt-result.test.d.ts +1 -0
  244. package/dist/sdk/src/impl/agent-runtime.d.ts +8 -0
  245. package/dist/sdk/src/impl/database.d.ts +7 -0
  246. package/dist/sdk/src/impl/llm.d.ts +8 -0
  247. package/dist/sdk/src/impl/model-provider.d.ts +61 -0
  248. package/dist/sdk/src/index.d.ts +41 -0
  249. package/dist/sdk/src/native/ripgrep.d.ts +7 -0
  250. package/dist/sdk/src/retry-config.d.ts +46 -0
  251. package/dist/sdk/src/run-state.d.ts +81 -0
  252. package/dist/sdk/src/run.d.ts +79 -0
  253. package/dist/sdk/src/skills/load-skills.d.ts +42 -0
  254. package/dist/sdk/src/testing/env.d.ts +5 -0
  255. package/dist/sdk/src/tools/change-file.d.ts +7 -0
  256. package/dist/sdk/src/tools/code-search.d.ts +13 -0
  257. package/dist/sdk/src/tools/glob.d.ts +8 -0
  258. package/dist/sdk/src/tools/index.d.ts +16 -0
  259. package/dist/sdk/src/tools/list-directory.d.ts +7 -0
  260. package/dist/sdk/src/tools/read-files.d.ts +16 -0
  261. package/dist/sdk/src/tools/run-file-change-hooks.d.ts +4 -0
  262. package/dist/sdk/src/tools/run-terminal-command.d.ts +8 -0
  263. package/dist/sdk/src/types/env.d.ts +30 -0
  264. package/dist/sdk/src/validate-agents.d.ts +45 -0
  265. package/package.json +1 -1
  266. package/dist/index.d.ts +0 -3443
package/dist/index.cjs CHANGED
@@ -7269,8 +7269,8 @@ var require_uri_all = __commonJS((exports3, module2) => {
7269
7269
  wsComponents.secure = undefined;
7270
7270
  }
7271
7271
  if (wsComponents.resourceName) {
7272
- var _wsComponents$resourc = wsComponents.resourceName.split("?"), _wsComponents$resourc2 = slicedToArray(_wsComponents$resourc, 2), path4 = _wsComponents$resourc2[0], query = _wsComponents$resourc2[1];
7273
- wsComponents.path = path4 && path4 !== "/" ? path4 : undefined;
7272
+ var _wsComponents$resourc = wsComponents.resourceName.split("?"), _wsComponents$resourc2 = slicedToArray(_wsComponents$resourc, 2), path6 = _wsComponents$resourc2[0], query = _wsComponents$resourc2[1];
7273
+ wsComponents.path = path6 && path6 !== "/" ? path6 : undefined;
7274
7274
  wsComponents.query = query;
7275
7275
  wsComponents.resourceName = undefined;
7276
7276
  }
@@ -7663,12 +7663,12 @@ var require_util = __commonJS((exports3, module2) => {
7663
7663
  return "'" + escapeQuotes(str) + "'";
7664
7664
  }
7665
7665
  function getPathExpr(currentPath, expr, jsonPointers, isNumber2) {
7666
- var path4 = jsonPointers ? "'/' + " + expr + (isNumber2 ? "" : ".replace(/~/g, '~0').replace(/\\//g, '~1')") : isNumber2 ? "'[' + " + expr + " + ']'" : "'[\\'' + " + expr + " + '\\']'";
7667
- return joinPaths(currentPath, path4);
7666
+ var path6 = jsonPointers ? "'/' + " + expr + (isNumber2 ? "" : ".replace(/~/g, '~0').replace(/\\//g, '~1')") : isNumber2 ? "'[' + " + expr + " + ']'" : "'[\\'' + " + expr + " + '\\']'";
7667
+ return joinPaths(currentPath, path6);
7668
7668
  }
7669
7669
  function getPath(currentPath, prop, jsonPointers) {
7670
- var path4 = jsonPointers ? toQuotedString("/" + escapeJsonPointer(prop)) : toQuotedString(getProperty(prop));
7671
- return joinPaths(currentPath, path4);
7670
+ var path6 = jsonPointers ? toQuotedString("/" + escapeJsonPointer(prop)) : toQuotedString(getProperty(prop));
7671
+ return joinPaths(currentPath, path6);
7672
7672
  }
7673
7673
  var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/;
7674
7674
  var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;
@@ -12633,8 +12633,8 @@ var require_ajv = __commonJS((exports3, module2) => {
12633
12633
  var require_windows = __commonJS((exports3, module2) => {
12634
12634
  module2.exports = isexe;
12635
12635
  isexe.sync = sync;
12636
- var fs = require("fs");
12637
- function checkPathExt(path4, options) {
12636
+ var fs8 = require("fs");
12637
+ function checkPathExt(path6, options) {
12638
12638
  var pathext = options.pathExt !== undefined ? options.pathExt : process.env.PATHEXT;
12639
12639
  if (!pathext) {
12640
12640
  return true;
@@ -12645,25 +12645,25 @@ var require_windows = __commonJS((exports3, module2) => {
12645
12645
  }
12646
12646
  for (var i = 0;i < pathext.length; i++) {
12647
12647
  var p = pathext[i].toLowerCase();
12648
- if (p && path4.substr(-p.length).toLowerCase() === p) {
12648
+ if (p && path6.substr(-p.length).toLowerCase() === p) {
12649
12649
  return true;
12650
12650
  }
12651
12651
  }
12652
12652
  return false;
12653
12653
  }
12654
- function checkStat(stat, path4, options) {
12654
+ function checkStat(stat, path6, options) {
12655
12655
  if (!stat.isSymbolicLink() && !stat.isFile()) {
12656
12656
  return false;
12657
12657
  }
12658
- return checkPathExt(path4, options);
12658
+ return checkPathExt(path6, options);
12659
12659
  }
12660
- function isexe(path4, options, cb) {
12661
- fs.stat(path4, function(er, stat) {
12662
- cb(er, er ? false : checkStat(stat, path4, options));
12660
+ function isexe(path6, options, cb) {
12661
+ fs8.stat(path6, function(er, stat) {
12662
+ cb(er, er ? false : checkStat(stat, path6, options));
12663
12663
  });
12664
12664
  }
12665
- function sync(path4, options) {
12666
- return checkStat(fs.statSync(path4), path4, options);
12665
+ function sync(path6, options) {
12666
+ return checkStat(fs8.statSync(path6), path6, options);
12667
12667
  }
12668
12668
  });
12669
12669
 
@@ -12671,14 +12671,14 @@ var require_windows = __commonJS((exports3, module2) => {
12671
12671
  var require_mode = __commonJS((exports3, module2) => {
12672
12672
  module2.exports = isexe;
12673
12673
  isexe.sync = sync;
12674
- var fs = require("fs");
12675
- function isexe(path4, options, cb) {
12676
- fs.stat(path4, function(er, stat) {
12674
+ var fs8 = require("fs");
12675
+ function isexe(path6, options, cb) {
12676
+ fs8.stat(path6, function(er, stat) {
12677
12677
  cb(er, er ? false : checkStat(stat, options));
12678
12678
  });
12679
12679
  }
12680
- function sync(path4, options) {
12681
- return checkStat(fs.statSync(path4), options);
12680
+ function sync(path6, options) {
12681
+ return checkStat(fs8.statSync(path6), options);
12682
12682
  }
12683
12683
  function checkStat(stat, options) {
12684
12684
  return stat.isFile() && checkMode(stat, options);
@@ -12700,7 +12700,7 @@ var require_mode = __commonJS((exports3, module2) => {
12700
12700
 
12701
12701
  // ../node_modules/isexe/index.js
12702
12702
  var require_isexe = __commonJS((exports3, module2) => {
12703
- var fs = require("fs");
12703
+ var fs8 = require("fs");
12704
12704
  var core;
12705
12705
  if (process.platform === "win32" || global.TESTING_WINDOWS) {
12706
12706
  core = require_windows();
@@ -12709,7 +12709,7 @@ var require_isexe = __commonJS((exports3, module2) => {
12709
12709
  }
12710
12710
  module2.exports = isexe;
12711
12711
  isexe.sync = sync;
12712
- function isexe(path4, options, cb) {
12712
+ function isexe(path6, options, cb) {
12713
12713
  if (typeof options === "function") {
12714
12714
  cb = options;
12715
12715
  options = {};
@@ -12719,7 +12719,7 @@ var require_isexe = __commonJS((exports3, module2) => {
12719
12719
  throw new TypeError("callback not provided");
12720
12720
  }
12721
12721
  return new Promise(function(resolve2, reject) {
12722
- isexe(path4, options || {}, function(er, is) {
12722
+ isexe(path6, options || {}, function(er, is) {
12723
12723
  if (er) {
12724
12724
  reject(er);
12725
12725
  } else {
@@ -12728,7 +12728,7 @@ var require_isexe = __commonJS((exports3, module2) => {
12728
12728
  });
12729
12729
  });
12730
12730
  }
12731
- core(path4, options || {}, function(er, is) {
12731
+ core(path6, options || {}, function(er, is) {
12732
12732
  if (er) {
12733
12733
  if (er.code === "EACCES" || options && options.ignoreErrors) {
12734
12734
  er = null;
@@ -12738,9 +12738,9 @@ var require_isexe = __commonJS((exports3, module2) => {
12738
12738
  cb(er, is);
12739
12739
  });
12740
12740
  }
12741
- function sync(path4, options) {
12741
+ function sync(path6, options) {
12742
12742
  try {
12743
- return core.sync(path4, options || {});
12743
+ return core.sync(path6, options || {});
12744
12744
  } catch (er) {
12745
12745
  if (options && options.ignoreErrors || er.code === "EACCES") {
12746
12746
  return false;
@@ -12754,7 +12754,7 @@ var require_isexe = __commonJS((exports3, module2) => {
12754
12754
  // ../node_modules/which/which.js
12755
12755
  var require_which = __commonJS((exports3, module2) => {
12756
12756
  var isWindows = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys";
12757
- var path4 = require("path");
12757
+ var path6 = require("path");
12758
12758
  var COLON = isWindows ? ";" : ":";
12759
12759
  var isexe = require_isexe();
12760
12760
  var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
@@ -12790,7 +12790,7 @@ var require_which = __commonJS((exports3, module2) => {
12790
12790
  return opt.all && found.length ? resolve2(found) : reject(getNotFoundError(cmd));
12791
12791
  const ppRaw = pathEnv[i];
12792
12792
  const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
12793
- const pCmd = path4.join(pathPart, cmd);
12793
+ const pCmd = path6.join(pathPart, cmd);
12794
12794
  const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
12795
12795
  resolve2(subStep(p, i, 0));
12796
12796
  });
@@ -12817,7 +12817,7 @@ var require_which = __commonJS((exports3, module2) => {
12817
12817
  for (let i = 0;i < pathEnv.length; i++) {
12818
12818
  const ppRaw = pathEnv[i];
12819
12819
  const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
12820
- const pCmd = path4.join(pathPart, cmd);
12820
+ const pCmd = path6.join(pathPart, cmd);
12821
12821
  const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
12822
12822
  for (let j = 0;j < pathExt.length; j++) {
12823
12823
  const cur = p + pathExt[j];
@@ -12858,7 +12858,7 @@ var require_path_key = __commonJS((exports3, module2) => {
12858
12858
 
12859
12859
  // ../node_modules/cross-spawn/lib/util/resolveCommand.js
12860
12860
  var require_resolveCommand = __commonJS((exports3, module2) => {
12861
- var path4 = require("path");
12861
+ var path6 = require("path");
12862
12862
  var which = require_which();
12863
12863
  var getPathKey = require_path_key();
12864
12864
  function resolveCommandAttempt(parsed, withoutPathExt) {
@@ -12875,7 +12875,7 @@ var require_resolveCommand = __commonJS((exports3, module2) => {
12875
12875
  try {
12876
12876
  resolved = which.sync(parsed.command, {
12877
12877
  path: env2[getPathKey({ env: env2 })],
12878
- pathExt: withoutPathExt ? path4.delimiter : undefined
12878
+ pathExt: withoutPathExt ? path6.delimiter : undefined
12879
12879
  });
12880
12880
  } catch (e) {} finally {
12881
12881
  if (shouldSwitchCwd) {
@@ -12883,7 +12883,7 @@ var require_resolveCommand = __commonJS((exports3, module2) => {
12883
12883
  }
12884
12884
  }
12885
12885
  if (resolved) {
12886
- resolved = path4.resolve(hasCustomCwd ? parsed.options.cwd : "", resolved);
12886
+ resolved = path6.resolve(hasCustomCwd ? parsed.options.cwd : "", resolved);
12887
12887
  }
12888
12888
  return resolved;
12889
12889
  }
@@ -12928,8 +12928,8 @@ var require_shebang_command = __commonJS((exports3, module2) => {
12928
12928
  if (!match) {
12929
12929
  return null;
12930
12930
  }
12931
- const [path4, argument] = match[0].replace(/#! ?/, "").split(" ");
12932
- const binary = path4.split("/").pop();
12931
+ const [path6, argument] = match[0].replace(/#! ?/, "").split(" ");
12932
+ const binary = path6.split("/").pop();
12933
12933
  if (binary === "env") {
12934
12934
  return argument;
12935
12935
  }
@@ -12939,16 +12939,16 @@ var require_shebang_command = __commonJS((exports3, module2) => {
12939
12939
 
12940
12940
  // ../node_modules/cross-spawn/lib/util/readShebang.js
12941
12941
  var require_readShebang = __commonJS((exports3, module2) => {
12942
- var fs = require("fs");
12942
+ var fs8 = require("fs");
12943
12943
  var shebangCommand = require_shebang_command();
12944
12944
  function readShebang(command) {
12945
12945
  const size = 150;
12946
12946
  const buffer = Buffer.alloc(size);
12947
12947
  let fd;
12948
12948
  try {
12949
- fd = fs.openSync(command, "r");
12950
- fs.readSync(fd, buffer, 0, size, 0);
12951
- fs.closeSync(fd);
12949
+ fd = fs8.openSync(command, "r");
12950
+ fs8.readSync(fd, buffer, 0, size, 0);
12951
+ fs8.closeSync(fd);
12952
12952
  } catch (e) {}
12953
12953
  return shebangCommand(buffer.toString());
12954
12954
  }
@@ -12957,7 +12957,7 @@ var require_readShebang = __commonJS((exports3, module2) => {
12957
12957
 
12958
12958
  // ../node_modules/cross-spawn/lib/parse.js
12959
12959
  var require_parse = __commonJS((exports3, module2) => {
12960
- var path4 = require("path");
12960
+ var path6 = require("path");
12961
12961
  var resolveCommand = require_resolveCommand();
12962
12962
  var escape = require_escape();
12963
12963
  var readShebang = require_readShebang();
@@ -12982,7 +12982,7 @@ var require_parse = __commonJS((exports3, module2) => {
12982
12982
  const needsShell = !isExecutableRegExp.test(commandFile);
12983
12983
  if (parsed.options.forceShell || needsShell) {
12984
12984
  const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);
12985
- parsed.command = path4.normalize(parsed.command);
12985
+ parsed.command = path6.normalize(parsed.command);
12986
12986
  parsed.command = escape.command(parsed.command);
12987
12987
  parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));
12988
12988
  const shellCommand = [parsed.command].concat(parsed.args).join(" ");
@@ -16906,6 +16906,7 @@ var toolNames = [
16906
16906
  "read_subtree",
16907
16907
  "run_file_change_hooks",
16908
16908
  "run_terminal_command",
16909
+ "send_message",
16909
16910
  "set_messages",
16910
16911
  "set_output",
16911
16912
  "skill",
@@ -16914,6 +16915,12 @@ var toolNames = [
16914
16915
  "str_replace",
16915
16916
  "suggest_followups",
16916
16917
  "task_completed",
16918
+ "task_create",
16919
+ "task_get",
16920
+ "task_list",
16921
+ "task_update",
16922
+ "team_create",
16923
+ "team_delete",
16917
16924
  "think_deeply",
16918
16925
  "update_subgoal",
16919
16926
  "web_search",
@@ -18415,7 +18422,7 @@ function clearProposedContentForRun(runId) {
18415
18422
  }
18416
18423
 
18417
18424
  // ../common/src/tools/list.ts
18418
- var import_v452 = __toESM(require("zod/v4"));
18425
+ var import_v459 = __toESM(require("zod/v4"));
18419
18426
 
18420
18427
  // ../common/src/actions.ts
18421
18428
  var import_v417 = require("zod/v4");
@@ -19828,18 +19835,79 @@ var runFileChangeHooksParams = {
19828
19835
  ]).array())
19829
19836
  };
19830
19837
 
19831
- // ../common/src/tools/params/tool/set-messages.ts
19838
+ // ../common/src/tools/params/tool/send-message.ts
19832
19839
  var import_v440 = __toESM(require("zod/v4"));
19833
- var toolName20 = "set_messages";
19834
- var endsAgentStep20 = true;
19840
+ var toolName20 = "send_message";
19841
+ var endsAgentStep20 = false;
19835
19842
  var inputSchema20 = import_v440.default.object({
19836
- messages: import_v440.default.any()
19837
- }).describe(`Set the conversation history to the provided messages.`);
19843
+ type: import_v440.default.enum([
19844
+ "message",
19845
+ "broadcast",
19846
+ "shutdown_request",
19847
+ "shutdown_response",
19848
+ "plan_approval_response"
19849
+ ]).describe('Message type: "message" for DMs, "broadcast" to all teammates, "shutdown_request" to request shutdown, "shutdown_response" to respond to shutdown, "plan_approval_response" to approve/reject plans'),
19850
+ recipient: import_v440.default.string().optional().describe("Agent name of the recipient (required for message, shutdown_request, plan_approval_response)"),
19851
+ content: import_v440.default.string().optional().describe("Message text, reason, or feedback"),
19852
+ summary: import_v440.default.string().optional().describe("A 5-10 word summary of the message, shown as a preview in the UI (required for message, broadcast)"),
19853
+ request_id: import_v440.default.string().optional().describe("Request ID to respond to (required for shutdown_response, plan_approval_response)"),
19854
+ approve: import_v440.default.boolean().optional().describe("Whether to approve the request (required for shutdown_response, plan_approval_response)")
19855
+ }).describe(`Send a message to a teammate or broadcast to all teammates in the current team/swarm.`);
19838
19856
  var description20 = `
19839
- Example:
19857
+ Send messages to agent teammates and handle protocol requests/responses in a team.
19858
+
19859
+ Message types:
19860
+ - "message": Send a direct message to a specific teammate (requires recipient)
19861
+ - "broadcast": Send a message to all teammates (use sparingly)
19862
+ - "shutdown_request": Request a teammate to shut down (requires recipient)
19863
+ - "shutdown_response": Respond to a shutdown request (requires request_id, approve)
19864
+ - "plan_approval_response": Approve or reject a teammate's plan (requires request_id, recipient, approve)
19865
+
19866
+ Example - Direct message:
19840
19867
  ${$getNativeToolCallExampleString({
19841
19868
  toolName: toolName20,
19842
19869
  inputSchema: inputSchema20,
19870
+ input: {
19871
+ type: "message",
19872
+ recipient: "researcher",
19873
+ content: "Found the bug in the auth module",
19874
+ summary: "Auth bug found"
19875
+ },
19876
+ endsAgentStep: endsAgentStep20
19877
+ })}
19878
+
19879
+ Example - Broadcast:
19880
+ ${$getNativeToolCallExampleString({
19881
+ toolName: toolName20,
19882
+ inputSchema: inputSchema20,
19883
+ input: {
19884
+ type: "broadcast",
19885
+ content: "Blocking issue found, please pause work",
19886
+ summary: "Critical blocking issue"
19887
+ },
19888
+ endsAgentStep: endsAgentStep20
19889
+ })}
19890
+ `.trim();
19891
+ var sendMessageParams = {
19892
+ toolName: toolName20,
19893
+ endsAgentStep: endsAgentStep20,
19894
+ description: description20,
19895
+ inputSchema: inputSchema20,
19896
+ outputSchema: textToolResultSchema()
19897
+ };
19898
+
19899
+ // ../common/src/tools/params/tool/set-messages.ts
19900
+ var import_v441 = __toESM(require("zod/v4"));
19901
+ var toolName21 = "set_messages";
19902
+ var endsAgentStep21 = true;
19903
+ var inputSchema21 = import_v441.default.object({
19904
+ messages: import_v441.default.any()
19905
+ }).describe(`Set the conversation history to the provided messages.`);
19906
+ var description21 = `
19907
+ Example:
19908
+ ${$getNativeToolCallExampleString({
19909
+ toolName: toolName21,
19910
+ inputSchema: inputSchema21,
19843
19911
  input: {
19844
19912
  messages: [
19845
19913
  {
@@ -19852,25 +19920,25 @@ ${$getNativeToolCallExampleString({
19852
19920
  }
19853
19921
  ]
19854
19922
  },
19855
- endsAgentStep: endsAgentStep20
19923
+ endsAgentStep: endsAgentStep21
19856
19924
  })}
19857
19925
  `.trim();
19858
19926
  var setMessagesParams = {
19859
- toolName: toolName20,
19860
- endsAgentStep: endsAgentStep20,
19861
- description: description20,
19862
- inputSchema: inputSchema20,
19927
+ toolName: toolName21,
19928
+ endsAgentStep: endsAgentStep21,
19929
+ description: description21,
19930
+ inputSchema: inputSchema21,
19863
19931
  outputSchema: textToolResultSchema()
19864
19932
  };
19865
19933
 
19866
19934
  // ../common/src/tools/params/tool/set-output.ts
19867
- var import_v441 = __toESM(require("zod/v4"));
19868
- var toolName21 = "set_output";
19869
- var endsAgentStep21 = false;
19870
- var inputSchema21 = import_v441.default.looseObject({
19871
- data: import_v441.default.record(import_v441.default.string(), import_v441.default.any()).optional()
19935
+ var import_v442 = __toESM(require("zod/v4"));
19936
+ var toolName22 = "set_output";
19937
+ var endsAgentStep22 = false;
19938
+ var inputSchema22 = import_v442.default.looseObject({
19939
+ data: import_v442.default.record(import_v442.default.string(), import_v442.default.any()).optional()
19872
19940
  }).describe("JSON object to set as the agent output. The shape of the parameters are specified dynamically further down in the conversation. This completely replaces any previous output. If the agent was spawned, this value will be passed back to its parent. If the agent has an outputSchema defined, the output will be validated against it.");
19873
- var description21 = `
19941
+ var description22 = `
19874
19942
  Subagents must use this tool as it is the only way to report any findings. Nothing else you write will be visible to the user/parent agent.
19875
19943
 
19876
19944
  Note that the output schema is provided dynamically in a user prompt further down in the conversation. Be sure to follow what the latest output schema is when using this tool.
@@ -19878,41 +19946,41 @@ Note that the output schema is provided dynamically in a user prompt further dow
19878
19946
  Please set the output with all the information and analysis you want to pass on. If you just want to send a simple message, use an object with the key "message" and value of the message you want to send.
19879
19947
  Example:
19880
19948
  ${$getNativeToolCallExampleString({
19881
- toolName: toolName21,
19882
- inputSchema: inputSchema21,
19949
+ toolName: toolName22,
19950
+ inputSchema: inputSchema22,
19883
19951
  input: {
19884
19952
  message: "I found a bug in the code!"
19885
19953
  },
19886
- endsAgentStep: endsAgentStep21
19954
+ endsAgentStep: endsAgentStep22
19887
19955
  })}
19888
19956
  `.trim();
19889
19957
  var setOutputParams = {
19890
- toolName: toolName21,
19891
- endsAgentStep: endsAgentStep21,
19892
- description: description21,
19893
- inputSchema: inputSchema21,
19894
- outputSchema: import_v441.default.tuple([
19895
- import_v441.default.object({
19896
- type: import_v441.default.literal("json"),
19897
- value: import_v441.default.object({
19898
- message: import_v441.default.string()
19958
+ toolName: toolName22,
19959
+ endsAgentStep: endsAgentStep22,
19960
+ description: description22,
19961
+ inputSchema: inputSchema22,
19962
+ outputSchema: import_v442.default.tuple([
19963
+ import_v442.default.object({
19964
+ type: import_v442.default.literal("json"),
19965
+ value: import_v442.default.object({
19966
+ message: import_v442.default.string()
19899
19967
  })
19900
19968
  })
19901
19969
  ])
19902
19970
  };
19903
19971
 
19904
19972
  // ../common/src/tools/params/tool/skill.ts
19905
- var import_v442 = __toESM(require("zod/v4"));
19906
- var toolName22 = "skill";
19907
- var endsAgentStep22 = true;
19908
- var inputSchema22 = import_v442.default.object({
19909
- name: import_v442.default.string().min(1).describe("The name of the skill to load")
19973
+ var import_v443 = __toESM(require("zod/v4"));
19974
+ var toolName23 = "skill";
19975
+ var endsAgentStep23 = true;
19976
+ var inputSchema23 = import_v443.default.object({
19977
+ name: import_v443.default.string().min(1).describe("The name of the skill to load")
19910
19978
  }).describe("Load a skill by name to get its full instructions. Skills provide reusable behaviors and instructions.");
19911
- var outputValueSchema = import_v442.default.object({
19912
- name: import_v442.default.string(),
19913
- description: import_v442.default.string(),
19914
- content: import_v442.default.string(),
19915
- license: import_v442.default.string().optional()
19979
+ var outputValueSchema = import_v443.default.object({
19980
+ name: import_v443.default.string(),
19981
+ description: import_v443.default.string(),
19982
+ content: import_v443.default.string(),
19983
+ license: import_v443.default.string().optional()
19916
19984
  });
19917
19985
  var AVAILABLE_SKILLS_PLACEHOLDER = "{{AVAILABLE_SKILLS}}";
19918
19986
  var baseDescription = `Load a skill by name to get its full instructions. Skills provide reusable behaviors and domain-specific knowledge that you can use to complete tasks.
@@ -19921,32 +19989,32 @@ ${AVAILABLE_SKILLS_PLACEHOLDER}
19921
19989
 
19922
19990
  Example:
19923
19991
  ${$getNativeToolCallExampleString({
19924
- toolName: toolName22,
19925
- inputSchema: inputSchema22,
19992
+ toolName: toolName23,
19993
+ inputSchema: inputSchema23,
19926
19994
  input: {
19927
19995
  name: "git-release"
19928
19996
  },
19929
- endsAgentStep: endsAgentStep22
19997
+ endsAgentStep: endsAgentStep23
19930
19998
  })}
19931
19999
  `;
19932
20000
  var skillParams = {
19933
- toolName: toolName22,
19934
- endsAgentStep: endsAgentStep22,
20001
+ toolName: toolName23,
20002
+ endsAgentStep: endsAgentStep23,
19935
20003
  description: baseDescription.trim(),
19936
- inputSchema: inputSchema22,
20004
+ inputSchema: inputSchema23,
19937
20005
  outputSchema: jsonToolResultSchema(outputValueSchema)
19938
20006
  };
19939
20007
 
19940
20008
  // ../common/src/tools/params/tool/spawn-agent-inline.ts
19941
- var import_v443 = __toESM(require("zod/v4"));
19942
- var toolName23 = "spawn_agent_inline";
19943
- var endsAgentStep23 = true;
19944
- var inputSchema23 = import_v443.default.object({
19945
- agent_type: import_v443.default.string().describe("Agent to spawn"),
19946
- prompt: import_v443.default.string().optional().describe("Prompt to send to the agent"),
19947
- params: import_v443.default.record(import_v443.default.string(), import_v443.default.any()).optional().describe("Parameters object for the agent (if any)")
20009
+ var import_v444 = __toESM(require("zod/v4"));
20010
+ var toolName24 = "spawn_agent_inline";
20011
+ var endsAgentStep24 = true;
20012
+ var inputSchema24 = import_v444.default.object({
20013
+ agent_type: import_v444.default.string().describe("Agent to spawn"),
20014
+ prompt: import_v444.default.string().optional().describe("Prompt to send to the agent"),
20015
+ params: import_v444.default.record(import_v444.default.string(), import_v444.default.any()).optional().describe("Parameters object for the agent (if any)")
19948
20016
  }).describe(`Spawn a single agent that runs within the current message history.`);
19949
- var description22 = `
20017
+ var description23 = `
19950
20018
  Spawn a single agent that runs within the current message history.
19951
20019
  The spawned agent sees all previous messages and any messages it adds
19952
20020
  are preserved when control returns to you.
@@ -19960,39 +20028,41 @@ This is useful for:
19960
20028
  The agent will run until it calls end_turn, then control returns to you. There is no tool result for this tool.
19961
20029
  Example:
19962
20030
  ${$getNativeToolCallExampleString({
19963
- toolName: toolName23,
19964
- inputSchema: inputSchema23,
20031
+ toolName: toolName24,
20032
+ inputSchema: inputSchema24,
19965
20033
  input: {
19966
20034
  agent_type: "file-picker",
19967
20035
  prompt: "Find files related to authentication",
19968
20036
  params: { paths: ["src/auth.ts", "src/user.ts"] }
19969
20037
  },
19970
- endsAgentStep: endsAgentStep23
20038
+ endsAgentStep: endsAgentStep24
19971
20039
  })}
19972
20040
  `.trim();
19973
20041
  var spawnAgentInlineParams = {
19974
- toolName: toolName23,
19975
- endsAgentStep: endsAgentStep23,
19976
- description: description22,
19977
- inputSchema: inputSchema23,
20042
+ toolName: toolName24,
20043
+ endsAgentStep: endsAgentStep24,
20044
+ description: description23,
20045
+ inputSchema: inputSchema24,
19978
20046
  outputSchema: textToolResultSchema()
19979
20047
  };
19980
20048
 
19981
20049
  // ../common/src/tools/params/tool/spawn-agents.ts
19982
- var import_v444 = __toESM(require("zod/v4"));
19983
- var spawnAgentsOutputSchema = import_v444.default.object({
19984
- agentType: import_v444.default.string()
20050
+ var import_v445 = __toESM(require("zod/v4"));
20051
+ var spawnAgentsOutputSchema = import_v445.default.object({
20052
+ agentType: import_v445.default.string()
19985
20053
  }).and(jsonObjectSchema).array();
19986
- var toolName24 = "spawn_agents";
19987
- var endsAgentStep24 = true;
19988
- var inputSchema24 = import_v444.default.object({
19989
- agents: import_v444.default.object({
19990
- agent_type: import_v444.default.string().describe("Agent to spawn"),
19991
- prompt: import_v444.default.string().optional().describe("Prompt to send to the agent"),
19992
- params: import_v444.default.record(import_v444.default.string(), import_v444.default.any()).optional().describe("Parameters object for the agent (if any)")
20054
+ var toolName25 = "spawn_agents";
20055
+ var endsAgentStep25 = true;
20056
+ var inputSchema25 = import_v445.default.object({
20057
+ agents: import_v445.default.object({
20058
+ agent_type: import_v445.default.string().describe("Agent to spawn"),
20059
+ prompt: import_v445.default.string().optional().describe("Prompt to send to the agent"),
20060
+ params: import_v445.default.record(import_v445.default.string(), import_v445.default.any()).optional().describe("Parameters object for the agent (if any)"),
20061
+ team_name: import_v445.default.string().optional().describe("Optional team name to register this agent as a member of. The team must already exist (created via team_create)."),
20062
+ team_role: import_v445.default.string().optional().describe('Optional role for the agent within the team (e.g. "senior-engineer", "researcher"). Defaults to "mid-level-engineer".')
19993
20063
  }).array()
19994
20064
  }).describe(`Spawn multiple agents and send a prompt and/or parameters to each of them. These agents will run in parallel. Note that that means they will run independently. If you need to run agents sequentially, use spawn_agents with one agent at a time instead.`);
19995
- var description23 = `
20065
+ var description24 = `
19996
20066
  Use this tool to spawn agents to help you complete the user request. Each agent has specific requirements for prompt and params based on their tools schema.
19997
20067
 
19998
20068
  The prompt field is a simple string, while params is a JSON object that gets validated against the agent's schema.
@@ -20007,8 +20077,8 @@ You can call agents either as direct tool calls (e.g., \`example-agent\`) or use
20007
20077
 
20008
20078
  Example:
20009
20079
  ${$getNativeToolCallExampleString({
20010
- toolName: toolName24,
20011
- inputSchema: inputSchema24,
20080
+ toolName: toolName25,
20081
+ inputSchema: inputSchema25,
20012
20082
  input: {
20013
20083
  agents: [
20014
20084
  {
@@ -20026,32 +20096,32 @@ ${$getNativeToolCallExampleString({
20026
20096
  }
20027
20097
  ]
20028
20098
  },
20029
- endsAgentStep: endsAgentStep24
20099
+ endsAgentStep: endsAgentStep25
20030
20100
  })}
20031
20101
  `.trim();
20032
20102
  var spawnAgentsParams = {
20033
- toolName: toolName24,
20034
- endsAgentStep: endsAgentStep24,
20035
- description: description23,
20036
- inputSchema: inputSchema24,
20103
+ toolName: toolName25,
20104
+ endsAgentStep: endsAgentStep25,
20105
+ description: description24,
20106
+ inputSchema: inputSchema25,
20037
20107
  outputSchema: jsonToolResultSchema(spawnAgentsOutputSchema)
20038
20108
  };
20039
20109
 
20040
20110
  // ../common/src/tools/params/tool/suggest-followups.ts
20041
- var import_v445 = __toESM(require("zod/v4"));
20042
- var toolName25 = "suggest_followups";
20043
- var endsAgentStep25 = false;
20044
- var followupSchema = import_v445.default.object({
20045
- prompt: import_v445.default.string().describe("The full prompt text to send as a user message when clicked"),
20046
- label: import_v445.default.string().optional().describe("Short display label for the card (defaults to truncated prompt if not provided)")
20111
+ var import_v446 = __toESM(require("zod/v4"));
20112
+ var toolName26 = "suggest_followups";
20113
+ var endsAgentStep26 = false;
20114
+ var followupSchema = import_v446.default.object({
20115
+ prompt: import_v446.default.string().describe("The full prompt text to send as a user message when clicked"),
20116
+ label: import_v446.default.string().optional().describe("Short display label for the card (defaults to truncated prompt if not provided)")
20047
20117
  });
20048
- var inputSchema25 = import_v445.default.object({
20049
- followups: import_v445.default.array(followupSchema).min(1, "Must provide at least one followup").describe("List of suggested followup prompts the user can click to send")
20118
+ var inputSchema26 = import_v446.default.object({
20119
+ followups: import_v446.default.array(followupSchema).min(1, "Must provide at least one followup").describe("List of suggested followup prompts the user can click to send")
20050
20120
  }).describe(`Suggest clickable followup prompts to the user. Each followup becomes a card the user can click to send that prompt.`);
20051
- var outputSchema2 = import_v445.default.object({
20052
- message: import_v445.default.string()
20121
+ var outputSchema2 = import_v446.default.object({
20122
+ message: import_v446.default.string()
20053
20123
  });
20054
- var description24 = `
20124
+ var description25 = `
20055
20125
  Suggest clickable followup prompts to the user. When the user clicks a suggestion, it sends that prompt as a new user message.
20056
20126
 
20057
20127
  Use this tool after completing a task to suggest what the user might want to do next. Good suggestions include:
@@ -20070,8 +20140,8 @@ Try to make different suggestions than you did in past steps. That's because use
20070
20140
  Aim for around 3 suggestions. The suggestions persist and remain clickable, with clicked ones visually updated to show they were used.
20071
20141
 
20072
20142
  ${$getNativeToolCallExampleString({
20073
- toolName: toolName25,
20074
- inputSchema: inputSchema25,
20143
+ toolName: toolName26,
20144
+ inputSchema: inputSchema26,
20075
20145
  input: {
20076
20146
  followups: [
20077
20147
  {
@@ -20088,28 +20158,28 @@ ${$getNativeToolCallExampleString({
20088
20158
  }
20089
20159
  ]
20090
20160
  },
20091
- endsAgentStep: endsAgentStep25
20161
+ endsAgentStep: endsAgentStep26
20092
20162
  })}
20093
20163
  `.trim();
20094
20164
  var suggestFollowupsParams = {
20095
- toolName: toolName25,
20096
- endsAgentStep: endsAgentStep25,
20097
- description: description24,
20098
- inputSchema: inputSchema25,
20165
+ toolName: toolName26,
20166
+ endsAgentStep: endsAgentStep26,
20167
+ description: description25,
20168
+ inputSchema: inputSchema26,
20099
20169
  outputSchema: jsonToolResultSchema(outputSchema2)
20100
20170
  };
20101
20171
 
20102
20172
  // ../common/src/tools/params/tool/task-completed.ts
20103
- var import_v446 = __toESM(require("zod/v4"));
20104
- var toolName26 = "task_completed";
20105
- var endsAgentStep26 = true;
20106
- var inputSchema26 = import_v446.default.object({}).describe(`Signal that the task is complete. Use this tool when:
20173
+ var import_v447 = __toESM(require("zod/v4"));
20174
+ var toolName27 = "task_completed";
20175
+ var endsAgentStep27 = true;
20176
+ var inputSchema27 = import_v447.default.object({}).describe(`Signal that the task is complete. Use this tool when:
20107
20177
  - The user's request is completely fulfilled
20108
20178
  - You need clarification from the user before continuing
20109
20179
  - You are stuck or need help from the user to continue
20110
20180
 
20111
20181
  This tool explicitly marks the end of your work on the current task.`);
20112
- var description25 = `
20182
+ var description26 = `
20113
20183
  Use this tool to signal that the task is complete.
20114
20184
 
20115
20185
  - When to use:
@@ -20129,36 +20199,248 @@ Use this tool to signal that the task is complete.
20129
20199
 
20130
20200
  All changes have been implemented and tested successfully!
20131
20201
 
20132
- ${$getNativeToolCallExampleString({ toolName: toolName26, inputSchema: inputSchema26, input: {}, endsAgentStep: endsAgentStep26 })}
20202
+ ${$getNativeToolCallExampleString({ toolName: toolName27, inputSchema: inputSchema27, input: {}, endsAgentStep: endsAgentStep27 })}
20133
20203
 
20134
20204
  OR
20135
20205
 
20136
20206
  I need more information to proceed. Which database schema should I use for this migration?
20137
20207
 
20138
- ${$getNativeToolCallExampleString({ toolName: toolName26, inputSchema: inputSchema26, input: {}, endsAgentStep: endsAgentStep26 })}
20208
+ ${$getNativeToolCallExampleString({ toolName: toolName27, inputSchema: inputSchema27, input: {}, endsAgentStep: endsAgentStep27 })}
20139
20209
 
20140
20210
  OR
20141
20211
 
20142
20212
  I can't get the tests to pass after several different attempts. I need help from the user to proceed.
20143
20213
 
20144
- ${$getNativeToolCallExampleString({ toolName: toolName26, inputSchema: inputSchema26, input: {}, endsAgentStep: endsAgentStep26 })}
20214
+ ${$getNativeToolCallExampleString({ toolName: toolName27, inputSchema: inputSchema27, input: {}, endsAgentStep: endsAgentStep27 })}
20145
20215
  `.trim();
20146
20216
  var taskCompletedParams = {
20147
- toolName: toolName26,
20148
- endsAgentStep: endsAgentStep26,
20149
- description: description25,
20150
- inputSchema: inputSchema26,
20217
+ toolName: toolName27,
20218
+ endsAgentStep: endsAgentStep27,
20219
+ description: description26,
20220
+ inputSchema: inputSchema27,
20221
+ outputSchema: textToolResultSchema()
20222
+ };
20223
+
20224
+ // ../common/src/tools/params/tool/task-create.ts
20225
+ var import_v448 = __toESM(require("zod/v4"));
20226
+ var toolName28 = "task_create";
20227
+ var endsAgentStep28 = false;
20228
+ var inputSchema28 = import_v448.default.object({
20229
+ subject: import_v448.default.string().describe("A brief, actionable title for the task"),
20230
+ description: import_v448.default.string().describe("A detailed description of what needs to be done"),
20231
+ activeForm: import_v448.default.string().optional().describe('Present continuous form shown in spinner when in_progress (e.g., "Running tests")'),
20232
+ metadata: import_v448.default.record(import_v448.default.string(), import_v448.default.unknown()).optional().describe("Arbitrary metadata to attach to the task")
20233
+ }).describe(`Create a new task in the team task list for tracking work items.`);
20234
+ var description27 = `
20235
+ Create a structured task for tracking work in the current team/swarm.
20236
+
20237
+ - When to use: When a task requires multiple steps or needs to be tracked and coordinated across agents.
20238
+ - The subject should be imperative (e.g., "Fix authentication bug").
20239
+ - The activeForm should be present continuous (e.g., "Fixing authentication bug").
20240
+ - New tasks are created with status "pending".
20241
+
20242
+ Example:
20243
+ ${$getNativeToolCallExampleString({
20244
+ toolName: toolName28,
20245
+ inputSchema: inputSchema28,
20246
+ input: {
20247
+ subject: "Fix authentication bug in login flow",
20248
+ description: "The login endpoint returns 500 when password contains special characters",
20249
+ activeForm: "Fixing authentication bug"
20250
+ },
20251
+ endsAgentStep: endsAgentStep28
20252
+ })}
20253
+ `.trim();
20254
+ var taskCreateParams = {
20255
+ toolName: toolName28,
20256
+ endsAgentStep: endsAgentStep28,
20257
+ description: description27,
20258
+ inputSchema: inputSchema28,
20259
+ outputSchema: textToolResultSchema()
20260
+ };
20261
+
20262
+ // ../common/src/tools/params/tool/task-get.ts
20263
+ var import_v449 = __toESM(require("zod/v4"));
20264
+ var toolName29 = "task_get";
20265
+ var endsAgentStep29 = false;
20266
+ var inputSchema29 = import_v449.default.object({
20267
+ taskId: import_v449.default.string().describe("The ID of the task to retrieve")
20268
+ }).describe(`Retrieve a task by its ID from the team task list.`);
20269
+ var description28 = `
20270
+ Retrieve the full details of a task by its ID.
20271
+
20272
+ - When to use: When you need the full description and context before starting work on a task.
20273
+ - Returns: subject, description, status, blocks, blockedBy, and other task details.
20274
+
20275
+ Example:
20276
+ ${$getNativeToolCallExampleString({
20277
+ toolName: toolName29,
20278
+ inputSchema: inputSchema29,
20279
+ input: {
20280
+ taskId: "1"
20281
+ },
20282
+ endsAgentStep: endsAgentStep29
20283
+ })}
20284
+ `.trim();
20285
+ var taskGetParams = {
20286
+ toolName: toolName29,
20287
+ endsAgentStep: endsAgentStep29,
20288
+ description: description28,
20289
+ inputSchema: inputSchema29,
20290
+ outputSchema: textToolResultSchema()
20291
+ };
20292
+
20293
+ // ../common/src/tools/params/tool/task-list.ts
20294
+ var import_v450 = __toESM(require("zod/v4"));
20295
+ var toolName30 = "task_list";
20296
+ var endsAgentStep30 = false;
20297
+ var inputSchema30 = import_v450.default.object({}).describe(`List all tasks in the team task list.`);
20298
+ var description29 = `
20299
+ List all tasks in the current team's task list.
20300
+
20301
+ - When to use: To see available tasks, check progress, or find unblocked work to claim.
20302
+ - Returns a summary of each task: id, subject, status, owner, blockedBy.
20303
+
20304
+ Example:
20305
+ ${$getNativeToolCallExampleString({
20306
+ toolName: toolName30,
20307
+ inputSchema: inputSchema30,
20308
+ input: {},
20309
+ endsAgentStep: endsAgentStep30
20310
+ })}
20311
+ `.trim();
20312
+ var taskListParams = {
20313
+ toolName: toolName30,
20314
+ endsAgentStep: endsAgentStep30,
20315
+ description: description29,
20316
+ inputSchema: inputSchema30,
20317
+ outputSchema: textToolResultSchema()
20318
+ };
20319
+
20320
+ // ../common/src/tools/params/tool/task-update.ts
20321
+ var import_v451 = __toESM(require("zod/v4"));
20322
+ var toolName31 = "task_update";
20323
+ var endsAgentStep31 = false;
20324
+ var inputSchema31 = import_v451.default.object({
20325
+ taskId: import_v451.default.string().describe("The ID of the task to update"),
20326
+ status: import_v451.default.string().optional().describe('New status for the task: "pending", "in_progress", "completed", or "deleted"'),
20327
+ subject: import_v451.default.string().optional().describe("New subject for the task"),
20328
+ description: import_v451.default.string().optional().describe("New description for the task"),
20329
+ activeForm: import_v451.default.string().optional().describe('Present continuous form shown in spinner when in_progress (e.g., "Running tests")'),
20330
+ owner: import_v451.default.string().optional().describe("New owner for the task (agent name)"),
20331
+ addBlocks: import_v451.default.array(import_v451.default.string()).optional().describe("Task IDs that this task blocks"),
20332
+ addBlockedBy: import_v451.default.array(import_v451.default.string()).optional().describe("Task IDs that block this task"),
20333
+ metadata: import_v451.default.record(import_v451.default.string(), import_v451.default.unknown()).optional().describe("Metadata keys to merge into the task. Set a key to null to delete it.")
20334
+ }).describe(`Update an existing task in the team task list.`);
20335
+ var description30 = `
20336
+ Update a task's status, details, or dependencies.
20337
+
20338
+ - When to use: To mark tasks as in_progress, completed, or to update task details.
20339
+ - Status workflow: pending -> in_progress -> completed. Use "deleted" to remove a task.
20340
+ - Only mark a task as completed when you have fully accomplished it.
20341
+
20342
+ Example - Mark as in progress:
20343
+ ${$getNativeToolCallExampleString({
20344
+ toolName: toolName31,
20345
+ inputSchema: inputSchema31,
20346
+ input: {
20347
+ taskId: "1",
20348
+ status: "in_progress"
20349
+ },
20350
+ endsAgentStep: endsAgentStep31
20351
+ })}
20352
+
20353
+ Example - Mark as completed:
20354
+ ${$getNativeToolCallExampleString({
20355
+ toolName: toolName31,
20356
+ inputSchema: inputSchema31,
20357
+ input: {
20358
+ taskId: "1",
20359
+ status: "completed"
20360
+ },
20361
+ endsAgentStep: endsAgentStep31
20362
+ })}
20363
+ `.trim();
20364
+ var taskUpdateParams = {
20365
+ toolName: toolName31,
20366
+ endsAgentStep: endsAgentStep31,
20367
+ description: description30,
20368
+ inputSchema: inputSchema31,
20369
+ outputSchema: textToolResultSchema()
20370
+ };
20371
+
20372
+ // ../common/src/tools/params/tool/team-create.ts
20373
+ var import_v452 = __toESM(require("zod/v4"));
20374
+ var toolName32 = "team_create";
20375
+ var endsAgentStep32 = false;
20376
+ var inputSchema32 = import_v452.default.object({
20377
+ team_name: import_v452.default.string().describe("Name of the team to create"),
20378
+ description: import_v452.default.string().optional().describe("Optional description of the team purpose"),
20379
+ agent_type: import_v452.default.string().optional().describe("Optional agent type template to use for the team")
20380
+ }).describe(`Create a new team/swarm with the given name and optional configuration.`);
20381
+ var description31 = `
20382
+ Create a new team for collaborative multi-agent work.
20383
+
20384
+ - When to use: When you need to create a new team/swarm to coordinate multiple agents on a task.
20385
+ - Before calling: Ensure the team name is unique and descriptive.
20386
+ - Effect: Creates a new team context that agents can be spawned into.
20387
+
20388
+ Example:
20389
+ ${$getNativeToolCallExampleString({
20390
+ toolName: toolName32,
20391
+ inputSchema: inputSchema32,
20392
+ input: {
20393
+ team_name: "backend-refactor",
20394
+ description: "Team for refactoring the backend API layer",
20395
+ agent_type: "coordinator"
20396
+ },
20397
+ endsAgentStep: endsAgentStep32
20398
+ })}
20399
+ `.trim();
20400
+ var teamCreateParams = {
20401
+ toolName: toolName32,
20402
+ endsAgentStep: endsAgentStep32,
20403
+ description: description31,
20404
+ inputSchema: inputSchema32,
20405
+ outputSchema: textToolResultSchema()
20406
+ };
20407
+
20408
+ // ../common/src/tools/params/tool/team-delete.ts
20409
+ var import_v453 = __toESM(require("zod/v4"));
20410
+ var toolName33 = "team_delete";
20411
+ var endsAgentStep33 = false;
20412
+ var inputSchema33 = import_v453.default.object({}).describe(`Delete the current team/swarm. Uses the current team context to determine which team to delete.`);
20413
+ var description32 = `
20414
+ Delete the current team and clean up all associated resources.
20415
+
20416
+ - When to use: When a team's work is complete and it should be disbanded.
20417
+ - Before calling: Ensure all agents in the team have completed their work.
20418
+ - Effect: Removes the team context and all associated state.
20419
+
20420
+ Example:
20421
+ ${$getNativeToolCallExampleString({
20422
+ toolName: toolName33,
20423
+ inputSchema: inputSchema33,
20424
+ input: {},
20425
+ endsAgentStep: endsAgentStep33
20426
+ })}
20427
+ `.trim();
20428
+ var teamDeleteParams = {
20429
+ toolName: toolName33,
20430
+ endsAgentStep: endsAgentStep33,
20431
+ description: description32,
20432
+ inputSchema: inputSchema33,
20151
20433
  outputSchema: textToolResultSchema()
20152
20434
  };
20153
20435
 
20154
20436
  // ../common/src/tools/params/tool/think-deeply.ts
20155
- var import_v447 = __toESM(require("zod/v4"));
20156
- var toolName27 = "think_deeply";
20157
- var endsAgentStep27 = false;
20158
- var inputSchema27 = import_v447.default.object({
20159
- thought: import_v447.default.string().min(1, "Thought cannot be empty").describe(`Detailed step-by-step analysis. Initially keep each step concise (max ~5-7 words per step).`)
20437
+ var import_v454 = __toESM(require("zod/v4"));
20438
+ var toolName34 = "think_deeply";
20439
+ var endsAgentStep34 = false;
20440
+ var inputSchema34 = import_v454.default.object({
20441
+ thought: import_v454.default.string().min(1, "Thought cannot be empty").describe(`Detailed step-by-step analysis. Initially keep each step concise (max ~5-7 words per step).`)
20160
20442
  }).describe(`Deeply consider complex tasks by brainstorming approaches and tradeoffs step-by-step.`);
20161
- var description26 = `
20443
+ var description33 = `
20162
20444
  Use when user request:
20163
20445
  - Explicitly asks for deep planning.
20164
20446
  - Requires multi-file changes or complex logic.
@@ -20170,8 +20452,8 @@ This tool does not generate a tool result.
20170
20452
 
20171
20453
  Example:
20172
20454
  ${$getNativeToolCallExampleString({
20173
- toolName: toolName27,
20174
- inputSchema: inputSchema27,
20455
+ toolName: toolName34,
20456
+ inputSchema: inputSchema34,
20175
20457
  input: {
20176
20458
  thought: [
20177
20459
  "1. Check current user authentication",
@@ -20181,94 +20463,94 @@ ${$getNativeToolCallExampleString({
20181
20463
  ].join(`
20182
20464
  `)
20183
20465
  },
20184
- endsAgentStep: endsAgentStep27
20466
+ endsAgentStep: endsAgentStep34
20185
20467
  })}
20186
20468
  `.trim();
20187
20469
  var thinkDeeplyParams = {
20188
- toolName: toolName27,
20189
- endsAgentStep: endsAgentStep27,
20190
- description: description26,
20191
- inputSchema: inputSchema27,
20470
+ toolName: toolName34,
20471
+ endsAgentStep: endsAgentStep34,
20472
+ description: description33,
20473
+ inputSchema: inputSchema34,
20192
20474
  outputSchema: textToolResultSchema()
20193
20475
  };
20194
20476
 
20195
20477
  // ../common/src/tools/params/tool/update-subgoal.ts
20196
- var import_v448 = __toESM(require("zod/v4"));
20197
- var toolName28 = "update_subgoal";
20198
- var endsAgentStep28 = false;
20199
- var inputSchema28 = import_v448.default.object({
20200
- id: import_v448.default.string().min(1, "Id cannot be empty").describe(`The id of the subgoal to update.`),
20201
- status: import_v448.default.enum(["NOT_STARTED", "IN_PROGRESS", "COMPLETE", "ABORTED"]).optional().describe(`Change the status of the subgoal.`),
20202
- plan: import_v448.default.string().optional().describe(`Change the plan for the subgoal.`),
20203
- log: import_v448.default.string().optional().describe(`Add a log message to the subgoal. This will create a new log entry and append it to the existing logs. Use this to record your progress and any new information you learned as you go.`)
20478
+ var import_v455 = __toESM(require("zod/v4"));
20479
+ var toolName35 = "update_subgoal";
20480
+ var endsAgentStep35 = false;
20481
+ var inputSchema35 = import_v455.default.object({
20482
+ id: import_v455.default.string().min(1, "Id cannot be empty").describe(`The id of the subgoal to update.`),
20483
+ status: import_v455.default.enum(["NOT_STARTED", "IN_PROGRESS", "COMPLETE", "ABORTED"]).optional().describe(`Change the status of the subgoal.`),
20484
+ plan: import_v455.default.string().optional().describe(`Change the plan for the subgoal.`),
20485
+ log: import_v455.default.string().optional().describe(`Add a log message to the subgoal. This will create a new log entry and append it to the existing logs. Use this to record your progress and any new information you learned as you go.`)
20204
20486
  }).describe(`Update a subgoal in the context given the id, and optionally the status or plan, or a new log to append. Feel free to update any combination of the status, plan, or log in one invocation.`);
20205
- var description27 = `
20487
+ var description34 = `
20206
20488
  Examples:
20207
20489
 
20208
20490
  Usage 1 (update status):
20209
20491
  ${$getNativeToolCallExampleString({
20210
- toolName: toolName28,
20211
- inputSchema: inputSchema28,
20492
+ toolName: toolName35,
20493
+ inputSchema: inputSchema35,
20212
20494
  input: {
20213
20495
  id: "1",
20214
20496
  status: "COMPLETE"
20215
20497
  },
20216
- endsAgentStep: endsAgentStep28
20498
+ endsAgentStep: endsAgentStep35
20217
20499
  })}
20218
20500
 
20219
20501
  Usage 2 (update plan):
20220
20502
  ${$getNativeToolCallExampleString({
20221
- toolName: toolName28,
20222
- inputSchema: inputSchema28,
20503
+ toolName: toolName35,
20504
+ inputSchema: inputSchema35,
20223
20505
  input: {
20224
20506
  id: "3",
20225
20507
  plan: "Create file for endpoint in the api. Register it in the router."
20226
20508
  },
20227
- endsAgentStep: endsAgentStep28
20509
+ endsAgentStep: endsAgentStep35
20228
20510
  })}
20229
20511
 
20230
20512
  Usage 3 (add log):
20231
20513
  ${$getNativeToolCallExampleString({
20232
- toolName: toolName28,
20233
- inputSchema: inputSchema28,
20514
+ toolName: toolName35,
20515
+ inputSchema: inputSchema35,
20234
20516
  input: {
20235
20517
  id: "1",
20236
20518
  log: "Found the error in the tests. Culprit: foo function."
20237
20519
  },
20238
- endsAgentStep: endsAgentStep28
20520
+ endsAgentStep: endsAgentStep35
20239
20521
  })}
20240
20522
 
20241
20523
  Usage 4 (update status and add log):
20242
20524
  ${$getNativeToolCallExampleString({
20243
- toolName: toolName28,
20244
- inputSchema: inputSchema28,
20525
+ toolName: toolName35,
20526
+ inputSchema: inputSchema35,
20245
20527
  input: {
20246
20528
  id: "1",
20247
20529
  status: "COMPLETE",
20248
20530
  log: "Reran the tests (passed)"
20249
20531
  },
20250
- endsAgentStep: endsAgentStep28
20532
+ endsAgentStep: endsAgentStep35
20251
20533
  })}
20252
20534
  `.trim();
20253
20535
  var updateSubgoalParams = {
20254
- toolName: toolName28,
20255
- endsAgentStep: endsAgentStep28,
20256
- description: description27,
20257
- inputSchema: inputSchema28,
20258
- outputSchema: jsonToolResultSchema(import_v448.default.object({
20259
- message: import_v448.default.string()
20536
+ toolName: toolName35,
20537
+ endsAgentStep: endsAgentStep35,
20538
+ description: description34,
20539
+ inputSchema: inputSchema35,
20540
+ outputSchema: jsonToolResultSchema(import_v455.default.object({
20541
+ message: import_v455.default.string()
20260
20542
  }))
20261
20543
  };
20262
20544
 
20263
20545
  // ../common/src/tools/params/tool/web-search.ts
20264
- var import_v449 = __toESM(require("zod/v4"));
20265
- var toolName29 = "web_search";
20266
- var endsAgentStep29 = true;
20267
- var inputSchema29 = import_v449.default.object({
20268
- query: import_v449.default.string().min(1, "Query cannot be empty").describe(`The search query to find relevant web content`),
20269
- depth: import_v449.default.enum(["standard", "deep"]).optional().default("standard").describe(`Search depth - 'standard' for quick results, 'deep' for more comprehensive search. Default is 'standard'.`)
20546
+ var import_v456 = __toESM(require("zod/v4"));
20547
+ var toolName36 = "web_search";
20548
+ var endsAgentStep36 = true;
20549
+ var inputSchema36 = import_v456.default.object({
20550
+ query: import_v456.default.string().min(1, "Query cannot be empty").describe(`The search query to find relevant web content`),
20551
+ depth: import_v456.default.enum(["standard", "deep"]).optional().default("standard").describe(`Search depth - 'standard' for quick results, 'deep' for more comprehensive search. Default is 'standard'.`)
20270
20552
  }).describe(`Search the web for current information using Linkup API.`);
20271
- var description28 = `
20553
+ var description35 = `
20272
20554
  Purpose: Search the web for current, up-to-date information on any topic. This tool uses Linkup's web search API to find relevant content from across the internet.
20273
20555
 
20274
20556
  Use cases:
@@ -20282,50 +20564,50 @@ The tool will return search results with titles, URLs, and content snippets.
20282
20564
 
20283
20565
  Example:
20284
20566
  ${$getNativeToolCallExampleString({
20285
- toolName: toolName29,
20286
- inputSchema: inputSchema29,
20567
+ toolName: toolName36,
20568
+ inputSchema: inputSchema36,
20287
20569
  input: {
20288
20570
  query: "Next.js 15 new features",
20289
20571
  depth: "standard"
20290
20572
  },
20291
- endsAgentStep: endsAgentStep29
20573
+ endsAgentStep: endsAgentStep36
20292
20574
  })}
20293
20575
 
20294
20576
  ${$getNativeToolCallExampleString({
20295
- toolName: toolName29,
20296
- inputSchema: inputSchema29,
20577
+ toolName: toolName36,
20578
+ inputSchema: inputSchema36,
20297
20579
  input: {
20298
20580
  query: "React Server Components tutorial",
20299
20581
  depth: "deep"
20300
20582
  },
20301
- endsAgentStep: endsAgentStep29
20583
+ endsAgentStep: endsAgentStep36
20302
20584
  })}
20303
20585
  `.trim();
20304
20586
  var webSearchParams = {
20305
- toolName: toolName29,
20306
- endsAgentStep: endsAgentStep29,
20307
- description: description28,
20308
- inputSchema: inputSchema29,
20309
- outputSchema: jsonToolResultSchema(import_v449.default.union([
20310
- import_v449.default.object({
20311
- result: import_v449.default.string()
20587
+ toolName: toolName36,
20588
+ endsAgentStep: endsAgentStep36,
20589
+ description: description35,
20590
+ inputSchema: inputSchema36,
20591
+ outputSchema: jsonToolResultSchema(import_v456.default.union([
20592
+ import_v456.default.object({
20593
+ result: import_v456.default.string()
20312
20594
  }),
20313
- import_v449.default.object({
20314
- errorMessage: import_v449.default.string()
20595
+ import_v456.default.object({
20596
+ errorMessage: import_v456.default.string()
20315
20597
  })
20316
20598
  ]))
20317
20599
  };
20318
20600
 
20319
20601
  // ../common/src/tools/params/tool/write-file.ts
20320
- var import_v450 = __toESM(require("zod/v4"));
20321
- var toolName30 = "write_file";
20322
- var endsAgentStep30 = false;
20323
- var inputSchema30 = import_v450.default.object({
20324
- path: import_v450.default.string().min(1, "Path cannot be empty").describe(`Path to the file relative to the **project root**`),
20325
- instructions: import_v450.default.string().describe("What the change is intended to do in only one sentence."),
20326
- content: import_v450.default.string().describe(`Edit snippet to apply to the file.`)
20602
+ var import_v457 = __toESM(require("zod/v4"));
20603
+ var toolName37 = "write_file";
20604
+ var endsAgentStep37 = false;
20605
+ var inputSchema37 = import_v457.default.object({
20606
+ path: import_v457.default.string().min(1, "Path cannot be empty").describe(`Path to the file relative to the **project root**`),
20607
+ instructions: import_v457.default.string().describe("What the change is intended to do in only one sentence."),
20608
+ content: import_v457.default.string().describe(`Edit snippet to apply to the file.`)
20327
20609
  }).describe(`Create or edit a file with the given content.`);
20328
- var description29 = `
20610
+ var description36 = `
20329
20611
  Create or replace a file with the given content.
20330
20612
 
20331
20613
  #### Edit Snippet
@@ -20346,20 +20628,20 @@ Examples:
20346
20628
 
20347
20629
  Example 1 - Simple file creation:
20348
20630
  ${$getNativeToolCallExampleString({
20349
- toolName: toolName30,
20350
- inputSchema: inputSchema30,
20631
+ toolName: toolName37,
20632
+ inputSchema: inputSchema37,
20351
20633
  input: {
20352
20634
  path: "new-file.ts",
20353
20635
  instructions: "Prints Hello, world",
20354
20636
  content: 'console.log("Hello, world!");'
20355
20637
  },
20356
- endsAgentStep: endsAgentStep30
20638
+ endsAgentStep: endsAgentStep37
20357
20639
  })}
20358
20640
 
20359
20641
  Example 2 - Editing with placeholder comments:
20360
20642
  ${$getNativeToolCallExampleString({
20361
- toolName: toolName30,
20362
- inputSchema: inputSchema30,
20643
+ toolName: toolName37,
20644
+ inputSchema: inputSchema37,
20363
20645
  input: {
20364
20646
  path: "foo.ts",
20365
20647
  instructions: "Update foo and remove console.log",
@@ -20379,28 +20661,28 @@ function foo() {
20379
20661
 
20380
20662
  // ... existing code ...`
20381
20663
  },
20382
- endsAgentStep: endsAgentStep30
20664
+ endsAgentStep: endsAgentStep37
20383
20665
  })}
20384
20666
  `.trim();
20385
20667
  var writeFileParams = {
20386
- toolName: toolName30,
20387
- endsAgentStep: endsAgentStep30,
20388
- description: description29,
20389
- inputSchema: inputSchema30,
20668
+ toolName: toolName37,
20669
+ endsAgentStep: endsAgentStep37,
20670
+ description: description36,
20671
+ inputSchema: inputSchema37,
20390
20672
  outputSchema: jsonToolResultSchema(updateFileResultSchema)
20391
20673
  };
20392
20674
 
20393
20675
  // ../common/src/tools/params/tool/write-todos.ts
20394
- var import_v451 = __toESM(require("zod/v4"));
20395
- var toolName31 = "write_todos";
20396
- var endsAgentStep31 = false;
20397
- var inputSchema31 = import_v451.default.object({
20398
- todos: import_v451.default.array(import_v451.default.object({
20399
- task: import_v451.default.string().describe("Description of the task"),
20400
- completed: import_v451.default.boolean().describe("Whether the task is completed")
20676
+ var import_v458 = __toESM(require("zod/v4"));
20677
+ var toolName38 = "write_todos";
20678
+ var endsAgentStep38 = false;
20679
+ var inputSchema38 = import_v458.default.object({
20680
+ todos: import_v458.default.array(import_v458.default.object({
20681
+ task: import_v458.default.string().describe("Description of the task"),
20682
+ completed: import_v458.default.boolean().describe("Whether the task is completed")
20401
20683
  })).describe("List of todos with their completion status. Add ALL of the applicable tasks to the list, so you don't forget to do anything. Try to order the todos the same way you will complete them. Do not mark todos as completed if you have not completed them yet!")
20402
20684
  }).describe("Write a todo list to track tasks for multi-step implementations. Use this frequently to maintain an updated step-by-step plan.");
20403
- var description30 = `
20685
+ var description37 = `
20404
20686
  Use this tool to track your objectives through an ordered step-by-step plan. Call this tool after you have gathered context on the user's request to plan out the implementation steps for the user's request.
20405
20687
 
20406
20688
  After completing each todo step, call this tool again to update the list and mark that task as completed. Note that each time you call this tool, rewrite ALL todos with their current status.
@@ -20409,8 +20691,8 @@ Use this tool frequently as you work through tasks to update the list of todos w
20409
20691
 
20410
20692
  Example:
20411
20693
  ${$getNativeToolCallExampleString({
20412
- toolName: toolName31,
20413
- inputSchema: inputSchema31,
20694
+ toolName: toolName38,
20695
+ inputSchema: inputSchema38,
20414
20696
  input: {
20415
20697
  todos: [
20416
20698
  { task: "Create new implementation in foo.ts", completed: true },
@@ -20422,19 +20704,19 @@ ${$getNativeToolCallExampleString({
20422
20704
  }
20423
20705
  ]
20424
20706
  },
20425
- endsAgentStep: endsAgentStep31
20707
+ endsAgentStep: endsAgentStep38
20426
20708
  })}
20427
20709
  `.trim();
20428
20710
  var writeTodosParams = {
20429
- toolName: toolName31,
20430
- endsAgentStep: endsAgentStep31,
20431
- description: description30,
20432
- inputSchema: inputSchema31,
20433
- outputSchema: import_v451.default.tuple([
20434
- import_v451.default.object({
20435
- type: import_v451.default.literal("json"),
20436
- value: import_v451.default.object({
20437
- message: import_v451.default.string()
20711
+ toolName: toolName38,
20712
+ endsAgentStep: endsAgentStep38,
20713
+ description: description37,
20714
+ inputSchema: inputSchema38,
20715
+ outputSchema: import_v458.default.tuple([
20716
+ import_v458.default.object({
20717
+ type: import_v458.default.literal("json"),
20718
+ value: import_v458.default.object({
20719
+ message: import_v458.default.string()
20438
20720
  })
20439
20721
  })
20440
20722
  ])
@@ -20460,6 +20742,7 @@ var toolParams = {
20460
20742
  read_subtree: readSubtreeParams,
20461
20743
  run_file_change_hooks: runFileChangeHooksParams,
20462
20744
  run_terminal_command: runTerminalCommandParams,
20745
+ send_message: sendMessageParams,
20463
20746
  set_messages: setMessagesParams,
20464
20747
  set_output: setOutputParams,
20465
20748
  skill: skillParams,
@@ -20468,51 +20751,57 @@ var toolParams = {
20468
20751
  str_replace: strReplaceParams,
20469
20752
  suggest_followups: suggestFollowupsParams,
20470
20753
  task_completed: taskCompletedParams,
20754
+ task_create: taskCreateParams,
20755
+ task_get: taskGetParams,
20756
+ task_list: taskListParams,
20757
+ task_update: taskUpdateParams,
20758
+ team_create: teamCreateParams,
20759
+ team_delete: teamDeleteParams,
20471
20760
  think_deeply: thinkDeeplyParams,
20472
20761
  update_subgoal: updateSubgoalParams,
20473
20762
  web_search: webSearchParams,
20474
20763
  write_file: writeFileParams,
20475
20764
  write_todos: writeTodosParams
20476
20765
  };
20477
- var clientToolCallSchema = import_v452.default.discriminatedUnion("toolName", [
20478
- import_v452.default.object({
20479
- toolName: import_v452.default.literal("ask_user"),
20766
+ var clientToolCallSchema = import_v459.default.discriminatedUnion("toolName", [
20767
+ import_v459.default.object({
20768
+ toolName: import_v459.default.literal("ask_user"),
20480
20769
  input: toolParams.ask_user.inputSchema
20481
20770
  }),
20482
- import_v452.default.object({
20483
- toolName: import_v452.default.literal("browser_logs"),
20771
+ import_v459.default.object({
20772
+ toolName: import_v459.default.literal("browser_logs"),
20484
20773
  input: toolParams.browser_logs.inputSchema
20485
20774
  }),
20486
- import_v452.default.object({
20487
- toolName: import_v452.default.literal("code_search"),
20775
+ import_v459.default.object({
20776
+ toolName: import_v459.default.literal("code_search"),
20488
20777
  input: toolParams.code_search.inputSchema
20489
20778
  }),
20490
- import_v452.default.object({
20491
- toolName: import_v452.default.literal("create_plan"),
20779
+ import_v459.default.object({
20780
+ toolName: import_v459.default.literal("create_plan"),
20492
20781
  input: FileChangeSchema
20493
20782
  }),
20494
- import_v452.default.object({
20495
- toolName: import_v452.default.literal("glob"),
20783
+ import_v459.default.object({
20784
+ toolName: import_v459.default.literal("glob"),
20496
20785
  input: toolParams.glob.inputSchema
20497
20786
  }),
20498
- import_v452.default.object({
20499
- toolName: import_v452.default.literal("list_directory"),
20787
+ import_v459.default.object({
20788
+ toolName: import_v459.default.literal("list_directory"),
20500
20789
  input: toolParams.list_directory.inputSchema
20501
20790
  }),
20502
- import_v452.default.object({
20503
- toolName: import_v452.default.literal("run_file_change_hooks"),
20791
+ import_v459.default.object({
20792
+ toolName: import_v459.default.literal("run_file_change_hooks"),
20504
20793
  input: toolParams.run_file_change_hooks.inputSchema
20505
20794
  }),
20506
- import_v452.default.object({
20507
- toolName: import_v452.default.literal("run_terminal_command"),
20508
- input: toolParams.run_terminal_command.inputSchema.and(import_v452.default.object({ mode: import_v452.default.enum(["assistant", "user"]) }))
20795
+ import_v459.default.object({
20796
+ toolName: import_v459.default.literal("run_terminal_command"),
20797
+ input: toolParams.run_terminal_command.inputSchema.and(import_v459.default.object({ mode: import_v459.default.enum(["assistant", "user"]) }))
20509
20798
  }),
20510
- import_v452.default.object({
20511
- toolName: import_v452.default.literal("str_replace"),
20799
+ import_v459.default.object({
20800
+ toolName: import_v459.default.literal("str_replace"),
20512
20801
  input: FileChangeSchema
20513
20802
  }),
20514
- import_v452.default.object({
20515
- toolName: import_v452.default.literal("write_file"),
20803
+ import_v459.default.object({
20804
+ toolName: import_v459.default.literal("write_file"),
20516
20805
  input: FileChangeSchema
20517
20806
  })
20518
20807
  ]);
@@ -20741,13 +21030,13 @@ var escapeString = (str) => {
20741
21030
  var import_lodash13 = __toESM(require_lodash());
20742
21031
 
20743
21032
  // ../common/src/util/zod-schema.ts
20744
- var import_v453 = __toESM(require("zod/v4"));
21033
+ var import_v460 = __toESM(require("zod/v4"));
20745
21034
  function schemaToJsonStr(schema, options) {
20746
21035
  if (!schema)
20747
21036
  return "None";
20748
21037
  try {
20749
- if (schema instanceof import_v453.default.ZodType) {
20750
- const jsonSchema = import_v453.default.toJSONSchema(schema, options);
21038
+ if (schema instanceof import_v460.default.ZodType) {
21039
+ const jsonSchema = import_v460.default.toJSONSchema(schema, options);
20751
21040
  delete jsonSchema["$schema"];
20752
21041
  return JSON.stringify(jsonSchema, null, 2);
20753
21042
  }
@@ -20758,27 +21047,27 @@ function schemaToJsonStr(schema, options) {
20758
21047
  }
20759
21048
 
20760
21049
  // ../packages/agent-runtime/src/templates/prompts.ts
20761
- var import_v456 = require("zod/v4");
21050
+ var import_v463 = require("zod/v4");
20762
21051
 
20763
21052
  // ../common/src/types/dynamic-agent-template.ts
20764
- var import_v455 = require("zod/v4");
21053
+ var import_v462 = require("zod/v4");
20765
21054
  init_old_constants();
20766
21055
 
20767
21056
  // ../common/src/types/mcp.ts
20768
- var import_v454 = require("zod/v4");
20769
- var mcpConfigStdioSchema = import_v454.z.strictObject({
20770
- type: import_v454.z.literal("stdio").default("stdio"),
20771
- command: import_v454.z.string(),
20772
- args: import_v454.z.string().array().default(() => []),
20773
- env: import_v454.z.record(import_v454.z.string(), import_v454.z.string()).default(() => ({}))
21057
+ var import_v461 = require("zod/v4");
21058
+ var mcpConfigStdioSchema = import_v461.z.strictObject({
21059
+ type: import_v461.z.literal("stdio").default("stdio"),
21060
+ command: import_v461.z.string(),
21061
+ args: import_v461.z.string().array().default(() => []),
21062
+ env: import_v461.z.record(import_v461.z.string(), import_v461.z.string()).default(() => ({}))
20774
21063
  });
20775
- var mcpConfigRemoteSchema = import_v454.z.strictObject({
20776
- type: import_v454.z.enum(["http", "sse"]).default("http"),
20777
- url: import_v454.z.string(),
20778
- params: import_v454.z.record(import_v454.z.string(), import_v454.z.string()).default(() => ({})),
20779
- headers: import_v454.z.record(import_v454.z.string(), import_v454.z.string()).default(() => ({}))
21064
+ var mcpConfigRemoteSchema = import_v461.z.strictObject({
21065
+ type: import_v461.z.enum(["http", "sse"]).default("http"),
21066
+ url: import_v461.z.string(),
21067
+ params: import_v461.z.record(import_v461.z.string(), import_v461.z.string()).default(() => ({})),
21068
+ headers: import_v461.z.record(import_v461.z.string(), import_v461.z.string()).default(() => ({}))
20780
21069
  });
20781
- var mcpConfigSchema = import_v454.z.union([
21070
+ var mcpConfigSchema = import_v461.z.union([
20782
21071
  mcpConfigRemoteSchema,
20783
21072
  mcpConfigStdioSchema
20784
21073
  ]);
@@ -20788,8 +21077,8 @@ var filteredModels = Object.values(models).filter((model) => ALLOWED_MODEL_PREFI
20788
21077
  if (filteredModels.length === 0) {
20789
21078
  throw new Error("No valid models found with allowed prefixes");
20790
21079
  }
20791
- var JsonSchemaSchema = import_v455.z.lazy(() => import_v455.z.looseObject({
20792
- type: import_v455.z.enum([
21080
+ var JsonSchemaSchema = import_v462.z.lazy(() => import_v462.z.looseObject({
21081
+ type: import_v462.z.enum([
20793
21082
  "object",
20794
21083
  "array",
20795
21084
  "string",
@@ -20798,78 +21087,78 @@ var JsonSchemaSchema = import_v455.z.lazy(() => import_v455.z.looseObject({
20798
21087
  "null",
20799
21088
  "integer"
20800
21089
  ]).optional(),
20801
- description: import_v455.z.string().optional(),
20802
- properties: import_v455.z.record(import_v455.z.string(), JsonSchemaSchema.or(import_v455.z.boolean())).optional(),
20803
- required: import_v455.z.string().array().optional(),
20804
- enum: import_v455.z.union([import_v455.z.string(), import_v455.z.number(), import_v455.z.boolean(), import_v455.z.null()]).array().optional()
21090
+ description: import_v462.z.string().optional(),
21091
+ properties: import_v462.z.record(import_v462.z.string(), JsonSchemaSchema.or(import_v462.z.boolean())).optional(),
21092
+ required: import_v462.z.string().array().optional(),
21093
+ enum: import_v462.z.union([import_v462.z.string(), import_v462.z.number(), import_v462.z.boolean(), import_v462.z.null()]).array().optional()
20805
21094
  }));
20806
- var JsonObjectSchemaSchema = import_v455.z.intersection(JsonSchemaSchema, import_v455.z.object({ type: import_v455.z.literal("object") }));
20807
- var InputSchemaObjectSchema = import_v455.z.looseObject({
20808
- prompt: import_v455.z.looseObject({
20809
- type: import_v455.z.literal("string"),
20810
- description: import_v455.z.string().optional()
21095
+ var JsonObjectSchemaSchema = import_v462.z.intersection(JsonSchemaSchema, import_v462.z.object({ type: import_v462.z.literal("object") }));
21096
+ var InputSchemaObjectSchema = import_v462.z.looseObject({
21097
+ prompt: import_v462.z.looseObject({
21098
+ type: import_v462.z.literal("string"),
21099
+ description: import_v462.z.string().optional()
20811
21100
  }).optional(),
20812
21101
  params: JsonObjectSchemaSchema.optional()
20813
21102
  }).optional();
20814
- var PromptFieldSchema = import_v455.z.union([
20815
- import_v455.z.string(),
20816
- import_v455.z.object({ path: import_v455.z.string() })
21103
+ var PromptFieldSchema = import_v462.z.union([
21104
+ import_v462.z.string(),
21105
+ import_v462.z.object({ path: import_v462.z.string() })
20817
21106
  ]);
20818
- var functionSchema = (schema) => import_v455.z.custom((fn) => schema.implement(fn));
20819
- var LoggerSchema = import_v455.z.object({
20820
- debug: import_v455.z.function({
20821
- input: [import_v455.z.any(), import_v455.z.string().optional()],
20822
- output: import_v455.z.void()
21107
+ var functionSchema = (schema) => import_v462.z.custom((fn) => schema.implement(fn));
21108
+ var LoggerSchema = import_v462.z.object({
21109
+ debug: import_v462.z.function({
21110
+ input: [import_v462.z.any(), import_v462.z.string().optional()],
21111
+ output: import_v462.z.void()
20823
21112
  }),
20824
- info: import_v455.z.function({
20825
- input: [import_v455.z.any(), import_v455.z.string().optional()],
20826
- output: import_v455.z.void()
21113
+ info: import_v462.z.function({
21114
+ input: [import_v462.z.any(), import_v462.z.string().optional()],
21115
+ output: import_v462.z.void()
20827
21116
  }),
20828
- warn: import_v455.z.function({
20829
- input: [import_v455.z.any(), import_v455.z.string().optional()],
20830
- output: import_v455.z.void()
21117
+ warn: import_v462.z.function({
21118
+ input: [import_v462.z.any(), import_v462.z.string().optional()],
21119
+ output: import_v462.z.void()
20831
21120
  }),
20832
- error: import_v455.z.function({
20833
- input: [import_v455.z.any(), import_v455.z.string().optional()],
20834
- output: import_v455.z.void()
21121
+ error: import_v462.z.function({
21122
+ input: [import_v462.z.any(), import_v462.z.string().optional()],
21123
+ output: import_v462.z.void()
20835
21124
  })
20836
21125
  });
20837
- var HandleStepsSchema = functionSchema(import_v455.z.function({
21126
+ var HandleStepsSchema = functionSchema(import_v462.z.function({
20838
21127
  input: [
20839
- import_v455.z.object({
20840
- agentState: import_v455.z.object({
20841
- agentId: import_v455.z.string(),
20842
- parentId: import_v455.z.string(),
20843
- messageHistory: import_v455.z.array(import_v455.z.any())
21128
+ import_v462.z.object({
21129
+ agentState: import_v462.z.object({
21130
+ agentId: import_v462.z.string(),
21131
+ parentId: import_v462.z.string(),
21132
+ messageHistory: import_v462.z.array(import_v462.z.any())
20844
21133
  }),
20845
- prompt: import_v455.z.string().optional(),
20846
- params: import_v455.z.any().optional()
21134
+ prompt: import_v462.z.string().optional(),
21135
+ params: import_v462.z.any().optional()
20847
21136
  }),
20848
21137
  LoggerSchema.optional()
20849
21138
  ],
20850
- output: import_v455.z.any()
21139
+ output: import_v462.z.any()
20851
21140
  })).optional();
20852
- var DynamicAgentDefinitionSchema = import_v455.z.object({
20853
- id: import_v455.z.string().regex(/^[a-z0-9-]+$/, "Agent ID must contain only lowercase letters, numbers, and hyphens"),
20854
- version: import_v455.z.string().optional(),
20855
- publisher: import_v455.z.string().optional(),
20856
- displayName: import_v455.z.string(),
20857
- model: import_v455.z.string(),
20858
- reasoningOptions: import_v455.z.object({
20859
- enabled: import_v455.z.boolean().optional(),
20860
- exclude: import_v455.z.boolean().optional()
20861
- }).and(import_v455.z.union([
20862
- import_v455.z.object({ max_tokens: import_v455.z.number() }),
20863
- import_v455.z.object({ effort: import_v455.z.enum(["high", "medium", "low", "minimal", "none"]) })
21141
+ var DynamicAgentDefinitionSchema = import_v462.z.object({
21142
+ id: import_v462.z.string().regex(/^[a-z0-9-]+$/, "Agent ID must contain only lowercase letters, numbers, and hyphens"),
21143
+ version: import_v462.z.string().optional(),
21144
+ publisher: import_v462.z.string().optional(),
21145
+ displayName: import_v462.z.string(),
21146
+ model: import_v462.z.string(),
21147
+ reasoningOptions: import_v462.z.object({
21148
+ enabled: import_v462.z.boolean().optional(),
21149
+ exclude: import_v462.z.boolean().optional()
21150
+ }).and(import_v462.z.union([
21151
+ import_v462.z.object({ max_tokens: import_v462.z.number() }),
21152
+ import_v462.z.object({ effort: import_v462.z.enum(["high", "medium", "low", "minimal", "none"]) })
20864
21153
  ])).optional(),
20865
- providerOptions: import_v455.z.object({
20866
- order: import_v455.z.array(import_v455.z.string()).optional(),
20867
- allow_fallbacks: import_v455.z.boolean().optional(),
20868
- require_parameters: import_v455.z.boolean().optional(),
20869
- data_collection: import_v455.z.enum(["allow", "deny"]).optional(),
20870
- only: import_v455.z.array(import_v455.z.string()).optional(),
20871
- ignore: import_v455.z.array(import_v455.z.string()).optional(),
20872
- quantizations: import_v455.z.array(import_v455.z.enum([
21154
+ providerOptions: import_v462.z.object({
21155
+ order: import_v462.z.array(import_v462.z.string()).optional(),
21156
+ allow_fallbacks: import_v462.z.boolean().optional(),
21157
+ require_parameters: import_v462.z.boolean().optional(),
21158
+ data_collection: import_v462.z.enum(["allow", "deny"]).optional(),
21159
+ only: import_v462.z.array(import_v462.z.string()).optional(),
21160
+ ignore: import_v462.z.array(import_v462.z.string()).optional(),
21161
+ quantizations: import_v462.z.array(import_v462.z.enum([
20873
21162
  "int4",
20874
21163
  "int8",
20875
21164
  "fp4",
@@ -20880,34 +21169,34 @@ var DynamicAgentDefinitionSchema = import_v455.z.object({
20880
21169
  "fp32",
20881
21170
  "unknown"
20882
21171
  ])).optional(),
20883
- sort: import_v455.z.enum(["price", "throughput", "latency"]).optional(),
20884
- max_price: import_v455.z.object({
20885
- prompt: import_v455.z.union([import_v455.z.number(), import_v455.z.string()]).optional(),
20886
- completion: import_v455.z.union([import_v455.z.number(), import_v455.z.string()]).optional(),
20887
- image: import_v455.z.union([import_v455.z.number(), import_v455.z.string()]).optional(),
20888
- audio: import_v455.z.union([import_v455.z.number(), import_v455.z.string()]).optional(),
20889
- request: import_v455.z.union([import_v455.z.number(), import_v455.z.string()]).optional()
21172
+ sort: import_v462.z.enum(["price", "throughput", "latency"]).optional(),
21173
+ max_price: import_v462.z.object({
21174
+ prompt: import_v462.z.union([import_v462.z.number(), import_v462.z.string()]).optional(),
21175
+ completion: import_v462.z.union([import_v462.z.number(), import_v462.z.string()]).optional(),
21176
+ image: import_v462.z.union([import_v462.z.number(), import_v462.z.string()]).optional(),
21177
+ audio: import_v462.z.union([import_v462.z.number(), import_v462.z.string()]).optional(),
21178
+ request: import_v462.z.union([import_v462.z.number(), import_v462.z.string()]).optional()
20890
21179
  }).optional()
20891
21180
  }).optional(),
20892
- mcpServers: import_v455.z.record(import_v455.z.string(), mcpConfigSchema).default(() => ({})),
20893
- toolNames: import_v455.z.string().array().optional().default(() => []),
20894
- spawnableAgents: import_v455.z.array(import_v455.z.string()).optional().default(() => []),
21181
+ mcpServers: import_v462.z.record(import_v462.z.string(), mcpConfigSchema).default(() => ({})),
21182
+ toolNames: import_v462.z.string().array().optional().default(() => []),
21183
+ spawnableAgents: import_v462.z.array(import_v462.z.string()).optional().default(() => []),
20895
21184
  inputSchema: InputSchemaObjectSchema,
20896
- includeMessageHistory: import_v455.z.boolean().default(false),
20897
- inheritParentSystemPrompt: import_v455.z.boolean().default(false),
20898
- outputMode: import_v455.z.enum(["last_message", "all_messages", "structured_output"]).default("last_message"),
21185
+ includeMessageHistory: import_v462.z.boolean().default(false),
21186
+ inheritParentSystemPrompt: import_v462.z.boolean().default(false),
21187
+ outputMode: import_v462.z.enum(["last_message", "all_messages", "structured_output"]).default("last_message"),
20899
21188
  outputSchema: JsonObjectSchemaSchema.optional(),
20900
- spawnerPrompt: import_v455.z.string().optional(),
20901
- systemPrompt: import_v455.z.string().optional(),
20902
- instructionsPrompt: import_v455.z.string().optional(),
20903
- stepPrompt: import_v455.z.string().optional(),
20904
- handleSteps: import_v455.z.union([import_v455.z.string(), HandleStepsSchema]).optional()
21189
+ spawnerPrompt: import_v462.z.string().optional(),
21190
+ systemPrompt: import_v462.z.string().optional(),
21191
+ instructionsPrompt: import_v462.z.string().optional(),
21192
+ stepPrompt: import_v462.z.string().optional(),
21193
+ handleSteps: import_v462.z.union([import_v462.z.string(), HandleStepsSchema]).optional()
20905
21194
  });
20906
21195
  var DynamicAgentTemplateSchema = DynamicAgentDefinitionSchema.extend({
20907
- systemPrompt: import_v455.z.string(),
20908
- instructionsPrompt: import_v455.z.string(),
20909
- stepPrompt: import_v455.z.string(),
20910
- handleSteps: import_v455.z.string().optional()
21196
+ systemPrompt: import_v462.z.string(),
21197
+ instructionsPrompt: import_v462.z.string(),
21198
+ stepPrompt: import_v462.z.string(),
21199
+ handleSteps: import_v462.z.string().optional()
20911
21200
  }).refine((data) => {
20912
21201
  if (data.outputSchema && data.outputMode !== "structured_output") {
20913
21202
  return false;
@@ -21016,9 +21305,9 @@ function validateSingleAgent(params2) {
21016
21305
  error: `${agentContext2}: Schema validation failed: ${error.message}`
21017
21306
  };
21018
21307
  }
21019
- let inputSchema32;
21308
+ let inputSchema39;
21020
21309
  try {
21021
- inputSchema32 = convertInputSchema(validatedConfig.inputSchema?.prompt, validatedConfig.inputSchema?.params, filePath);
21310
+ inputSchema39 = convertInputSchema(validatedConfig.inputSchema?.prompt, validatedConfig.inputSchema?.params, filePath);
21022
21311
  } catch (error) {
21023
21312
  const agentContext2 = validatedConfig.id ? `Agent "${validatedConfig.id}"${validatedConfig.displayName ? ` (${validatedConfig.displayName})` : ""}` : filePath ? `Agent in ${filePath}` : "Agent";
21024
21313
  return {
@@ -21053,7 +21342,7 @@ function validateSingleAgent(params2) {
21053
21342
  instructionsPrompt: validatedConfig.instructionsPrompt ?? "",
21054
21343
  stepPrompt: validatedConfig.stepPrompt ?? "",
21055
21344
  outputSchema: outputSchema3,
21056
- inputSchema: inputSchema32
21345
+ inputSchema: inputSchema39
21057
21346
  };
21058
21347
  return {
21059
21348
  success: true,
@@ -21237,10 +21526,10 @@ function assembleLocalAgentTemplates(params2) {
21237
21526
  // ../packages/agent-runtime/src/templates/prompts.ts
21238
21527
  function ensureJsonSchemaCompatible(schema) {
21239
21528
  try {
21240
- import_v456.z.toJSONSchema(schema, { io: "input" });
21529
+ import_v463.z.toJSONSchema(schema, { io: "input" });
21241
21530
  return schema;
21242
21531
  } catch {
21243
- const fallback = import_v456.z.object({}).passthrough();
21532
+ const fallback = import_v463.z.object({}).passthrough();
21244
21533
  return schema.description ? fallback.describe(schema.description) : fallback;
21245
21534
  }
21246
21535
  }
@@ -21250,15 +21539,15 @@ function getAgentShortName(agentType) {
21250
21539
  return parts[parts.length - 1];
21251
21540
  }
21252
21541
  function buildAgentToolInputSchema(agentTemplate) {
21253
- const { inputSchema: inputSchema32 } = agentTemplate;
21542
+ const { inputSchema: inputSchema39 } = agentTemplate;
21254
21543
  let schemaFields = {};
21255
- if (inputSchema32?.prompt) {
21256
- schemaFields.prompt = inputSchema32.prompt;
21544
+ if (inputSchema39?.prompt) {
21545
+ schemaFields.prompt = inputSchema39.prompt;
21257
21546
  }
21258
- if (inputSchema32?.params) {
21259
- schemaFields.params = inputSchema32.params;
21547
+ if (inputSchema39?.params) {
21548
+ schemaFields.params = inputSchema39.params;
21260
21549
  }
21261
- return import_v456.z.object(schemaFields).describe(agentTemplate.spawnerPrompt || `Spawn the ${agentTemplate.displayName} agent`);
21550
+ return import_v463.z.object(schemaFields).describe(agentTemplate.spawnerPrompt || `Spawn the ${agentTemplate.displayName} agent`);
21262
21551
  }
21263
21552
  async function buildAgentToolSet(params2) {
21264
21553
  const { spawnableAgents, agentTemplates } = params2;
@@ -21272,10 +21561,10 @@ async function buildAgentToolSet(params2) {
21272
21561
  if (!agentTemplate)
21273
21562
  continue;
21274
21563
  const shortName = getAgentShortName(agentType);
21275
- const inputSchema32 = ensureJsonSchemaCompatible(buildAgentToolInputSchema(agentTemplate));
21564
+ const inputSchema39 = ensureJsonSchemaCompatible(buildAgentToolInputSchema(agentTemplate));
21276
21565
  toolSet[shortName] = {
21277
21566
  description: agentTemplate.spawnerPrompt || `Spawn the ${agentTemplate.displayName} agent`,
21278
- inputSchema: inputSchema32
21567
+ inputSchema: inputSchema39
21279
21568
  };
21280
21569
  }
21281
21570
  return toolSet;
@@ -21286,10 +21575,10 @@ function buildSingleAgentDescription(agentType, agentTemplate) {
21286
21575
  prompt: {"description": "A coding task to complete", "type": "string"}
21287
21576
  params: None`;
21288
21577
  }
21289
- const { inputSchema: inputSchema32 } = agentTemplate;
21290
- const inputSchemaStr = inputSchema32 ? [
21291
- `prompt: ${schemaToJsonStr(inputSchema32.prompt)}`,
21292
- `params: ${schemaToJsonStr(inputSchema32.params)}`
21578
+ const { inputSchema: inputSchema39 } = agentTemplate;
21579
+ const inputSchemaStr = inputSchema39 ? [
21580
+ `prompt: ${schemaToJsonStr(inputSchema39.prompt)}`,
21581
+ `params: ${schemaToJsonStr(inputSchema39.params)}`
21293
21582
  ].join(`
21294
21583
  `) : ["prompt: None", "params: None"].join(`
21295
21584
  `);
@@ -21377,49 +21666,49 @@ init_model_config();
21377
21666
  // ../common/src/util/file.ts
21378
21667
  var os = __toESM(require("os"));
21379
21668
  var path = __toESM(require("path"));
21380
- var import_v457 = require("zod/v4");
21381
- var FileTreeNodeSchema = import_v457.z.object({
21382
- name: import_v457.z.string(),
21383
- type: import_v457.z.enum(["file", "directory"]),
21384
- children: import_v457.z.lazy(() => import_v457.z.array(FileTreeNodeSchema).optional()),
21385
- filePath: import_v457.z.string()
21669
+ var import_v464 = require("zod/v4");
21670
+ var FileTreeNodeSchema = import_v464.z.object({
21671
+ name: import_v464.z.string(),
21672
+ type: import_v464.z.enum(["file", "directory"]),
21673
+ children: import_v464.z.lazy(() => import_v464.z.array(FileTreeNodeSchema).optional()),
21674
+ filePath: import_v464.z.string()
21386
21675
  });
21387
- var FileVersionSchema = import_v457.z.object({
21388
- path: import_v457.z.string(),
21389
- content: import_v457.z.string()
21676
+ var FileVersionSchema = import_v464.z.object({
21677
+ path: import_v464.z.string(),
21678
+ content: import_v464.z.string()
21390
21679
  });
21391
- var customToolDefinitionsSchema = import_v457.z.record(import_v457.z.string(), import_v457.z.object({
21392
- inputSchema: import_v457.z.custom(),
21393
- endsAgentStep: import_v457.z.boolean().optional().default(false),
21394
- description: import_v457.z.string().optional(),
21395
- exampleInputs: import_v457.z.record(import_v457.z.string(), import_v457.z.any()).array().optional()
21680
+ var customToolDefinitionsSchema = import_v464.z.record(import_v464.z.string(), import_v464.z.object({
21681
+ inputSchema: import_v464.z.custom(),
21682
+ endsAgentStep: import_v464.z.boolean().optional().default(false),
21683
+ description: import_v464.z.string().optional(),
21684
+ exampleInputs: import_v464.z.record(import_v464.z.string(), import_v464.z.any()).array().optional()
21396
21685
  })).default(() => ({}));
21397
- var ProjectFileContextSchema = import_v457.z.object({
21398
- projectRoot: import_v457.z.string(),
21399
- cwd: import_v457.z.string(),
21400
- fileTree: import_v457.z.array(import_v457.z.custom()),
21401
- fileTokenScores: import_v457.z.record(import_v457.z.string(), import_v457.z.record(import_v457.z.string(), import_v457.z.number())),
21402
- tokenCallers: import_v457.z.record(import_v457.z.string(), import_v457.z.record(import_v457.z.string(), import_v457.z.array(import_v457.z.string()))).optional(),
21403
- knowledgeFiles: import_v457.z.record(import_v457.z.string(), import_v457.z.string()),
21404
- userKnowledgeFiles: import_v457.z.record(import_v457.z.string(), import_v457.z.string()).optional(),
21405
- agentTemplates: import_v457.z.record(import_v457.z.string(), import_v457.z.any()).default(() => ({})),
21686
+ var ProjectFileContextSchema = import_v464.z.object({
21687
+ projectRoot: import_v464.z.string(),
21688
+ cwd: import_v464.z.string(),
21689
+ fileTree: import_v464.z.array(import_v464.z.custom()),
21690
+ fileTokenScores: import_v464.z.record(import_v464.z.string(), import_v464.z.record(import_v464.z.string(), import_v464.z.number())),
21691
+ tokenCallers: import_v464.z.record(import_v464.z.string(), import_v464.z.record(import_v464.z.string(), import_v464.z.array(import_v464.z.string()))).optional(),
21692
+ knowledgeFiles: import_v464.z.record(import_v464.z.string(), import_v464.z.string()),
21693
+ userKnowledgeFiles: import_v464.z.record(import_v464.z.string(), import_v464.z.string()).optional(),
21694
+ agentTemplates: import_v464.z.record(import_v464.z.string(), import_v464.z.any()).default(() => ({})),
21406
21695
  customToolDefinitions: customToolDefinitionsSchema,
21407
- skills: import_v457.z.record(import_v457.z.string(), import_v457.z.any()).optional(),
21408
- gitChanges: import_v457.z.object({
21409
- status: import_v457.z.string(),
21410
- diff: import_v457.z.string(),
21411
- diffCached: import_v457.z.string(),
21412
- lastCommitMessages: import_v457.z.string()
21696
+ skills: import_v464.z.record(import_v464.z.string(), import_v464.z.any()).optional(),
21697
+ gitChanges: import_v464.z.object({
21698
+ status: import_v464.z.string(),
21699
+ diff: import_v464.z.string(),
21700
+ diffCached: import_v464.z.string(),
21701
+ lastCommitMessages: import_v464.z.string()
21413
21702
  }),
21414
- changesSinceLastChat: import_v457.z.record(import_v457.z.string(), import_v457.z.string()),
21415
- shellConfigFiles: import_v457.z.record(import_v457.z.string(), import_v457.z.string()),
21416
- systemInfo: import_v457.z.object({
21417
- platform: import_v457.z.string(),
21418
- shell: import_v457.z.string(),
21419
- nodeVersion: import_v457.z.string(),
21420
- arch: import_v457.z.string(),
21421
- homedir: import_v457.z.string(),
21422
- cpus: import_v457.z.number()
21703
+ changesSinceLastChat: import_v464.z.record(import_v464.z.string(), import_v464.z.string()),
21704
+ shellConfigFiles: import_v464.z.record(import_v464.z.string(), import_v464.z.string()),
21705
+ systemInfo: import_v464.z.object({
21706
+ platform: import_v464.z.string(),
21707
+ shell: import_v464.z.string(),
21708
+ nodeVersion: import_v464.z.string(),
21709
+ arch: import_v464.z.string(),
21710
+ homedir: import_v464.z.string(),
21711
+ cpus: import_v464.z.number()
21423
21712
  })
21424
21713
  });
21425
21714
  var createMarkdownFileBlock = (filePath, content) => {
@@ -27425,8 +27714,8 @@ var import_lodash8 = __toESM(require_lodash());
27425
27714
  var import_assert = require("assert");
27426
27715
 
27427
27716
  // ../common/src/util/xml.ts
27428
- function closeXml(toolName32) {
27429
- return `</${toolName32}>`;
27717
+ function closeXml(toolName39) {
27718
+ return `</${toolName39}>`;
27430
27719
  }
27431
27720
 
27432
27721
  // ../packages/agent-runtime/src/util/messages.ts
@@ -28573,7 +28862,7 @@ var removeUndefinedProps = (obj) => {
28573
28862
  };
28574
28863
 
28575
28864
  // ../packages/agent-runtime/src/tools/handlers/tool/lookup-agent-info.ts
28576
- var import_v458 = __toESM(require("zod/v4"));
28865
+ var import_v465 = __toESM(require("zod/v4"));
28577
28866
  var handleLookupAgentInfo = async (params2) => {
28578
28867
  const { toolCall, previousToolCallFinished } = params2;
28579
28868
  const { agentId } = toolCall.input;
@@ -28595,7 +28884,7 @@ var handleLookupAgentInfo = async (params2) => {
28595
28884
  displayName,
28596
28885
  model,
28597
28886
  includeMessageHistory,
28598
- inputSchema: inputSchema32,
28887
+ inputSchema: inputSchema39,
28599
28888
  spawnerPrompt,
28600
28889
  outputMode,
28601
28890
  outputSchema: outputSchema3,
@@ -28615,8 +28904,8 @@ var handleLookupAgentInfo = async (params2) => {
28615
28904
  spawnableAgents,
28616
28905
  includeMessageHistory,
28617
28906
  spawnerPrompt,
28618
- ...inputSchema32 && {
28619
- inputSchema: inputSchemaToJSONSchema(inputSchema32)
28907
+ ...inputSchema39 && {
28908
+ inputSchema: inputSchemaToJSONSchema(inputSchema39)
28620
28909
  },
28621
28910
  outputMode,
28622
28911
  ...outputSchema3 && {
@@ -28629,17 +28918,17 @@ var handleLookupAgentInfo = async (params2) => {
28629
28918
  };
28630
28919
  var toJSONSchema = (schema) => {
28631
28920
  try {
28632
- const jsonSchema = import_v458.default.toJSONSchema(schema, { io: "input" });
28921
+ const jsonSchema = import_v465.default.toJSONSchema(schema, { io: "input" });
28633
28922
  delete jsonSchema["$schema"];
28634
28923
  return jsonSchema;
28635
28924
  } catch {
28636
28925
  return { type: "object", description: "Schema unavailable" };
28637
28926
  }
28638
28927
  };
28639
- var inputSchemaToJSONSchema = (inputSchema32) => {
28928
+ var inputSchemaToJSONSchema = (inputSchema39) => {
28640
28929
  return removeUndefinedProps({
28641
- prompt: inputSchema32.prompt ? toJSONSchema(inputSchema32.prompt) : undefined,
28642
- params: inputSchema32.params ? toJSONSchema(inputSchema32.params) : undefined
28930
+ prompt: inputSchema39.prompt ? toJSONSchema(inputSchema39.prompt) : undefined,
28931
+ params: inputSchema39.params ? toJSONSchema(inputSchema39.params) : undefined
28643
28932
  });
28644
28933
  };
28645
28934
 
@@ -29222,6 +29511,119 @@ var handleSkill = async (params2) => {
29222
29511
  // ../packages/agent-runtime/src/tools/handlers/tool/spawn-agent-inline.ts
29223
29512
  var import_lodash11 = __toESM(require_lodash());
29224
29513
 
29514
+ // ../common/src/utils/team-fs.ts
29515
+ var fs = __toESM(require("fs"));
29516
+ var path3 = __toESM(require("path"));
29517
+ var os2 = __toESM(require("os"));
29518
+ function getConfigRoot() {
29519
+ return path3.join(os2.homedir(), ".config", "levelcode");
29520
+ }
29521
+ function getTeamsDir() {
29522
+ return path3.join(getConfigRoot(), "teams");
29523
+ }
29524
+ function getTasksDir(teamName) {
29525
+ return path3.join(getConfigRoot(), "tasks", teamName);
29526
+ }
29527
+ function getTeamDir(teamName) {
29528
+ return path3.join(getTeamsDir(), teamName);
29529
+ }
29530
+ function getTeamConfigPath(teamName) {
29531
+ return path3.join(getTeamDir(teamName), "config.json");
29532
+ }
29533
+ function getInboxesDir(teamName) {
29534
+ return path3.join(getTeamDir(teamName), "inboxes");
29535
+ }
29536
+ function getInboxPath(teamName, agentName) {
29537
+ return path3.join(getInboxesDir(teamName), `${agentName}.json`);
29538
+ }
29539
+ function getTaskPath(teamName, taskId) {
29540
+ return path3.join(getTasksDir(teamName), `${taskId}.json`);
29541
+ }
29542
+ function createTeam(config) {
29543
+ const teamDir = getTeamDir(config.name);
29544
+ fs.mkdirSync(teamDir, { recursive: true });
29545
+ fs.mkdirSync(getInboxesDir(config.name), { recursive: true });
29546
+ fs.mkdirSync(getTasksDir(config.name), { recursive: true });
29547
+ fs.writeFileSync(getTeamConfigPath(config.name), JSON.stringify(config, null, 2));
29548
+ }
29549
+ function loadTeamConfig(teamName) {
29550
+ const configPath = getTeamConfigPath(teamName);
29551
+ if (!fs.existsSync(configPath)) {
29552
+ return null;
29553
+ }
29554
+ const raw = fs.readFileSync(configPath, "utf-8");
29555
+ return JSON.parse(raw);
29556
+ }
29557
+ function saveTeamConfig(teamName, config) {
29558
+ const configPath = getTeamConfigPath(teamName);
29559
+ fs.mkdirSync(path3.dirname(configPath), { recursive: true });
29560
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
29561
+ }
29562
+ function deleteTeam(teamName) {
29563
+ const teamDir = getTeamDir(teamName);
29564
+ if (fs.existsSync(teamDir)) {
29565
+ fs.rmSync(teamDir, { recursive: true, force: true });
29566
+ }
29567
+ const tasksDir = getTasksDir(teamName);
29568
+ if (fs.existsSync(tasksDir)) {
29569
+ fs.rmSync(tasksDir, { recursive: true, force: true });
29570
+ }
29571
+ }
29572
+ function addTeamMember(teamName, member) {
29573
+ const config = loadTeamConfig(teamName);
29574
+ if (!config) {
29575
+ throw new Error(`Team "${teamName}" not found`);
29576
+ }
29577
+ config.members.push(member);
29578
+ saveTeamConfig(teamName, config);
29579
+ }
29580
+ function createTask(teamName, task) {
29581
+ const tasksDir = getTasksDir(teamName);
29582
+ fs.mkdirSync(tasksDir, { recursive: true });
29583
+ fs.writeFileSync(getTaskPath(teamName, task.id), JSON.stringify(task, null, 2));
29584
+ }
29585
+ function updateTask(teamName, taskId, updates) {
29586
+ const taskPath = getTaskPath(teamName, taskId);
29587
+ if (!fs.existsSync(taskPath)) {
29588
+ throw new Error(`Task "${taskId}" not found in team "${teamName}"`);
29589
+ }
29590
+ const raw = fs.readFileSync(taskPath, "utf-8");
29591
+ const task = JSON.parse(raw);
29592
+ const updated = { ...task, ...updates, updatedAt: Date.now() };
29593
+ fs.writeFileSync(taskPath, JSON.stringify(updated, null, 2));
29594
+ }
29595
+ function listTasks(teamName) {
29596
+ const tasksDir = getTasksDir(teamName);
29597
+ if (!fs.existsSync(tasksDir)) {
29598
+ return [];
29599
+ }
29600
+ const files = fs.readdirSync(tasksDir).filter((f) => f.endsWith(".json"));
29601
+ return files.map((f) => {
29602
+ const raw = fs.readFileSync(path3.join(tasksDir, f), "utf-8");
29603
+ return JSON.parse(raw);
29604
+ });
29605
+ }
29606
+ function getTask(teamName, taskId) {
29607
+ const taskPath = getTaskPath(teamName, taskId);
29608
+ if (!fs.existsSync(taskPath)) {
29609
+ return null;
29610
+ }
29611
+ const raw = fs.readFileSync(taskPath, "utf-8");
29612
+ return JSON.parse(raw);
29613
+ }
29614
+ function sendMessage(teamName, to, message) {
29615
+ const inboxesDir = getInboxesDir(teamName);
29616
+ fs.mkdirSync(inboxesDir, { recursive: true });
29617
+ const inboxPath = getInboxPath(teamName, to);
29618
+ let messages = [];
29619
+ if (fs.existsSync(inboxPath)) {
29620
+ const raw = fs.readFileSync(inboxPath, "utf-8");
29621
+ messages = JSON.parse(raw);
29622
+ }
29623
+ messages.push(message);
29624
+ fs.writeFileSync(inboxPath, JSON.stringify(messages, null, 2));
29625
+ }
29626
+
29225
29627
  // ../packages/agent-runtime/src/tools/handlers/tool/spawn-agent-utils.ts
29226
29628
  function extractSubagentContextParams(params2) {
29227
29629
  return {
@@ -29360,15 +29762,15 @@ async function validateAndGetAgentTemplate(params2) {
29360
29762
  return { agentTemplate, agentType };
29361
29763
  }
29362
29764
  function validateAgentInput(agentTemplate, agentType, prompt2, params2) {
29363
- const { inputSchema: inputSchema32 } = agentTemplate;
29364
- if (inputSchema32.prompt) {
29365
- const result = inputSchema32.prompt.safeParse(prompt2 ?? "");
29765
+ const { inputSchema: inputSchema39 } = agentTemplate;
29766
+ if (inputSchema39.prompt) {
29767
+ const result = inputSchema39.prompt.safeParse(prompt2 ?? "");
29366
29768
  if (!result.success) {
29367
29769
  throw new Error(`Invalid prompt for agent ${agentType}: ${JSON.stringify(result.error.issues, null, 2)}`);
29368
29770
  }
29369
29771
  }
29370
- if (inputSchema32.params) {
29371
- const result = inputSchema32.params.safeParse(params2 ?? {});
29772
+ if (inputSchema39.params) {
29773
+ const result = inputSchema39.params.safeParse(params2 ?? {});
29372
29774
  if (!result.success) {
29373
29775
  throw new Error(`Invalid params for agent ${agentType}: ${JSON.stringify(result.error.issues, null, 2)}`);
29374
29776
  }
@@ -29458,6 +29860,48 @@ async function executeSubagent(options) {
29458
29860
  }
29459
29861
  return result;
29460
29862
  }
29863
+ function registerAgentAsTeamMember(agentId, agentType, options, logger2) {
29864
+ const { teamName, teamRole } = options;
29865
+ const teamConfig = loadTeamConfig(teamName);
29866
+ if (!teamConfig) {
29867
+ logger2.debug({ teamName, agentId }, `Team "${teamName}" not found; skipping team registration`);
29868
+ return null;
29869
+ }
29870
+ const role = teamRole || "mid-level-engineer";
29871
+ const memberName = `${agentType}-${agentId}`;
29872
+ const member = {
29873
+ agentId,
29874
+ name: memberName,
29875
+ role,
29876
+ agentType,
29877
+ model: "",
29878
+ joinedAt: Date.now(),
29879
+ status: "active",
29880
+ cwd: process.cwd()
29881
+ };
29882
+ try {
29883
+ addTeamMember(teamName, member);
29884
+ } catch (error) {
29885
+ logger2.debug({ teamName, agentId, error }, `Failed to register agent as team member`);
29886
+ return null;
29887
+ }
29888
+ return buildTeamContextPrompt(teamName, memberName, role, teamConfig.leadAgentId);
29889
+ }
29890
+ function buildTeamContextPrompt(teamName, agentName, role, leadAgentId) {
29891
+ const tasksDir = getTasksDir(teamName);
29892
+ return [
29893
+ `
29894
+ # Team Context`,
29895
+ `You are a member of team "${teamName}".`,
29896
+ `Your name in this team: ${agentName}`,
29897
+ `Your role: ${role}`,
29898
+ `Team lead agent ID: ${leadAgentId}`,
29899
+ `Team task directory: ${tasksDir}`,
29900
+ `Use the team messaging tools (send_message, broadcast) to communicate with teammates.`,
29901
+ `Use the task tools (task_create, task_update, task_list) to coordinate work.`
29902
+ ].join(`
29903
+ `);
29904
+ }
29461
29905
 
29462
29906
  // ../packages/agent-runtime/src/tools/handlers/tool/spawn-agent-inline.ts
29463
29907
  var handleSpawnAgentInline = async (params2) => {
@@ -29543,7 +29987,13 @@ var handleSpawnAgents = async (params2) => {
29543
29987
  const { agents } = toolCall.input;
29544
29988
  const { logger: logger2 } = params2;
29545
29989
  await previousToolCallFinished;
29546
- const results = await Promise.allSettled(agents.map(async ({ agent_type: agentTypeStr, prompt: prompt2, params: spawnParams }) => {
29990
+ const results = await Promise.allSettled(agents.map(async ({
29991
+ agent_type: agentTypeStr,
29992
+ prompt: prompt2,
29993
+ params: spawnParams,
29994
+ team_name: teamName,
29995
+ team_role: teamRole
29996
+ }) => {
29547
29997
  const { agentTemplate, agentType } = await validateAndGetAgentTemplate({
29548
29998
  ...params2,
29549
29999
  agentTypeStr,
@@ -29551,12 +30001,21 @@ var handleSpawnAgents = async (params2) => {
29551
30001
  });
29552
30002
  validateAgentInput(agentTemplate, agentType, prompt2, spawnParams);
29553
30003
  const subAgentState = createAgentState(agentType, agentTemplate, parentAgentState, {});
30004
+ let effectivePrompt = prompt2 || "";
30005
+ if (teamName) {
30006
+ const teamContext = registerAgentAsTeamMember(subAgentState.agentId, agentType, { teamName, teamRole }, logger2);
30007
+ if (teamContext) {
30008
+ effectivePrompt = teamContext + `
30009
+
30010
+ ` + effectivePrompt;
30011
+ }
30012
+ }
29554
30013
  const contextParams = extractSubagentContextParams(params2);
29555
30014
  const result = await executeSubagent({
29556
30015
  ...contextParams,
29557
30016
  ancestorRunIds: parentAgentState.ancestorRunIds,
29558
30017
  userInputId: `${userInputId2}-${agentType}${subAgentState.agentId}`,
29559
- prompt: prompt2 || "",
30018
+ prompt: effectivePrompt,
29560
30019
  spawnParams,
29561
30020
  agentTemplate,
29562
30021
  parentAgentState,
@@ -29659,15 +30118,15 @@ var handleStrReplace = async (params2) => {
29659
30118
  requestOptionalFile,
29660
30119
  writeToClient
29661
30120
  } = params2;
29662
- const { path: path3, replacements } = toolCall.input;
29663
- if (!fileProcessingState2.promisesByPath[path3]) {
29664
- fileProcessingState2.promisesByPath[path3] = [];
30121
+ const { path: path4, replacements } = toolCall.input;
30122
+ if (!fileProcessingState2.promisesByPath[path4]) {
30123
+ fileProcessingState2.promisesByPath[path4] = [];
29665
30124
  }
29666
- const previousPromises = fileProcessingState2.promisesByPath[path3];
30125
+ const previousPromises = fileProcessingState2.promisesByPath[path4];
29667
30126
  const previousEdit = previousPromises[previousPromises.length - 1];
29668
- const latestContentPromise = previousEdit ? previousEdit.then((maybeResult) => maybeResult && ("content" in maybeResult) ? maybeResult.content : requestOptionalFile({ ...params2, filePath: path3 })) : requestOptionalFile({ ...params2, filePath: path3 });
30127
+ const latestContentPromise = previousEdit ? previousEdit.then((maybeResult) => maybeResult && ("content" in maybeResult) ? maybeResult.content : requestOptionalFile({ ...params2, filePath: path4 })) : requestOptionalFile({ ...params2, filePath: path4 });
29669
30128
  const newPromise = processStrReplace({
29670
- path: path3,
30129
+ path: path4,
29671
30130
  replacements,
29672
30131
  initialContentPromise: latestContentPromise,
29673
30132
  logger: logger2
@@ -29675,14 +30134,14 @@ var handleStrReplace = async (params2) => {
29675
30134
  logger2.error(error, "Error processing str_replace block");
29676
30135
  return {
29677
30136
  tool: "str_replace",
29678
- path: path3,
30137
+ path: path4,
29679
30138
  error: "Unknown error: Failed to process the str_replace block."
29680
30139
  };
29681
30140
  }).then((fileProcessingResult) => ({
29682
30141
  ...fileProcessingResult,
29683
30142
  toolCallId: toolCall.toolCallId
29684
30143
  }));
29685
- fileProcessingState2.promisesByPath[path3].push(newPromise);
30144
+ fileProcessingState2.promisesByPath[path4].push(newPromise);
29686
30145
  fileProcessingState2.allPromises.push(newPromise);
29687
30146
  await previousToolCallFinished;
29688
30147
  const strReplaceResult = await newPromise;
@@ -29859,6 +30318,563 @@ var handleWriteTodos = async (params2) => {
29859
30318
  return { output: jsonToolResult({ message: "Todos written" }) };
29860
30319
  };
29861
30320
 
30321
+ // ../packages/agent-runtime/src/tools/handlers/tool/send-message.ts
30322
+ var fs2 = __toESM(require("fs"));
30323
+ function findCurrentTeamAndAgent(agentStepId2) {
30324
+ const teamsDir = getTeamsDir();
30325
+ if (!fs2.existsSync(teamsDir)) {
30326
+ return null;
30327
+ }
30328
+ const entries = fs2.readdirSync(teamsDir, { withFileTypes: true });
30329
+ for (const entry of entries) {
30330
+ if (!entry.isDirectory()) {
30331
+ continue;
30332
+ }
30333
+ const config = loadTeamConfig(entry.name);
30334
+ if (!config) {
30335
+ continue;
30336
+ }
30337
+ for (const member of config.members) {
30338
+ if (member.agentId === `lead-${agentStepId2}` || member.agentId === agentStepId2) {
30339
+ return { teamName: config.name, agentName: member.name, config };
30340
+ }
30341
+ }
30342
+ }
30343
+ return null;
30344
+ }
30345
+ function errorResult(message) {
30346
+ return { output: jsonToolResult({ message }) };
30347
+ }
30348
+ var handleSendMessage = async (params2) => {
30349
+ const { previousToolCallFinished, toolCall, agentStepId: agentStepId2 } = params2;
30350
+ const { type, recipient, content, summary, request_id, approve } = toolCall.input;
30351
+ await previousToolCallFinished;
30352
+ const teamContext = findCurrentTeamAndAgent(agentStepId2);
30353
+ if (!teamContext) {
30354
+ return errorResult("No team found for the current agent context. Cannot send messages outside a team.");
30355
+ }
30356
+ const { teamName, agentName, config } = teamContext;
30357
+ const timestamp = new Date().toISOString();
30358
+ switch (type) {
30359
+ case "message": {
30360
+ if (!recipient) {
30361
+ return errorResult('A "recipient" is required for type "message".');
30362
+ }
30363
+ if (!summary) {
30364
+ return errorResult('A "summary" is required for type "message".');
30365
+ }
30366
+ const memberExists = config.members.some((m) => m.name === recipient);
30367
+ if (!memberExists) {
30368
+ return errorResult(`Recipient "${recipient}" is not a member of team "${teamName}".`);
30369
+ }
30370
+ const msg = {
30371
+ type: "message",
30372
+ from: agentName,
30373
+ to: recipient,
30374
+ text: content ?? "",
30375
+ summary,
30376
+ timestamp
30377
+ };
30378
+ sendMessage(teamName, recipient, msg);
30379
+ return {
30380
+ output: jsonToolResult({
30381
+ message: `Message sent to "${recipient}" in team "${teamName}".`
30382
+ })
30383
+ };
30384
+ }
30385
+ case "broadcast": {
30386
+ if (!summary) {
30387
+ return errorResult('A "summary" is required for type "broadcast".');
30388
+ }
30389
+ const msg = {
30390
+ type: "broadcast",
30391
+ from: agentName,
30392
+ text: content ?? "",
30393
+ summary,
30394
+ timestamp
30395
+ };
30396
+ const recipients = config.members.filter((m) => m.name !== agentName).map((m) => m.name);
30397
+ for (const memberName of recipients) {
30398
+ sendMessage(teamName, memberName, msg);
30399
+ }
30400
+ return {
30401
+ output: jsonToolResult({
30402
+ message: `Broadcast sent to ${recipients.length} teammate(s) in team "${teamName}".`
30403
+ })
30404
+ };
30405
+ }
30406
+ case "shutdown_request": {
30407
+ if (!recipient) {
30408
+ return errorResult('A "recipient" is required for type "shutdown_request".');
30409
+ }
30410
+ const memberExists = config.members.some((m) => m.name === recipient);
30411
+ if (!memberExists) {
30412
+ return errorResult(`Recipient "${recipient}" is not a member of team "${teamName}".`);
30413
+ }
30414
+ const msg = {
30415
+ type: "shutdown_request",
30416
+ requestId: generateCompactId(),
30417
+ from: agentName,
30418
+ reason: content,
30419
+ timestamp
30420
+ };
30421
+ sendMessage(teamName, recipient, msg);
30422
+ return {
30423
+ output: jsonToolResult({
30424
+ message: `Shutdown request sent to "${recipient}" (requestId: ${msg.requestId}).`
30425
+ })
30426
+ };
30427
+ }
30428
+ case "shutdown_response": {
30429
+ if (!request_id) {
30430
+ return errorResult('A "request_id" is required for type "shutdown_response".');
30431
+ }
30432
+ if (approve === undefined || approve === null) {
30433
+ return errorResult('An "approve" boolean is required for type "shutdown_response".');
30434
+ }
30435
+ if (approve) {
30436
+ const msg = {
30437
+ type: "shutdown_approved",
30438
+ requestId: request_id,
30439
+ from: agentName,
30440
+ timestamp
30441
+ };
30442
+ for (const member of config.members) {
30443
+ if (member.name !== agentName) {
30444
+ sendMessage(teamName, member.name, msg);
30445
+ }
30446
+ }
30447
+ return {
30448
+ output: jsonToolResult({
30449
+ message: `Shutdown approved (requestId: ${request_id}). Agent will exit.`
30450
+ })
30451
+ };
30452
+ } else {
30453
+ const msg = {
30454
+ type: "shutdown_rejected",
30455
+ requestId: request_id,
30456
+ from: agentName,
30457
+ reason: content ?? "Shutdown rejected without a reason.",
30458
+ timestamp
30459
+ };
30460
+ for (const member of config.members) {
30461
+ if (member.name !== agentName) {
30462
+ sendMessage(teamName, member.name, msg);
30463
+ }
30464
+ }
30465
+ return {
30466
+ output: jsonToolResult({
30467
+ message: `Shutdown rejected (requestId: ${request_id}).`
30468
+ })
30469
+ };
30470
+ }
30471
+ }
30472
+ case "plan_approval_response": {
30473
+ if (!request_id) {
30474
+ return errorResult('A "request_id" is required for type "plan_approval_response".');
30475
+ }
30476
+ if (!recipient) {
30477
+ return errorResult('A "recipient" is required for type "plan_approval_response".');
30478
+ }
30479
+ if (approve === undefined || approve === null) {
30480
+ return errorResult('An "approve" boolean is required for type "plan_approval_response".');
30481
+ }
30482
+ const memberExists = config.members.some((m) => m.name === recipient);
30483
+ if (!memberExists) {
30484
+ return errorResult(`Recipient "${recipient}" is not a member of team "${teamName}".`);
30485
+ }
30486
+ const msg = {
30487
+ type: "plan_approval_response",
30488
+ requestId: request_id,
30489
+ approved: approve,
30490
+ feedback: content,
30491
+ timestamp
30492
+ };
30493
+ sendMessage(teamName, recipient, msg);
30494
+ const action = approve ? "approved" : "rejected";
30495
+ return {
30496
+ output: jsonToolResult({
30497
+ message: `Plan ${action} for "${recipient}" (requestId: ${request_id}).`
30498
+ })
30499
+ };
30500
+ }
30501
+ default: {
30502
+ return errorResult(`Unknown message type: "${type}". Expected one of: message, broadcast, shutdown_request, shutdown_response, plan_approval_response.`);
30503
+ }
30504
+ }
30505
+ };
30506
+
30507
+ // ../packages/agent-runtime/src/tools/handlers/tool/task-create.ts
30508
+ var fs3 = __toESM(require("fs"));
30509
+ function getActiveTeamName() {
30510
+ const teamsDir = getTeamsDir();
30511
+ if (!fs3.existsSync(teamsDir)) {
30512
+ return null;
30513
+ }
30514
+ const entries = fs3.readdirSync(teamsDir, { withFileTypes: true });
30515
+ const teamDirs = entries.filter((e) => e.isDirectory());
30516
+ if (teamDirs.length === 0) {
30517
+ return null;
30518
+ }
30519
+ return teamDirs[0].name;
30520
+ }
30521
+ var handleTaskCreate = async (params2) => {
30522
+ const { previousToolCallFinished, toolCall } = params2;
30523
+ const { subject, description: description38, activeForm, metadata } = toolCall.input;
30524
+ await previousToolCallFinished;
30525
+ const teamName = getActiveTeamName();
30526
+ if (!teamName) {
30527
+ return {
30528
+ output: jsonToolResult({
30529
+ error: "No active team found. Create a team first using TeamCreate."
30530
+ })
30531
+ };
30532
+ }
30533
+ const existingTasks = listTasks(teamName);
30534
+ const maxId = existingTasks.reduce((max, t) => {
30535
+ const num = parseInt(t.id, 10);
30536
+ return isNaN(num) ? max : Math.max(max, num);
30537
+ }, 0);
30538
+ const taskId = String(maxId + 1);
30539
+ const now = Date.now();
30540
+ const task = {
30541
+ id: taskId,
30542
+ subject,
30543
+ description: description38,
30544
+ status: "pending",
30545
+ blockedBy: [],
30546
+ blocks: [],
30547
+ phase: "planning",
30548
+ activeForm,
30549
+ createdAt: now,
30550
+ updatedAt: now,
30551
+ metadata
30552
+ };
30553
+ try {
30554
+ createTask(teamName, task);
30555
+ } catch (error) {
30556
+ const errorMessage = error instanceof Error ? error.message : String(error);
30557
+ return {
30558
+ output: jsonToolResult({
30559
+ error: `Failed to create task: ${errorMessage}`
30560
+ })
30561
+ };
30562
+ }
30563
+ return {
30564
+ output: jsonToolResult({
30565
+ taskId,
30566
+ subject
30567
+ })
30568
+ };
30569
+ };
30570
+
30571
+ // ../packages/agent-runtime/src/tools/handlers/tool/task-get.ts
30572
+ var fs4 = __toESM(require("fs"));
30573
+ function getActiveTeamName2() {
30574
+ const teamsDir = getTeamsDir();
30575
+ if (!fs4.existsSync(teamsDir)) {
30576
+ return null;
30577
+ }
30578
+ const entries = fs4.readdirSync(teamsDir, { withFileTypes: true });
30579
+ const teamDirs = entries.filter((e) => e.isDirectory());
30580
+ if (teamDirs.length === 0) {
30581
+ return null;
30582
+ }
30583
+ return teamDirs[0].name;
30584
+ }
30585
+ var handleTaskGet = async (params2) => {
30586
+ const { previousToolCallFinished, toolCall } = params2;
30587
+ const { taskId } = toolCall.input;
30588
+ await previousToolCallFinished;
30589
+ const teamName = getActiveTeamName2();
30590
+ if (!teamName) {
30591
+ return {
30592
+ output: jsonToolResult({
30593
+ error: "No active team found. Create a team first using TeamCreate."
30594
+ })
30595
+ };
30596
+ }
30597
+ const task = getTask(teamName, taskId);
30598
+ if (!task) {
30599
+ return {
30600
+ output: jsonToolResult({
30601
+ error: `Task "${taskId}" not found.`
30602
+ })
30603
+ };
30604
+ }
30605
+ return {
30606
+ output: jsonToolResult(task)
30607
+ };
30608
+ };
30609
+
30610
+ // ../packages/agent-runtime/src/tools/handlers/tool/task-list.ts
30611
+ var fs5 = __toESM(require("fs"));
30612
+ function getActiveTeamName3() {
30613
+ const teamsDir = getTeamsDir();
30614
+ if (!fs5.existsSync(teamsDir)) {
30615
+ return null;
30616
+ }
30617
+ const entries = fs5.readdirSync(teamsDir, { withFileTypes: true });
30618
+ const teamDirs = entries.filter((e) => e.isDirectory());
30619
+ if (teamDirs.length === 0) {
30620
+ return null;
30621
+ }
30622
+ return teamDirs[0].name;
30623
+ }
30624
+ var handleTaskList = async (params2) => {
30625
+ const { previousToolCallFinished } = params2;
30626
+ await previousToolCallFinished;
30627
+ const teamName = getActiveTeamName3();
30628
+ if (!teamName) {
30629
+ return {
30630
+ output: jsonToolResult({
30631
+ error: "No active team found. Create a team first using TeamCreate.",
30632
+ tasks: []
30633
+ })
30634
+ };
30635
+ }
30636
+ const tasks = listTasks(teamName);
30637
+ const summary = tasks.map((t) => ({
30638
+ id: t.id,
30639
+ subject: t.subject,
30640
+ status: t.status,
30641
+ owner: t.owner ?? null,
30642
+ blockedBy: t.blockedBy.filter((id) => {
30643
+ const blocker = tasks.find((bt) => bt.id === id);
30644
+ return blocker && blocker.status !== "completed";
30645
+ })
30646
+ }));
30647
+ return {
30648
+ output: jsonToolResult({ tasks: summary })
30649
+ };
30650
+ };
30651
+
30652
+ // ../packages/agent-runtime/src/tools/handlers/tool/task-update.ts
30653
+ var fs6 = __toESM(require("fs"));
30654
+ var path4 = __toESM(require("path"));
30655
+ function getActiveTeamName4() {
30656
+ const teamsDir = getTeamsDir();
30657
+ if (!fs6.existsSync(teamsDir)) {
30658
+ return null;
30659
+ }
30660
+ const entries = fs6.readdirSync(teamsDir, { withFileTypes: true });
30661
+ const teamDirs = entries.filter((e) => e.isDirectory());
30662
+ if (teamDirs.length === 0) {
30663
+ return null;
30664
+ }
30665
+ return teamDirs[0].name;
30666
+ }
30667
+ var handleTaskUpdate = async (params2) => {
30668
+ const { previousToolCallFinished, toolCall } = params2;
30669
+ const {
30670
+ taskId,
30671
+ status,
30672
+ subject,
30673
+ description: description38,
30674
+ activeForm,
30675
+ owner,
30676
+ addBlocks,
30677
+ addBlockedBy,
30678
+ metadata
30679
+ } = toolCall.input;
30680
+ await previousToolCallFinished;
30681
+ const teamName = getActiveTeamName4();
30682
+ if (!teamName) {
30683
+ return {
30684
+ output: jsonToolResult({
30685
+ error: "No active team found. Create a team first using TeamCreate."
30686
+ })
30687
+ };
30688
+ }
30689
+ const existingTask = getTask(teamName, taskId);
30690
+ if (!existingTask) {
30691
+ return {
30692
+ output: jsonToolResult({
30693
+ error: `Task "${taskId}" not found.`
30694
+ })
30695
+ };
30696
+ }
30697
+ if (status === "deleted") {
30698
+ const taskPath = path4.join(getTasksDir(teamName), `${taskId}.json`);
30699
+ if (fs6.existsSync(taskPath)) {
30700
+ fs6.unlinkSync(taskPath);
30701
+ }
30702
+ return {
30703
+ output: jsonToolResult({
30704
+ message: `Task "${taskId}" deleted.`
30705
+ })
30706
+ };
30707
+ }
30708
+ const updates = {};
30709
+ if (status !== undefined)
30710
+ updates.status = status;
30711
+ if (subject !== undefined)
30712
+ updates.subject = subject;
30713
+ if (description38 !== undefined)
30714
+ updates.description = description38;
30715
+ if (activeForm !== undefined)
30716
+ updates.activeForm = activeForm;
30717
+ if (owner !== undefined)
30718
+ updates.owner = owner;
30719
+ if (addBlocks && addBlocks.length > 0) {
30720
+ const currentBlocks = existingTask.blocks ?? [];
30721
+ const newBlocks = [...new Set([...currentBlocks, ...addBlocks])];
30722
+ updates.blocks = newBlocks;
30723
+ }
30724
+ if (addBlockedBy && addBlockedBy.length > 0) {
30725
+ const currentBlockedBy = existingTask.blockedBy ?? [];
30726
+ const newBlockedBy = [...new Set([...currentBlockedBy, ...addBlockedBy])];
30727
+ updates.blockedBy = newBlockedBy;
30728
+ }
30729
+ if (metadata !== undefined) {
30730
+ const currentMetadata = existingTask.metadata ?? {};
30731
+ const mergedMetadata = { ...currentMetadata };
30732
+ for (const [key, value] of Object.entries(metadata)) {
30733
+ if (value === null) {
30734
+ delete mergedMetadata[key];
30735
+ } else {
30736
+ mergedMetadata[key] = value;
30737
+ }
30738
+ }
30739
+ updates.metadata = mergedMetadata;
30740
+ }
30741
+ try {
30742
+ updateTask(teamName, taskId, updates);
30743
+ } catch (error) {
30744
+ const errorMessage = error instanceof Error ? error.message : String(error);
30745
+ return {
30746
+ output: jsonToolResult({
30747
+ error: `Failed to update task "${taskId}": ${errorMessage}`
30748
+ })
30749
+ };
30750
+ }
30751
+ const updatedTask = getTask(teamName, taskId);
30752
+ return {
30753
+ output: jsonToolResult(updatedTask)
30754
+ };
30755
+ };
30756
+
30757
+ // ../packages/agent-runtime/src/tools/handlers/tool/team-create.ts
30758
+ var handleTeamCreate = async (params2) => {
30759
+ const { previousToolCallFinished, toolCall, agentStepId: agentStepId2 } = params2;
30760
+ const { team_name, description: description38, agent_type } = toolCall.input;
30761
+ await previousToolCallFinished;
30762
+ const leadAgentId = `lead-${agentStepId2}`;
30763
+ const now = Date.now();
30764
+ const teamConfig = {
30765
+ name: team_name,
30766
+ description: description38 ?? "",
30767
+ createdAt: now,
30768
+ leadAgentId,
30769
+ phase: "planning",
30770
+ members: [
30771
+ {
30772
+ agentId: leadAgentId,
30773
+ name: "team-lead",
30774
+ role: "coordinator",
30775
+ agentType: agent_type ?? "coordinator",
30776
+ model: "",
30777
+ joinedAt: now,
30778
+ status: "active",
30779
+ cwd: process.cwd()
30780
+ }
30781
+ ],
30782
+ settings: {
30783
+ maxMembers: 20,
30784
+ autoAssign: true
30785
+ }
30786
+ };
30787
+ try {
30788
+ createTeam(teamConfig);
30789
+ } catch (error) {
30790
+ const errorMessage = error instanceof Error ? error.message : String(error);
30791
+ return {
30792
+ output: jsonToolResult({
30793
+ message: `Failed to create team "${team_name}": ${errorMessage}`
30794
+ })
30795
+ };
30796
+ }
30797
+ const teamFilePath = `${getTeamsDir()}/${team_name}/config.json`;
30798
+ const taskDirPath = getTasksDir(team_name);
30799
+ return {
30800
+ output: jsonToolResult({
30801
+ message: `Team "${team_name}" created successfully. Config: ${teamFilePath}, Tasks: ${taskDirPath}, Lead: ${leadAgentId}`
30802
+ })
30803
+ };
30804
+ };
30805
+
30806
+ // ../packages/agent-runtime/src/tools/handlers/tool/team-delete.ts
30807
+ var fs7 = __toESM(require("fs"));
30808
+ function findCurrentTeam(agentStepId2) {
30809
+ const teamsDir = getTeamsDir();
30810
+ if (!fs7.existsSync(teamsDir)) {
30811
+ return null;
30812
+ }
30813
+ const entries = fs7.readdirSync(teamsDir, { withFileTypes: true });
30814
+ for (const entry of entries) {
30815
+ if (!entry.isDirectory()) {
30816
+ continue;
30817
+ }
30818
+ const config = loadTeamConfig(entry.name);
30819
+ if (!config) {
30820
+ continue;
30821
+ }
30822
+ if (config.leadAgentId === `lead-${agentStepId2}`) {
30823
+ return config.name;
30824
+ }
30825
+ for (const member of config.members) {
30826
+ if (member.agentId === `lead-${agentStepId2}` || member.agentId === agentStepId2) {
30827
+ return config.name;
30828
+ }
30829
+ }
30830
+ }
30831
+ return null;
30832
+ }
30833
+ var handleTeamDelete = async (params2) => {
30834
+ const { previousToolCallFinished, agentStepId: agentStepId2 } = params2;
30835
+ await previousToolCallFinished;
30836
+ const teamName = findCurrentTeam(agentStepId2);
30837
+ if (!teamName) {
30838
+ return {
30839
+ output: jsonToolResult({
30840
+ message: "No team found for the current agent context. Cannot delete."
30841
+ })
30842
+ };
30843
+ }
30844
+ const config = loadTeamConfig(teamName);
30845
+ if (!config) {
30846
+ return {
30847
+ output: jsonToolResult({
30848
+ message: `Team "${teamName}" config not found. It may have already been deleted.`
30849
+ })
30850
+ };
30851
+ }
30852
+ const activeNonLeadMembers = config.members.filter((m) => m.status === "active" && m.agentId !== config.leadAgentId);
30853
+ if (activeNonLeadMembers.length > 0) {
30854
+ const activeNames = activeNonLeadMembers.map((m) => m.name).join(", ");
30855
+ return {
30856
+ output: jsonToolResult({
30857
+ message: `Cannot delete team "${teamName}": ${activeNonLeadMembers.length} active member(s) besides lead: ${activeNames}. Ensure all agents have completed their work before deleting the team.`
30858
+ })
30859
+ };
30860
+ }
30861
+ try {
30862
+ deleteTeam(teamName);
30863
+ } catch (error) {
30864
+ const errorMessage = error instanceof Error ? error.message : String(error);
30865
+ return {
30866
+ output: jsonToolResult({
30867
+ message: `Failed to delete team "${teamName}": ${errorMessage}`
30868
+ })
30869
+ };
30870
+ }
30871
+ return {
30872
+ output: jsonToolResult({
30873
+ message: `Team "${teamName}" deleted successfully. All team and task directories have been removed.`
30874
+ })
30875
+ };
30876
+ };
30877
+
29862
30878
  // ../packages/agent-runtime/src/tools/handlers/list.ts
29863
30879
  var levelcodeToolHandlers = {
29864
30880
  add_message: handleAddMessage,
@@ -29887,6 +30903,13 @@ var levelcodeToolHandlers = {
29887
30903
  str_replace: handleStrReplace,
29888
30904
  suggest_followups: handleSuggestFollowups,
29889
30905
  task_completed: handleTaskCompleted,
30906
+ task_create: handleTaskCreate,
30907
+ task_get: handleTaskGet,
30908
+ task_list: handleTaskList,
30909
+ task_update: handleTaskUpdate,
30910
+ send_message: handleSendMessage,
30911
+ team_create: handleTeamCreate,
30912
+ team_delete: handleTeamDelete,
29890
30913
  think_deeply: handleThinkDeeply,
29891
30914
  update_subgoal: handleUpdateSubgoal,
29892
30915
  web_search: handleWebSearch,
@@ -29895,10 +30918,10 @@ var levelcodeToolHandlers = {
29895
30918
  };
29896
30919
 
29897
30920
  // ../common/src/tools/utils.ts
29898
- function getToolCallString(toolName32, input, ...endsAgentStep32) {
29899
- const endsAgentStepValue = toolName32 in toolParams ? toolParams[toolName32].endsAgentStep : endsAgentStep32[0] ?? false;
30921
+ function getToolCallString(toolName39, input, ...endsAgentStep39) {
30922
+ const endsAgentStepValue = toolName39 in toolParams ? toolParams[toolName39].endsAgentStep : endsAgentStep39[0] ?? false;
29900
30923
  return $getToolCallString({
29901
- toolName: toolName32,
30924
+ toolName: toolName39,
29902
30925
  inputSchema: null,
29903
30926
  input,
29904
30927
  endsAgentStep: endsAgentStepValue
@@ -29926,7 +30949,7 @@ ${skillsXml}
29926
30949
 
29927
30950
  // ../packages/agent-runtime/src/tools/prompts.ts
29928
30951
  var import_lodash12 = __toESM(require_lodash());
29929
- var import_v459 = __toESM(require("zod/v4"));
30952
+ var import_v466 = __toESM(require("zod/v4"));
29930
30953
  function ensureZodSchema(schema) {
29931
30954
  if (schema && typeof schema.safeParse === "function") {
29932
30955
  return schema;
@@ -29935,25 +30958,25 @@ function ensureZodSchema(schema) {
29935
30958
  }
29936
30959
  function ensureJsonSchemaCompatible2(schema) {
29937
30960
  try {
29938
- import_v459.default.toJSONSchema(schema, { io: "input" });
30961
+ import_v466.default.toJSONSchema(schema, { io: "input" });
29939
30962
  return schema;
29940
30963
  } catch {
29941
- const fallback = import_v459.default.object({}).passthrough();
30964
+ const fallback = import_v466.default.object({}).passthrough();
29942
30965
  return schema.description ? fallback.describe(schema.description) : fallback;
29943
30966
  }
29944
30967
  }
29945
30968
  function toJsonSchemaSafe(schema) {
29946
30969
  try {
29947
- return import_v459.default.toJSONSchema(schema, { io: "input" });
30970
+ return import_v466.default.toJSONSchema(schema, { io: "input" });
29948
30971
  } catch {
29949
30972
  return { type: "object", properties: {} };
29950
30973
  }
29951
30974
  }
29952
30975
  function paramsSection(params2) {
29953
- const { schema, endsAgentStep: endsAgentStep32 } = params2;
30976
+ const { schema, endsAgentStep: endsAgentStep39 } = params2;
29954
30977
  const safeSchema = ensureJsonSchemaCompatible2(schema);
29955
- const schemaWithEndsAgentStepParam = endsAgentStep32 ? safeSchema.and(import_v459.default.object({
29956
- [endsAgentStepParam]: import_v459.default.literal(endsAgentStep32).describe("Easp flag must be set to true")
30978
+ const schemaWithEndsAgentStepParam = endsAgentStep39 ? safeSchema.and(import_v466.default.object({
30979
+ [endsAgentStepParam]: import_v466.default.literal(endsAgentStep39).describe("Easp flag must be set to true")
29957
30980
  })) : safeSchema;
29958
30981
  const jsonSchema = toJsonSchemaSafe(schemaWithEndsAgentStepParam);
29959
30982
  delete jsonSchema.description;
@@ -29969,19 +30992,19 @@ function paramsSection(params2) {
29969
30992
  }
29970
30993
  function buildToolDescription(params2) {
29971
30994
  const {
29972
- toolName: toolName32,
30995
+ toolName: toolName39,
29973
30996
  schema,
29974
- description: description31 = "",
29975
- endsAgentStep: endsAgentStep32,
30997
+ description: description38 = "",
30998
+ endsAgentStep: endsAgentStep39,
29976
30999
  exampleInputs = []
29977
31000
  } = params2;
29978
- const descriptionWithExamples = buildArray(description31, exampleInputs.length > 0 ? `${pluralize(exampleInputs.length, "Example")}:` : "", ...exampleInputs.map((example) => getToolCallString(toolName32, example, endsAgentStep32))).join(`
31001
+ const descriptionWithExamples = buildArray(description38, exampleInputs.length > 0 ? `${pluralize(exampleInputs.length, "Example")}:` : "", ...exampleInputs.map((example) => getToolCallString(toolName39, example, endsAgentStep39))).join(`
29979
31002
 
29980
31003
  `);
29981
31004
  return buildArray([
29982
- `### ${toolName32}`,
31005
+ `### ${toolName39}`,
29983
31006
  schema.description || "",
29984
- paramsSection({ schema, endsAgentStep: endsAgentStep32 }),
31007
+ paramsSection({ schema, endsAgentStep: endsAgentStep39 }),
29985
31008
  descriptionWithExamples
29986
31009
  ]).join(`
29987
31010
 
@@ -30000,43 +31023,43 @@ async function getToolSet(params2) {
30000
31023
  const { toolNames: toolNames2, additionalToolDefinitions, agentTools, skills } = params2;
30001
31024
  const availableSkillsXml = formatAvailableSkillsXml(skills);
30002
31025
  const toolSet = {};
30003
- for (const toolName32 of toolNames2) {
30004
- if (toolName32 in toolParams) {
30005
- const toolDef = toolParams[toolName32];
30006
- if (toolName32 === "skill" && availableSkillsXml) {
30007
- let description31 = toolDef.description ?? "";
30008
- description31 = description31.replace(AVAILABLE_SKILLS_PLACEHOLDER, availableSkillsXml);
30009
- toolSet[toolName32] = {
31026
+ for (const toolName39 of toolNames2) {
31027
+ if (toolName39 in toolParams) {
31028
+ const toolDef = toolParams[toolName39];
31029
+ if (toolName39 === "skill" && availableSkillsXml) {
31030
+ let description38 = toolDef.description ?? "";
31031
+ description38 = description38.replace(AVAILABLE_SKILLS_PLACEHOLDER, availableSkillsXml);
31032
+ toolSet[toolName39] = {
30010
31033
  ...toolDef,
30011
- description: description31
31034
+ description: description38
30012
31035
  };
30013
- } else if (toolName32 === "skill") {
30014
- let description31 = toolDef.description ?? "";
30015
- description31 = description31.replace(AVAILABLE_SKILLS_PLACEHOLDER + `
31036
+ } else if (toolName39 === "skill") {
31037
+ let description38 = toolDef.description ?? "";
31038
+ description38 = description38.replace(AVAILABLE_SKILLS_PLACEHOLDER + `
30016
31039
 
30017
31040
  `, "");
30018
- description31 = description31.replace(AVAILABLE_SKILLS_PLACEHOLDER, "");
30019
- toolSet[toolName32] = {
31041
+ description38 = description38.replace(AVAILABLE_SKILLS_PLACEHOLDER, "");
31042
+ toolSet[toolName39] = {
30020
31043
  ...toolDef,
30021
- description: description31
31044
+ description: description38
30022
31045
  };
30023
31046
  } else {
30024
- toolSet[toolName32] = toolDef;
31047
+ toolSet[toolName39] = toolDef;
30025
31048
  }
30026
31049
  }
30027
31050
  }
30028
31051
  const toolDefinitions = await additionalToolDefinitions();
30029
- for (const [toolName32, toolDefinition] of Object.entries(toolDefinitions)) {
31052
+ for (const [toolName39, toolDefinition] of Object.entries(toolDefinitions)) {
30030
31053
  const clonedDef = import_lodash12.cloneDeep(toolDefinition);
30031
31054
  const zodSchema = ensureZodSchema(clonedDef.inputSchema);
30032
31055
  const safeSchema = ensureJsonSchemaCompatible2(zodSchema);
30033
- toolSet[toolName32] = {
31056
+ toolSet[toolName39] = {
30034
31057
  ...clonedDef,
30035
31058
  inputSchema: safeSchema
30036
31059
  };
30037
31060
  }
30038
- for (const [toolName32, toolDefinition] of Object.entries(agentTools)) {
30039
- toolSet[toolName32] = toolDefinition;
31061
+ for (const [toolName39, toolDefinition] of Object.entries(agentTools)) {
31062
+ toolSet[toolName39] = toolDefinition;
30040
31063
  }
30041
31064
  return toolSet;
30042
31065
  }
@@ -30044,30 +31067,30 @@ async function getToolSet(params2) {
30044
31067
  // ../packages/agent-runtime/src/tools/tool-executor.ts
30045
31068
  function parseRawToolCall(params2) {
30046
31069
  const { rawToolCall } = params2;
30047
- const toolName32 = rawToolCall.toolName;
31070
+ const toolName39 = rawToolCall.toolName;
30048
31071
  const processedParameters = rawToolCall.input;
30049
- const paramsSchema = toolParams[toolName32].inputSchema;
31072
+ const paramsSchema = toolParams[toolName39].inputSchema;
30050
31073
  const result = paramsSchema.safeParse(processedParameters);
30051
31074
  if (!result.success) {
30052
31075
  return {
30053
- toolName: toolName32,
31076
+ toolName: toolName39,
30054
31077
  toolCallId: rawToolCall.toolCallId,
30055
31078
  input: rawToolCall.input,
30056
- error: `Invalid parameters for ${toolName32}: ${JSON.stringify(result.error.issues, null, 2)}`
31079
+ error: `Invalid parameters for ${toolName39}: ${JSON.stringify(result.error.issues, null, 2)}`
30057
31080
  };
30058
31081
  }
30059
31082
  if (endsAgentStepParam in result.data) {
30060
31083
  delete result.data[endsAgentStepParam];
30061
31084
  }
30062
31085
  return {
30063
- toolName: toolName32,
31086
+ toolName: toolName39,
30064
31087
  input: result.data,
30065
31088
  toolCallId: rawToolCall.toolCallId
30066
31089
  };
30067
31090
  }
30068
31091
  async function executeToolCall(params2) {
30069
31092
  const {
30070
- toolName: toolName32,
31093
+ toolName: toolName39,
30071
31094
  input,
30072
31095
  excludeToolFromMessageHistory = false,
30073
31096
  fromHandleSteps = false,
@@ -30086,7 +31109,7 @@ async function executeToolCall(params2) {
30086
31109
  const toolCallId = params2.toolCallId ?? generateCompactId();
30087
31110
  const toolCall = parseRawToolCall({
30088
31111
  rawToolCall: {
30089
- toolName: toolName32,
31112
+ toolName: toolName39,
30090
31113
  toolCallId,
30091
31114
  input
30092
31115
  }
@@ -30094,7 +31117,7 @@ async function executeToolCall(params2) {
30094
31117
  if (toolCall.toolName && !agentTemplate.toolNames.includes(toolCall.toolName) && !fromHandleSteps) {
30095
31118
  onResponseChunk2({
30096
31119
  type: "error",
30097
- message: `Tool \`${toolName32}\` is not currently available. Make sure to only use tools provided at the start of the conversation AND that you most recently have permission to use.`
31120
+ message: `Tool \`${toolName39}\` is not currently available. Make sure to only use tools provided at the start of the conversation AND that you most recently have permission to use.`
30098
31121
  });
30099
31122
  return previousToolCallFinished;
30100
31123
  }
@@ -30103,12 +31126,12 @@ async function executeToolCall(params2) {
30103
31126
  type: "error",
30104
31127
  message: toolCall.error
30105
31128
  });
30106
- logger2.debug({ toolCall, error: toolCall.error }, `${toolName32} error: ${toolCall.error}`);
31129
+ logger2.debug({ toolCall, error: toolCall.error }, `${toolName39} error: ${toolCall.error}`);
30107
31130
  return previousToolCallFinished;
30108
31131
  }
30109
- const transformedInput = toolName32 === "spawn_agents" ? transformSpawnAgentsInput(input, agentTemplate.spawnableAgents) : input;
31132
+ const transformedInput = toolName39 === "spawn_agents" ? transformSpawnAgentsInput(input, agentTemplate.spawnableAgents) : input;
30110
31133
  let effectiveInput = transformedInput;
30111
- if (toolName32 === "spawn_agents") {
31134
+ if (toolName39 === "spawn_agents") {
30112
31135
  const agents = transformedInput.agents;
30113
31136
  if (Array.isArray(agents)) {
30114
31137
  const BASE_AGENTS = [
@@ -30170,7 +31193,7 @@ async function executeToolCall(params2) {
30170
31193
  if (validAgents.length === 0) {
30171
31194
  const errorMsg2 = `Failed to spawn agents: ${errors.join("; ")}`;
30172
31195
  onResponseChunk2({ type: "error", message: errorMsg2 });
30173
- logger2.debug({ toolName: toolName32, errors }, "All agents in spawn_agents are invalid, not streaming tool call");
31196
+ logger2.debug({ toolName: toolName39, errors }, "All agents in spawn_agents are invalid, not streaming tool call");
30174
31197
  return previousToolCallFinished;
30175
31198
  }
30176
31199
  const errorMsg = `Some agents could not be spawned: ${errors.join("; ")}. Proceeding with valid agents only.`;
@@ -30182,15 +31205,15 @@ async function executeToolCall(params2) {
30182
31205
  onResponseChunk2({
30183
31206
  type: "tool_call",
30184
31207
  toolCallId,
30185
- toolName: toolName32,
31208
+ toolName: toolName39,
30186
31209
  input: effectiveInput,
30187
31210
  agentId: agentState2.agentId,
30188
31211
  parentAgentId: agentState2.parentId,
30189
31212
  includeToolCall: !excludeToolFromMessageHistory
30190
31213
  });
30191
31214
  toolCalls2.push(toolCall);
30192
- const handler = levelcodeToolHandlers[toolName32];
30193
- const finalToolCall = toolName32 === "spawn_agents" ? { ...toolCall, input: effectiveInput } : toolCall;
31215
+ const handler = levelcodeToolHandlers[toolName39];
31216
+ const finalToolCall = toolName39 === "spawn_agents" ? { ...toolCall, input: effectiveInput } : toolCall;
30194
31217
  const toolResultPromise = handler({
30195
31218
  ...params2,
30196
31219
  toolCall: finalToolCall,
@@ -30211,7 +31234,7 @@ async function executeToolCall(params2) {
30211
31234
  return toolResultPromise.then(async ({ output, creditsUsed }) => {
30212
31235
  const toolResult2 = {
30213
31236
  role: "tool",
30214
- toolName: toolName32,
31237
+ toolName: toolName39,
30215
31238
  toolCallId: toolCall.toolCallId,
30216
31239
  content: output
30217
31240
  };
@@ -30227,19 +31250,19 @@ async function executeToolCall(params2) {
30227
31250
  }
30228
31251
  if (creditsUsed) {
30229
31252
  onCostCalculated(creditsUsed);
30230
- logger2.debug({ credits: creditsUsed, totalCredits: agentState2.creditsUsed }, `Added ${creditsUsed} credits from ${toolName32} to agent state`);
31253
+ logger2.debug({ credits: creditsUsed, totalCredits: agentState2.creditsUsed }, `Added ${creditsUsed} credits from ${toolName39} to agent state`);
30231
31254
  }
30232
31255
  });
30233
31256
  }
30234
31257
  function parseRawCustomToolCall(params2) {
30235
31258
  const { customToolDefs, rawToolCall, autoInsertEndStepParam = false } = params2;
30236
- const toolName32 = rawToolCall.toolName;
30237
- if (!(customToolDefs && (toolName32 in customToolDefs)) && !toolName32.includes(MCP_TOOL_SEPARATOR)) {
31259
+ const toolName39 = rawToolCall.toolName;
31260
+ if (!(customToolDefs && (toolName39 in customToolDefs)) && !toolName39.includes(MCP_TOOL_SEPARATOR)) {
30238
31261
  return {
30239
- toolName: toolName32,
31262
+ toolName: toolName39,
30240
31263
  toolCallId: rawToolCall.toolCallId,
30241
31264
  input: rawToolCall.input,
30242
- error: `Tool ${toolName32} not found`
31265
+ error: `Tool ${toolName39} not found`
30243
31266
  };
30244
31267
  }
30245
31268
  const processedParameters = {};
@@ -30247,18 +31270,18 @@ function parseRawCustomToolCall(params2) {
30247
31270
  processedParameters[param] = val;
30248
31271
  }
30249
31272
  if (autoInsertEndStepParam) {
30250
- processedParameters[endsAgentStepParam] = customToolDefs?.[toolName32]?.endsAgentStep;
31273
+ processedParameters[endsAgentStepParam] = customToolDefs?.[toolName39]?.endsAgentStep;
30251
31274
  }
30252
- const rawSchema = customToolDefs?.[toolName32]?.inputSchema;
31275
+ const rawSchema = customToolDefs?.[toolName39]?.inputSchema;
30253
31276
  if (rawSchema) {
30254
31277
  const paramsSchema = ensureZodSchema(rawSchema);
30255
31278
  const result = paramsSchema.safeParse(processedParameters);
30256
31279
  if (!result.success) {
30257
31280
  return {
30258
- toolName: toolName32,
31281
+ toolName: toolName39,
30259
31282
  toolCallId: rawToolCall.toolCallId,
30260
31283
  input: rawToolCall.input,
30261
- error: `Invalid parameters for ${toolName32}: ${JSON.stringify(result.error.issues, null, 2)}`
31284
+ error: `Invalid parameters for ${toolName39}: ${JSON.stringify(result.error.issues, null, 2)}`
30262
31285
  };
30263
31286
  }
30264
31287
  }
@@ -30267,14 +31290,14 @@ function parseRawCustomToolCall(params2) {
30267
31290
  delete input[endsAgentStepParam];
30268
31291
  }
30269
31292
  return {
30270
- toolName: toolName32,
31293
+ toolName: toolName39,
30271
31294
  input,
30272
31295
  toolCallId: rawToolCall.toolCallId
30273
31296
  };
30274
31297
  }
30275
31298
  async function executeCustomToolCall(params2) {
30276
31299
  const {
30277
- toolName: toolName32,
31300
+ toolName: toolName39,
30278
31301
  input,
30279
31302
  autoInsertEndStepParam = false,
30280
31303
  excludeToolFromMessageHistory = false,
@@ -30300,7 +31323,7 @@ async function executeCustomToolCall(params2) {
30300
31323
  writeTo: import_lodash13.cloneDeep(fileContext.customToolDefinitions)
30301
31324
  }),
30302
31325
  rawToolCall: {
30303
- toolName: toolName32,
31326
+ toolName: toolName39,
30304
31327
  toolCallId: toolCallId ?? generateCompactId(),
30305
31328
  input
30306
31329
  },
@@ -30309,7 +31332,7 @@ async function executeCustomToolCall(params2) {
30309
31332
  if (toolCall.toolName && !agentTemplate.toolNames.includes(toolCall.toolName) && !fromHandleSteps && !(toolCall.toolName.includes(MCP_TOOL_SEPARATOR) && (toolCall.toolName.split(MCP_TOOL_SEPARATOR)[0] in agentTemplate.mcpServers))) {
30310
31333
  onResponseChunk2({
30311
31334
  type: "error",
30312
- message: `Tool \`${toolName32}\` is not currently available. Make sure to only use tools listed in the system instructions.`
31335
+ message: `Tool \`${toolName39}\` is not currently available. Make sure to only use tools listed in the system instructions.`
30313
31336
  });
30314
31337
  return previousToolCallFinished;
30315
31338
  }
@@ -30318,13 +31341,13 @@ async function executeCustomToolCall(params2) {
30318
31341
  type: "error",
30319
31342
  message: toolCall.error
30320
31343
  });
30321
- logger2.debug({ toolCall, error: toolCall.error }, `${toolName32} error: ${toolCall.error}`);
31344
+ logger2.debug({ toolCall, error: toolCall.error }, `${toolName39} error: ${toolCall.error}`);
30322
31345
  return previousToolCallFinished;
30323
31346
  }
30324
31347
  onResponseChunk2({
30325
31348
  type: "tool_call",
30326
31349
  toolCallId: toolCall.toolCallId,
30327
- toolName: toolName32,
31350
+ toolName: toolName39,
30328
31351
  input: toolCall.input,
30329
31352
  ...agentState2?.parentId && { agentId: agentState2.agentId },
30330
31353
  ...excludeToolFromMessageHistory && { includeToolCall: false }
@@ -30334,10 +31357,10 @@ async function executeCustomToolCall(params2) {
30334
31357
  if (params2.signal.aborted) {
30335
31358
  return null;
30336
31359
  }
30337
- const toolName33 = toolCall.toolName.includes(MCP_TOOL_SEPARATOR) ? toolCall.toolName.split(MCP_TOOL_SEPARATOR).slice(1).join(MCP_TOOL_SEPARATOR) : toolCall.toolName;
31360
+ const toolName40 = toolCall.toolName.includes(MCP_TOOL_SEPARATOR) ? toolCall.toolName.split(MCP_TOOL_SEPARATOR).slice(1).join(MCP_TOOL_SEPARATOR) : toolCall.toolName;
30338
31361
  const clientToolResult = await requestToolCall({
30339
31362
  userInputId: userInputId2,
30340
- toolName: toolName33,
31363
+ toolName: toolName40,
30341
31364
  input: toolCall.input,
30342
31365
  mcpConfig: toolCall.toolName.includes(MCP_TOOL_SEPARATOR) ? agentTemplate.mcpServers[toolCall.toolName.split(MCP_TOOL_SEPARATOR)[0]] : undefined
30343
31366
  });
@@ -30348,11 +31371,11 @@ async function executeCustomToolCall(params2) {
30348
31371
  }
30349
31372
  const toolResult2 = {
30350
31373
  role: "tool",
30351
- toolName: toolName32,
31374
+ toolName: toolName39,
30352
31375
  toolCallId: toolCall.toolCallId,
30353
31376
  content: result
30354
31377
  };
30355
- logger2.debug({ input, toolResult: toolResult2 }, `${toolName32} custom tool call & result (${toolResult2.toolCallId})`);
31378
+ logger2.debug({ input, toolResult: toolResult2 }, `${toolName39} custom tool call & result (${toolResult2.toolCallId})`);
30356
31379
  if (result === undefined) {
30357
31380
  return;
30358
31381
  }
@@ -30370,14 +31393,14 @@ async function executeCustomToolCall(params2) {
30370
31393
  });
30371
31394
  }
30372
31395
  function tryTransformAgentToolCall(params2) {
30373
- const { toolName: toolName32, input, spawnableAgents } = params2;
31396
+ const { toolName: toolName39, input, spawnableAgents } = params2;
30374
31397
  const agentShortNames = spawnableAgents.map(getAgentShortName);
30375
- if (!agentShortNames.includes(toolName32)) {
31398
+ if (!agentShortNames.includes(toolName39)) {
30376
31399
  return null;
30377
31400
  }
30378
- const fullAgentType = spawnableAgents.find((agentType) => getAgentShortName(agentType) === toolName32);
31401
+ const fullAgentType = spawnableAgents.find((agentType) => getAgentShortName(agentType) === toolName39);
30379
31402
  const agentEntry = {
30380
- agent_type: fullAgentType || toolName32
31403
+ agent_type: fullAgentType || toolName39
30381
31404
  };
30382
31405
  if (typeof input.prompt === "string") {
30383
31406
  agentEntry.prompt = input.prompt;
@@ -30406,14 +31429,14 @@ function parseTextWithToolCalls(text) {
30406
31429
  const jsonContent = match[1].trim();
30407
31430
  try {
30408
31431
  const parsed = JSON.parse(jsonContent);
30409
- const toolName32 = parsed[toolNameParam];
30410
- if (typeof toolName32 === "string") {
31432
+ const toolName39 = parsed[toolNameParam];
31433
+ if (typeof toolName39 === "string") {
30411
31434
  const input = { ...parsed };
30412
31435
  delete input[toolNameParam];
30413
31436
  delete input["cb_easp"];
30414
31437
  segments.push({
30415
31438
  type: "tool_call",
30416
- toolName: toolName32,
31439
+ toolName: toolName39,
30417
31440
  input
30418
31441
  });
30419
31442
  }
@@ -30785,7 +31808,7 @@ function isKnowledgeFile(filePath) {
30785
31808
  }
30786
31809
 
30787
31810
  // ../packages/agent-runtime/src/templates/strings.ts
30788
- var import_v460 = require("zod/v4");
31811
+ var import_v467 = require("zod/v4");
30789
31812
 
30790
31813
  // ../packages/agent-runtime/src/templates/types.ts
30791
31814
  var placeholderNames = [
@@ -30866,10 +31889,10 @@ async function formatPrompt(params2) {
30866
31889
  ...Object.fromEntries(Object.entries(fileContext.knowledgeFiles).filter(([filePath]) => {
30867
31890
  const lowerPath = filePath.toLowerCase();
30868
31891
  return KNOWLEDGE_FILE_NAMES_LOWERCASE.includes(lowerPath);
30869
- }).map(([path4, content]) => [path4, content.trim()])),
31892
+ }).map(([path6, content]) => [path6, content.trim()])),
30870
31893
  ...fileContext.userKnowledgeFiles
30871
- }).map(([path4, content]) => {
30872
- return `\`\`\`${path4}
31894
+ }).map(([path6, content]) => {
31895
+ return `\`\`\`${path6}
30873
31896
  ${content.trim()}
30874
31897
  \`\`\``;
30875
31898
  }).join(`
@@ -30949,7 +31972,7 @@ ${agentDescriptions.join(`
30949
31972
  `;
30950
31973
  addendum += "```json\n";
30951
31974
  try {
30952
- const jsonSchema = import_v460.z.toJSONSchema(outputSchema3, {
31975
+ const jsonSchema = import_v467.z.toJSONSchema(outputSchema3, {
30953
31976
  io: "input"
30954
31977
  });
30955
31978
  delete jsonSchema["$schema"];
@@ -31030,14 +32053,14 @@ function parseToolCallContent(content) {
31030
32053
  }
31031
32054
  try {
31032
32055
  const parsed = JSON.parse(trimmed);
31033
- const toolName32 = parsed[toolNameParam];
31034
- if (typeof toolName32 !== "string") {
32056
+ const toolName39 = parsed[toolNameParam];
32057
+ if (typeof toolName39 !== "string") {
31035
32058
  return null;
31036
32059
  }
31037
32060
  const input = { ...parsed };
31038
32061
  delete input[toolNameParam];
31039
32062
  delete input["cb_easp"];
31040
- return { toolName: toolName32, input };
32063
+ return { toolName: toolName39, input };
31041
32064
  } catch {
31042
32065
  return null;
31043
32066
  }
@@ -31072,13 +32095,13 @@ async function* processStreamWithTools(params2) {
31072
32095
  let autocompleted = false;
31073
32096
  const xmlParserState = createStreamParserState();
31074
32097
  function processToolCallObject(params3) {
31075
- const { toolName: toolName32, input, contents } = params3;
31076
- const processor = processors[toolName32] ?? defaultProcessor(toolName32);
32098
+ const { toolName: toolName39, input, contents } = params3;
32099
+ const processor = processors[toolName39] ?? defaultProcessor(toolName39);
31077
32100
  trackEvent2({
31078
32101
  event: "backend.tool_use" /* TOOL_USE */,
31079
32102
  userId: loggerOptions?.userId ?? "",
31080
32103
  properties: {
31081
- toolName: toolName32,
32104
+ toolName: toolName39,
31082
32105
  contents,
31083
32106
  parsedParams: input,
31084
32107
  autocompleted,
@@ -31087,8 +32110,8 @@ async function* processStreamWithTools(params2) {
31087
32110
  },
31088
32111
  logger: logger2
31089
32112
  });
31090
- processor.onTagStart(toolName32, {});
31091
- processor.onTagEnd(toolName32, input);
32113
+ processor.onTagStart(toolName39, {});
32114
+ processor.onTagEnd(toolName39, input);
31092
32115
  }
31093
32116
  function flush() {
31094
32117
  if (buffer) {
@@ -31203,7 +32226,7 @@ async function processStream(params2) {
31203
32226
  return onResponseChunk2(chunk);
31204
32227
  };
31205
32228
  }
31206
- function createToolExecutionCallback(toolName32, isXmlMode) {
32229
+ function createToolExecutionCallback(toolName39, isXmlMode) {
31207
32230
  const responseHandler = createResponseHandler(isXmlMode);
31208
32231
  const resultsArray = isXmlMode ? [] : toolResultsToAddAfterStream;
31209
32232
  return {
@@ -31213,9 +32236,9 @@ async function processStream(params2) {
31213
32236
  return;
31214
32237
  }
31215
32238
  const toolCallId = generateCompactId();
31216
- const isNativeTool = toolNames.includes(toolName32);
32239
+ const isNativeTool = toolNames.includes(toolName39);
31217
32240
  const transformed = !isNativeTool ? tryTransformAgentToolCall({
31218
- toolName: toolName32,
32241
+ toolName: toolName39,
31219
32242
  input,
31220
32243
  spawnableAgents: agentTemplate.spawnableAgents
31221
32244
  }) : null;
@@ -31224,7 +32247,7 @@ async function processStream(params2) {
31224
32247
  if (isNativeTool || transformed) {
31225
32248
  toolPromise = executeToolCall({
31226
32249
  ...params2,
31227
- toolName: transformed ? transformed.toolName : toolName32,
32250
+ toolName: transformed ? transformed.toolName : toolName39,
31228
32251
  input: transformed ? transformed.input : input,
31229
32252
  fromHandleSteps: false,
31230
32253
  skipDirectResultPush: isXmlMode,
@@ -31241,7 +32264,7 @@ async function processStream(params2) {
31241
32264
  } else {
31242
32265
  toolPromise = executeCustomToolCall({
31243
32266
  ...params2,
31244
- toolName: toolName32,
32267
+ toolName: toolName39,
31245
32268
  input,
31246
32269
  skipDirectResultPush: isXmlMode,
31247
32270
  fileProcessingState: fileProcessingState2,
@@ -31274,10 +32297,10 @@ async function processStream(params2) {
31274
32297
  ])
31275
32298
  ]),
31276
32299
  defaultProcessor: (name) => createToolExecutionCallback(name, false),
31277
- onError: (toolName32, error) => {
32300
+ onError: (toolName39, error) => {
31278
32301
  const toolResult2 = {
31279
32302
  role: "tool",
31280
- toolName: toolName32,
32303
+ toolName: toolName39,
31281
32304
  toolCallId: generateCompactId(),
31282
32305
  content: jsonToolResult({ errorMessage: error })
31283
32306
  };
@@ -31299,12 +32322,12 @@ async function processStream(params2) {
31299
32322
  }
31300
32323
  return onResponseChunk2(chunk);
31301
32324
  },
31302
- executeXmlToolCall: async ({ toolName: toolName32, input }) => {
32325
+ executeXmlToolCall: async ({ toolName: toolName39, input }) => {
31303
32326
  if (signal.aborted) {
31304
32327
  return;
31305
32328
  }
31306
- const callback = createToolExecutionCallback(toolName32, true);
31307
- await callback.onTagEnd(toolName32, input);
32329
+ const callback = createToolExecutionCallback(toolName39, true);
32330
+ await callback.onTagEnd(toolName39, input);
31308
32331
  }
31309
32332
  });
31310
32333
  let messageId = null;
@@ -31422,7 +32445,7 @@ function getAgentOutput(agentState2, agentTemplate) {
31422
32445
  // ../packages/agent-runtime/src/run-agent-step.ts
31423
32446
  async function additionalToolDefinitions(params2) {
31424
32447
  const { agentTemplate, fileContext } = params2;
31425
- const defs = import_lodash16.cloneDeep(Object.fromEntries(Object.entries(fileContext.customToolDefinitions).filter(([toolName32]) => agentTemplate.toolNames.includes(toolName32))));
32448
+ const defs = import_lodash16.cloneDeep(Object.fromEntries(Object.entries(fileContext.customToolDefinitions).filter(([toolName39]) => agentTemplate.toolNames.includes(toolName39))));
31426
32449
  return getMCPToolData({
31427
32450
  ...params2,
31428
32451
  toolNames: agentTemplate.toolNames,
@@ -33253,8 +34276,8 @@ class Client extends Protocol {
33253
34276
  }
33254
34277
  }
33255
34278
  }
33256
- getToolOutputValidator(toolName32) {
33257
- return this._cachedToolOutputValidators.get(toolName32);
34279
+ getToolOutputValidator(toolName39) {
34280
+ return this._cachedToolOutputValidators.get(toolName39);
33258
34281
  }
33259
34282
  async listTools(params2, options) {
33260
34283
  const result = await this.request({ method: "tools/list", params: params2 }, ListToolsResultSchema, options);
@@ -35226,7 +36249,7 @@ var getCiEnv = () => ({
35226
36249
  var ciEnv = getCiEnv();
35227
36250
 
35228
36251
  // src/impl/database.ts
35229
- var import_v461 = __toESM(require("zod/v4"));
36252
+ var import_v468 = __toESM(require("zod/v4"));
35230
36253
 
35231
36254
  // src/constants.ts
35232
36255
  var LEVELCODE_BINARY = "levelcode";
@@ -35392,8 +36415,8 @@ var RECONNECTION_RETRY_DELAY_MS = 500;
35392
36415
 
35393
36416
  // src/impl/database.ts
35394
36417
  var userInfoCache = {};
35395
- var agentsResponseSchema = import_v461.default.object({
35396
- version: import_v461.default.string(),
36418
+ var agentsResponseSchema = import_v468.default.object({
36419
+ version: import_v468.default.string(),
35397
36420
  data: DynamicAgentTemplateSchema
35398
36421
  });
35399
36422
  async function fetchWithRetry(url, options, logger2) {
@@ -36132,30 +37155,30 @@ function loadApiKey({
36132
37155
  apiKey,
36133
37156
  environmentVariableName,
36134
37157
  apiKeyParameterName = "apiKey",
36135
- description: description31
37158
+ description: description38
36136
37159
  }) {
36137
37160
  if (typeof apiKey === "string") {
36138
37161
  return apiKey;
36139
37162
  }
36140
37163
  if (apiKey != null) {
36141
37164
  throw new LoadAPIKeyError({
36142
- message: `${description31} API key must be a string.`
37165
+ message: `${description38} API key must be a string.`
36143
37166
  });
36144
37167
  }
36145
37168
  if (typeof process === "undefined") {
36146
37169
  throw new LoadAPIKeyError({
36147
- message: `${description31} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`
37170
+ message: `${description38} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`
36148
37171
  });
36149
37172
  }
36150
37173
  apiKey = process.env[environmentVariableName];
36151
37174
  if (apiKey == null) {
36152
37175
  throw new LoadAPIKeyError({
36153
- message: `${description31} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`
37176
+ message: `${description38} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`
36154
37177
  });
36155
37178
  }
36156
37179
  if (typeof apiKey !== "string") {
36157
37180
  throw new LoadAPIKeyError({
36158
- message: `${description31} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`
37181
+ message: `${description38} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`
36159
37182
  });
36160
37183
  }
36161
37184
  return apiKey;
@@ -36541,7 +37564,7 @@ function withoutTrailingSlash(url) {
36541
37564
  }
36542
37565
 
36543
37566
  // ../packages/internal/src/openai-compatible/chat/openai-compatible-chat-language-model.ts
36544
- var import_v464 = require("zod/v4");
37567
+ var import_v471 = require("zod/v4");
36545
37568
 
36546
37569
  // ../packages/internal/src/openai-compatible/chat/convert-to-openai-compatible-chat-messages.ts
36547
37570
  function getOpenAIMetadata(message) {
@@ -36684,21 +37707,21 @@ function mapOpenAICompatibleFinishReason(finishReason) {
36684
37707
  }
36685
37708
 
36686
37709
  // ../packages/internal/src/openai-compatible/chat/openai-compatible-chat-options.ts
36687
- var import_v462 = require("zod/v4");
36688
- var openaiCompatibleProviderOptions = import_v462.z.object({
36689
- user: import_v462.z.string().optional(),
36690
- reasoningEffort: import_v462.z.string().optional(),
36691
- textVerbosity: import_v462.z.string().optional()
37710
+ var import_v469 = require("zod/v4");
37711
+ var openaiCompatibleProviderOptions = import_v469.z.object({
37712
+ user: import_v469.z.string().optional(),
37713
+ reasoningEffort: import_v469.z.string().optional(),
37714
+ textVerbosity: import_v469.z.string().optional()
36692
37715
  });
36693
37716
 
36694
37717
  // ../packages/internal/src/openai-compatible/openai-compatible-error.ts
36695
- var import_v463 = require("zod/v4");
36696
- var openaiCompatibleErrorDataSchema = import_v463.z.object({
36697
- error: import_v463.z.object({
36698
- message: import_v463.z.string(),
36699
- type: import_v463.z.string().nullish(),
36700
- param: import_v463.z.any().nullish(),
36701
- code: import_v463.z.union([import_v463.z.string(), import_v463.z.number()]).nullish()
37718
+ var import_v470 = require("zod/v4");
37719
+ var openaiCompatibleErrorDataSchema = import_v470.z.object({
37720
+ error: import_v470.z.object({
37721
+ message: import_v470.z.string(),
37722
+ type: import_v470.z.string().nullish(),
37723
+ param: import_v470.z.any().nullish(),
37724
+ code: import_v470.z.union([import_v470.z.string(), import_v470.z.number()]).nullish()
36702
37725
  })
36703
37726
  });
36704
37727
  var defaultOpenAICompatibleErrorStructure = {
@@ -37184,62 +38207,62 @@ class OpenAICompatibleChatLanguageModel {
37184
38207
  };
37185
38208
  }
37186
38209
  }
37187
- var openaiCompatibleTokenUsageSchema = import_v464.z.object({
37188
- prompt_tokens: import_v464.z.number().nullish(),
37189
- completion_tokens: import_v464.z.number().nullish(),
37190
- total_tokens: import_v464.z.number().nullish(),
37191
- prompt_tokens_details: import_v464.z.object({
37192
- cached_tokens: import_v464.z.number().nullish()
38210
+ var openaiCompatibleTokenUsageSchema = import_v471.z.object({
38211
+ prompt_tokens: import_v471.z.number().nullish(),
38212
+ completion_tokens: import_v471.z.number().nullish(),
38213
+ total_tokens: import_v471.z.number().nullish(),
38214
+ prompt_tokens_details: import_v471.z.object({
38215
+ cached_tokens: import_v471.z.number().nullish()
37193
38216
  }).nullish(),
37194
- completion_tokens_details: import_v464.z.object({
37195
- reasoning_tokens: import_v464.z.number().nullish(),
37196
- accepted_prediction_tokens: import_v464.z.number().nullish(),
37197
- rejected_prediction_tokens: import_v464.z.number().nullish()
38217
+ completion_tokens_details: import_v471.z.object({
38218
+ reasoning_tokens: import_v471.z.number().nullish(),
38219
+ accepted_prediction_tokens: import_v471.z.number().nullish(),
38220
+ rejected_prediction_tokens: import_v471.z.number().nullish()
37198
38221
  }).nullish()
37199
38222
  }).nullish();
37200
- var OpenAICompatibleChatResponseSchema = import_v464.z.object({
37201
- id: import_v464.z.string().nullish(),
37202
- created: import_v464.z.number().nullish(),
37203
- model: import_v464.z.string().nullish(),
37204
- choices: import_v464.z.array(import_v464.z.object({
37205
- message: import_v464.z.object({
37206
- role: import_v464.z.literal("assistant").nullish(),
37207
- content: import_v464.z.string().nullish(),
37208
- reasoning_content: import_v464.z.string().nullish(),
37209
- reasoning: import_v464.z.string().nullish(),
37210
- tool_calls: import_v464.z.array(import_v464.z.object({
37211
- id: import_v464.z.string().nullish(),
37212
- function: import_v464.z.object({
37213
- name: import_v464.z.string(),
37214
- arguments: import_v464.z.string()
38223
+ var OpenAICompatibleChatResponseSchema = import_v471.z.object({
38224
+ id: import_v471.z.string().nullish(),
38225
+ created: import_v471.z.number().nullish(),
38226
+ model: import_v471.z.string().nullish(),
38227
+ choices: import_v471.z.array(import_v471.z.object({
38228
+ message: import_v471.z.object({
38229
+ role: import_v471.z.literal("assistant").nullish(),
38230
+ content: import_v471.z.string().nullish(),
38231
+ reasoning_content: import_v471.z.string().nullish(),
38232
+ reasoning: import_v471.z.string().nullish(),
38233
+ tool_calls: import_v471.z.array(import_v471.z.object({
38234
+ id: import_v471.z.string().nullish(),
38235
+ function: import_v471.z.object({
38236
+ name: import_v471.z.string(),
38237
+ arguments: import_v471.z.string()
37215
38238
  })
37216
38239
  })).nullish()
37217
38240
  }),
37218
- finish_reason: import_v464.z.string().nullish()
38241
+ finish_reason: import_v471.z.string().nullish()
37219
38242
  })),
37220
38243
  usage: openaiCompatibleTokenUsageSchema
37221
38244
  });
37222
- var createOpenAICompatibleChatChunkSchema = (errorSchema) => import_v464.z.union([
37223
- import_v464.z.object({
37224
- id: import_v464.z.string().nullish(),
37225
- created: import_v464.z.number().nullish(),
37226
- model: import_v464.z.string().nullish(),
37227
- choices: import_v464.z.array(import_v464.z.object({
37228
- delta: import_v464.z.object({
37229
- role: import_v464.z.enum(["assistant"]).nullish(),
37230
- content: import_v464.z.string().nullish(),
37231
- reasoning_content: import_v464.z.string().nullish(),
37232
- reasoning: import_v464.z.string().nullish(),
37233
- tool_calls: import_v464.z.array(import_v464.z.object({
37234
- index: import_v464.z.number(),
37235
- id: import_v464.z.string().nullish(),
37236
- function: import_v464.z.object({
37237
- name: import_v464.z.string().nullish(),
37238
- arguments: import_v464.z.string().nullish()
38245
+ var createOpenAICompatibleChatChunkSchema = (errorSchema) => import_v471.z.union([
38246
+ import_v471.z.object({
38247
+ id: import_v471.z.string().nullish(),
38248
+ created: import_v471.z.number().nullish(),
38249
+ model: import_v471.z.string().nullish(),
38250
+ choices: import_v471.z.array(import_v471.z.object({
38251
+ delta: import_v471.z.object({
38252
+ role: import_v471.z.enum(["assistant"]).nullish(),
38253
+ content: import_v471.z.string().nullish(),
38254
+ reasoning_content: import_v471.z.string().nullish(),
38255
+ reasoning: import_v471.z.string().nullish(),
38256
+ tool_calls: import_v471.z.array(import_v471.z.object({
38257
+ index: import_v471.z.number(),
38258
+ id: import_v471.z.string().nullish(),
38259
+ function: import_v471.z.object({
38260
+ name: import_v471.z.string().nullish(),
38261
+ arguments: import_v471.z.string().nullish()
37239
38262
  })
37240
38263
  })).nullish()
37241
38264
  }).nullish(),
37242
- finish_reason: import_v464.z.string().nullish()
38265
+ finish_reason: import_v471.z.string().nullish()
37243
38266
  })),
37244
38267
  usage: openaiCompatibleTokenUsageSchema
37245
38268
  }),
@@ -37280,30 +38303,30 @@ function getFileUrl({
37280
38303
  }
37281
38304
 
37282
38305
  // ../packages/internal/src/openrouter-ai-sdk/schemas/reasoning-details.ts
37283
- var import_v465 = require("zod/v4");
37284
- var ReasoningDetailSummarySchema = import_v465.z.object({
37285
- type: import_v465.z.literal("reasoning.summary" /* Summary */),
37286
- summary: import_v465.z.string()
38306
+ var import_v472 = require("zod/v4");
38307
+ var ReasoningDetailSummarySchema = import_v472.z.object({
38308
+ type: import_v472.z.literal("reasoning.summary" /* Summary */),
38309
+ summary: import_v472.z.string()
37287
38310
  });
37288
- var ReasoningDetailEncryptedSchema = import_v465.z.object({
37289
- type: import_v465.z.literal("reasoning.encrypted" /* Encrypted */),
37290
- data: import_v465.z.string()
38311
+ var ReasoningDetailEncryptedSchema = import_v472.z.object({
38312
+ type: import_v472.z.literal("reasoning.encrypted" /* Encrypted */),
38313
+ data: import_v472.z.string()
37291
38314
  });
37292
- var ReasoningDetailTextSchema = import_v465.z.object({
37293
- type: import_v465.z.literal("reasoning.text" /* Text */),
37294
- text: import_v465.z.string().nullish(),
37295
- signature: import_v465.z.string().nullish()
38315
+ var ReasoningDetailTextSchema = import_v472.z.object({
38316
+ type: import_v472.z.literal("reasoning.text" /* Text */),
38317
+ text: import_v472.z.string().nullish(),
38318
+ signature: import_v472.z.string().nullish()
37296
38319
  });
37297
- var ReasoningDetailUnionSchema = import_v465.z.union([
38320
+ var ReasoningDetailUnionSchema = import_v472.z.union([
37298
38321
  ReasoningDetailSummarySchema,
37299
38322
  ReasoningDetailEncryptedSchema,
37300
38323
  ReasoningDetailTextSchema
37301
38324
  ]);
37302
- var ReasoningDetailsWithUnknownSchema = import_v465.z.union([
38325
+ var ReasoningDetailsWithUnknownSchema = import_v472.z.union([
37303
38326
  ReasoningDetailUnionSchema,
37304
- import_v465.z.unknown().transform(() => null)
38327
+ import_v472.z.unknown().transform(() => null)
37305
38328
  ]);
37306
- var ReasoningDetailArraySchema = import_v465.z.array(ReasoningDetailsWithUnknownSchema).transform((d) => d.filter((d2) => !!d2));
38329
+ var ReasoningDetailArraySchema = import_v472.z.array(ReasoningDetailsWithUnknownSchema).transform((d) => d.filter((d2) => !!d2));
37307
38330
 
37308
38331
  // ../packages/internal/src/openrouter-ai-sdk/chat/convert-to-openrouter-chat-messages.ts
37309
38332
  function getCacheControl(providerMetadata) {
@@ -37460,15 +38483,15 @@ function getToolResultContent(input) {
37460
38483
  }
37461
38484
 
37462
38485
  // ../packages/internal/src/openrouter-ai-sdk/chat/get-tool-choice.ts
37463
- var import_v466 = require("zod/v4");
37464
- var ChatCompletionToolChoiceSchema = import_v466.z.union([
37465
- import_v466.z.literal("auto"),
37466
- import_v466.z.literal("none"),
37467
- import_v466.z.literal("required"),
37468
- import_v466.z.object({
37469
- type: import_v466.z.literal("function"),
37470
- function: import_v466.z.object({
37471
- name: import_v466.z.string()
38486
+ var import_v473 = require("zod/v4");
38487
+ var ChatCompletionToolChoiceSchema = import_v473.z.union([
38488
+ import_v473.z.literal("auto"),
38489
+ import_v473.z.literal("none"),
38490
+ import_v473.z.literal("required"),
38491
+ import_v473.z.object({
38492
+ type: import_v473.z.literal("function"),
38493
+ function: import_v473.z.object({
38494
+ name: import_v473.z.string()
37472
38495
  })
37473
38496
  })
37474
38497
  ]);
@@ -37491,16 +38514,16 @@ function getChatCompletionToolChoice(toolChoice) {
37491
38514
  }
37492
38515
 
37493
38516
  // ../packages/internal/src/openrouter-ai-sdk/chat/schemas.ts
37494
- var import_v468 = require("zod/v4");
38517
+ var import_v475 = require("zod/v4");
37495
38518
 
37496
38519
  // ../packages/internal/src/openrouter-ai-sdk/schemas/error-response.ts
37497
- var import_v467 = require("zod/v4");
37498
- var OpenRouterErrorResponseSchema = import_v467.z.object({
37499
- error: import_v467.z.object({
37500
- code: import_v467.z.union([import_v467.z.string(), import_v467.z.number()]).nullable().optional().default(null),
37501
- message: import_v467.z.string(),
37502
- type: import_v467.z.string().nullable().optional().default(null),
37503
- param: import_v467.z.any().nullable().optional().default(null)
38520
+ var import_v474 = require("zod/v4");
38521
+ var OpenRouterErrorResponseSchema = import_v474.z.object({
38522
+ error: import_v474.z.object({
38523
+ code: import_v474.z.union([import_v474.z.string(), import_v474.z.number()]).nullable().optional().default(null),
38524
+ message: import_v474.z.string(),
38525
+ type: import_v474.z.string().nullable().optional().default(null),
38526
+ param: import_v474.z.any().nullable().optional().default(null)
37504
38527
  })
37505
38528
  });
37506
38529
  var openrouterFailedResponseHandler = createJsonErrorResponseHandler({
@@ -37509,106 +38532,106 @@ var openrouterFailedResponseHandler = createJsonErrorResponseHandler({
37509
38532
  });
37510
38533
 
37511
38534
  // ../packages/internal/src/openrouter-ai-sdk/chat/schemas.ts
37512
- var OpenRouterChatCompletionBaseResponseSchema = import_v468.z.object({
37513
- id: import_v468.z.string().optional(),
37514
- model: import_v468.z.string().optional(),
37515
- provider: import_v468.z.string().optional(),
37516
- usage: import_v468.z.object({
37517
- prompt_tokens: import_v468.z.number(),
37518
- prompt_tokens_details: import_v468.z.object({
37519
- cached_tokens: import_v468.z.number()
38535
+ var OpenRouterChatCompletionBaseResponseSchema = import_v475.z.object({
38536
+ id: import_v475.z.string().optional(),
38537
+ model: import_v475.z.string().optional(),
38538
+ provider: import_v475.z.string().optional(),
38539
+ usage: import_v475.z.object({
38540
+ prompt_tokens: import_v475.z.number(),
38541
+ prompt_tokens_details: import_v475.z.object({
38542
+ cached_tokens: import_v475.z.number()
37520
38543
  }).nullish(),
37521
- completion_tokens: import_v468.z.number(),
37522
- completion_tokens_details: import_v468.z.object({
37523
- reasoning_tokens: import_v468.z.number()
38544
+ completion_tokens: import_v475.z.number(),
38545
+ completion_tokens_details: import_v475.z.object({
38546
+ reasoning_tokens: import_v475.z.number()
37524
38547
  }).nullish(),
37525
- total_tokens: import_v468.z.number(),
37526
- cost: import_v468.z.number().optional(),
37527
- cost_details: import_v468.z.object({
37528
- upstream_inference_cost: import_v468.z.number().nullish()
38548
+ total_tokens: import_v475.z.number(),
38549
+ cost: import_v475.z.number().optional(),
38550
+ cost_details: import_v475.z.object({
38551
+ upstream_inference_cost: import_v475.z.number().nullish()
37529
38552
  }).nullish()
37530
38553
  }).nullish()
37531
38554
  });
37532
38555
  var OpenRouterNonStreamChatCompletionResponseSchema = OpenRouterChatCompletionBaseResponseSchema.extend({
37533
- choices: import_v468.z.array(import_v468.z.object({
37534
- message: import_v468.z.object({
37535
- role: import_v468.z.literal("assistant"),
37536
- content: import_v468.z.string().nullable().optional(),
37537
- reasoning: import_v468.z.string().nullable().optional(),
38556
+ choices: import_v475.z.array(import_v475.z.object({
38557
+ message: import_v475.z.object({
38558
+ role: import_v475.z.literal("assistant"),
38559
+ content: import_v475.z.string().nullable().optional(),
38560
+ reasoning: import_v475.z.string().nullable().optional(),
37538
38561
  reasoning_details: ReasoningDetailArraySchema.nullish(),
37539
- tool_calls: import_v468.z.array(import_v468.z.object({
37540
- id: import_v468.z.string().optional().nullable(),
37541
- type: import_v468.z.literal("function"),
37542
- function: import_v468.z.object({
37543
- name: import_v468.z.string(),
37544
- arguments: import_v468.z.string()
38562
+ tool_calls: import_v475.z.array(import_v475.z.object({
38563
+ id: import_v475.z.string().optional().nullable(),
38564
+ type: import_v475.z.literal("function"),
38565
+ function: import_v475.z.object({
38566
+ name: import_v475.z.string(),
38567
+ arguments: import_v475.z.string()
37545
38568
  })
37546
38569
  })).optional(),
37547
- annotations: import_v468.z.array(import_v468.z.object({
37548
- type: import_v468.z.enum(["url_citation"]),
37549
- url_citation: import_v468.z.object({
37550
- end_index: import_v468.z.number(),
37551
- start_index: import_v468.z.number(),
37552
- title: import_v468.z.string(),
37553
- url: import_v468.z.string(),
37554
- content: import_v468.z.string().optional()
38570
+ annotations: import_v475.z.array(import_v475.z.object({
38571
+ type: import_v475.z.enum(["url_citation"]),
38572
+ url_citation: import_v475.z.object({
38573
+ end_index: import_v475.z.number(),
38574
+ start_index: import_v475.z.number(),
38575
+ title: import_v475.z.string(),
38576
+ url: import_v475.z.string(),
38577
+ content: import_v475.z.string().optional()
37555
38578
  })
37556
38579
  })).nullish()
37557
38580
  }),
37558
- index: import_v468.z.number().nullish(),
37559
- logprobs: import_v468.z.object({
37560
- content: import_v468.z.array(import_v468.z.object({
37561
- token: import_v468.z.string(),
37562
- logprob: import_v468.z.number(),
37563
- top_logprobs: import_v468.z.array(import_v468.z.object({
37564
- token: import_v468.z.string(),
37565
- logprob: import_v468.z.number()
38581
+ index: import_v475.z.number().nullish(),
38582
+ logprobs: import_v475.z.object({
38583
+ content: import_v475.z.array(import_v475.z.object({
38584
+ token: import_v475.z.string(),
38585
+ logprob: import_v475.z.number(),
38586
+ top_logprobs: import_v475.z.array(import_v475.z.object({
38587
+ token: import_v475.z.string(),
38588
+ logprob: import_v475.z.number()
37566
38589
  }))
37567
38590
  })).nullable()
37568
38591
  }).nullable().optional(),
37569
- finish_reason: import_v468.z.string().optional().nullable()
38592
+ finish_reason: import_v475.z.string().optional().nullable()
37570
38593
  }))
37571
38594
  });
37572
- var OpenRouterStreamChatCompletionChunkSchema = import_v468.z.union([
38595
+ var OpenRouterStreamChatCompletionChunkSchema = import_v475.z.union([
37573
38596
  OpenRouterChatCompletionBaseResponseSchema.extend({
37574
- choices: import_v468.z.array(import_v468.z.object({
37575
- delta: import_v468.z.object({
37576
- role: import_v468.z.enum(["assistant"]).optional(),
37577
- content: import_v468.z.string().nullish(),
37578
- reasoning: import_v468.z.string().nullish().optional(),
38597
+ choices: import_v475.z.array(import_v475.z.object({
38598
+ delta: import_v475.z.object({
38599
+ role: import_v475.z.enum(["assistant"]).optional(),
38600
+ content: import_v475.z.string().nullish(),
38601
+ reasoning: import_v475.z.string().nullish().optional(),
37579
38602
  reasoning_details: ReasoningDetailArraySchema.nullish(),
37580
- tool_calls: import_v468.z.array(import_v468.z.object({
37581
- index: import_v468.z.number().nullish(),
37582
- id: import_v468.z.string().nullish(),
37583
- type: import_v468.z.literal("function").optional(),
37584
- function: import_v468.z.object({
37585
- name: import_v468.z.string().nullish(),
37586
- arguments: import_v468.z.string().nullish()
38603
+ tool_calls: import_v475.z.array(import_v475.z.object({
38604
+ index: import_v475.z.number().nullish(),
38605
+ id: import_v475.z.string().nullish(),
38606
+ type: import_v475.z.literal("function").optional(),
38607
+ function: import_v475.z.object({
38608
+ name: import_v475.z.string().nullish(),
38609
+ arguments: import_v475.z.string().nullish()
37587
38610
  })
37588
38611
  })).nullish(),
37589
- annotations: import_v468.z.array(import_v468.z.object({
37590
- type: import_v468.z.enum(["url_citation"]),
37591
- url_citation: import_v468.z.object({
37592
- end_index: import_v468.z.number(),
37593
- start_index: import_v468.z.number(),
37594
- title: import_v468.z.string(),
37595
- url: import_v468.z.string(),
37596
- content: import_v468.z.string().optional()
38612
+ annotations: import_v475.z.array(import_v475.z.object({
38613
+ type: import_v475.z.enum(["url_citation"]),
38614
+ url_citation: import_v475.z.object({
38615
+ end_index: import_v475.z.number(),
38616
+ start_index: import_v475.z.number(),
38617
+ title: import_v475.z.string(),
38618
+ url: import_v475.z.string(),
38619
+ content: import_v475.z.string().optional()
37597
38620
  })
37598
38621
  })).nullish()
37599
38622
  }).nullish(),
37600
- logprobs: import_v468.z.object({
37601
- content: import_v468.z.array(import_v468.z.object({
37602
- token: import_v468.z.string(),
37603
- logprob: import_v468.z.number(),
37604
- top_logprobs: import_v468.z.array(import_v468.z.object({
37605
- token: import_v468.z.string(),
37606
- logprob: import_v468.z.number()
38623
+ logprobs: import_v475.z.object({
38624
+ content: import_v475.z.array(import_v475.z.object({
38625
+ token: import_v475.z.string(),
38626
+ logprob: import_v475.z.number(),
38627
+ top_logprobs: import_v475.z.array(import_v475.z.object({
38628
+ token: import_v475.z.string(),
38629
+ logprob: import_v475.z.number()
37607
38630
  }))
37608
38631
  })).nullable()
37609
38632
  }).nullish(),
37610
- finish_reason: import_v468.z.string().nullable().optional(),
37611
- index: import_v468.z.number().nullish()
38633
+ finish_reason: import_v475.z.string().nullable().optional(),
38634
+ index: import_v475.z.number().nullish()
37612
38635
  }))
37613
38636
  }),
37614
38637
  OpenRouterErrorResponseSchema
@@ -38309,34 +39332,34 @@ ${assistantMessage2}
38309
39332
  }
38310
39333
 
38311
39334
  // ../packages/internal/src/openrouter-ai-sdk/completion/schemas.ts
38312
- var import_v469 = require("zod/v4");
38313
- var OpenRouterCompletionChunkSchema = import_v469.z.union([
38314
- import_v469.z.object({
38315
- id: import_v469.z.string().optional(),
38316
- model: import_v469.z.string().optional(),
38317
- choices: import_v469.z.array(import_v469.z.object({
38318
- text: import_v469.z.string(),
38319
- reasoning: import_v469.z.string().nullish().optional(),
39335
+ var import_v476 = require("zod/v4");
39336
+ var OpenRouterCompletionChunkSchema = import_v476.z.union([
39337
+ import_v476.z.object({
39338
+ id: import_v476.z.string().optional(),
39339
+ model: import_v476.z.string().optional(),
39340
+ choices: import_v476.z.array(import_v476.z.object({
39341
+ text: import_v476.z.string(),
39342
+ reasoning: import_v476.z.string().nullish().optional(),
38320
39343
  reasoning_details: ReasoningDetailArraySchema.nullish(),
38321
- finish_reason: import_v469.z.string().nullish(),
38322
- index: import_v469.z.number().nullish(),
38323
- logprobs: import_v469.z.object({
38324
- tokens: import_v469.z.array(import_v469.z.string()),
38325
- token_logprobs: import_v469.z.array(import_v469.z.number()),
38326
- top_logprobs: import_v469.z.array(import_v469.z.record(import_v469.z.string(), import_v469.z.number())).nullable()
39344
+ finish_reason: import_v476.z.string().nullish(),
39345
+ index: import_v476.z.number().nullish(),
39346
+ logprobs: import_v476.z.object({
39347
+ tokens: import_v476.z.array(import_v476.z.string()),
39348
+ token_logprobs: import_v476.z.array(import_v476.z.number()),
39349
+ top_logprobs: import_v476.z.array(import_v476.z.record(import_v476.z.string(), import_v476.z.number())).nullable()
38327
39350
  }).nullable().optional()
38328
39351
  })),
38329
- usage: import_v469.z.object({
38330
- prompt_tokens: import_v469.z.number(),
38331
- prompt_tokens_details: import_v469.z.object({
38332
- cached_tokens: import_v469.z.number()
39352
+ usage: import_v476.z.object({
39353
+ prompt_tokens: import_v476.z.number(),
39354
+ prompt_tokens_details: import_v476.z.object({
39355
+ cached_tokens: import_v476.z.number()
38333
39356
  }).nullish(),
38334
- completion_tokens: import_v469.z.number(),
38335
- completion_tokens_details: import_v469.z.object({
38336
- reasoning_tokens: import_v469.z.number()
39357
+ completion_tokens: import_v476.z.number(),
39358
+ completion_tokens_details: import_v476.z.object({
39359
+ reasoning_tokens: import_v476.z.number()
38337
39360
  }).nullish(),
38338
- total_tokens: import_v469.z.number(),
38339
- cost: import_v469.z.number().optional()
39361
+ total_tokens: import_v476.z.number(),
39362
+ cost: import_v476.z.number().optional()
38340
39363
  }).nullish()
38341
39364
  }),
38342
39365
  OpenRouterErrorResponseSchema
@@ -38578,7 +39601,7 @@ function createOpenRouter(options = {}) {
38578
39601
  });
38579
39602
  const createChatModel = (modelId, settings = {}) => new OpenRouterChatLanguageModel(modelId, settings, {
38580
39603
  provider: "openrouter.chat",
38581
- url: ({ path: path4 }) => `${baseURL}${path4}`,
39604
+ url: ({ path: path6 }) => `${baseURL}${path6}`,
38582
39605
  headers: getHeaders,
38583
39606
  compatibility,
38584
39607
  fetch: options.fetch,
@@ -38586,7 +39609,7 @@ function createOpenRouter(options = {}) {
38586
39609
  });
38587
39610
  const createCompletionModel = (modelId, settings = {}) => new OpenRouterCompletionLanguageModel(modelId, settings, {
38588
39611
  provider: "openrouter.completion",
38589
- url: ({ path: path4 }) => `${baseURL}${path4}`,
39612
+ url: ({ path: path6 }) => `${baseURL}${path6}`,
38590
39613
  headers: getHeaders,
38591
39614
  compatibility,
38592
39615
  fetch: options.fetch,
@@ -38617,25 +39640,25 @@ var import_node_path = __toESM(require("node:path"));
38617
39640
  var import_os = __toESM(require("os"));
38618
39641
 
38619
39642
  // ../common/src/util/credentials.ts
38620
- var import_v470 = require("zod/v4");
38621
- var userSchema = import_v470.z.object({
38622
- id: import_v470.z.string(),
38623
- email: import_v470.z.string(),
38624
- name: import_v470.z.string().nullable(),
38625
- authToken: import_v470.z.string(),
38626
- fingerprintId: import_v470.z.string(),
38627
- fingerprintHash: import_v470.z.string()
39643
+ var import_v477 = require("zod/v4");
39644
+ var userSchema = import_v477.z.object({
39645
+ id: import_v477.z.string(),
39646
+ email: import_v477.z.string(),
39647
+ name: import_v477.z.string().nullable(),
39648
+ authToken: import_v477.z.string(),
39649
+ fingerprintId: import_v477.z.string(),
39650
+ fingerprintHash: import_v477.z.string()
38628
39651
  });
38629
39652
 
38630
39653
  // src/credentials.ts
38631
- var import_v471 = require("zod/v4");
38632
- var claudeOAuthSchema = import_v471.z.object({
38633
- accessToken: import_v471.z.string(),
38634
- refreshToken: import_v471.z.string(),
38635
- expiresAt: import_v471.z.number(),
38636
- connectedAt: import_v471.z.number()
39654
+ var import_v478 = require("zod/v4");
39655
+ var claudeOAuthSchema = import_v478.z.object({
39656
+ accessToken: import_v478.z.string(),
39657
+ refreshToken: import_v478.z.string(),
39658
+ expiresAt: import_v478.z.number(),
39659
+ connectedAt: import_v478.z.number()
38637
39660
  });
38638
- var credentialsFileSchema = import_v471.z.object({
39661
+ var credentialsFileSchema = import_v478.z.object({
38639
39662
  default: userSchema.optional(),
38640
39663
  claudeOAuth: claudeOAuthSchema.optional()
38641
39664
  });
@@ -39125,17 +40148,17 @@ async function* promptAiSdkStream(params2) {
39125
40148
  }),
39126
40149
  experimental_repairToolCall: async ({ toolCall, tools, error }) => {
39127
40150
  const { spawnableAgents = [], localAgentTemplates = {} } = params2;
39128
- const toolName32 = toolCall.toolName;
40151
+ const toolName39 = toolCall.toolName;
39129
40152
  if (import_ai3.NoSuchToolError.isInstance(error) && "spawn_agents" in tools) {
39130
- const toolNameWithHyphens = toolName32.replace(/_/g, "-");
40153
+ const toolNameWithHyphens = toolName39.replace(/_/g, "-");
39131
40154
  const matchingAgentId = spawnableAgents.find((agentId) => {
39132
40155
  const withoutVersion = agentId.split("@")[0];
39133
40156
  const parts = withoutVersion.split("/");
39134
40157
  const agentName = parts[parts.length - 1];
39135
- return agentName === toolName32 || agentName === toolNameWithHyphens || agentId === toolName32;
40158
+ return agentName === toolName39 || agentName === toolNameWithHyphens || agentId === toolName39;
39136
40159
  });
39137
40160
  const isSpawnableAgent = matchingAgentId !== undefined;
39138
- const isLocalAgent = toolName32 in localAgentTemplates || toolNameWithHyphens in localAgentTemplates;
40161
+ const isLocalAgent = toolName39 in localAgentTemplates || toolNameWithHyphens in localAgentTemplates;
39139
40162
  if (isSpawnableAgent || isLocalAgent) {
39140
40163
  const deepParseJson = (value) => {
39141
40164
  if (typeof value === "string") {
@@ -39159,7 +40182,7 @@ async function* promptAiSdkStream(params2) {
39159
40182
  } catch {}
39160
40183
  const prompt2 = typeof input.prompt === "string" ? input.prompt : undefined;
39161
40184
  const agentParams = Object.fromEntries(Object.entries(input).filter(([key, value]) => !(key === "prompt" && typeof value === "string")));
39162
- const correctedAgentType = matchingAgentId ?? (toolNameWithHyphens in localAgentTemplates ? toolNameWithHyphens : toolName32);
40185
+ const correctedAgentType = matchingAgentId ?? (toolNameWithHyphens in localAgentTemplates ? toolNameWithHyphens : toolName39);
39163
40186
  const spawnAgentsInput = {
39164
40187
  agents: [
39165
40188
  {
@@ -39171,7 +40194,7 @@ async function* promptAiSdkStream(params2) {
39171
40194
  }
39172
40195
  ]
39173
40196
  };
39174
- logger2.info({ originalToolName: toolName32, transformedInput: spawnAgentsInput }, "Transformed agent tool call to spawn_agents");
40197
+ logger2.info({ originalToolName: toolName39, transformedInput: spawnAgentsInput }, "Transformed agent tool call to spawn_agents");
39175
40198
  return {
39176
40199
  ...toolCall,
39177
40200
  toolName: "spawn_agents",
@@ -39180,7 +40203,7 @@ async function* promptAiSdkStream(params2) {
39180
40203
  }
39181
40204
  }
39182
40205
  logger2.info({
39183
- toolName: toolName32,
40206
+ toolName: toolName39,
39184
40207
  errorType: error.name,
39185
40208
  error: error.message
39186
40209
  }, "Tool error - passing through for graceful error handling");
@@ -39462,38 +40485,38 @@ var noopLogger = {
39462
40485
  };
39463
40486
 
39464
40487
  // src/run-state.ts
39465
- var os5 = __toESM(require("os"));
40488
+ var os6 = __toESM(require("os"));
39466
40489
  var import_path8 = __toESM(require("path"));
39467
40490
 
39468
40491
  // ../packages/code-map/src/parse.ts
39469
- var fs4 = __toESM(require("fs"));
39470
- var path8 = __toESM(require("path"));
40492
+ var fs11 = __toESM(require("fs"));
40493
+ var path10 = __toESM(require("path"));
39471
40494
 
39472
40495
  // ../packages/code-map/src/languages.ts
39473
- var fs3 = __toESM(require("fs"));
39474
- var path7 = __toESM(require("path"));
40496
+ var fs10 = __toESM(require("fs"));
40497
+ var path9 = __toESM(require("path"));
39475
40498
  var import_web_tree_sitter2 = require("web-tree-sitter");
39476
40499
 
39477
40500
  // ../packages/code-map/src/init-node.ts
39478
- var fs2 = __toESM(require("fs"));
39479
- var path6 = __toESM(require("path"));
40501
+ var fs9 = __toESM(require("fs"));
40502
+ var path8 = __toESM(require("path"));
39480
40503
  var import_web_tree_sitter = require("web-tree-sitter");
39481
40504
  async function initTreeSitterForNode() {
39482
40505
  await import_web_tree_sitter.Parser.init({
39483
40506
  locateFile: (name14, scriptDir) => {
39484
40507
  if (name14 === "tree-sitter.wasm") {
39485
- const fallback = path6.join(scriptDir, name14);
39486
- if (fs2.existsSync(fallback)) {
40508
+ const fallback = path8.join(scriptDir, name14);
40509
+ if (fs9.existsSync(fallback)) {
39487
40510
  return fallback;
39488
40511
  }
39489
- const pkgDir = path6.dirname(require.resolve("web-tree-sitter"));
39490
- const wasm = path6.join(pkgDir, "tree-sitter.wasm");
39491
- if (fs2.existsSync(wasm)) {
40512
+ const pkgDir = path8.dirname(require.resolve("web-tree-sitter"));
40513
+ const wasm = path8.join(pkgDir, "tree-sitter.wasm");
40514
+ if (fs9.existsSync(wasm)) {
39492
40515
  return wasm;
39493
40516
  }
39494
40517
  throw new Error(`Internal error: web-tree-sitter/tree-sitter.wasm not found at ${wasm}. Ensure the file is included in your deployment bundle.`);
39495
40518
  }
39496
- return path6.join(scriptDir, name14);
40519
+ return path8.join(scriptDir, name14);
39497
40520
  }
39498
40521
  });
39499
40522
  }
@@ -39833,23 +40856,23 @@ function getWasmDir() {
39833
40856
  function resolveWasmPath(wasmFileName) {
39834
40857
  const customWasmDirPath = getWasmDir();
39835
40858
  if (customWasmDirPath) {
39836
- return path7.join(customWasmDirPath, wasmFileName);
40859
+ return path9.join(customWasmDirPath, wasmFileName);
39837
40860
  }
39838
40861
  const envWasmDir = process.env.LEVELCODE_WASM_DIR;
39839
40862
  if (envWasmDir) {
39840
- return path7.join(envWasmDir, wasmFileName);
40863
+ return path9.join(envWasmDir, wasmFileName);
39841
40864
  }
39842
40865
  const moduleDir = (() => {
39843
- const dirname4 = getDirnameDynamically();
39844
- if (typeof dirname4 !== "undefined") {
39845
- return dirname4;
40866
+ const dirname5 = getDirnameDynamically();
40867
+ if (typeof dirname5 !== "undefined") {
40868
+ return dirname5;
39846
40869
  }
39847
40870
  return process.cwd();
39848
40871
  })();
39849
40872
  const possiblePaths = [
39850
- path7.join(moduleDir, "..", "wasm", wasmFileName),
39851
- path7.join(moduleDir, "wasm", wasmFileName),
39852
- path7.join(process.cwd(), "dist", "wasm", wasmFileName)
40873
+ path9.join(moduleDir, "..", "wasm", wasmFileName),
40874
+ path9.join(moduleDir, "wasm", wasmFileName),
40875
+ path9.join(process.cwd(), "dist", "wasm", wasmFileName)
39853
40876
  ];
39854
40877
  for (const wasmPath of possiblePaths) {
39855
40878
  try {
@@ -39893,7 +40916,7 @@ class UnifiedLanguageLoader {
39893
40916
  }
39894
40917
  }
39895
40918
  function findLanguageConfigByExtension(filePath) {
39896
- const ext = path7.extname(filePath);
40919
+ const ext = path9.extname(filePath);
39897
40920
  return languageTable.find((c) => c.extensions.includes(ext));
39898
40921
  }
39899
40922
  async function createLanguageConfig(filePath, runtimeLoader) {
@@ -39907,7 +40930,7 @@ async function createLanguageConfig(filePath, runtimeLoader) {
39907
40930
  const lang = await runtimeLoader.loadLanguage(cfg.wasmFile);
39908
40931
  const parser = new import_web_tree_sitter2.Parser;
39909
40932
  parser.setLanguage(lang);
39910
- const queryContent = path7.isAbsolute(cfg.queryPathOrContent) ? fs3.readFileSync(cfg.queryPathOrContent, "utf8") : cfg.queryPathOrContent;
40933
+ const queryContent = path9.isAbsolute(cfg.queryPathOrContent) ? fs10.readFileSync(cfg.queryPathOrContent, "utf8") : cfg.queryPathOrContent;
39911
40934
  cfg.language = lang;
39912
40935
  cfg.parser = parser;
39913
40936
  cfg.query = new import_web_tree_sitter2.Query(lang, queryContent);
@@ -39939,7 +40962,7 @@ async function getFileTokenScores(projectRoot, filePaths, readFile) {
39939
40962
  const externalCalls = {};
39940
40963
  const fileCallsMap = new Map;
39941
40964
  for (const filePath of filePaths) {
39942
- const fullPath = path8.join(projectRoot, filePath);
40965
+ const fullPath = path10.join(projectRoot, filePath);
39943
40966
  const languageConfig = await getLanguageConfig(fullPath);
39944
40967
  if (languageConfig) {
39945
40968
  let parseResults;
@@ -39951,7 +40974,7 @@ async function getFileTokenScores(projectRoot, filePaths, readFile) {
39951
40974
  const { identifiers, calls, numLines } = parseResults;
39952
40975
  const tokenScoresForFile = {};
39953
40976
  tokenScores[filePath] = tokenScoresForFile;
39954
- const dirs = path8.dirname(fullPath).split(path8.sep);
40977
+ const dirs = path10.dirname(fullPath).split(path10.sep);
39955
40978
  const depth = dirs.length;
39956
40979
  const tokenBaseScore = 0.8 ** depth * Math.sqrt(numLines / (identifiers.length + 1));
39957
40980
  for (const identifier of identifiers) {
@@ -40013,7 +41036,7 @@ async function getFileTokenScores(projectRoot, filePaths, readFile) {
40013
41036
  const endTime = Date.now();
40014
41037
  console.log(`Parsed ${filePaths.length} files in ${endTime - startTime2}ms`);
40015
41038
  try {
40016
- fs4.writeFileSync("../debug/debug-parse.json", JSON.stringify({
41039
+ fs11.writeFileSync("../debug/debug-parse.json", JSON.stringify({
40017
41040
  tokenCallers,
40018
41041
  tokenScores,
40019
41042
  fileCallsMap,
@@ -40026,7 +41049,7 @@ async function getFileTokenScores(projectRoot, filePaths, readFile) {
40026
41049
  function parseTokens(filePath, languageConfig, readFile) {
40027
41050
  const { parser, query } = languageConfig;
40028
41051
  try {
40029
- const sourceCode = readFile ? readFile(filePath) : fs4.readFileSync(filePath, "utf8");
41052
+ const sourceCode = readFile ? readFile(filePath) : fs11.readFileSync(filePath, "utf8");
40030
41053
  if (sourceCode === null) {
40031
41054
  return {
40032
41055
  numLines: 0,
@@ -40083,7 +41106,7 @@ function parseFile(parser, query, sourceCode) {
40083
41106
 
40084
41107
  // src/run-state.ts
40085
41108
  var import_lodash17 = __toESM(require_lodash());
40086
- var import_v473 = __toESM(require("zod/v4"));
41109
+ var import_v480 = __toESM(require("zod/v4"));
40087
41110
 
40088
41111
  // src/agents/load-agents.ts
40089
41112
  var import_fs2 = __toESM(require("fs"));
@@ -40325,21 +41348,21 @@ function isValidSkillName(name14) {
40325
41348
  }
40326
41349
 
40327
41350
  // ../common/src/types/skill.ts
40328
- var import_v472 = require("zod/v4");
40329
- var SkillMetadataSchema = import_v472.z.record(import_v472.z.string(), import_v472.z.string());
40330
- var SkillFrontmatterSchema = import_v472.z.object({
40331
- name: import_v472.z.string().min(1).max(SKILL_NAME_MAX_LENGTH).regex(SKILL_NAME_REGEX, "Name must be lowercase alphanumeric with single hyphen separators"),
40332
- description: import_v472.z.string().min(1).max(SKILL_DESCRIPTION_MAX_LENGTH),
40333
- license: import_v472.z.string().optional(),
41351
+ var import_v479 = require("zod/v4");
41352
+ var SkillMetadataSchema = import_v479.z.record(import_v479.z.string(), import_v479.z.string());
41353
+ var SkillFrontmatterSchema = import_v479.z.object({
41354
+ name: import_v479.z.string().min(1).max(SKILL_NAME_MAX_LENGTH).regex(SKILL_NAME_REGEX, "Name must be lowercase alphanumeric with single hyphen separators"),
41355
+ description: import_v479.z.string().min(1).max(SKILL_DESCRIPTION_MAX_LENGTH),
41356
+ license: import_v479.z.string().optional(),
40334
41357
  metadata: SkillMetadataSchema.optional()
40335
41358
  });
40336
- var SkillDefinitionSchema = import_v472.z.object({
40337
- name: import_v472.z.string(),
40338
- description: import_v472.z.string(),
40339
- license: import_v472.z.string().optional(),
41359
+ var SkillDefinitionSchema = import_v479.z.object({
41360
+ name: import_v479.z.string(),
41361
+ description: import_v479.z.string(),
41362
+ license: import_v479.z.string().optional(),
40340
41363
  metadata: SkillMetadataSchema.optional(),
40341
- content: import_v472.z.string(),
40342
- filePath: import_v472.z.string()
41364
+ content: import_v479.z.string(),
41365
+ filePath: import_v479.z.string()
40343
41366
  });
40344
41367
 
40345
41368
  // src/skills/load-skills.ts
@@ -40479,7 +41502,7 @@ function processAgentDefinitions(agentDefinitions) {
40479
41502
  }
40480
41503
  function processCustomToolDefinitions(customToolDefinitions) {
40481
41504
  return Object.fromEntries(customToolDefinitions.map((toolDefinition) => {
40482
- const jsonSchema = import_v473.default.toJSONSchema(toolDefinition.inputSchema, {
41505
+ const jsonSchema = import_v480.default.toJSONSchema(toolDefinition.inputSchema, {
40483
41506
  io: "input"
40484
41507
  });
40485
41508
  delete jsonSchema["$schema"];
@@ -40558,13 +41581,13 @@ async function getGitChanges(params2) {
40558
41581
  };
40559
41582
  }
40560
41583
  async function discoverProjectFiles(params2) {
40561
- const { cwd, fs: fs7, logger: logger2 } = params2;
40562
- const fileTree = await getProjectFileTree({ projectRoot: cwd, fs: fs7 });
41584
+ const { cwd, fs: fs14, logger: logger2 } = params2;
41585
+ const fileTree = await getProjectFileTree({ projectRoot: cwd, fs: fs14 });
40563
41586
  const filePaths = getAllFilePaths(fileTree);
40564
41587
  let error;
40565
41588
  const projectFilePromises = Object.fromEntries(filePaths.map((filePath) => [
40566
41589
  filePath,
40567
- fs7.readFile(import_path8.default.join(cwd, filePath), "utf8").catch((err) => {
41590
+ fs14.readFile(import_path8.default.join(cwd, filePath), "utf8").catch((err) => {
40568
41591
  error = err;
40569
41592
  return "[ERROR_READING_FILE]";
40570
41593
  })
@@ -40579,12 +41602,12 @@ async function discoverProjectFiles(params2) {
40579
41602
  return projectFilesResolved;
40580
41603
  }
40581
41604
  async function loadUserKnowledgeFiles(params2) {
40582
- const { fs: fs7, logger: logger2 } = params2;
40583
- const homeDir = params2.homeDir ?? os5.homedir();
41605
+ const { fs: fs14, logger: logger2 } = params2;
41606
+ const homeDir = params2.homeDir ?? os6.homedir();
40584
41607
  const userKnowledgeFiles = {};
40585
41608
  let entries;
40586
41609
  try {
40587
- entries = await fs7.readdir(homeDir);
41610
+ entries = await fs14.readdir(homeDir);
40588
41611
  } catch (error) {
40589
41612
  logger2.debug?.({ homeDir, error: getErrorObject(error) }, "Failed to read home directory");
40590
41613
  return userKnowledgeFiles;
@@ -40604,7 +41627,7 @@ async function loadUserKnowledgeFiles(params2) {
40604
41627
  if (actualFileName) {
40605
41628
  const filePath = import_path8.default.join(homeDir, actualFileName);
40606
41629
  try {
40607
- const content = await fs7.readFile(filePath, "utf8");
41630
+ const content = await fs14.readFile(filePath, "utf8");
40608
41631
  const tildeKey = `~/${actualFileName}`;
40609
41632
  userKnowledgeFiles[tildeKey] = content;
40610
41633
  break;
@@ -40651,7 +41674,7 @@ async function initialSessionState(params2) {
40651
41674
  projectFiles,
40652
41675
  knowledgeFiles,
40653
41676
  userKnowledgeFiles: providedUserKnowledgeFiles,
40654
- fs: fs7,
41677
+ fs: fs14,
40655
41678
  spawn: spawn2,
40656
41679
  logger: logger2
40657
41680
  } = params2;
@@ -40661,8 +41684,8 @@ async function initialSessionState(params2) {
40661
41684
  if (!customToolDefinitions) {
40662
41685
  customToolDefinitions = [];
40663
41686
  }
40664
- if (!fs7) {
40665
- fs7 = require("fs").promises;
41687
+ if (!fs14) {
41688
+ fs14 = require("fs").promises;
40666
41689
  }
40667
41690
  if (!spawn2) {
40668
41691
  const { spawn: nodeSpawn } = require("child_process");
@@ -40677,7 +41700,7 @@ async function initialSessionState(params2) {
40677
41700
  };
40678
41701
  }
40679
41702
  if (projectFiles === undefined && cwd) {
40680
- projectFiles = await discoverProjectFiles({ cwd, fs: fs7, logger: logger2 });
41703
+ projectFiles = await discoverProjectFiles({ cwd, fs: fs14, logger: logger2 });
40681
41704
  }
40682
41705
  if (knowledgeFiles === undefined) {
40683
41706
  knowledgeFiles = projectFiles ? deriveKnowledgeFiles(projectFiles) : {};
@@ -40704,7 +41727,7 @@ async function initialSessionState(params2) {
40704
41727
  diffCached: "",
40705
41728
  lastCommitMessages: ""
40706
41729
  };
40707
- const homeKnowledgeFiles = await loadUserKnowledgeFiles({ fs: fs7, logger: logger2 });
41730
+ const homeKnowledgeFiles = await loadUserKnowledgeFiles({ fs: fs14, logger: logger2 });
40708
41731
  const userKnowledgeFiles = {
40709
41732
  ...homeKnowledgeFiles,
40710
41733
  ...providedUserKnowledgeFiles
@@ -40729,8 +41752,8 @@ async function initialSessionState(params2) {
40729
41752
  shell: "bash",
40730
41753
  nodeVersion: process.version,
40731
41754
  arch: process.arch,
40732
- homedir: os5.homedir(),
40733
- cpus: os5.cpus().length ?? 1
41755
+ homedir: os6.homedir(),
41756
+ cpus: os6.cpus().length ?? 1
40734
41757
  }
40735
41758
  });
40736
41759
  if (maxAgentSteps) {
@@ -40746,7 +41769,7 @@ async function generateInitialRunState({
40746
41769
  agentDefinitions,
40747
41770
  customToolDefinitions,
40748
41771
  maxAgentSteps,
40749
- fs: fs7
41772
+ fs: fs14
40750
41773
  }) {
40751
41774
  return {
40752
41775
  sessionState: await initialSessionState({
@@ -40757,7 +41780,7 @@ async function generateInitialRunState({
40757
41780
  agentDefinitions,
40758
41781
  customToolDefinitions,
40759
41782
  maxAgentSteps,
40760
- fs: fs7
41783
+ fs: fs14
40761
41784
  }),
40762
41785
  output: {
40763
41786
  type: "error",
@@ -40843,19 +41866,19 @@ function buildFileTree(filePaths) {
40843
41866
  }
40844
41867
  const rootNodes = [];
40845
41868
  const processed = new Set;
40846
- for (const [path12, node] of Object.entries(tree)) {
40847
- if (processed.has(path12))
41869
+ for (const [path14, node] of Object.entries(tree)) {
41870
+ if (processed.has(path14))
40848
41871
  continue;
40849
- const parentPath = path12.substring(0, path12.lastIndexOf("/"));
41872
+ const parentPath = path14.substring(0, path14.lastIndexOf("/"));
40850
41873
  if (parentPath && tree[parentPath]) {
40851
41874
  const parent = tree[parentPath];
40852
- if (parent.children && !parent.children.some((child) => child.filePath === path12)) {
41875
+ if (parent.children && !parent.children.some((child) => child.filePath === path14)) {
40853
41876
  parent.children.push(node);
40854
41877
  }
40855
41878
  } else {
40856
41879
  rootNodes.push(node);
40857
41880
  }
40858
- processed.add(path12);
41881
+ processed.add(path14);
40859
41882
  }
40860
41883
  function sortNodes(nodes) {
40861
41884
  nodes.sort((a, b) => {
@@ -40877,11 +41900,11 @@ function buildFileTree(filePaths) {
40877
41900
  // src/tools/change-file.ts
40878
41901
  var import_path9 = __toESM(require("path"));
40879
41902
  var import_diff4 = require("diff");
40880
- var import_v474 = __toESM(require("zod/v4"));
40881
- var FileChangeSchema2 = import_v474.default.object({
40882
- type: import_v474.default.enum(["patch", "file"]),
40883
- path: import_v474.default.string(),
40884
- content: import_v474.default.string()
41903
+ var import_v481 = __toESM(require("zod/v4"));
41904
+ var FileChangeSchema2 = import_v481.default.object({
41905
+ type: import_v481.default.enum(["patch", "file"]),
41906
+ path: import_v481.default.string(),
41907
+ content: import_v481.default.string()
40885
41908
  });
40886
41909
  function containsUpwardTraversal(dirPath) {
40887
41910
  const normalized = import_path9.default.normalize(dirPath);
@@ -40892,7 +41915,7 @@ function containsPathTraversal(filePath) {
40892
41915
  return import_path9.default.isAbsolute(normalized) || normalized.startsWith("..");
40893
41916
  }
40894
41917
  async function changeFile(params2) {
40895
- const { parameters, cwd, fs: fs7 } = params2;
41918
+ const { parameters, cwd, fs: fs14 } = params2;
40896
41919
  if (containsUpwardTraversal(cwd)) {
40897
41920
  throw new Error("cwd contains invalid path traversal");
40898
41921
  }
@@ -40905,7 +41928,7 @@ async function changeFile(params2) {
40905
41928
  const { created, modified, invalid, patchFailed } = await applyChanges({
40906
41929
  projectRoot: cwd,
40907
41930
  changes: [fileChange],
40908
- fs: fs7
41931
+ fs: fs14
40909
41932
  });
40910
41933
  const results = [];
40911
41934
  for (const file of created) {
@@ -40944,7 +41967,7 @@ async function changeFile(params2) {
40944
41967
  return [{ type: "json", value: results[0] }];
40945
41968
  }
40946
41969
  async function applyChanges(params2) {
40947
- const { projectRoot, changes, fs: fs7 } = params2;
41970
+ const { projectRoot, changes, fs: fs14 } = params2;
40948
41971
  const created = [];
40949
41972
  const modified = [];
40950
41973
  const patchFailed = [];
@@ -40953,21 +41976,21 @@ async function applyChanges(params2) {
40953
41976
  const { path: filePath, content, type } = change;
40954
41977
  try {
40955
41978
  const fullPath = import_path9.default.join(projectRoot, filePath);
40956
- const exists = await fileExists({ filePath: fullPath, fs: fs7 });
41979
+ const exists = await fileExists({ filePath: fullPath, fs: fs14 });
40957
41980
  if (!exists) {
40958
41981
  const dirPath = import_path9.default.dirname(fullPath);
40959
- await fs7.mkdir(dirPath, { recursive: true });
41982
+ await fs14.mkdir(dirPath, { recursive: true });
40960
41983
  }
40961
41984
  if (type === "file") {
40962
- await fs7.writeFile(fullPath, content);
41985
+ await fs14.writeFile(fullPath, content);
40963
41986
  } else {
40964
- const oldContent = await fs7.readFile(fullPath, "utf-8");
41987
+ const oldContent = await fs14.readFile(fullPath, "utf-8");
40965
41988
  const newContent = import_diff4.applyPatch(oldContent, content);
40966
41989
  if (newContent === false) {
40967
41990
  patchFailed.push(filePath);
40968
41991
  continue;
40969
41992
  }
40970
- await fs7.writeFile(fullPath, newContent);
41993
+ await fs14.writeFile(fullPath, newContent);
40971
41994
  }
40972
41995
  if (exists) {
40973
41996
  modified.push(filePath);
@@ -40984,8 +42007,8 @@ async function applyChanges(params2) {
40984
42007
 
40985
42008
  // src/tools/code-search.ts
40986
42009
  var import_child_process = require("child_process");
40987
- var fs7 = __toESM(require("fs"));
40988
- var path13 = __toESM(require("path"));
42010
+ var fs14 = __toESM(require("fs"));
42011
+ var path15 = __toESM(require("path"));
40989
42012
 
40990
42013
  // ../common/src/util/format-code-search.ts
40991
42014
  function formatCodeSearchOutput(stdout) {
@@ -41083,13 +42106,13 @@ function getBundledRgPath(importMetaUrl, env2 = getSdkEnv()) {
41083
42106
  }
41084
42107
  }
41085
42108
  if (!vendorPath) {
41086
- const dirname6 = new Function(`try { return __dirname; } catch (e) { return undefined; }`)();
41087
- if (typeof dirname6 !== "undefined") {
41088
- const cjsPath = import_path10.join(dirname6, "..", "..", "vendor", "ripgrep", platformDir, binaryName);
42109
+ const dirname7 = new Function(`try { return __dirname; } catch (e) { return undefined; }`)();
42110
+ if (typeof dirname7 !== "undefined") {
42111
+ const cjsPath = import_path10.join(dirname7, "..", "..", "vendor", "ripgrep", platformDir, binaryName);
41089
42112
  if (import_fs4.existsSync(cjsPath)) {
41090
42113
  vendorPath = cjsPath;
41091
42114
  }
41092
- const cjsPath2 = import_path10.join(dirname6, "vendor", "ripgrep", platformDir, binaryName);
42115
+ const cjsPath2 = import_path10.join(dirname7, "vendor", "ripgrep", platformDir, binaryName);
41093
42116
  if (import_fs4.existsSync(cjsPath2)) {
41094
42117
  vendorPath = cjsPath2;
41095
42118
  }
@@ -41127,9 +42150,9 @@ function codeSearch({
41127
42150
  }) {
41128
42151
  return new Promise((resolve3) => {
41129
42152
  let isResolved = false;
41130
- const projectRoot = path13.resolve(projectPath);
41131
- const searchCwd = cwd ? path13.resolve(projectRoot, cwd) : projectRoot;
41132
- if (!searchCwd.startsWith(projectRoot + path13.sep) && searchCwd !== projectRoot) {
42153
+ const projectRoot = path15.resolve(projectPath);
42154
+ const searchCwd = cwd ? path15.resolve(projectRoot, cwd) : projectRoot;
42155
+ if (!searchCwd.startsWith(projectRoot + path15.sep) && searchCwd !== projectRoot) {
41133
42156
  return resolve3([
41134
42157
  {
41135
42158
  type: "json",
@@ -41142,7 +42165,7 @@ function codeSearch({
41142
42165
  const flagsArray = (flags || "").split(" ").filter(Boolean).map((token) => token.replace(/^['"]|['"]$/g, ""));
41143
42166
  const existingHiddenDirs = INCLUDED_HIDDEN_DIRS.filter((dir) => {
41144
42167
  try {
41145
- return fs7.statSync(path13.join(searchCwd, dir)).isDirectory();
42168
+ return fs14.statSync(path15.join(searchCwd, dir)).isDirectory();
41146
42169
  } catch {
41147
42170
  return false;
41148
42171
  }
@@ -41390,9 +42413,9 @@ ${truncatedFiles.join(`
41390
42413
  // src/tools/glob.ts
41391
42414
  var import_micromatch = __toESM(require("micromatch"));
41392
42415
  async function glob(params2) {
41393
- const { pattern, projectPath, cwd, fs: fs8 } = params2;
42416
+ const { pattern, projectPath, cwd, fs: fs15 } = params2;
41394
42417
  try {
41395
- const fileTree = await getProjectFileTree({ projectRoot: projectPath, fs: fs8 });
42418
+ const fileTree = await getProjectFileTree({ projectRoot: projectPath, fs: fs15 });
41396
42419
  const flattenedNodes = flattenTree(fileTree);
41397
42420
  let allFilePaths = flattenedNodes.filter((node) => node.type === "file").map((node) => node.filePath);
41398
42421
  if (cwd) {
@@ -41424,11 +42447,11 @@ async function glob(params2) {
41424
42447
  }
41425
42448
 
41426
42449
  // src/tools/list-directory.ts
41427
- var path14 = __toESM(require("path"));
42450
+ var path16 = __toESM(require("path"));
41428
42451
  async function listDirectory(params2) {
41429
- const { directoryPath, projectPath, fs: fs8 } = params2;
42452
+ const { directoryPath, projectPath, fs: fs15 } = params2;
41430
42453
  try {
41431
- const resolvedPath = path14.resolve(projectPath, directoryPath);
42454
+ const resolvedPath = path16.resolve(projectPath, directoryPath);
41432
42455
  if (!resolvedPath.startsWith(projectPath)) {
41433
42456
  return [
41434
42457
  {
@@ -41439,7 +42462,7 @@ async function listDirectory(params2) {
41439
42462
  }
41440
42463
  ];
41441
42464
  }
41442
- const entries = await fs8.readdir(resolvedPath, {
42465
+ const entries = await fs15.readdir(resolvedPath, {
41443
42466
  withFileTypes: true
41444
42467
  });
41445
42468
  const files = [];
@@ -41478,7 +42501,7 @@ async function listDirectory(params2) {
41478
42501
  var import_path11 = __toESM(require("path"));
41479
42502
  init_old_constants();
41480
42503
  async function getFiles(params2) {
41481
- const { filePaths, cwd, fs: fs8, fileFilter } = params2;
42504
+ const { filePaths, cwd, fs: fs15, fileFilter } = params2;
41482
42505
  const hasCustomFilter = fileFilter !== undefined;
41483
42506
  const result = {};
41484
42507
  const MAX_FILE_SIZE = 1024 * 1024;
@@ -41502,7 +42525,7 @@ async function getFiles(params2) {
41502
42525
  const ignored = await isFileIgnored({
41503
42526
  filePath: relativePath,
41504
42527
  projectRoot: cwd,
41505
- fs: fs8
42528
+ fs: fs15
41506
42529
  });
41507
42530
  if (ignored) {
41508
42531
  result[relativePath] = FILE_READ_STATUS.IGNORED;
@@ -41510,11 +42533,11 @@ async function getFiles(params2) {
41510
42533
  }
41511
42534
  }
41512
42535
  try {
41513
- const stats = await fs8.stat(fullPath);
42536
+ const stats = await fs15.stat(fullPath);
41514
42537
  if (stats.size > MAX_FILE_SIZE) {
41515
42538
  result[relativePath] = FILE_READ_STATUS.TOO_LARGE + ` [${(stats.size / (1024 * 1024)).toFixed(2)}MB]`;
41516
42539
  } else {
41517
- const content = await fs8.readFile(fullPath, "utf8");
42540
+ const content = await fs15.readFile(fullPath, "utf8");
41518
42541
  result[relativePath] = isExampleFile ? FILE_READ_STATUS.TEMPLATE + `
41519
42542
  ` + content : content;
41520
42543
  }
@@ -41531,9 +42554,9 @@ async function getFiles(params2) {
41531
42554
 
41532
42555
  // src/tools/run-terminal-command.ts
41533
42556
  var import_child_process2 = require("child_process");
41534
- var fs8 = __toESM(require("fs"));
41535
- var os6 = __toESM(require("os"));
41536
- var path16 = __toESM(require("path"));
42557
+ var fs15 = __toESM(require("fs"));
42558
+ var os7 = __toESM(require("os"));
42559
+ var path18 = __toESM(require("path"));
41537
42560
  var COMMAND_OUTPUT_LIMIT = 50000;
41538
42561
  var GIT_BASH_COMMON_PATHS = [
41539
42562
  "C:\\Program Files\\Git\\bin\\bash.exe",
@@ -41546,30 +42569,30 @@ var WSL_BASH_PATH_PATTERNS = [
41546
42569
  ];
41547
42570
  function findWindowsBash(env2) {
41548
42571
  const customPath = env2.LEVELCODE_GIT_BASH_PATH;
41549
- if (customPath && fs8.existsSync(customPath)) {
42572
+ if (customPath && fs15.existsSync(customPath)) {
41550
42573
  return customPath;
41551
42574
  }
41552
42575
  for (const commonPath of GIT_BASH_COMMON_PATHS) {
41553
- if (fs8.existsSync(commonPath)) {
42576
+ if (fs15.existsSync(commonPath)) {
41554
42577
  return commonPath;
41555
42578
  }
41556
42579
  }
41557
42580
  const pathEnv = env2.PATH || env2.Path || "";
41558
- const pathDirs = pathEnv.split(path16.delimiter);
42581
+ const pathDirs = pathEnv.split(path18.delimiter);
41559
42582
  const wslFallbackPaths = [];
41560
42583
  for (const dir of pathDirs) {
41561
42584
  const dirLower = dir.toLowerCase();
41562
42585
  const isWslPath = WSL_BASH_PATH_PATTERNS.some((pattern) => dirLower.includes(pattern));
41563
- const bashPath = path16.join(dir, "bash.exe");
41564
- if (fs8.existsSync(bashPath)) {
42586
+ const bashPath = path18.join(dir, "bash.exe");
42587
+ if (fs15.existsSync(bashPath)) {
41565
42588
  if (isWslPath) {
41566
42589
  wslFallbackPaths.push(bashPath);
41567
42590
  } else {
41568
42591
  return bashPath;
41569
42592
  }
41570
42593
  }
41571
- const bashPathNoExt = path16.join(dir, "bash");
41572
- if (fs8.existsSync(bashPathNoExt)) {
42594
+ const bashPathNoExt = path18.join(dir, "bash");
42595
+ if (fs15.existsSync(bashPathNoExt)) {
41573
42596
  if (isWslPath) {
41574
42597
  wslFallbackPaths.push(bashPathNoExt);
41575
42598
  } else {
@@ -41609,7 +42632,7 @@ function runTerminalCommand({
41609
42632
  throw new Error("BACKGROUND process_type not implemented");
41610
42633
  }
41611
42634
  return new Promise((resolve5, reject) => {
41612
- const isWindows = os6.platform() === "win32";
42635
+ const isWindows = os7.platform() === "win32";
41613
42636
  const processEnv2 = {
41614
42637
  ...getSystemProcessEnv(),
41615
42638
  ...env2 ?? {}
@@ -41628,7 +42651,7 @@ function runTerminalCommand({
41628
42651
  shell = "bash";
41629
42652
  shellArgs = ["-c"];
41630
42653
  }
41631
- const resolvedCwd = path16.resolve(cwd);
42654
+ const resolvedCwd = path18.resolve(cwd);
41632
42655
  const childProcess = import_child_process2.spawn(shell, [...shellArgs, command], {
41633
42656
  cwd: resolvedCwd,
41634
42657
  env: processEnv2,
@@ -41749,7 +42772,7 @@ async function runOnce({
41749
42772
  costMode
41750
42773
  }) {
41751
42774
  const fsSourceValue = typeof fsSource === "function" ? fsSource() : fsSource;
41752
- const fs9 = await fsSourceValue;
42775
+ const fs16 = await fsSourceValue;
41753
42776
  let spawn4;
41754
42777
  if (spawnSource) {
41755
42778
  const spawnSourceValue = await spawnSource;
@@ -41783,7 +42806,7 @@ async function runOnce({
41783
42806
  customToolDefinitions,
41784
42807
  projectFiles,
41785
42808
  maxAgentSteps,
41786
- fs: fs9,
42809
+ fs: fs16,
41787
42810
  spawn: spawn4,
41788
42811
  logger: logger2
41789
42812
  });
@@ -41868,13 +42891,13 @@ async function runOnce({
41868
42891
  logger: logger2,
41869
42892
  apiKey,
41870
42893
  handleStepsLogChunk: () => {},
41871
- requestToolCall: async ({ userInputId: userInputId2, toolName: toolName32, input, mcpConfig }) => {
42894
+ requestToolCall: async ({ userInputId: userInputId2, toolName: toolName39, input, mcpConfig }) => {
41872
42895
  return handleToolCall({
41873
42896
  action: {
41874
42897
  type: "tool-call-request",
41875
42898
  requestId: crypto.randomUUID(),
41876
42899
  userInputId: userInputId2,
41877
- toolName: toolName32,
42900
+ toolName: toolName39,
41878
42901
  input,
41879
42902
  timeout: undefined,
41880
42903
  mcpConfig
@@ -41882,7 +42905,7 @@ async function runOnce({
41882
42905
  overrides: overrideTools ?? {},
41883
42906
  customToolDefinitions: customToolDefinitions ? Object.fromEntries(customToolDefinitions.map((def) => [def.toolName, def])) : {},
41884
42907
  cwd,
41885
- fs: fs9,
42908
+ fs: fs16,
41886
42909
  env: env2
41887
42910
  });
41888
42911
  },
@@ -41908,7 +42931,7 @@ async function runOnce({
41908
42931
  override: overrideTools?.read_files,
41909
42932
  fileFilter,
41910
42933
  cwd,
41911
- fs: fs9
42934
+ fs: fs16
41912
42935
  }),
41913
42936
  requestOptionalFile: async ({ filePath }) => {
41914
42937
  const files = await readFiles({
@@ -41916,7 +42939,7 @@ async function runOnce({
41916
42939
  override: overrideTools?.read_files,
41917
42940
  fileFilter,
41918
42941
  cwd,
41919
- fs: fs9
42942
+ fs: fs16
41920
42943
  });
41921
42944
  return toOptionalFile(files[filePath] ?? null);
41922
42945
  },
@@ -42022,9 +43045,9 @@ async function runOnce({
42022
43045
  });
42023
43046
  return promise;
42024
43047
  }
42025
- function requireCwd(cwd, toolName32) {
43048
+ function requireCwd(cwd, toolName39) {
42026
43049
  if (!cwd) {
42027
- throw new Error(`cwd is required for the ${toolName32} tool. Please provide cwd in LevelCodeClientOptions or override the ${toolName32} tool.`);
43050
+ throw new Error(`cwd is required for the ${toolName39} tool. Please provide cwd in LevelCodeClientOptions or override the ${toolName39} tool.`);
42028
43051
  }
42029
43052
  return cwd;
42030
43053
  }
@@ -42033,28 +43056,28 @@ async function readFiles({
42033
43056
  override,
42034
43057
  fileFilter,
42035
43058
  cwd,
42036
- fs: fs9
43059
+ fs: fs16
42037
43060
  }) {
42038
43061
  if (override) {
42039
43062
  return await override({ filePaths });
42040
43063
  }
42041
- return getFiles({ filePaths, cwd: requireCwd(cwd, "read_files"), fs: fs9, fileFilter });
43064
+ return getFiles({ filePaths, cwd: requireCwd(cwd, "read_files"), fs: fs16, fileFilter });
42042
43065
  }
42043
43066
  async function handleToolCall({
42044
43067
  action,
42045
43068
  overrides,
42046
43069
  customToolDefinitions,
42047
43070
  cwd,
42048
- fs: fs9,
43071
+ fs: fs16,
42049
43072
  env: env2
42050
43073
  }) {
42051
- const toolName32 = action.toolName;
43074
+ const toolName39 = action.toolName;
42052
43075
  const input = action.input;
42053
43076
  if (action.mcpConfig) {
42054
43077
  try {
42055
43078
  const mcpClientId = await getMCPClient(action.mcpConfig);
42056
43079
  const result2 = await callMCPTool(mcpClientId, {
42057
- name: toolName32,
43080
+ name: toolName39,
42058
43081
  arguments: input
42059
43082
  });
42060
43083
  return { output: result2 };
@@ -42072,10 +43095,10 @@ async function handleToolCall({
42072
43095
  }
42073
43096
  }
42074
43097
  let result;
42075
- if (toolNames.includes(toolName32)) {
43098
+ if (toolNames.includes(toolName39)) {
42076
43099
  clientToolCallSchema.parse(action);
42077
43100
  } else {
42078
- const customToolHandler = customToolDefinitions[toolName32];
43101
+ const customToolHandler = customToolDefinitions[toolName39];
42079
43102
  if (!customToolHandler) {
42080
43103
  throw new Error(`Custom tool handler not found for user input ID ${action.userInputId}`);
42081
43104
  }
@@ -42084,46 +43107,46 @@ async function handleToolCall({
42084
43107
  };
42085
43108
  }
42086
43109
  try {
42087
- let override = overrides[toolName32];
42088
- if (!override && toolName32 === "str_replace") {
43110
+ let override = overrides[toolName39];
43111
+ if (!override && toolName39 === "str_replace") {
42089
43112
  override = overrides["write_file"];
42090
43113
  }
42091
43114
  if (override) {
42092
43115
  result = await override(input);
42093
- } else if (toolName32 === "end_turn") {
43116
+ } else if (toolName39 === "end_turn") {
42094
43117
  result = [{ type: "json", value: { message: "Turn ended." } }];
42095
- } else if (toolName32 === "write_file" || toolName32 === "str_replace") {
43118
+ } else if (toolName39 === "write_file" || toolName39 === "str_replace") {
42096
43119
  result = await changeFile({
42097
43120
  parameters: input,
42098
- cwd: requireCwd(cwd, toolName32),
42099
- fs: fs9
43121
+ cwd: requireCwd(cwd, toolName39),
43122
+ fs: fs16
42100
43123
  });
42101
- } else if (toolName32 === "run_terminal_command") {
43124
+ } else if (toolName39 === "run_terminal_command") {
42102
43125
  const resolvedCwd = requireCwd(cwd, "run_terminal_command");
42103
43126
  result = await runTerminalCommand({
42104
43127
  ...input,
42105
43128
  cwd: import_path12.default.resolve(resolvedCwd, input.cwd ?? "."),
42106
43129
  env: env2
42107
43130
  });
42108
- } else if (toolName32 === "code_search") {
43131
+ } else if (toolName39 === "code_search") {
42109
43132
  result = await codeSearch({
42110
43133
  projectPath: requireCwd(cwd, "code_search"),
42111
43134
  ...input
42112
43135
  });
42113
- } else if (toolName32 === "list_directory") {
43136
+ } else if (toolName39 === "list_directory") {
42114
43137
  result = await listDirectory({
42115
43138
  directoryPath: input.path,
42116
43139
  projectPath: requireCwd(cwd, "list_directory"),
42117
- fs: fs9
43140
+ fs: fs16
42118
43141
  });
42119
- } else if (toolName32 === "glob") {
43142
+ } else if (toolName39 === "glob") {
42120
43143
  result = await glob({
42121
43144
  pattern: input.pattern,
42122
43145
  projectPath: requireCwd(cwd, "glob"),
42123
43146
  cwd: input.cwd,
42124
- fs: fs9
43147
+ fs: fs16
42125
43148
  });
42126
- } else if (toolName32 === "run_file_change_hooks") {
43149
+ } else if (toolName39 === "run_file_change_hooks") {
42127
43150
  result = [
42128
43151
  {
42129
43152
  type: "json",
@@ -42133,7 +43156,7 @@ async function handleToolCall({
42133
43156
  }
42134
43157
  ];
42135
43158
  } else {
42136
- throw new Error(`Tool not implemented in SDK. Please provide an override or modify your agent to not use this tool: ${toolName32}`);
43159
+ throw new Error(`Tool not implemented in SDK. Please provide an override or modify your agent to not use this tool: ${toolName39}`);
42137
43160
  }
42138
43161
  } catch (error) {
42139
43162
  result = [
@@ -42314,18 +43337,18 @@ Provide a handleEvent function to handle this error.`);
42314
43337
  }
42315
43338
  // src/custom-tool.ts
42316
43339
  function getCustomToolDefinition({
42317
- toolName: toolName32,
42318
- inputSchema: inputSchema32,
42319
- description: description31,
42320
- endsAgentStep: endsAgentStep32 = true,
43340
+ toolName: toolName39,
43341
+ inputSchema: inputSchema39,
43342
+ description: description38,
43343
+ endsAgentStep: endsAgentStep39 = true,
42321
43344
  exampleInputs = [],
42322
43345
  execute
42323
43346
  }) {
42324
43347
  return {
42325
- toolName: toolName32,
42326
- inputSchema: inputSchema32,
42327
- description: description31,
42328
- endsAgentStep: endsAgentStep32,
43348
+ toolName: toolName39,
43349
+ inputSchema: inputSchema39,
43350
+ description: description38,
43351
+ endsAgentStep: endsAgentStep39,
42329
43352
  exampleInputs,
42330
43353
  execute: async (params2) => {
42331
43354
  return await execute(params2);
@@ -42363,9 +43386,9 @@ var import_fs5 = __toESM(require("fs"));
42363
43386
  var import_promises = __toESM(require("fs/promises"));
42364
43387
  var import_os4 = __toESM(require("os"));
42365
43388
  var import_path13 = __toESM(require("path"));
42366
- var import_v475 = require("zod/v4");
42367
- var mcpFileSchema = import_v475.z.object({
42368
- mcpServers: import_v475.z.record(import_v475.z.string(), mcpConfigSchema).default(() => ({}))
43389
+ var import_v482 = require("zod/v4");
43390
+ var mcpFileSchema = import_v482.z.object({
43391
+ mcpServers: import_v482.z.record(import_v482.z.string(), mcpConfigSchema).default(() => ({}))
42369
43392
  });
42370
43393
  var envKey = "env";
42371
43394
  var processEnv2 = process[envKey];
@@ -42494,5 +43517,5 @@ function loadMCPConfigSync(options) {
42494
43517
  return mergedConfig;
42495
43518
  }
42496
43519
 
42497
- //# debugId=16B068004CDA38AF64756E2164756E21
43520
+ //# debugId=532E2EE00FAB612B64756E2164756E21
42498
43521
  //# sourceMappingURL=index.cjs.map