very-happy-cli 0.2.187 → 0.2.189

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 (196) hide show
  1. package/dist/{AcpBackend-B2-ReWTo.cjs → AcpBackend-DRPJ2g9G.cjs} +3 -3
  2. package/dist/{AcpBackend-C4Emg-H3.mjs → AcpBackend-fj16v_cf.mjs} +3 -3
  3. package/dist/{AcpSessionManager-Nard_zFS.mjs → AcpSessionManager-BZPmUDL5.mjs} +4 -4
  4. package/dist/{AcpSessionManager-DR4-oZCz.cjs → AcpSessionManager-DM-KKg6v.cjs} +4 -4
  5. package/dist/{BasePermissionHandler-Bk9DmVZH.mjs → BasePermissionHandler-CVtH-snr.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-CZ19WzsP.cjs → BasePermissionHandler-DjM16uJz.cjs} +1 -1
  7. package/dist/{acpSessionResume-Hto_b8MK.cjs → acpSessionResume-2BTMsB7_.cjs} +1 -1
  8. package/dist/{acpSessionResume-DPSfMe7r.mjs → acpSessionResume-Dxl1LRAT.mjs} +1 -1
  9. package/dist/{agentHome-4-odnrAk.mjs → agentHome-CHctmMzZ.mjs} +4 -4
  10. package/dist/{agentHome-Mveyfa24.cjs → agentHome-W17n1gnH.cjs} +4 -4
  11. package/dist/{api-cVvbFZVK.mjs → api-B0yN68XH.mjs} +10 -10
  12. package/dist/{api-DVEzYcoy.cjs → api-BDuuyys8.cjs} +10 -10
  13. package/dist/{apiMachine-Bd1C_JN6.cjs → apiMachine-iddD-F19.cjs} +14 -14
  14. package/dist/{apiMachine-M7qY1izH.mjs → apiMachine-mc9CsKuS.mjs} +14 -14
  15. package/dist/{attachmentContent-D8hViGiA.cjs → attachmentContent-Cc5b7TPr.cjs} +2 -2
  16. package/dist/{attachmentContent-NNF-Eo4O.mjs → attachmentContent-CcIdMfAx.mjs} +2 -2
  17. package/dist/{auth-BHw8be0X.cjs → auth-B7tVmyfX.cjs} +8 -8
  18. package/dist/{auth-BCHL8Fx5.mjs → auth-CyrVvWHF.mjs} +5 -5
  19. package/dist/{auth-CKNEKwEV.mjs → auth-DNAgkUkB.mjs} +8 -8
  20. package/dist/{auth-b_1h0677.cjs → auth-DQKSpaEf.cjs} +5 -5
  21. package/dist/{auto-D716QYa3.mjs → auto-BklCipw1.mjs} +18 -17
  22. package/dist/{auto-Da4rCLal.cjs → auto-CetlumDo.cjs} +18 -17
  23. package/dist/{bootstrap-j2RuoHVy.cjs → bootstrap-CDY-Vz8q.cjs} +2 -2
  24. package/dist/{bootstrap-CndcegDb.mjs → bootstrap-DfXwkUQb.mjs} +2 -2
  25. package/dist/{browser-DIYTnD_T.cjs → browser-D1yzC0Tu.cjs} +1 -1
  26. package/dist/{browser-CLsM513o.mjs → browser-vb0k1zfI.mjs} +1 -1
  27. package/dist/{claudeLocal-C_uUbEO_.cjs → claudeLocal-2dJIiTIq.cjs} +5 -5
  28. package/dist/{claudeLocal-3HbTx7K-.mjs → claudeLocal-Bid_rC_v.mjs} +5 -5
  29. package/dist/{claudeLocalLauncher-DXh2chq3.mjs → claudeLocalLauncher-5pzpETxd.mjs} +10 -10
  30. package/dist/{claudeLocalLauncher-BxWouVYk.cjs → claudeLocalLauncher-Jm5oQX5Z.cjs} +10 -10
  31. package/dist/{claudeSessionFork-CsU96yXX.cjs → claudeSessionFork-DsbcuDEJ.cjs} +1 -1
  32. package/dist/{claudeSessionFork-B4olbwfj.mjs → claudeSessionFork-DzecSBO4.mjs} +1 -1
  33. package/dist/{client-C8w9aQYe.mjs → client-B161HwAk.mjs} +2 -2
  34. package/dist/{client-CCy72Phz.cjs → client-BNmFaRXZ.cjs} +4 -4
  35. package/dist/{client-D8p1YjVt.mjs → client-C9Ecbtko.mjs} +4 -4
  36. package/dist/{client-Zqg7DXHl.mjs → client-CvjjadIE.mjs} +2 -2
  37. package/dist/{client-CWSfPlGD.cjs → client-D0aYWt53.cjs} +2 -2
  38. package/dist/{client-q1aNOKgy.cjs → client-DIfxYk7B.cjs} +2 -2
  39. package/dist/codex/happyMcpStdioBridge.cjs +17 -16
  40. package/dist/codex/happyMcpStdioBridge.mjs +17 -16
  41. package/dist/{codexAppServerClient-Csc-XsRV.mjs → codexAppServerClient-BlVmpjR-.mjs} +63 -5
  42. package/dist/{codexAppServerClient-g8npaIU9.cjs → codexAppServerClient-CO9f4Jr8.cjs} +63 -5
  43. package/dist/{codexCommand-BV8pTAtv.cjs → codexCommand-BfoRP6E9.cjs} +189 -68
  44. package/dist/{codexCommand-BS-foS_R.mjs → codexCommand-CAMR4g5o.mjs} +188 -67
  45. package/dist/{codexTermination-lOO15mt2.mjs → codexTermination-BvGlN02_.mjs} +1 -1
  46. package/dist/{codexTermination-B5WgZAWO.cjs → codexTermination-IrLZQzKC.cjs} +1 -1
  47. package/dist/{config-BOnZRJIG.cjs → config-BGFqQGvh.cjs} +3 -3
  48. package/dist/{config-Ba5ufl-D.mjs → config-CtMgGPvf.mjs} +3 -3
  49. package/dist/{configuration-8EAa2X9P.mjs → configuration-1FabKklB.mjs} +1 -1
  50. package/dist/{configuration-CAfdO4IC.cjs → configuration-C0ctLGW2.cjs} +1 -1
  51. package/dist/{connect-BHWHNe54.mjs → connect-0lSugpjf.mjs} +13 -13
  52. package/dist/{connect-2hWuvxRM.cjs → connect-DSw-2f52.cjs} +13 -13
  53. package/dist/{context-B-jybQhf.mjs → context-BgxbXWKS.mjs} +1 -1
  54. package/dist/{context-BtCz06PX.cjs → context-D-hEk5pC.cjs} +1 -1
  55. package/dist/{controlClient-O-vf2MkJ.mjs → controlClient-DwNnNAUx.mjs} +4 -4
  56. package/dist/{controlClient-mH9AxBwT.cjs → controlClient-F7hAEEy2.cjs} +3 -3
  57. package/dist/{createSessionMetadata-HlzlfP0U.mjs → createSessionMetadata-CG6Klinp.mjs} +2 -2
  58. package/dist/{createSessionMetadata-Bcn7b8QB.cjs → createSessionMetadata-DezS33OM.cjs} +2 -2
  59. package/dist/{defaultPermissionMode-BN3PdltF.cjs → defaultPermissionMode-5EvgRq38.cjs} +2 -2
  60. package/dist/{defaultPermissionMode-BPDeX4S8.mjs → defaultPermissionMode-e2bIIJG4.mjs} +2 -2
  61. package/dist/{deterministicJson-CruOxFA6.mjs → deterministicJson-BMwgK21e.mjs} +13 -13
  62. package/dist/{deterministicJson-D9pZQhU9.cjs → deterministicJson-D0LU_XbO.cjs} +13 -13
  63. package/dist/{doctor-BNhLBBTK.mjs → doctor-D16hySse.mjs} +7 -7
  64. package/dist/{doctor-lHD1YZH6.cjs → doctor-wVNvRarN.cjs} +7 -7
  65. package/dist/{downloadTarget-ByTxs_N5.mjs → downloadTarget-C6tqaXGm.mjs} +6 -6
  66. package/dist/{downloadTarget-BhkQxTa8.cjs → downloadTarget-aNcCxVRL.cjs} +6 -6
  67. package/dist/{ensureDaemonRunning-BiCK6RiS.cjs → ensureDaemonRunning-CIghxgDR.cjs} +5 -5
  68. package/dist/{ensureDaemonRunning-Cv0AMaHK.mjs → ensureDaemonRunning-DZq8bvsp.mjs} +5 -5
  69. package/dist/{handleResumeCommand-Cy_KW0LN.mjs → handleResumeCommand-BNnD7EuD.mjs} +5 -5
  70. package/dist/{handleResumeCommand-WB4VDeKk.cjs → handleResumeCommand-CMUTygsm.cjs} +5 -5
  71. package/dist/{index-BpWESchl.cjs → index-4TpmBb2Q.cjs} +3 -3
  72. package/dist/{index-Vtcax4oD.cjs → index-B81qV_F_.cjs} +4 -4
  73. package/dist/{index-CVMbboXv.mjs → index-BCQr-5Ei.mjs} +4 -4
  74. package/dist/{index-BumVulwx.cjs → index-BOe6dKnL.cjs} +215 -18
  75. package/dist/{index-CdOz1uDl.mjs → index-BuiG8hmg.mjs} +94 -45
  76. package/dist/{index-BpSpw6jG.mjs → index-CKd20r1W.mjs} +3 -3
  77. package/dist/{index-B44ft-m4.cjs → index-CnzsOD19.cjs} +93 -44
  78. package/dist/{index-Bcp-PEGc.cjs → index-De02DNu5.cjs} +4 -4
  79. package/dist/{index-lWXWV0H2.mjs → index-Df0bc_et.mjs} +4 -4
  80. package/dist/{index-B9f1vKcC.mjs → index-WKyN-bNy.mjs} +212 -17
  81. package/dist/index.cjs +2 -2
  82. package/dist/index.mjs +2 -2
  83. package/dist/{install-mK93DJ6L.mjs → install-23ehAdTD.mjs} +3 -3
  84. package/dist/{install-DdRVv9IS.cjs → install-DNbIEJUk.cjs} +3 -3
  85. package/dist/lib.cjs +12 -12
  86. package/dist/lib.d.cts +14 -0
  87. package/dist/lib.d.mts +14 -0
  88. package/dist/lib.mjs +12 -12
  89. package/dist/{lidState-XyjQaZtU.cjs → lidState-B4dHJCeS.cjs} +1 -1
  90. package/dist/{lidState-LtdUCXi-.mjs → lidState-q5Its2Hm.mjs} +1 -1
  91. package/dist/{localHappyAgentAuth-C9Aj_wGD.cjs → localHappyAgentAuth-CG2nPD_H.cjs} +1 -1
  92. package/dist/{localHappyAgentAuth-DqFE0Adr.mjs → localHappyAgentAuth-C_G5u5lY.mjs} +1 -1
  93. package/dist/{logger-BILSzq2s.cjs → logger-BP1SW7Cs.cjs} +2 -2
  94. package/dist/{logger-SAU4uSs4.mjs → logger-DOKH3Zbh.mjs} +2 -2
  95. package/dist/{machineMetadata-C5TgUTpD.cjs → machineMetadata-BKX3ov9g.cjs} +3 -3
  96. package/dist/{machineMetadata-ZVnihOuL.mjs → machineMetadata-D-5qeIqd.mjs} +3 -3
  97. package/dist/{main-BjOHtX8u.mjs → main-DODz8DQE.mjs} +46 -46
  98. package/dist/{main-CVfx_-l7.cjs → main-ndpVIaSG.cjs} +46 -46
  99. package/dist/{mcp-CWVr7KbQ.mjs → mcp-BBwbSODp.mjs} +16 -15
  100. package/dist/{mcp-By9XK193.cjs → mcp-Bc4U4exu.cjs} +16 -15
  101. package/dist/{mirrorProtocol-C0wyaesn.cjs → mirrorProtocol-CiA3hO2y.cjs} +3 -3
  102. package/dist/{mirrorProtocol-BI6XbokT.mjs → mirrorProtocol-D2vTWteS.mjs} +3 -3
  103. package/dist/{package-Bbfq2KR7.cjs → package-CYDdLA6R.cjs} +7 -7
  104. package/dist/{package-BMBwnCn3.mjs → package-DTcaIhjW.mjs} +7 -7
  105. package/dist/{panels-rQmysHlY.cjs → panels-C2xZ8rqU.cjs} +5 -5
  106. package/dist/{panels-CbIUwV6q.mjs → panels-DCaLxlSL.mjs} +5 -5
  107. package/dist/{peerTools-CZfiq_Dx.cjs → peerTools-B4315xjX.cjs} +5 -5
  108. package/dist/{peerTools-CyruQrOo.mjs → peerTools-BtrUnSwz.mjs} +5 -5
  109. package/dist/{persistence-C7T3HYjq.mjs → persistence-0INrP3aB.mjs} +2 -2
  110. package/dist/{persistence-DPeSC0SK.cjs → persistence-CrzC7yr_.cjs} +2 -2
  111. package/dist/{piRunnerArgs-DAq8vIpP.cjs → piRunnerArgs-BtzW_kfh.cjs} +1 -1
  112. package/dist/{piRunnerArgs-CsWompo8.mjs → piRunnerArgs-DRuxMlX1.mjs} +1 -1
  113. package/dist/{piRuntime-Dxd8Gfun.mjs → piRuntime-BMAFpIBV.mjs} +1 -1
  114. package/dist/{piRuntime-CFqlQFoz.cjs → piRuntime-DEbPE_kW.cjs} +1 -1
  115. package/dist/{piTerminal-BssuKDtJ.mjs → piTerminal-DQXV8_we.mjs} +18 -17
  116. package/dist/{piTerminal-DHG3Kzve.cjs → piTerminal-MtxDtBE2.cjs} +18 -17
  117. package/dist/{pushNotifications-CsSyhnHu.cjs → pushNotifications-CalIS9sq.cjs} +3 -3
  118. package/dist/{pushNotifications-Bi72c41d.mjs → pushNotifications-Cq1s8YVK.mjs} +3 -3
  119. package/dist/{query-BQOwsKS1.mjs → query-BYiPBHPC.mjs} +1 -1
  120. package/dist/{query-Cuef299f.cjs → query-CE2XDhhw.cjs} +1 -1
  121. package/dist/{specialCommands-35KxDNE8.cjs → rateLimitReporter-BKmoOZQi.cjs} +3 -55
  122. package/dist/{specialCommands-CTtmGCCf.mjs → rateLimitReporter-DR5LXuiQ.mjs} +4 -55
  123. package/dist/{rateLimitWindows-B6IAWYN5.mjs → rateLimitWindows-5vIuNjko.mjs} +1 -1
  124. package/dist/{rateLimitWindows-bfwC81Z-.cjs → rateLimitWindows-Cs56YJCH.cjs} +1 -1
  125. package/dist/{registerCommonHandlers-qzb6TQqo.mjs → registerCommonHandlers-DWkTysjD.mjs} +2 -2
  126. package/dist/{registerCommonHandlers-CQC04iF3.cjs → registerCommonHandlers-DZPozYxc.cjs} +2 -2
  127. package/dist/{registerKillSessionHandler-DMPrrNKX.mjs → registerKillSessionHandler-CSCTRIbI.mjs} +34 -6
  128. package/dist/{registerKillSessionHandler-BraKB5Ks.cjs → registerKillSessionHandler-DhCjrs44.cjs} +34 -6
  129. package/dist/{remoteSessionClient-DffolBcQ.cjs → remoteSessionClient-Dq8XTLQP.cjs} +5 -5
  130. package/dist/{remoteSessionClient-D3XhN_sd.mjs → remoteSessionClient-Vfj_5g2-.mjs} +5 -5
  131. package/dist/{reportProgressTool-irHR-XEW.mjs → reportProgressTool-B7zmX7NJ.mjs} +3 -3
  132. package/dist/{reportProgressTool-BieTXE_R.cjs → reportProgressTool-DznxPKES.cjs} +3 -3
  133. package/dist/{run-Ck_WA6Nj.cjs → run-Ca8BiNCp.cjs} +36 -35
  134. package/dist/{run-DCUaxe2S.mjs → run-DSfNcR62.mjs} +36 -35
  135. package/dist/{runClaude-BUGku2Qp.cjs → runClaude-ClQQcgoO.cjs} +22 -22
  136. package/dist/{runClaude-BryAvfNV.mjs → runClaude-hoepv-0X.mjs} +22 -22
  137. package/dist/{runClaudeDeps-BZkWM9_u.mjs → runClaudeDeps-D_v8t2SK.mjs} +88 -55
  138. package/dist/{runClaudeDeps-Dbk1VrOW.cjs → runClaudeDeps-ck5_GYlP.cjs} +85 -52
  139. package/dist/{runGemini-DT379gpi.mjs → runGemini-CTr2-cYG.mjs} +38 -33
  140. package/dist/{runGemini-B6AZ2bv0.cjs → runGemini-Cj0XsMiM.cjs} +38 -33
  141. package/dist/{runOpenClaw-eBUYlIVJ.cjs → runOpenClaw-BoN1e3lP.cjs} +23 -18
  142. package/dist/{runOpenClaw-Bpp9mkyO.mjs → runOpenClaw-CdDMntiV.mjs} +23 -18
  143. package/dist/{sandbox-Bv4H1P6u.cjs → sandbox-BY2h19gc.cjs} +4 -4
  144. package/dist/{sandbox-Z8TM9eUg.mjs → sandbox-DcaWB-Ou.mjs} +4 -4
  145. package/dist/selfCheck-BQ_H2Sns.mjs +86 -0
  146. package/dist/{selfCheck--1k2Ptf6.cjs → selfCheck-DFS_GUaQ.cjs} +37 -37
  147. package/dist/{send-BG4KYe6f.cjs → send-BMsUYU6g.cjs} +9 -8
  148. package/dist/{send-CKTovWuQ.mjs → send-UBTHHNvZ.mjs} +9 -8
  149. package/dist/{server-DLpXtoiZ.mjs → server-Dt3mCtfQ.mjs} +4 -4
  150. package/dist/{server-BTNwH-sA.cjs → server-YrHMHNz1.cjs} +6 -6
  151. package/dist/{sessionLock-Cf6RlgfF.cjs → sessionLock-DSqiP2lH.cjs} +3 -3
  152. package/dist/{sessionLock-DhzB5ZI9.mjs → sessionLock-tEFvFXLD.mjs} +3 -3
  153. package/dist/{sessionOps-R52JWMnX.cjs → sessionOps-BzeOKIEF.cjs} +27 -4
  154. package/dist/{sessionOps-CiFjBCMa.mjs → sessionOps-CljctDs5.mjs} +27 -4
  155. package/dist/{sessionProvider-f2tUhwBc.mjs → sessionProvider-BnUFSJXM.mjs} +5 -5
  156. package/dist/{sessionProvider-LATn-lZL.cjs → sessionProvider-ORgzmkXy.cjs} +5 -5
  157. package/dist/{sessionScanner-DRzZtGtu.cjs → sessionScanner-Cr6PJ3PT.cjs} +3 -3
  158. package/dist/{sessionScanner-lS1puA5H.mjs → sessionScanner-DZUlkdF6.mjs} +3 -3
  159. package/dist/{sessions-D01nnjOE.mjs → sessions-15cag-su.mjs} +11 -10
  160. package/dist/{sessions-DGd8Fin6.cjs → sessions-aIo_HjmY.cjs} +11 -10
  161. package/dist/{setupOfflineReconnection-UApZjcU5.mjs → setupOfflineReconnection-B7I8R2Ex.mjs} +2 -2
  162. package/dist/{setupOfflineReconnection-Ds7ywGwR.cjs → setupOfflineReconnection-tV0Q1dgR.cjs} +2 -2
  163. package/dist/{spawn-ct8aSMA8.mjs → spawn-ByrQgruJ.mjs} +70 -28
  164. package/dist/{spawn-CT3g4p8A.cjs → spawn-VG-HjJiR.cjs} +70 -27
  165. package/dist/{spawnAgents-f2q31uUV.mjs → spawnAgents-Bh1RPShN.mjs} +24 -11
  166. package/dist/{spawnAgents-DsJSyLDl.cjs → spawnAgents-C1-4m7aN.cjs} +24 -10
  167. package/dist/{spawnHappyCLI-Dp05fHcp.mjs → spawnHappyCLI-CEsXwz5V.mjs} +1 -1
  168. package/dist/{spawnHappyCLI-DedrWByd.cjs → spawnHappyCLI-CxiR2Qoy.cjs} +1 -1
  169. package/dist/specialCommands-J3JFOq0J.cjs +60 -0
  170. package/dist/specialCommands-MXUN0wfI.mjs +54 -0
  171. package/dist/{startFileWatcher-72w11DP_.cjs → startFileWatcher-C-XCZ5t2.cjs} +1 -1
  172. package/dist/{startFileWatcher-BLdxJdgu.mjs → startFileWatcher-DkEeeAtL.mjs} +1 -1
  173. package/dist/{startupSessionCreate-Cy4J4-Ep.cjs → startupSessionCreate-CYc8mra-.cjs} +1 -1
  174. package/dist/{startupSessionCreate-CJFR_Zom.mjs → startupSessionCreate-npXe2TdN.mjs} +1 -1
  175. package/dist/{streamRelay-B3FloUTT.mjs → streamRelay-CqBynIon.mjs} +1 -1
  176. package/dist/{streamRelay-Cn_uGG6m.cjs → streamRelay-D9a4cBEa.cjs} +1 -1
  177. package/dist/{sync-BWX1OVQi.mjs → sync-BvDMkKAN.mjs} +1 -1
  178. package/dist/{sync-lxDpbIh3.cjs → sync-CoChLEIg.cjs} +1 -1
  179. package/dist/{systemPrompt-BIilbjt_.mjs → systemPrompt-CgDaPigN.mjs} +2 -2
  180. package/dist/{systemPrompt-0DqWPGY6.cjs → systemPrompt-Dy_Rf-0Z.cjs} +2 -2
  181. package/dist/{teams-CvpB8Rdm.mjs → teams-BC4_e5hR.mjs} +7 -7
  182. package/dist/{teams-CImmJLlM.cjs → teams-DPvfLAk8.cjs} +7 -7
  183. package/dist/{template-DPsqlHJQ.cjs → template-17HATY_Y.cjs} +1 -1
  184. package/dist/{template-DuKZw-Sz.mjs → template-CEK8MEjo.mjs} +1 -1
  185. package/dist/{time-DjS5me2q.mjs → time-CUK37wiV.mjs} +1 -1
  186. package/dist/{time-BbQJi3Eh.cjs → time-XwEZxKGc.cjs} +1 -1
  187. package/dist/{titleGenerator-CfJme6ep.cjs → titleGenerator-DVX0NZUn.cjs} +2 -2
  188. package/dist/{titleGenerator-CGdBp5lQ.mjs → titleGenerator-DWRVdqMU.mjs} +1 -1
  189. package/dist/{todo-BxfUKwTM.mjs → todo-BNMGXneA.mjs} +6 -6
  190. package/dist/{todo-rN20m9lT.cjs → todo-CKGrSrRE.cjs} +6 -6
  191. package/dist/{tools-B_W7xJNh.mjs → tools-CCIEAVbB.mjs} +1 -1
  192. package/dist/{tools-kGtSjG8h.cjs → tools-CjMafO_D.cjs} +1 -1
  193. package/dist/{uninstall-CBQsxEmD.cjs → uninstall-BdFbTXnL.cjs} +3 -3
  194. package/dist/{uninstall-DUjvgLlg.mjs → uninstall-CJvJ7gjr.mjs} +3 -3
  195. package/package.json +7 -7
  196. package/dist/selfCheck-DIGghfQz.mjs +0 -86
