zidane 7.2.5 → 8.0.4

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 (376) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -6
  3. package/dist/{acp-D-tVyUjw.js → acp-DQDhi2dj.js} +230 -77
  4. package/dist/acp-DQDhi2dj.js.map +1 -0
  5. package/dist/acp-cli.d.ts +1 -1
  6. package/dist/acp-cli.js +9 -66
  7. package/dist/acp-cli.js.map +1 -1
  8. package/dist/acp.d.ts +10 -590
  9. package/dist/acp.d.ts.map +1 -1
  10. package/dist/acp.js +3 -3
  11. package/dist/{agent-D0zZnGbt.js → agent-DSLNmBp0.js} +14401 -13214
  12. package/dist/agent-DSLNmBp0.js.map +1 -0
  13. package/dist/agent.d.ts +1 -1
  14. package/dist/agent.js +3 -2
  15. package/dist/aliasing-lVFbm81n.js +217 -0
  16. package/dist/aliasing-lVFbm81n.js.map +1 -0
  17. package/dist/{anthropic-C2aole0G.js → anthropic-CD00LhUP.js} +1442 -1264
  18. package/dist/anthropic-CD00LhUP.js.map +1 -0
  19. package/dist/artifacts-CV2hUKnL.js.map +1 -1
  20. package/dist/{atomic-write-B7zr1ddF.js → atomic-write-Ijgf2Mhc.js} +13 -3
  21. package/dist/atomic-write-Ijgf2Mhc.js.map +1 -0
  22. package/dist/call-tool-dHlbGOIY.js +70 -0
  23. package/dist/call-tool-dHlbGOIY.js.map +1 -0
  24. package/dist/chat/pure.d.ts +372 -6
  25. package/dist/chat/pure.d.ts.map +1 -1
  26. package/dist/chat/pure.js +35 -244
  27. package/dist/chat/pure.js.map +1 -1
  28. package/dist/{approvals-DKaJZYlm.js → chat-JPJJ8uu5.js} +15879 -14631
  29. package/dist/chat-JPJJ8uu5.js.map +1 -0
  30. package/dist/chat.d.ts +4 -6
  31. package/dist/chat.js +23 -12
  32. package/dist/cli-shared-C-YCaglL.js +159 -0
  33. package/dist/cli-shared-C-YCaglL.js.map +1 -0
  34. package/dist/client-core-BQSyDALT.d.ts +2115 -0
  35. package/dist/client-core-BQSyDALT.d.ts.map +1 -0
  36. package/dist/codemode-worker.d.ts +1 -0
  37. package/dist/codemode-worker.js +155 -0
  38. package/dist/codemode-worker.js.map +1 -0
  39. package/dist/codemode.d.ts +352 -0
  40. package/dist/codemode.d.ts.map +1 -0
  41. package/dist/codemode.js +5 -0
  42. package/dist/connection-Dr-Js4yZ.d.ts +28 -0
  43. package/dist/connection-Dr-Js4yZ.d.ts.map +1 -0
  44. package/dist/connection-loop-gdh22LTI.js +112 -0
  45. package/dist/connection-loop-gdh22LTI.js.map +1 -0
  46. package/dist/context-segments-BHKlagL6.js +1016 -0
  47. package/dist/context-segments-BHKlagL6.js.map +1 -0
  48. package/dist/{context-transport-T_6AYIvy.js → context-transport-DSMTUsK1.js} +3 -3
  49. package/dist/{context-transport-T_6AYIvy.js.map → context-transport-DSMTUsK1.js.map} +1 -1
  50. package/dist/contexts/daytona.d.ts +19 -8
  51. package/dist/contexts/daytona.d.ts.map +1 -1
  52. package/dist/contexts/daytona.js +1 -440
  53. package/dist/contexts/docker.d.ts +36 -7
  54. package/dist/contexts/docker.d.ts.map +1 -1
  55. package/dist/contexts/docker.js +1 -456
  56. package/dist/contexts/e2b.d.ts +68 -13
  57. package/dist/contexts/e2b.d.ts.map +1 -1
  58. package/dist/contexts/e2b.js +1 -382
  59. package/dist/contexts/sandbox.d.ts +1 -1
  60. package/dist/contexts/sandbox.js +5 -0
  61. package/dist/contexts/sandbox.js.map +1 -1
  62. package/dist/{contexts-CRE9pw07.js → contexts-d7UolYot.js} +1059 -524
  63. package/dist/contexts-d7UolYot.js.map +1 -0
  64. package/dist/contexts.d.ts +3 -3
  65. package/dist/contexts.js +1 -1
  66. package/dist/cred-keys-GpBg71cP.js +105 -0
  67. package/dist/cred-keys-GpBg71cP.js.map +1 -0
  68. package/dist/{auth-BG2rVKSt.js → credentials-JttEuRON.js} +55 -206
  69. package/dist/credentials-JttEuRON.js.map +1 -0
  70. package/dist/{cursor-iojRXHF9.js → cursor-CdjaQTBW.js} +3 -3
  71. package/dist/{cursor-iojRXHF9.js.map → cursor-CdjaQTBW.js.map} +1 -1
  72. package/dist/daemon-cli.d.ts +1 -1
  73. package/dist/daemon-cli.js +3 -2
  74. package/dist/daemon-cli.js.map +1 -1
  75. package/dist/daytona-DG3omipZ.js +513 -0
  76. package/dist/daytona-DG3omipZ.js.map +1 -0
  77. package/dist/defaults-Cx3zvDOV.js +23 -0
  78. package/dist/defaults-Cx3zvDOV.js.map +1 -0
  79. package/dist/dispatcher-BMlu2BmZ.js +4941 -0
  80. package/dist/dispatcher-BMlu2BmZ.js.map +1 -0
  81. package/dist/docker-BZhMMJUp.js +727 -0
  82. package/dist/docker-BZhMMJUp.js.map +1 -0
  83. package/dist/e2b-CEVOdRib.js +480 -0
  84. package/dist/e2b-CEVOdRib.js.map +1 -0
  85. package/dist/edit-utils-EGosADZq.js +234 -0
  86. package/dist/edit-utils-EGosADZq.js.map +1 -0
  87. package/dist/environment-8wsKE2Ln.js +214 -0
  88. package/dist/environment-8wsKE2Ln.js.map +1 -0
  89. package/dist/eval-BNcvle_J.js +1595 -0
  90. package/dist/eval-BNcvle_J.js.map +1 -0
  91. package/dist/eval.d.ts +2 -2
  92. package/dist/eval.js +1 -1489
  93. package/dist/executor-Cx5-8yqi.js +621 -0
  94. package/dist/executor-Cx5-8yqi.js.map +1 -0
  95. package/dist/extension-authoring-DyGGmq9V.js +385 -0
  96. package/dist/extension-authoring-DyGGmq9V.js.map +1 -0
  97. package/dist/extensions.d.ts +2 -2
  98. package/dist/extensions.js +3 -3
  99. package/dist/{fetch-url-DX75gpL0.js → fetch-url-Ct2TjDWt.js} +4 -4
  100. package/dist/{fetch-url-DX75gpL0.js.map → fetch-url-Ct2TjDWt.js.map} +1 -1
  101. package/dist/{format-BF745pLL.js → format-C2NQEVUH.js} +39 -2
  102. package/dist/format-C2NQEVUH.js.map +1 -0
  103. package/dist/format-bytes-C7tfc3Zm.js +55 -0
  104. package/dist/format-bytes-C7tfc3Zm.js.map +1 -0
  105. package/dist/headless-C_rNUuYC.js +960 -0
  106. package/dist/headless-C_rNUuYC.js.map +1 -0
  107. package/dist/headless.d.ts +1 -1
  108. package/dist/headless.js +1 -413
  109. package/dist/{history-search-C4bk1Wz_.js → history-search-CcYzF8-0.js} +7 -3
  110. package/dist/history-search-CcYzF8-0.js.map +1 -0
  111. package/dist/history-search-worker.d.ts +1 -1
  112. package/dist/history-search-worker.js +1 -1
  113. package/dist/host-D7NrI03V.js +378 -0
  114. package/dist/host-D7NrI03V.js.map +1 -0
  115. package/dist/host-signals-BcP5QKUD.js +118 -0
  116. package/dist/host-signals-BcP5QKUD.js.map +1 -0
  117. package/dist/identity-CwfO8K-t.js +26 -0
  118. package/dist/identity-CwfO8K-t.js.map +1 -0
  119. package/dist/{index-BgN1T3lk.d.ts → index-BGe1fQT7.d.ts} +10987 -9320
  120. package/dist/index-BGe1fQT7.d.ts.map +1 -0
  121. package/dist/index-BVQsIKGn.d.ts +448 -0
  122. package/dist/index-BVQsIKGn.d.ts.map +1 -0
  123. package/dist/{index-C6NEd5y_.d.ts → index-CHABJd-L.d.ts} +3386 -502
  124. package/dist/index-CHABJd-L.d.ts.map +1 -0
  125. package/dist/{index-C37_ppWv.d.ts → index-D6a7qXpg.d.ts} +2 -3
  126. package/dist/index-D6a7qXpg.d.ts.map +1 -0
  127. package/dist/index.d.ts +6 -6
  128. package/dist/index.js +27 -23
  129. package/dist/{completion-core-BRo86R_L.js → inline-ghost-BVRQeGoL.js} +50 -2
  130. package/dist/inline-ghost-BVRQeGoL.js.map +1 -0
  131. package/dist/ipc/remote.d.ts +313 -0
  132. package/dist/ipc/remote.d.ts.map +1 -0
  133. package/dist/ipc/remote.js +4 -0
  134. package/dist/ipc.d.ts +6 -964
  135. package/dist/ipc.js +403 -4
  136. package/dist/ipc.js.map +1 -0
  137. package/dist/{isolation-Kfoof0MM.d.ts → isolation-D9L650W5.d.ts} +100 -15
  138. package/dist/isolation-D9L650W5.d.ts.map +1 -0
  139. package/dist/json-rpc--HXQti1E.js +350 -0
  140. package/dist/json-rpc--HXQti1E.js.map +1 -0
  141. package/dist/links-j8rED1sR.js +603 -0
  142. package/dist/links-j8rED1sR.js.map +1 -0
  143. package/dist/local-terminal-D8QThwo_.js +252 -0
  144. package/dist/local-terminal-D8QThwo_.js.map +1 -0
  145. package/dist/{logger--C1VQjwJ.js → logger-Gtqlayx8.js} +199 -173
  146. package/dist/logger-Gtqlayx8.js.map +1 -0
  147. package/dist/logs-view-CWG8aUAG.js.map +1 -1
  148. package/dist/{mcp-CgNd-f3F.js → mcp-_wecH9Qe.js} +608 -562
  149. package/dist/mcp-_wecH9Qe.js.map +1 -0
  150. package/dist/mcp.d.ts +2 -2
  151. package/dist/mcp.js +2 -2
  152. package/dist/media-sniff-UKijEaiQ.js.map +1 -1
  153. package/dist/{messages-2jcOA_5R.js → messages-BqiwcD2Q.js} +1017 -1014
  154. package/dist/messages-BqiwcD2Q.js.map +1 -0
  155. package/dist/{oauth-DxHO17JE.js → oauth-Px_pBB9W.js} +5 -5
  156. package/dist/{oauth-DxHO17JE.js.map → oauth-Px_pBB9W.js.map} +1 -1
  157. package/dist/{openai-compat-Dy56weK8.js → openai-compat-CFrpH7uq.js} +432 -589
  158. package/dist/openai-compat-CFrpH7uq.js.map +1 -0
  159. package/dist/orchestration-BCGmB8Ps.js +511 -0
  160. package/dist/orchestration-BCGmB8Ps.js.map +1 -0
  161. package/dist/output/stream-json.d.ts +1 -2
  162. package/dist/output/stream-json.d.ts.map +1 -1
  163. package/dist/output/stream-json.js +1 -1
  164. package/dist/output/terminal.d.ts +1 -2
  165. package/dist/output/terminal.d.ts.map +1 -1
  166. package/dist/output/terminal.js +13 -7
  167. package/dist/output/terminal.js.map +1 -1
  168. package/dist/{plugins-gbI7SBA6.js → plugins-DS7mahzZ.js} +20 -101
  169. package/dist/plugins-DS7mahzZ.js.map +1 -0
  170. package/dist/plugins.d.ts +1 -1
  171. package/dist/plugins.js +1 -2
  172. package/dist/prelude-Cxo4t74B.js +517 -0
  173. package/dist/prelude-Cxo4t74B.js.map +1 -0
  174. package/dist/presets.d.ts +1 -1
  175. package/dist/presets.js +1 -2
  176. package/dist/project-root-B8zADr4o.js +167 -0
  177. package/dist/project-root-B8zADr4o.js.map +1 -0
  178. package/dist/project-user-paths-BSgtrRxl.js +58 -0
  179. package/dist/project-user-paths-BSgtrRxl.js.map +1 -0
  180. package/dist/{prompts-Pqc3JdW_.d.ts → prompts-DYcvqShf.d.ts} +14 -11
  181. package/dist/prompts-DYcvqShf.d.ts.map +1 -0
  182. package/dist/protocol-DnhqqSmE.js +13 -0
  183. package/dist/protocol-DnhqqSmE.js.map +1 -0
  184. package/dist/providers/anthropic.d.ts +2 -2
  185. package/dist/providers/anthropic.js +1 -2
  186. package/dist/providers/arcee.d.ts +1 -1
  187. package/dist/providers/arcee.js +1 -1
  188. package/dist/providers/baseten.d.ts +1 -1
  189. package/dist/providers/baseten.js +1 -1
  190. package/dist/providers/cerebras.d.ts +1 -1
  191. package/dist/providers/cerebras.js +3 -2
  192. package/dist/providers/cerebras.js.map +1 -1
  193. package/dist/providers/local.d.ts +1 -1
  194. package/dist/providers/local.js +1 -1
  195. package/dist/providers/openai-compat.d.ts +1 -1
  196. package/dist/providers/openai-compat.js +1 -2
  197. package/dist/providers/openai.d.ts +1 -1
  198. package/dist/providers/openai.js +15 -12
  199. package/dist/providers/openai.js.map +1 -1
  200. package/dist/providers/openrouter.d.ts +1 -1
  201. package/dist/providers/openrouter.js +3 -2
  202. package/dist/providers/openrouter.js.map +1 -1
  203. package/dist/providers/xai.d.ts +1 -1
  204. package/dist/providers/xai.js +3 -3
  205. package/dist/{providers-BVhnFyiY.js → providers-XUR7F4Hi.js} +4 -4
  206. package/dist/{providers-BVhnFyiY.js.map → providers-XUR7F4Hi.js.map} +1 -1
  207. package/dist/providers.d.ts +1 -1
  208. package/dist/providers.js +4 -4
  209. package/dist/registry-D6ShBWJU.js +5234 -0
  210. package/dist/registry-D6ShBWJU.js.map +1 -0
  211. package/dist/remote-hosts-BtA_9ZGp.js +97 -0
  212. package/dist/remote-hosts-BtA_9ZGp.js.map +1 -0
  213. package/dist/restate.d.ts +2 -3
  214. package/dist/restate.d.ts.map +1 -1
  215. package/dist/restate.js +631 -572
  216. package/dist/restate.js.map +1 -1
  217. package/dist/run-summary-CklLiZ4y.js +288 -0
  218. package/dist/run-summary-CklLiZ4y.js.map +1 -0
  219. package/dist/{sandbox-BH0WQkXn.d.ts → sandbox-C5dR5DwQ.d.ts} +6 -3
  220. package/dist/sandbox-C5dR5DwQ.d.ts.map +1 -0
  221. package/dist/session/sqlite.d.ts +1 -2
  222. package/dist/session/sqlite.d.ts.map +1 -1
  223. package/dist/session/sqlite.js +1 -616
  224. package/dist/session-factory-BUGY5P40.js +1576 -0
  225. package/dist/session-factory-BUGY5P40.js.map +1 -0
  226. package/dist/{session-BqRP1hS7.js → session-xh9JXu6i.js} +94 -52
  227. package/dist/session-xh9JXu6i.js.map +1 -0
  228. package/dist/session.d.ts +1 -1
  229. package/dist/session.js +2 -2
  230. package/dist/settings-keys-Ckf29NeM.js +677 -0
  231. package/dist/settings-keys-Ckf29NeM.js.map +1 -0
  232. package/dist/shell-path-Dqaoow2J.js +412 -0
  233. package/dist/shell-path-Dqaoow2J.js.map +1 -0
  234. package/dist/{skills-BC3dodWp.js → skills-DKqZJm4X.js} +430 -470
  235. package/dist/skills-DKqZJm4X.js.map +1 -0
  236. package/dist/skills.d.ts +2 -2
  237. package/dist/skills.js +1 -2
  238. package/dist/source-mPExaUm8.js +381 -0
  239. package/dist/source-mPExaUm8.js.map +1 -0
  240. package/dist/sqlite-DV1DQzN2.js +698 -0
  241. package/dist/sqlite-DV1DQzN2.js.map +1 -0
  242. package/dist/{src-CkNQKFKr.js → src-BRMYRJib.js} +903 -1121
  243. package/dist/src-BRMYRJib.js.map +1 -0
  244. package/dist/{stdio-DPpBDPx5.js → stdio-C6YyoW3I.js} +4 -4
  245. package/dist/{stdio-DPpBDPx5.js.map → stdio-C6YyoW3I.js.map} +1 -1
  246. package/dist/{stdio-loader-Bbx19dMZ.js → stdio-loader-C830Vg-Z.js} +4 -4
  247. package/dist/{stdio-loader-Bbx19dMZ.js.map → stdio-loader-C830Vg-Z.js.map} +1 -1
  248. package/dist/system-prompt-MNVHatSD.d.ts.map +1 -1
  249. package/dist/timeout-DEaqslLO.d.ts.map +1 -1
  250. package/dist/todo-edits-Dn251YUP.js +1790 -0
  251. package/dist/todo-edits-Dn251YUP.js.map +1 -0
  252. package/dist/{turn-operations-DrbJlpq9.js → tool-formatters-IQFDrdrs.js} +1456 -2120
  253. package/dist/tool-formatters-IQFDrdrs.js.map +1 -0
  254. package/dist/tool-state-Dku6YqAB.js +989 -0
  255. package/dist/tool-state-Dku6YqAB.js.map +1 -0
  256. package/dist/tools/fetch-url.d.ts +1 -2
  257. package/dist/tools/fetch-url.d.ts.map +1 -1
  258. package/dist/tools/fetch-url.js +1 -2
  259. package/dist/tools/prompts.d.ts +1 -1
  260. package/dist/tools/prompts.js +7 -7
  261. package/dist/tools/prompts.js.map +1 -1
  262. package/dist/tools/web-search.d.ts +1 -2
  263. package/dist/tools/web-search.d.ts.map +1 -1
  264. package/dist/tools/web-search.js +2 -2
  265. package/dist/tools/web-search.js.map +1 -1
  266. package/dist/tools-_DnT3AGM.js +578 -0
  267. package/dist/tools-_DnT3AGM.js.map +1 -0
  268. package/dist/tools.d.ts +3 -3
  269. package/dist/tools.js +4 -2
  270. package/dist/tui.d.ts +534 -517
  271. package/dist/tui.d.ts.map +1 -1
  272. package/dist/tui.js +34933 -27243
  273. package/dist/tui.js.map +1 -1
  274. package/dist/turn-operations-B8sokwi5.js +333 -0
  275. package/dist/turn-operations-B8sokwi5.js.map +1 -0
  276. package/dist/turn-operations-DQX5ZZni.d.ts +3089 -0
  277. package/dist/turn-operations-DQX5ZZni.d.ts.map +1 -0
  278. package/dist/types-C7ZFOztE.d.ts +132 -0
  279. package/dist/types-C7ZFOztE.d.ts.map +1 -0
  280. package/dist/types-CH5XpIHw.js +114 -0
  281. package/dist/types-CH5XpIHw.js.map +1 -0
  282. package/dist/{types-CWgENVLY.js → types-Cu0ZGDu9.js} +10 -6
  283. package/dist/types-Cu0ZGDu9.js.map +1 -0
  284. package/dist/types-IqegbJEE.d.ts +624 -0
  285. package/dist/types-IqegbJEE.d.ts.map +1 -0
  286. package/dist/types.d.ts +4 -4
  287. package/dist/types.js +1 -1
  288. package/dist/url-D8HCl65b.js +1259 -0
  289. package/dist/url-D8HCl65b.js.map +1 -0
  290. package/dist/wasm-BVT-j5cl.js +33 -0
  291. package/dist/wasm-BVT-j5cl.js.map +1 -0
  292. package/dist/workspace-exec-stream-SV2R9d5S.js +355 -0
  293. package/dist/workspace-exec-stream-SV2R9d5S.js.map +1 -0
  294. package/dist/ws-CIHMvlSh.js +952 -0
  295. package/dist/ws-CIHMvlSh.js.map +1 -0
  296. package/dist/ws-client-N7NxzvQp.js +230 -0
  297. package/dist/ws-client-N7NxzvQp.js.map +1 -0
  298. package/dist/{xai-CazjStOK.js → xai-CvJTeLrI.js} +165 -5
  299. package/dist/xai-CvJTeLrI.js.map +1 -0
  300. package/dist/xdg-zweed0-t.js +117 -0
  301. package/dist/xdg-zweed0-t.js.map +1 -0
  302. package/docs/ACP.md +52 -0
  303. package/docs/ARCHITECTURE.md +103 -6
  304. package/docs/ARTIFACTS.md +8 -4
  305. package/docs/CHAT.md +165 -14
  306. package/docs/EXECUTION_CONTEXT.md +8 -0
  307. package/docs/EXTENSIONS.md +123 -2
  308. package/docs/HEADLESS.md +2 -0
  309. package/docs/IPC.md +775 -64
  310. package/docs/MACHINES.md +456 -0
  311. package/docs/PANELS.md +3 -0
  312. package/docs/README.md +4 -0
  313. package/docs/RESTATE.md +3 -2
  314. package/docs/RUN_IN_BACKGROUND.md +10 -2
  315. package/docs/SERVER.md +1085 -0
  316. package/docs/SKILL.md +6 -1
  317. package/docs/TERMINAL.md +75 -0
  318. package/docs/TUI.md +65 -14
  319. package/package.json +58 -26
  320. package/scripts/eval.ts +4 -0
  321. package/dist/acp-D-tVyUjw.js.map +0 -1
  322. package/dist/agent-D0zZnGbt.js.map +0 -1
  323. package/dist/anthropic-C2aole0G.js.map +0 -1
  324. package/dist/approvals-DKaJZYlm.js.map +0 -1
  325. package/dist/atomic-write-B7zr1ddF.js.map +0 -1
  326. package/dist/auth-BG2rVKSt.js.map +0 -1
  327. package/dist/completion-core-BRo86R_L.js.map +0 -1
  328. package/dist/contexts/daytona.js.map +0 -1
  329. package/dist/contexts/docker.js.map +0 -1
  330. package/dist/contexts/e2b.js.map +0 -1
  331. package/dist/contexts-CRE9pw07.js.map +0 -1
  332. package/dist/eval.js.map +0 -1
  333. package/dist/format-BF745pLL.js.map +0 -1
  334. package/dist/glob-DluQFSw1.js +0 -270
  335. package/dist/glob-DluQFSw1.js.map +0 -1
  336. package/dist/headless.js.map +0 -1
  337. package/dist/history-search-C4bk1Wz_.js.map +0 -1
  338. package/dist/index-BgN1T3lk.d.ts.map +0 -1
  339. package/dist/index-C37_ppWv.d.ts.map +0 -1
  340. package/dist/index-C6NEd5y_.d.ts.map +0 -1
  341. package/dist/ipc-BKVIIOqH.js +0 -331
  342. package/dist/ipc-BKVIIOqH.js.map +0 -1
  343. package/dist/ipc.d.ts.map +0 -1
  344. package/dist/isolation-Kfoof0MM.d.ts.map +0 -1
  345. package/dist/json-rpc-rSWMUh9b.js +0 -192
  346. package/dist/json-rpc-rSWMUh9b.js.map +0 -1
  347. package/dist/logger--C1VQjwJ.js.map +0 -1
  348. package/dist/mcp-CgNd-f3F.js.map +0 -1
  349. package/dist/messages-2jcOA_5R.js.map +0 -1
  350. package/dist/openai-compat-Dy56weK8.js.map +0 -1
  351. package/dist/output-cap-C9zukcCj.js +0 -100
  352. package/dist/output-cap-C9zukcCj.js.map +0 -1
  353. package/dist/panels-B6gRk4bf.js +0 -789
  354. package/dist/panels-B6gRk4bf.js.map +0 -1
  355. package/dist/plugins-gbI7SBA6.js.map +0 -1
  356. package/dist/prompts-Pqc3JdW_.d.ts.map +0 -1
  357. package/dist/run-summary-BU_NgwUT.js +0 -269
  358. package/dist/run-summary-BU_NgwUT.js.map +0 -1
  359. package/dist/sandbox-BH0WQkXn.d.ts.map +0 -1
  360. package/dist/session/sqlite.js.map +0 -1
  361. package/dist/session-BqRP1hS7.js.map +0 -1
  362. package/dist/shell-path-DfdXrGg9.js +0 -1549
  363. package/dist/shell-path-DfdXrGg9.js.map +0 -1
  364. package/dist/skills-BC3dodWp.js.map +0 -1
  365. package/dist/src-CkNQKFKr.js.map +0 -1
  366. package/dist/todo-edits-UOwgxGKu.js +0 -528
  367. package/dist/todo-edits-UOwgxGKu.js.map +0 -1
  368. package/dist/tool-formatters-DoRLnfuD.d.ts +0 -759
  369. package/dist/tool-formatters-DoRLnfuD.d.ts.map +0 -1
  370. package/dist/transcript-anchors-BeudMbXx.d.ts +0 -1762
  371. package/dist/transcript-anchors-BeudMbXx.d.ts.map +0 -1
  372. package/dist/turn-operations-C8bMBDl_.d.ts +0 -1258
  373. package/dist/turn-operations-C8bMBDl_.d.ts.map +0 -1
  374. package/dist/turn-operations-DrbJlpq9.js.map +0 -1
  375. package/dist/types-CWgENVLY.js.map +0 -1
  376. package/dist/xai-CazjStOK.js.map +0 -1
