@relay-harness/coding-agent 0.0.0-stage → 1.0.3

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 (1318) hide show
  1. package/CHANGELOG.md +6122 -0
  2. package/LICENSE +22 -0
  3. package/README.md +79 -2
  4. package/dist/bun/cli.d.ts +5 -0
  5. package/dist/bun/cli.d.ts.map +1 -0
  6. package/dist/bun/cli.js +5 -0
  7. package/dist/bun/cli.js.map +1 -0
  8. package/dist/bun/restore-sandbox-env.d.ts +17 -0
  9. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  10. package/dist/bun/restore-sandbox-env.js +36 -0
  11. package/dist/bun/restore-sandbox-env.js.map +1 -0
  12. package/dist/bun/runtime-setup.d.ts +2 -0
  13. package/dist/bun/runtime-setup.d.ts.map +1 -0
  14. package/dist/bun/runtime-setup.js +12 -0
  15. package/dist/bun/runtime-setup.js.map +1 -0
  16. package/dist/bun/sandbox-env-setup.d.ts +2 -0
  17. package/dist/bun/sandbox-env-setup.d.ts.map +1 -0
  18. package/dist/bun/sandbox-env-setup.js +4 -0
  19. package/dist/bun/sandbox-env-setup.js.map +1 -0
  20. package/dist/bundle/chunks/anthropic-messages-TXWUAW5N.js +6 -0
  21. package/dist/bundle/chunks/anthropic.js +75 -0
  22. package/dist/bundle/chunks/azure-openai-responses-EJG46ESA.js +2 -0
  23. package/dist/bundle/chunks/bedrock-converse-stream.js +83 -0
  24. package/dist/bundle/chunks/chunk-3QND5D7W.js +82 -0
  25. package/dist/bundle/chunks/chunk-3XNI2SB6.js +15 -0
  26. package/dist/bundle/chunks/chunk-4L3WN2XY.js +2 -0
  27. package/dist/bundle/chunks/chunk-5H4IRYOE.js +1791 -0
  28. package/dist/bundle/chunks/chunk-6CYCI3EJ.js +12 -0
  29. package/dist/bundle/chunks/chunk-7ZC4UXSL.js +2 -0
  30. package/dist/bundle/chunks/chunk-A3JYRWB6.js +2 -0
  31. package/dist/bundle/chunks/chunk-C47CLQZK.js +2 -0
  32. package/dist/bundle/chunks/chunk-DRQDKNXA.js +2 -0
  33. package/dist/bundle/chunks/chunk-EQ2HXQGJ.js +2 -0
  34. package/dist/bundle/chunks/chunk-F5ZABL6Z.js +20 -0
  35. package/dist/bundle/chunks/chunk-H3QXYIF7.js +31 -0
  36. package/dist/bundle/chunks/chunk-ISNO4JTR.js +127 -0
  37. package/dist/bundle/chunks/chunk-KJUDFE6Y.js +11 -0
  38. package/dist/bundle/chunks/chunk-L2ZPNLYD.js +2 -0
  39. package/dist/bundle/chunks/chunk-LD2P6SFZ.js +2 -0
  40. package/dist/bundle/chunks/chunk-MP5FU7MG.js +20 -0
  41. package/dist/bundle/chunks/chunk-NS67SA75.js +2 -0
  42. package/dist/bundle/chunks/chunk-O7R77OAK.js +2 -0
  43. package/dist/bundle/chunks/chunk-PGXDEOVV.js +2 -0
  44. package/dist/bundle/chunks/chunk-PJACZCIR.js +2 -0
  45. package/dist/bundle/chunks/chunk-PRRNXB7S.js +2 -0
  46. package/dist/bundle/chunks/chunk-PTRF7IZB.js +2 -0
  47. package/dist/bundle/chunks/chunk-RZ4KG4BP.js +44 -0
  48. package/dist/bundle/chunks/chunk-S3GGRYIO.js +6 -0
  49. package/dist/bundle/chunks/chunk-TEPMHNKQ.js +2 -0
  50. package/dist/bundle/chunks/chunk-TRDNDS6A.js +4 -0
  51. package/dist/bundle/chunks/chunk-USJZMAIR.js +2 -0
  52. package/dist/bundle/chunks/chunk-UTB4DTYQ.js +2 -0
  53. package/dist/bundle/chunks/chunk-WMTXXI7H.js +4 -0
  54. package/dist/bundle/chunks/chunk-XDAWU2J5.js +132 -0
  55. package/dist/bundle/chunks/chunk-Z2G7KLPH.js +11 -0
  56. package/dist/bundle/chunks/cli-K4CNHWOI.js +51 -0
  57. package/dist/bundle/chunks/cloudflare-workers-ai-system-one-NM3JRRWQ.js +2 -0
  58. package/dist/bundle/chunks/codemode-worker.js +374 -0
  59. package/dist/bundle/chunks/easter-egg-3d-TGRCIHA4.js +2 -0
  60. package/dist/bundle/chunks/execute-6E5DA2QI.js +388 -0
  61. package/dist/bundle/chunks/github-copilot.js +2 -0
  62. package/dist/bundle/chunks/google-generative-ai-HYUNEOCJ.js +2 -0
  63. package/dist/bundle/chunks/google-vertex-J7MDGTNM.js +2 -0
  64. package/dist/bundle/chunks/https-proxy-agent-2VXB7436.js +13 -0
  65. package/dist/bundle/chunks/image-resize-worker.js +2 -0
  66. package/dist/bundle/chunks/jiti-loader-C3NU2SDH.js +21 -0
  67. package/dist/bundle/chunks/jiti-static-loader-E6ANQD5T.js +2 -0
  68. package/dist/bundle/chunks/kimi-coding.js +2 -0
  69. package/dist/bundle/chunks/lib-TEDK3E5I.js +9 -0
  70. package/dist/bundle/chunks/llama-cpp-classify-XT44PI3C.js +22 -0
  71. package/dist/bundle/chunks/meta.js +2 -0
  72. package/dist/bundle/chunks/mistral-conversations-UD2HHXKZ.js +5 -0
  73. package/dist/bundle/chunks/multipart-parser-SQ6GDJL7.js +3 -0
  74. package/dist/bundle/chunks/node-N5BSDOA5.js +16 -0
  75. package/dist/bundle/chunks/node-TWVVAGPO.js +2 -0
  76. package/dist/bundle/chunks/openai-chatgpt.js +75 -0
  77. package/dist/bundle/chunks/openai-codex-responses-EMHXEJR4.js +10 -0
  78. package/dist/bundle/chunks/openai-codex.js +75 -0
  79. package/dist/bundle/chunks/openai-completions-LPKRZYMC.js +7 -0
  80. package/dist/bundle/chunks/openai-responses-TOOBRHUV.js +3 -0
  81. package/dist/bundle/chunks/openrouter-images-ZVXWCSIM.js +2 -0
  82. package/dist/bundle/chunks/openrouter.js +75 -0
  83. package/dist/bundle/chunks/relay-messages-QRFJXG5X.js +8 -0
  84. package/dist/bundle/chunks/runtime-O5HLCH3V.js +2 -0
  85. package/dist/bundle/chunks/src-UK77SYZE.js +4 -0
  86. package/dist/bundle/chunks/typesafe-system-one-PRR5K6CI.js +2 -0
  87. package/dist/bundle/chunks/virtual-modules-ZGB2J7DY.js +2 -0
  88. package/dist/bundle/chunks/xai.js +2 -0
  89. package/dist/bundle/cli-runtime.js +3 -0
  90. package/dist/bundle/cli.js +5 -0
  91. package/dist/bundle/index.js +2 -0
  92. package/dist/bundle/rpc-entry.js +3 -0
  93. package/dist/cli/args.d.ts +61 -0
  94. package/dist/cli/args.d.ts.map +1 -0
  95. package/dist/cli/args.js +454 -0
  96. package/dist/cli/args.js.map +1 -0
  97. package/dist/cli/auth-check.d.ts +19 -0
  98. package/dist/cli/auth-check.d.ts.map +1 -0
  99. package/dist/cli/auth-check.js +50 -0
  100. package/dist/cli/auth-check.js.map +1 -0
  101. package/dist/cli/auth-command.d.ts +24 -0
  102. package/dist/cli/auth-command.d.ts.map +1 -0
  103. package/dist/cli/auth-command.js +103 -0
  104. package/dist/cli/auth-command.js.map +1 -0
  105. package/dist/cli/config-selector.d.ts +16 -0
  106. package/dist/cli/config-selector.d.ts.map +1 -0
  107. package/dist/cli/config-selector.js +32 -0
  108. package/dist/cli/config-selector.js.map +1 -0
  109. package/dist/cli/credential-print.d.ts +13 -0
  110. package/dist/cli/credential-print.d.ts.map +1 -0
  111. package/dist/cli/credential-print.js +76 -0
  112. package/dist/cli/credential-print.js.map +1 -0
  113. package/dist/cli/file-processor.d.ts +15 -0
  114. package/dist/cli/file-processor.d.ts.map +1 -0
  115. package/dist/cli/file-processor.js +71 -0
  116. package/dist/cli/file-processor.js.map +1 -0
  117. package/dist/cli/initial-message.d.ts +18 -0
  118. package/dist/cli/initial-message.d.ts.map +1 -0
  119. package/dist/cli/initial-message.js +22 -0
  120. package/dist/cli/initial-message.js.map +1 -0
  121. package/dist/cli/list-models.d.ts +9 -0
  122. package/dist/cli/list-models.d.ts.map +1 -0
  123. package/dist/cli/list-models.js +98 -0
  124. package/dist/cli/list-models.js.map +1 -0
  125. package/dist/cli/project-trust.d.ts +10 -0
  126. package/dist/cli/project-trust.d.ts.map +1 -0
  127. package/dist/cli/project-trust.js +48 -0
  128. package/dist/cli/project-trust.js.map +1 -0
  129. package/dist/cli/session-picker.d.ts +10 -0
  130. package/dist/cli/session-picker.d.ts.map +1 -0
  131. package/dist/cli/session-picker.js +36 -0
  132. package/dist/cli/session-picker.js.map +1 -0
  133. package/dist/cli/setup.d.ts +2 -0
  134. package/dist/cli/setup.d.ts.map +1 -0
  135. package/dist/cli/setup.js +12 -0
  136. package/dist/cli/setup.js.map +1 -0
  137. package/dist/cli/startup-ui.d.ts +20 -0
  138. package/dist/cli/startup-ui.d.ts.map +1 -0
  139. package/dist/cli/startup-ui.js +193 -0
  140. package/dist/cli/startup-ui.js.map +1 -0
  141. package/dist/cli.d.ts +3 -0
  142. package/dist/cli.d.ts.map +1 -0
  143. package/dist/cli.js +6 -0
  144. package/dist/cli.js.map +1 -0
  145. package/dist/config.d.ts +108 -0
  146. package/dist/config.d.ts.map +1 -0
  147. package/dist/config.js +264 -0
  148. package/dist/config.js.map +1 -0
  149. package/dist/core/agent-session-runtime.d.ts +119 -0
  150. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  151. package/dist/core/agent-session-runtime.js +317 -0
  152. package/dist/core/agent-session-runtime.js.map +1 -0
  153. package/dist/core/agent-session-services.d.ts +86 -0
  154. package/dist/core/agent-session-services.d.ts.map +1 -0
  155. package/dist/core/agent-session-services.js +147 -0
  156. package/dist/core/agent-session-services.js.map +1 -0
  157. package/dist/core/agent-session.d.ts +891 -0
  158. package/dist/core/agent-session.d.ts.map +1 -0
  159. package/dist/core/agent-session.js +3553 -0
  160. package/dist/core/agent-session.js.map +1 -0
  161. package/dist/core/auth-guidance.d.ts +5 -0
  162. package/dist/core/auth-guidance.d.ts.map +1 -0
  163. package/dist/core/auth-guidance.js +21 -0
  164. package/dist/core/auth-guidance.js.map +1 -0
  165. package/dist/core/auth-storage.d.ts +72 -0
  166. package/dist/core/auth-storage.d.ts.map +1 -0
  167. package/dist/core/auth-storage.js +426 -0
  168. package/dist/core/auth-storage.js.map +1 -0
  169. package/dist/core/bash-executor.d.ts +32 -0
  170. package/dist/core/bash-executor.d.ts.map +1 -0
  171. package/dist/core/bash-executor.js +106 -0
  172. package/dist/core/bash-executor.js.map +1 -0
  173. package/dist/core/bug-report.d.ts +176 -0
  174. package/dist/core/bug-report.d.ts.map +1 -0
  175. package/dist/core/bug-report.js +292 -0
  176. package/dist/core/bug-report.js.map +1 -0
  177. package/dist/core/cache-stats.d.ts +49 -0
  178. package/dist/core/cache-stats.d.ts.map +1 -0
  179. package/dist/core/cache-stats.js +112 -0
  180. package/dist/core/cache-stats.js.map +1 -0
  181. package/dist/core/cache-warmer.d.ts +103 -0
  182. package/dist/core/cache-warmer.d.ts.map +1 -0
  183. package/dist/core/cache-warmer.js +356 -0
  184. package/dist/core/cache-warmer.js.map +1 -0
  185. package/dist/core/compaction/branch-summarization.d.ts +98 -0
  186. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  187. package/dist/core/compaction/branch-summarization.js +251 -0
  188. package/dist/core/compaction/branch-summarization.js.map +1 -0
  189. package/dist/core/compaction/compaction.d.ts +145 -0
  190. package/dist/core/compaction/compaction.d.ts.map +1 -0
  191. package/dist/core/compaction/compaction.js +744 -0
  192. package/dist/core/compaction/compaction.js.map +1 -0
  193. package/dist/core/compaction/index.d.ts +7 -0
  194. package/dist/core/compaction/index.d.ts.map +1 -0
  195. package/dist/core/compaction/index.js +7 -0
  196. package/dist/core/compaction/index.js.map +1 -0
  197. package/dist/core/compaction/utils.d.ts +39 -0
  198. package/dist/core/compaction/utils.d.ts.map +1 -0
  199. package/dist/core/compaction/utils.js +149 -0
  200. package/dist/core/compaction/utils.js.map +1 -0
  201. package/dist/core/crash-log.d.ts +27 -0
  202. package/dist/core/crash-log.d.ts.map +1 -0
  203. package/dist/core/crash-log.js +140 -0
  204. package/dist/core/crash-log.js.map +1 -0
  205. package/dist/core/defaults.d.ts +4 -0
  206. package/dist/core/defaults.d.ts.map +1 -0
  207. package/dist/core/defaults.js +11 -0
  208. package/dist/core/defaults.js.map +1 -0
  209. package/dist/core/diagnostics.d.ts +15 -0
  210. package/dist/core/diagnostics.d.ts.map +1 -0
  211. package/dist/core/diagnostics.js +2 -0
  212. package/dist/core/diagnostics.js.map +1 -0
  213. package/dist/core/event-bus.d.ts +9 -0
  214. package/dist/core/event-bus.d.ts.map +1 -0
  215. package/dist/core/event-bus.js +25 -0
  216. package/dist/core/event-bus.js.map +1 -0
  217. package/dist/core/exec.d.ts +29 -0
  218. package/dist/core/exec.d.ts.map +1 -0
  219. package/dist/core/exec.js +75 -0
  220. package/dist/core/exec.js.map +1 -0
  221. package/dist/core/experimental.d.ts +2 -0
  222. package/dist/core/experimental.d.ts.map +1 -0
  223. package/dist/core/experimental.js +4 -0
  224. package/dist/core/experimental.js.map +1 -0
  225. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  226. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  227. package/dist/core/export-html/ansi-to-html.js +249 -0
  228. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  229. package/dist/core/export-html/index.d.ts +37 -0
  230. package/dist/core/export-html/index.d.ts.map +1 -0
  231. package/dist/core/export-html/index.js +226 -0
  232. package/dist/core/export-html/index.js.map +1 -0
  233. package/dist/core/export-html/template.css +1076 -0
  234. package/dist/core/export-html/template.html +55 -0
  235. package/dist/core/export-html/template.js +1918 -0
  236. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  237. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  238. package/dist/core/export-html/tool-renderer.js +108 -0
  239. package/dist/core/export-html/tool-renderer.js.map +1 -0
  240. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  241. package/dist/core/export-html/vendor/marked.min.js +78 -0
  242. package/dist/core/extensions/index.d.ts +12 -0
  243. package/dist/core/extensions/index.d.ts.map +1 -0
  244. package/dist/core/extensions/index.js +9 -0
  245. package/dist/core/extensions/index.js.map +1 -0
  246. package/dist/core/extensions/jiti-loader.d.ts +2 -0
  247. package/dist/core/extensions/jiti-loader.d.ts.map +1 -0
  248. package/dist/core/extensions/jiti-loader.js +4 -0
  249. package/dist/core/extensions/jiti-loader.js.map +1 -0
  250. package/dist/core/extensions/jiti-static-loader.d.ts +2 -0
  251. package/dist/core/extensions/jiti-static-loader.d.ts.map +1 -0
  252. package/dist/core/extensions/jiti-static-loader.js +4 -0
  253. package/dist/core/extensions/jiti-static-loader.js.map +1 -0
  254. package/dist/core/extensions/loader.d.ts +23 -0
  255. package/dist/core/extensions/loader.d.ts.map +1 -0
  256. package/dist/core/extensions/loader.js +701 -0
  257. package/dist/core/extensions/loader.js.map +1 -0
  258. package/dist/core/extensions/runner.d.ts +213 -0
  259. package/dist/core/extensions/runner.d.ts.map +1 -0
  260. package/dist/core/extensions/runner.js +1239 -0
  261. package/dist/core/extensions/runner.js.map +1 -0
  262. package/dist/core/extensions/types.d.ts +1720 -0
  263. package/dist/core/extensions/types.d.ts.map +1 -0
  264. package/dist/core/extensions/types.js +48 -0
  265. package/dist/core/extensions/types.js.map +1 -0
  266. package/dist/core/extensions/virtual-modules.d.ts +3 -0
  267. package/dist/core/extensions/virtual-modules.d.ts.map +1 -0
  268. package/dist/core/extensions/virtual-modules.js +38 -0
  269. package/dist/core/extensions/virtual-modules.js.map +1 -0
  270. package/dist/core/extensions/wrapper.d.ts +20 -0
  271. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  272. package/dist/core/extensions/wrapper.js +22 -0
  273. package/dist/core/extensions/wrapper.js.map +1 -0
  274. package/dist/core/footer-data-provider.d.ts +64 -0
  275. package/dist/core/footer-data-provider.d.ts.map +1 -0
  276. package/dist/core/footer-data-provider.js +338 -0
  277. package/dist/core/footer-data-provider.js.map +1 -0
  278. package/dist/core/harness-core.d.ts +50 -0
  279. package/dist/core/harness-core.d.ts.map +1 -0
  280. package/dist/core/harness-core.js +240 -0
  281. package/dist/core/harness-core.js.map +1 -0
  282. package/dist/core/http-dispatcher.d.ts +22 -0
  283. package/dist/core/http-dispatcher.d.ts.map +1 -0
  284. package/dist/core/http-dispatcher.js +98 -0
  285. package/dist/core/http-dispatcher.js.map +1 -0
  286. package/dist/core/index.d.ts +14 -0
  287. package/dist/core/index.d.ts.map +1 -0
  288. package/dist/core/index.js +13 -0
  289. package/dist/core/index.js.map +1 -0
  290. package/dist/core/keybindings.d.ts +428 -0
  291. package/dist/core/keybindings.d.ts.map +1 -0
  292. package/dist/core/keybindings.js +321 -0
  293. package/dist/core/keybindings.js.map +1 -0
  294. package/dist/core/mcp-servers.d.ts +125 -0
  295. package/dist/core/mcp-servers.d.ts.map +1 -0
  296. package/dist/core/mcp-servers.js +198 -0
  297. package/dist/core/mcp-servers.js.map +1 -0
  298. package/dist/core/messages.d.ts +77 -0
  299. package/dist/core/messages.d.ts.map +1 -0
  300. package/dist/core/messages.js +124 -0
  301. package/dist/core/messages.js.map +1 -0
  302. package/dist/core/model-config.d.ts +759 -0
  303. package/dist/core/model-config.d.ts.map +1 -0
  304. package/dist/core/model-config.js +293 -0
  305. package/dist/core/model-config.js.map +1 -0
  306. package/dist/core/model-registry.d.ts +63 -0
  307. package/dist/core/model-registry.d.ts.map +1 -0
  308. package/dist/core/model-registry.js +144 -0
  309. package/dist/core/model-registry.js.map +1 -0
  310. package/dist/core/model-resolver.d.ts +124 -0
  311. package/dist/core/model-resolver.d.ts.map +1 -0
  312. package/dist/core/model-resolver.js +589 -0
  313. package/dist/core/model-resolver.js.map +1 -0
  314. package/dist/core/model-runtime.d.ts +142 -0
  315. package/dist/core/model-runtime.d.ts.map +1 -0
  316. package/dist/core/model-runtime.js +732 -0
  317. package/dist/core/model-runtime.js.map +1 -0
  318. package/dist/core/models-store.d.ts +22 -0
  319. package/dist/core/models-store.d.ts.map +1 -0
  320. package/dist/core/models-store.js +115 -0
  321. package/dist/core/models-store.js.map +1 -0
  322. package/dist/core/nested-tool-calls.d.ts +102 -0
  323. package/dist/core/nested-tool-calls.d.ts.map +1 -0
  324. package/dist/core/nested-tool-calls.js +178 -0
  325. package/dist/core/nested-tool-calls.js.map +1 -0
  326. package/dist/core/output-guard.d.ts +7 -0
  327. package/dist/core/output-guard.d.ts.map +1 -0
  328. package/dist/core/output-guard.js +89 -0
  329. package/dist/core/output-guard.js.map +1 -0
  330. package/dist/core/package-manager.d.ts +217 -0
  331. package/dist/core/package-manager.d.ts.map +1 -0
  332. package/dist/core/package-manager.js +2224 -0
  333. package/dist/core/package-manager.js.map +1 -0
  334. package/dist/core/project-trust.d.ts +15 -0
  335. package/dist/core/project-trust.d.ts.map +1 -0
  336. package/dist/core/project-trust.js +59 -0
  337. package/dist/core/project-trust.js.map +1 -0
  338. package/dist/core/prompt-templates.d.ts +59 -0
  339. package/dist/core/prompt-templates.d.ts.map +1 -0
  340. package/dist/core/prompt-templates.js +262 -0
  341. package/dist/core/prompt-templates.js.map +1 -0
  342. package/dist/core/provider-attribution.d.ts +4 -0
  343. package/dist/core/provider-attribution.d.ts.map +1 -0
  344. package/dist/core/provider-attribution.js +72 -0
  345. package/dist/core/provider-attribution.js.map +1 -0
  346. package/dist/core/provider-composer.d.ts +80 -0
  347. package/dist/core/provider-composer.d.ts.map +1 -0
  348. package/dist/core/provider-composer.js +484 -0
  349. package/dist/core/provider-composer.js.map +1 -0
  350. package/dist/core/relay-manifest.d.ts +8 -0
  351. package/dist/core/relay-manifest.d.ts.map +1 -0
  352. package/dist/core/relay-manifest.js +26 -0
  353. package/dist/core/relay-manifest.js.map +1 -0
  354. package/dist/core/resolve-config-value.d.ts +30 -0
  355. package/dist/core/resolve-config-value.d.ts.map +1 -0
  356. package/dist/core/resolve-config-value.js +247 -0
  357. package/dist/core/resolve-config-value.js.map +1 -0
  358. package/dist/core/resource-loader.d.ts +227 -0
  359. package/dist/core/resource-loader.d.ts.map +1 -0
  360. package/dist/core/resource-loader.js +1005 -0
  361. package/dist/core/resource-loader.js.map +1 -0
  362. package/dist/core/runtime-credentials.d.ts +15 -0
  363. package/dist/core/runtime-credentials.d.ts.map +1 -0
  364. package/dist/core/runtime-credentials.js +39 -0
  365. package/dist/core/runtime-credentials.js.map +1 -0
  366. package/dist/core/sdk.d.ts +108 -0
  367. package/dist/core/sdk.d.ts.map +1 -0
  368. package/dist/core/sdk.js +315 -0
  369. package/dist/core/sdk.js.map +1 -0
  370. package/dist/core/session-cwd.d.ts +19 -0
  371. package/dist/core/session-cwd.d.ts.map +1 -0
  372. package/dist/core/session-cwd.js +38 -0
  373. package/dist/core/session-cwd.js.map +1 -0
  374. package/dist/core/session-export.d.ts +8 -0
  375. package/dist/core/session-export.d.ts.map +1 -0
  376. package/dist/core/session-export.js +33 -0
  377. package/dist/core/session-export.js.map +1 -0
  378. package/dist/core/session-manager.d.ts +416 -0
  379. package/dist/core/session-manager.d.ts.map +1 -0
  380. package/dist/core/session-manager.js +1523 -0
  381. package/dist/core/session-manager.js.map +1 -0
  382. package/dist/core/settings-diagnostics.d.ts +9 -0
  383. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  384. package/dist/core/settings-diagnostics.js +21 -0
  385. package/dist/core/settings-diagnostics.js.map +1 -0
  386. package/dist/core/settings-manager.d.ts +423 -0
  387. package/dist/core/settings-manager.d.ts.map +1 -0
  388. package/dist/core/settings-manager.js +1120 -0
  389. package/dist/core/settings-manager.js.map +1 -0
  390. package/dist/core/skills.d.ts +60 -0
  391. package/dist/core/skills.d.ts.map +1 -0
  392. package/dist/core/skills.js +408 -0
  393. package/dist/core/skills.js.map +1 -0
  394. package/dist/core/slash-commands.d.ts +15 -0
  395. package/dist/core/slash-commands.d.ts.map +1 -0
  396. package/dist/core/slash-commands.js +29 -0
  397. package/dist/core/slash-commands.js.map +1 -0
  398. package/dist/core/source-info.d.ts +26 -0
  399. package/dist/core/source-info.d.ts.map +1 -0
  400. package/dist/core/source-info.js +35 -0
  401. package/dist/core/source-info.js.map +1 -0
  402. package/dist/core/system-prompt.d.ts +71 -0
  403. package/dist/core/system-prompt.d.ts.map +1 -0
  404. package/dist/core/system-prompt.js +147 -0
  405. package/dist/core/system-prompt.js.map +1 -0
  406. package/dist/core/telemetry.d.ts +3 -0
  407. package/dist/core/telemetry.d.ts.map +1 -0
  408. package/dist/core/telemetry.js +9 -0
  409. package/dist/core/telemetry.js.map +1 -0
  410. package/dist/core/timings.d.ts +10 -0
  411. package/dist/core/timings.d.ts.map +1 -0
  412. package/dist/core/timings.js +41 -0
  413. package/dist/core/timings.js.map +1 -0
  414. package/dist/core/tools/bash.d.ts +100 -0
  415. package/dist/core/tools/bash.d.ts.map +1 -0
  416. package/dist/core/tools/bash.js +333 -0
  417. package/dist/core/tools/bash.js.map +1 -0
  418. package/dist/core/tools/edit-diff.d.ts +101 -0
  419. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  420. package/dist/core/tools/edit-diff.js +421 -0
  421. package/dist/core/tools/edit-diff.js.map +1 -0
  422. package/dist/core/tools/edit.d.ts +44 -0
  423. package/dist/core/tools/edit.d.ts.map +1 -0
  424. package/dist/core/tools/edit.js +147 -0
  425. package/dist/core/tools/edit.js.map +1 -0
  426. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  427. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  428. package/dist/core/tools/file-mutation-queue.js +52 -0
  429. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  430. package/dist/core/tools/find.d.ts +42 -0
  431. package/dist/core/tools/find.d.ts.map +1 -0
  432. package/dist/core/tools/find.js +251 -0
  433. package/dist/core/tools/find.js.map +1 -0
  434. package/dist/core/tools/grep.d.ts +41 -0
  435. package/dist/core/tools/grep.d.ts.map +1 -0
  436. package/dist/core/tools/grep.js +252 -0
  437. package/dist/core/tools/grep.js.map +1 -0
  438. package/dist/core/tools/index.d.ts +43 -0
  439. package/dist/core/tools/index.d.ts.map +1 -0
  440. package/dist/core/tools/index.js +129 -0
  441. package/dist/core/tools/index.js.map +1 -0
  442. package/dist/core/tools/ls.d.ts +41 -0
  443. package/dist/core/tools/ls.d.ts.map +1 -0
  444. package/dist/core/tools/ls.js +126 -0
  445. package/dist/core/tools/ls.js.map +1 -0
  446. package/dist/core/tools/output-accumulator.d.ts +63 -0
  447. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  448. package/dist/core/tools/output-accumulator.js +214 -0
  449. package/dist/core/tools/output-accumulator.js.map +1 -0
  450. package/dist/core/tools/path-utils.d.ts +10 -0
  451. package/dist/core/tools/path-utils.d.ts.map +1 -0
  452. package/dist/core/tools/path-utils.js +99 -0
  453. package/dist/core/tools/path-utils.js.map +1 -0
  454. package/dist/core/tools/powershell.d.ts +16 -0
  455. package/dist/core/tools/powershell.d.ts.map +1 -0
  456. package/dist/core/tools/powershell.js +39 -0
  457. package/dist/core/tools/powershell.js.map +1 -0
  458. package/dist/core/tools/read.d.ts +42 -0
  459. package/dist/core/tools/read.d.ts.map +1 -0
  460. package/dist/core/tools/read.js +169 -0
  461. package/dist/core/tools/read.js.map +1 -0
  462. package/dist/core/tools/render-utils.d.ts +30 -0
  463. package/dist/core/tools/render-utils.d.ts.map +1 -0
  464. package/dist/core/tools/render-utils.js +91 -0
  465. package/dist/core/tools/render-utils.js.map +1 -0
  466. package/dist/core/tools/renderers/bash.d.ts +12 -0
  467. package/dist/core/tools/renderers/bash.d.ts.map +1 -0
  468. package/dist/core/tools/renderers/bash.js +117 -0
  469. package/dist/core/tools/renderers/bash.js.map +1 -0
  470. package/dist/core/tools/renderers/edit.d.ts +23 -0
  471. package/dist/core/tools/renderers/edit.d.ts.map +1 -0
  472. package/dist/core/tools/renderers/edit.js +167 -0
  473. package/dist/core/tools/renderers/edit.js.map +1 -0
  474. package/dist/core/tools/renderers/find.d.ts +10 -0
  475. package/dist/core/tools/renderers/find.d.ts.map +1 -0
  476. package/dist/core/tools/renderers/find.js +64 -0
  477. package/dist/core/tools/renderers/find.js.map +1 -0
  478. package/dist/core/tools/renderers/grep.d.ts +10 -0
  479. package/dist/core/tools/renderers/grep.d.ts.map +1 -0
  480. package/dist/core/tools/renderers/grep.js +69 -0
  481. package/dist/core/tools/renderers/grep.js.map +1 -0
  482. package/dist/core/tools/renderers/index.d.ts +28 -0
  483. package/dist/core/tools/renderers/index.d.ts.map +1 -0
  484. package/dist/core/tools/renderers/index.js +47 -0
  485. package/dist/core/tools/renderers/index.js.map +1 -0
  486. package/dist/core/tools/renderers/ls.d.ts +10 -0
  487. package/dist/core/tools/renderers/ls.d.ts.map +1 -0
  488. package/dist/core/tools/renderers/ls.js +58 -0
  489. package/dist/core/tools/renderers/ls.js.map +1 -0
  490. package/dist/core/tools/renderers/read.d.ts +11 -0
  491. package/dist/core/tools/renderers/read.d.ts.map +1 -0
  492. package/dist/core/tools/renderers/read.js +130 -0
  493. package/dist/core/tools/renderers/read.js.map +1 -0
  494. package/dist/core/tools/renderers/write.d.ts +10 -0
  495. package/dist/core/tools/renderers/write.d.ts.map +1 -0
  496. package/dist/core/tools/renderers/write.js +153 -0
  497. package/dist/core/tools/renderers/write.js.map +1 -0
  498. package/dist/core/tools/tool-definition-wrapper.d.ts +16 -0
  499. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  500. package/dist/core/tools/tool-definition-wrapper.js +38 -0
  501. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  502. package/dist/core/tools/truncate.d.ts +84 -0
  503. package/dist/core/tools/truncate.d.ts.map +1 -0
  504. package/dist/core/tools/truncate.js +244 -0
  505. package/dist/core/tools/truncate.js.map +1 -0
  506. package/dist/core/tools/write.d.ts +30 -0
  507. package/dist/core/tools/write.d.ts.map +1 -0
  508. package/dist/core/tools/write.js +61 -0
  509. package/dist/core/tools/write.js.map +1 -0
  510. package/dist/core/trust-manager.d.ts +36 -0
  511. package/dist/core/trust-manager.d.ts.map +1 -0
  512. package/dist/core/trust-manager.js +204 -0
  513. package/dist/core/trust-manager.js.map +1 -0
  514. package/dist/core/usage-totals.d.ts +21 -0
  515. package/dist/core/usage-totals.d.ts.map +1 -0
  516. package/dist/core/usage-totals.js +79 -0
  517. package/dist/core/usage-totals.js.map +1 -0
  518. package/dist/core/virtual-models.d.ts +117 -0
  519. package/dist/core/virtual-models.d.ts.map +1 -0
  520. package/dist/core/virtual-models.js +124 -0
  521. package/dist/core/virtual-models.js.map +1 -0
  522. package/dist/core/workspace-probe.d.ts +8 -0
  523. package/dist/core/workspace-probe.d.ts.map +1 -0
  524. package/dist/core/workspace-probe.js +65 -0
  525. package/dist/core/workspace-probe.js.map +1 -0
  526. package/dist/extensions/codemode/execute.d.ts +16 -0
  527. package/dist/extensions/codemode/execute.d.ts.map +1 -0
  528. package/dist/extensions/codemode/execute.js +577 -0
  529. package/dist/extensions/codemode/execute.js.map +1 -0
  530. package/dist/extensions/codemode/execute.lazy.d.ts +3 -0
  531. package/dist/extensions/codemode/execute.lazy.d.ts.map +1 -0
  532. package/dist/extensions/codemode/execute.lazy.js +3 -0
  533. package/dist/extensions/codemode/execute.lazy.js.map +1 -0
  534. package/dist/extensions/codemode/index.d.ts +21 -0
  535. package/dist/extensions/codemode/index.d.ts.map +1 -0
  536. package/dist/extensions/codemode/index.js +31 -0
  537. package/dist/extensions/codemode/index.js.map +1 -0
  538. package/dist/extensions/codemode/renderer.d.ts +12 -0
  539. package/dist/extensions/codemode/renderer.d.ts.map +1 -0
  540. package/dist/extensions/codemode/renderer.js +137 -0
  541. package/dist/extensions/codemode/renderer.js.map +1 -0
  542. package/dist/extensions/codemode/tool.d.ts +123 -0
  543. package/dist/extensions/codemode/tool.d.ts.map +1 -0
  544. package/dist/extensions/codemode/tool.js +268 -0
  545. package/dist/extensions/codemode/tool.js.map +1 -0
  546. package/dist/extensions/codemode/worker.d.ts +7 -0
  547. package/dist/extensions/codemode/worker.d.ts.map +1 -0
  548. package/dist/extensions/codemode/worker.js +7 -0
  549. package/dist/extensions/codemode/worker.js.map +1 -0
  550. package/dist/extensions/index.d.ts +3 -0
  551. package/dist/extensions/index.d.ts.map +1 -0
  552. package/dist/extensions/index.js +19 -0
  553. package/dist/extensions/index.js.map +1 -0
  554. package/dist/extensions/intake/docx.d.ts +42 -0
  555. package/dist/extensions/intake/docx.d.ts.map +1 -0
  556. package/dist/extensions/intake/docx.js +148 -0
  557. package/dist/extensions/intake/docx.js.map +1 -0
  558. package/dist/extensions/intake/index.d.ts +17 -0
  559. package/dist/extensions/intake/index.d.ts.map +1 -0
  560. package/dist/extensions/intake/index.js +88 -0
  561. package/dist/extensions/intake/index.js.map +1 -0
  562. package/dist/extensions/intake/prompt.d.ts +6 -0
  563. package/dist/extensions/intake/prompt.d.ts.map +1 -0
  564. package/dist/extensions/intake/prompt.js +41 -0
  565. package/dist/extensions/intake/prompt.js.map +1 -0
  566. package/dist/extensions/intake/questionnaire.d.ts +84 -0
  567. package/dist/extensions/intake/questionnaire.d.ts.map +1 -0
  568. package/dist/extensions/intake/questionnaire.js +472 -0
  569. package/dist/extensions/intake/questionnaire.js.map +1 -0
  570. package/dist/extensions/laya/assessment.d.ts +40 -0
  571. package/dist/extensions/laya/assessment.d.ts.map +1 -0
  572. package/dist/extensions/laya/assessment.js +191 -0
  573. package/dist/extensions/laya/assessment.js.map +1 -0
  574. package/dist/extensions/laya/docker.d.ts +19 -0
  575. package/dist/extensions/laya/docker.d.ts.map +1 -0
  576. package/dist/extensions/laya/docker.js +44 -0
  577. package/dist/extensions/laya/docker.js.map +1 -0
  578. package/dist/extensions/laya/index.d.ts +43 -0
  579. package/dist/extensions/laya/index.d.ts.map +1 -0
  580. package/dist/extensions/laya/index.js +780 -0
  581. package/dist/extensions/laya/index.js.map +1 -0
  582. package/dist/extensions/laya/learn.d.ts +67 -0
  583. package/dist/extensions/laya/learn.d.ts.map +1 -0
  584. package/dist/extensions/laya/learn.js +263 -0
  585. package/dist/extensions/laya/learn.js.map +1 -0
  586. package/dist/extensions/laya/memory.d.ts +48 -0
  587. package/dist/extensions/laya/memory.d.ts.map +1 -0
  588. package/dist/extensions/laya/memory.js +107 -0
  589. package/dist/extensions/laya/memory.js.map +1 -0
  590. package/dist/extensions/laya/model-manifest.d.ts +7 -0
  591. package/dist/extensions/laya/model-manifest.d.ts.map +1 -0
  592. package/dist/extensions/laya/model-manifest.js +48 -0
  593. package/dist/extensions/laya/model-manifest.js.map +1 -0
  594. package/dist/extensions/laya/policy.d.ts +130 -0
  595. package/dist/extensions/laya/policy.d.ts.map +1 -0
  596. package/dist/extensions/laya/policy.js +222 -0
  597. package/dist/extensions/laya/policy.js.map +1 -0
  598. package/dist/extensions/laya/questions.d.ts +60 -0
  599. package/dist/extensions/laya/questions.d.ts.map +1 -0
  600. package/dist/extensions/laya/questions.js +189 -0
  601. package/dist/extensions/laya/questions.js.map +1 -0
  602. package/dist/extensions/laya/routers.d.ts +25 -0
  603. package/dist/extensions/laya/routers.d.ts.map +1 -0
  604. package/dist/extensions/laya/routers.js +121 -0
  605. package/dist/extensions/laya/routers.js.map +1 -0
  606. package/dist/extensions/laya/runtime.d.ts +58 -0
  607. package/dist/extensions/laya/runtime.d.ts.map +1 -0
  608. package/dist/extensions/laya/runtime.js +127 -0
  609. package/dist/extensions/laya/runtime.js.map +1 -0
  610. package/dist/extensions/laya/seed.d.ts +39 -0
  611. package/dist/extensions/laya/seed.d.ts.map +1 -0
  612. package/dist/extensions/laya/seed.js +358 -0
  613. package/dist/extensions/laya/seed.js.map +1 -0
  614. package/dist/extensions/laya/server.d.ts +50 -0
  615. package/dist/extensions/laya/server.d.ts.map +1 -0
  616. package/dist/extensions/laya/server.js +251 -0
  617. package/dist/extensions/laya/server.js.map +1 -0
  618. package/dist/extensions/laya/telemetry.d.ts +94 -0
  619. package/dist/extensions/laya/telemetry.d.ts.map +1 -0
  620. package/dist/extensions/laya/telemetry.js +107 -0
  621. package/dist/extensions/laya/telemetry.js.map +1 -0
  622. package/dist/extensions/laya/train-script.d.ts +8 -0
  623. package/dist/extensions/laya/train-script.d.ts.map +1 -0
  624. package/dist/extensions/laya/train-script.js +422 -0
  625. package/dist/extensions/laya/train-script.js.map +1 -0
  626. package/dist/extensions/laya/training.d.ts +176 -0
  627. package/dist/extensions/laya/training.d.ts.map +1 -0
  628. package/dist/extensions/laya/training.js +337 -0
  629. package/dist/extensions/laya/training.js.map +1 -0
  630. package/dist/extensions/llama/client.d.ts +69 -0
  631. package/dist/extensions/llama/client.d.ts.map +1 -0
  632. package/dist/extensions/llama/client.js +313 -0
  633. package/dist/extensions/llama/client.js.map +1 -0
  634. package/dist/extensions/llama/huggingface.d.ts +23 -0
  635. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  636. package/dist/extensions/llama/huggingface.js +141 -0
  637. package/dist/extensions/llama/huggingface.js.map +1 -0
  638. package/dist/extensions/llama/index.d.ts +3 -0
  639. package/dist/extensions/llama/index.d.ts.map +1 -0
  640. package/dist/extensions/llama/index.js +219 -0
  641. package/dist/extensions/llama/index.js.map +1 -0
  642. package/dist/extensions/llama/provider.d.ts +12 -0
  643. package/dist/extensions/llama/provider.d.ts.map +1 -0
  644. package/dist/extensions/llama/provider.js +213 -0
  645. package/dist/extensions/llama/provider.js.map +1 -0
  646. package/dist/extensions/llama/ui.d.ts +42 -0
  647. package/dist/extensions/llama/ui.d.ts.map +1 -0
  648. package/dist/extensions/llama/ui.js +416 -0
  649. package/dist/extensions/llama/ui.js.map +1 -0
  650. package/dist/extensions/mcp/cli.d.ts +21 -0
  651. package/dist/extensions/mcp/cli.d.ts.map +1 -0
  652. package/dist/extensions/mcp/cli.js +503 -0
  653. package/dist/extensions/mcp/cli.js.map +1 -0
  654. package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
  655. package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
  656. package/dist/extensions/mcp/cli.lazy.js +3 -0
  657. package/dist/extensions/mcp/cli.lazy.js.map +1 -0
  658. package/dist/extensions/mcp/config.d.ts +84 -0
  659. package/dist/extensions/mcp/config.d.ts.map +1 -0
  660. package/dist/extensions/mcp/config.js +194 -0
  661. package/dist/extensions/mcp/config.js.map +1 -0
  662. package/dist/extensions/mcp/index.d.ts +79 -0
  663. package/dist/extensions/mcp/index.d.ts.map +1 -0
  664. package/dist/extensions/mcp/index.js +1101 -0
  665. package/dist/extensions/mcp/index.js.map +1 -0
  666. package/dist/extensions/mcp/log.d.ts +16 -0
  667. package/dist/extensions/mcp/log.d.ts.map +1 -0
  668. package/dist/extensions/mcp/log.js +66 -0
  669. package/dist/extensions/mcp/log.js.map +1 -0
  670. package/dist/extensions/mcp/oauth.d.ts +98 -0
  671. package/dist/extensions/mcp/oauth.d.ts.map +1 -0
  672. package/dist/extensions/mcp/oauth.js +366 -0
  673. package/dist/extensions/mcp/oauth.js.map +1 -0
  674. package/dist/extensions/mcp/resources.d.ts +43 -0
  675. package/dist/extensions/mcp/resources.d.ts.map +1 -0
  676. package/dist/extensions/mcp/resources.js +262 -0
  677. package/dist/extensions/mcp/resources.js.map +1 -0
  678. package/dist/extensions/mcp/runtime.d.ts +98 -0
  679. package/dist/extensions/mcp/runtime.d.ts.map +1 -0
  680. package/dist/extensions/mcp/runtime.js +395 -0
  681. package/dist/extensions/mcp/runtime.js.map +1 -0
  682. package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
  683. package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
  684. package/dist/extensions/mcp/runtime.lazy.js +3 -0
  685. package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
  686. package/dist/extensions/mcp/tools.d.ts +86 -0
  687. package/dist/extensions/mcp/tools.d.ts.map +1 -0
  688. package/dist/extensions/mcp/tools.js +252 -0
  689. package/dist/extensions/mcp/tools.js.map +1 -0
  690. package/dist/extensions/mcp/ui.d.ts +60 -0
  691. package/dist/extensions/mcp/ui.d.ts.map +1 -0
  692. package/dist/extensions/mcp/ui.js +178 -0
  693. package/dist/extensions/mcp/ui.js.map +1 -0
  694. package/dist/extensions/tool-search/index.d.ts +12 -0
  695. package/dist/extensions/tool-search/index.d.ts.map +1 -0
  696. package/dist/extensions/tool-search/index.js +15 -0
  697. package/dist/extensions/tool-search/index.js.map +1 -0
  698. package/dist/extensions/tool-search/tool.d.ts +73 -0
  699. package/dist/extensions/tool-search/tool.d.ts.map +1 -0
  700. package/dist/extensions/tool-search/tool.js +189 -0
  701. package/dist/extensions/tool-search/tool.js.map +1 -0
  702. package/dist/index.d.ts +44 -0
  703. package/dist/index.d.ts.map +1 -0
  704. package/dist/index.js +53 -0
  705. package/dist/index.js.map +1 -0
  706. package/dist/main.d.ts +16 -0
  707. package/dist/main.d.ts.map +1 -0
  708. package/dist/main.js +820 -0
  709. package/dist/main.js.map +1 -0
  710. package/dist/migrations.d.ts +33 -0
  711. package/dist/migrations.d.ts.map +1 -0
  712. package/dist/migrations.js +282 -0
  713. package/dist/migrations.js.map +1 -0
  714. package/dist/modes/index.d.ts +10 -0
  715. package/dist/modes/index.d.ts.map +1 -0
  716. package/dist/modes/index.js +8 -0
  717. package/dist/modes/index.js.map +1 -0
  718. package/dist/modes/interactive/assets/clankolas.png +0 -0
  719. package/dist/modes/interactive/bug-report.d.ts +16 -0
  720. package/dist/modes/interactive/bug-report.d.ts.map +1 -0
  721. package/dist/modes/interactive/bug-report.js +171 -0
  722. package/dist/modes/interactive/bug-report.js.map +1 -0
  723. package/dist/modes/interactive/chat-viewport.d.ts +20 -0
  724. package/dist/modes/interactive/chat-viewport.d.ts.map +1 -0
  725. package/dist/modes/interactive/chat-viewport.js +28 -0
  726. package/dist/modes/interactive/chat-viewport.js.map +1 -0
  727. package/dist/modes/interactive/components/armin.d.ts +37 -0
  728. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  729. package/dist/modes/interactive/components/armin.js +335 -0
  730. package/dist/modes/interactive/components/armin.js.map +1 -0
  731. package/dist/modes/interactive/components/assistant-message.d.ts +26 -0
  732. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  733. package/dist/modes/interactive/components/assistant-message.js +158 -0
  734. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  735. package/dist/modes/interactive/components/auth-url.d.ts +14 -0
  736. package/dist/modes/interactive/components/auth-url.d.ts.map +1 -0
  737. package/dist/modes/interactive/components/auth-url.js +37 -0
  738. package/dist/modes/interactive/components/auth-url.js.map +1 -0
  739. package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  740. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  741. package/dist/modes/interactive/components/bash-execution.js +175 -0
  742. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  743. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  744. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  745. package/dist/modes/interactive/components/bordered-loader.js +54 -0
  746. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  747. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  748. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  749. package/dist/modes/interactive/components/branch-summary-message.js +51 -0
  750. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  751. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  752. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  753. package/dist/modes/interactive/components/compaction-summary-message.js +52 -0
  754. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  755. package/dist/modes/interactive/components/config-selector.d.ts +102 -0
  756. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  757. package/dist/modes/interactive/components/config-selector.js +772 -0
  758. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  759. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  760. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  761. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  762. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  763. package/dist/modes/interactive/components/custom-editor.d.ts +30 -0
  764. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  765. package/dist/modes/interactive/components/custom-editor.js +115 -0
  766. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  767. package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
  768. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  769. package/dist/modes/interactive/components/custom-entry.js +52 -0
  770. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  771. package/dist/modes/interactive/components/custom-message.d.ts +22 -0
  772. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  773. package/dist/modes/interactive/components/custom-message.js +87 -0
  774. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  775. package/dist/modes/interactive/components/diff.d.ts +12 -0
  776. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  777. package/dist/modes/interactive/components/diff.js +133 -0
  778. package/dist/modes/interactive/components/diff.js.map +1 -0
  779. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  780. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  781. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  782. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  783. package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  784. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
  785. package/dist/modes/interactive/components/earendil-announcement.js +40 -0
  786. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
  787. package/dist/modes/interactive/components/easter-egg-3d.d.ts +104 -0
  788. package/dist/modes/interactive/components/easter-egg-3d.d.ts.map +1 -0
  789. package/dist/modes/interactive/components/easter-egg-3d.js +1141 -0
  790. package/dist/modes/interactive/components/easter-egg-3d.js.map +1 -0
  791. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts +6 -0
  792. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts.map +1 -0
  793. package/dist/modes/interactive/components/easter-egg-3d.lazy.js +23 -0
  794. package/dist/modes/interactive/components/easter-egg-3d.lazy.js.map +1 -0
  795. package/dist/modes/interactive/components/extension-editor.d.ts +24 -0
  796. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  797. package/dist/modes/interactive/components/extension-editor.js +103 -0
  798. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  799. package/dist/modes/interactive/components/extension-input.d.ts +25 -0
  800. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  801. package/dist/modes/interactive/components/extension-input.js +67 -0
  802. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  803. package/dist/modes/interactive/components/extension-selector.d.ts +27 -0
  804. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  805. package/dist/modes/interactive/components/extension-selector.js +87 -0
  806. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  807. package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  808. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  809. package/dist/modes/interactive/components/first-time-setup.js +109 -0
  810. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  811. package/dist/modes/interactive/components/footer.d.ts +39 -0
  812. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  813. package/dist/modes/interactive/components/footer.js +265 -0
  814. package/dist/modes/interactive/components/footer.js.map +1 -0
  815. package/dist/modes/interactive/components/index.d.ts +33 -0
  816. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  817. package/dist/modes/interactive/components/index.js +34 -0
  818. package/dist/modes/interactive/components/index.js.map +1 -0
  819. package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  820. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  821. package/dist/modes/interactive/components/keybinding-hints.js +36 -0
  822. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  823. package/dist/modes/interactive/components/login-dialog.d.ts +54 -0
  824. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  825. package/dist/modes/interactive/components/login-dialog.js +194 -0
  826. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  827. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  828. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  829. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  830. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  831. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  832. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  833. package/dist/modes/interactive/components/mermaid.js +75 -0
  834. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  835. package/dist/modes/interactive/components/model-selector.d.ts +60 -0
  836. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  837. package/dist/modes/interactive/components/model-selector.js +361 -0
  838. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  839. package/dist/modes/interactive/components/oauth-selector.d.ts +39 -0
  840. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  841. package/dist/modes/interactive/components/oauth-selector.js +166 -0
  842. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  843. package/dist/modes/interactive/components/relay-logo.d.ts +22 -0
  844. package/dist/modes/interactive/components/relay-logo.d.ts.map +1 -0
  845. package/dist/modes/interactive/components/relay-logo.js +63 -0
  846. package/dist/modes/interactive/components/relay-logo.js.map +1 -0
  847. package/dist/modes/interactive/components/scoped-models-selector.d.ts +46 -0
  848. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  849. package/dist/modes/interactive/components/scoped-models-selector.js +326 -0
  850. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  851. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  852. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  853. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  854. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  855. package/dist/modes/interactive/components/session-selector.d.ts +95 -0
  856. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  857. package/dist/modes/interactive/components/session-selector.js +893 -0
  858. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  859. package/dist/modes/interactive/components/settings-selector.d.ts +96 -0
  860. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  861. package/dist/modes/interactive/components/settings-selector.js +742 -0
  862. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  863. package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  864. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  865. package/dist/modes/interactive/components/settings-submenu.js +165 -0
  866. package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  867. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  868. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  869. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  870. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  871. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  872. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  873. package/dist/modes/interactive/components/skill-invocation-message.js +54 -0
  874. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  875. package/dist/modes/interactive/components/status-indicator.d.ts +30 -0
  876. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
  877. package/dist/modes/interactive/components/status-indicator.js +67 -0
  878. package/dist/modes/interactive/components/status-indicator.js.map +1 -0
  879. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  880. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  881. package/dist/modes/interactive/components/theme-selector.js +50 -0
  882. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  883. package/dist/modes/interactive/components/themed-text.d.ts +17 -0
  884. package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
  885. package/dist/modes/interactive/components/themed-text.js +29 -0
  886. package/dist/modes/interactive/components/themed-text.js.map +1 -0
  887. package/dist/modes/interactive/components/thinking-selector.d.ts +23 -0
  888. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  889. package/dist/modes/interactive/components/thinking-selector.js +109 -0
  890. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  891. package/dist/modes/interactive/components/tool-execution.d.ts +68 -0
  892. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  893. package/dist/modes/interactive/components/tool-execution.js +314 -0
  894. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  895. package/dist/modes/interactive/components/tree-selector.d.ts +94 -0
  896. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  897. package/dist/modes/interactive/components/tree-selector.js +1254 -0
  898. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  899. package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  900. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  901. package/dist/modes/interactive/components/trust-selector.js +91 -0
  902. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  903. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  904. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  905. package/dist/modes/interactive/components/user-message-selector.js +114 -0
  906. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  907. package/dist/modes/interactive/components/user-message.d.ts +16 -0
  908. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  909. package/dist/modes/interactive/components/user-message.js +50 -0
  910. package/dist/modes/interactive/components/user-message.js.map +1 -0
  911. package/dist/modes/interactive/components/visual-truncate.d.ts +48 -0
  912. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  913. package/dist/modes/interactive/components/visual-truncate.js +66 -0
  914. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  915. package/dist/modes/interactive/external-editor.d.ts +12 -0
  916. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  917. package/dist/modes/interactive/external-editor.js +38 -0
  918. package/dist/modes/interactive/external-editor.js.map +1 -0
  919. package/dist/modes/interactive/interactive-mode.d.ts +482 -0
  920. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  921. package/dist/modes/interactive/interactive-mode.js +5861 -0
  922. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  923. package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
  924. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
  925. package/dist/modes/interactive/model-catalog-refresh.js +34 -0
  926. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
  927. package/dist/modes/interactive/model-search.d.ts +12 -0
  928. package/dist/modes/interactive/model-search.d.ts.map +1 -0
  929. package/dist/modes/interactive/model-search.js +15 -0
  930. package/dist/modes/interactive/model-search.js.map +1 -0
  931. package/dist/modes/interactive/session-share.d.ts +16 -0
  932. package/dist/modes/interactive/session-share.d.ts.map +1 -0
  933. package/dist/modes/interactive/session-share.js +119 -0
  934. package/dist/modes/interactive/session-share.js.map +1 -0
  935. package/dist/modes/interactive/theme/dark.json +78 -0
  936. package/dist/modes/interactive/theme/light.json +78 -0
  937. package/dist/modes/interactive/theme/system-theme.d.ts +55 -0
  938. package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
  939. package/dist/modes/interactive/theme/system-theme.js +546 -0
  940. package/dist/modes/interactive/theme/system-theme.js.map +1 -0
  941. package/dist/modes/interactive/theme/theme-controller.d.ts +81 -0
  942. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
  943. package/dist/modes/interactive/theme/theme-controller.js +210 -0
  944. package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
  945. package/dist/modes/interactive/theme/theme-json.d.ts +85 -0
  946. package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -0
  947. package/dist/modes/interactive/theme/theme-json.js +132 -0
  948. package/dist/modes/interactive/theme/theme-json.js.map +1 -0
  949. package/dist/modes/interactive/theme/theme-schema.json +361 -0
  950. package/dist/modes/interactive/theme/theme.d.ts +158 -0
  951. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  952. package/dist/modes/interactive/theme/theme.js +912 -0
  953. package/dist/modes/interactive/theme/theme.js.map +1 -0
  954. package/dist/modes/interactive/tui-renderer.d.ts +22 -0
  955. package/dist/modes/interactive/tui-renderer.d.ts.map +1 -0
  956. package/dist/modes/interactive/tui-renderer.js +67 -0
  957. package/dist/modes/interactive/tui-renderer.js.map +1 -0
  958. package/dist/modes/json-event.d.ts +34 -0
  959. package/dist/modes/json-event.d.ts.map +1 -0
  960. package/dist/modes/json-event.js +29 -0
  961. package/dist/modes/json-event.js.map +1 -0
  962. package/dist/modes/print-mode.d.ts +28 -0
  963. package/dist/modes/print-mode.d.ts.map +1 -0
  964. package/dist/modes/print-mode.js +142 -0
  965. package/dist/modes/print-mode.js.map +1 -0
  966. package/dist/modes/rpc/jsonl.d.ts +17 -0
  967. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  968. package/dist/modes/rpc/jsonl.js +49 -0
  969. package/dist/modes/rpc/jsonl.js.map +1 -0
  970. package/dist/modes/rpc/rpc-client.d.ts +254 -0
  971. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  972. package/dist/modes/rpc/rpc-client.js +499 -0
  973. package/dist/modes/rpc/rpc-client.js.map +1 -0
  974. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  975. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  976. package/dist/modes/rpc/rpc-mode.js +655 -0
  977. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  978. package/dist/modes/rpc/rpc-types.d.ts +478 -0
  979. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  980. package/dist/modes/rpc/rpc-types.js +8 -0
  981. package/dist/modes/rpc/rpc-types.js.map +1 -0
  982. package/dist/package-manager-cli.d.ts +8 -0
  983. package/dist/package-manager-cli.d.ts.map +1 -0
  984. package/dist/package-manager-cli.js +524 -0
  985. package/dist/package-manager-cli.js.map +1 -0
  986. package/dist/rpc-entry.d.ts +3 -0
  987. package/dist/rpc-entry.d.ts.map +1 -0
  988. package/dist/rpc-entry.js +11 -0
  989. package/dist/rpc-entry.js.map +1 -0
  990. package/dist/utils/abort.d.ts +5 -0
  991. package/dist/utils/abort.d.ts.map +1 -0
  992. package/dist/utils/abort.js +48 -0
  993. package/dist/utils/abort.js.map +1 -0
  994. package/dist/utils/ansi.d.ts +2 -0
  995. package/dist/utils/ansi.d.ts.map +1 -0
  996. package/dist/utils/ansi.js +52 -0
  997. package/dist/utils/ansi.js.map +1 -0
  998. package/dist/utils/changelog.d.ts +22 -0
  999. package/dist/utils/changelog.d.ts.map +1 -0
  1000. package/dist/utils/changelog.js +176 -0
  1001. package/dist/utils/changelog.js.map +1 -0
  1002. package/dist/utils/child-process.d.ts +18 -0
  1003. package/dist/utils/child-process.d.ts.map +1 -0
  1004. package/dist/utils/child-process.js +106 -0
  1005. package/dist/utils/child-process.js.map +1 -0
  1006. package/dist/utils/clipboard-command.d.ts +7 -0
  1007. package/dist/utils/clipboard-command.d.ts.map +1 -0
  1008. package/dist/utils/clipboard-command.js +45 -0
  1009. package/dist/utils/clipboard-command.js.map +1 -0
  1010. package/dist/utils/clipboard-image.d.ts +11 -0
  1011. package/dist/utils/clipboard-image.d.ts.map +1 -0
  1012. package/dist/utils/clipboard-image.js +214 -0
  1013. package/dist/utils/clipboard-image.js.map +1 -0
  1014. package/dist/utils/clipboard.d.ts +6 -0
  1015. package/dist/utils/clipboard.d.ts.map +1 -0
  1016. package/dist/utils/clipboard.js +156 -0
  1017. package/dist/utils/clipboard.js.map +1 -0
  1018. package/dist/utils/deprecation.d.ts +4 -0
  1019. package/dist/utils/deprecation.d.ts.map +1 -0
  1020. package/dist/utils/deprecation.js +13 -0
  1021. package/dist/utils/deprecation.js.map +1 -0
  1022. package/dist/utils/exif-orientation.d.ts +5 -0
  1023. package/dist/utils/exif-orientation.d.ts.map +1 -0
  1024. package/dist/utils/exif-orientation.js +157 -0
  1025. package/dist/utils/exif-orientation.js.map +1 -0
  1026. package/dist/utils/frontmatter.d.ts +8 -0
  1027. package/dist/utils/frontmatter.d.ts.map +1 -0
  1028. package/dist/utils/frontmatter.js +27 -0
  1029. package/dist/utils/frontmatter.js.map +1 -0
  1030. package/dist/utils/fs-watch.d.ts +5 -0
  1031. package/dist/utils/fs-watch.d.ts.map +1 -0
  1032. package/dist/utils/fs-watch.js +25 -0
  1033. package/dist/utils/fs-watch.js.map +1 -0
  1034. package/dist/utils/git.d.ts +26 -0
  1035. package/dist/utils/git.d.ts.map +1 -0
  1036. package/dist/utils/git.js +195 -0
  1037. package/dist/utils/git.js.map +1 -0
  1038. package/dist/utils/html.d.ts +7 -0
  1039. package/dist/utils/html.d.ts.map +1 -0
  1040. package/dist/utils/html.js +40 -0
  1041. package/dist/utils/html.js.map +1 -0
  1042. package/dist/utils/image-convert.d.ts +22 -0
  1043. package/dist/utils/image-convert.d.ts.map +1 -0
  1044. package/dist/utils/image-convert.js +84 -0
  1045. package/dist/utils/image-convert.js.map +1 -0
  1046. package/dist/utils/image-process.d.ts +18 -0
  1047. package/dist/utils/image-process.d.ts.map +1 -0
  1048. package/dist/utils/image-process.js +83 -0
  1049. package/dist/utils/image-process.js.map +1 -0
  1050. package/dist/utils/image-resize-core.d.ts +30 -0
  1051. package/dist/utils/image-resize-core.d.ts.map +1 -0
  1052. package/dist/utils/image-resize-core.js +124 -0
  1053. package/dist/utils/image-resize-core.js.map +1 -0
  1054. package/dist/utils/image-resize-worker.d.ts +2 -0
  1055. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  1056. package/dist/utils/image-resize-worker.js +31 -0
  1057. package/dist/utils/image-resize-worker.js.map +1 -0
  1058. package/dist/utils/image-resize.d.ts +16 -0
  1059. package/dist/utils/image-resize.d.ts.map +1 -0
  1060. package/dist/utils/image-resize.js +97 -0
  1061. package/dist/utils/image-resize.js.map +1 -0
  1062. package/dist/utils/json.d.ts +3 -0
  1063. package/dist/utils/json.d.ts.map +1 -0
  1064. package/dist/utils/json.js +7 -0
  1065. package/dist/utils/json.js.map +1 -0
  1066. package/dist/utils/management-http.d.ts +25 -0
  1067. package/dist/utils/management-http.d.ts.map +1 -0
  1068. package/dist/utils/management-http.js +54 -0
  1069. package/dist/utils/management-http.js.map +1 -0
  1070. package/dist/utils/mime.d.ts +3 -0
  1071. package/dist/utils/mime.d.ts.map +1 -0
  1072. package/dist/utils/mime.js +110 -0
  1073. package/dist/utils/mime.js.map +1 -0
  1074. package/dist/utils/open-browser.d.ts +9 -0
  1075. package/dist/utils/open-browser.d.ts.map +1 -0
  1076. package/dist/utils/open-browser.js +22 -0
  1077. package/dist/utils/open-browser.js.map +1 -0
  1078. package/dist/utils/output-files.d.ts +15 -0
  1079. package/dist/utils/output-files.d.ts.map +1 -0
  1080. package/dist/utils/output-files.js +30 -0
  1081. package/dist/utils/output-files.js.map +1 -0
  1082. package/dist/utils/paths.d.ts +34 -0
  1083. package/dist/utils/paths.d.ts.map +1 -0
  1084. package/dist/utils/paths.js +115 -0
  1085. package/dist/utils/paths.js.map +1 -0
  1086. package/dist/utils/photon.d.ts +21 -0
  1087. package/dist/utils/photon.d.ts.map +1 -0
  1088. package/dist/utils/photon.js +121 -0
  1089. package/dist/utils/photon.js.map +1 -0
  1090. package/dist/utils/relay-user-agent.d.ts +2 -0
  1091. package/dist/utils/relay-user-agent.d.ts.map +1 -0
  1092. package/dist/utils/relay-user-agent.js +5 -0
  1093. package/dist/utils/relay-user-agent.js.map +1 -0
  1094. package/dist/utils/shell.d.ts +32 -0
  1095. package/dist/utils/shell.d.ts.map +1 -0
  1096. package/dist/utils/shell.js +189 -0
  1097. package/dist/utils/shell.js.map +1 -0
  1098. package/dist/utils/sleep.d.ts +5 -0
  1099. package/dist/utils/sleep.d.ts.map +1 -0
  1100. package/dist/utils/sleep.js +17 -0
  1101. package/dist/utils/sleep.js.map +1 -0
  1102. package/dist/utils/syntax-highlight.d.ts +13 -0
  1103. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  1104. package/dist/utils/syntax-highlight.js +179 -0
  1105. package/dist/utils/syntax-highlight.js.map +1 -0
  1106. package/dist/utils/text.d.ts +8 -0
  1107. package/dist/utils/text.d.ts.map +1 -0
  1108. package/dist/utils/text.js +9 -0
  1109. package/dist/utils/text.js.map +1 -0
  1110. package/dist/utils/tool-result-images.d.ts +21 -0
  1111. package/dist/utils/tool-result-images.d.ts.map +1 -0
  1112. package/dist/utils/tool-result-images.js +48 -0
  1113. package/dist/utils/tool-result-images.js.map +1 -0
  1114. package/dist/utils/tools-manager.d.ts +13 -0
  1115. package/dist/utils/tools-manager.d.ts.map +1 -0
  1116. package/dist/utils/tools-manager.js +343 -0
  1117. package/dist/utils/tools-manager.js.map +1 -0
  1118. package/dist/utils/version-check.d.ts +17 -0
  1119. package/dist/utils/version-check.d.ts.map +1 -0
  1120. package/dist/utils/version-check.js +78 -0
  1121. package/dist/utils/version-check.js.map +1 -0
  1122. package/dist/utils/wsl.d.ts +3 -0
  1123. package/dist/utils/wsl.d.ts.map +1 -0
  1124. package/dist/utils/wsl.js +15 -0
  1125. package/dist/utils/wsl.js.map +1 -0
  1126. package/dist/utils/zip.d.ts +7 -0
  1127. package/dist/utils/zip.d.ts.map +1 -0
  1128. package/dist/utils/zip.js +60 -0
  1129. package/dist/utils/zip.js.map +1 -0
  1130. package/docs/cli-integration.md +106 -0
  1131. package/docs/cli.md +316 -0
  1132. package/docs/codemode.md +207 -0
  1133. package/docs/compaction.md +463 -0
  1134. package/docs/configuration.md +47 -0
  1135. package/docs/containerization.md +154 -0
  1136. package/docs/custom-provider.md +173 -0
  1137. package/docs/docs.json +224 -0
  1138. package/docs/environment-variables.md +97 -0
  1139. package/docs/extensions.md +274 -0
  1140. package/docs/harness-core.md +99 -0
  1141. package/docs/how-relay-works.md +49 -0
  1142. package/docs/images/doom-extension.png +0 -0
  1143. package/docs/images/exy.png +0 -0
  1144. package/docs/images/interactive-mode.png +0 -0
  1145. package/docs/images/tree-view.png +0 -0
  1146. package/docs/index.md +39 -0
  1147. package/docs/intake.md +40 -0
  1148. package/docs/json.md +226 -0
  1149. package/docs/keybindings.md +194 -0
  1150. package/docs/laya.md +152 -0
  1151. package/docs/llama-cpp.md +114 -0
  1152. package/docs/mcp.md +258 -0
  1153. package/docs/message-types.md +261 -0
  1154. package/docs/models.md +205 -0
  1155. package/docs/packages.md +129 -0
  1156. package/docs/prompt-templates.md +59 -0
  1157. package/docs/providers.md +187 -0
  1158. package/docs/quickstart.md +139 -0
  1159. package/docs/rpc-commands.md +860 -0
  1160. package/docs/rpc-extension-ui.md +200 -0
  1161. package/docs/rpc.md +193 -0
  1162. package/docs/sdk.md +147 -0
  1163. package/docs/security.md +99 -0
  1164. package/docs/session-format.md +293 -0
  1165. package/docs/sessions.md +66 -0
  1166. package/docs/settings.md +206 -0
  1167. package/docs/shell-aliases.md +93 -0
  1168. package/docs/skills.md +93 -0
  1169. package/docs/slash-commands.md +61 -0
  1170. package/docs/terminal-setup.md +219 -0
  1171. package/docs/termux.md +121 -0
  1172. package/docs/themes.md +136 -0
  1173. package/docs/tmux.md +55 -0
  1174. package/docs/tui.md +125 -0
  1175. package/docs/usage.md +94 -0
  1176. package/docs/virtual-models.md +114 -0
  1177. package/docs/windows.md +67 -0
  1178. package/examples/README.md +39 -0
  1179. package/examples/extensions/README.md +213 -0
  1180. package/examples/extensions/auto-commit-on-exit.ts +49 -0
  1181. package/examples/extensions/bash-spawn-hook.ts +30 -0
  1182. package/examples/extensions/bookmark.ts +50 -0
  1183. package/examples/extensions/border-status-editor.ts +150 -0
  1184. package/examples/extensions/built-in-tool-renderer.ts +225 -0
  1185. package/examples/extensions/claude-rules.ts +86 -0
  1186. package/examples/extensions/commands.ts +72 -0
  1187. package/examples/extensions/confirm-destructive.ts +59 -0
  1188. package/examples/extensions/custom-compaction.ts +117 -0
  1189. package/examples/extensions/custom-footer.ts +64 -0
  1190. package/examples/extensions/custom-header.ts +73 -0
  1191. package/examples/extensions/custom-provider-anthropic/index.ts +617 -0
  1192. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  1193. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  1194. package/examples/extensions/custom-provider-gitlab-duo/index.ts +405 -0
  1195. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  1196. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  1197. package/examples/extensions/debug-provider.ts +90 -0
  1198. package/examples/extensions/dirty-repo-guard.ts +56 -0
  1199. package/examples/extensions/doom-overlay/README.md +46 -0
  1200. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
  1201. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  1202. package/examples/extensions/doom-overlay/doom/build.sh +152 -0
  1203. package/examples/extensions/doom-overlay/doom/doomgeneric_relay.c +72 -0
  1204. package/examples/extensions/doom-overlay/doom-component.ts +132 -0
  1205. package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
  1206. package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
  1207. package/examples/extensions/doom-overlay/index.ts +74 -0
  1208. package/examples/extensions/doom-overlay/wad-finder.ts +55 -0
  1209. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  1210. package/examples/extensions/dynamic-resources/dynamic.json +81 -0
  1211. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  1212. package/examples/extensions/dynamic-resources/index.ts +15 -0
  1213. package/examples/extensions/dynamic-tools.ts +74 -0
  1214. package/examples/extensions/entry-renderer.ts +41 -0
  1215. package/examples/extensions/event-bus.ts +43 -0
  1216. package/examples/extensions/file-trigger.ts +41 -0
  1217. package/examples/extensions/git-checkpoint.ts +53 -0
  1218. package/examples/extensions/git-merge-and-resolve.ts +115 -0
  1219. package/examples/extensions/github-issue-autocomplete.ts +185 -0
  1220. package/examples/extensions/handoff.ts +190 -0
  1221. package/examples/extensions/hello.ts +26 -0
  1222. package/examples/extensions/hidden-thinking-label.ts +53 -0
  1223. package/examples/extensions/inline-bash.ts +94 -0
  1224. package/examples/extensions/input-transform-streaming.ts +39 -0
  1225. package/examples/extensions/input-transform.ts +43 -0
  1226. package/examples/extensions/interactive-shell.ts +196 -0
  1227. package/examples/extensions/jev-router.ts +113 -0
  1228. package/examples/extensions/mac-system-theme.ts +47 -0
  1229. package/examples/extensions/message-renderer.ts +59 -0
  1230. package/examples/extensions/minimal-mode.ts +354 -0
  1231. package/examples/extensions/modal-editor.ts +85 -0
  1232. package/examples/extensions/model-status.ts +31 -0
  1233. package/examples/extensions/notify.ts +57 -0
  1234. package/examples/extensions/overlay-qa-tests.ts +1450 -0
  1235. package/examples/extensions/overlay-test.ts +153 -0
  1236. package/examples/extensions/permission-gate.ts +34 -0
  1237. package/examples/extensions/pirate.ts +47 -0
  1238. package/examples/extensions/plan-mode/README.md +66 -0
  1239. package/examples/extensions/plan-mode/index.ts +390 -0
  1240. package/examples/extensions/plan-mode/utils.ts +168 -0
  1241. package/examples/extensions/preset.ts +436 -0
  1242. package/examples/extensions/project-trust.ts +64 -0
  1243. package/examples/extensions/prompt-customizer.ts +49 -0
  1244. package/examples/extensions/protected-paths.ts +30 -0
  1245. package/examples/extensions/provider-payload.ts +18 -0
  1246. package/examples/extensions/qna.ts +118 -0
  1247. package/examples/extensions/question.ts +278 -0
  1248. package/examples/extensions/questionnaire.ts +440 -0
  1249. package/examples/extensions/rainbow-editor.ts +88 -0
  1250. package/examples/extensions/reload-runtime.ts +37 -0
  1251. package/examples/extensions/rpc-demo.ts +118 -0
  1252. package/examples/extensions/sandbox/index.ts +321 -0
  1253. package/examples/extensions/sandbox/package-lock.json +92 -0
  1254. package/examples/extensions/sandbox/package.json +19 -0
  1255. package/examples/extensions/send-user-message.ts +97 -0
  1256. package/examples/extensions/session-name.ts +27 -0
  1257. package/examples/extensions/shutdown-command.ts +63 -0
  1258. package/examples/extensions/snake.ts +343 -0
  1259. package/examples/extensions/space-invaders.ts +560 -0
  1260. package/examples/extensions/ssh.ts +220 -0
  1261. package/examples/extensions/status-line.ts +32 -0
  1262. package/examples/extensions/structured-output.ts +65 -0
  1263. package/examples/extensions/subagent/README.md +196 -0
  1264. package/examples/extensions/subagent/agents/planner.md +37 -0
  1265. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  1266. package/examples/extensions/subagent/agents/scout.md +50 -0
  1267. package/examples/extensions/subagent/agents/security-auditor.md +20 -0
  1268. package/examples/extensions/subagent/agents/verifier.md +31 -0
  1269. package/examples/extensions/subagent/agents/worker.md +24 -0
  1270. package/examples/extensions/subagent/agents.ts +157 -0
  1271. package/examples/extensions/subagent/index.ts +1038 -0
  1272. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  1273. package/examples/extensions/subagent/prompts/implement-and-verify.md +10 -0
  1274. package/examples/extensions/subagent/prompts/implement.md +10 -0
  1275. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  1276. package/examples/extensions/subagent/skills/delegate/SKILL.md +48 -0
  1277. package/examples/extensions/subagent/skills/security-audit/SKILL.md +108 -0
  1278. package/examples/extensions/subagent/skills/security-audit/references/categories.md +130 -0
  1279. package/examples/extensions/subagent/skills/security-audit/references/report.md +38 -0
  1280. package/examples/extensions/summarize.ts +199 -0
  1281. package/examples/extensions/system-prompt-header.ts +17 -0
  1282. package/examples/extensions/tic-tac-toe.ts +1008 -0
  1283. package/examples/extensions/timed-confirm.ts +70 -0
  1284. package/examples/extensions/titlebar-spinner.ts +58 -0
  1285. package/examples/extensions/todo.ts +297 -0
  1286. package/examples/extensions/tool-override.ts +144 -0
  1287. package/examples/extensions/tools.ts +146 -0
  1288. package/examples/extensions/trigger-compact.ts +50 -0
  1289. package/examples/extensions/truncated-tool.ts +195 -0
  1290. package/examples/extensions/widget-placement.ts +9 -0
  1291. package/examples/extensions/with-deps/index.ts +32 -0
  1292. package/examples/extensions/with-deps/package-lock.json +31 -0
  1293. package/examples/extensions/with-deps/package.json +22 -0
  1294. package/examples/extensions/working-indicator.ts +123 -0
  1295. package/examples/extensions/working-message-test.ts +25 -0
  1296. package/examples/plugins/relay-example-plugin/README.md +38 -0
  1297. package/examples/plugins/relay-example-plugin/package.json +10 -0
  1298. package/examples/plugins/relay-example-plugin/src/contract.ts +13 -0
  1299. package/examples/plugins/relay-example-plugin/src/session.ts +24 -0
  1300. package/examples/plugins/relay-example-plugin/src/tui.ts +31 -0
  1301. package/examples/rpc-client.ts +35 -0
  1302. package/examples/rpc-extension-ui.ts +661 -0
  1303. package/examples/sdk/01-minimal.ts +26 -0
  1304. package/examples/sdk/02-custom-model.ts +49 -0
  1305. package/examples/sdk/03-custom-prompt.ts +70 -0
  1306. package/examples/sdk/04-skills.ts +55 -0
  1307. package/examples/sdk/05-tools.ts +48 -0
  1308. package/examples/sdk/06-extensions.ts +94 -0
  1309. package/examples/sdk/07-context-files.ts +42 -0
  1310. package/examples/sdk/08-prompt-templates.ts +51 -0
  1311. package/examples/sdk/09-api-keys-and-oauth.ts +34 -0
  1312. package/examples/sdk/10-settings.ts +53 -0
  1313. package/examples/sdk/11-sessions.ts +52 -0
  1314. package/examples/sdk/12-full-control.ts +74 -0
  1315. package/examples/sdk/13-session-runtime.ts +67 -0
  1316. package/examples/sdk/14-codemode-mcp.ts +61 -0
  1317. package/examples/sdk/README.md +141 -0
  1318. package/package.json +111 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/extensions/codemode/execute.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Runs one codemode script in the sandbox. Split from tool.ts and loaded through\n * execute.lazy.ts so the sandbox runtime only loads when a script runs.\n */\n\nimport type { AgentTool, AgentToolCallOutcome, AgentToolResult } from \"@relay-harness/agent-core\";\nimport type {\n\tAnyModel,\n\tClassifierContext,\n\tImageContent,\n\tImagesContext,\n\tModelType,\n\tModelTypeMap,\n\tTextContent,\n\tUsage,\n} from \"@relay-harness/ai\";\nimport {\n\ttype CodemodeResult,\n\tCodemodeSandbox,\n\ttype CodemodeTool,\n\tloadQuickJSWasm,\n\tparseCodemodeSource,\n\trenderToolSample,\n\ttoCodemodeIdentifier,\n} from \"@relay-harness/codemode\";\nimport { getCodemodeWorkerSpecifier, getQuickJSWasmPath } from \"../../config.ts\";\nimport type { ExtensionToolContext, ToolNamespace } from \"../../core/extensions/types.ts\";\nimport type { SessionEntry } from \"../../core/session-manager.ts\";\nimport { formatSize } from \"../../core/tools/truncate.ts\";\nimport { combineUsage } from \"../../core/usage-totals.ts\";\nimport { writeOutputFile } from \"../../utils/output-files.ts\";\nimport { Bm25Ranker, createToolSearchDocument, DEFAULT_TOOL_SEARCH_LIMIT } from \"../tool-search/tool.ts\";\nimport {\n\tCODEMODE_DOCS_PATH,\n\tCODEMODE_STORE_ENTRY_TYPE,\n\ttype CodemodeModelRuntime,\n\ttype CodemodeNestedCall,\n\ttype CodemodeStoreEntryData,\n\ttype CodemodeToolDetails,\n\ttype CodemodeToolInput,\n\ttype CodemodeToolOptions,\n\tgetCodemodeCallableTools,\n\ttoCodemodeDeclaration,\n} from \"./tool.ts\";\n\nconst ARGS_PREVIEW_CHARS = 200;\nconst ERROR_PREVIEW_CHARS = 500;\n/** `models.classify()` and `models.generateImages()` calls one script may have in flight; `Promise.all` over many items queues the rest. */\nconst MAX_CONCURRENT_MODEL_CALLS = 4;\n/**\n * Heap limit for the QuickJS VM. The worker shares relay's process, so without a limit a runaway\n * script can grow to wasm32's 4 GiB and take the session down. Overruns throw\n * `InternalError: out of memory` inside the script.\n */\nconst CODEMODE_MEMORY_LIMIT_BYTES = 256 * 1024 * 1024;\nconst MODEL_TYPES: ReadonlySet<string> = new Set<ModelType>([\"chat\", \"image\", \"classifier\"]);\n\nfunction truncateText(text: string, maxChars: number): string {\n\treturn text.length > maxChars ? `${text.slice(0, maxChars - 3)}...` : text;\n}\n\nfunction previewArgs(args: unknown): string {\n\tif (args === undefined) return \"\";\n\ttry {\n\t\treturn truncateText(JSON.stringify(args) ?? \"\", ARGS_PREVIEW_CHARS);\n\t} catch {\n\t\treturn \"\";\n\t}\n}\n\nfunction textOf(result: AgentToolResult<unknown>): string {\n\treturn (result.content ?? [])\n\t\t.filter((block): block is TextContent => block.type === \"text\")\n\t\t.map((block) => block.text)\n\t\t.join(\"\\n\");\n}\n\nfunction toModelType(value: unknown): ModelType {\n\tif (typeof value === \"string\" && MODEL_TYPES.has(value)) return value as ModelType;\n\tthrow new Error(`Unknown model type ${JSON.stringify(value)}. Use \"chat\", \"image\", or \"classifier\".`);\n}\n\nfunction toProvider(value: unknown): string | undefined {\n\tif (value === undefined || value === null) return undefined;\n\tif (typeof value !== \"string\") throw new Error(\"provider must be a string\");\n\treturn value;\n}\n\n/** Catalog entry for scripts. `headers` is dropped because models.json headers can carry credentials. */\nfunction toModelInfo(model: AnyModel): Record<string, unknown> {\n\tconst info: Record<string, unknown> = { ...model };\n\tdelete info.headers;\n\treturn info;\n}\n\n/** `an image`, `a classifier`. */\nfunction withArticle(word: string): string {\n\treturn `${/^[aeiou]/.test(word) ? \"an\" : \"a\"} ${word}`;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/** A script value in an error message: `undefined`, `a string`, `an array`, or its keys (`{ prompt }`). */\nfunction describeValue(value: unknown): string {\n\tif (value === undefined || value === null) return String(value);\n\tif (Array.isArray(value)) return value.length === 0 ? \"an empty array\" : \"an array\";\n\tif (typeof value === \"object\") {\n\t\tconst keys = Object.keys(value);\n\t\tif (keys.length === 0) return \"{}\";\n\t\treturn `{ ${keys.slice(0, 6).join(\", \")}${keys.length > 6 ? \", ...\" : \"\"} }`;\n\t}\n\treturn typeof value === \"string\" ? \"a string\" : `a ${typeof value}`;\n}\n\nconst CLASSIFIER_CONTEXT_SHAPE =\n\t'{ state: { ... }, questions: { <id>: { type: \"choice\", instructions, criteria: { <label>: <meaning> } } | { type: \"score\", instructions, criteria: [<lowest level>, ..., <highest level>] } | { type: \"bool\", instructions, criteria: { true: <meaning>, false: <meaning> } } } }';\n\n/** Check a script's classifier context, so mistakes fail with the expected shape instead of a provider error. */\nfunction checkClassifierContext(context: unknown): ClassifierContext {\n\tconst fail = (problem: string) =>\n\t\tnew Error(\n\t\t\t`models.classify() ${problem}. Expected context: ${CLASSIFIER_CONTEXT_SHAPE}. See \"Classify\" in ${CODEMODE_DOCS_PATH}.`,\n\t\t);\n\tif (!isRecord(context)) throw fail(`expects a context object as its second argument, got ${describeValue(context)}`);\n\tif (!isRecord(context.state)) throw fail(`context.state must be an object, got ${describeValue(context.state)}`);\n\tconst { questions } = context;\n\tif (!isRecord(questions) || Object.keys(questions).length === 0) {\n\t\tthrow fail(`context.questions must map question IDs to questions, got ${describeValue(questions)}`);\n\t}\n\tconst isStrings = (values: unknown[]) => values.length > 0 && values.every((value) => typeof value === \"string\");\n\tfor (const [id, question] of Object.entries(questions)) {\n\t\tconst at = `context.questions.${id}`;\n\t\tif (!isRecord(question)) throw fail(`${at} must be a question object, got ${describeValue(question)}`);\n\t\tif (typeof question.instructions !== \"string\") throw fail(`${at}.instructions must be a string`);\n\t\tconst { criteria } = question;\n\t\tif (question.type === \"choice\") {\n\t\t\tif (!isRecord(criteria) || !isStrings(Object.values(criteria))) {\n\t\t\t\tthrow fail(`${at} is a \"choice\" question, so criteria must map each label to its meaning`);\n\t\t\t}\n\t\t} else if (question.type === \"score\") {\n\t\t\tif (!Array.isArray(criteria) || !isStrings(criteria)) {\n\t\t\t\tthrow fail(`${at} is a \"score\" question, so criteria must list the levels as strings, lowest first`);\n\t\t\t}\n\t\t} else if (question.type === \"bool\") {\n\t\t\tif (!isRecord(criteria) || typeof criteria.true !== \"string\" || typeof criteria.false !== \"string\") {\n\t\t\t\tthrow fail(`${at} is a \"bool\" question, so criteria must be { true: string, false: string }`);\n\t\t\t}\n\t\t} else {\n\t\t\tthrow fail(`${at}.type must be \"choice\", \"score\", or \"bool\", got ${JSON.stringify(question.type)}`);\n\t\t}\n\t}\n\treturn context as unknown as ClassifierContext;\n}\n\n/** Check a script's image context, so mistakes such as `{ prompt }` fail with the expected shape. */\nfunction checkImagesContext(context: unknown): ImagesContext {\n\tconst fail = (problem: string) =>\n\t\tnew Error(\n\t\t\t`models.generateImages() ${problem}. Expected context: { input: [{ type: \"text\", text: <prompt> }, ...optional { type: \"image\", data: <base64>, mimeType } references] }. See \"Generate images\" in ${CODEMODE_DOCS_PATH}.`,\n\t\t);\n\tif (!isRecord(context)) throw fail(`expects a context object as its second argument, got ${describeValue(context)}`);\n\tconst { input } = context;\n\tif (!Array.isArray(input) || input.length === 0) {\n\t\tthrow fail(`context.input must be a non-empty array of blocks, got ${describeValue(input)}`);\n\t}\n\tinput.forEach((block: unknown, index) => {\n\t\tif (isRecord(block) && block.type === \"text\" && typeof block.text === \"string\") return;\n\t\tif (\n\t\t\tisRecord(block) &&\n\t\t\tblock.type === \"image\" &&\n\t\t\ttypeof block.data === \"string\" &&\n\t\t\ttypeof block.mimeType === \"string\"\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tthrow fail(`context.input[${index}] must be a text or image block, got ${describeValue(block)}`);\n\t});\n\treturn context as unknown as ImagesContext;\n}\n\n/** The fields of `ClassifierResult` and `AssistantImages` that a nested call row reports. */\ninterface ModelCallResult {\n\tstopReason: \"stop\" | \"error\" | \"aborted\";\n\terrorMessage?: string;\n\tusage?: Usage;\n}\n\n/** Runs at most `limit` calls at once, in call order. */\nfunction createLimiter(limit: number): <T>(run: () => Promise<T>) => Promise<T> {\n\tlet active = 0;\n\tconst waiting: (() => void)[] = [];\n\treturn async (run) => {\n\t\tif (active >= limit) await new Promise<void>((resolve) => waiting.push(resolve));\n\t\tactive++;\n\t\ttry {\n\t\t\treturn await run();\n\t\t} finally {\n\t\t\tactive--;\n\t\t\twaiting.shift()?.();\n\t\t}\n\t};\n}\n\nfunction isStoreEntryData(data: unknown): data is CodemodeStoreEntryData {\n\tif (typeof data !== \"object\" || data === null) return false;\n\tconst { set, delete: deleted } = data as Partial<CodemodeStoreEntryData>;\n\treturn (\n\t\ttypeof set === \"object\" &&\n\t\tset !== null &&\n\t\tArray.isArray(deleted) &&\n\t\tdeleted.every((key: unknown) => typeof key === \"string\")\n\t);\n}\n\n/** Values of `load()`: the `codemode-store` entries on the branch, applied from the root. */\nexport function readCodemodeStore(branch: readonly SessionEntry[]): Record<string, unknown> {\n\tconst store = new Map<string, unknown>();\n\tfor (const entry of branch) {\n\t\tif (entry.type !== \"custom\" || entry.customType !== CODEMODE_STORE_ENTRY_TYPE || !isStoreEntryData(entry.data)) {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const key of entry.data.delete) store.delete(key);\n\t\tfor (const [key, value] of Object.entries(entry.data.set)) store.set(key, value);\n\t}\n\treturn Object.fromEntries(store);\n}\n\n/** Default token budget for script output. */\nconst DEFAULT_MAX_OUTPUT_TOKENS = 10_000;\n/** Characters per token when estimating. */\nconst CHARS_PER_TOKEN = 4;\n\n/** Like the script's `text()`: strings as is, other values as compact JSON. */\nfunction valueText(value: unknown): string {\n\tif (typeof value === \"string\") return value;\n\treturn JSON.stringify(value) ?? String(value);\n}\n\nfunction formatCallSummary(calls: readonly CodemodeNestedCall[]): string {\n\tif (calls.length === 0) return \"No tool calls were made.\";\n\treturn `Tool calls made before the failure (they are not undone): ${calls.map((call) => `${call.name} (${call.status})`).join(\", \")}`;\n}\n\nfunction formatError(result: Extract<CodemodeResult, { ok: false }>, calls: readonly CodemodeNestedCall[]): string {\n\tconst { error } = result;\n\tconst head =\n\t\terror.kind === \"script\"\n\t\t\t? (error.stack ?? `${error.name ?? \"Error\"}: ${error.message}`)\n\t\t\t: error.kind === \"timeout\"\n\t\t\t\t? `Script timed out: ${error.message}`\n\t\t\t\t: error.kind === \"aborted\"\n\t\t\t\t\t? `Script aborted: ${error.message}`\n\t\t\t\t\t: `Script sandbox failed: ${error.message}`;\n\treturn `${head}\\n\\n${formatCallSummary(calls)}`;\n}\n\n/** Write the full text output to a temp file, like bash does for truncated output. */\nasync function spillOutput(text: string): Promise<{ path: string } | { error: string }> {\n\ttry {\n\t\treturn { path: await writeOutputFile(\"relay-codemode\", \".txt\", text) };\n\t} catch (error) {\n\t\treturn { error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\n/** File extensions of the image types `image()` accepts. Must list every type the sandbox's `image()` detects. */\nconst IMAGE_EXTENSIONS: Record<string, string> = {\n\t\"image/png\": \".png\",\n\t\"image/jpeg\": \".jpg\",\n\t\"image/gif\": \".gif\",\n\t\"image/webp\": \".webp\",\n};\n\n/**\n * Save each image to a temp file and put a text item with its path before it. The model sees the\n * image but has no other way to reach its bytes: scripts cannot write files, and `write` only takes\n * text. Images shown more than once are saved once.\n */\nasync function saveImages(items: (TextContent | ImageContent)[]): Promise<(TextContent | ImageContent)[]> {\n\tconst labels = new Map<string, Promise<string>>();\n\tconst label = async ({ data, mimeType }: ImageContent): Promise<string> => {\n\t\tconst bytes = Buffer.from(data, \"base64\");\n\t\tconst kind = `${mimeType}, ${formatSize(bytes.length)}`;\n\t\tconst extension = IMAGE_EXTENSIONS[mimeType];\n\t\tif (!extension) throw new Error(`No file extension for image type ${mimeType}`);\n\t\t// A failed write (disk full, unwritable temp dir) must not discard the result of a script whose\n\t\t// tool calls already ran, so it becomes part of the label.\n\t\ttry {\n\t\t\tconst path = await writeOutputFile(\"relay-codemode\", extension, bytes);\n\t\t\treturn `[Image saved to ${path} (${kind})]`;\n\t\t} catch (error) {\n\t\t\treturn `[Image (${kind}) could not be saved: ${error instanceof Error ? error.message : String(error)}]`;\n\t\t}\n\t};\n\tconst result = await Promise.all(\n\t\titems.map(async (item): Promise<(TextContent | ImageContent)[]> => {\n\t\t\tif (item.type !== \"image\") return [item];\n\t\t\tlet pending = labels.get(item.data);\n\t\t\tif (!pending) {\n\t\t\t\tpending = label(item);\n\t\t\t\tlabels.set(item.data, pending);\n\t\t\t}\n\t\t\treturn [{ type: \"text\", text: await pending }, item];\n\t\t}),\n\t);\n\treturn result.flat();\n}\n\n/**\n * Apply the token budget: when the combined text exceeds it, the text items become one\n * item that keeps the start and end of the text, and images follow it. The full text is written to\n * a temp file.\n */\nasync function truncateOutput(\n\titems: (TextContent | ImageContent)[],\n\tmaxTokens: number,\n): Promise<{ items: (TextContent | ImageContent)[]; fullOutputPath?: string }> {\n\tconst texts = items.filter((item): item is TextContent => item.type === \"text\").map((item) => item.text);\n\tconst combined = texts.join(\"\\n\");\n\tconst budget = maxTokens * CHARS_PER_TOKEN;\n\tif (texts.length === 0 || combined.length <= budget) return { items };\n\tconst headChars = Math.floor(budget / 2);\n\tconst tailChars = budget - headChars;\n\tconst removed = combined.length - headChars - tailChars;\n\tconst head = combined.slice(0, headChars);\n\tconst tail = tailChars > 0 ? combined.slice(-tailChars) : \"\";\n\tlet text = `Warning: truncated output (original token count: ${Math.ceil(combined.length / CHARS_PER_TOKEN)})\\nTotal output lines: ${combined.split(\"\\n\").length}\\n\\n${head}…${Math.ceil(removed / CHARS_PER_TOKEN)} tokens truncated…${tail}`;\n\tconst spilled = await spillOutput(combined);\n\ttext +=\n\t\t\"path\" in spilled\n\t\t\t? `\\n\\n[Full output: ${spilled.path} (read with offset/limit)]`\n\t\t\t: `\\n\\n[Could not save the full output: ${spilled.error}]`;\n\treturn {\n\t\titems: [{ type: \"text\", text }, ...items.filter((item) => item.type === \"image\")],\n\t\t...(\"path\" in spilled ? { fullOutputPath: spilled.path } : {}),\n\t};\n}\n\n/**\n * The value a script receives for a nested call: a tool that declares\n * `outputSchema` resolves to its `structuredContent`, also for error results that carry one (such\n * as MCP results with `isError`); any other tool resolves to its text content. Other failures\n * reject with the tool's error text.\n */\nfunction toScriptValue(tool: AgentTool<any>, outcome: AgentToolCallOutcome): unknown {\n\tconst { result } = outcome;\n\tif (tool.outputSchema && result.structuredContent !== undefined) return result.structuredContent;\n\tconst text = textOf(result);\n\tif (outcome.isError) throw new Error(text || `Tool \"${tool.name}\" failed`);\n\treturn text;\n}\n\n/**\n * Run one script. Without a session context (a plain Agent or a direct call) scripts cannot call\n * tools, `store()` starts empty, and writes are dropped.\n */\nexport async function executeCodemode(\n\ttoolCallId: string,\n\tinput: CodemodeToolInput,\n\tsignal: AbortSignal | undefined,\n\tonUpdate: ((result: AgentToolResult<CodemodeToolDetails>) => void) | undefined,\n\tctx: ExtensionToolContext | undefined,\n\toptions: CodemodeToolOptions = {},\n): Promise<AgentToolResult<CodemodeToolDetails>> {\n\tconst startedAt = performance.now();\n\tconst { code, options: sourceOptions } = parseCodemodeSource(input.code);\n\tconst calls: CodemodeNestedCall[] = [];\n\t// Usage of the script's `models.*` calls. Nested tool calls report theirs through the session.\n\tlet modelUsage: Usage | undefined;\n\t// Images returned by `models.generateImages()`, to notice a script that never shows them.\n\tlet generatedImages = 0;\n\tconst addGeneratedImages = (count: number) => {\n\t\tgeneratedImages += count;\n\t};\n\tconst addModelUsage = (usage: Usage) => {\n\t\tmodelUsage = modelUsage ? combineUsage(modelUsage, usage) : usage;\n\t};\n\n\tconst snapshot = (): CodemodeToolDetails => ({ calls: calls.map((call) => ({ ...call })) });\n\tconst publish = () => onUpdate?.({ content: [], details: snapshot() });\n\n\tconst callable = ctx ? getCodemodeCallableTools(ctx.tools) : [];\n\t// ALL_TOOLS entries carry the declaration.\n\tconst samples = new Map(callable.map((tool) => [tool.name, renderToolSample(toCodemodeDeclaration(tool))]));\n\tconst sandboxTools: CodemodeTool[] = callable.map((tool) => ({\n\t\tname: tool.name,\n\t\tdescription: samples.get(tool.name),\n\t\texecute: async (args, { signal: callSignal }) => {\n\t\t\tconst record: CodemodeNestedCall = {\n\t\t\t\tid: `${toolCallId}/?`,\n\t\t\t\tname: tool.name,\n\t\t\t\targs: previewArgs(args),\n\t\t\t\tstatus: \"running\",\n\t\t\t};\n\t\t\tcalls.push(record);\n\t\t\tpublish();\n\t\t\tconst callStartedAt = performance.now();\n\t\t\t// Only tools from ctx.tools are callable, so ctx is set here.\n\t\t\tif (!ctx) throw new Error(\"Tool calls need a session\");\n\t\t\tconst outcome = await ctx.executeTool(tool.name, args, { signal: callSignal });\n\t\t\trecord.id = outcome.toolCall.id;\n\t\t\trecord.durationMs = performance.now() - callStartedAt;\n\t\t\tif (outcome.isError) {\n\t\t\t\trecord.status = callSignal.aborted ? \"cancelled\" : \"error\";\n\t\t\t\trecord.error = truncateText(textOf(outcome.result) || `Tool \"${tool.name}\" failed`, ERROR_PREVIEW_CHARS);\n\t\t\t} else {\n\t\t\t\trecord.status = \"ok\";\n\t\t\t}\n\t\t\tpublish();\n\t\t\treturn toScriptValue(tool, outcome);\n\t\t},\n\t}));\n\n\tconst sandbox = new CodemodeSandbox({\n\t\ttools: sandboxTools,\n\t\tglobals: [\n\t\t\t...createDiscoveryGlobals(callable, samples, options),\n\t\t\t...(options.models && ctx\n\t\t\t\t? createModelGlobals(ctx.modelRegistry, toolCallId, calls, publish, addModelUsage, addGeneratedImages)\n\t\t\t\t: []),\n\t\t],\n\t\ttimeoutMs: sourceOptions.timeoutMs ?? Number.POSITIVE_INFINITY,\n\t\tmemoryLimitBytes: CODEMODE_MEMORY_LIMIT_BYTES,\n\t\twasm: loadQuickJSWasm(getQuickJSWasmPath()),\n\t\tworkerUrl: getCodemodeWorkerSpecifier(),\n\t});\n\n\tlet result: CodemodeResult;\n\ttry {\n\t\tconst store = ctx ? readCodemodeStore(ctx.sessionManager.getBranch()) : {};\n\t\tresult = await sandbox.execute(code, { signal, store });\n\t} finally {\n\t\tawait sandbox.close();\n\t}\n\t// Calls still marked running were cut off by the script ending, a timeout, or an abort.\n\tfor (const call of calls) {\n\t\tif (call.status === \"running\") call.status = \"cancelled\";\n\t}\n\n\tconst items: (TextContent | ImageContent)[] = result.output.map((item) =>\n\t\titem.type === \"text\" ? { type: \"text\", text: item.text } : item,\n\t);\n\tif (result.ok) {\n\t\tconst { set, delete: deleted } = result.storeWrites;\n\t\tif (Object.keys(set).length > 0 || deleted.length > 0) {\n\t\t\toptions.appendEntry?.(CODEMODE_STORE_ENTRY_TYPE, { set, delete: deleted });\n\t\t}\n\t\t// relay extension: a returned value is appended like text().\n\t\tif (result.value !== undefined) items.push({ type: \"text\", text: valueText(result.value) });\n\t} else {\n\t\titems.push({ type: \"text\", text: `Script error:\\n${formatError(result, calls)}` });\n\t}\n\tif (generatedImages > 0 && !items.some((item) => item.type === \"image\")) {\n\t\titems.push({\n\t\t\ttype: \"text\",\n\t\t\ttext: `Note: models.generateImages() returned ${generatedImages} image${generatedImages === 1 ? \"\" : \"s\"} that the script did not show. Show each image block of result.output with image(block).`,\n\t\t});\n\t}\n\n\tconst truncated = await truncateOutput(items, sourceOptions.maxOutputTokens ?? DEFAULT_MAX_OUTPUT_TOKENS);\n\t// After truncation, which joins the text items and moves images after them, so each path stays\n\t// next to its image and is never cut.\n\tconst output = await saveImages(truncated.items);\n\tconst wallTime = ((performance.now() - startedAt) / 1000).toFixed(1);\n\tconst header = `${result.ok ? \"Script completed\" : \"Script failed\"}\\nWall time ${wallTime} seconds\\nOutput:\\n`;\n\tconst details = snapshot();\n\tif (truncated.fullOutputPath) details.fullOutputPath = truncated.fullOutputPath;\n\treturn {\n\t\tcontent: [{ type: \"text\", text: header }, ...output],\n\t\tdetails,\n\t\t...(modelUsage ? { usage: modelUsage } : {}),\n\t\t...(result.ok ? {} : { isError: true }),\n\t};\n}\n\n/**\n * Whether `query` names the namespace: its name, its script identifier (`mcp__dev-tools` is\n * `mcp__dev_tools`), or the part after its last `__` in either form (`dev-tools`, `dev_tools`).\n */\nfunction isNamespaceName(namespace: string, query: string): boolean {\n\tconst id = toCodemodeIdentifier(namespace);\n\tconst queryId = toCodemodeIdentifier(query);\n\tconst suffix = (name: string) => (name.includes(\"__\") ? name.slice(name.lastIndexOf(\"__\") + 2) : undefined);\n\treturn namespace === query || id === queryId || suffix(namespace) === query || suffix(id) === queryId;\n}\n\n/**\n * `searchTools()`, `describeTool()`, and `describeNamespace()`: ranked search and lookup over the\n * script's nested tools and their namespaces.\n */\nfunction createDiscoveryGlobals(\n\ttools: readonly AgentTool<any>[],\n\tsamples: ReadonlyMap<string, string>,\n\toptions: CodemodeToolOptions,\n): CodemodeTool[] {\n\tconst ranker = new Bm25Ranker();\n\tconst entry = (name: string) => ({ name: toCodemodeIdentifier(name), description: samples.get(name) ?? \"\" });\n\treturn [\n\t\t{\n\t\t\tname: \"searchTools\",\n\t\t\tspread: true,\n\t\t\texecute: (args) => {\n\t\t\t\tconst [query, searchOptions] = args as [unknown, { limit?: unknown; namespace?: unknown } | undefined];\n\t\t\t\tif (typeof query !== \"string\") throw new Error(\"searchTools() expects a query string\");\n\t\t\t\tconst limit = searchOptions?.limit ?? DEFAULT_TOOL_SEARCH_LIMIT;\n\t\t\t\tif (typeof limit !== \"number\" || !Number.isInteger(limit) || limit <= 0) {\n\t\t\t\t\tthrow new Error(\"searchTools() limit must be a positive integer\");\n\t\t\t\t}\n\t\t\t\tconst namespace = searchOptions?.namespace;\n\t\t\t\tif (namespace !== undefined && namespace !== null && typeof namespace !== \"string\") {\n\t\t\t\t\tthrow new Error(\"searchTools() namespace must be a string\");\n\t\t\t\t}\n\t\t\t\tconst documents = tools.flatMap((tool) => {\n\t\t\t\t\tconst toolNamespace = options.getToolNamespace?.(tool.name);\n\t\t\t\t\tif (namespace && (!toolNamespace || !isNamespaceName(toolNamespace.name, namespace))) return [];\n\t\t\t\t\treturn [createToolSearchDocument(tool, toolNamespace)];\n\t\t\t\t});\n\t\t\t\treturn ranker.rank(query, documents, limit).map((match) => entry(match.name));\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"describeTool\",\n\t\t\tspread: true,\n\t\t\texecute: (args) => {\n\t\t\t\tconst [name] = args as unknown[];\n\t\t\t\tif (typeof name !== \"string\") throw new Error(\"describeTool() expects a tool name\");\n\t\t\t\tconst tool = tools.find(\n\t\t\t\t\t(candidate) => candidate.name === name || toCodemodeIdentifier(candidate.name) === name,\n\t\t\t\t);\n\t\t\t\treturn tool ? samples.get(tool.name) : undefined;\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"describeNamespace\",\n\t\t\tspread: true,\n\t\t\texecute: (args) => {\n\t\t\t\tconst [name] = args as unknown[];\n\t\t\t\tif (typeof name !== \"string\") throw new Error(\"describeNamespace() expects a namespace name\");\n\t\t\t\tlet namespace: ToolNamespace | undefined;\n\t\t\t\tconst names: string[] = [];\n\t\t\t\tfor (const tool of tools) {\n\t\t\t\t\tconst toolNamespace = options.getToolNamespace?.(tool.name);\n\t\t\t\t\tif (!toolNamespace || !isNamespaceName(toolNamespace.name, name)) continue;\n\t\t\t\t\tnamespace ??= toolNamespace;\n\t\t\t\t\tnames.push(toCodemodeIdentifier(tool.name));\n\t\t\t\t}\n\t\t\t\tif (!namespace) return undefined;\n\t\t\t\treturn {\n\t\t\t\t\tname: namespace.name,\n\t\t\t\t\t...(namespace.description ? { description: namespace.description } : {}),\n\t\t\t\t\t...(namespace.instructions ? { instructions: namespace.instructions } : {}),\n\t\t\t\t\ttools: names,\n\t\t\t\t};\n\t\t\t},\n\t\t},\n\t];\n}\n\n/**\n * `models.*` for scripts: the model registry methods documented in docs/codemode.md.\n * Classifier and image calls appear as nested call rows so the renderer shows them, and their usage\n * goes to `addUsage`. Rows show only the model, never prompts or image data.\n */\nfunction createModelGlobals(\n\tmodels: CodemodeModelRuntime,\n\ttoolCallId: string,\n\tcalls: CodemodeNestedCall[],\n\tpublish: () => void,\n\taddUsage: (usage: Usage) => void,\n\taddGeneratedImages: (count: number) => void,\n): CodemodeTool[] {\n\tconst limit = createLimiter(MAX_CONCURRENT_MODEL_CALLS);\n\tlet callCount = 0;\n\n\t/**\n\t * Resolve the script's model by provider and id only, check the context, then run the call as a\n\t * nested call row. A script-supplied baseUrl or headers must never receive the credentials.\n\t */\n\tconst runModelCall = async <TType extends \"classifier\" | \"image\", TContext, TResult extends ModelCallResult>(\n\t\tname: string,\n\t\ttype: TType,\n\t\t[model, context]: unknown[],\n\t\tcheckContext: (context: unknown) => TContext,\n\t\trun: (resolved: ModelTypeMap[TType], context: TContext) => Promise<TResult>,\n\t): Promise<TResult> => {\n\t\tconst listHint = `List the ${type} models you can use with models.getAvailableOfType(\"${type}\").`;\n\t\tif (!isRecord(model) || typeof model.provider !== \"string\" || typeof model.id !== \"string\") {\n\t\t\t// undefined arrives as null: spread arguments cross the sandbox as a JSON array.\n\t\t\tconst undefinedHint =\n\t\t\t\tmodel === undefined || model === null\n\t\t\t\t\t? \" models.getModelOfType() returns undefined for an unknown provider or id.\"\n\t\t\t\t\t: \"\";\n\t\t\tthrow new Error(\n\t\t\t\t`${name}() expects ${withArticle(type)} model as its first argument, got ${describeValue(model)}.${undefinedHint} ${listHint}`,\n\t\t\t);\n\t\t}\n\t\tconst { provider, id } = model;\n\t\tconst ref = `${provider}/${id}`;\n\t\tconst resolved = models.getModelOfType(type, provider, id);\n\t\tif (!resolved) {\n\t\t\tconst actualType = [...MODEL_TYPES].find(\n\t\t\t\t(other) => other !== type && models.getModelOfType(other as ModelType, provider, id) !== undefined,\n\t\t\t);\n\t\t\tthrow new Error(\n\t\t\t\tactualType\n\t\t\t\t\t? `\"${ref}\" is ${withArticle(actualType)} model, not ${withArticle(type)} model. ${listHint}`\n\t\t\t\t\t: `Unknown ${type} model \"${ref}\". ${listHint}`,\n\t\t\t);\n\t\t}\n\t\tconst checked = checkContext(context);\n\n\t\tconst record: CodemodeNestedCall = {\n\t\t\tid: `${toolCallId}/${name}/${++callCount}`,\n\t\t\tname,\n\t\t\targs: `${resolved.provider}/${resolved.id}`,\n\t\t\tstatus: \"running\",\n\t\t};\n\t\tcalls.push(record);\n\t\tpublish();\n\t\tconst startedAt = performance.now();\n\t\tconst result = await limit(() => run(resolved, checked));\n\t\trecord.durationMs = performance.now() - startedAt;\n\t\trecord.status = result.stopReason === \"stop\" ? \"ok\" : result.stopReason === \"aborted\" ? \"cancelled\" : \"error\";\n\t\tif (result.errorMessage) record.error = truncateText(result.errorMessage, ERROR_PREVIEW_CHARS);\n\t\tif (result.usage) {\n\t\t\trecord.cost = result.usage.cost.total;\n\t\t\taddUsage(result.usage);\n\t\t}\n\t\tpublish();\n\t\treturn result;\n\t};\n\tconst implementations: Record<string, CodemodeTool[\"execute\"]> = {\n\t\t\"models.getModelsOfType\": (args) => {\n\t\t\tconst [type, provider] = args as unknown[];\n\t\t\treturn models.getModelsOfType(toModelType(type), toProvider(provider)).map(toModelInfo);\n\t\t},\n\t\t\"models.getAvailableOfType\": async (args, { signal }) => {\n\t\t\tconst [type, provider] = args as unknown[];\n\t\t\tconst available = await models.getAvailableOfType(toModelType(type), toProvider(provider), { signal });\n\t\t\treturn available.map(toModelInfo);\n\t\t},\n\t\t\"models.getModelOfType\": (args) => {\n\t\t\tconst [type, provider, id] = args as unknown[];\n\t\t\tif (typeof provider !== \"string\" || typeof id !== \"string\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`models.getModelOfType(type, provider, id) expects three strings, got (${(args as unknown[]).map(describeValue).join(\", \")}). The provider and the id are separate arguments, for example models.getModelOfType(\"classifier\", \"typesafe\", \"jev-latest\").`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst model = models.getModelOfType(toModelType(type), provider, id);\n\t\t\treturn model === undefined ? undefined : toModelInfo(model);\n\t\t},\n\t\t\"models.classify\": (args, { signal }) =>\n\t\t\trunModelCall(\"models.classify\", \"classifier\", args as unknown[], checkClassifierContext, (resolved, context) =>\n\t\t\t\tmodels.classify(resolved, context, { signal }),\n\t\t\t),\n\t\t\"models.generateImages\": (args, { signal }) =>\n\t\t\trunModelCall(\n\t\t\t\t\"models.generateImages\",\n\t\t\t\t\"image\",\n\t\t\t\targs as unknown[],\n\t\t\t\tcheckImagesContext,\n\t\t\t\tasync (resolved, context) => {\n\t\t\t\t\tconst result = await models.generateImages(resolved, context, { signal });\n\t\t\t\t\taddGeneratedImages(result.output.filter((block) => block.type === \"image\").length);\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t),\n\t};\n\treturn Object.entries(implementations).map(([name, execute]) => ({ name, spread: true, execute }));\n}\n"]}
