zidane 9.1.1 → 9.1.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 (279) hide show
  1. package/dist/{acp-Di9WvMDF.js → acp-CeCavNlg.js} +7 -7
  2. package/dist/{acp-Di9WvMDF.js.map → acp-CeCavNlg.js.map} +1 -1
  3. package/dist/acp-cli.js +5 -5
  4. package/dist/acp.d.ts +2 -2
  5. package/dist/acp.js +1 -1
  6. package/dist/{agent-DJhpTS-B.js → agent-Dh_XZ7fj.js} +74 -19
  7. package/dist/agent-Dh_XZ7fj.js.map +1 -0
  8. package/dist/agent.d.ts +1 -1
  9. package/dist/agent.js +1 -1
  10. package/dist/{auth-store-port-DFgf22oo.js → auth-store-port-BKpjlJ8a.js} +2 -2
  11. package/dist/{auth-store-port-DFgf22oo.js.map → auth-store-port-BKpjlJ8a.js.map} +1 -1
  12. package/dist/{auto-update-restart-BFB7Ek87.js → auto-update-restart-CQJtndMG.js} +277 -41
  13. package/dist/auto-update-restart-CQJtndMG.js.map +1 -0
  14. package/dist/{browser-BcoCCB_n.js → browser-BkdeKnxO.js} +56 -2
  15. package/dist/browser-BkdeKnxO.js.map +1 -0
  16. package/dist/{browser-entry-ypi8CyE-.d.ts → browser-entry-BCwruqNa.d.ts} +10 -10
  17. package/dist/{browser-entry-ypi8CyE-.d.ts.map → browser-entry-BCwruqNa.d.ts.map} +1 -1
  18. package/dist/channels.d.ts +5 -5
  19. package/dist/chat/browser.d.ts +4 -4
  20. package/dist/chat/browser.js +6 -6
  21. package/dist/chat/pure.d.ts +5 -5
  22. package/dist/chat/pure.js +8 -8
  23. package/dist/chat.d.ts +5 -5
  24. package/dist/chat.js +55 -55
  25. package/dist/chat.js.map +1 -1
  26. package/dist/{cli-shared-CabruH8Z.js → cli-shared-DeRHgYvl.js} +4 -4
  27. package/dist/{cli-shared-CabruH8Z.js.map → cli-shared-DeRHgYvl.js.map} +1 -1
  28. package/dist/cli-style-DBEm6CyT.js +105 -0
  29. package/dist/cli-style-DBEm6CyT.js.map +1 -0
  30. package/dist/{client-core-CIixwznM.d.ts → client-core-C_4m_oL6.d.ts} +4 -4
  31. package/dist/{client-core-CIixwznM.d.ts.map → client-core-C_4m_oL6.d.ts.map} +1 -1
  32. package/dist/{client-CCaIXWue.d.ts → client-ygTASGis.d.ts} +2 -2
  33. package/dist/{client-CCaIXWue.d.ts.map → client-ygTASGis.d.ts.map} +1 -1
  34. package/dist/codemode-worker.js +8 -5
  35. package/dist/codemode-worker.js.map +1 -1
  36. package/dist/codemode.d.ts +16 -0
  37. package/dist/codemode.d.ts.map +1 -1
  38. package/dist/codemode.js +2 -2
  39. package/dist/{connection-loop-QmWL-fJf.d.ts → connection-loop-D_pRONCr.d.ts} +4 -4
  40. package/dist/{connection-loop-QmWL-fJf.d.ts.map → connection-loop-D_pRONCr.d.ts.map} +1 -1
  41. package/dist/contexts/daytona.d.ts +3 -3
  42. package/dist/contexts/docker.d.ts +1 -1
  43. package/dist/contexts/e2b.d.ts +2 -2
  44. package/dist/contexts/sandbox.d.ts +1 -1
  45. package/dist/{contexts-C72b0mMa.js → contexts-DLZTSRHU.js} +17 -106
  46. package/dist/contexts-DLZTSRHU.js.map +1 -0
  47. package/dist/contexts.d.ts +4 -4
  48. package/dist/contexts.js +2 -2
  49. package/dist/{credentials-wwETW8rI.js → credentials-Bqg-qNBM.js} +2 -2
  50. package/dist/{credentials-wwETW8rI.js.map → credentials-Bqg-qNBM.js.map} +1 -1
  51. package/dist/{cwd-picker-CcekODCt.js → cwd-picker-BsHA6HKv.js} +4 -4
  52. package/dist/{cwd-picker-CcekODCt.js.map → cwd-picker-BsHA6HKv.js.map} +1 -1
  53. package/dist/daemon-cli.js +4 -3
  54. package/dist/daemon-cli.js.map +1 -1
  55. package/dist/{decisions-CXmK0nz9.js → decisions-hsw5XS2g.js} +3 -1
  56. package/dist/decisions-hsw5XS2g.js.map +1 -0
  57. package/dist/{discovery-DycXFxdA.js → discovery-CX7nbMCn.js} +4 -4
  58. package/dist/{discovery-DycXFxdA.js.map → discovery-CX7nbMCn.js.map} +1 -1
  59. package/dist/durable/sqlite.d.ts +2 -2
  60. package/dist/durable.d.ts +1 -1
  61. package/dist/{engine-VQ86XGdG.js → engine-CxBGgU94.js} +6 -6
  62. package/dist/{engine-VQ86XGdG.js.map → engine-CxBGgU94.js.map} +1 -1
  63. package/dist/{eval-Bod0I1W_.js → eval-CfGUDAkN.js} +3 -3
  64. package/dist/{eval-Bod0I1W_.js.map → eval-CfGUDAkN.js.map} +1 -1
  65. package/dist/eval.d.ts +1 -1
  66. package/dist/eval.js +1 -1
  67. package/dist/{executor-C7RQrkEq.js → executor-j_LFRBwS.js} +4 -4
  68. package/dist/{executor-C7RQrkEq.js.map → executor-j_LFRBwS.js.map} +1 -1
  69. package/dist/{extension-mark-BqKdEZwF.js → extension-mark-_rhkDWL5.js} +9 -6
  70. package/dist/extension-mark-_rhkDWL5.js.map +1 -0
  71. package/dist/extensions/testing.d.ts +1 -1
  72. package/dist/extensions/testing.js +2 -2
  73. package/dist/{extensions-BCx4QuGB.js → extensions-ADlhBQ_1.js} +8 -8
  74. package/dist/{extensions-BCx4QuGB.js.map → extensions-ADlhBQ_1.js.map} +1 -1
  75. package/dist/{extensions-client-D8tEAcMw.d.ts → extensions-client-D4Q2XRKV.d.ts} +31 -5
  76. package/dist/extensions-client-D4Q2XRKV.d.ts.map +1 -0
  77. package/dist/extensions.d.ts +1 -1
  78. package/dist/extensions.js +6 -6
  79. package/dist/{fold-rules-DvLK8pbf.d.ts → fold-rules-1DpDwG9h.d.ts} +2 -2
  80. package/dist/{fold-rules-DvLK8pbf.d.ts.map → fold-rules-1DpDwG9h.d.ts.map} +1 -1
  81. package/dist/{google-Crva32sk.js → google-B-Dhmzzf.js} +2 -2
  82. package/dist/{google-Crva32sk.js.map → google-B-Dhmzzf.js.map} +1 -1
  83. package/dist/{headless-CCm-jLLT.js → headless-CQm19BL0.js} +4 -4
  84. package/dist/{headless-CCm-jLLT.js.map → headless-CQm19BL0.js.map} +1 -1
  85. package/dist/headless.d.ts +1 -1
  86. package/dist/headless.js +1 -1
  87. package/dist/history-worker.js +1 -1
  88. package/dist/{host-wO_6GW0y.js → host-C61ntFBC.js} +276 -103
  89. package/dist/host-C61ntFBC.js.map +1 -0
  90. package/dist/{host-BHMs9jsN.js → host-DEoEzQal.js} +13 -4
  91. package/dist/host-DEoEzQal.js.map +1 -0
  92. package/dist/{host-scoped-settings-CrbcqOkP.js → host-scoped-settings-WBYaCork.js} +2 -2
  93. package/dist/{host-scoped-settings-CrbcqOkP.js.map → host-scoped-settings-WBYaCork.js.map} +1 -1
  94. package/dist/{host-signals-Jsjd_-4g.js → host-signals-Cb2TlGtN.js} +5 -5
  95. package/dist/{host-signals-Jsjd_-4g.js.map → host-signals-Cb2TlGtN.js.map} +1 -1
  96. package/dist/{host-version-CNAr9pov.js → host-version-BIx4CuBM.js} +2 -2
  97. package/dist/{host-version-CNAr9pov.js.map → host-version-BIx4CuBM.js.map} +1 -1
  98. package/dist/{index-C6nnKu32.d.ts → index-B0PLo9jn.d.ts} +4 -4
  99. package/dist/{index-C6nnKu32.d.ts.map → index-B0PLo9jn.d.ts.map} +1 -1
  100. package/dist/{index-Djnc8Peh.d.ts → index-De4x-s76.d.ts} +14 -14
  101. package/dist/{index-Djnc8Peh.d.ts.map → index-De4x-s76.d.ts.map} +1 -1
  102. package/dist/{index-CGbOWa7y.d.ts → index-WlE93Q6d.d.ts} +411 -3
  103. package/dist/index-WlE93Q6d.d.ts.map +1 -0
  104. package/dist/{index-CCf_WeTQ.d.ts → index-f-XWIoYo.d.ts} +2 -2
  105. package/dist/{index-CCf_WeTQ.d.ts.map → index-f-XWIoYo.d.ts.map} +1 -1
  106. package/dist/index.d.ts +5 -5
  107. package/dist/index.js +17 -17
  108. package/dist/ipc/browser-types.d.ts +304 -7
  109. package/dist/ipc/browser-types.d.ts.map +1 -1
  110. package/dist/ipc/browser.d.ts +4 -4
  111. package/dist/ipc/browser.js +2 -2
  112. package/dist/ipc/remote.d.ts +6 -6
  113. package/dist/ipc/remote.js +3 -3
  114. package/dist/{ipc-BzWhIybr.js → ipc-DiH_P-wr.js} +4 -4
  115. package/dist/{ipc-BzWhIybr.js.map → ipc-DiH_P-wr.js.map} +1 -1
  116. package/dist/ipc.d.ts +10 -10
  117. package/dist/ipc.js +8 -8
  118. package/dist/{json-Dj-YATkZ.js → json-BjClr43H.js} +2 -20
  119. package/dist/json-BjClr43H.js.map +1 -0
  120. package/dist/{links-CJG_rFvf.js → links-BbC_lOnn.js} +9 -9
  121. package/dist/{links-CJG_rFvf.js.map → links-BbC_lOnn.js.map} +1 -1
  122. package/dist/{loaded-entry-DTURJo_R.js → loaded-entry-C0vkCVNQ.js} +2 -2
  123. package/dist/{loaded-entry-DTURJo_R.js.map → loaded-entry-C0vkCVNQ.js.map} +1 -1
  124. package/dist/mcp.d.ts +1 -1
  125. package/dist/{media-type-BtA0cbfI.d.ts → media-type-ZSmAGHvg.d.ts} +188 -7
  126. package/dist/media-type-ZSmAGHvg.d.ts.map +1 -0
  127. package/dist/{memory-DuVGrzbl.js → memory-C3w8nO8f.js} +132 -31
  128. package/dist/memory-C3w8nO8f.js.map +1 -0
  129. package/dist/model-test-CAtJ76kM.js.map +1 -1
  130. package/dist/{move-session-kylExJ5H.js → move-session-D7ILECs-.js} +4 -4
  131. package/dist/{move-session-kylExJ5H.js.map → move-session-D7ILECs-.js.map} +1 -1
  132. package/dist/{nested-call-record-DlzPeTB7.js → nested-call-record-OayszZBQ.js} +4 -3
  133. package/dist/nested-call-record-OayszZBQ.js.map +1 -0
  134. package/dist/output/stream-json.d.ts +1 -1
  135. package/dist/output/terminal.d.ts +1 -1
  136. package/dist/{path-display-COVV71Yu.js → path-display-DRAEpKOU.js} +3 -3
  137. package/dist/{path-display-COVV71Yu.js.map → path-display-DRAEpKOU.js.map} +1 -1
  138. package/dist/plugins.d.ts +1 -1
  139. package/dist/{prelude-CVKoUzV8.js → prelude-BwiSR1uA.js} +16 -5
  140. package/dist/prelude-BwiSR1uA.js.map +1 -0
  141. package/dist/{presets-CBt6rFfS.js → presets-CMY43nUP.js} +3 -3
  142. package/dist/{presets-CBt6rFfS.js.map → presets-CMY43nUP.js.map} +1 -1
  143. package/dist/presets.d.ts +1 -1
  144. package/dist/presets.js +1 -1
  145. package/dist/{protocol-CEVqBO-q.d.ts → protocol-C2lqKuMd.d.ts} +50 -7
  146. package/dist/protocol-C2lqKuMd.d.ts.map +1 -0
  147. package/dist/protocol-DOGyHgLQ.js.map +1 -1
  148. package/dist/protocol-NSllElLw.js.map +1 -1
  149. package/dist/providers/anthropic.d.ts +1 -1
  150. package/dist/providers/arcee.d.ts +1 -1
  151. package/dist/providers/baseten.d.ts +1 -1
  152. package/dist/providers/cerebras.d.ts +1 -1
  153. package/dist/providers/google.d.ts +1 -1
  154. package/dist/providers/google.js +1 -1
  155. package/dist/providers/local.d.ts +1 -1
  156. package/dist/providers/neuralwatt.d.ts +1 -1
  157. package/dist/providers/openai-compat.d.ts +1 -1
  158. package/dist/providers/openai.d.ts +1 -1
  159. package/dist/providers/openrouter.d.ts +1 -1
  160. package/dist/providers/xai.d.ts +1 -1
  161. package/dist/{providers-Z0TaBp1O.js → providers-CpXV_uLE.js} +5 -5
  162. package/dist/providers-CpXV_uLE.js.map +1 -0
  163. package/dist/providers.d.ts +1 -1
  164. package/dist/providers.js +1 -1
  165. package/dist/{readonly-db-D7Z-k0pQ.js → readonly-db-DrbT8tX6.js} +2 -2
  166. package/dist/{readonly-db-D7Z-k0pQ.js.map → readonly-db-DrbT8tX6.js.map} +1 -1
  167. package/dist/{registry-BKjeBnoy.js → registry-CJHvmvaP.js} +2 -2
  168. package/dist/{registry-BKjeBnoy.js.map → registry-CJHvmvaP.js.map} +1 -1
  169. package/dist/{registry-B6Ww76iW.js → registry-CN6JlZKj.js} +2 -2
  170. package/dist/{registry-B6Ww76iW.js.map → registry-CN6JlZKj.js.map} +1 -1
  171. package/dist/{registry-B9INJwJR.js → registry-CnnKaY9s.js} +324 -39
  172. package/dist/registry-CnnKaY9s.js.map +1 -0
  173. package/dist/{remote-hosts-BMWoHCWO.js → remote-hosts-DoO9CJUQ.js} +4 -4
  174. package/dist/{remote-hosts-BMWoHCWO.js.map → remote-hosts-DoO9CJUQ.js.map} +1 -1
  175. package/dist/{repo-url-D4Dr8NfZ.js → repo-url-DLjjuVk_.js} +169 -2
  176. package/dist/repo-url-DLjjuVk_.js.map +1 -0
  177. package/dist/restate.d.ts +2 -2
  178. package/dist/{sandbox-BwiPGKF7.d.ts → sandbox-B4OW6oNx.d.ts} +2 -2
  179. package/dist/{sandbox-BwiPGKF7.d.ts.map → sandbox-B4OW6oNx.d.ts.map} +1 -1
  180. package/dist/script-progress-CrZ507Qq.js +900 -0
  181. package/dist/script-progress-CrZ507Qq.js.map +1 -0
  182. package/dist/session/sqlite.d.ts +1 -1
  183. package/dist/session.d.ts +1 -1
  184. package/dist/{setting-BQBSyUq0.js → setting-D_FpKFMw.js} +6 -6
  185. package/dist/{setting-BQBSyUq0.js.map → setting-D_FpKFMw.js.map} +1 -1
  186. package/dist/{settings-catalog-4IU2i_jG.js → settings-catalog-DEZlXP51.js} +14 -2
  187. package/dist/settings-catalog-DEZlXP51.js.map +1 -0
  188. package/dist/{settings-keys-iI_Y-7MC.js → settings-keys-CW2UgHgb.js} +3 -3
  189. package/dist/{settings-keys-iI_Y-7MC.js.map → settings-keys-CW2UgHgb.js.map} +1 -1
  190. package/dist/{skills-CFXRItJ6.js → skills-CEbosUlM.js} +2 -2
  191. package/dist/{skills-CFXRItJ6.js.map → skills-CEbosUlM.js.map} +1 -1
  192. package/dist/skills.d.ts +1 -1
  193. package/dist/skills.js +1 -1
  194. package/dist/{source-Bl1Z501r.js → source-3ZnEPOSa.js} +3 -2
  195. package/dist/source-3ZnEPOSa.js.map +1 -0
  196. package/dist/{sqlite-runtime-BZ2L4RaG.d.ts → sqlite-runtime-CS_LBaAN.d.ts} +2 -2
  197. package/dist/sqlite-runtime-CS_LBaAN.d.ts.map +1 -0
  198. package/dist/{src-BY_ND2xn.js → src-BmTXDta8.js} +2 -2
  199. package/dist/{src-BY_ND2xn.js.map → src-BmTXDta8.js.map} +1 -1
  200. package/dist/{store-C6gI7FfZ.js → store-ByCDaKgJ.js} +14 -3
  201. package/dist/store-ByCDaKgJ.js.map +1 -0
  202. package/dist/{system-freeze-m5o1sGIM.js → system-freeze-XgDPIwQS.js} +3 -3
  203. package/dist/{system-freeze-m5o1sGIM.js.map → system-freeze-XgDPIwQS.js.map} +1 -1
  204. package/dist/{todo-edits-CbukbjyV.js → todo-edits-Dyj32ds6.js} +4 -3
  205. package/dist/todo-edits-Dyj32ds6.js.map +1 -0
  206. package/dist/tools/fetch-url.d.ts +1 -1
  207. package/dist/tools/web-search.d.ts +1 -1
  208. package/dist/{tools-CVTGhggj.js → tools-BsrGQ8K4.js} +2 -2
  209. package/dist/{tools-CVTGhggj.js.map → tools-BsrGQ8K4.js.map} +1 -1
  210. package/dist/tools.d.ts +1 -1
  211. package/dist/tools.js +3 -3
  212. package/dist/{transcript-anchors-CiSi_UBn.js → transcript-anchors-DMjvyUjk.js} +3 -3
  213. package/dist/{transcript-anchors-CiSi_UBn.js.map → transcript-anchors-DMjvyUjk.js.map} +1 -1
  214. package/dist/{transcript-reconcile-jbSBjLq2.js → transcript-reconcile-DpQO85wl.js} +3 -3
  215. package/dist/{transcript-reconcile-jbSBjLq2.js.map → transcript-reconcile-DpQO85wl.js.map} +1 -1
  216. package/dist/tui.d.ts +9 -9
  217. package/dist/tui.d.ts.map +1 -1
  218. package/dist/tui.js +289 -38
  219. package/dist/tui.js.map +1 -1
  220. package/dist/{types-bDQagoiL.d.ts → types-2HrgolQz.d.ts} +20 -8
  221. package/dist/types-2HrgolQz.d.ts.map +1 -0
  222. package/dist/types-4q1bFG53.js +122 -0
  223. package/dist/types-4q1bFG53.js.map +1 -0
  224. package/dist/{types-DnRd9_cA.d.ts → types-SXqk6hLD.d.ts} +3 -3
  225. package/dist/{types-DnRd9_cA.d.ts.map → types-SXqk6hLD.d.ts.map} +1 -1
  226. package/dist/types-myxheQkw.js.map +1 -1
  227. package/dist/types.d.ts +3 -3
  228. package/dist/{usage-summary-BfcXjiSM.js → usage-summary-BM7B3JdI.js} +2 -2
  229. package/dist/{usage-summary-BfcXjiSM.js.map → usage-summary-BM7B3JdI.js.map} +1 -1
  230. package/dist/{version-DqqqvHDP.js → version-szdW1Od9.js} +2 -2
  231. package/dist/{version-DqqqvHDP.js.map → version-szdW1Od9.js.map} +1 -1
  232. package/dist/{wait-task-BX4NcOOm.js → wait-task-BiI5UaZQ.js} +13 -3
  233. package/dist/wait-task-BiI5UaZQ.js.map +1 -0
  234. package/dist/{wire-CLm2rMK0.js → wire-C3l9jl9x.js} +2 -2
  235. package/dist/{wire-CLm2rMK0.js.map → wire-C3l9jl9x.js.map} +1 -1
  236. package/dist/{write-file-0E6TUJ9A.js → write-file-Dquu7MzB.js} +5 -3
  237. package/dist/write-file-Dquu7MzB.js.map +1 -0
  238. package/dist/{ws-DfGGYQ4W.js → ws-CEHi0CiB.js} +4 -4
  239. package/dist/{ws-DfGGYQ4W.js.map → ws-CEHi0CiB.js.map} +1 -1
  240. package/dist/{ws-client-CFMbhsNq.js → ws-client-t8XNWxcq.js} +2 -2
  241. package/dist/{ws-client-CFMbhsNq.js.map → ws-client-t8XNWxcq.js.map} +1 -1
  242. package/docs/CHAT.md +55 -0
  243. package/docs/CODEMODE.md +37 -0
  244. package/docs/EXTENSIONS.md +8 -6
  245. package/docs/RELEASE-NOTES-NEXT.md +48 -1
  246. package/docs/RELEASE.md +9 -1
  247. package/package.json +2 -3
  248. package/dist/agent-DJhpTS-B.js.map +0 -1
  249. package/dist/auto-update-restart-BFB7Ek87.js.map +0 -1
  250. package/dist/browser-BcoCCB_n.js.map +0 -1
  251. package/dist/contexts-C72b0mMa.js.map +0 -1
  252. package/dist/decisions-CXmK0nz9.js.map +0 -1
  253. package/dist/extension-mark-BqKdEZwF.js.map +0 -1
  254. package/dist/extensions-client-D8tEAcMw.d.ts.map +0 -1
  255. package/dist/host-BHMs9jsN.js.map +0 -1
  256. package/dist/host-wO_6GW0y.js.map +0 -1
  257. package/dist/index-CGbOWa7y.d.ts.map +0 -1
  258. package/dist/json-Dj-YATkZ.js.map +0 -1
  259. package/dist/media-type-BtA0cbfI.d.ts.map +0 -1
  260. package/dist/memory-DuVGrzbl.js.map +0 -1
  261. package/dist/nested-call-events-BYk8XvGX.js +0 -182
  262. package/dist/nested-call-events-BYk8XvGX.js.map +0 -1
  263. package/dist/nested-call-record-DlzPeTB7.js.map +0 -1
  264. package/dist/prelude-CVKoUzV8.js.map +0 -1
  265. package/dist/protocol-CEVqBO-q.d.ts.map +0 -1
  266. package/dist/providers-Z0TaBp1O.js.map +0 -1
  267. package/dist/registry-B9INJwJR.js.map +0 -1
  268. package/dist/repo-url-D4Dr8NfZ.js.map +0 -1
  269. package/dist/settings-catalog-4IU2i_jG.js.map +0 -1
  270. package/dist/source-Bl1Z501r.js.map +0 -1
  271. package/dist/sqlite-runtime-BZ2L4RaG.d.ts.map +0 -1
  272. package/dist/store-C6gI7FfZ.js.map +0 -1
  273. package/dist/todo-edits-CbukbjyV.js.map +0 -1
  274. package/dist/types-DTMEhKJO.js +0 -14
  275. package/dist/types-DTMEhKJO.js.map +0 -1
  276. package/dist/types-bDQagoiL.d.ts.map +0 -1
  277. package/dist/wait-task-BX4NcOOm.js.map +0 -1
  278. package/dist/write-file-0E6TUJ9A.js.map +0 -1
  279. package/scripts/eval.ts +0 -179