@@ -1,38 +1,39 @@
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-Bh1RPShN.mjs';
2
+ import { s as sharedProjectsClient } from './client-B161HwAk.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-DwNnNAUx.mjs';
7
+ import { c as readPersistedSessions } from './persistence-0INrP3aB.mjs';
8
+ import { p as parseLatestModelTable } from './index-WKyN-bNy.mjs';
9
+ import { c as configuration } from './configuration-1FabKklB.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-DzecSBO4.mjs';
12
+ import { C as CodexAppServerClient } from './codexAppServerClient-BlVmpjR-.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-CljctDs5.mjs';
15
+ import { i as isValidSpawnOrigin } from './createSessionMetadata-CG6Klinp.mjs';
16
+ import { l as logger } from './logger-DOKH3Zbh.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-DTcaIhjW.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-5vIuNjko.mjs';
33
33
  import './processTree-CP5IvQ2Z.mjs';
34
34
  import 'axios';
35
- import './time-DjS5me2q.mjs';
35
+ import './time-CUK37wiV.mjs';
36
+ import './specialCommands-MXUN0wfI.mjs';
36
37
  import 'socket.io-client';
37
38
  import './backgroundTaskActivity-8PdPxrvy.mjs';
38
39
  import './projectPath-BTBIMB57.mjs';