@@ -0,0 +1,381 @@
1
+ //#region src/codemode/identifier.ts
2
+ /**
3
+ * The identifier a script uses for a tool: characters that are not valid in a JavaScript
4
+ * identifier become `_`. `mcp__docs__search` stays as is, `my-tool` becomes `my_tool`.
5
+ */
6
+ function toCodemodeIdentifier(name) {
7
+ let identifier = "";
8
+ for (const char of name) {
9
+ const valid = identifier === "" ? /^[A-Z_$]$/i.test(char) : /^[\w$]$/.test(char);
10
+ identifier += valid ? char : "_";
11
+ }
12
+ return identifier === "" ? "_" : identifier;
13
+ }
14
+ //#endregion
15
+ //#region src/codemode/declarations.ts
16
+ const IDENTIFIER = /^[A-Z_$][\w$]*$/i;
17
+ const INDENT = " ";
18
+ /** Largest rendered input type, in characters, before it becomes `unknown`. */
19
+ const DEFAULT_INPUT_SCHEMA_MAX_CHARS = 16e3;
20
+ /** Local `$ref` expansions per rendered schema, so shared definitions cannot blow up the output. */
21
+ const MAX_REF_EXPANSIONS = 32;
22
+ /**
23
+ * TypeScript types for MCP results, from the MCP `CallToolResult` schema, so `CallToolResult<T>`
24
+ * declarations can refer to them.
25
+ */
26
+ const MCP_TYPESCRIPT_PREAMBLE = `type Role = "user" | "assistant";
27
+ type MetaObject = Record<string, unknown>;
28
+ type Annotations = {
29
+ audience?: Role[];
30
+ priority?: number;
31
+ lastModified?: string;
32
+ };
33
+ type Icon = {
34
+ src: string;
35
+ mimeType?: string;
36
+ sizes?: string[];
37
+ theme?: "light" | "dark";
38
+ };
39
+ type TextResourceContents = {
40
+ uri: string;
41
+ mimeType?: string;
42
+ _meta?: MetaObject;
43
+ text: string;
44
+ };
45
+ type BlobResourceContents = {
46
+ uri: string;
47
+ mimeType?: string;
48
+ _meta?: MetaObject;
49
+ blob: string;
50
+ };
51
+ type TextContent = {
52
+ type: "text";
53
+ text: string;
54
+ annotations?: Annotations;
55
+ _meta?: MetaObject;
56
+ };
57
+ type ImageContent = {
58
+ type: "image";
59
+ data: string;
60
+ mimeType: string;
61
+ annotations?: Annotations;
62
+ _meta?: MetaObject;
63
+ };
64
+ type AudioContent = {
65
+ type: "audio";
66
+ data: string;
67
+ mimeType: string;
68
+ annotations?: Annotations;
69
+ _meta?: MetaObject;
70
+ };
71
+ type ResourceLink = {
72
+ icons?: Icon[];
73
+ name: string;
74
+ title?: string;
75
+ uri: string;
76
+ description?: string;
77
+ mimeType?: string;
78
+ annotations?: Annotations;
79
+ size?: number;
80
+ _meta?: MetaObject;
81
+ type: "resource_link";
82
+ };
83
+ type EmbeddedResource = {
84
+ type: "resource";
85
+ resource: TextResourceContents | BlobResourceContents;
86
+ annotations?: Annotations;
87
+ _meta?: MetaObject;
88
+ };
89
+ type ContentBlock =
90
+ | TextContent
91
+ | ImageContent
92
+ | AudioContent
93
+ | ResourceLink
94
+ | EmbeddedResource;
95
+ type CallToolResult<TStructured = { [key: string]: unknown }> = {
96
+ _meta?: MetaObject;
97
+ content: ContentBlock[];
98
+ isError?: boolean;
99
+ structuredContent?: TStructured;
100
+ [key: string]: unknown;
101
+ };`;
102
+ /**
103
+ * Render TypeScript declarations for the script-visible API. Tools become members of
104
+ * `declare const tools`, globals become `declare function` statements, and `ns.member` globals
105
+ * members of `declare const ns`. Descriptions become doc comments; schemas become types.
106
+ */
107
+ function renderDeclarations(options) {
108
+ const sections = [];
109
+ const tools = options.tools ?? [];
110
+ if (tools.length > 0) {
111
+ const members = tools.map((tool) => `${docComment(tool.description, INDENT)}${INDENT}${renderToolSignature(tool)}`);
112
+ sections.push(`declare const tools: {\n${members.join("\n")}\n};`);
113
+ }
114
+ const namespaces = /* @__PURE__ */ new Map();
115
+ for (const global of options.globals ?? []) {
116
+ const dot = global.name.indexOf(".");
117
+ if (dot === -1) {
118
+ sections.push(renderGlobal(`declare function ${global.name}`, global, ""));
119
+ continue;
120
+ }
121
+ const namespace = global.name.slice(0, dot);
122
+ const members = namespaces.get(namespace) ?? [];
123
+ if (members.length === 0) namespaces.set(namespace, members);
124
+ members.push(renderGlobal(global.name.slice(dot + 1), global, INDENT));
125
+ }
126
+ for (const [namespace, members] of namespaces) sections.push(`declare const ${namespace}: {\n${members.join("\n")}\n};`);
127
+ return sections.join("\n\n");
128
+ }
129
+ /**
130
+ * One tool as a member of the `tools` object: `name(args: T): Promise<R>;` with the
131
+ * name as the identifier scripts use. Input types longer than `inputMaxChars` render as `unknown`.
132
+ * Tools whose output schema is an MCP `CallToolResult` render as `Promise<CallToolResult<T>>`,
133
+ * which needs {@link MCP_TYPESCRIPT_PREAMBLE}.
134
+ */
135
+ function renderToolSignature(tool, options = {}) {
136
+ const input = tool.inputSchema === void 0 ? "unknown" : schemaToType(tool.inputSchema, { maxChars: options.inputMaxChars ?? 16e3 });
137
+ return `${toCodemodeIdentifier(tool.name)}(args: ${input}): Promise<${renderToolOutputType(tool.outputSchema)}>;`;
138
+ }
139
+ /**
140
+ * A tool's sample: the description followed by the tool's declaration. Used for tool
141
+ * listings and `ALL_TOOLS` entries.
142
+ */
143
+ function renderToolSample(tool, options = {}) {
144
+ const declaration = `declare const tools: { ${renderToolSignature(tool, options)} };`;
145
+ return `${tool.description?.trim() ?? ""}\n\ncodemode tool declaration:\n\`\`\`ts\n${declaration}\n\`\`\``;
146
+ }
147
+ /**
148
+ * The `structuredContent` schema of an MCP `CallToolResult` output schema (detected by a
149
+ * `content` array of objects, boolean `isError`, and object `_meta`), `true` when it declares none, or
150
+ * `undefined` when the schema is not a `CallToolResult`.
151
+ */
152
+ function mcpStructuredContentSchema(schema) {
153
+ if (!isObject(schema) || !isObject(schema.properties)) return void 0;
154
+ const { content, isError, _meta, structuredContent } = schema.properties;
155
+ if (!isObject(content) || content.type !== "array" || !isObject(content.items) || content.items.type !== "object") return;
156
+ if (!isObject(isError) || isError.type !== "boolean" || !isObject(_meta) || _meta.type !== "object") return void 0;
157
+ return isObject(structuredContent) || typeof structuredContent === "boolean" ? structuredContent : true;
158
+ }
159
+ /**
160
+ * The type a tool call resolves to: `CallToolResult<T>` for MCP output schemas (needs
161
+ * {@link MCP_TYPESCRIPT_PREAMBLE}), the schema's type otherwise, and `unknown` without a schema.
162
+ */
163
+ function renderToolOutputType(schema) {
164
+ const structured = mcpStructuredContentSchema(schema);
165
+ if (structured !== void 0) {
166
+ const type = schemaToType(structured);
167
+ return type === "unknown" ? "CallToolResult" : `CallToolResult<${type}>`;
168
+ }
169
+ return schema === void 0 ? "unknown" : schemaToType(schema);
170
+ }
171
+ function renderGlobal(head, global, indent) {
172
+ if (global.signature !== void 0) return `${docComment(global.description, indent)}${indent}${head}${global.signature};`;
173
+ const input = global.inputSchema === void 0 ? "unknown" : schemaToType(global.inputSchema);
174
+ const output = global.outputSchema === void 0 ? "unknown" : schemaToType(global.outputSchema);
175
+ return `${docComment(global.description, indent)}${indent}${head}(args: ${input}): Promise<${output}>;`;
176
+ }
177
+ function docComment(description, indent) {
178
+ const text = description?.trim();
179
+ if (!text) return "";
180
+ const lines = text.replaceAll("*/", "*\\/").split(/\r?\n/);
181
+ if (lines.length === 1) return `${indent}/** ${lines[0]} */\n`;
182
+ return `${indent}/**\n${lines.map((line) => `${indent} *${line ? ` ${line}` : ""}`).join("\n")}\n${indent} */\n`;
183
+ }
184
+ function propertyKey(name) {
185
+ return IDENTIFIER.test(name) ? name : JSON.stringify(name);
186
+ }
187
+ function isObject(value) {
188
+ return typeof value === "object" && value !== null && !Array.isArray(value);
189
+ }
190
+ function union(types) {
191
+ const unique = [...new Set(types)];
192
+ if (unique.includes("unknown")) return "unknown";
193
+ return unique.length === 0 ? "never" : unique.join(" | ");
194
+ }
195
+ /**
196
+ * Convert a JSON Schema to a TypeScript type expression: objects on one line (`{ a: string; b?: number; }`) with properties sorted by name,
197
+ * or one property per line with `//` comments when a property has a description; `Array<T>` for
198
+ * arrays. Local references (`#/$defs/...`, `#/definitions/...`) resolve against `schema`;
199
+ * recursive and remote references render as `unknown`. A result longer than `maxChars` renders as
200
+ * `unknown`.
201
+ */
202
+ function schemaToType(schema, options = {}) {
203
+ const type = toType(schema, {
204
+ root: schema,
205
+ resolving: /* @__PURE__ */ new Set(),
206
+ expansions: 0
207
+ });
208
+ return options.maxChars !== void 0 && type.length > options.maxChars ? "unknown" : type;
209
+ }
210
+ function resolveRef(ref, root) {
211
+ if (ref !== "#" && !ref.startsWith("#/")) return void 0;
212
+ let current = root;
213
+ for (const segment of ref.slice(2).split("/").filter(Boolean)) {
214
+ const key = decodeURIComponent(segment).replaceAll("~1", "/").replaceAll("~0", "~");
215
+ if (!isObject(current) || !(key in current)) return void 0;
216
+ current = current[key];
217
+ }
218
+ return typeof current === "boolean" || isObject(current) ? current : void 0;
219
+ }
220
+ function toType(schema, context) {
221
+ if (schema === true) return "unknown";
222
+ if (schema === false) return "never";
223
+ if (!isObject(schema)) return "unknown";
224
+ if (typeof schema.$ref === "string") {
225
+ const ref = schema.$ref;
226
+ if (context.resolving.has(ref) || context.expansions >= MAX_REF_EXPANSIONS) return "unknown";
227
+ const target = resolveRef(ref, context.root);
228
+ if (target === void 0) return "unknown";
229
+ context.expansions++;
230
+ context.resolving.add(ref);
231
+ try {
232
+ return toType(target, context);
233
+ } finally {
234
+ context.resolving.delete(ref);
235
+ }
236
+ }
237
+ if ("const" in schema) return JSON.stringify(schema.const) ?? "unknown";
238
+ if (Array.isArray(schema.enum)) return union(schema.enum.map((value) => JSON.stringify(value) ?? "unknown"));
239
+ const variants = Array.isArray(schema.anyOf) ? schema.anyOf : Array.isArray(schema.oneOf) ? schema.oneOf : void 0;
240
+ if (variants) return union(variants.map((variant) => toType(variant, context)));
241
+ if (Array.isArray(schema.allOf)) {
242
+ const parts = schema.allOf.map((part) => toType(part, context)).filter((part) => part !== "unknown");
243
+ return parts.length === 0 ? "unknown" : parts.map((part) => part.includes(" | ") ? `(${part})` : part).join(" & ");
244
+ }
245
+ const type = schema.type;
246
+ if (Array.isArray(type)) return union(type.map((entry) => toType({
247
+ ...schema,
248
+ type: entry
249
+ }, context)));
250
+ switch (type) {
251
+ case "string": return "string";
252
+ case "number":
253
+ case "integer": return "number";
254
+ case "boolean": return "boolean";
255
+ case "null": return "null";
256
+ case "array": return arrayType(schema, context);
257
+ case "object": return objectType(schema, context);
258
+ case void 0:
259
+ if ("properties" in schema || "additionalProperties" in schema || "required" in schema) return objectType(schema, context);
260
+ if ("items" in schema || "prefixItems" in schema) return arrayType(schema, context);
261
+ return "unknown";
262
+ default: return "unknown";
263
+ }
264
+ }
265
+ function arrayType(schema, context) {
266
+ if (schema.items !== void 0 && !Array.isArray(schema.items)) return `Array<${toType(schema.items, context)}>`;
267
+ const tuple = Array.isArray(schema.prefixItems) ? schema.prefixItems : Array.isArray(schema.items) ? schema.items : [];
268
+ if (tuple.length > 0) return `[${tuple.map((item) => toType(item, context)).join(", ")}]`;
269
+ return "unknown[]";
270
+ }
271
+ function descriptionOf(property) {
272
+ return isObject(property) && typeof property.description === "string" ? property.description.trim() : "";
273
+ }
274
+ function objectType(schema, context) {
275
+ const properties = isObject(schema.properties) ? schema.properties : {};
276
+ const required = new Set(Array.isArray(schema.required) ? schema.required : []);
277
+ const names = Object.keys(properties).sort();
278
+ const members = names.map((name) => {
279
+ const optional = required.has(name) ? "" : "?";
280
+ return `${propertyKey(name)}${optional}: ${toType(properties[name], context)};`;
281
+ });
282
+ const additional = schema.additionalProperties;
283
+ if (additional !== void 0 && additional !== false) {
284
+ const type = additional === true ? "unknown" : toType(additional, context);
285
+ members.push(`[key: string]: ${type};`);
286
+ } else if (additional === void 0 && names.length === 0) members.push("[key: string]: unknown;");
287
+ if (members.length === 0) return "{}";
288
+ if (!names.some((name) => descriptionOf(properties[name]))) return `{ ${members.join(" ")} }`;
289
+ const lines = ["{"];
290
+ names.forEach((name, index) => {
291
+ for (const line of descriptionOf(properties[name]).split(/\r?\n/)) if (line.trim()) lines.push(`${INDENT}// ${line.trim()}`);
292
+ lines.push(`${INDENT}${members[index].replaceAll("\n", `\n${INDENT}`)}`);
293
+ });
294
+ for (const member of members.slice(names.length)) lines.push(`${INDENT}${member}`);
295
+ lines.push("}");
296
+ return lines.join("\n");
297
+ }
298
+ //#endregion
299
+ //#region src/codemode/source.ts
300
+ /**
301
+ * Codemode source format: JavaScript, optionally preceded by one options line.
302
+ *
303
+ * ```js
304
+ * // @options: {"max_output_tokens": 2000, "timeout_ms": 30000}
305
+ * const text = await tools.read_file({ path: "package.json" });
306
+ * text(JSON.parse(text).name);
307
+ * ```
308
+ */
309
+ const CODEMODE_OPTIONS_PREFIX = "// @options:";
310
+ const SUPPORTED_FIELDS = ["max_output_tokens", "timeout_ms"];
311
+ const SUPPORTED_FIELDS_TEXT = "`max_output_tokens` and `timeout_ms`";
312
+ /** Largest delay `setTimeout` supports, which bounds `timeout_ms`. */
313
+ const MAX_TIMEOUT_MS = 2147483647;
314
+ /**
315
+ * Lark grammar for providers with grammar-constrained tool input. It only fixes the shape of the
316
+ * options line; the options JSON and the code are checked by {@link parseCodemodeSource}.
317
+ */
318
+ const CODEMODE_SOURCE_GRAMMAR = String.raw`
319
+ start: options_source | plain_source
320
+ options_source: OPTIONS_LINE NEWLINE SOURCE
321
+ plain_source: SOURCE
322
+
323
+ OPTIONS_LINE: /[ \t]*\/\/ @options:[^\r\n]*/
324
+ NEWLINE: /\r?\n/
325
+ SOURCE: /[\s\S]+/
326
+ `;
327
+ var CodemodeSourceError = class extends Error {
328
+ constructor(message) {
329
+ super(message);
330
+ this.name = "CodemodeSourceError";
331
+ }
332
+ };
333
+ function isSafeInteger(value) {
334
+ return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
335
+ }
336
+ function parseOptions(directive) {
337
+ if (directive === "") throw new CodemodeSourceError(`@options must be a JSON object with supported fields ${SUPPORTED_FIELDS_TEXT}`);
338
+ let value;
339
+ try {
340
+ value = JSON.parse(directive);
341
+ } catch (error) {
342
+ throw new CodemodeSourceError(`@options must be valid JSON with supported fields ${SUPPORTED_FIELDS_TEXT}: ${error instanceof Error ? error.message : String(error)}`);
343
+ }
344
+ if (typeof value !== "object" || value === null || Array.isArray(value)) throw new CodemodeSourceError(`@options must be a JSON object with supported fields ${SUPPORTED_FIELDS_TEXT}`);
345
+ const fields = value;
346
+ for (const key of Object.keys(fields)) if (!SUPPORTED_FIELDS.includes(key)) throw new CodemodeSourceError(`@options only supports ${SUPPORTED_FIELDS_TEXT}; got \`${key}\``);
347
+ const options = {};
348
+ const { max_output_tokens, timeout_ms } = fields;
349
+ if (max_output_tokens !== void 0) {
350
+ if (!isSafeInteger(max_output_tokens)) throw new CodemodeSourceError("@options field `max_output_tokens` must be a non-negative safe integer");
351
+ options.maxOutputTokens = max_output_tokens;
352
+ }
353
+ if (timeout_ms !== void 0) {
354
+ if (!isSafeInteger(timeout_ms) || timeout_ms === 0 || timeout_ms > MAX_TIMEOUT_MS) throw new CodemodeSourceError(`@options field \`timeout_ms\` must be a positive integer up to ${MAX_TIMEOUT_MS}`);
355
+ options.timeoutMs = timeout_ms;
356
+ }
357
+ return options;
358
+ }
359
+ /**
360
+ * Split an optional first-line `// @options: {...}` from the script. Throws
361
+ * {@link CodemodeSourceError} for empty input and invalid options.
362
+ */
363
+ function parseCodemodeSource(input) {
364
+ if (input.trim() === "") throw new CodemodeSourceError("Expected JavaScript source text (non-empty). Provide JS only, optionally with a first line `// @options: {\"max_output_tokens\": 1000}`.");
365
+ const newline = input.indexOf("\n");
366
+ const trimmed = (newline === -1 ? input : input.slice(0, newline)).replace(/\r$/, "").trimStart();
367
+ if (!trimmed.startsWith("// @options:")) return {
368
+ code: input,
369
+ options: {}
370
+ };
371
+ const code = newline === -1 ? "" : input.slice(newline);
372
+ if (code.trim() === "") throw new CodemodeSourceError("The @options line must be followed by JavaScript source on subsequent lines");
373
+ return {
374
+ code,
375
+ options: parseOptions(trimmed.slice(12).trim())
376
+ };
377
+ }
378
+ //#endregion
379
+ export { DEFAULT_INPUT_SCHEMA_MAX_CHARS as a, renderDeclarations as c, renderToolSignature as d, schemaToType as f, parseCodemodeSource as i, renderToolOutputType as l, CODEMODE_SOURCE_GRAMMAR as n, MCP_TYPESCRIPT_PREAMBLE as o, toCodemodeIdentifier as p, CodemodeSourceError as r, mcpStructuredContentSchema as s, CODEMODE_OPTIONS_PREFIX as t, renderToolSample as u };
380
+
381
+ //# sourceMappingURL=source-mPExaUm8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-mPExaUm8.js","names":[],"sources":["../src/codemode/identifier.ts","../src/codemode/declarations.ts","../src/codemode/source.ts"],"sourcesContent":["/**\n * The identifier a script uses for a tool: characters that are not valid in a JavaScript\n * identifier become `_`. `mcp__docs__search` stays as is, `my-tool` becomes `my_tool`.\n */\nexport function toCodemodeIdentifier(name: string): string {\n let identifier = ''\n for (const char of name) {\n const valid = identifier === '' ? /^[A-Z_$]$/i.test(char) : /^[\\w$]$/.test(char)\n identifier += valid ? char : '_'\n }\n return identifier === '' ? '_' : identifier\n}\n","import type { CodemodeJsonSchema, CodemodeTool } from './types'\nimport { toCodemodeIdentifier } from './identifier'\n\nexport { toCodemodeIdentifier }\n\nconst IDENTIFIER = /^[A-Z_$][\\w$]*$/i\nconst INDENT = ' '\n/** Largest rendered input type, in characters, before it becomes `unknown`. */\nexport const DEFAULT_INPUT_SCHEMA_MAX_CHARS = 16_000\n/** Local `$ref` expansions per rendered schema, so shared definitions cannot blow up the output. */\nconst MAX_REF_EXPANSIONS = 32\n\n/**\n * TypeScript types for MCP results, from the MCP `CallToolResult` schema, so `CallToolResult<T>`\n * declarations can refer to them.\n */\nexport const MCP_TYPESCRIPT_PREAMBLE = `type Role = \"user\" | \"assistant\";\ntype MetaObject = Record<string, unknown>;\ntype Annotations = {\n audience?: Role[];\n priority?: number;\n lastModified?: string;\n};\ntype Icon = {\n src: string;\n mimeType?: string;\n sizes?: string[];\n theme?: \"light\" | \"dark\";\n};\ntype TextResourceContents = {\n uri: string;\n mimeType?: string;\n _meta?: MetaObject;\n text: string;\n};\ntype BlobResourceContents = {\n uri: string;\n mimeType?: string;\n _meta?: MetaObject;\n blob: string;\n};\ntype TextContent = {\n type: \"text\";\n text: string;\n annotations?: Annotations;\n _meta?: MetaObject;\n};\ntype ImageContent = {\n type: \"image\";\n data: string;\n mimeType: string;\n annotations?: Annotations;\n _meta?: MetaObject;\n};\ntype AudioContent = {\n type: \"audio\";\n data: string;\n mimeType: string;\n annotations?: Annotations;\n _meta?: MetaObject;\n};\ntype ResourceLink = {\n icons?: Icon[];\n name: string;\n title?: string;\n uri: string;\n description?: string;\n mimeType?: string;\n annotations?: Annotations;\n size?: number;\n _meta?: MetaObject;\n type: \"resource_link\";\n};\ntype EmbeddedResource = {\n type: \"resource\";\n resource: TextResourceContents | BlobResourceContents;\n annotations?: Annotations;\n _meta?: MetaObject;\n};\ntype ContentBlock =\n | TextContent\n | ImageContent\n | AudioContent\n | ResourceLink\n | EmbeddedResource;\ntype CallToolResult<TStructured = { [key: string]: unknown }> = {\n _meta?: MetaObject;\n content: ContentBlock[];\n isError?: boolean;\n structuredContent?: TStructured;\n [key: string]: unknown;\n};`\n\nexport interface RenderDeclarationsOptions {\n tools?: readonly CodemodeTool[]\n globals?: readonly CodemodeTool[]\n}\n\n/**\n * Render TypeScript declarations for the script-visible API. Tools become members of\n * `declare const tools`, globals become `declare function` statements, and `ns.member` globals\n * members of `declare const ns`. Descriptions become doc comments; schemas become types.\n */\nexport function renderDeclarations(options: RenderDeclarationsOptions): string {\n const sections: string[] = []\n const tools = options.tools ?? []\n if (tools.length > 0) {\n const members = tools.map(\n tool => `${docComment(tool.description, INDENT)}${INDENT}${renderToolSignature(tool)}`,\n )\n sections.push(`declare const tools: {\\n${members.join('\\n')}\\n};`)\n }\n const namespaces = new Map<string, string[]>()\n for (const global of options.globals ?? []) {\n const dot = global.name.indexOf('.')\n if (dot === -1) {\n sections.push(renderGlobal(`declare function ${global.name}`, global, ''))\n continue\n }\n const namespace = global.name.slice(0, dot)\n const members = namespaces.get(namespace) ?? []\n if (members.length === 0)\n namespaces.set(namespace, members)\n members.push(renderGlobal(global.name.slice(dot + 1), global, INDENT))\n }\n for (const [namespace, members] of namespaces) {\n sections.push(`declare const ${namespace}: {\\n${members.join('\\n')}\\n};`)\n }\n return sections.join('\\n\\n')\n}\n\n/**\n * One tool as a member of the `tools` object: `name(args: T): Promise<R>;` with the\n * name as the identifier scripts use. Input types longer than `inputMaxChars` render as `unknown`.\n * Tools whose output schema is an MCP `CallToolResult` render as `Promise<CallToolResult<T>>`,\n * which needs {@link MCP_TYPESCRIPT_PREAMBLE}.\n */\nexport function renderToolSignature(\n tool: Pick<CodemodeTool, 'name' | 'inputSchema' | 'outputSchema'>,\n options: { inputMaxChars?: number } = {},\n): string {\n const input\n = tool.inputSchema === undefined\n ? 'unknown'\n : schemaToType(tool.inputSchema, { maxChars: options.inputMaxChars ?? DEFAULT_INPUT_SCHEMA_MAX_CHARS })\n return `${toCodemodeIdentifier(tool.name)}(args: ${input}): Promise<${renderToolOutputType(tool.outputSchema)}>;`\n}\n\n/**\n * A tool's sample: the description followed by the tool's declaration. Used for tool\n * listings and `ALL_TOOLS` entries.\n */\nexport function renderToolSample(\n tool: Pick<CodemodeTool, 'name' | 'description' | 'inputSchema' | 'outputSchema'>,\n options: { inputMaxChars?: number } = {},\n): string {\n const declaration = `declare const tools: { ${renderToolSignature(tool, options)} };`\n return `${tool.description?.trim() ?? ''}\\n\\ncodemode tool declaration:\\n\\`\\`\\`ts\\n${declaration}\\n\\`\\`\\``\n}\n\n/**\n * The `structuredContent` schema of an MCP `CallToolResult` output schema (detected by a\n * `content` array of objects, boolean `isError`, and object `_meta`), `true` when it declares none, or\n * `undefined` when the schema is not a `CallToolResult`.\n */\nexport function mcpStructuredContentSchema(schema: CodemodeJsonSchema | undefined): CodemodeJsonSchema | undefined {\n if (!isObject(schema) || !isObject(schema.properties))\n return undefined\n const { content, isError, _meta, structuredContent } = schema.properties\n if (!isObject(content) || content.type !== 'array' || !isObject(content.items) || content.items.type !== 'object') {\n return undefined\n }\n if (!isObject(isError) || isError.type !== 'boolean' || !isObject(_meta) || _meta.type !== 'object')\n return undefined\n return isObject(structuredContent) || typeof structuredContent === 'boolean' ? structuredContent : true\n}\n\n/**\n * The type a tool call resolves to: `CallToolResult<T>` for MCP output schemas (needs\n * {@link MCP_TYPESCRIPT_PREAMBLE}), the schema's type otherwise, and `unknown` without a schema.\n */\nexport function renderToolOutputType(schema: CodemodeJsonSchema | undefined): string {\n const structured = mcpStructuredContentSchema(schema)\n if (structured !== undefined) {\n const type = schemaToType(structured)\n return type === 'unknown' ? 'CallToolResult' : `CallToolResult<${type}>`\n }\n return schema === undefined ? 'unknown' : schemaToType(schema)\n}\n\nfunction renderGlobal(head: string, global: CodemodeTool, indent: string): string {\n if (global.signature !== undefined) {\n return `${docComment(global.description, indent)}${indent}${head}${global.signature};`\n }\n const input = global.inputSchema === undefined ? 'unknown' : schemaToType(global.inputSchema)\n const output = global.outputSchema === undefined ? 'unknown' : schemaToType(global.outputSchema)\n return `${docComment(global.description, indent)}${indent}${head}(args: ${input}): Promise<${output}>;`\n}\n\nfunction docComment(description: string | undefined, indent: string): string {\n const text = description?.trim()\n if (!text)\n return ''\n const lines = text.replaceAll('*/', '*\\\\/').split(/\\r?\\n/)\n if (lines.length === 1)\n return `${indent}/** ${lines[0]} */\\n`\n return `${indent}/**\\n${lines.map(line => `${indent} *${line ? ` ${line}` : ''}`).join('\\n')}\\n${indent} */\\n`\n}\n\nfunction propertyKey(name: string): string {\n return IDENTIFIER.test(name) ? name : JSON.stringify(name)\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction union(types: string[]): string {\n const unique = [...new Set(types)]\n if (unique.includes('unknown'))\n return 'unknown'\n return unique.length === 0 ? 'never' : unique.join(' | ')\n}\n\n/**\n * Convert a JSON Schema to a TypeScript type expression: objects on one line (`{ a: string; b?: number; }`) with properties sorted by name,\n * or one property per line with `//` comments when a property has a description; `Array<T>` for\n * arrays. Local references (`#/$defs/...`, `#/definitions/...`) resolve against `schema`;\n * recursive and remote references render as `unknown`. A result longer than `maxChars` renders as\n * `unknown`.\n */\nexport function schemaToType(schema: CodemodeJsonSchema, options: { maxChars?: number } = {}): string {\n const type = toType(schema, { root: schema, resolving: new Set(), expansions: 0 })\n return options.maxChars !== undefined && type.length > options.maxChars ? 'unknown' : type\n}\n\ninterface SchemaContext {\n root: CodemodeJsonSchema\n /** References being expanded on the current path, to stop at recursive types. */\n resolving: Set<string>\n expansions: number\n}\n\nfunction resolveRef(ref: string, root: CodemodeJsonSchema): CodemodeJsonSchema | undefined {\n if (ref !== '#' && !ref.startsWith('#/'))\n return undefined\n let current: unknown = root\n for (const segment of ref.slice(2).split('/').filter(Boolean)) {\n const key = decodeURIComponent(segment).replaceAll('~1', '/').replaceAll('~0', '~')\n if (!isObject(current) || !(key in current))\n return undefined\n current = current[key]\n }\n return typeof current === 'boolean' || isObject(current) ? current : undefined\n}\n\nfunction toType(schema: CodemodeJsonSchema, context: SchemaContext): string {\n if (schema === true)\n return 'unknown'\n if (schema === false)\n return 'never'\n if (!isObject(schema))\n return 'unknown'\n if (typeof schema.$ref === 'string') {\n const ref = schema.$ref\n if (context.resolving.has(ref) || context.expansions >= MAX_REF_EXPANSIONS)\n return 'unknown'\n const target = resolveRef(ref, context.root)\n if (target === undefined)\n return 'unknown'\n context.expansions++\n context.resolving.add(ref)\n try {\n return toType(target, context)\n }\n finally {\n context.resolving.delete(ref)\n }\n }\n\n if ('const' in schema)\n return JSON.stringify(schema.const) ?? 'unknown'\n if (Array.isArray(schema.enum))\n return union(schema.enum.map(value => JSON.stringify(value) ?? 'unknown'))\n\n const variants = Array.isArray(schema.anyOf) ? schema.anyOf : Array.isArray(schema.oneOf) ? schema.oneOf : undefined\n if (variants)\n return union(variants.map(variant => toType(variant as CodemodeJsonSchema, context)))\n if (Array.isArray(schema.allOf)) {\n const parts = schema.allOf\n .map(part => toType(part as CodemodeJsonSchema, context))\n .filter(part => part !== 'unknown')\n return parts.length === 0\n ? 'unknown'\n : parts.map(part => (part.includes(' | ') ? `(${part})` : part)).join(' & ')\n }\n\n const type = schema.type\n if (Array.isArray(type))\n return union(type.map(entry => toType({ ...schema, type: entry }, context)))\n switch (type) {\n case 'string':\n return 'string'\n case 'number':\n case 'integer':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'null':\n return 'null'\n case 'array':\n return arrayType(schema, context)\n case 'object':\n return objectType(schema, context)\n case undefined:\n if ('properties' in schema || 'additionalProperties' in schema || 'required' in schema) {\n return objectType(schema, context)\n }\n if ('items' in schema || 'prefixItems' in schema)\n return arrayType(schema, context)\n return 'unknown'\n default:\n return 'unknown'\n }\n}\n\nfunction arrayType(schema: Record<string, unknown>, context: SchemaContext): string {\n if (schema.items !== undefined && !Array.isArray(schema.items)) {\n return `Array<${toType(schema.items as CodemodeJsonSchema, context)}>`\n }\n const tuple = Array.isArray(schema.prefixItems)\n ? schema.prefixItems\n : Array.isArray(schema.items)\n ? schema.items\n : []\n if (tuple.length > 0)\n return `[${tuple.map(item => toType(item as CodemodeJsonSchema, context)).join(', ')}]`\n return 'unknown[]'\n}\n\nfunction descriptionOf(property: unknown): string {\n return isObject(property) && typeof property.description === 'string' ? property.description.trim() : ''\n}\n\nfunction objectType(schema: Record<string, unknown>, context: SchemaContext): string {\n const properties = isObject(schema.properties) ? schema.properties : {}\n const required = new Set(Array.isArray(schema.required) ? schema.required : [])\n const names = Object.keys(properties).sort()\n const members = names.map((name) => {\n const optional = required.has(name) ? '' : '?'\n return `${propertyKey(name)}${optional}: ${toType(properties[name] as CodemodeJsonSchema, context)};`\n })\n const additional = schema.additionalProperties\n if (additional !== undefined && additional !== false) {\n const type = additional === true ? 'unknown' : toType(additional as CodemodeJsonSchema, context)\n members.push(`[key: string]: ${type};`)\n }\n else if (additional === undefined && names.length === 0) {\n members.push('[key: string]: unknown;')\n }\n if (members.length === 0)\n return '{}'\n if (!names.some(name => descriptionOf(properties[name])))\n return `{ ${members.join(' ')} }`\n\n const lines = ['{']\n names.forEach((name, index) => {\n for (const line of descriptionOf(properties[name]).split(/\\r?\\n/)) {\n if (line.trim())\n lines.push(`${INDENT}// ${line.trim()}`)\n }\n lines.push(`${INDENT}${members[index].replaceAll('\\n', `\\n${INDENT}`)}`)\n })\n for (const member of members.slice(names.length)) lines.push(`${INDENT}${member}`)\n lines.push('}')\n return lines.join('\\n')\n}\n","/**\n * Codemode source format: JavaScript, optionally preceded by one options line.\n *\n * ```js\n * // @options: {\"max_output_tokens\": 2000, \"timeout_ms\": 30000}\n * const text = await tools.read_file({ path: \"package.json\" });\n * text(JSON.parse(text).name);\n * ```\n */\n\nexport const CODEMODE_OPTIONS_PREFIX = '// @options:'\n\nconst SUPPORTED_FIELDS = ['max_output_tokens', 'timeout_ms'] as const\nconst SUPPORTED_FIELDS_TEXT = '`max_output_tokens` and `timeout_ms`'\n/** Largest delay `setTimeout` supports, which bounds `timeout_ms`. */\nconst MAX_TIMEOUT_MS = 2_147_483_647\n\n/**\n * Lark grammar for providers with grammar-constrained tool input. It only fixes the shape of the\n * options line; the options JSON and the code are checked by {@link parseCodemodeSource}.\n */\nexport const CODEMODE_SOURCE_GRAMMAR = String.raw`\nstart: options_source | plain_source\noptions_source: OPTIONS_LINE NEWLINE SOURCE\nplain_source: SOURCE\n\nOPTIONS_LINE: /[ \\t]*\\/\\/ @options:[^\\r\\n]*/\nNEWLINE: /\\r?\\n/\nSOURCE: /[\\s\\S]+/\n`\n\nexport interface CodemodeSourceOptions {\n /** Token budget for the script's output. */\n maxOutputTokens?: number\n /** Hard deadline for the whole script in milliseconds, including tool calls. */\n timeoutMs?: number\n}\n\nexport interface ParsedCodemodeSource {\n /** The script with the options line replaced by an empty line, so line numbers are unchanged. */\n code: string\n options: CodemodeSourceOptions\n}\n\nexport class CodemodeSourceError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'CodemodeSourceError'\n }\n}\n\nfunction isSafeInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0\n}\n\nfunction parseOptions(directive: string): CodemodeSourceOptions {\n if (directive === '')\n throw new CodemodeSourceError(`@options must be a JSON object with supported fields ${SUPPORTED_FIELDS_TEXT}`)\n let value: unknown\n try {\n value = JSON.parse(directive)\n }\n catch (error) {\n throw new CodemodeSourceError(\n `@options must be valid JSON with supported fields ${SUPPORTED_FIELDS_TEXT}: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n if (typeof value !== 'object' || value === null || Array.isArray(value))\n throw new CodemodeSourceError(`@options must be a JSON object with supported fields ${SUPPORTED_FIELDS_TEXT}`)\n const fields = value as Record<string, unknown>\n for (const key of Object.keys(fields)) {\n if (!(SUPPORTED_FIELDS as readonly string[]).includes(key))\n throw new CodemodeSourceError(`@options only supports ${SUPPORTED_FIELDS_TEXT}; got \\`${key}\\``)\n }\n const options: CodemodeSourceOptions = {}\n const { max_output_tokens, timeout_ms } = fields\n if (max_output_tokens !== undefined) {\n if (!isSafeInteger(max_output_tokens))\n throw new CodemodeSourceError('@options field `max_output_tokens` must be a non-negative safe integer')\n options.maxOutputTokens = max_output_tokens\n }\n if (timeout_ms !== undefined) {\n if (!isSafeInteger(timeout_ms) || timeout_ms === 0 || timeout_ms > MAX_TIMEOUT_MS)\n throw new CodemodeSourceError(`@options field \\`timeout_ms\\` must be a positive integer up to ${MAX_TIMEOUT_MS}`)\n options.timeoutMs = timeout_ms\n }\n return options\n}\n\n/**\n * Split an optional first-line `// @options: {...}` from the script. Throws\n * {@link CodemodeSourceError} for empty input and invalid options.\n */\nexport function parseCodemodeSource(input: string): ParsedCodemodeSource {\n if (input.trim() === '') {\n throw new CodemodeSourceError(\n 'Expected JavaScript source text (non-empty). Provide JS only, optionally with a first line `// @options: {\"max_output_tokens\": 1000}`.',\n )\n }\n const newline = input.indexOf('\\n')\n const firstLine = (newline === -1 ? input : input.slice(0, newline)).replace(/\\r$/, '')\n const trimmed = firstLine.trimStart()\n if (!trimmed.startsWith(CODEMODE_OPTIONS_PREFIX))\n return { code: input, options: {} }\n const code = newline === -1 ? '' : input.slice(newline)\n if (code.trim() === '')\n throw new CodemodeSourceError('The @options line must be followed by JavaScript source on subsequent lines')\n return { code, options: parseOptions(trimmed.slice(CODEMODE_OPTIONS_PREFIX.length).trim()) }\n}\n"],"mappings":"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"}