@@ -1,8 +1,8 @@
1
1
  import { p as errorMessage } from "./errors-C3z7pmOx.js";
2
2
  import { f as readSessionEnvironment } from "./environment-DWlIhAKo.js";
3
- import { et as parseMachineKind } from "./repo-url-D4Dr8NfZ.js";
4
- import { r as useColors } from "./transcript-anchors-CiSi_UBn.js";
5
- import { F as Modal, H as ModalHints, d as EnvironmentPickerModal, i as pickMachineFolder, o as ServerFolderPickerModal, t as CwdPickerModal } from "./cwd-picker-CcekODCt.js";
3
+ import { mt as parseMachineKind } from "./repo-url-DLjjuVk_.js";
4
+ import { r as useColors } from "./transcript-anchors-DMjvyUjk.js";
5
+ import { F as Modal, H as ModalHints, d as EnvironmentPickerModal, i as pickMachineFolder, o as ServerFolderPickerModal, t as CwdPickerModal } from "./cwd-picker-BsHA6HKv.js";
6
6
  import { useState } from "react";
7
7
  import { useKeyboard } from "@opentui/react";
8
8
  import { jsx, jsxs } from "@opentui/react/jsx-runtime";
@@ -147,4 +147,4 @@ function MoveConfirmModal({ name, cwd, removable = false, onConfirm, onCancel })
147
147
  //#endregion