@@ -40,6 +41,24 @@ import 'path';
40
41
  import 'url';
41
42
  import 'node:util';
42
43
 
44
+ async function fetchLatestModelTable(serverUrl, fetcher = fetch, timeoutMs = 2e3) {
45
+ const controller = new AbortController();
46
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
47
+ try {
48
+ const response = await fetcher(`${serverUrl}/v1/models/latest`, {
49
+ signal: controller.signal,
50
+ headers: { accept: "application/json" }
51
+ });
52
+ if (!response.ok) return null;
53
+ const body = await response.json();
54
+ return parseLatestModelTable(body?.table);
55
+ } catch {
56
+ return null;
57
+ } finally {
58
+ clearTimeout(timeout);
59
+ }
60
+ }
61
+
43
62
  function nonEmpty(value) {
44
63
  return typeof value === "string" && value.trim().length > 0;
45
64
  }
@@ -185,8 +204,8 @@ ${chalk.bold("Options:")}
185
204
  1-24 chars: [a-z0-9] plus - or _. Shows as a chip in
186
205
  the web list and is searchable as #<name>.
187
206
  --permission-mode <m> Permission mode for the new session: default,
188
- acceptEdits, plan, yolo, bypassPermissions.
189
- Default = the web launcher's: yolo for claude /
207
+ acceptEdits, plan, yolo, bypassPermissions (Codex
208
+ also read-only, safe-yolo). Default = the web launcher's: yolo for claude /
190
209
  codex / pi, 'default' for gemini / openclaw. A fork
