very-happy-cli 0.2.187 → 0.2.188

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 (194) hide show
  1. package/dist/{AcpBackend-C4Emg-H3.mjs → AcpBackend-2loP7MpF.mjs} +3 -3
  2. package/dist/{AcpBackend-B2-ReWTo.cjs → AcpBackend-B8AYkp5n.cjs} +3 -3
  3. package/dist/{AcpSessionManager-Nard_zFS.mjs → AcpSessionManager-C17doAoR.mjs} +2 -2
  4. package/dist/{AcpSessionManager-DR4-oZCz.cjs → AcpSessionManager-CLqo9R9Y.cjs} +2 -2
  5. package/dist/{BasePermissionHandler-CZ19WzsP.cjs → BasePermissionHandler-C8UEcFz0.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-Bk9DmVZH.mjs → BasePermissionHandler-CrfyUmqO.mjs} +1 -1
  7. package/dist/{acpSessionResume-DPSfMe7r.mjs → acpSessionResume-F705a1cF.mjs} +1 -1
  8. package/dist/{acpSessionResume-Hto_b8MK.cjs → acpSessionResume-OuYlLGxL.cjs} +1 -1
  9. package/dist/{agentHome-4-odnrAk.mjs → agentHome-Dc7LYF3d.mjs} +4 -4
  10. package/dist/{agentHome-Mveyfa24.cjs → agentHome-DsKHJ_Sf.cjs} +4 -4
  11. package/dist/{api-DVEzYcoy.cjs → api-BOqjYd5r.cjs} +10 -10
  12. package/dist/{api-cVvbFZVK.mjs → api-DNKa7kVy.mjs} +10 -10
  13. package/dist/{apiMachine-Bd1C_JN6.cjs → apiMachine--rcPpMmt.cjs} +14 -14
  14. package/dist/{apiMachine-M7qY1izH.mjs → apiMachine-Di1G9ECW.mjs} +14 -14
  15. package/dist/{attachmentContent-D8hViGiA.cjs → attachmentContent-BFRMLong.cjs} +2 -2
  16. package/dist/{attachmentContent-NNF-Eo4O.mjs → attachmentContent-C9S4ekAz.mjs} +2 -2
  17. package/dist/{auth-BCHL8Fx5.mjs → auth-BNhhk2Fr.mjs} +5 -5
  18. package/dist/{auth-CKNEKwEV.mjs → auth-Bzwo_vOM.mjs} +8 -8
  19. package/dist/{auth-BHw8be0X.cjs → auth-CQtfznF0.cjs} +8 -8
  20. package/dist/{auth-b_1h0677.cjs → auth-CXmI92aj.cjs} +5 -5
  21. package/dist/{auto-D716QYa3.mjs → auto-DHYOLnXB.mjs} +17 -17
  22. package/dist/{auto-Da4rCLal.cjs → auto-DXLdaX5O.cjs} +17 -17
  23. package/dist/{bootstrap-CndcegDb.mjs → bootstrap-Di38SnpN.mjs} +2 -2
  24. package/dist/{bootstrap-j2RuoHVy.cjs → bootstrap-eJ1l7VYl.cjs} +2 -2
  25. package/dist/{browser-CLsM513o.mjs → browser-6Cg7G6bb.mjs} +1 -1
  26. package/dist/{browser-DIYTnD_T.cjs → browser-D3uBFRQu.cjs} +1 -1
  27. package/dist/{claudeLocal-C_uUbEO_.cjs → claudeLocal-BBaE4QF_.cjs} +5 -5
  28. package/dist/{claudeLocal-3HbTx7K-.mjs → claudeLocal-CqaEs-81.mjs} +5 -5
  29. package/dist/{claudeLocalLauncher-DXh2chq3.mjs → claudeLocalLauncher-BDUPxtsI.mjs} +10 -10
  30. package/dist/{claudeLocalLauncher-BxWouVYk.cjs → claudeLocalLauncher-wPxKtH_P.cjs} +10 -10
  31. package/dist/{claudeSessionFork-CsU96yXX.cjs → claudeSessionFork-CmY25Fl3.cjs} +1 -1
  32. package/dist/{claudeSessionFork-B4olbwfj.mjs → claudeSessionFork-DzWFzj9m.mjs} +1 -1
  33. package/dist/{client-CCy72Phz.cjs → client-C2HcMqRF.cjs} +4 -4
  34. package/dist/{client-C8w9aQYe.mjs → client-DWws_aQK.mjs} +2 -2
  35. package/dist/{client-Zqg7DXHl.mjs → client-DcDE6Ifk.mjs} +2 -2
  36. package/dist/{client-CWSfPlGD.cjs → client-DmY03OZZ.cjs} +2 -2
  37. package/dist/{client-q1aNOKgy.cjs → client-agH03Irm.cjs} +2 -2
  38. package/dist/{client-D8p1YjVt.mjs → client-qJ0y8fus.mjs} +4 -4
  39. package/dist/codex/happyMcpStdioBridge.cjs +16 -16
  40. package/dist/codex/happyMcpStdioBridge.mjs +16 -16
  41. package/dist/{codexAppServerClient-Csc-XsRV.mjs → codexAppServerClient-DgE99i7X.mjs} +39 -5
  42. package/dist/{codexAppServerClient-g8npaIU9.cjs → codexAppServerClient-DwzC8LR0.cjs} +39 -5
  43. package/dist/{codexCommand-BV8pTAtv.cjs → codexCommand-1vFEA1KT.cjs} +117 -59
  44. package/dist/{codexCommand-BS-foS_R.mjs → codexCommand-DUSVzbKh.mjs} +114 -56
  45. package/dist/{codexTermination-lOO15mt2.mjs → codexTermination-Bybovr2z.mjs} +1 -1
  46. package/dist/{codexTermination-B5WgZAWO.cjs → codexTermination-DuDPyBRR.cjs} +1 -1
  47. package/dist/{config-Ba5ufl-D.mjs → config-BrzZ0O-6.mjs} +3 -3
  48. package/dist/{config-BOnZRJIG.cjs → config-C4xOL5bH.cjs} +3 -3
  49. package/dist/{configuration-8EAa2X9P.mjs → configuration-BZHpFD7K.mjs} +1 -1
  50. package/dist/{configuration-CAfdO4IC.cjs → configuration-DyPW9mVa.cjs} +1 -1
  51. package/dist/{connect-BHWHNe54.mjs → connect-Cw_INlj8.mjs} +13 -13
  52. package/dist/{connect-2hWuvxRM.cjs → connect-DurKwMEo.cjs} +13 -13
  53. package/dist/{context-BtCz06PX.cjs → context-2xDvjkQp.cjs} +1 -1
  54. package/dist/{context-B-jybQhf.mjs → context-t7YV0aZc.mjs} +1 -1
  55. package/dist/{controlClient-O-vf2MkJ.mjs → controlClient-Bw56NIrj.mjs} +4 -4
  56. package/dist/{controlClient-mH9AxBwT.cjs → controlClient-DvFaPsg6.cjs} +3 -3
  57. package/dist/{createSessionMetadata-HlzlfP0U.mjs → createSessionMetadata-Dn5BkLfU.mjs} +2 -2
  58. package/dist/{createSessionMetadata-Bcn7b8QB.cjs → createSessionMetadata-Dpg6bV6f.cjs} +2 -2
  59. package/dist/{defaultPermissionMode-BPDeX4S8.mjs → defaultPermissionMode-DMTnlccv.mjs} +2 -2
  60. package/dist/{defaultPermissionMode-BN3PdltF.cjs → defaultPermissionMode-Dlm0q1m0.cjs} +2 -2
  61. package/dist/{deterministicJson-CruOxFA6.mjs → deterministicJson-CsRckxVq.mjs} +13 -13
  62. package/dist/{deterministicJson-D9pZQhU9.cjs → deterministicJson-D0BrV1FD.cjs} +13 -13
  63. package/dist/{doctor-BNhLBBTK.mjs → doctor-B4HQiW6j.mjs} +7 -7
  64. package/dist/{doctor-lHD1YZH6.cjs → doctor-CYe4d9kU.cjs} +7 -7
  65. package/dist/{downloadTarget-BhkQxTa8.cjs → downloadTarget-CuhBVvuC.cjs} +6 -6
  66. package/dist/{downloadTarget-ByTxs_N5.mjs → downloadTarget-tYMV_VHo.mjs} +6 -6
  67. package/dist/{ensureDaemonRunning-BiCK6RiS.cjs → ensureDaemonRunning-Ce3BlWiR.cjs} +5 -5
  68. package/dist/{ensureDaemonRunning-Cv0AMaHK.mjs → ensureDaemonRunning-DVtIG9z7.mjs} +5 -5
  69. package/dist/{handleResumeCommand-Cy_KW0LN.mjs → handleResumeCommand-BU1uMNyv.mjs} +5 -5
  70. package/dist/{handleResumeCommand-WB4VDeKk.cjs → handleResumeCommand-CLxsmAW0.cjs} +5 -5
  71. package/dist/{index-BpSpw6jG.mjs → index-B1OxWiNG.mjs} +3 -3
  72. package/dist/{index-BumVulwx.cjs → index-BOe6dKnL.cjs} +215 -18
  73. package/dist/{index-lWXWV0H2.mjs → index-CVHRt3SS.mjs} +4 -4
  74. package/dist/{index-CdOz1uDl.mjs → index-ChX0eVXw.mjs} +91 -45
  75. package/dist/{index-CVMbboXv.mjs → index-DDz0Ftoy.mjs} +4 -4
  76. package/dist/{index-B44ft-m4.cjs → index-DG1kGjkF.cjs} +92 -46
  77. package/dist/{index-BpWESchl.cjs → index-DoXbGEAi.cjs} +3 -3
  78. package/dist/{index-Bcp-PEGc.cjs → index-KwuXqLwe.cjs} +4 -4
  79. package/dist/{index-B9f1vKcC.mjs → index-WKyN-bNy.mjs} +212 -17
  80. package/dist/{index-Vtcax4oD.cjs → index-wWJJAQRk.cjs} +4 -4
  81. package/dist/index.cjs +2 -2
  82. package/dist/index.mjs +2 -2
  83. package/dist/{install-mK93DJ6L.mjs → install-CMa_FOWu.mjs} +3 -3
  84. package/dist/{install-DdRVv9IS.cjs → install-cAYvHxXR.cjs} +3 -3
  85. package/dist/lib.cjs +12 -12
  86. package/dist/lib.d.cts +6 -0
  87. package/dist/lib.d.mts +6 -0
  88. package/dist/lib.mjs +12 -12
  89. package/dist/{lidState-LtdUCXi-.mjs → lidState-D-lsD1FS.mjs} +1 -1
  90. package/dist/{lidState-XyjQaZtU.cjs → lidState-d1vgQ3n7.cjs} +1 -1
  91. package/dist/{localHappyAgentAuth-C9Aj_wGD.cjs → localHappyAgentAuth-DucSnCg3.cjs} +1 -1
  92. package/dist/{localHappyAgentAuth-DqFE0Adr.mjs → localHappyAgentAuth-wvDp-nGj.mjs} +1 -1
  93. package/dist/{logger-BILSzq2s.cjs → logger-C3vZG6Q0.cjs} +2 -2
  94. package/dist/{logger-SAU4uSs4.mjs → logger-RpzJ4d8V.mjs} +2 -2
  95. package/dist/{machineMetadata-C5TgUTpD.cjs → machineMetadata-CAvFq1Jg.cjs} +3 -3
  96. package/dist/{machineMetadata-ZVnihOuL.mjs → machineMetadata-CiQ2_1Mq.mjs} +3 -3
  97. package/dist/{main-CVfx_-l7.cjs → main-ChpYcFZi.cjs} +46 -46
  98. package/dist/{main-BjOHtX8u.mjs → main-IPhaImjm.mjs} +46 -46
  99. package/dist/{mcp-By9XK193.cjs → mcp-2xF232hL.cjs} +15 -15
  100. package/dist/{mcp-CWVr7KbQ.mjs → mcp-CWnMvju6.mjs} +15 -15
  101. package/dist/{mirrorProtocol-C0wyaesn.cjs → mirrorProtocol-CVzPObON.cjs} +3 -3
  102. package/dist/{mirrorProtocol-BI6XbokT.mjs → mirrorProtocol-Dr7fNq8V.mjs} +3 -3
  103. package/dist/{package-BMBwnCn3.mjs → package-CwB8rFJt.mjs} +7 -7
  104. package/dist/{package-Bbfq2KR7.cjs → package-Gnf_935w.cjs} +7 -7
  105. package/dist/{panels-rQmysHlY.cjs → panels-DTlTsndU.cjs} +5 -5
  106. package/dist/{panels-CbIUwV6q.mjs → panels-L1mSkC-y.mjs} +5 -5
  107. package/dist/{peerTools-CyruQrOo.mjs → peerTools-2_8Bw9PU.mjs} +5 -5
  108. package/dist/{peerTools-CZfiq_Dx.cjs → peerTools-C1E5cQ86.cjs} +5 -5
  109. package/dist/{persistence-C7T3HYjq.mjs → persistence-Bn4qEbDg.mjs} +2 -2
  110. package/dist/{persistence-DPeSC0SK.cjs → persistence-CqtjFiD1.cjs} +2 -2
  111. package/dist/{piRunnerArgs-DAq8vIpP.cjs → piRunnerArgs-BI8yQRBZ.cjs} +1 -1
  112. package/dist/{piRunnerArgs-CsWompo8.mjs → piRunnerArgs-DWBb63W9.mjs} +1 -1
  113. package/dist/{piRuntime-CFqlQFoz.cjs → piRuntime--mQ43MSM.cjs} +1 -1
  114. package/dist/{piRuntime-Dxd8Gfun.mjs → piRuntime-Do8oqbm3.mjs} +1 -1
  115. package/dist/{piTerminal-DHG3Kzve.cjs → piTerminal-BzcvLFsP.cjs} +17 -17
  116. package/dist/{piTerminal-BssuKDtJ.mjs → piTerminal-GC1KHTYQ.mjs} +17 -17
  117. package/dist/{pushNotifications-Bi72c41d.mjs → pushNotifications-BThg4nVd.mjs} +3 -3
  118. package/dist/{pushNotifications-CsSyhnHu.cjs → pushNotifications-Bb-QSqXw.cjs} +3 -3
  119. package/dist/{query-Cuef299f.cjs → query-Bz3pocKH.cjs} +1 -1
  120. package/dist/{query-BQOwsKS1.mjs → query-CkgIJ_Dy.mjs} +1 -1
  121. package/dist/{specialCommands-35KxDNE8.cjs → rateLimitReporter-BkHyvLru.cjs} +3 -55
  122. package/dist/{specialCommands-CTtmGCCf.mjs → rateLimitReporter-Iw4k3Bbr.mjs} +4 -55
  123. package/dist/{rateLimitWindows-bfwC81Z-.cjs → rateLimitWindows-Bm_dcQGW.cjs} +1 -1
  124. package/dist/{rateLimitWindows-B6IAWYN5.mjs → rateLimitWindows-CQ4tIQnx.mjs} +1 -1
  125. package/dist/{registerCommonHandlers-CQC04iF3.cjs → registerCommonHandlers-CIs6H2DV.cjs} +2 -2
  126. package/dist/{registerCommonHandlers-qzb6TQqo.mjs → registerCommonHandlers-CaWl9ll1.mjs} +2 -2
  127. package/dist/{remoteSessionClient-DffolBcQ.cjs → remoteSessionClient-DgUMfPW4.cjs} +5 -5
  128. package/dist/{remoteSessionClient-D3XhN_sd.mjs → remoteSessionClient-uPj7omsw.mjs} +5 -5
  129. package/dist/{reportProgressTool-BieTXE_R.cjs → reportProgressTool-CaJ8EwLq.cjs} +3 -3
  130. package/dist/{reportProgressTool-irHR-XEW.mjs → reportProgressTool-DUEq3xAL.mjs} +3 -3
  131. package/dist/{run-DCUaxe2S.mjs → run-DTUJBD6p.mjs} +35 -35
  132. package/dist/{run-Ck_WA6Nj.cjs → run-DyyGMqND.cjs} +35 -35
  133. package/dist/{runClaude-BUGku2Qp.cjs → runClaude-8JDaPoGQ.cjs} +22 -22
  134. package/dist/{runClaude-BryAvfNV.mjs → runClaude-DTNvIz2J.mjs} +22 -22
  135. package/dist/{runClaudeDeps-Dbk1VrOW.cjs → runClaudeDeps-BeLo5zss.cjs} +82 -53
  136. package/dist/{runClaudeDeps-BZkWM9_u.mjs → runClaudeDeps-CgGkgg7e.mjs} +84 -54
  137. package/dist/{runGemini-B6AZ2bv0.cjs → runGemini-BSOdU563.cjs} +54 -50
  138. package/dist/{runGemini-DT379gpi.mjs → runGemini-eU8UOzfc.mjs} +52 -48
  139. package/dist/{runOpenClaw-eBUYlIVJ.cjs → runOpenClaw-CYyFoGRZ.cjs} +30 -26
  140. package/dist/{runOpenClaw-Bpp9mkyO.mjs → runOpenClaw-D8RZiA1e.mjs} +28 -24
  141. package/dist/{sandbox-Bv4H1P6u.cjs → sandbox-C8zfNX-4.cjs} +4 -4
  142. package/dist/{sandbox-Z8TM9eUg.mjs → sandbox-DlPahdhl.mjs} +4 -4
  143. package/dist/selfCheck-4bcdHPFQ.mjs +86 -0
  144. package/dist/{selfCheck--1k2Ptf6.cjs → selfCheck-D28nvuPJ.cjs} +37 -37
  145. package/dist/{send-BG4KYe6f.cjs → send-C58kX4qz.cjs} +8 -8
  146. package/dist/{send-CKTovWuQ.mjs → send-DBpv-1eh.mjs} +8 -8
  147. package/dist/{server-BTNwH-sA.cjs → server-I_CETZzn.cjs} +6 -6
  148. package/dist/{server-DLpXtoiZ.mjs → server-J5K6pOox.mjs} +4 -4
  149. package/dist/{sessionLock-DhzB5ZI9.mjs → sessionLock-C7Wg1RVd.mjs} +3 -3
  150. package/dist/{sessionLock-Cf6RlgfF.cjs → sessionLock-DjE7O0LS.cjs} +3 -3
  151. package/dist/{sessionOps-CiFjBCMa.mjs → sessionOps-CYjMT7Ad.mjs} +4 -4
  152. package/dist/{sessionOps-R52JWMnX.cjs → sessionOps-DGMpl9NB.cjs} +4 -4
  153. package/dist/{sessionProvider-LATn-lZL.cjs → sessionProvider-DVtxrOuM.cjs} +5 -5
  154. package/dist/{sessionProvider-f2tUhwBc.mjs → sessionProvider-TLiFn9kD.mjs} +5 -5
  155. package/dist/{sessionScanner-DRzZtGtu.cjs → sessionScanner-BZ1ZSn6I.cjs} +3 -3
  156. package/dist/{sessionScanner-lS1puA5H.mjs → sessionScanner-CknV1IlN.mjs} +3 -3
  157. package/dist/{sessions-DGd8Fin6.cjs → sessions-CTkBKs5U.cjs} +10 -10
  158. package/dist/{sessions-D01nnjOE.mjs → sessions-DU4bxkap.mjs} +10 -10
  159. package/dist/{setupOfflineReconnection-Ds7ywGwR.cjs → setupOfflineReconnection-CQHNuP_0.cjs} +2 -2
  160. package/dist/{setupOfflineReconnection-UApZjcU5.mjs → setupOfflineReconnection-DaOXnGuH.mjs} +2 -2
  161. package/dist/{spawn-CT3g4p8A.cjs → spawn-C0wZc03S.cjs} +67 -25
  162. package/dist/{spawn-ct8aSMA8.mjs → spawn-DdnYTtQe.mjs} +67 -26
  163. package/dist/{spawnAgents-DsJSyLDl.cjs → spawnAgents-BjyU78Ue.cjs} +21 -9
  164. package/dist/{spawnAgents-f2q31uUV.mjs → spawnAgents-D-7wMw-a.mjs} +21 -10
  165. package/dist/{spawnHappyCLI-DedrWByd.cjs → spawnHappyCLI-BJUd974I.cjs} +1 -1
  166. package/dist/{spawnHappyCLI-Dp05fHcp.mjs → spawnHappyCLI-CnyyJk74.mjs} +1 -1
  167. package/dist/{registerKillSessionHandler-BraKB5Ks.cjs → specialCommands-BsvSoDhC.cjs} +91 -6
  168. package/dist/{registerKillSessionHandler-DMPrrNKX.mjs → specialCommands-DHU7TNeK.mjs} +88 -7
  169. package/dist/{startFileWatcher-BLdxJdgu.mjs → startFileWatcher-CpO5Mwbr.mjs} +1 -1
  170. package/dist/{startFileWatcher-72w11DP_.cjs → startFileWatcher-DBboREco.cjs} +1 -1
  171. package/dist/{startupSessionCreate-CJFR_Zom.mjs → startupSessionCreate-BgaVuvQp.mjs} +1 -1
  172. package/dist/{startupSessionCreate-Cy4J4-Ep.cjs → startupSessionCreate-C1u2dtz8.cjs} +1 -1
  173. package/dist/{streamRelay-B3FloUTT.mjs → streamRelay-CqBynIon.mjs} +1 -1
  174. package/dist/{streamRelay-Cn_uGG6m.cjs → streamRelay-D9a4cBEa.cjs} +1 -1
  175. package/dist/{sync-lxDpbIh3.cjs → sync-6HFRJP1h.cjs} +1 -1
  176. package/dist/{sync-BWX1OVQi.mjs → sync-I8NYmycF.mjs} +1 -1
  177. package/dist/{systemPrompt-0DqWPGY6.cjs → systemPrompt-BDWj5QSL.cjs} +2 -2
  178. package/dist/{systemPrompt-BIilbjt_.mjs → systemPrompt-C1RSY_60.mjs} +2 -2
  179. package/dist/{teams-CvpB8Rdm.mjs → teams-GpLFbXXE.mjs} +7 -7
  180. package/dist/{teams-CImmJLlM.cjs → teams-eUD7ymif.cjs} +7 -7
  181. package/dist/{template-DPsqlHJQ.cjs → template-17HATY_Y.cjs} +1 -1
  182. package/dist/{template-DuKZw-Sz.mjs → template-CEK8MEjo.mjs} +1 -1
  183. package/dist/{time-BbQJi3Eh.cjs → time-BAJRbB6U.cjs} +1 -1
  184. package/dist/{time-DjS5me2q.mjs → time-umG7yHkb.mjs} +1 -1
  185. package/dist/{titleGenerator-CGdBp5lQ.mjs → titleGenerator-dmFlxkRs.mjs} +1 -1
  186. package/dist/{titleGenerator-CfJme6ep.cjs → titleGenerator-iqb2jOF1.cjs} +2 -2
  187. package/dist/{todo-BxfUKwTM.mjs → todo-CT4AJ3sH.mjs} +6 -6
  188. package/dist/{todo-rN20m9lT.cjs → todo-DsR7WnQS.cjs} +6 -6
  189. package/dist/{tools-kGtSjG8h.cjs → tools-30E66QL_.cjs} +1 -1
  190. package/dist/{tools-B_W7xJNh.mjs → tools-BOWazSD6.mjs} +1 -1
  191. package/dist/{uninstall-CBQsxEmD.cjs → uninstall-BtTc9hHa.cjs} +3 -3
  192. package/dist/{uninstall-DUjvgLlg.mjs → uninstall-DImXs6VZ.mjs} +3 -3
  193. package/package.json +7 -7
  194. package/dist/selfCheck-DIGghfQz.mjs +0 -86
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var configuration = require('./configuration-CAfdO4IC.cjs');
5
- var controlClient = require('./controlClient-mH9AxBwT.cjs');
4
+ var configuration = require('./configuration-DyPW9mVa.cjs');
5
+ var controlClient = require('./controlClient-DvFaPsg6.cjs');
6
6
  var providerBinding = require('./providerBinding-B-Qbx9W2.cjs');
