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
@@ -23,6 +23,7 @@ function _interopNamespaceDefault(e) {
23
23
  var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
24
24
 
25
25
  const CODEX_STEER_CAPABILITY = "codex-steer-v1";
26
+ const CODEX_COMPACT_CAPABILITY = "codex-compact-v1";
26
27
  const PI_STEER_CAPABILITY = "pi-steer-v1";
27
28
  const sessionRoleSchema = z__namespace.enum(["user", "agent"]);
28
29
  const sessionTextEventSchema = z__namespace.object({
@@ -1014,9 +1015,9 @@ function createBuiltinTodoClient(credentials, options2) {
1014
1015
  throw new BuiltinTodoError("order-collision", "These Todos share an order that cannot safely be changed");
1015
1016
  }
1016
1017
  }
1017
- const updatedAt = Date.now();
1018
- const nextRecord = { ...record, order: recordOrder, updatedAt };
1019
- const nextNeighbor = { ...neighbor, order: neighborOrder, updatedAt };
1018
+ const updatedAt2 = Date.now();
1019
+ const nextRecord = { ...record, order: recordOrder, updatedAt: updatedAt2 };
1020
+ const nextNeighbor = { ...neighbor, order: neighborOrder, updatedAt: updatedAt2 };
1020
1021
  const versions = await mutate([mutation(record, nextRecord), mutation(neighbor, nextNeighbor)]);
1021
1022
  return [{ ...nextRecord, version: versions[0] }, { ...nextNeighbor, version: versions[1] }];
1022
1023
  }
@@ -1106,24 +1107,218 @@ z.z.object({
1106
1107
  startedAt: z.z.number(),
1107
1108
  at: z.z.number()
1108
1109
  });
1109
- const CLAUDE_OPUS_55_MODEL = "claude-opus-5-5";
1110
- const CLAUDE_OPUS_55_CAPABILITY = "claude-opus-5-5-v1";
1111
- function supportsClaudeOpus55(metadata) {
1112
- return metadata?.capabilities?.includes(CLAUDE_OPUS_55_CAPABILITY) === true;
1110
+ var version = 1;
1111
+ var updatedAt = "2026-10-30";
1112
+ var agents = {
1113
+ claude: {
1114
+ tier: "opus",
1115
+ pattern: "^claude-opus-(\\d+)(?:-(\\d{1,2}))?$",
1116
+ models: [
1117
+ {
1118
+ model: "claude-opus-5-5",
1119
+ label: "Opus 5.5",
1120
+ requires: {
1121
+ capability: "claude-opus-5-5-v1",
1122
+ cliVersion: "0.2.149"
1123
+ }
1124
+ }
1125
+ ]
1126
+ },
1127
+ codex: {
1128
+ tier: "sol",
1129
+ pattern: "^gpt-(\\d+)(?:\\.(\\d+))?-sol$",
1130
+ models: [
1131
+ {
1132
+ model: "gpt-6.1-sol",
1133
+ label: "gpt-6.1-sol",
1134
+ requires: {
1135
+ agentVersion: "0.160.0"
1136
+ }
1137
+ },
1138
+ {
1139
+ model: "gpt-6-sol",
1140
+ label: "gpt-6-sol",
1141
+ requires: {
1142
+ agentVersion: "0.157.0"
1143
+ }
1144
+ },
1145
+ {
1146
+ model: "gpt-5.6-sol",
1147
+ label: "gpt-5.6-sol",
1148
+ requires: {
1149
+ agentVersion: "0.150.0"
1150
+ }
1151
+ }
1152
+ ]
1153
+ },
1154
+ gemini: {
1155
+ tier: "pro",
1156
+ pattern: "^gemini-(\\d+)(?:\\.(\\d+))?-pro(?:-preview)?$",
1157
+ models: [
1158
+ {
1159
+ model: "gemini-3.1-pro-preview",
1160
+ label: "gemini 3.1 pro"
1161
+ },
1162
+ {
1163
+ model: "gemini-2.5-pro",
1164
+ label: "gemini 2.5 pro"
1165
+ }
1166
+ ]
1167
+ }
1168
+ };
1169
+ var bundledLatestModels = {
1170
+ version,
1171
+ updatedAt,
1172
+ agents
1173
+ };
1174
+ const LATEST_MODEL_MODE = "latest";
1175
+ function isLatestModelMode(model) {
1176
+ return model === LATEST_MODEL_MODE;
1177
+ }
1178
+ const LATEST_MODEL_AGENTS = ["claude", "codex", "gemini"];
1179
+ const LatestModelEntrySchema = z.z.object({
1180
+ model: z.z.string().min(1),
1181
+ label: z.z.string().optional(),
1182
+ /** What a machine/wrapper must have to run it. Absent = nothing provable
1183
+ * without the session's own catalog. */
1184
+ requires: z.z.object({
1185
+ /** Wrapper capability (session metadata.capabilities) — AGENTS.md rule 14. */
1186
+ capability: z.z.string().optional(),
1187
+ /** very-happy-cli version that first advertises `capability`; only used
1188
+ * before a session exists (launcher label). */
1189
+ cliVersion: z.z.string().optional(),
1190
+ /** First agent CLI (codex) whose bundled `model/list` carries the model. */
1191
+ agentVersion: z.z.string().optional()
1192
+ }).optional()
1193
+ });
1194
+ const LatestModelTierSchema = z.z.object({
1195
+ tier: z.z.string(),
1196
+ /** Regex source matching every id of the tier; its capture groups are the
1197
+ * version (`claude-opus-5-5` → 5,5; `gpt-6.1-sol` → 6.1). */
1198
+ pattern: z.z.string(),
1199
+ /** Known models of the tier, newest first. */
1200
+ models: z.z.array(LatestModelEntrySchema)
1201
+ });
1202
+ const LatestModelTableSchema = z.z.object({
1203
+ version: z.z.number(),
1204
+ updatedAt: z.z.string().optional(),
1205
+ agents: z.z.object({
1206
+ claude: LatestModelTierSchema.optional(),
1207
+ codex: LatestModelTierSchema.optional(),
1208
+ gemini: LatestModelTierSchema.optional()
1209
+ }).passthrough()
1210
+ }).passthrough();
1211
+ z.z.object({
1212
+ table: LatestModelTableSchema,
1213
+ source: z.z.enum(["bundled", "configured"])
1214
+ });
1215
+ const BUNDLED_LATEST_MODELS = LatestModelTableSchema.parse(bundledLatestModels);
1216
+ const MACHINE_CONFIG_AGENTS = ["codex", "gemini"];
1217
+ function compilePattern(source) {
1218
+ try {
1219
+ return new RegExp(source);
1220
+ } catch {
1221
+ return null;
1222
+ }
1223
+ }
1224
+ function tierVersion(tier, model) {
1225
+ const match = compilePattern(tier.pattern)?.exec(model);
1226
+ if (!match) return null;
1227
+ return match.slice(1).filter((part) => part !== void 0).map((part) => Number(part));
1113
1228
  }
1114
- function isClaudeOpus55Model(model) {
1115
- return model === CLAUDE_OPUS_55_MODEL || model === `${CLAUDE_OPUS_55_MODEL}[1m]`;
1229
+ function compareTierVersions(a, b) {
1230
+ for (let i = 0; i < Math.max(a.length, b.length); i++) {
1231
+ const diff = (a[i] ?? 0) - (b[i] ?? 0);
1232
+ if (diff !== 0) return diff;
1233
+ }
1234
+ return 0;
1235
+ }
1236
+ function catalogTierIds(tier, catalog) {
1237
+ const ids = /* @__PURE__ */ new Map();
1238
+ for (const entry of catalog ?? []) {
1239
+ for (const id2 of [entry.resolvedModel, entry.code]) {
1240
+ if (typeof id2 === "string" && tierVersion(tier, id2) && !ids.has(id2)) {
1241
+ ids.set(id2, entry.code === id2 && entry.value ? entry.value : id2);
1242
+ }
1243
+ }
1244
+ }
1245
+ return ids;
1246
+ }
1247
+ function entryRunnable(entry, ctx, catalogIds) {
1248
+ if (catalogIds.has(entry.model)) return true;
1249
+ const requires = entry.requires;
1250
+ {
1251
+ return !!requires?.capability && (ctx.capabilities ?? []).includes(requires.capability);
1252
+ }
1253
+ }
1254
+ function getLatestModelTier(table, agent) {
1255
+ if (agent !== "claude" && agent !== "codex" && agent !== "gemini") return null;
1256
+ const tier = table?.agents?.[agent] ?? BUNDLED_LATEST_MODELS.agents[agent];
1257
+ return tier && compilePattern(tier.pattern) ? tier : BUNDLED_LATEST_MODELS.agents[agent] ?? null;
1258
+ }
1259
+ function resolveLatestModel(table, agent, ctx) {
1260
+ const tier = getLatestModelTier(table, agent);
1261
+ if (!tier) return { model: null, newest: null, label: null, limited: false, configured: null };
1262
+ const catalogIds = catalogTierIds(tier, ctx.catalog);
1263
+ const labels = /* @__PURE__ */ new Map();
1264
+ const known = [];
1265
+ const runnable = [];
1266
+ for (const entry of tier.models) {
1267
+ if (!tierVersion(tier, entry.model)) continue;
1268
+ labels.set(entry.model, entry.label ?? entry.model);
1269
+ known.push(entry.model);
1270
+ if (entryRunnable(entry, ctx, catalogIds)) runnable.push(entry.model);
1271
+ }
1272
+ for (const [id2, label] of catalogIds) {
1273
+ if (!labels.has(id2)) labels.set(id2, label);
1274
+ known.push(id2);
1275
+ runnable.push(id2);
1276
+ }
1277
+ const newestOf = (ids) => {
1278
+ let best = null;
1279
+ for (const id2 of ids) {
1280
+ const version2 = tierVersion(tier, id2);
1281
+ if (!best || compareTierVersions(version2, best.version) > 0) best = { id: id2, version: version2 };
1282
+ }
1283
+ return best?.id ?? null;
1284
+ };
1285
+ const newest = newestOf(known);
1286
+ if (MACHINE_CONFIG_AGENTS.includes(agent ?? "")) {
1287
+ const configured = typeof ctx.configuredModel === "string" && ctx.configuredModel.trim() ? ctx.configuredModel.trim() : null;
1288
+ if (configured || ctx.configuredModel === void 0) {
1289
+ return { model: null, newest, label: configured, limited: false, configured };
1290
+ }
1291
+ }
1292
+ const model = newestOf(runnable);
1293
+ const sameVersion = model !== null && newest !== null && compareTierVersions(tierVersion(tier, model), tierVersion(tier, newest)) === 0;
1294
+ return {
1295
+ model,
1296
+ newest,
1297
+ label: model ? labels.get(model) ?? model : null,
1298
+ limited: newest !== null && !sameVersion,
1299
+ configured: null
1300
+ };
1301
+ }
1302
+ function parseLatestModelTable(value) {
1303
+ const parsed = LatestModelTableSchema.safeParse(value);
1304
+ if (!parsed.success) return null;
1305
+ for (const agent of LATEST_MODEL_AGENTS) {
1306
+ const tier = parsed.data.agents[agent];
1307
+ if (tier && !compilePattern(tier.pattern)) return null;
1308
+ }
1309
+ return parsed.data;
1116
1310
  }
1117
1311
  const AGENT_CODE_DEFAULTS = {
1118
1312
  // The Claude UI key for YOLO is `bypassPermissions`; the CLI also accepts
1119
1313
  // `yolo` and maps it to the Claude SDK's bypass mode.
1120
- // model defaults to the pinned Opus 5.5 id (not the `opus` alias, whose
1121
- // target depends on the wrapper's bundled Claude Code). Wrappers that
1122
- // cannot run it fall back to 'default' (see supportsClaudeOpus55).
1123
- // effort null = don't send effort.
1124
- claude: { permissionMode: "bypassPermissions", modelMode: CLAUDE_OPUS_55_MODEL, effortLevel: null },
1125
- codex: { permissionMode: "yolo", modelMode: "gpt-5.5", effortLevel: "medium" },
1126
- gemini: { permissionMode: "default", modelMode: "gemini-2.5-pro", effortLevel: null },
1314
+ // model: `latest` (B-844) = the newest model of the agent's tier that the
1315
+ // session's wrapper can run, resolved at send time (modelLatest.ts) and
1316
+ // never sent as is. Today: Claude → claude-opus-5-5 (pinned id, not the
1317
+ // `opus` alias), Codex → gpt-6.1-sol on Codex >= 0.160, Gemini → the
1318
+ // newest pro its session catalog lists. effort null = don't send effort.
1319
+ claude: { permissionMode: "bypassPermissions", modelMode: LATEST_MODEL_MODE, effortLevel: null },
1320
+ codex: { permissionMode: "yolo", modelMode: LATEST_MODEL_MODE, effortLevel: "medium" },
1321
+ gemini: { permissionMode: "default", modelMode: LATEST_MODEL_MODE, effortLevel: null },
1127
1322
  openclaw: { permissionMode: "default", modelMode: "default", effortLevel: null },
1128
1323
  // pi: the runner keeps Claude's permission vocabulary (B-350 — HAPPY_PERMISSION_MODE +
1129
1324
  // session-modes file, enforced by the pi-side gate; `bypassPermissions` = auto-allow every
@@ -1490,6 +1685,7 @@ exports.AutomationPrecheckSchema = AutomationPrecheckSchema;
1490
1685
  exports.AutomationTriggerSchema = AutomationTriggerSchema;
1491
1686
  exports.BUILTIN_TODO_DISCOVERY = BUILTIN_TODO_DISCOVERY;
1492
1687
  exports.BUILTIN_TODO_SKILL = BUILTIN_TODO_SKILL;
1688
+ exports.CODEX_COMPACT_CAPABILITY = CODEX_COMPACT_CAPABILITY;
1493
1689
  exports.CODEX_STEER_CAPABILITY = CODEX_STEER_CAPABILITY;
1494
1690
  exports.HARNESS_INSTALL_CAPABILITY_VERSION = HARNESS_INSTALL_CAPABILITY_VERSION;
1495
1691
  exports.OwnerBoardListInputSchema = OwnerBoardListInputSchema;
@@ -1509,11 +1705,12 @@ exports.createEnvelope = createEnvelope;
1509
1705
  exports.getAgentCodeDefaults = getAgentCodeDefaults;
1510
1706
  exports.isAttentionBoardLocalId = isAttentionBoardLocalId;
1511
1707
  exports.isAutomationRunTerminal = isAutomationRunTerminal;
1512
- exports.isClaudeOpus55Model = isClaudeOpus55Model;
1513
1708
  exports.isHarnessInstallId = isHarnessInstallId;
1514
1709
  exports.isInsideTeamWorktree = isInsideTeamWorktree;
1710
+ exports.isLatestModelMode = isLatestModelMode;
1515
1711
  exports.normalizeAgentKey = normalizeAgentKey;
1516
1712
  exports.ownerBoardPostToRest = ownerBoardPostToRest;
1713
+ exports.parseLatestModelTable = parseLatestModelTable;
1517
1714
  exports.rebaseTeamWorktreePath = rebaseTeamWorktreePath;
1715
+ exports.resolveLatestModel = resolveLatestModel;
1518
1716
  exports.streamKeyOf = streamKeyOf;
1519
- exports.supportsClaudeOpus55 = supportsClaudeOpus55;
@@ -1,92 +1,93 @@
1
- import { D as DefaultTransport, A as AcpBackend, i as isAgentExitError, a as acpNoticeMessage } from './AcpBackend-C4Emg-H3.mjs';
2
- export { b as DEFAULT_IDLE_TIMEOUT_MS, c as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, d as formatDurationMinutes, h as handleAgentMessageChunk, g as handleAgentThoughtChunk, j as handleLegacyMessageChunk, k as handlePlanUpdate, l as handleThinkingUpdate, m as handleToolCall, n as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-C4Emg-H3.mjs';
3
- import { l as logger } from './logger-SAU4uSs4.mjs';
4
- import { A as AcpSessionManager } from './AcpSessionManager-Nard_zFS.mjs';
5
- import { v as PI_STEER_CAPABILITY, j as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY, a as PROJECT_SESSION_CAPABILITY } from './index-B9f1vKcC.mjs';
6
- import { h as hashObject, s as startHappyServer, r as readPiModelsJson, a as resolvePiContextUsage, c as createProjectInjector } from './deterministicJson-CruOxFA6.mjs';
1
+ import { D as DefaultTransport, A as AcpBackend, i as isAgentExitError, a as acpNoticeMessage } from './AcpBackend-fj16v_cf.mjs';
2
+ export { b as DEFAULT_IDLE_TIMEOUT_MS, c as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, d as formatDurationMinutes, h as handleAgentMessageChunk, g as handleAgentThoughtChunk, j as handleLegacyMessageChunk, k as handlePlanUpdate, l as handleThinkingUpdate, m as handleToolCall, n as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-fj16v_cf.mjs';
3
+ import { l as logger } from './logger-DOKH3Zbh.mjs';
4
+ import { A as AcpSessionManager } from './AcpSessionManager-BZPmUDL5.mjs';
5
+ import { w as PI_STEER_CAPABILITY, j as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY, a as PROJECT_SESSION_CAPABILITY } from './index-WKyN-bNy.mjs';
6
+ import { h as hashObject, s as startHappyServer, r as readPiModelsJson, a as resolvePiContextUsage, c as createProjectInjector } from './deterministicJson-BMwgK21e.mjs';
7
+ import { c as compactCommandText, C as COMPACT_UNSUPPORTED_NOTICE } from './specialCommands-MXUN0wfI.mjs';
7
8
  import { r as registerAgentAttachmentDownloads } from './agentAttachments-M_B5qEF2.mjs';
8
- import { c as configuration } from './configuration-8EAa2X9P.mjs';
9
- import { a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt, C as CLAUDE_ATTACHMENT_KINDS } from './attachmentContent-NNF-Eo4O.mjs';
10
- import { p as preparePiTeamsRuntime } from './piRuntime-Dxd8Gfun.mjs';
9
+ import { c as configuration } from './configuration-1FabKklB.mjs';
10
+ import { a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt, C as CLAUDE_ATTACHMENT_KINDS } from './attachmentContent-CcIdMfAx.mjs';
11
+ import { p as preparePiTeamsRuntime } from './piRuntime-BMAFpIBV.mjs';
11
12
  import { randomUUID } from 'node:crypto';
12
13
  import { join } from 'node:path';
13
- import { c as connectionState, A as ApiClient } from './api-cVvbFZVK.mjs';
14
- import { s as sharedProjectsClient } from './client-C8w9aQYe.mjs';
15
- import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-DMPrrNKX.mjs';
16
- import { r as readSettings } from './persistence-C7T3HYjq.mjs';
17
- import { g as getInitialMachineMetadata } from './machineMetadata-ZVnihOuL.mjs';
18
- import { c as createSessionMetadata } from './createSessionMetadata-HlzlfP0U.mjs';
19
- import { s as setupOfflineReconnection } from './setupOfflineReconnection-UApZjcU5.mjs';
20
- import { c as createSessionForStartup } from './startupSessionCreate-CJFR_Zom.mjs';
21
- import { n as notifyDaemonSessionStarted, k as reportSessionEditToDaemon } from './controlClient-O-vf2MkJ.mjs';
14
+ import { c as connectionState, A as ApiClient } from './api-B0yN68XH.mjs';
15
+ import { s as sharedProjectsClient } from './client-B161HwAk.mjs';
16
+ import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-CSCTRIbI.mjs';
17
+ import { r as readSettings } from './persistence-0INrP3aB.mjs';
18
+ import { g as getInitialMachineMetadata } from './machineMetadata-D-5qeIqd.mjs';
19
+ import { c as createSessionMetadata } from './createSessionMetadata-CG6Klinp.mjs';
20
+ import { s as setupOfflineReconnection } from './setupOfflineReconnection-B7I8R2Ex.mjs';
21
+ import { c as createSessionForStartup } from './startupSessionCreate-npXe2TdN.mjs';
22
+ import { n as notifyDaemonSessionStarted, k as reportSessionEditToDaemon } from './controlClient-DwNnNAUx.mjs';
22
23
  import { d as decodeBase64, e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
23
- import { c as claimSessionOrExit, a as applyServerSnapshot, w as withoutServerSnapshot, m as mergeReconnectMetadata } from './sessionLock-DhzB5ZI9.mjs';
24
- import { r as readAcpReconnectEnv, n as normalizeAcpPermissionMode, p as piRestartNotice, w as writeSessionModeFile, a as removeSessionModeFile } from './acpSessionResume-DPSfMe7r.mjs';
25
- import { S as StreamRelay } from './streamRelay-B3FloUTT.mjs';
24
+ import { c as claimSessionOrExit, a as applyServerSnapshot, w as withoutServerSnapshot, m as mergeReconnectMetadata } from './sessionLock-tEFvFXLD.mjs';
25
+ import { r as readAcpReconnectEnv, n as normalizeAcpPermissionMode, p as piRestartNotice, w as writeSessionModeFile, a as removeSessionModeFile } from './acpSessionResume-Dxl1LRAT.mjs';
26
+ import { S as StreamRelay } from './streamRelay-CqBynIon.mjs';
26
27
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
27
- import { B as BasePermissionHandler } from './BasePermissionHandler-Bk9DmVZH.mjs';
28
- import { T as TitleGenerator } from './titleGenerator-CGdBp5lQ.mjs';
28
+ import { B as BasePermissionHandler } from './BasePermissionHandler-CVtH-snr.mjs';
29
+ import { T as TitleGenerator } from './titleGenerator-DWRVdqMU.mjs';
29
30
  import { E as EditReportThrottle, e as extractAcpEditPaths } from './editPaths-BVfS_FFL.mjs';
31
+ import { readFileSync } from 'node:fs';
32
+ import { homedir } from 'node:os';
30
33
  import 'node:child_process';
31
34
  import '@agentclientprotocol/sdk';
32
- import './time-DjS5me2q.mjs';
35
+ import './time-CUK37wiV.mjs';
33
36
  import './contentLogMetadata-BlWI0egu.mjs';
34
37
  import './processTree-CP5IvQ2Z.mjs';
35
- import './package-BMBwnCn3.mjs';
38
+ import './package-DTcaIhjW.mjs';
36
39
  import 'chalk';
37
40
  import 'node:util';
38
- import 'node:fs';
39
41
  import '@paralleldrive/cuid2';
40
42
  import 'zod';
41
43
  import './prompt-QHuFx9j6.mjs';
42
- import './reportProgressTool-irHR-XEW.mjs';
43
- import './client-Zqg7DXHl.mjs';
44
+ import './reportProgressTool-B7zmX7NJ.mjs';
45
+ import './client-CvjjadIE.mjs';
44
46
  import './precheckCompat-DeEbilbr.mjs';
45
47
  import './agentGuidance-BDYt2Qy2.mjs';
46
48
  import './trimIdent-BAjmv_TG.mjs';
47
- import 'node:os';
48
49
  import './pi-CqyoZMjI.mjs';
49
50
  import './fileStore-5qpetZS0.mjs';
50
51
  import 'node:fs/promises';
51
- import './client-D8p1YjVt.mjs';
52
- import './context-B-jybQhf.mjs';
53
- import './sessionOps-CiFjBCMa.mjs';
52
+ import './client-C9Ecbtko.mjs';
53
+ import './context-BgxbXWKS.mjs';
54
+ import './sessionOps-CljctDs5.mjs';
54
55
  import 'axios';
55
56
  import 'socket.io-client';
56
57
  import './backgroundTaskActivity-8PdPxrvy.mjs';
57
58
  import './resources-CLP_MpK4.mjs';
58
- import './tools-B_W7xJNh.mjs';
59
- import './peerTools-CyruQrOo.mjs';
59
+ import './tools-CCIEAVbB.mjs';
60
+ import './peerTools-BtrUnSwz.mjs';
60
61
  import './ids-DU6sLx4C.mjs';
61
- import './remoteSessionClient-D3XhN_sd.mjs';
62
+ import './remoteSessionClient-Vfj_5g2-.mjs';
62
63
  import '@modelcontextprotocol/sdk/server/mcp.js';
63
64
  import 'node:http';
64
65
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
65
66
  import './limits-DIo7rEBR.mjs';
66
- import './downloadTarget-ByTxs_N5.mjs';
67
+ import './downloadTarget-C6tqaXGm.mjs';
67
68
  import './terminals-Dlg0x3nY.mjs';
68
69
  import './terminalTitleSuggest-CeKsX_V6.mjs';
69
70
  import './tmuxSocket-B8Yx20sT.mjs';
70
- import './bootstrap-CndcegDb.mjs';
71
+ import './bootstrap-DfXwkUQb.mjs';
71
72
  import './webPanels-B2_C2-3g.mjs';
72
- import './pushNotifications-Bi72c41d.mjs';
73
+ import './pushNotifications-Cq1s8YVK.mjs';
73
74
  import './previewPath-CXN4Vag0.mjs';
74
75
  import 'crypto';
75
- import './lidState-LtdUCXi-.mjs';
76
+ import './lidState-q5Its2Hm.mjs';
76
77
  import 'os';
77
78
  import 'child_process';
78
79
  import 'node:events';
79
- import './registerCommonHandlers-qzb6TQqo.mjs';
80
+ import './registerCommonHandlers-DWkTysjD.mjs';
80
81
  import 'util';
81
82
  import 'fs/promises';
82
83
  import 'path';
83
84
  import 'cross-spawn';
84
- import './sync-BWX1OVQi.mjs';
85
+ import './sync-BvDMkKAN.mjs';
85
86
  import 'tweetnacl';
86
87
  import './types-CkqAACXx.mjs';
87
88
  import './detectCLI-CSGMlV51.mjs';
88
89
  import 'fs';
89
- import './localHappyAgentAuth-DqFE0Adr.mjs';
90
+ import './localHappyAgentAuth-C_G5u5lY.mjs';
90
91
  import './fsMkdir-DumgLTzR.mjs';
91
92
  import './processTreeSnapshot-CuLJDNC-.mjs';
92
93
  import 'url';
@@ -118,6 +119,16 @@ async function buildAcpPrompt(message, opts) {
118
119
 
119
120
  ${opts.todoNote}`, slashCommand: false };
120
121
  }
122
+ function routeAcpUserText(text, advertisedCommands) {
123
+ const compact = compactCommandText(text);
124
+ if (compact !== null) {
125
+ if (advertisedCommands && advertisedCommands.length > 0 && !advertisedCommands.includes("compact")) {
126
+ return { kind: "unsupported", notice: COMPACT_UNSUPPORTED_NOTICE };
127
+ }
128
+ return { kind: "command", text: compact };
129
+ }
130
+ return isAgentSlashCommand(text) ? { kind: "command", text } : { kind: "prompt", text };
131
+ }
121
132
 
122
133
  const MAX_DETAIL_CHARS = 400;
123
134
  function detailOf(error) {
@@ -143,9 +154,11 @@ function oneLine(text) {
143
154
  }
144
155
  function describeAcpTurnFailure(agentName, error) {
145
156
  if (isAgentExitError(error)) {
146
- return { message: `Process exited unexpectedly: ${oneLine(error.message)}`, exited: true };
157
+ const detail2 = oneLine(error.message);
158
+ return { message: `Process exited unexpectedly: ${detail2}`, error: detail2, exited: true };
147
159
  }
148
- return { message: `${agentName} error: ${oneLine(detailOf(error))}`, exited: false };
160
+ const detail = oneLine(detailOf(error));
161
+ return { message: `${agentName} error: ${detail}`, error: detail, exited: false };
149
162
  }
150
163
 
151
164
  const OUT_OF_TURN_QUIET_MS = 6e4;
@@ -422,6 +435,26 @@ function mergeAcpSessionConfigIntoMetadata(metadata, snapshot) {
422
435
  return next;
423
436
  }
424
437
 
438
+ function readGeminiConfiguredModel(opts = {}) {
439
+ const env = opts.env ?? process.env;
440
+ const fromEnv = env.GEMINI_MODEL?.trim();
441
+ if (fromEnv) return fromEnv;
442
+ const read = opts.readFile ?? ((path) => readFileSync(path, "utf8"));
443
+ const home = env.GEMINI_CLI_HOME?.trim() || opts.home || homedir();
444
+ for (const file of [join(opts.cwd ?? process.cwd(), ".gemini", "settings.json"), join(home, ".gemini", "settings.json")]) {
445
+ let parsed;
446
+ try {
447
+ parsed = JSON.parse(read(file));
448
+ } catch {
449
+ continue;
450
+ }
451
+ const model = parsed?.model;
452
+ const name = typeof model === "string" ? model : model?.name;
453
+ if (typeof name === "string" && name.trim()) return name.trim();
454
+ }
455
+ return null;
456
+ }
457
+
425
458
  const ACP_EVENT_PREVIEW_CHARS = 240;
426
459
  const ACP_RAW_PREVIEW_CHARS = 2e3;
427
460
  const ACP_COLOR_RESET = "\x1B[0m";
@@ -796,6 +829,7 @@ async function runAcp(opts) {
796
829
  capabilities: [PROMPT_QUEUE_CAPABILITY, PROJECT_SESSION_CAPABILITY]
797
830
  });
798
831
  metadata.attachmentKinds = [];
832
+ if (opts.agentName === "gemini") metadata.configuredModel = readGeminiConfiguredModel();
799
833
  const reconnect = readAcpReconnectEnv(process.env);
800
834
  let response;
801
835
  if (reconnect) {
@@ -894,6 +928,7 @@ async function runAcp(opts) {
894
928
  let legacyModes = null;
895
929
  let legacyModels = null;
896
930
  let sawSlashCommands = false;
931
+ let agentCommands = null;
897
932
  let sawModes = false;
898
933
  let sawModels = false;
899
934
  const initialPermissionMode = opts.permissionMode ?? resumedPermissionMode ?? "default";
@@ -1146,6 +1181,7 @@ async function runAcp(opts) {
1146
1181
  const commands = msg.payload;
1147
1182
  const commandNames = commands.map((c) => c.name);
1148
1183
  sawSlashCommands = commands.length > 0;
1184
+ agentCommands = commandNames;
1149
1185
  if (verbose) {
1150
1186
  logAcp("muted", `Outgoing slash commands from ${opts.agentName} (${commands.length}):`);
1151
1187
  for (const command of commands) {
@@ -1318,6 +1354,19 @@ async function runAcp(opts) {
1318
1354
  if (message.meta && Object.prototype.hasOwnProperty.call(message.meta, "effort")) {
1319
1355
  currentEffort = message.meta.effort ?? null;
1320
1356
  }
1357
+ const route = routeAcpUserText(message.content.text, agentCommands);
1358
+ if (route.kind === "unsupported") {
1359
+ session.sendSessionEvent({ type: "message", message: route.notice });
1360
+ return;
1361
+ }
1362
+ if (route.kind === "command") {
1363
+ messageQueue.pushIsolate(route.text, {
1364
+ permissionMode: currentPermissionMode,
1365
+ model: currentModel,
1366
+ effort: currentEffort
1367
+ }, attachments, message.localKey);
1368
+ return;
1369
+ }
1321
1370
  if (message.meta?.delivery === "steer" && piSteer?.ready && thinking && !attachments?.length) {
1322
1371
  if (await piSteer.offer(message.content.text, PI_STEER_OFFER_TIMEOUT_MS)) {
1323
1372
  logger.debug(`[${opts.agentName}] User message steered into the running turn`);
@@ -1507,7 +1556,7 @@ async function runAcp(opts) {
1507
1556
  } catch (error) {
1508
1557
  const failure = describeAcpTurnFailure(opts.agentName, error);
1509
1558
  session.sendSessionEvent({ type: "message", message: failure.message });
1510
- sendEnvelopes(sessionManager.endTurn("failed"));
1559
+ sendEnvelopes(sessionManager.endTurn("failed", failure.error));
1511
1560
  streamRelay.endTurn();
1512
1561
  setThinking(false);
1513
1562
  session.sendSessionEvent({ type: "ready" });
@@ -1,4 +1,4 @@
1
- import { p as packageJson } from './package-BMBwnCn3.mjs';
1
+ import { p as packageJson } from './package-DTcaIhjW.mjs';
2
2
  import module$1 from 'node:module';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { readdir, rm } from 'node:fs/promises';
@@ -57,10 +57,10 @@ async function pruneStaleCompileCaches(happyHomeDir, cliVersion) {
57
57
  async function run(args) {
58
58
  enableCompileCacheIfPossible(packageJson.version);
59
59
  if (isStandaloneVersionRequest(args) || isSelfCheckRequest(args)) {
60
- const { selfCheckMain } = await import('./selfCheck-DIGghfQz.mjs');
60
+ const { selfCheckMain } = await import('./selfCheck-BQ_H2Sns.mjs');
61
61
  process.exit(await selfCheckMain({ verbose: isSelfCheckRequest(args) }));
62
62
  }
63
- const { main } = await import('./main-BjOHtX8u.mjs');
63
+ const { main } = await import('./main-DODz8DQE.mjs');
64
64
  await main();
65
65
  }
66
66
  void run(process.argv.slice(2));