191
210
  keeps its source's mode. 'default' stops at the first
192
211
  un-allowlisted tool until someone approves it (see
@@ -194,10 +213,11 @@ ${chalk.bold("Options:")}
194
213
  --agent <name> Backend to run: claude (default), codex, gemini,
195
214
  openclaw, pi (needs pi-acp on the daemon's PATH).
196
215
  --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.
216
+ (needs --prompt). Default = the web launcher's
217
+ 'latest': the newest model of the agent's tier this
218
+ machine runs (claude: newest Opus; codex: newest
219
+ sol its Codex lists; gemini: newest pro), else the
220
+ machine default. 'default' = the machine default.
201
221
  --fork <sessionId> Fork an existing session of THIS machine (same as the
202
222
  web's fork): copies its conversation and continues
203
223
  it in a new session, in the same directory and with
@@ -236,6 +256,23 @@ const defaultFirstMessageDeps = {
236
256
  sendUserMessage,
237
257
  warn: (message) => console.error(chalk.yellow("Warning:"), message)
238
258
  };
259
+ async function waitForModelCatalog(readMetadata, initial, knobs = {}) {
260
+ const timeoutMs = knobs.timeoutMs ?? 8e3;
261
+ const pollMs = knobs.pollMs ?? 400;
262
+ const sleep = knobs.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
263
+ const now = knobs.now ?? Date.now;
264
+ let current = initial;
265
+ const deadline = now() + timeoutMs;
266
+ while (!(current?.models && current.models.length > 0) && current?.configuredModel === void 0 && now() < deadline) {
267
+ await sleep(pollMs);
268
+ try {
269
+ const read = await readMetadata();
270
+ if (read) current = read;
271
+ } catch {
272
+ }
273
+ }
274
+ return current;
275
+ }
239
276
  async function sendFirstMessage(sessionId, text, metaFor, opts, deps = defaultFirstMessageDeps) {
240
277
  const persisted = await deps.waitForSessionKey(sessionId, 15e3);
241
278
  if (opts.fork) {
@@ -248,7 +285,8 @@ async function sendFirstMessage(sessionId, text, metaFor, opts, deps = defaultFi
248
285
  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
286
  }
250
287
  }
251
- const meta = metaFor(persisted.metadata?.capabilities ?? null);
288
+ const metadata = opts.waitForCatalog ? await waitForModelCatalog(() => deps.readSessionMetadata(sessionId, persisted), persisted.metadata, deps.catalogWait) : persisted.metadata;
289
+ const meta = metaFor(metadata);
252
290
  await deps.sendUserMessage(sessionId, persisted, text, "cli-spawn", meta);
253
291
  return meta;
254
292
  }
@@ -369,12 +407,16 @@ async function handleSpawnCommand(args) {
369
407
  let sentMeta = null;
370
408
  if (prompt !== void 0) {
371
409
  try {
372
- sentMeta = await sendFirstMessage(sessionId, prompt, (capabilities) => resolveFirstMessageMeta({
410
+ const latestTable = await fetchLatestModelTable(configuration.serverUrl);
411
+ sentMeta = await sendFirstMessage(sessionId, prompt, (metadata) => resolveFirstMessageMeta({
373
412
  agent,
374
413
  permissionMode,
375
414
  explicitModel: options.model,
376
- capabilities
377
- }), { fork: forkSource !== null });
415
+ capabilities: metadata?.capabilities ?? null,
416
+ catalog: metadata?.models ?? null,
417
+ configuredModel: metadata?.configuredModel,
418
+ latestTable
419
+ }), { fork: forkSource !== null, waitForCatalog: waitsForModelCatalog(agent, options.model) });
378
420
  } catch (error) {
379
421
  promptError = error instanceof Error ? error.message : String(error);
380
422
  }
@@ -418,4 +460,4 @@ async function handleSpawnCommand(args) {
418
460
  process.exit(0);
419
461
  }
420
462
 
421
- export { SPAWN_AGENTS, handleSpawnCommand, parseEnvAssignment, parseSpawnArgs, sendFirstMessage, sessionWebUrl, spawnEnvironmentVariables };
463
+ export { SPAWN_AGENTS, handleSpawnCommand, parseEnvAssignment, parseSpawnArgs, sendFirstMessage, sessionWebUrl, spawnEnvironmentVariables, waitForModelCatalog };
@@ -1,40 +1,41 @@
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-C1-4m7aN.cjs');
4
+ var client = require('./client-DIfxYk7B.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-F7hAEEy2.cjs');
9
+ var persistence = require('./persistence-CrzC7yr_.cjs');
10
+ var index = require('./index-BOe6dKnL.cjs');
11
+ var configuration = require('./configuration-C0ctLGW2.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-DsbcuDEJ.cjs');
14
+ var codexAppServerClient = require('./codexAppServerClient-CO9f4Jr8.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-BzeOKIEF.cjs');
17
+ var createSessionMetadata = require('./createSessionMetadata-DezS33OM.cjs');
18
+ var logger = require('./logger-BP1SW7Cs.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-CYDdLA6R.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-Cs56YJCH.cjs');
35
35
  require('./processTree-CMHWlVse.cjs');
36
36
  require('axios');
37
- require('./time-BbQJi3Eh.cjs');
37
+ require('./time-XwEZxKGc.cjs');
38
+ require('./specialCommands-J3JFOq0J.cjs');
38
39
  require('socket.io-client');
39
40
  require('./backgroundTaskActivity-CBvUdj39.cjs');
40
41
  require('./projectPath-C3ioB4Bu.cjs');
@@ -42,6 +43,24 @@ require('path');
42
43
  require('url');
43
44
  require('node:util');
44
45
 
46
+ async function fetchLatestModelTable(serverUrl, fetcher = fetch, timeoutMs = 2e3) {
47
+ const controller = new AbortController();
48
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
49
+ try {
50
+ const response = await fetcher(`${serverUrl}/v1/models/latest`, {
51
+ signal: controller.signal,
52
+ headers: { accept: "application/json" }
53
+ });
54
+ if (!response.ok) return null;
55
+ const body = await response.json();
56
+ return index.parseLatestModelTable(body?.table);
57
+ } catch {
58
+ return null;
59
+ } finally {
60
+ clearTimeout(timeout);
61
+ }
62
+ }
63
+
45
64
  function nonEmpty(value) {
46
65
  return typeof value === "string" && value.trim().length > 0;
47
66
  }
@@ -187,8 +206,8 @@ ${chalk.bold("Options:")}
187
206
  1-24 chars: [a-z0-9] plus - or _. Shows as a chip in
188
207
  the web list and is searchable as #<name>.
189
208
  --permission-mode <m> Permission mode for the new session: default,
190
- acceptEdits, plan, yolo, bypassPermissions.
191
- Default = the web launcher's: yolo for claude /
209
+ acceptEdits, plan, yolo, bypassPermissions (Codex
210
+ also read-only, safe-yolo). Default = the web launcher's: yolo for claude /
192
211
  codex / pi, 'default' for gemini / openclaw. A fork
193
212
  keeps its source's mode. 'default' stops at the first
194
213
  un-allowlisted tool until someone approves it (see
@@ -196,10 +215,11 @@ ${chalk.bold("Options:")}
196
215
  --agent <name> Backend to run: claude (default), codex, gemini,
197
216
  openclaw, pi (needs pi-acp on the daemon's PATH).
198
217
  --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.
218
+ (needs --prompt). Default = the web launcher's
219
+ 'latest': the newest model of the agent's tier this
220
+ machine runs (claude: newest Opus; codex: newest
221
+ sol its Codex lists; gemini: newest pro), else the
222
+ machine default. 'default' = the machine default.
203
223
  --fork <sessionId> Fork an existing session of THIS machine (same as the
204
224
  web's fork): copies its conversation and continues
205
225
  it in a new session, in the same directory and with
@@ -238,6 +258,23 @@ const defaultFirstMessageDeps = {
238
258
  sendUserMessage: sessionOps.sendUserMessage,
239
259
  warn: (message) => console.error(chalk.yellow("Warning:"), message)
240
260
  };
261
+ async function waitForModelCatalog(readMetadata, initial, knobs = {}) {
262
+ const timeoutMs = knobs.timeoutMs ?? 8e3;
263
+ const pollMs = knobs.pollMs ?? 400;
264
+ const sleep = knobs.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
265
+ const now = knobs.now ?? Date.now;
266
+ let current = initial;
267
+ const deadline = now() + timeoutMs;
268
+ while (!(current?.models && current.models.length > 0) && current?.configuredModel === void 0 && now() < deadline) {
269
+ await sleep(pollMs);
270
+ try {
271
+ const read = await readMetadata();
272
+ if (read) current = read;
273
+ } catch {
274
+ }
275
+ }
276
+ return current;
277
+ }
241
278
  async function sendFirstMessage(sessionId, text, metaFor, opts, deps = defaultFirstMessageDeps) {
242
279
  const persisted = await deps.waitForSessionKey(sessionId, 15e3);
243
280
  if (opts.fork) {
@@ -250,7 +287,8 @@ async function sendFirstMessage(sessionId, text, metaFor, opts, deps = defaultFi
250
287
  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
288
  }
252
289
  }
253
- const meta = metaFor(persisted.metadata?.capabilities ?? null);
290
+ const metadata = opts.waitForCatalog ? await waitForModelCatalog(() => deps.readSessionMetadata(sessionId, persisted), persisted.metadata, deps.catalogWait) : persisted.metadata;
291
+ const meta = metaFor(metadata);
254
292
  await deps.sendUserMessage(sessionId, persisted, text, "cli-spawn", meta);
255
293
  return meta;
256
294
  }
@@ -371,12 +409,16 @@ async function handleSpawnCommand(args) {
371
409
  let sentMeta = null;
372
410
  if (prompt !== void 0) {
373
411
  try {
374
- sentMeta = await sendFirstMessage(sessionId, prompt, (capabilities) => spawnAgents.resolveFirstMessageMeta({
412
+ const latestTable = await fetchLatestModelTable(configuration.configuration.serverUrl);
413
+ sentMeta = await sendFirstMessage(sessionId, prompt, (metadata) => spawnAgents.resolveFirstMessageMeta({
375
414
  agent,
376
415
  permissionMode,
377
416
  explicitModel: options.model,
378
- capabilities
379
- }), { fork: forkSource !== null });
417
+ capabilities: metadata?.capabilities ?? null,
418
+ catalog: metadata?.models ?? null,
419
+ configuredModel: metadata?.configuredModel,
420
+ latestTable
421
+ }), { fork: forkSource !== null, waitForCatalog: spawnAgents.waitsForModelCatalog(agent, options.model) });
380
422
  } catch (error) {
381
423
  promptError = error instanceof Error ? error.message : String(error);
382
424
  }
@@ -427,3 +469,4 @@ exports.parseEnvAssignment = parseEnvAssignment;
427
469
  exports.parseSpawnArgs = parseSpawnArgs;
428
470
  exports.sendFirstMessage = sendFirstMessage;
429
471
  exports.spawnEnvironmentVariables = spawnEnvironmentVariables;
472
+ exports.waitForModelCatalog = waitForModelCatalog;
@@ -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,25 +46,38 @@ 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",
64
75
  "acceptEdits",
65
76
  "plan",
66
77
  "yolo",
67
- "bypassPermissions"
78
+ "bypassPermissions",
79
+ "read-only",
80
+ "safe-yolo"
68
81
  ];
69
82
  function sanitizeSpawnPermissionMode(value) {
70
83
  if (typeof value !== "string") return null;
@@ -76,4 +89,4 @@ function isSpawnAgent(value) {
76
89
  return typeof value === "string" && SPAWN_AGENTS.includes(value);
77
90
  }
78
91
 
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 };
92
+ 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 };
@@ -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,25 +48,38 @@ 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",
66
77
  "acceptEdits",
67
78
  "plan",
68
79
  "yolo",
69
- "bypassPermissions"
80
+ "bypassPermissions",
81
+ "read-only",
82
+ "safe-yolo"
70
83
  ];
71
84
  function sanitizeSpawnPermissionMode(value) {
72
85
  if (typeof value !== "string") return null;
@@ -86,3 +99,4 @@ exports.joinProject = joinProject;
86
99
  exports.resolveFirstMessageMeta = resolveFirstMessageMeta;
87
100
  exports.resolveSpawnPermissionMode = resolveSpawnPermissionMode;
88
101
  exports.sanitizeSpawnPermissionMode = sanitizeSpawnPermissionMode;
102
+ exports.waitsForModelCatalog = waitsForModelCatalog;
@@ -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-DOKH3Zbh.mjs';
5
5
  import { existsSync } from 'node:fs';
6
6
 
7
7
  let cachedRuntime = null;
@@ -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-BP1SW7Cs.cjs');
7
7
  var node_fs = require('node:fs');
8
8
 
9
9
  let cachedRuntime = null;
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ const COMPACT_RE = /^[/\uFF0F]compact(?![A-Za-z0-9_:-])([\s\S]*)$/i;
4
+ const LEADING_SPACE_RE = /^[\s\u3000\uFEFF\u200B]+/;
5
+ function parseCompact(message) {
6
+ const match = message.replace(LEADING_SPACE_RE, "").match(COMPACT_RE);
7
+ if (!match) {
8
+ return {
9
+ isCompact: false,
10
+ originalMessage: message
11
+ };
12
+ }
13
+ const instructions = match[1].replace(/\u3000/g, " ").trim();
14
+ return {
15
+ isCompact: true,
16
+ originalMessage: instructions ? `/compact ${instructions}` : "/compact"
17
+ };
18
+ }
19
+ function compactCommandText(message) {
20
+ const result = parseCompact(message);
21
+ return result.isCompact ? result.originalMessage : null;
22
+ }
23
+ function parseClear(message) {
24
+ const trimmed = message.trim();
25
+ return {
26
+ isClear: trimmed === "/clear"
27
+ };
28
+ }
29
+ function parseSpecialCommand(message) {
30
+ const compactResult = parseCompact(message);
31
+ if (compactResult.isCompact) {
32
+ return {
33
+ type: "compact",
34
+ originalMessage: compactResult.originalMessage
35
+ };
36
+ }
37
+ const clearResult = parseClear(message);
38
+ if (clearResult.isClear) {
39
+ return {
40
+ type: "clear"
41
+ };
42
+ }
43
+ const trimmed = message.trim().toLowerCase();
44
+ if (trimmed === "/mcp") {
45
+ return { type: "mcp" };
46
+ }
47
+ if (trimmed === "/skills") {
48
+ return { type: "skills" };
49
+ }
50
+ return {
51
+ type: null
52
+ };
53
+ }
54
+ const COMPACT_UNSUPPORTED_NOTICE = "This session type does not support /compact";
55
+
56
+ exports.COMPACT_UNSUPPORTED_NOTICE = COMPACT_UNSUPPORTED_NOTICE;
57
+ exports.compactCommandText = compactCommandText;
58
+ exports.parseClear = parseClear;
59
+ exports.parseCompact = parseCompact;
60
+ exports.parseSpecialCommand = parseSpecialCommand;
@@ -0,0 +1,54 @@
1
+ const COMPACT_RE = /^[/\uFF0F]compact(?![A-Za-z0-9_:-])([\s\S]*)$/i;
2
+ const LEADING_SPACE_RE = /^[\s\u3000\uFEFF\u200B]+/;
3
+ function parseCompact(message) {
4
+ const match = message.replace(LEADING_SPACE_RE, "").match(COMPACT_RE);
5
+ if (!match) {
6
+ return {
7
+ isCompact: false,
8
+ originalMessage: message
9
+ };
10
+ }
11
+ const instructions = match[1].replace(/\u3000/g, " ").trim();
12
+ return {
13
+ isCompact: true,
14
+ originalMessage: instructions ? `/compact ${instructions}` : "/compact"
15
+ };
16
+ }
17
+ function compactCommandText(message) {
18
+ const result = parseCompact(message);
19
+ return result.isCompact ? result.originalMessage : null;
20
+ }
21
+ function parseClear(message) {
22
+ const trimmed = message.trim();
23
+ return {
24
+ isClear: trimmed === "/clear"
25
+ };
26
+ }
27
+ function parseSpecialCommand(message) {
28
+ const compactResult = parseCompact(message);
29
+ if (compactResult.isCompact) {
30
+ return {
31
+ type: "compact",
32
+ originalMessage: compactResult.originalMessage
33
+ };
34
+ }
35
+ const clearResult = parseClear(message);
36
+ if (clearResult.isClear) {
37
+ return {
38
+ type: "clear"
39
+ };
40
+ }
41
+ const trimmed = message.trim().toLowerCase();
42
+ if (trimmed === "/mcp") {
43
+ return { type: "mcp" };
44
+ }
45
+ if (trimmed === "/skills") {
46
+ return { type: "skills" };
47
+ }
48
+ return {
49
+ type: null
50
+ };
51
+ }
52
+ const COMPACT_UNSUPPORTED_NOTICE = "This session type does not support /compact";
53
+
54
+ export { COMPACT_UNSUPPORTED_NOTICE as C, parseSpecialCommand as a, parseCompact as b, compactCommandText as c, parseClear as p };
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-BILSzq2s.cjs');
3
+ var logger = require('./logger-BP1SW7Cs.cjs');
4
4
  var fs = require('fs/promises');
5
5
 
6
6
  function startFileWatcher(file, onFileChange, options = {}) {
@@ -1,4 +1,4 @@
1
- import { l as logger } from './logger-SAU4uSs4.mjs';
1
+ import { l as logger } from './logger-DOKH3Zbh.mjs';
2
2
  import { watch } from 'fs/promises';
3
3
 
4
4
  function startFileWatcher(file, onFileChange, options = {}) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var api = require('./api-DVEzYcoy.cjs');
3
+ var api = require('./api-BDuuyys8.cjs');
4
4
 
5
5
  const DAEMON_SESSION_CREATE_RETRY_DELAYS_MS = [500, 1e3, 2e3, 3e3];
6
6
  class SessionStartupError extends Error {
@@ -1,4 +1,4 @@
1
- import { c as connectionState } from './api-cVvbFZVK.mjs';
1
+ import { c as connectionState } from './api-B0yN68XH.mjs';
2
2
 
3
3
  const DAEMON_SESSION_CREATE_RETRY_DELAYS_MS = [500, 1e3, 2e3, 3e3];
4
4
  class SessionStartupError extends Error {
@@ -1,4 +1,4 @@
1
- import { S as STREAM_DELTA_MAX_CHARS } from './index-B9f1vKcC.mjs';
1
+ import { S as STREAM_DELTA_MAX_CHARS } from './index-WKyN-bNy.mjs';
2
2
 
3
3
  const STREAM_FLUSH_MS = 80;
4
4
  const PROGRESS_FLUSH_MS = 250;
@@ -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
  const STREAM_FLUSH_MS = 80;
6
6
  const PROGRESS_FLUSH_MS = 250;
@@ -1,4 +1,4 @@
1
- import { b as backoff } from './time-DjS5me2q.mjs';
1
+ import { b as backoff } from './time-CUK37wiV.mjs';
2
2
 
3
3
  class InvalidateSync {
4
4
  _invalidated = false;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var time = require('./time-BbQJi3Eh.cjs');
3
+ var time = require('./time-XwEZxKGc.cjs');
4
4
 
5
5
  class InvalidateSync {
6
6
  _invalidated = false;