7
7
  require('node:fs');
8
8
  require('node:os');
9
9
  require('node:path');
10
- require('./package-Bbfq2KR7.cjs');
10
+ require('./package-Gnf_935w.cjs');
11
11
  require('node:fs/promises');
12
- require('./logger-BILSzq2s.cjs');
12
+ require('./logger-C3vZG6Q0.cjs');
13
13
  require('node:util');
14
- require('./persistence-DPeSC0SK.cjs');
14
+ require('./persistence-CqtjFiD1.cjs');
15
15
  require('zod');
16
16
  require('./authRelay-Dy1qU9td.cjs');
17
17
  require('node:crypto');
@@ -1,15 +1,15 @@
1
1
  import chalk from 'chalk';
2
- import { c as configuration } from './configuration-8EAa2X9P.mjs';
3
- import { r as restartDaemonSession } from './controlClient-O-vf2MkJ.mjs';
2
+ import { c as configuration } from './configuration-BZHpFD7K.mjs';
3
+ import { r as restartDaemonSession } from './controlClient-Bw56NIrj.mjs';
4
4
  import { r as readSessionProviders, b as readProviders, w as writeSessionProviders, u as updateBindings, s as sessionProvidersPath } from './providerBinding-CYubGg-Z.mjs';
5
5
  import 'node:fs';