@@ -0,0 +1,3 @@
1
+ /** Loads the codemode sandbox runtime on the first script (see execute.ts). */
2
+ export declare const loadCodemodeExecutor: () => Promise<typeof import("./execute.ts")>;
3
+ //# sourceMappingURL=execute.lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.lazy.d.ts","sourceRoot":"","sources":["../../../src/extensions/codemode/execute.lazy.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,eAAO,MAAM,oBAAoB,8CAA+B,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Loads the codemode sandbox runtime on the first script (see execute.ts). */
2
+ export const loadCodemodeExecutor = () => import("./execute.js");
3
+ //# sourceMappingURL=execute.lazy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.lazy.js","sourceRoot":"","sources":["../../../src/extensions/codemode/execute.lazy.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC","sourcesContent":["/** Loads the codemode sandbox runtime on the first script (see execute.ts). */\nexport const loadCodemodeExecutor = () => import(\"./execute.ts\");\n"]}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The `codemode` tool as an extension. The CLI loads it as a built-in extension; SDK users
3
+ * add `createCodemodeExtension()` to their extension factories.
4
+ *
5
+ * `codemode` is registered inactive. Activate it with `--tools`, the `defaultTools` setting, or
6
+ * `setActiveTools()`; the MCP extension activates it when MCP tools are only reachable from scripts.
7
+ */
8
+ import type { ExtensionFactory } from "../../core/extensions/types.ts";
9
+ import type { CodemodeMode } from "../../core/settings-manager.ts";
10
+ export interface CodemodeExtensionOptions {
11
+ /** Overrides the `codemode.mode` setting. */
12
+ mode?: CodemodeMode;
13
+ /** Overrides the `codemode.inlineBudget` setting. */
14
+ inlineBudget?: number;
15
+ /** Expose the model catalog and classifiers to scripts as `models`. Default: `true`. */
16
+ models?: boolean;
17
+ }
18
+ export declare function createCodemodeExtension(options?: CodemodeExtensionOptions): ExtensionFactory;
19
+ declare const _default: ExtensionFactory;
20
+ export default _default;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extensions/codemode/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAgB,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAGnE,MAAM,WAAW,wBAAwB;IACxC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wFAAwF;IACxF,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAWD,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,wBAA6B,GAAG,gBAAgB,CAahG"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The `codemode` tool as an extension. The CLI loads it as a built-in extension; SDK users
3
+ * add `createCodemodeExtension()` to their extension factories.
4
+ *
5
+ * `codemode` is registered inactive. Activate it with `--tools`, the `defaultTools` setting, or
6
+ * `setActiveTools()`; the MCP extension activates it when MCP tools are only reachable from scripts.
7
+ */
8
+ import { createCodemodeToolDefinition } from "./tool.js";
9
+ function readMode(relay) {
10
+ return relay.getSettings().codemode?.mode === "only" ? "only" : "on";
11
+ }
12
+ function readInlineBudget(relay) {
13
+ const budget = relay.getSettings().codemode?.inlineBudget;
14
+ return typeof budget === "number" && Number.isFinite(budget) && budget >= 0 ? budget : undefined;
15
+ }
16
+ export function createCodemodeExtension(options = {}) {
17
+ return (relay) => {
18
+ relay.registerTool({
19
+ ...createCodemodeToolDefinition({
20
+ appendEntry: (customType, data) => relay.appendEntry(customType, data),
21
+ models: options.models ?? true,
22
+ getToolNamespace: (name) => relay.getAllTools().find((tool) => tool.name === name)?.namespace,
23
+ getMode: () => options.mode ?? readMode(relay),
24
+ getInlineBudget: () => options.inlineBudget ?? readInlineBudget(relay),
25
+ }),
26
+ defaultActive: false,
27
+ });
28
+ };
29
+ }
30
+ export default createCodemodeExtension();
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/codemode/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC;AAWzD,SAAS,QAAQ,CAAC,KAAmB;IACpC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAmB;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;IAC1D,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAO,GAA6B,EAAE;IAC7E,OAAO,CAAC,KAAK,EAAE,EAAE;QAChB,KAAK,CAAC,YAAY,CAAC;YAClB,GAAG,4BAA4B,CAAC;gBAC/B,WAAW,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC;gBACtE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;gBAC9B,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,SAAS;gBAC7F,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC;gBAC9C,eAAe,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,IAAI,gBAAgB,CAAC,KAAK,CAAC;aACtE,CAAC;YACF,aAAa,EAAE,KAAK;SACpB,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC;AAED,eAAe,uBAAuB,EAAE,CAAC","sourcesContent":["/**\n * The `codemode` tool as an extension. The CLI loads it as a built-in extension; SDK users\n * add `createCodemodeExtension()` to their extension factories.\n *\n * `codemode` is registered inactive. Activate it with `--tools`, the `defaultTools` setting, or\n * `setActiveTools()`; the MCP extension activates it when MCP tools are only reachable from scripts.\n */\n\nimport type { ExtensionAPI, ExtensionFactory } from \"../../core/extensions/types.ts\";\nimport type { CodemodeMode } from \"../../core/settings-manager.ts\";\nimport { createCodemodeToolDefinition } from \"./tool.ts\";\n\nexport interface CodemodeExtensionOptions {\n\t/** Overrides the `codemode.mode` setting. */\n\tmode?: CodemodeMode;\n\t/** Overrides the `codemode.inlineBudget` setting. */\n\tinlineBudget?: number;\n\t/** Expose the model catalog and classifiers to scripts as `models`. Default: `true`. */\n\tmodels?: boolean;\n}\n\nfunction readMode(relay: ExtensionAPI): CodemodeMode {\n\treturn relay.getSettings().codemode?.mode === \"only\" ? \"only\" : \"on\";\n}\n\nfunction readInlineBudget(relay: ExtensionAPI): number | undefined {\n\tconst budget = relay.getSettings().codemode?.inlineBudget;\n\treturn typeof budget === \"number\" && Number.isFinite(budget) && budget >= 0 ? budget : undefined;\n}\n\nexport function createCodemodeExtension(options: CodemodeExtensionOptions = {}): ExtensionFactory {\n\treturn (relay) => {\n\t\trelay.registerTool({\n\t\t\t...createCodemodeToolDefinition({\n\t\t\t\tappendEntry: (customType, data) => relay.appendEntry(customType, data),\n\t\t\t\tmodels: options.models ?? true,\n\t\t\t\tgetToolNamespace: (name) => relay.getAllTools().find((tool) => tool.name === name)?.namespace,\n\t\t\t\tgetMode: () => options.mode ?? readMode(relay),\n\t\t\t\tgetInlineBudget: () => options.inlineBudget ?? readInlineBudget(relay),\n\t\t\t}),\n\t\t\tdefaultActive: false,\n\t\t});\n\t};\n}\n\nexport default createCodemodeExtension();\n"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Presentation for the codemode tool.
3
+ *
4
+ * The call shows the script; the result lists the nested tool calls with their status as they
5
+ * run and the cost of its model calls, followed by the script output without the "Script completed"
6
+ * header. Nested calls are not
7
+ * separate tool rows because they never reach the model as tool calls.
8
+ */
9
+ import type { ToolDefinition } from "../../core/extensions/types.ts";
10
+ import type { CodemodeToolDetails } from "./tool.ts";
11
+ export declare const codemodeRenderers: Pick<ToolDefinition<any, CodemodeToolDetails | undefined>, "renderCall" | "renderResult">;
12
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/extensions/codemode/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAKrE,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAiDzE,eAAO,MAAM,iBAAiB,EAAE,IAAI,CACnC,cAAc,CAAC,GAAG,EAAE,mBAAmB,GAAG,SAAS,CAAC,EACpD,YAAY,GAAG,cAAc,CAmF7B,CAAC"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Presentation for the codemode tool.
3
+ *
4
+ * The call shows the script; the result lists the nested tool calls with their status as they
5
+ * run and the cost of its model calls, followed by the script output without the "Script completed"
6
+ * header. Nested calls are not
7
+ * separate tool rows because they never reach the model as tool calls.
8
+ */
9
+ import { Container, Spacer, Text } from "@relay-harness/tui";
10
+ import { getTextOutput, replaceTabs, str } from "../../core/tools/render-utils.js";
11
+ import { keyHint } from "../../modes/interactive/components/keybinding-hints.js";
12
+ import { VisualLinePreview } from "../../modes/interactive/components/visual-truncate.js";
13
+ import { highlightCode } from "../../modes/interactive/theme/theme.js";
14
+ const CODE_PREVIEW_LINES = 10;
15
+ const CALL_PREVIEW_COUNT = 8;
16
+ const OUTPUT_PREVIEW_LINES = 5;
17
+ const COLLAPSED_ARGS_CHARS = 80;
18
+ const SCRIPT_HEADER = /^Script (completed|failed)\nWall time [\d.]+ seconds\nOutput:\n$/;
19
+ function expandHint(theme, hidden, noun) {
20
+ return `${theme.fg("muted", `... (${hidden} more ${noun},`)} ${keyHint("app.tools.expand", "to expand")}${theme.fg("muted", ")")}`;
21
+ }
22
+ function formatDuration(ms) {
23
+ if (ms === undefined)
24
+ return "";
25
+ return ms < 1000 ? `${Math.round(ms)}ms` : `${(ms / 1000).toFixed(1)}s`;
26
+ }
27
+ /** Cents for larger amounts, two significant digits for the fractions of a cent classifier calls cost. */
28
+ function formatCost(cost) {
29
+ return `$${cost >= 0.01 ? cost.toFixed(2) : cost.toPrecision(2)}`;
30
+ }
31
+ function statusIcon(call, theme) {
32
+ switch (call.status) {
33
+ case "running":
34
+ return theme.fg("warning", "…");
35
+ case "ok":
36
+ return theme.fg("success", "✓");
37
+ case "error":
38
+ return theme.fg("error", "✗");
39
+ case "cancelled":
40
+ return theme.fg("muted", "⊘");
41
+ }
42
+ }
43
+ function formatCall(call, theme, expanded) {
44
+ const args = !expanded && call.args.length > COLLAPSED_ARGS_CHARS
45
+ ? `${call.args.slice(0, COLLAPSED_ARGS_CHARS - 3)}...`
46
+ : call.args;
47
+ const duration = formatDuration(call.durationMs);
48
+ let line = `${statusIcon(call, theme)} ${theme.fg("toolTitle", call.name)}`;
49
+ if (args)
50
+ line += ` ${theme.fg("muted", args)}`;
51
+ if (duration)
52
+ line += ` ${theme.fg("dim", duration)}`;
53
+ if (call.cost)
54
+ line += ` ${theme.fg("dim", formatCost(call.cost))}`;
55
+ if (expanded && call.error)
56
+ line += `\n ${theme.fg("error", call.error.split("\n").join("\n "))}`;
57
+ return line;
58
+ }
59
+ export const codemodeRenderers = {
60
+ renderCall(args, theme, context) {
61
+ // The code includes the `// @options:` line, so options show as part of the script.
62
+ const code = str(args?.code);
63
+ const title = theme.fg("toolTitle", theme.bold("codemode"));
64
+ const component = context.lastComponent ?? new Container();
65
+ component.clear();
66
+ if (code === null) {
67
+ component.addChild(new Text(`${title} ${theme.fg("error", "[invalid arg]")}`, 0, 0));
68
+ return component;
69
+ }
70
+ component.addChild(new Text(title, 0, 0));
71
+ if (code) {
72
+ const highlighted = highlightCode(replaceTabs(code.replace(/\r/g, "").trimEnd()), "javascript").join("\n");
73
+ component.addChild(context.expanded
74
+ ? new Text(highlighted, 0, 0)
75
+ : new VisualLinePreview({
76
+ text: highlighted,
77
+ maxVisualLines: CODE_PREVIEW_LINES,
78
+ keep: "start",
79
+ formatHint: (hidden) => expandHint(theme, hidden, "lines"),
80
+ }));
81
+ }
82
+ return component;
83
+ },
84
+ renderResult(result, options, theme, context) {
85
+ const component = context.lastComponent ?? new Container();
86
+ component.clear();
87
+ const calls = result.details?.calls ?? [];
88
+ if (calls.length > 0) {
89
+ const shown = options.expanded ? calls : calls.slice(-CALL_PREVIEW_COUNT);
90
+ const lines = shown.map((call) => formatCall(call, theme, options.expanded));
91
+ if (shown.length < calls.length) {
92
+ lines.unshift(`${theme.fg("muted", `... (${calls.length - shown.length} earlier calls,`)} ${keyHint("app.tools.expand", "to expand")}${theme.fg("muted", ")")}`);
93
+ }
94
+ // Collapsed rows hide earlier calls, so the total covers every call.
95
+ const priced = calls.filter((call) => call.cost);
96
+ if (priced.length > 1) {
97
+ const total = priced.reduce((sum, call) => sum + (call.cost ?? 0), 0);
98
+ lines.push(theme.fg("muted", `Model calls: ${formatCost(total)}`));
99
+ }
100
+ component.addChild(new Spacer(1));
101
+ component.addChild(new Text(lines.join("\n"), 0, 0));
102
+ }
103
+ // Drop the "Script completed\nWall time ...\nOutput:\n" header. Rejected input (invalid options)
104
+ // has no header.
105
+ const [first, ...rest] = result.content;
106
+ const hasHeader = first?.type === "text" && SCRIPT_HEADER.test(first.text);
107
+ const output = options.isPartial
108
+ ? ""
109
+ : getTextOutput({ ...result, content: hasHeader ? rest : result.content }, context.showImages).trim();
110
+ if (output) {
111
+ const color = context.isError ? "error" : "toolOutput";
112
+ const styled = replaceTabs(output)
113
+ .split("\n")
114
+ .map((line) => theme.fg(color, line))
115
+ .join("\n");
116
+ component.addChild(new Spacer(1));
117
+ if (options.expanded) {
118
+ component.addChild(new Text(styled, 0, 0));
119
+ }
120
+ else {
121
+ // Limit wrapped lines, not logical ones: script output is often one long JSON line.
122
+ component.addChild(new VisualLinePreview({
123
+ text: styled,
124
+ maxVisualLines: OUTPUT_PREVIEW_LINES,
125
+ keep: "start",
126
+ formatHint: (hidden) => expandHint(theme, hidden, "lines"),
127
+ }));
128
+ // The collapsed preview hides the truncation notice at the end, so name the file here.
129
+ const fullOutputPath = result.details?.fullOutputPath;
130
+ if (fullOutputPath)
131
+ component.addChild(new Text(theme.fg("muted", `Full output: ${fullOutputPath}`), 0, 0));
132
+ }
133
+ }
134
+ return component;
135
+ },
136
+ };
137
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/extensions/codemode/renderer.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Presentation for the codemode tool.\n *\n * The call shows the script; the result lists the nested tool calls with their status as they\n * run and the cost of its model calls, followed by the script output without the \"Script completed\"\n * header. Nested calls are not\n * separate tool rows because they never reach the model as tool calls.\n */\n\nimport { Container, Spacer, Text } from \"@relay-harness/tui\";\nimport type { ToolDefinition } from \"../../core/extensions/types.ts\";\nimport { getTextOutput, replaceTabs, str } from \"../../core/tools/render-utils.ts\";\nimport { keyHint } from \"../../modes/interactive/components/keybinding-hints.ts\";\nimport { VisualLinePreview } from \"../../modes/interactive/components/visual-truncate.ts\";\nimport { highlightCode, type Theme } from \"../../modes/interactive/theme/theme.ts\";\nimport type { CodemodeNestedCall, CodemodeToolDetails } from \"./tool.ts\";\n\nconst CODE_PREVIEW_LINES = 10;\nconst CALL_PREVIEW_COUNT = 8;\nconst OUTPUT_PREVIEW_LINES = 5;\nconst COLLAPSED_ARGS_CHARS = 80;\nconst SCRIPT_HEADER = /^Script (completed|failed)\\nWall time [\\d.]+ seconds\\nOutput:\\n$/;\n\nfunction expandHint(theme: Theme, hidden: number, noun: string): string {\n\treturn `${theme.fg(\"muted\", `... (${hidden} more ${noun},`)} ${keyHint(\"app.tools.expand\", \"to expand\")}${theme.fg(\"muted\", \")\")}`;\n}\n\nfunction formatDuration(ms: number | undefined): string {\n\tif (ms === undefined) return \"\";\n\treturn ms < 1000 ? `${Math.round(ms)}ms` : `${(ms / 1000).toFixed(1)}s`;\n}\n\n/** Cents for larger amounts, two significant digits for the fractions of a cent classifier calls cost. */\nfunction formatCost(cost: number): string {\n\treturn `$${cost >= 0.01 ? cost.toFixed(2) : cost.toPrecision(2)}`;\n}\n\nfunction statusIcon(call: CodemodeNestedCall, theme: Theme): string {\n\tswitch (call.status) {\n\t\tcase \"running\":\n\t\t\treturn theme.fg(\"warning\", \"…\");\n\t\tcase \"ok\":\n\t\t\treturn theme.fg(\"success\", \"✓\");\n\t\tcase \"error\":\n\t\t\treturn theme.fg(\"error\", \"✗\");\n\t\tcase \"cancelled\":\n\t\t\treturn theme.fg(\"muted\", \"⊘\");\n\t}\n}\n\nfunction formatCall(call: CodemodeNestedCall, theme: Theme, expanded: boolean): string {\n\tconst args =\n\t\t!expanded && call.args.length > COLLAPSED_ARGS_CHARS\n\t\t\t? `${call.args.slice(0, COLLAPSED_ARGS_CHARS - 3)}...`\n\t\t\t: call.args;\n\tconst duration = formatDuration(call.durationMs);\n\tlet line = `${statusIcon(call, theme)} ${theme.fg(\"toolTitle\", call.name)}`;\n\tif (args) line += ` ${theme.fg(\"muted\", args)}`;\n\tif (duration) line += ` ${theme.fg(\"dim\", duration)}`;\n\tif (call.cost) line += ` ${theme.fg(\"dim\", formatCost(call.cost))}`;\n\tif (expanded && call.error) line += `\\n ${theme.fg(\"error\", call.error.split(\"\\n\").join(\"\\n \"))}`;\n\treturn line;\n}\n\nexport const codemodeRenderers: Pick<\n\tToolDefinition<any, CodemodeToolDetails | undefined>,\n\t\"renderCall\" | \"renderResult\"\n> = {\n\trenderCall(args, theme, context) {\n\t\t// The code includes the `// @options:` line, so options show as part of the script.\n\t\tconst code = str((args as { code?: unknown } | undefined)?.code);\n\t\tconst title = theme.fg(\"toolTitle\", theme.bold(\"codemode\"));\n\t\tconst component = (context.lastComponent as Container | undefined) ?? new Container();\n\t\tcomponent.clear();\n\t\tif (code === null) {\n\t\t\tcomponent.addChild(new Text(`${title} ${theme.fg(\"error\", \"[invalid arg]\")}`, 0, 0));\n\t\t\treturn component;\n\t\t}\n\t\tcomponent.addChild(new Text(title, 0, 0));\n\t\tif (code) {\n\t\t\tconst highlighted = highlightCode(replaceTabs(code.replace(/\\r/g, \"\").trimEnd()), \"javascript\").join(\"\\n\");\n\t\t\tcomponent.addChild(\n\t\t\t\tcontext.expanded\n\t\t\t\t\t? new Text(highlighted, 0, 0)\n\t\t\t\t\t: new VisualLinePreview({\n\t\t\t\t\t\t\ttext: highlighted,\n\t\t\t\t\t\t\tmaxVisualLines: CODE_PREVIEW_LINES,\n\t\t\t\t\t\t\tkeep: \"start\",\n\t\t\t\t\t\t\tformatHint: (hidden) => expandHint(theme, hidden, \"lines\"),\n\t\t\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\treturn component;\n\t},\n\trenderResult(result, options, theme, context) {\n\t\tconst component = (context.lastComponent as Container | undefined) ?? new Container();\n\t\tcomponent.clear();\n\t\tconst calls = result.details?.calls ?? [];\n\t\tif (calls.length > 0) {\n\t\t\tconst shown = options.expanded ? calls : calls.slice(-CALL_PREVIEW_COUNT);\n\t\t\tconst lines = shown.map((call) => formatCall(call, theme, options.expanded));\n\t\t\tif (shown.length < calls.length) {\n\t\t\t\tlines.unshift(\n\t\t\t\t\t`${theme.fg(\"muted\", `... (${calls.length - shown.length} earlier calls,`)} ${keyHint(\"app.tools.expand\", \"to expand\")}${theme.fg(\"muted\", \")\")}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\t// Collapsed rows hide earlier calls, so the total covers every call.\n\t\t\tconst priced = calls.filter((call) => call.cost);\n\t\t\tif (priced.length > 1) {\n\t\t\t\tconst total = priced.reduce((sum, call) => sum + (call.cost ?? 0), 0);\n\t\t\t\tlines.push(theme.fg(\"muted\", `Model calls: ${formatCost(total)}`));\n\t\t\t}\n\t\t\tcomponent.addChild(new Spacer(1));\n\t\t\tcomponent.addChild(new Text(lines.join(\"\\n\"), 0, 0));\n\t\t}\n\n\t\t// Drop the \"Script completed\\nWall time ...\\nOutput:\\n\" header. Rejected input (invalid options)\n\t\t// has no header.\n\t\tconst [first, ...rest] = result.content;\n\t\tconst hasHeader = first?.type === \"text\" && SCRIPT_HEADER.test(first.text);\n\t\tconst output = options.isPartial\n\t\t\t? \"\"\n\t\t\t: getTextOutput({ ...result, content: hasHeader ? rest : result.content }, context.showImages).trim();\n\t\tif (output) {\n\t\t\tconst color = context.isError ? \"error\" : \"toolOutput\";\n\t\t\tconst styled = replaceTabs(output)\n\t\t\t\t.split(\"\\n\")\n\t\t\t\t.map((line) => theme.fg(color, line))\n\t\t\t\t.join(\"\\n\");\n\t\t\tcomponent.addChild(new Spacer(1));\n\t\t\tif (options.expanded) {\n\t\t\t\tcomponent.addChild(new Text(styled, 0, 0));\n\t\t\t} else {\n\t\t\t\t// Limit wrapped lines, not logical ones: script output is often one long JSON line.\n\t\t\t\tcomponent.addChild(\n\t\t\t\t\tnew VisualLinePreview({\n\t\t\t\t\t\ttext: styled,\n\t\t\t\t\t\tmaxVisualLines: OUTPUT_PREVIEW_LINES,\n\t\t\t\t\t\tkeep: \"start\",\n\t\t\t\t\t\tformatHint: (hidden) => expandHint(theme, hidden, \"lines\"),\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\t// The collapsed preview hides the truncation notice at the end, so name the file here.\n\t\t\t\tconst fullOutputPath = result.details?.fullOutputPath;\n\t\t\t\tif (fullOutputPath) component.addChild(new Text(theme.fg(\"muted\", `Full output: ${fullOutputPath}`), 0, 0));\n\t\t\t}\n\t\t}\n\t\treturn component;\n\t},\n};\n"]}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * The `codemode` tool: the model writes JavaScript that calls other tools. Scripts use `tools`,
3
+ * `ALL_TOOLS`, `text()`, `image()`, `exit()`, `store()`/`load()`, `console.*`, and `return <value>`,
4
+ * may start with a `// @options:` line, and reach the model catalog, classifiers, and image models
5
+ * through `models.*`. Results start with a "Script completed" or "Script failed" header.
6
+ *
7
+ * Scripts can call the agent loop's nested tools: active `direct` tools and every `codemode` or
8
+ * `deferred` tool. Nested calls run through the agent loop's tool pipeline (`ctx.executeTool`), so
9
+ * validation, `tool_call`/`tool_result` hooks, and permission checks apply exactly as for direct
10
+ * calls. Only the script's output reaches the model; nested results do not.
11
+ *
12
+ * Nested results are handed to the script as follows:
13
+ * - A tool that declares `outputSchema` resolves to its `structuredContent`, also for error
14
+ * results that carry one (MCP tools resolve to their `CallToolResult`, including `isError`).
15
+ * - Any other tool resolves to its text content as one string.
16
+ * - A failed, blocked, or invalid call rejects with an Error carrying the tool's error text.
17
+ *
18
+ * A script that fails returns a normal error result that keeps its partial output, followed by
19
+ * "Script error:" and the error. `store(key, value)` and `load(key)` keep JSON values across
20
+ * calls; successful scripts append their writes to the session as `codemode-store` custom entries,
21
+ * so each branch sees the values written on its own path.
22
+ */
23
+ import type { AgentTool } from "@relay-harness/agent-core";
24
+ import type { CodemodeTool } from "@relay-harness/codemode";
25
+ import { type Static, Type } from "typebox";
26
+ import type { ToolDefinition, ToolInfo, ToolNamespace } from "../../core/extensions/types.ts";
27
+ import type { ModelRegistry } from "../../core/model-registry.ts";
28
+ import type { CodemodeMode } from "../../core/settings-manager.ts";
29
+ export declare const CODEMODE_TOOL_NAME = "codemode";
30
+ /** Custom entry type holding one script's `store()` writes: {@link CodemodeStoreEntryData}. */
31
+ export declare const CODEMODE_STORE_ENTRY_TYPE = "codemode-store";
32
+ export interface CodemodeStoreEntryData {
33
+ set: Record<string, unknown>;
34
+ delete: string[];
35
+ }
36
+ /** The part of the model registry that scripts reach through `models`. */
37
+ export type CodemodeModelRuntime = Pick<ModelRegistry, "getModelsOfType" | "getAvailableOfType" | "getModelOfType" | "classify" | "generateImages">;
38
+ export interface CodemodeToolOptions {
39
+ /** Namespace of a tool, for `searchTools()` ranking and its `namespace` filter. */
40
+ getToolNamespace?: (toolName: string) => ToolNamespace | undefined;
41
+ /**
42
+ * Expose the `models` namespace to scripts, backed by the session's model registry
43
+ * (`ctx.modelRegistry`). Without it, `models` is not declared.
44
+ */
45
+ models?: boolean;
46
+ /**
47
+ * Persists `store()` writes as a session custom entry. Without it, writes last only for the
48
+ * current script; `load()` still reads entries already on the branch.
49
+ */
50
+ appendEntry?: (customType: string, data: CodemodeStoreEntryData) => void;
51
+ /** How the tool presents the loadout while active (the `codemode.mode` setting). Default: `on`. */
52
+ getMode?: () => CodemodeMode;
53
+ /** Token budget for tool declarations in the description. Default: {@link DEFAULT_CODEMODE_INLINE_BUDGET}. */
54
+ getInlineBudget?: () => number | undefined;
55
+ }
56
+ export declare const codemodeSchema: Type.TObject<{
57
+ code: Type.TString;
58
+ }>;
59
+ export type CodemodeToolInput = Static<typeof codemodeSchema>;
60
+ /**
61
+ * Whether a registered tool is this package's `codemode` tool rather than another extension's tool
62
+ * with the same name. Compares the parameter schema, which the definition passes through by reference.
63
+ */
64
+ export declare function isCodemodeTool(tool: Pick<ToolInfo, "name" | "parameters">): boolean;
65
+ export type CodemodeNestedCallStatus = "running" | "ok" | "error" | "cancelled";
66
+ export interface CodemodeNestedCall {
67
+ /** Tool call id of the nested call, `<codemode call id>/<n>`. */
68
+ id: string;
69
+ name: string;
70
+ /** Compact JSON of the arguments, truncated for display. */
71
+ args: string;
72
+ status: CodemodeNestedCallStatus;
73
+ durationMs?: number;
74
+ /** Error text, truncated for display. */
75
+ error?: string;
76
+ /** Cost in USD of a `models.*` call that reported usage. */
77
+ cost?: number;
78
+ }
79
+ export interface CodemodeToolDetails {
80
+ calls: CodemodeNestedCall[];
81
+ /** Temp file with the full text output, when the output was truncated. */
82
+ fullOutputPath?: string;
83
+ }
84
+ export declare const codemodeToolSystemPromptContribution: {
85
+ readonly snippet: "Run JavaScript that calls other tools";
86
+ readonly guidelines: readonly ["Use codemode to batch independent tool calls (Promise.allSettled), chain them, or filter large output, instead of many separate calls."];
87
+ };
88
+ /** The reference for scripts: globals, tool results, `store()`, the `models` API, and limits. */
89
+ export declare const CODEMODE_DOCS_PATH: string;
90
+ /** Default for {@link CodemodeDescriptionOptions.inlineBudget}, in estimated tokens. */
91
+ export declare const DEFAULT_CODEMODE_INLINE_BUDGET = 3000;
92
+ /** What a script sees of a tool. Tools without an output schema resolve to their text output. */
93
+ export declare function toCodemodeDeclaration(tool: AgentTool<any>): Omit<CodemodeTool, "execute">;
94
+ /** Tools a script may call: every given tool except the codemode tool itself. */
95
+ export declare function getCodemodeCallableTools(tools: readonly AgentTool<any>[]): AgentTool<any>[];
96
+ export interface CodemodeDescriptionOptions {
97
+ /** Declare the `models` namespace; only for tools created with model access. */
98
+ models?: boolean;
99
+ /** Namespace of each tool, by tool name. Tools of one namespace are listed under one heading. */
100
+ namespaces?: ReadonlyMap<string, ToolNamespace>;
101
+ /** Tools that are callable but never listed with their declaration (`deferred` exposure). */
102
+ deferred?: ReadonlySet<string>;
103
+ /**
104
+ * Estimated tokens (characters / 4) the tool sections may use. Tools that do not fit are left
105
+ * out, like deferred tools. Unset lists every tool that is not deferred.
106
+ */
107
+ inlineBudget?: number;
108
+ }
109
+ /**
110
+ * Model-facing description: the helper list, guidance for finding tools that are not listed, the
111
+ * shared MCP types when listed tools need them, the `models` API, and one section per listed tool,
112
+ * grouped by namespace. Deferred tools are never listed and do not affect the description at all, so
113
+ * it stays the same while MCP servers connect or change their tools. Tool sections are limited to
114
+ * `inlineBudget`.
115
+ */
116
+ export declare function createCodemodeDescription(tools: readonly AgentTool<any>[], options?: CodemodeDescriptionOptions): string;
117
+ export declare function createCodemodeToolDefinition(options?: CodemodeToolOptions): ToolDefinition<typeof codemodeSchema, CodemodeToolDetails | undefined>;
118
+ /**
119
+ * Create the codemode tool as an AgentTool. The description lists the given tools; the script can
120
+ * call whatever tools the agent loop provides at execution time.
121
+ */
122
+ export declare function createCodemodeTool(tools?: readonly AgentTool<any>[], options?: CodemodeToolOptions): AgentTool<typeof codemodeSchema>;
123
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/extensions/codemode/tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAsB,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAShF,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,KAAK,EACX,cAAc,EACd,QAAQ,EAGR,aAAa,EACb,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAKnE,eAAO,MAAM,kBAAkB,aAAa,CAAC;AAE7C,+FAA+F;AAC/F,eAAO,MAAM,yBAAyB,mBAAmB,CAAC;AAE1D,MAAM,WAAW,sBAAsB;IACtC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,0EAA0E;AAC1E,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACtC,aAAa,EACb,iBAAiB,GAAG,oBAAoB,GAAG,gBAAgB,GAAG,UAAU,GAAG,gBAAgB,CAC3F,CAAC;AAEF,MAAM,WAAW,mBAAmB;IACnC,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAC;IACnE;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACzE,mGAAmG;IACnG,OAAO,CAAC,EAAE,MAAM,YAAY,CAAC;IAC7B,8GAA8G;IAC9G,eAAe,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAC3C;AAID,eAAO,MAAM,cAAc;;EAIzB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AAE9D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAAC,GAAG,OAAO,CAEnF;AAED,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,WAAW,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IAClC,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,wBAAwB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,oCAAoC;aAChD,OAAO,EAAE,uCAAuC;aAChD,UAAU,YACT,wIAAwI;CAEhI,CAAC;AAEX,iGAAiG;AACjG,eAAO,MAAM,kBAAkB,QAAqC,CAAC;AAoBrE,wFAAwF;AACxF,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAInD,iGAAiG;AACjG,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAOzF;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAE3F;AAED,MAAM,WAAW,0BAA0B;IAC1C,gFAAgF;IAChF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iGAAiG;IACjG,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAChD,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AA6CD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,SAAS,SAAS,CAAC,GAAG,CAAC,EAAE,EAChC,OAAO,GAAE,0BAA+B,GACtC,MAAM,CA+CR;AA8ED,wBAAgB,4BAA4B,CAC3C,OAAO,GAAE,mBAAwB,GAC/B,cAAc,CAAC,OAAO,cAAc,EAAE,mBAAmB,GAAG,SAAS,CAAC,CAmBxE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,GAAE,SAAS,SAAS,CAAC,GAAG,CAAC,EAAO,EACrC,OAAO,GAAE,mBAAwB,GAC/B,SAAS,CAAC,OAAO,cAAc,CAAC,CASlC"}