148
148
  export { openMoveSession };
149
149
 
150
- //# sourceMappingURL=move-session-kylExJ5H.js.map
150
+ //# sourceMappingURL=move-session-D7ILECs-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"move-session-kylExJ5H.js","names":[],"sources":["../src/tui/sessions/move-session.tsx"],"sourcesContent":["/** @jsxImportSource @opentui/react */\n/**\n * \"Move to…\" in the TUI (the session details modal's `m`), the same steps as\n * the apps' dialog: where (the kinds its host lists, a machine's after the\n * host's own, an offline machine's listed but not pickable), then a folder\n * when one is needed (a machine's kind, or the session's folder is on a\n * machine), then the confirmation when the session has turns or runs in a\n * worktree (`r` there removes the old worktree, off by default). The host does\n * the move (`sessions.moveEnvironment`) and refuses what it can't.\n */\nimport type { EnvironmentRequest } from '../../chat/environment'\nimport type { EnvironmentDescriptor } from '../../chat/environment-settings'\nimport type { IpcClient } from '../../ipc/index'\nimport type { SessionData } from '../../session'\nimport type { ModalApi } from '../modal'\nimport { useKeyboard } from '@opentui/react'\nimport { useState } from 'react'\nimport { readSessionEnvironment } from '../../chat/environment'\nimport { parseMachineKind } from '../../chat/machine-protocol'\nimport { useColors } from '../../chat/theme-context'\nimport { errorMessage } from '../../errors'\nimport { ModalHints } from '../clickable'\nimport { CwdPickerModal } from '../cwd-picker'\nimport { EnvironmentPickerModal } from '../environment-picker'\nimport { pickMachineFolder } from '../machines/machine-new-session'\nimport { Modal } from '../modal'\nimport { ServerFolderPickerModal } from './new-session-host-pickers'\n\n/** What the confirmation says under its title. */\nexport const MOVE_CONFIRM_DETAIL = 'Files are not copied. Its background tasks and terminals stop. The agent is told and keeps its history.'\n\n/** The confirmation's title. */\nexport function moveConfirmTitle(name: string): string {\n return `Move to ${name}?`\n}\n\n/** The confirmation's option for a session in a worktree. */\nexport const MOVE_REMOVE_WORKTREE = 'Remove the old worktree if it has no uncommitted changes'\n\n/** The session runs in a worktree (`worktree`, `worktree@<machine>`): a move leaves it. */\nfunction inWorktree(kind: string): boolean {\n return kind === 'worktree' || parseMachineKind(kind)?.base === 'worktree'\n}\n\nexport interface MoveSessionInput {\n modal: ModalApi\n /** The session's host. */\n client: Pick<IpcClient, 'request'>\n /** The session, as its host has it. */\n session: Pick<SessionData, 'id' | 'metadata' | 'turns'>\n /** The host is this computer: a folder for its own kinds is picked here; else it is browsed on the host. */\n local: boolean\n /** The host's name, for the folder picker. */\n hostName: string\n /** The session moved there (a kind, or a machine's name). `note`: why the old worktree was kept, when asked to go. */\n onMoved: (name: string, note?: string) => void\n /** The host refused, or the kinds couldn't be read. */\n onError: (message: string) => void\n}\n\n/** Opens the first step: where. */\nexport async function openMoveSession(input: MoveSessionInput): Promise<void> {\n const { modal, client, session } = input\n const current = readSessionEnvironment(session.metadata)\n const cwd = typeof session.metadata.cwd === 'string' ? session.metadata.cwd : ''\n const fromMachine = parseMachineKind(current.kind) !== null\n let descriptors: EnvironmentDescriptor[]\n try {\n // A machine's folder would make every kind of this host unavailable: list them for no folder then.\n const listed = await client.request('environments.list', !fromMachine && cwd ? { cwd } : {})\n descriptors = listed.filter(d => d.enabled)\n }\n catch (err) {\n input.onError(`couldn't read where the session can run: ${errorMessage(err)}`)\n return\n }\n\n const pickFolder = (request: EnvironmentRequest, descriptor: EnvironmentDescriptor | undefined) => {\n const machine = descriptor?.machine\n const name = machine?.name ?? descriptor?.label ?? request.kind\n const next = (target: string | undefined) => confirmMove(input, request, name, target)\n if (machine)\n return pickMachineFolder({ modal, client, machine, onPick: next })\n // This host's kind, and the session's folder is here already: it stays.\n if (!fromMachine && cwd)\n return next(undefined)\n if (input.local) {\n return modal.open(\n <CwdPickerModal\n currentCwd={fromMachine ? '' : cwd}\n onPick={(dir) => {\n modal.close()\n next(dir)\n }}\n />,\n )\n }\n modal.open(\n <ServerFolderPickerModal\n hostName={input.hostName}\n source={{ listDirs: path => client.request('fs.listDirs', path === undefined ? {} : { path }) }}\n onPick={(dir) => {\n modal.close()\n next(dir)\n }}\n />,\n )\n }\n\n modal.open(\n <EnvironmentPickerModal\n descriptors={descriptors}\n title=\"move to\"\n submitLabel=\"move here\"\n onPick={(request) => {\n modal.close()\n pickFolder(request, descriptors.find(d => d.kind === request.kind))\n }}\n />,\n )\n}\n\n/** The last step: confirmed once when the session has turns, then the move. */\nfunction confirmMove(input: MoveSessionInput, request: EnvironmentRequest, name: string, cwd: string | undefined): void {\n const { modal, client, session } = input\n const removable = inWorktree(readSessionEnvironment(session.metadata).kind)\n const move = (removeOldWorktree = false) => {\n modal.close()\n client.request('sessions.moveEnvironment', { sessionId: session.id, environment: request, ...(cwd ? { cwd } : {}), ...(removeOldWorktree ? { removeOldWorktree: true } : {}) })\n // An older host answers nothing.\n .then((result: { oldWorktree?: { removed: boolean, reason?: string } } | null | undefined) => {\n const kept = result?.oldWorktree?.removed === false ? (result.oldWorktree.reason ?? 'The old worktree was kept.') : undefined\n input.onMoved(name, kept)\n })\n .catch(err => input.onError(`couldn't move the session: ${errorMessage(err)}`))\n }\n if (session.turns.length === 0 && !removable)\n return move()\n modal.open(<MoveConfirmModal name={name} cwd={cwd} removable={removable} onConfirm={move} onCancel={() => modal.close()} />)\n}\n\n/** \"Move to gpu?\": what a move does, ↵ moves, esc keeps it where it is. `removable`: `r` toggles removing the old worktree. */\nexport function MoveConfirmModal({ name, cwd, removable = false, onConfirm, onCancel }: { name: string, cwd: string | undefined, removable?: boolean, onConfirm: (removeOldWorktree: boolean) => void, onCancel: () => void }) {\n const COLOR = useColors()\n const [remove, setRemove] = useState(false)\n useKeyboard((key) => {\n if (key.name === 'return')\n onConfirm(removable && remove)\n else if (key.name === 'escape')\n onCancel()\n else if (removable && key.name === 'r')\n setRemove(on => !on)\n })\n return (\n <Modal title={moveConfirmTitle(name)} maxWidth={72}>\n {(cwd || (removable && remove)) && (\n <text fg={COLOR.dim} wrapMode=\"none\">\n <span fg={COLOR.mute}>folder </span>\n {/* Removing the worktree it would keep as its folder: the host moves it to the main checkout. */}\n <span fg={COLOR.dim}>{cwd ?? 'main checkout'}</span>\n </text>\n )}\n <text fg={COLOR.dim}>{MOVE_CONFIRM_DETAIL}</text>\n {removable && (\n <text fg={remove ? COLOR.brand : COLOR.dim}>\n {`[${remove ? 'x' : ' '}] ${MOVE_REMOVE_WORKTREE}`}\n </text>\n )}\n <ModalHints hints={[\n { key: '↵', label: 'move', labelColor: COLOR.dim },\n ...(removable ? [{ key: 'r', label: remove ? 'keep worktree' : 'remove worktree', labelColor: COLOR.dim }] : []),\n { key: 'esc', label: 'cancel', labelColor: COLOR.dim },\n ]}\n />\n </Modal>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"move-session-D7ILECs-.js","names":[],"sources":["../src/tui/sessions/move-session.tsx"],"sourcesContent":["/** @jsxImportSource @opentui/react */\n/**\n * \"Move to…\" in the TUI (the session details modal's `m`), the same steps as\n * the apps' dialog: where (the kinds its host lists, a machine's after the\n * host's own, an offline machine's listed but not pickable), then a folder\n * when one is needed (a machine's kind, or the session's folder is on a\n * machine), then the confirmation when the session has turns or runs in a\n * worktree (`r` there removes the old worktree, off by default). The host does\n * the move (`sessions.moveEnvironment`) and refuses what it can't.\n */\nimport type { EnvironmentRequest } from '../../chat/environment'\nimport type { EnvironmentDescriptor } from '../../chat/environment-settings'\nimport type { IpcClient } from '../../ipc/index'\nimport type { SessionData } from '../../session'\nimport type { ModalApi } from '../modal'\nimport { useKeyboard } from '@opentui/react'\nimport { useState } from 'react'\nimport { readSessionEnvironment } from '../../chat/environment'\nimport { parseMachineKind } from '../../chat/machine-protocol'\nimport { useColors } from '../../chat/theme-context'\nimport { errorMessage } from '../../errors'\nimport { ModalHints } from '../clickable'\nimport { CwdPickerModal } from '../cwd-picker'\nimport { EnvironmentPickerModal } from '../environment-picker'\nimport { pickMachineFolder } from '../machines/machine-new-session'\nimport { Modal } from '../modal'\nimport { ServerFolderPickerModal } from './new-session-host-pickers'\n\n/** What the confirmation says under its title. */\nexport const MOVE_CONFIRM_DETAIL = 'Files are not copied. Its background tasks and terminals stop. The agent is told and keeps its history.'\n\n/** The confirmation's title. */\nexport function moveConfirmTitle(name: string): string {\n return `Move to ${name}?`\n}\n\n/** The confirmation's option for a session in a worktree. */\nexport const MOVE_REMOVE_WORKTREE = 'Remove the old worktree if it has no uncommitted changes'\n\n/** The session runs in a worktree (`worktree`, `worktree@<machine>`): a move leaves it. */\nfunction inWorktree(kind: string): boolean {\n return kind === 'worktree' || parseMachineKind(kind)?.base === 'worktree'\n}\n\nexport interface MoveSessionInput {\n modal: ModalApi\n /** The session's host. */\n client: Pick<IpcClient, 'request'>\n /** The session, as its host has it. */\n session: Pick<SessionData, 'id' | 'metadata' | 'turns'>\n /** The host is this computer: a folder for its own kinds is picked here; else it is browsed on the host. */\n local: boolean\n /** The host's name, for the folder picker. */\n hostName: string\n /** The session moved there (a kind, or a machine's name). `note`: why the old worktree was kept, when asked to go. */\n onMoved: (name: string, note?: string) => void\n /** The host refused, or the kinds couldn't be read. */\n onError: (message: string) => void\n}\n\n/** Opens the first step: where. */\nexport async function openMoveSession(input: MoveSessionInput): Promise<void> {\n const { modal, client, session } = input\n const current = readSessionEnvironment(session.metadata)\n const cwd = typeof session.metadata.cwd === 'string' ? session.metadata.cwd : ''\n const fromMachine = parseMachineKind(current.kind) !== null\n let descriptors: EnvironmentDescriptor[]\n try {\n // A machine's folder would make every kind of this host unavailable: list them for no folder then.\n const listed = await client.request('environments.list', !fromMachine && cwd ? { cwd } : {})\n descriptors = listed.filter(d => d.enabled)\n }\n catch (err) {\n input.onError(`couldn't read where the session can run: ${errorMessage(err)}`)\n return\n }\n\n const pickFolder = (request: EnvironmentRequest, descriptor: EnvironmentDescriptor | undefined) => {\n const machine = descriptor?.machine\n const name = machine?.name ?? descriptor?.label ?? request.kind\n const next = (target: string | undefined) => confirmMove(input, request, name, target)\n if (machine)\n return pickMachineFolder({ modal, client, machine, onPick: next })\n // This host's kind, and the session's folder is here already: it stays.\n if (!fromMachine && cwd)\n return next(undefined)\n if (input.local) {\n return modal.open(\n <CwdPickerModal\n currentCwd={fromMachine ? '' : cwd}\n onPick={(dir) => {\n modal.close()\n next(dir)\n }}\n />,\n )\n }\n modal.open(\n <ServerFolderPickerModal\n hostName={input.hostName}\n source={{ listDirs: path => client.request('fs.listDirs', path === undefined ? {} : { path }) }}\n onPick={(dir) => {\n modal.close()\n next(dir)\n }}\n />,\n )\n }\n\n modal.open(\n <EnvironmentPickerModal\n descriptors={descriptors}\n title=\"move to\"\n submitLabel=\"move here\"\n onPick={(request) => {\n modal.close()\n pickFolder(request, descriptors.find(d => d.kind === request.kind))\n }}\n />,\n )\n}\n\n/** The last step: confirmed once when the session has turns, then the move. */\nfunction confirmMove(input: MoveSessionInput, request: EnvironmentRequest, name: string, cwd: string | undefined): void {\n const { modal, client, session } = input\n const removable = inWorktree(readSessionEnvironment(session.metadata).kind)\n const move = (removeOldWorktree = false) => {\n modal.close()\n client.request('sessions.moveEnvironment', { sessionId: session.id, environment: request, ...(cwd ? { cwd } : {}), ...(removeOldWorktree ? { removeOldWorktree: true } : {}) })\n // An older host answers nothing.\n .then((result: { oldWorktree?: { removed: boolean, reason?: string } } | null | undefined) => {\n const kept = result?.oldWorktree?.removed === false ? (result.oldWorktree.reason ?? 'The old worktree was kept.') : undefined\n input.onMoved(name, kept)\n })\n .catch(err => input.onError(`couldn't move the session: ${errorMessage(err)}`))\n }\n if (session.turns.length === 0 && !removable)\n return move()\n modal.open(<MoveConfirmModal name={name} cwd={cwd} removable={removable} onConfirm={move} onCancel={() => modal.close()} />)\n}\n\n/** \"Move to gpu?\": what a move does, ↵ moves, esc keeps it where it is. `removable`: `r` toggles removing the old worktree. */\nexport function MoveConfirmModal({ name, cwd, removable = false, onConfirm, onCancel }: { name: string, cwd: string | undefined, removable?: boolean, onConfirm: (removeOldWorktree: boolean) => void, onCancel: () => void }) {\n const COLOR = useColors()\n const [remove, setRemove] = useState(false)\n useKeyboard((key) => {\n if (key.name === 'return')\n onConfirm(removable && remove)\n else if (key.name === 'escape')\n onCancel()\n else if (removable && key.name === 'r')\n setRemove(on => !on)\n })\n return (\n <Modal title={moveConfirmTitle(name)} maxWidth={72}>\n {(cwd || (removable && remove)) && (\n <text fg={COLOR.dim} wrapMode=\"none\">\n <span fg={COLOR.mute}>folder </span>\n {/* Removing the worktree it would keep as its folder: the host moves it to the main checkout. */}\n <span fg={COLOR.dim}>{cwd ?? 'main checkout'}</span>\n </text>\n )}\n <text fg={COLOR.dim}>{MOVE_CONFIRM_DETAIL}</text>\n {removable && (\n <text fg={remove ? COLOR.brand : COLOR.dim}>\n {`[${remove ? 'x' : ' '}] ${MOVE_REMOVE_WORKTREE}`}\n </text>\n )}\n <ModalHints hints={[\n { key: '↵', label: 'move', labelColor: COLOR.dim },\n ...(removable ? [{ key: 'r', label: remove ? 'keep worktree' : 'remove worktree', labelColor: COLOR.dim }] : []),\n { key: 'esc', label: 'cancel', labelColor: COLOR.dim },\n ]}\n />\n </Modal>\n )\n}\n"],"mappings":";;;;;;;;;;AA6BA,MAAa,sBAAsB;;AAGnC,SAAgB,iBAAiB,MAAsB;CACrD,OAAO,WAAW,KAAK;AACzB;;AAMA,SAAS,WAAW,MAAuB;CACzC,OAAO,SAAS,cAAc,iBAAiB,IAAI,CAAC,EAAE,SAAS;AACjE;;AAmBA,eAAsB,gBAAgB,OAAwC;CAC5E,MAAM,EAAE,OAAO,QAAQ,YAAY;CACnC,MAAM,UAAU,uBAAuB,QAAQ,QAAQ;CACvD,MAAM,MAAM,OAAO,QAAQ,SAAS,QAAQ,WAAW,QAAQ,SAAS,MAAM;CAC9E,MAAM,cAAc,iBAAiB,QAAQ,IAAI,MAAM;CACvD,IAAI;CACJ,IAAI;EAGF,eAAc,MADO,OAAO,QAAQ,qBAAqB,CAAC,eAAe,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,EAAA,CACtE,QAAO,MAAK,EAAE,OAAO;CAC5C,SACO,KAAK;EACV,MAAM,QAAQ,4CAA4C,aAAa,GAAG,GAAG;EAC7E;CACF;CAEA,MAAM,cAAc,SAA6B,eAAkD;EACjG,MAAM,UAAU,YAAY;EAC5B,MAAM,OAAO,SAAS,QAAQ,YAAY,SAAS,QAAQ;EAC3D,MAAM,QAAQ,WAA+B,YAAY,OAAO,SAAS,MAAM,MAAM;EACrF,IAAI,SACF,OAAO,kBAAkB;GAAE;GAAO;GAAQ;GAAS,QAAQ;EAAK,CAAC;EAEnE,IAAI,CAAC,eAAe,KAClB,OAAO,KAAK,KAAA,CAAS;EACvB,IAAI,MAAM,OACR,OAAO,MAAM,KACX,oBAAC,gBAAD;GACE,YAAY,cAAc,KAAK;GAC/B,SAAS,QAAQ;IACf,MAAM,MAAM;IACZ,KAAK,GAAG;GACV;EACD,CAAA,CACH;EAEF,MAAM,KACJ,oBAAC,yBAAD;GACE,UAAU,MAAM;GAChB,QAAQ,EAAE,WAAU,SAAQ,OAAO,QAAQ,eAAe,SAAS,KAAA,IAAY,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;GAC9F,SAAS,QAAQ;IACf,MAAM,MAAM;IACZ,KAAK,GAAG;GACV;EACD,CAAA,CACH;CACF;CAEA,MAAM,KACJ,oBAAC,wBAAD;EACe;EACb,OAAM;EACN,aAAY;EACZ,SAAS,YAAY;GACnB,MAAM,MAAM;GACZ,WAAW,SAAS,YAAY,MAAK,MAAK,EAAE,SAAS,QAAQ,IAAI,CAAC;EACpE;CACD,CAAA,CACH;AACF;;AAGA,SAAS,YAAY,OAAyB,SAA6B,MAAc,KAA+B;CACtH,MAAM,EAAE,OAAO,QAAQ,YAAY;CACnC,MAAM,YAAY,WAAW,uBAAuB,QAAQ,QAAQ,CAAC,CAAC,IAAI;CAC1E,MAAM,QAAQ,oBAAoB,UAAU;EAC1C,MAAM,MAAM;EACZ,OAAO,QAAQ,4BAA4B;GAAE,WAAW,QAAQ;GAAI,aAAa;GAAS,GAAI,MAAM,EAAE,IAAI,IAAI,CAAC;GAAI,GAAI,oBAAoB,EAAE,mBAAmB,KAAK,IAAI,CAAC;EAAG,CAAC,CAAC,CAE5K,MAAM,WAAuF;GAC5F,MAAM,OAAO,QAAQ,aAAa,YAAY,QAAS,OAAO,YAAY,UAAU,+BAAgC,KAAA;GACpH,MAAM,QAAQ,MAAM,IAAI;EAC1B,CAAC,CAAC,CACD,OAAM,QAAO,MAAM,QAAQ,8BAA8B,aAAa,GAAG,GAAG,CAAC;CAClF;CACA,IAAI,QAAQ,MAAM,WAAW,KAAK,CAAC,WACjC,OAAO,KAAK;CACd,MAAM,KAAK,oBAAC,kBAAD;EAAwB;EAAW;EAAgB;EAAW,WAAW;EAAM,gBAAgB,MAAM,MAAM;CAAI,CAAA,CAAC;AAC7H;;AAGA,SAAgB,iBAAiB,EAAE,MAAM,KAAK,YAAY,OAAO,WAAW,YAAmJ;CAC7N,MAAM,QAAQ,UAAU;CACxB,MAAM,CAAC,QAAQ,aAAa,SAAS,KAAK;CAC1C,aAAa,QAAQ;EACnB,IAAI,IAAI,SAAS,UACf,UAAU,aAAa,MAAM;OAC1B,IAAI,IAAI,SAAS,UACpB,SAAS;OACN,IAAI,aAAa,IAAI,SAAS,KACjC,WAAU,OAAM,CAAC,EAAE;CACvB,CAAC;CACD,OACE,qBAAC,OAAD;EAAO,OAAO,iBAAiB,IAAI;EAAG,UAAU;EAAhD,UAAA;IACI,OAAQ,aAAa,WACrB,qBAAC,QAAD;IAAM,IAAI,MAAM;IAAK,UAAS;IAA9B,UAAA,CACE,oBAAC,QAAD;KAAM,IAAI,MAAM;KAAM,UAAA;IAAa,CAAA,GAEnC,oBAAC,QAAD;KAAM,IAAI,MAAM;KAAM,UAAA,OAAO;IAAsB,CAAA,CAC/C;;GAER,oBAAC,QAAD;IAAM,IAAI,MAAM;IAAM,UAAA;GAA0B,CAAA;GAC/C,aACC,oBAAC,QAAD;IAAM,IAAI,SAAS,MAAM,QAAQ,MAAM;IACpC,UAAA,IAAI,SAAS,MAAM,IAAI;GACpB,CAAA;GAER,oBAAC,YAAD,EAAY,OAAO;IACjB;KAAE,KAAK;KAAK,OAAO;KAAQ,YAAY,MAAM;IAAI;IACjD,GAAI,YAAY,CAAC;KAAE,KAAK;KAAK,OAAO,SAAS,kBAAkB;KAAmB,YAAY,MAAM;IAAI,CAAC,IAAI,CAAC;IAC9G;KAAE,KAAK;KAAO,OAAO;KAAU,YAAY,MAAM;IAAI;GACvD,EACC,CAAA;EACI;;AAEX"}
@@ -25,14 +25,15 @@ function createNestedCallRecorder(now = () => Date.now()) {
25
25
  let inputBytes = 0;
26
26
  let outputChars = 0;
27
27
  return {
28
- start({ id, name, input, runsNestedAgent }) {
28
+ start({ id, name, input, runsNestedAgent, line }) {
29
29
  if (calls.length >= NESTED_CALL_RECORD_LIMITS.maxCalls) return false;
30
30
  const record = {
31
31
  id,
32
32
  name,
33
33
  status: "cancelled",
34
34
  durationMs: 0,
35
- ...runsNestedAgent ? { runsNestedAgent: true } : {}
35
+ ...runsNestedAgent ? { runsNestedAgent: true } : {},
36
+ ...line !== void 0 ? { line } : {}
36
37
  };
37
38
  const json = JSON.stringify(input ?? {});
38
39
  const bytes = encoder.encode(json).length;
@@ -82,4 +83,4 @@ function createNestedCallRecorder(now = () => Date.now()) {
82
83
  //#endregion
83
84
  export { previewNestedOutput as n, createNestedCallRecorder as t };
84
85
 
85
- //# sourceMappingURL=nested-call-record-DlzPeTB7.js.map
86
+ //# sourceMappingURL=nested-call-record-OayszZBQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nested-call-record-OayszZBQ.js","names":[],"sources":["../src/nested-call-record.ts"],"sourcesContent":["/**\n * Bounded record of the calls a tool makes through `ToolContext.callTool`\n * (a codemode script's `tools.*`). Built by `loop-nested-calls.ts`,\n * persisted on the caller's `tool_result` block as `calls`, and rebuilt into\n * transcript rows on reload. Pure and dependency-free: the chat layer uses\n * {@link previewNestedOutput} for live rows so live and reloaded rows read alike.\n */\n\nimport type { NestedToolCallRecord } from './types'\n\nexport const NESTED_CALL_RECORD_LIMITS = {\n /** Calls kept per caller; later ones are counted in `omitted`. */\n maxCalls: 256,\n maxInputBytesPerCall: 8 * 1024,\n maxInputBytesTotal: 32 * 1024,\n /** Characters of result text kept per call: a row's preview, not the payload. */\n maxOutputChars: 2_000,\n maxOutputCharsTotal: 64 * 1024,\n} as const\n\nconst encoder = new TextEncoder()\n\n/** The start of a nested call's result text, as its transcript row shows it (live and reloaded). */\nexport function previewNestedOutput(text: string, max: number = NESTED_CALL_RECORD_LIMITS.maxOutputChars): { output: string, truncated: boolean } {\n return text.length > max ? { output: text.slice(0, max), truncated: true } : { output: text, truncated: false }\n}\n\nexport interface NestedCallRecorder {\n /** `false` when the call is past the record's call limit (not recorded). */\n start: (call: { id: string, name: string, input: Record<string, unknown>, runsNestedAgent?: boolean, line?: number }) => boolean\n finish: (id: string, result: { status: 'ok' | 'error', output: string }) => void\n /** Calls still running are reported `cancelled`. Undefined when no call was made. */\n snapshot: () => NestedToolCallRecord[] | undefined\n /** One call's record as it stands (a copy), when it was recorded. */\n get: (id: string) => NestedToolCallRecord | undefined\n}\n\nexport function createNestedCallRecorder(now: () => number = () => Date.now()): NestedCallRecorder {\n const calls: NestedToolCallRecord[] = []\n const byId = new Map<string, { record: NestedToolCallRecord, startedAt: number }>()\n let inputBytes = 0\n let outputChars = 0\n return {\n start({ id, name, input, runsNestedAgent, line }) {\n if (calls.length >= NESTED_CALL_RECORD_LIMITS.maxCalls)\n return false\n const record: NestedToolCallRecord = { id, name, status: 'cancelled', durationMs: 0, ...(runsNestedAgent ? { runsNestedAgent: true as const } : {}), ...(line !== undefined ? { line } : {}) }\n const json = JSON.stringify(input ?? {})\n const bytes = encoder.encode(json).length\n if (bytes <= NESTED_CALL_RECORD_LIMITS.maxInputBytesPerCall && inputBytes + bytes <= NESTED_CALL_RECORD_LIMITS.maxInputBytesTotal) {\n record.input = JSON.parse(json) as Record<string, unknown>\n inputBytes += bytes\n }\n else {\n record.inputBytes = bytes\n }\n calls.push(record)\n byId.set(id, { record, startedAt: now() })\n return true\n },\n finish(id, result) {\n const entry = byId.get(id)\n if (!entry)\n return\n byId.delete(id)\n const { record, startedAt } = entry\n record.status = result.status\n record.durationMs = Math.max(0, Math.round(now() - startedAt))\n const room = Math.max(0, NESTED_CALL_RECORD_LIMITS.maxOutputCharsTotal - outputChars)\n const { output, truncated } = previewNestedOutput(result.output, Math.min(NESTED_CALL_RECORD_LIMITS.maxOutputChars, room))\n if (output) {\n record.output = output\n outputChars += output.length\n }\n if (truncated)\n record.outputTruncated = true\n },\n get(id) {\n const record = byId.get(id)?.record ?? calls.find(call => call.id === id)\n return record ? { ...record } : undefined\n },\n snapshot() {\n if (calls.length === 0)\n return undefined\n const at = now()\n return calls.map((call) => {\n const running = byId.get(call.id)\n return running ? { ...call, durationMs: Math.max(0, Math.round(at - running.startedAt)) } : { ...call }\n })\n },\n }\n}\n"],"mappings":";AAUA,MAAa,4BAA4B;;CAEvC,UAAU;CACV,sBAAsB;CACtB,oBAAoB;;CAEpB,gBAAgB;CAChB,qBAAqB;AACvB;AAEA,MAAM,UAAU,IAAI,YAAY;;AAGhC,SAAgB,oBAAoB,MAAc,MAAc,0BAA0B,gBAAwD;CAChJ,OAAO,KAAK,SAAS,MAAM;EAAE,QAAQ,KAAK,MAAM,GAAG,GAAG;EAAG,WAAW;CAAK,IAAI;EAAE,QAAQ;EAAM,WAAW;CAAM;AAChH;AAYA,SAAgB,yBAAyB,YAA0B,KAAK,IAAI,GAAuB;CACjG,MAAM,QAAgC,CAAC;CACvC,MAAM,uBAAO,IAAI,IAAiE;CAClF,IAAI,aAAa;CACjB,IAAI,cAAc;CAClB,OAAO;EACL,MAAM,EAAE,IAAI,MAAM,OAAO,iBAAiB,QAAQ;GAChD,IAAI,MAAM,UAAU,0BAA0B,UAC5C,OAAO;GACT,MAAM,SAA+B;IAAE;IAAI;IAAM,QAAQ;IAAa,YAAY;IAAG,GAAI,kBAAkB,EAAE,iBAAiB,KAAc,IAAI,CAAC;IAAI,GAAI,SAAS,KAAA,IAAY,EAAE,KAAK,IAAI,CAAC;GAAG;GAC7L,MAAM,OAAO,KAAK,UAAU,SAAS,CAAC,CAAC;GACvC,MAAM,QAAQ,QAAQ,OAAO,IAAI,CAAC,CAAC;GACnC,IAAI,SAAS,0BAA0B,wBAAwB,aAAa,SAAS,0BAA0B,oBAAoB;IACjI,OAAO,QAAQ,KAAK,MAAM,IAAI;IAC9B,cAAc;GAChB,OAEE,OAAO,aAAa;GAEtB,MAAM,KAAK,MAAM;GACjB,KAAK,IAAI,IAAI;IAAE;IAAQ,WAAW,IAAI;GAAE,CAAC;GACzC,OAAO;EACT;EACA,OAAO,IAAI,QAAQ;GACjB,MAAM,QAAQ,KAAK,IAAI,EAAE;GACzB,IAAI,CAAC,OACH;GACF,KAAK,OAAO,EAAE;GACd,MAAM,EAAE,QAAQ,cAAc;GAC9B,OAAO,SAAS,OAAO;GACvB,OAAO,aAAa,KAAK,IAAI,GAAG,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC;GAC7D,MAAM,OAAO,KAAK,IAAI,GAAG,0BAA0B,sBAAsB,WAAW;GACpF,MAAM,EAAE,QAAQ,cAAc,oBAAoB,OAAO,QAAQ,KAAK,IAAI,0BAA0B,gBAAgB,IAAI,CAAC;GACzH,IAAI,QAAQ;IACV,OAAO,SAAS;IAChB,eAAe,OAAO;GACxB;GACA,IAAI,WACF,OAAO,kBAAkB;EAC7B;EACA,IAAI,IAAI;GACN,MAAM,SAAS,KAAK,IAAI,EAAE,CAAC,EAAE,UAAU,MAAM,MAAK,SAAQ,KAAK,OAAO,EAAE;GACxE,OAAO,SAAS,EAAE,GAAG,OAAO,IAAI,KAAA;EAClC;EACA,WAAW;GACT,IAAI,MAAM,WAAW,GACnB,OAAO,KAAA;GACT,MAAM,KAAK,IAAI;GACf,OAAO,MAAM,KAAK,SAAS;IACzB,MAAM,UAAU,KAAK,IAAI,KAAK,EAAE;IAChC,OAAO,UAAU;KAAE,GAAG;KAAM,YAAY,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,QAAQ,SAAS,CAAC;IAAE,IAAI,EAAE,GAAG,KAAK;GACxG,CAAC;EACH;CACF;AACF"}
@@ -1,4 +1,4 @@
1
- import { aa as FormattedHeadlessTurnEvent, ca as HeadlessOutputFormat, ia as FormattedHeadlessResult, la as HeadlessResult, sa as HeadlessEvent, zo as Agent } from "../index-CGbOWa7y.js";
1
+ import { aa as FormattedHeadlessTurnEvent, ca as HeadlessOutputFormat, ia as FormattedHeadlessResult, la as HeadlessResult, sa as HeadlessEvent, zo as Agent } from "../index-WlE93Q6d.js";
2
2
  //#region src/output/stream-json.d.ts
3
3
  /** Line shape: `zidane` event envelopes or raw `provider` messages. */
4
4
  type StreamJsonOutputFormat = HeadlessOutputFormat;
@@ -1,4 +1,4 @@
1
- import { Eo as Preset, kk as AgentHooks, zo as Agent } from "../index-CGbOWa7y.js";
1
+ import { Eo as Preset, lA as AgentHooks, zo as Agent } from "../index-WlE93Q6d.js";
2
2
  //#region src/output/terminal.d.ts
3
3
  /** Options for {@link setupTerminalOutput}. */
4
4
  interface TerminalOutputOptions {
@@ -1,7 +1,7 @@
1
- import { Dt as formatBindingForDisplay } from "./registry-B9INJwJR.js";
1
+ import { At as formatBindingForDisplay } from "./registry-CnnKaY9s.js";
2
2
  import { i as writeJsonFileAtomic } from "./atomic-write-BewQOXlD.js";
3
3
  import { r as artifactKindLabel, u as renderArtifactRow } from "./builtin-artifact-kinds-DsqaAQjX.js";
4
- import { C as parseSemver, E as reinstallHint, O as updateChecksOptedOut, T as performSelfUpdate, _ as checkForUpdate, f as isUpdateLockStale, h as findInstalledCompanion, o as watchInstalledVersion, p as readUpdateLock, s as writeUpdateAppliedMarker, u as acquireUpdateLock, v as checkTarballAvailable, x as detectPackageManager, y as compareSemver } from "./auto-update-restart-BFB7Ek87.js";
4
+ import { C as parseSemver, E as reinstallHint, O as updateChecksOptedOut, T as performSelfUpdate, _ as checkForUpdate, f as isUpdateLockStale, h as findInstalledCompanion, o as watchInstalledVersion, p as readUpdateLock, s as writeUpdateAppliedMarker, u as acquireUpdateLock, v as checkTarballAvailable, x as detectPackageManager, y as compareSemver } from "./auto-update-restart-CQJtndMG.js";
5
5
  import { Buffer } from "node:buffer";
6
6
  import { isAbsolute, join, posix, relative, resolve, sep } from "node:path";
7
7
  import { appendFileSync, closeSync, mkdirSync, openSync, readFileSync, readSync, renameSync, statSync, unlinkSync } from "node:fs";
@@ -1357,4 +1357,4 @@ function formatPathForCwd(projectRelativePath, projectRoot, cwd) {
1357
1357
  //#endregion
1358
1358
  export { upgradeError as C, summarizeArtifactCounts as D, groupArtifacts as E, readFailedUpdate as S, upgradeInstalledPackages as T, UPDATE_FAILED_FILE as _, UPDATE_RESULT_FILE as a, isAutoInstallCandidate as b, readUpdateWorkerResult as c, buildRestartHint as d, buildUpdateHint as f, AUTO_INSTALL_RETRY_BACKOFF_MS as g, useUpdateCheck as h, UPDATE_LOG_FILE as i, runUpdateWorkerMain as l, useRestartRequired as m, buildHints as n, autoInstallViaWorker as o, useAutoInstallUpdate as p, shortChord as r, followRunningUpdate as s, formatPathForCwd as t, startUpdateWorker as u, autoInstallUpdate as v, writeFailedUpdate as w, isTransientFailure as x, clearFailedUpdate as y };
1359
1359
 
1360
- //# sourceMappingURL=path-display-COVV71Yu.js.map
1360
+ //# sourceMappingURL=path-display-DRAEpKOU.js.map