6
6
  import 'node:os';
7
7
  import 'node:path';
8
- import './package-BMBwnCn3.mjs';
8
+ import './package-CwB8rFJt.mjs';
9
9
  import 'node:fs/promises';
10
- import './logger-SAU4uSs4.mjs';
10
+ import './logger-RpzJ4d8V.mjs';
11
11
  import 'node:util';
12
- import './persistence-C7T3HYjq.mjs';
12
+ import './persistence-Bn4qEbDg.mjs';
13
13
  import 'zod';
14
14
  import './authRelay-DhQhkBvX.mjs';
15
15
  import 'node:crypto';
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var sync = require('./sync-lxDpbIh3.cjs');
3
+ var sync = require('./sync-6HFRJP1h.cjs');
4
4
  var types = require('./types-CRS-srZK.cjs');
5
5
  var path$1 = require('node:path');
6
6
  var node_fs = require('node:fs');
7
7
  var transcriptCursor = require('./transcriptCursor-DcXGLeSc.cjs');
8
- var logger = require('./logger-BILSzq2s.cjs');
9
- var startFileWatcher = require('./startFileWatcher-72w11DP_.cjs');
8
+ var logger = require('./logger-C3vZG6Q0.cjs');
9
+ var startFileWatcher = require('./startFileWatcher-DBboREco.cjs');
10
10
  var path = require('./path-B7zW-WwE.cjs');
