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
@@ -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,14 +1,14 @@
1
1
  import { statSync, readdirSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
- import { l as logger } from './logger-SAU4uSs4.mjs';
4
- import { r as readSettings } from './persistence-C7T3HYjq.mjs';
3
+ import { l as logger } from './logger-RpzJ4d8V.mjs';
4
+ import { r as readSettings } from './persistence-Bn4qEbDg.mjs';
5
5
  import { d as describeAgentHome, C as CLAUDE_CONFIG_DIR_ENV, a as CODEX_HOME_ENV, f as findClaudeConversation, b as agentHomeCandidates, c as findCodexThread, r as resolveAgentHomes, A as AGENT_HOME_ENV_NAMES, g as agentHomeEnv, p as probeLoginShellEnv } from './loginShellEnv-Dw8M7tkI.mjs';
6
6
  export { h as claudeConversationPath, i as claudeProjectDirName, j as codexRolloutFileMatches, e as expandHomePath } from './loginShellEnv-Dw8M7tkI.mjs';
7
7
  import 'chalk';
8
8
  import 'node:util';
9
- import './configuration-8EAa2X9P.mjs';
9
+ import './configuration-BZHpFD7K.mjs';
10
10
  import 'node:path';
11
- import './package-BMBwnCn3.mjs';
11
+ import './package-CwB8rFJt.mjs';
12
12
  import 'node:fs/promises';
13
13
  import 'zod';
14
14
  import './authRelay-DhQhkBvX.mjs';
@@ -1,92 +1,92 @@
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-2loP7MpF.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-2loP7MpF.mjs';
3
+ import { l as logger } from './logger-RpzJ4d8V.mjs';
4
+ import { A as AcpSessionManager } from './AcpSessionManager-C17doAoR.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-CsRckxVq.mjs';
7
+ import { c as compactCommandText, C as COMPACT_UNSUPPORTED_NOTICE, M as MessageQueue2, r as registerKillSessionHandler } from './specialCommands-DHU7TNeK.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-BZHpFD7K.mjs';
10
+ import { a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt, C as CLAUDE_ATTACHMENT_KINDS } from './attachmentContent-C9S4ekAz.mjs';
11
+ import { p as preparePiTeamsRuntime } from './piRuntime-Do8oqbm3.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-DNKa7kVy.mjs';
15
+ import { s as sharedProjectsClient } from './client-DWws_aQK.mjs';
16
+ import { r as readSettings } from './persistence-Bn4qEbDg.mjs';
17
+ import { g as getInitialMachineMetadata } from './machineMetadata-CiQ2_1Mq.mjs';
18
+ import { c as createSessionMetadata } from './createSessionMetadata-Dn5BkLfU.mjs';
19
+ import { s as setupOfflineReconnection } from './setupOfflineReconnection-DaOXnGuH.mjs';
20
+ import { c as createSessionForStartup } from './startupSessionCreate-BgaVuvQp.mjs';
21
+ import { n as notifyDaemonSessionStarted, k as reportSessionEditToDaemon } from './controlClient-Bw56NIrj.mjs';
22
22
  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';
23
+ import { c as claimSessionOrExit, a as applyServerSnapshot, w as withoutServerSnapshot, m as mergeReconnectMetadata } from './sessionLock-C7Wg1RVd.mjs';
24
+ import { r as readAcpReconnectEnv, n as normalizeAcpPermissionMode, p as piRestartNotice, w as writeSessionModeFile, a as removeSessionModeFile } from './acpSessionResume-F705a1cF.mjs';
25
+ import { S as StreamRelay } from './streamRelay-CqBynIon.mjs';
26
26
  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';
27
+ import { B as BasePermissionHandler } from './BasePermissionHandler-CrfyUmqO.mjs';
28
+ import { T as TitleGenerator } from './titleGenerator-dmFlxkRs.mjs';
29
29
  import { E as EditReportThrottle, e as extractAcpEditPaths } from './editPaths-BVfS_FFL.mjs';
30
+ import { readFileSync } from 'node:fs';
31
+ import { homedir } from 'node:os';
30
32
  import 'node:child_process';
31
33
  import '@agentclientprotocol/sdk';
32
- import './time-DjS5me2q.mjs';
34
+ import './time-umG7yHkb.mjs';
33
35
  import './contentLogMetadata-BlWI0egu.mjs';
34
36
  import './processTree-CP5IvQ2Z.mjs';
35
- import './package-BMBwnCn3.mjs';
37
+ import './package-CwB8rFJt.mjs';
36
38
  import 'chalk';
37
39
  import 'node:util';
38
- import 'node:fs';
39
40
  import '@paralleldrive/cuid2';
40
41
  import 'zod';
41
42
  import './prompt-QHuFx9j6.mjs';
42
- import './reportProgressTool-irHR-XEW.mjs';
43
- import './client-Zqg7DXHl.mjs';
43
+ import './reportProgressTool-DUEq3xAL.mjs';
44
+ import './client-DcDE6Ifk.mjs';
44
45
  import './precheckCompat-DeEbilbr.mjs';
45
46
  import './agentGuidance-BDYt2Qy2.mjs';
46
47
  import './trimIdent-BAjmv_TG.mjs';
47
- import 'node:os';
48
48
  import './pi-CqyoZMjI.mjs';
49
49
  import './fileStore-5qpetZS0.mjs';
50
50
  import 'node:fs/promises';
51
- import './client-D8p1YjVt.mjs';
52
- import './context-B-jybQhf.mjs';
53
- import './sessionOps-CiFjBCMa.mjs';
51
+ import './client-qJ0y8fus.mjs';
52
+ import './context-t7YV0aZc.mjs';
53
+ import './sessionOps-CYjMT7Ad.mjs';
54
54
  import 'axios';
55
55
  import 'socket.io-client';
56
56
  import './backgroundTaskActivity-8PdPxrvy.mjs';
57
57
  import './resources-CLP_MpK4.mjs';
58
- import './tools-B_W7xJNh.mjs';
59
- import './peerTools-CyruQrOo.mjs';
58
+ import './tools-BOWazSD6.mjs';
59
+ import './peerTools-2_8Bw9PU.mjs';
60
60
  import './ids-DU6sLx4C.mjs';
61
- import './remoteSessionClient-D3XhN_sd.mjs';
61
+ import './remoteSessionClient-uPj7omsw.mjs';
62
62
  import '@modelcontextprotocol/sdk/server/mcp.js';
63
63
  import 'node:http';
64
64
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
65
65
  import './limits-DIo7rEBR.mjs';
66
- import './downloadTarget-ByTxs_N5.mjs';
66
+ import './downloadTarget-tYMV_VHo.mjs';
67
67
  import './terminals-Dlg0x3nY.mjs';
68
68
  import './terminalTitleSuggest-CeKsX_V6.mjs';
69
69
  import './tmuxSocket-B8Yx20sT.mjs';
70
- import './bootstrap-CndcegDb.mjs';
70
+ import './bootstrap-Di38SnpN.mjs';
71
71
  import './webPanels-B2_C2-3g.mjs';
72
- import './pushNotifications-Bi72c41d.mjs';
72
+ import './pushNotifications-BThg4nVd.mjs';
73
73
  import './previewPath-CXN4Vag0.mjs';
74
74
  import 'crypto';
75
- import './lidState-LtdUCXi-.mjs';
76
- import 'os';
77
- import 'child_process';
78
75
  import 'node:events';
79
- import './registerCommonHandlers-qzb6TQqo.mjs';
76
+ import 'tweetnacl';
77
+ import './registerCommonHandlers-CaWl9ll1.mjs';
78
+ import 'child_process';
80
79
  import 'util';
81
80
  import 'fs/promises';
82
81
  import 'path';
83
82
  import 'cross-spawn';
84
- import './sync-BWX1OVQi.mjs';
85
- import 'tweetnacl';
83
+ import 'os';
86
84
  import './types-CkqAACXx.mjs';
85
+ import './lidState-D-lsD1FS.mjs';
86
+ import './sync-I8NYmycF.mjs';
87
87
  import './detectCLI-CSGMlV51.mjs';
88
88
  import 'fs';
89
- import './localHappyAgentAuth-DqFE0Adr.mjs';
89
+ import './localHappyAgentAuth-wvDp-nGj.mjs';
90
90
  import './fsMkdir-DumgLTzR.mjs';
91
91
  import './processTreeSnapshot-CuLJDNC-.mjs';
92
92
  import 'url';
@@ -118,6 +118,16 @@ async function buildAcpPrompt(message, opts) {
118
118
 
119
119
  ${opts.todoNote}`, slashCommand: false };
120
120
  }
121
+ function routeAcpUserText(text, advertisedCommands) {
122
+ const compact = compactCommandText(text);
123
+ if (compact !== null) {
124
+ if (advertisedCommands && advertisedCommands.length > 0 && !advertisedCommands.includes("compact")) {
125
+ return { kind: "unsupported", notice: COMPACT_UNSUPPORTED_NOTICE };
126
+ }
127
+ return { kind: "command", text: compact };
128
+ }
129
+ return isAgentSlashCommand(text) ? { kind: "command", text } : { kind: "prompt", text };
130
+ }
121
131
 
122
132
  const MAX_DETAIL_CHARS = 400;
123
133
  function detailOf(error) {
@@ -422,6 +432,26 @@ function mergeAcpSessionConfigIntoMetadata(metadata, snapshot) {
422
432
  return next;
423
433
  }
424
434
 
435
+ function readGeminiConfiguredModel(opts = {}) {
436
+ const env = opts.env ?? process.env;
437
+ const fromEnv = env.GEMINI_MODEL?.trim();
438
+ if (fromEnv) return fromEnv;
439
+ const read = opts.readFile ?? ((path) => readFileSync(path, "utf8"));
440
+ const home = env.GEMINI_CLI_HOME?.trim() || opts.home || homedir();
441
+ for (const file of [join(opts.cwd ?? process.cwd(), ".gemini", "settings.json"), join(home, ".gemini", "settings.json")]) {
442
+ let parsed;
443
+ try {
444
+ parsed = JSON.parse(read(file));
445
+ } catch {
446
+ continue;
447
+ }
448
+ const model = parsed?.model;
449
+ const name = typeof model === "string" ? model : model?.name;
450
+ if (typeof name === "string" && name.trim()) return name.trim();
451
+ }
452
+ return null;
453
+ }
454
+
425
455
  const ACP_EVENT_PREVIEW_CHARS = 240;
426
456
  const ACP_RAW_PREVIEW_CHARS = 2e3;
427
457
  const ACP_COLOR_RESET = "\x1B[0m";
@@ -796,6 +826,7 @@ async function runAcp(opts) {
796
826
  capabilities: [PROMPT_QUEUE_CAPABILITY, PROJECT_SESSION_CAPABILITY]
797
827
  });
798
828
  metadata.attachmentKinds = [];
829
+ if (opts.agentName === "gemini") metadata.configuredModel = readGeminiConfiguredModel();
799
830
  const reconnect = readAcpReconnectEnv(process.env);
800
831
  let response;
801
832
  if (reconnect) {
@@ -894,6 +925,7 @@ async function runAcp(opts) {
894
925
  let legacyModes = null;
895
926
  let legacyModels = null;
896
927
  let sawSlashCommands = false;
928
+ let agentCommands = null;
897
929
  let sawModes = false;
898
930
  let sawModels = false;
899
931
  const initialPermissionMode = opts.permissionMode ?? resumedPermissionMode ?? "default";
@@ -1146,6 +1178,7 @@ async function runAcp(opts) {
1146
1178
  const commands = msg.payload;
1147
1179
  const commandNames = commands.map((c) => c.name);
1148
1180
  sawSlashCommands = commands.length > 0;
1181
+ agentCommands = commandNames;
1149
1182
  if (verbose) {
1150
1183
  logAcp("muted", `Outgoing slash commands from ${opts.agentName} (${commands.length}):`);
1151
1184
  for (const command of commands) {
@@ -1318,6 +1351,19 @@ async function runAcp(opts) {
1318
1351
  if (message.meta && Object.prototype.hasOwnProperty.call(message.meta, "effort")) {
1319
1352
  currentEffort = message.meta.effort ?? null;
1320
1353
  }
1354
+ const route = routeAcpUserText(message.content.text, agentCommands);
1355
+ if (route.kind === "unsupported") {
1356
+ session.sendSessionEvent({ type: "message", message: route.notice });
1357
+ return;
1358
+ }
1359
+ if (route.kind === "command") {
1360
+ messageQueue.pushIsolate(route.text, {
1361
+ permissionMode: currentPermissionMode,
1362
+ model: currentModel,
1363
+ effort: currentEffort
1364
+ }, attachments, message.localKey);
1365
+ return;
1366
+ }
1321
1367
  if (message.meta?.delivery === "steer" && piSteer?.ready && thinking && !attachments?.length) {
1322
1368
  if (await piSteer.offer(message.content.text, PI_STEER_OFFER_TIMEOUT_MS)) {
1323
1369
  logger.debug(`[${opts.agentName}] User message steered into the running turn`);
@@ -1,14 +1,14 @@
1
- import { q as query } from './query-BQOwsKS1.mjs';
1
+ import { q as query } from './query-CkgIJ_Dy.mjs';
2
2
  export { AbortError } from '@anthropic-ai/claude-agent-sdk';
3
3
  import './promptCacheTtl-Ce0TVbrx.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:os';
6
6
  import 'node:path';
7
- import './logger-SAU4uSs4.mjs';
7
+ import './logger-RpzJ4d8V.mjs';
8
8
  import 'chalk';
9
9
  import 'node:util';
10
- import './configuration-8EAa2X9P.mjs';
11
- import './package-BMBwnCn3.mjs';
10
+ import './configuration-BZHpFD7K.mjs';
11
+ import './package-CwB8rFJt.mjs';
12
12
  import 'node:fs/promises';
13
13
  import './processTreeSnapshot-CuLJDNC-.mjs';
14
14
  import 'node:child_process';