11
11
 
12
12
  class Future {
@@ -1,10 +1,10 @@
1
- import { I as InvalidateSync } from './sync-BWX1OVQi.mjs';
1
+ import { I as InvalidateSync } from './sync-I8NYmycF.mjs';
2
2
  import { R as RawJSONLinesSchema } from './types-CkqAACXx.mjs';
3
3
  import { join } from 'node:path';
4
4
  import { statSync } from 'node:fs';
5
5
  import { r as readTranscriptIncrement, i as isValidTranscriptHint } from './transcriptCursor-B7T_gkQ0.mjs';
6
- import { l as logger } from './logger-SAU4uSs4.mjs';
7
- import { s as startFileWatcher } from './startFileWatcher-BLdxJdgu.mjs';
6
+ import { l as logger } from './logger-RpzJ4d8V.mjs';
7
+ import { s as startFileWatcher } from './startFileWatcher-CpO5Mwbr.mjs';
8
8
  import { g as getProjectPath } from './path-D2wdaNSk.mjs';
9
9
 
10
10
  class Future {
@@ -1,29 +1,29 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var sessionOps = require('./sessionOps-R52JWMnX.cjs');
4
+ var sessionOps = require('./sessionOps-DGMpl9NB.cjs');
5
5
  var ids = require('./ids-B6ZC0HGt.cjs');
6
- var peerTools = require('./peerTools-CZfiq_Dx.cjs');
7
- var persistence = require('./persistence-DPeSC0SK.cjs');
6
+ var peerTools = require('./peerTools-C1E5cQ86.cjs');
7
+ var persistence = require('./persistence-CqtjFiD1.cjs');
8
8
  var path = require('node:path');
9
- var remoteSessionClient = require('./remoteSessionClient-DffolBcQ.cjs');
9
+ var remoteSessionClient = require('./remoteSessionClient-DgUMfPW4.cjs');
10
10
  require('axios');
11
- require('./configuration-CAfdO4IC.cjs');
11
+ require('./configuration-DyPW9mVa.cjs');
12
12
  require('node:fs');
13
13
  require('node:os');
14
- require('./package-Bbfq2KR7.cjs');
14
+ require('./package-Gnf_935w.cjs');
15
15
  require('node:fs/promises');
16
16
  require('./authRelay-Dy1qU9td.cjs');
17
17
  require('node:crypto');
18
18
  require('tweetnacl');
19
- require('./controlClient-mH9AxBwT.cjs');
20
- require('./logger-BILSzq2s.cjs');
19
+ require('./controlClient-DvFaPsg6.cjs');
20
+ require('./logger-C3vZG6Q0.cjs');
21
21
  require('node:util');
22
- require('./time-BbQJi3Eh.cjs');
22
+ require('./time-BAJRbB6U.cjs');
23
23
  require('socket.io-client');
24
24
  require('./backgroundTaskActivity-CBvUdj39.cjs');
25
25
  require('zod');
26
- require('./client-q1aNOKgy.cjs');
26
+ require('./client-agH03Irm.cjs');
27
27
 
28
28
  const MACHINE_ID_RE = /^[a-zA-Z0-9_-]{1,128}$/;
29
29
  const ACTIONS = ["list", "read", "stop", "archive", "approve", "deny", "peers", "message"];
@@ -1,27 +1,27 @@
1
1
  import chalk from 'chalk';
2
- import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, a as listSessions, w as waitForTurnEnd, T as TurnWaitTimeoutError, r as readSessionTranscript, b as stopSession, c as resolvePermissionRequest, d as archiveSession } from './sessionOps-CiFjBCMa.mjs';
2
+ import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, a as listSessions, w as waitForTurnEnd, T as TurnWaitTimeoutError, r as readSessionTranscript, b as stopSession, c as resolvePermissionRequest, d as archiveSession } from './sessionOps-CYjMT7Ad.mjs';
3
3
  import { i as isValidSessionId } from './ids-DU6sLx4C.mjs';
4
- import { c as cliPeerSelf, e as executeSessionPeerTool, l as listPeerSessions, s as sendPeerMessage, P as PEER_SCOPES } from './peerTools-CyruQrOo.mjs';
5
- import { c as readPersistedSessions } from './persistence-C7T3HYjq.mjs';
4
+ import { c as cliPeerSelf, e as executeSessionPeerTool, l as listPeerSessions, s as sendPeerMessage, P as PEER_SCOPES } from './peerTools-2_8Bw9PU.mjs';
5
+ import { c as readPersistedSessions } from './persistence-Bn4qEbDg.mjs';
6
6
  import { resolve } from 'node:path';
7
- import { f as fillForeignAccountRows, l as listRemoteSessions, a as listRemotePeers, w as waitForRemoteTurnEnd, r as readRemoteTranscript } from './remoteSessionClient-D3XhN_sd.mjs';
7
+ import { f as fillForeignAccountRows, l as listRemoteSessions, a as listRemotePeers, w as waitForRemoteTurnEnd, r as readRemoteTranscript } from './remoteSessionClient-uPj7omsw.mjs';
8
8
  import 'axios';
9
- import './configuration-8EAa2X9P.mjs';
9
+ import './configuration-BZHpFD7K.mjs';
10
10
  import 'node:fs';
11
11
  import 'node:os';
12
- import './package-BMBwnCn3.mjs';
12
+ import './package-CwB8rFJt.mjs';
13
13
  import 'node:fs/promises';
14
14
  import './authRelay-DhQhkBvX.mjs';
15
15
  import 'node:crypto';
16
16
  import 'tweetnacl';
17
- import './controlClient-O-vf2MkJ.mjs';
18
- import './logger-SAU4uSs4.mjs';
17
+ import './controlClient-Bw56NIrj.mjs';
18
+ import './logger-RpzJ4d8V.mjs';
19
19
  import 'node:util';
20
- import './time-DjS5me2q.mjs';
20
+ import './time-umG7yHkb.mjs';
21
21
  import 'socket.io-client';
22
22
  import './backgroundTaskActivity-8PdPxrvy.mjs';
23
23
  import 'zod';
24
- import './client-C8w9aQYe.mjs';
24
+ import './client-DWws_aQK.mjs';
25
25
 
26
26
  const MACHINE_ID_RE = /^[a-zA-Z0-9_-]{1,128}$/;
27
27
  const ACTIONS = ["list", "read", "stop", "archive", "approve", "deny", "peers", "message"];
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var configuration = require('./configuration-CAfdO4IC.cjs');
4
- var api = require('./api-DVEzYcoy.cjs');
3
+ var configuration = require('./configuration-DyPW9mVa.cjs');
4
+ var api = require('./api-BOqjYd5r.cjs');
5
5
 
6
6
  function createOfflineSessionStub(sessionTag) {
7
7
  return {
@@ -1,5 +1,5 @@
1
- import { c as configuration } from './configuration-8EAa2X9P.mjs';
2
- import { s as startOfflineReconnection } from './api-cVvbFZVK.mjs';
1
+ import { c as configuration } from './configuration-BZHpFD7K.mjs';
2
+ import { s as startOfflineReconnection } from './api-DNKa7kVy.mjs';
3
3
 
4
4
  function createOfflineSessionStub(sessionTag) {
5
5
  return {
@@ -1,40 +1,40 @@
1
1
  'use strict';
2
2
 
3
- var spawnAgents = require('./spawnAgents-DsJSyLDl.cjs');
4
- var client = require('./client-q1aNOKgy.cjs');
3
+ var spawnAgents = require('./spawnAgents-BjyU78Ue.cjs');
4
+ var client = require('./client-agH03Irm.cjs');
5
5
  var chalk = require('chalk');
6
6
  var node_fs = require('node:fs');
7
7
  var path$1 = require('node:path');
8
- var controlClient = require('./controlClient-mH9AxBwT.cjs');
9
- var persistence = require('./persistence-DPeSC0SK.cjs');
8
+ var controlClient = require('./controlClient-DvFaPsg6.cjs');
9
+ var persistence = require('./persistence-CqtjFiD1.cjs');
10
+ var index = require('./index-BOe6dKnL.cjs');
11
+ var configuration = require('./configuration-DyPW9mVa.cjs');
10
12
  var path = require('./path-B7zW-WwE.cjs');
11
- var claudeSessionFork = require('./claudeSessionFork-CsU96yXX.cjs');
12
- var codexAppServerClient = require('./codexAppServerClient-g8npaIU9.cjs');
13
+ var claudeSessionFork = require('./claudeSessionFork-CmY25Fl3.cjs');
14
+ var codexAppServerClient = require('./codexAppServerClient-DwzC8LR0.cjs');
13
15
  var codexThreadFork = require('./codexThreadFork-DNekT4nQ.cjs');
14
- var sessionOps = require('./sessionOps-R52JWMnX.cjs');
15
- var createSessionMetadata = require('./createSessionMetadata-Bcn7b8QB.cjs');
16
- var logger = require('./logger-BILSzq2s.cjs');
16
+ var sessionOps = require('./sessionOps-DGMpl9NB.cjs');
17
+ var createSessionMetadata = require('./createSessionMetadata-Dpg6bV6f.cjs');
18
+ var logger = require('./logger-C3vZG6Q0.cjs');
17
19
  var forkBackfill = require('./forkBackfill-8eLDeS73.cjs');
18
- require('./index-BumVulwx.cjs');
19
- require('zod');
20
- require('@paralleldrive/cuid2');
21
- require('./configuration-CAfdO4IC.cjs');
22
- require('node:os');
23
- require('./package-Bbfq2KR7.cjs');
24
20
  require('node:fs/promises');
21
+ require('zod');
25
22
  require('./authRelay-Dy1qU9td.cjs');
26
23
  require('node:crypto');
27
24
  require('tweetnacl');
25
+ require('@paralleldrive/cuid2');
26
+ require('node:os');
27
+ require('./package-Gnf_935w.cjs');
28
28
  require('node:readline');
29
29
  require('node:child_process');
30
30
  require('cross-spawn');
31
31
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
32
32
  require('./manager-HrEj442o.cjs');
33
33
  require('@anthropic-ai/sandbox-runtime');
34
- require('./rateLimitWindows-bfwC81Z-.cjs');
34
+ require('./rateLimitWindows-Bm_dcQGW.cjs');
35
35
  require('./processTree-CMHWlVse.cjs');
36
36
  require('axios');
37
- require('./time-BbQJi3Eh.cjs');
37
+ require('./time-BAJRbB6U.cjs');
38
38
  require('socket.io-client');
39
39
  require('./backgroundTaskActivity-CBvUdj39.cjs');
40
40
  require('./projectPath-C3ioB4Bu.cjs');
@@ -42,6 +42,24 @@ require('path');
42
42
  require('url');
43
43
  require('node:util');
44
44
 
45
+ async function fetchLatestModelTable(serverUrl, fetcher = fetch, timeoutMs = 2e3) {
46
+ const controller = new AbortController();
47
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
48
+ try {
49
+ const response = await fetcher(`${serverUrl}/v1/models/latest`, {
50
+ signal: controller.signal,
51
+ headers: { accept: "application/json" }
52
+ });
53
+ if (!response.ok) return null;
54
+ const body = await response.json();
55
+ return index.parseLatestModelTable(body?.table);
56
+ } catch {
57
+ return null;
58
+ } finally {
59
+ clearTimeout(timeout);
60
+ }
61
+ }
62
+
45
63
  function nonEmpty(value) {
46
64
  return typeof value === "string" && value.trim().length > 0;
47
65
  }
@@ -196,10 +214,11 @@ ${chalk.bold("Options:")}
196
214
  --agent <name> Backend to run: claude (default), codex, gemini,
197
215
  openclaw, pi (needs pi-acp on the daemon's PATH).
198
216
  --model, -m <id> Model for the session, sent with the first message
199
- (needs --prompt). Default = the web launcher's:
200
- claude-opus-5-5 for claude (the machine default when
201
- its Claude Code is too old for it); other agents use
202
- their own default. 'default' = the machine default.
217
+ (needs --prompt). Default = the web launcher's
218
+ 'latest': the newest model of the agent's tier this
219
+ machine runs (claude: newest Opus; codex: newest
220
+ sol its Codex lists; gemini: newest pro), else the
221
+ machine default. 'default' = the machine default.
203
222
  --fork <sessionId> Fork an existing session of THIS machine (same as the
204
223
  web's fork): copies its conversation and continues
205
224
  it in a new session, in the same directory and with
@@ -238,6 +257,23 @@ const defaultFirstMessageDeps = {
238
257
  sendUserMessage: sessionOps.sendUserMessage,
239
258
  warn: (message) => console.error(chalk.yellow("Warning:"), message)
240
259
  };
260
+ async function waitForModelCatalog(readMetadata, initial, knobs = {}) {
261
+ const timeoutMs = knobs.timeoutMs ?? 8e3;
262
+ const pollMs = knobs.pollMs ?? 400;
263
+ const sleep = knobs.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
264
+ const now = knobs.now ?? Date.now;
265
+ let current = initial;
266
+ const deadline = now() + timeoutMs;
267
+ while (!(current?.models && current.models.length > 0) && current?.configuredModel === void 0 && now() < deadline) {
268
+ await sleep(pollMs);
269
+ try {
270
+ const read = await readMetadata();
271
+ if (read) current = read;
272
+ } catch {
273
+ }
274
+ }
275
+ return current;
276
+ }
241
277
  async function sendFirstMessage(sessionId, text, metaFor, opts, deps = defaultFirstMessageDeps) {
242
278
  const persisted = await deps.waitForSessionKey(sessionId, 15e3);
243
279
  if (opts.fork) {
@@ -250,7 +286,8 @@ async function sendFirstMessage(sessionId, text, metaFor, opts, deps = defaultFi
250
286
  deps.warn?.("the forked session runs an older wrapper that cannot confirm its replayed history is uploaded; sending now, so the first message may appear inside that history. Restart the daemon on this CLI version to fix.");
251
287
  }
252
288
  }
253
- const meta = metaFor(persisted.metadata?.capabilities ?? null);
289
+ const metadata = opts.waitForCatalog ? await waitForModelCatalog(() => deps.readSessionMetadata(sessionId, persisted), persisted.metadata, deps.catalogWait) : persisted.metadata;
290
+ const meta = metaFor(metadata);
254
291
  await deps.sendUserMessage(sessionId, persisted, text, "cli-spawn", meta);
255
292
  return meta;
256
293
  }
@@ -371,12 +408,16 @@ async function handleSpawnCommand(args) {
371
408
  let sentMeta = null;
372
409
  if (prompt !== void 0) {
373
410
  try {
374
- sentMeta = await sendFirstMessage(sessionId, prompt, (capabilities) => spawnAgents.resolveFirstMessageMeta({
411
+ const latestTable = await fetchLatestModelTable(configuration.configuration.serverUrl);
412
+ sentMeta = await sendFirstMessage(sessionId, prompt, (metadata) => spawnAgents.resolveFirstMessageMeta({
375
413
  agent,
376
414
  permissionMode,
377
415
  explicitModel: options.model,
378
- capabilities
379
- }), { fork: forkSource !== null });
416
+ capabilities: metadata?.capabilities ?? null,
417
+ catalog: metadata?.models ?? null,
418
+ configuredModel: metadata?.configuredModel,
419
+ latestTable
420
+ }), { fork: forkSource !== null, waitForCatalog: spawnAgents.waitsForModelCatalog(agent, options.model) });
380
421
  } catch (error) {
381
422
  promptError = error instanceof Error ? error.message : String(error);
382
423
  }
@@ -427,3 +468,4 @@ exports.parseEnvAssignment = parseEnvAssignment;
427
468
  exports.parseSpawnArgs = parseSpawnArgs;
428
469
  exports.sendFirstMessage = sendFirstMessage;
429
470
  exports.spawnEnvironmentVariables = spawnEnvironmentVariables;
471
+ exports.waitForModelCatalog = waitForModelCatalog;
@@ -1,38 +1,38 @@
1
- import { r as resolveSpawnPermissionMode, c as chooseProject, j as joinProject, a as resolveFirstMessageMeta, s as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, S as SPAWN_AGENTS } from './spawnAgents-f2q31uUV.mjs';
2
- import { s as sharedProjectsClient } from './client-C8w9aQYe.mjs';
1
+ import { r as resolveSpawnPermissionMode, c as chooseProject, j as joinProject, a as resolveFirstMessageMeta, w as waitsForModelCatalog, s as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, S as SPAWN_AGENTS } from './spawnAgents-D-7wMw-a.mjs';
2
+ import { s as sharedProjectsClient } from './client-DWws_aQK.mjs';
3
3
  import chalk from 'chalk';
4
4
  import { readFileSync, statSync } from 'node:fs';
5
5
  import { resolve } from 'node:path';
6
- import { a as checkIfDaemonRunningAndCleanupStaleState, e as spawnDaemonSession, f as stopDaemonSession } from './controlClient-O-vf2MkJ.mjs';
7
- import { c as readPersistedSessions } from './persistence-C7T3HYjq.mjs';
6
+ import { b as checkIfDaemonRunningAndCleanupStaleState, g as spawnDaemonSession, f as stopDaemonSession } from './controlClient-Bw56NIrj.mjs';
7
+ import { c as readPersistedSessions } from './persistence-Bn4qEbDg.mjs';
8
+ import { p as parseLatestModelTable } from './index-WKyN-bNy.mjs';
9
+ import { c as configuration } from './configuration-BZHpFD7K.mjs';
8
10
  import { g as getProjectPath } from './path-D2wdaNSk.mjs';
9
- import { f as forkSession, F as ForkSourceMissingError } from './claudeSessionFork-B4olbwfj.mjs';
10
- import { C as CodexAppServerClient } from './codexAppServerClient-Csc-XsRV.mjs';
11
+ import { f as forkSession, F as ForkSourceMissingError } from './claudeSessionFork-DzWFzj9m.mjs';
12
+ import { C as CodexAppServerClient } from './codexAppServerClient-DgE99i7X.mjs';
11
13
  import { f as forkCodexThread } from './codexThreadFork-R76RU5H0.mjs';
12
- import { e as sendUserMessage, f as readSessionMetadata, g as waitForSessionKey, s as sessionWebUrl } from './sessionOps-CiFjBCMa.mjs';
13
- import { i as isValidSpawnOrigin } from './createSessionMetadata-HlzlfP0U.mjs';
14
- import { l as logger } from './logger-SAU4uSs4.mjs';
14
+ import { e as sendUserMessage, f as readSessionMetadata, g as waitForSessionKey, s as sessionWebUrl } from './sessionOps-CYjMT7Ad.mjs';
15
+ import { i as isValidSpawnOrigin } from './createSessionMetadata-Dn5BkLfU.mjs';
16
+ import { l as logger } from './logger-RpzJ4d8V.mjs';
15
17
  import { w as waitForForkBackfill } from './forkBackfill-DYIjlN1Z.mjs';
16
- import './index-B9f1vKcC.mjs';
17
- import 'zod';
18
- import '@paralleldrive/cuid2';
19
- import './configuration-8EAa2X9P.mjs';
20
- import 'node:os';
21
- import './package-BMBwnCn3.mjs';
22
18
  import 'node:fs/promises';
19
+ import 'zod';
23
20
  import './authRelay-DhQhkBvX.mjs';
24
21
  import 'node:crypto';
25
22
  import 'tweetnacl';
23
+ import '@paralleldrive/cuid2';
24
+ import 'node:os';
25
+ import './package-CwB8rFJt.mjs';
26
26
  import 'node:readline';
27
27
  import 'node:child_process';
28
28
  import 'cross-spawn';
29
29
  import './contentLogMetadata-BlWI0egu.mjs';
30
30
  import './manager-BEsI4qt3.mjs';
31
31
  import '@anthropic-ai/sandbox-runtime';
32
- import './rateLimitWindows-B6IAWYN5.mjs';
32
+ import './rateLimitWindows-CQ4tIQnx.mjs';
33
33
  import './processTree-CP5IvQ2Z.mjs';
34
34
  import 'axios';
35
- import './time-DjS5me2q.mjs';
35
+ import './time-umG7yHkb.mjs';
36
36
  import 'socket.io-client';
37
37
  import './backgroundTaskActivity-8PdPxrvy.mjs';
38
38
  import './projectPath-BTBIMB57.mjs';
@@ -40,6 +40,24 @@ import 'path';
40
40
  import 'url';
41
41
  import 'node:util';
42
42
 
43
+ async function fetchLatestModelTable(serverUrl, fetcher = fetch, timeoutMs = 2e3) {
44
+ const controller = new AbortController();
45
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
46
+ try {
47
+ const response = await fetcher(`${serverUrl}/v1/models/latest`, {
48
+ signal: controller.signal,
49
+ headers: { accept: "application/json" }
50
+ });
51
+ if (!response.ok) return null;
52
+ const body = await response.json();
53
+ return parseLatestModelTable(body?.table);
54
+ } catch {
55
+ return null;
56
+ } finally {
57
+ clearTimeout(timeout);
58
+ }
59
+ }
60
+
43
61
  function nonEmpty(value) {
44
62
  return typeof value === "string" && value.trim().length > 0;
45
63
  }
@@ -194,10 +212,11 @@ ${chalk.bold("Options:")}
194
212
  --agent <name> Backend to run: claude (default), codex, gemini,
195
213
  openclaw, pi (needs pi-acp on the daemon's PATH).
196
214
  --model, -m <id> Model for the session, sent with the first message
197
- (needs --prompt). Default = the web launcher's:
198
- claude-opus-5-5 for claude (the machine default when
199
- its Claude Code is too old for it); other agents use
200
- their own default. 'default' = the machine default.
215
+ (needs --prompt). Default = the web launcher's
216
+ 'latest': the newest model of the agent's tier this
217
+ machine runs (claude: newest Opus; codex: newest
218
+ sol its Codex lists; gemini: newest pro), else the
219
+ machine default. 'default' = the machine default.
201
220
  --fork <sessionId> Fork an existing session of THIS machine (same as the
202
221
  web's fork): copies its conversation and continues
203
222
  it in a new session, in the same directory and with
@@ -236,6 +255,23 @@ const defaultFirstMessageDeps = {
236
255
  sendUserMessage,
237
256
  warn: (message) => console.error(chalk.yellow("Warning:"), message)
238
257
  };
258
+ async function waitForModelCatalog(readMetadata, initial, knobs = {}) {
259
+ const timeoutMs = knobs.timeoutMs ?? 8e3;
260
+ const pollMs = knobs.pollMs ?? 400;
261
+ const sleep = knobs.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
262
+ const now = knobs.now ?? Date.now;
263
+ let current = initial;
264
+ const deadline = now() + timeoutMs;
265
+ while (!(current?.models && current.models.length > 0) && current?.configuredModel === void 0 && now() < deadline) {
266
+ await sleep(pollMs);
267
+ try {
268
+ const read = await readMetadata();
269
+ if (read) current = read;
270
+ } catch {
271
+ }
272
+ }
273
+ return current;
274
+ }
239
275
  async function sendFirstMessage(sessionId, text, metaFor, opts, deps = defaultFirstMessageDeps) {
240
276
  const persisted = await deps.waitForSessionKey(sessionId, 15e3);
241
277
  if (opts.fork) {
@@ -248,7 +284,8 @@ async function sendFirstMessage(sessionId, text, metaFor, opts, deps = defaultFi
248
284
  deps.warn?.("the forked session runs an older wrapper that cannot confirm its replayed history is uploaded; sending now, so the first message may appear inside that history. Restart the daemon on this CLI version to fix.");
249
285
  }
250
286
  }
251
- const meta = metaFor(persisted.metadata?.capabilities ?? null);
287
+ const metadata = opts.waitForCatalog ? await waitForModelCatalog(() => deps.readSessionMetadata(sessionId, persisted), persisted.metadata, deps.catalogWait) : persisted.metadata;
288
+ const meta = metaFor(metadata);
252
289
  await deps.sendUserMessage(sessionId, persisted, text, "cli-spawn", meta);
253
290
  return meta;
254
291
  }
@@ -369,12 +406,16 @@ async function handleSpawnCommand(args) {
369
406
  let sentMeta = null;
370
407
  if (prompt !== void 0) {
371
408
  try {
372
- sentMeta = await sendFirstMessage(sessionId, prompt, (capabilities) => resolveFirstMessageMeta({
409
+ const latestTable = await fetchLatestModelTable(configuration.serverUrl);
410
+ sentMeta = await sendFirstMessage(sessionId, prompt, (metadata) => resolveFirstMessageMeta({
373
411
  agent,
374
412
  permissionMode,
375
413
  explicitModel: options.model,
376
- capabilities
377
- }), { fork: forkSource !== null });
414
+ capabilities: metadata?.capabilities ?? null,
415
+ catalog: metadata?.models ?? null,
416
+ configuredModel: metadata?.configuredModel,
417
+ latestTable
418
+ }), { fork: forkSource !== null, waitForCatalog: waitsForModelCatalog(agent, options.model) });
378
419
  } catch (error) {
379
420
  promptError = error instanceof Error ? error.message : String(error);
380
421
  }
@@ -418,4 +459,4 @@ async function handleSpawnCommand(args) {
418
459
  process.exit(0);
419
460
  }
420
461
 
421
- export { SPAWN_AGENTS, handleSpawnCommand, parseEnvAssignment, parseSpawnArgs, sendFirstMessage, sessionWebUrl, spawnEnvironmentVariables };
462
+ export { SPAWN_AGENTS, handleSpawnCommand, parseEnvAssignment, parseSpawnArgs, sendFirstMessage, sessionWebUrl, spawnEnvironmentVariables, waitForModelCatalog };
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BumVulwx.cjs');
3
+ var index = require('./index-BOe6dKnL.cjs');
4
4
 
5
5
  function chooseProject(opts) {
6
6
  if (opts.project) return { kind: "explicit", projectId: opts.project };
@@ -48,18 +48,29 @@ function resolveFirstMessageMeta(input) {
48
48
  const meta = {
49
49
  permissionMode: outboundPermissionMode(input.agent, input.permissionMode)
50
50
  };
51
- if (input.explicitModel !== void 0) {
51
+ const key = index.normalizeAgentKey(input.agent ?? "claude");
52
+ const wanted = input.explicitModel ?? index.getAgentCodeDefaults(key).modelMode;
53
+ if (index.isLatestModelMode(wanted)) {
54
+ const resolved = index.resolveLatestModel(input.latestTable, key, {
55
+ capabilities: input.capabilities ?? null,
56
+ catalog: input.catalog ?? null,
57
+ configuredModel: input.configuredModel
58
+ }).model;
59
+ if (resolved) meta.model = resolved;
60
+ else if (key === "claude" || input.explicitModel !== void 0) meta.model = null;
61
+ } else if (input.explicitModel !== void 0) {
52
62
  meta.model = input.explicitModel === "default" ? null : input.explicitModel;
63
+ } else if (key === "claude") {
64
+ meta.model = wanted === "default" ? null : wanted;
53
65
  }
54
- if (index.normalizeAgentKey(input.agent ?? "claude") !== "claude") return meta;
55
- if (meta.model === void 0) {
56
- const model = index.getAgentCodeDefaults("claude").modelMode;
57
- const runnable = !index.isClaudeOpus55Model(model) || index.supportsClaudeOpus55({ capabilities: input.capabilities ?? null });
58
- meta.model = runnable && model !== "default" ? model : null;
59
- }
60
- meta.effort = null;
66
+ if (key === "claude") meta.effort = null;
61
67
  return meta;
62
68
  }
69
+ function waitsForModelCatalog(agent, explicitModel) {
70
+ const key = index.normalizeAgentKey(agent ?? "claude");
71
+ if (key !== "codex" && key !== "gemini") return false;
72
+ return index.isLatestModelMode(explicitModel ?? index.getAgentCodeDefaults(key).modelMode);
73
+ }
63
74
 
64
75
  const ALLOWED_SPAWN_PERMISSION_MODES = [
65
76
  "default",
@@ -86,3 +97,4 @@ exports.joinProject = joinProject;
86
97
  exports.resolveFirstMessageMeta = resolveFirstMessageMeta;
87
98
  exports.resolveSpawnPermissionMode = resolveSpawnPermissionMode;
88
99
  exports.sanitizeSpawnPermissionMode = sanitizeSpawnPermissionMode;
100
+ exports.waitsForModelCatalog = waitsForModelCatalog;
@@ -1,4 +1,4 @@
1
- import { k as getAgentCodeDefaults, n as normalizeAgentKey, l as isClaudeOpus55Model, m as supportsClaudeOpus55 } from './index-B9f1vKcC.mjs';
1
+ import { k as getAgentCodeDefaults, l as isLatestModelMode, m as resolveLatestModel, n as normalizeAgentKey } from './index-WKyN-bNy.mjs';
2
2
 
3
3
  function chooseProject(opts) {
4
4
  if (opts.project) return { kind: "explicit", projectId: opts.project };
@@ -46,18 +46,29 @@ function resolveFirstMessageMeta(input) {
46
46
  const meta = {
47
47
  permissionMode: outboundPermissionMode(input.agent, input.permissionMode)
48
48
  };
49
- if (input.explicitModel !== void 0) {
49
+ const key = normalizeAgentKey(input.agent ?? "claude");
50
+ const wanted = input.explicitModel ?? getAgentCodeDefaults(key).modelMode;
51
+ if (isLatestModelMode(wanted)) {
52
+ const resolved = resolveLatestModel(input.latestTable, key, {
53
+ capabilities: input.capabilities ?? null,
54
+ catalog: input.catalog ?? null,
55
+ configuredModel: input.configuredModel
56
+ }).model;
57
+ if (resolved) meta.model = resolved;
58
+ else if (key === "claude" || input.explicitModel !== void 0) meta.model = null;
59
+ } else if (input.explicitModel !== void 0) {
50
60
  meta.model = input.explicitModel === "default" ? null : input.explicitModel;
61
+ } else if (key === "claude") {
62
+ meta.model = wanted === "default" ? null : wanted;
51
63
  }
52
- if (normalizeAgentKey(input.agent ?? "claude") !== "claude") return meta;
53
- if (meta.model === void 0) {
54
- const model = getAgentCodeDefaults("claude").modelMode;
55
- const runnable = !isClaudeOpus55Model(model) || supportsClaudeOpus55({ capabilities: input.capabilities ?? null });
56
- meta.model = runnable && model !== "default" ? model : null;
57
- }
58
- meta.effort = null;
64
+ if (key === "claude") meta.effort = null;
59
65
  return meta;
60
66
  }
67
+ function waitsForModelCatalog(agent, explicitModel) {
68
+ const key = normalizeAgentKey(agent ?? "claude");
69
+ if (key !== "codex" && key !== "gemini") return false;
70
+ return isLatestModelMode(explicitModel ?? getAgentCodeDefaults(key).modelMode);
71
+ }
61
72
 
62
73
  const ALLOWED_SPAWN_PERMISSION_MODES = [
63
74
  "default",
@@ -76,4 +87,4 @@ function isSpawnAgent(value) {
76
87
  return typeof value === "string" && SPAWN_AGENTS.includes(value);
77
88
  }
78
89
 
79
- export { ALLOWED_SPAWN_PERMISSION_MODES as A, SPAWN_AGENTS as S, resolveFirstMessageMeta as a, chooseProject as c, isSpawnAgent as i, joinProject as j, resolveSpawnPermissionMode as r, sanitizeSpawnPermissionMode as s };
90
+ export { ALLOWED_SPAWN_PERMISSION_MODES as A, SPAWN_AGENTS as S, resolveFirstMessageMeta as a, chooseProject as c, isSpawnAgent as i, joinProject as j, resolveSpawnPermissionMode as r, sanitizeSpawnPermissionMode as s, waitsForModelCatalog as w };
@@ -3,7 +3,7 @@
3
3
  var spawn = require('cross-spawn');
4
4
  var path = require('node:path');
5
5
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
6
- var logger = require('./logger-BILSzq2s.cjs');
6
+ var logger = require('./logger-C3vZG6Q0.cjs');
7
7
  var node_fs = require('node:fs');
8
8
 
9
9
  let cachedRuntime = null;
@@ -1,7 +1,7 @@
1
1
  import { spawn } from 'cross-spawn';
2
2
  import { join } from 'node:path';
3
3
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
4
- import { l as logger } from './logger-SAU4uSs4.mjs';
4
+ import { l as logger } from './logger-RpzJ4d8V.mjs';
5
5
  import { existsSync } from 'node:fs';
6
6
 
7
7
  let cachedRuntime = null;