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,105 +1,106 @@
1
- import { a as authAndSetupMachineIfNeeded } from './auth-BCHL8Fx5.mjs';
2
- import { g as createEnvelope, j as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY, I as CODEX_STEER_CAPABILITY, a as PROJECT_SESSION_CAPABILITY } from './index-B9f1vKcC.mjs';
3
- import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-CruOxFA6.mjs';
4
- import { s as sharedProjectsClient } from './client-C8w9aQYe.mjs';
1
+ import { a as authAndSetupMachineIfNeeded } from './auth-CyrVvWHF.mjs';
2
+ import { g as createEnvelope, j as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY, J as CODEX_STEER_CAPABILITY, a as PROJECT_SESSION_CAPABILITY, K as CODEX_COMPACT_CAPABILITY } from './index-WKyN-bNy.mjs';
3
+ import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-BMwgK21e.mjs';
4
+ import { s as sharedProjectsClient } from './client-B161HwAk.mjs';
5
5
  import { unlink } from 'node:fs/promises';
6
6
  import { p as publishForkBackfillWhenCommitted, F as FORK_BACKFILL_CAPABILITY } from './forkBackfill-DYIjlN1Z.mjs';
7
7
  import { randomUUID } from 'node:crypto';
8
8
  import { createId } from '@paralleldrive/cuid2';
9
- import { t as textResultPayload, d as toolResultContentText, c as connectionState, A as ApiClient } from './api-cVvbFZVK.mjs';
9
+ import { t as textResultPayload, d as toolResultContentText, c as connectionState, A as ApiClient } from './api-B0yN68XH.mjs';
10
10
  import { r as registerAgentAttachmentDownloads } from './agentAttachments-M_B5qEF2.mjs';
11
- import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-NNF-Eo4O.mjs';
11
+ import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-CcIdMfAx.mjs';
12
12
  import { useStdout, useInput, Box, Text, render } from 'ink';
13
- import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, e as exitCursorStamp } from './sessionLock-DhzB5ZI9.mjs';
13
+ import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, e as exitCursorStamp } from './sessionLock-tEFvFXLD.mjs';
14
14
  import React, { useState, useRef, useEffect, useCallback } from 'react';
15
- import { C as CodexAppServerClient } from './codexAppServerClient-Csc-XsRV.mjs';
16
- import { p as parseSpecialCommand, w as wrapperRateLimitReporter } from './specialCommands-CTtmGCCf.mjs';
17
- import { l as logger } from './logger-SAU4uSs4.mjs';
18
- import { B as BasePermissionHandler } from './BasePermissionHandler-Bk9DmVZH.mjs';
19
- import { B as BaseReasoningProcessor, s as settleCodexSession } from './codexTermination-lOO15mt2.mjs';
15
+ import { C as CodexAppServerClient } from './codexAppServerClient-BlVmpjR-.mjs';
16
+ import { w as wrapperRateLimitReporter } from './rateLimitReporter-DR5LXuiQ.mjs';
17
+ import { l as logger } from './logger-DOKH3Zbh.mjs';
18
+ import { B as BasePermissionHandler } from './BasePermissionHandler-CVtH-snr.mjs';
19
+ import { B as BaseReasoningProcessor, s as settleCodexSession } from './codexTermination-BvGlN02_.mjs';
20
20
  import { execSync } from 'node:child_process';
21
- import { r as readSettings, l as latchKeepAwake, e as evaluateWrapperIdle, a as resolveCheckMs, H as HIBERNATION_CAPABILITY } from './persistence-C7T3HYjq.mjs';
22
- import { g as getInitialMachineMetadata } from './machineMetadata-ZVnihOuL.mjs';
23
- import { c as configuration } from './configuration-8EAa2X9P.mjs';
24
- import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-DMPrrNKX.mjs';
21
+ import { r as readSettings, l as latchKeepAwake, e as evaluateWrapperIdle, a as resolveCheckMs, H as HIBERNATION_CAPABILITY } from './persistence-0INrP3aB.mjs';
22
+ import { g as getInitialMachineMetadata } from './machineMetadata-D-5qeIqd.mjs';
23
+ import { c as configuration } from './configuration-1FabKklB.mjs';
24
+ import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-CSCTRIbI.mjs';
25
25
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
26
26
  import { join } from 'node:path';
27
- import { c as createSessionMetadata } from './createSessionMetadata-HlzlfP0U.mjs';
27
+ import { c as createSessionMetadata } from './createSessionMetadata-CG6Klinp.mjs';
28
28
  import { M as MessageBuffer } from './sessionExitLifecycle-CzkLIgNZ.mjs';
29
- import { n as notifyDaemonSessionStarted, k as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient-O-vf2MkJ.mjs';
30
- import { a as HibernationExitLatch, H as HibernationProbe, c as commitHibernation, b as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-BPDeX4S8.mjs';
29
+ import { n as notifyDaemonSessionStarted, k as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient-DwNnNAUx.mjs';
30
+ import { a as HibernationExitLatch, H as HibernationProbe, c as commitHibernation, b as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-e2bIIJG4.mjs';
31
31
  import { d as decodeBase64, e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
32
- import { s as setupOfflineReconnection } from './setupOfflineReconnection-UApZjcU5.mjs';
33
- import { c as createSessionForStartup } from './startupSessionCreate-CJFR_Zom.mjs';
32
+ import { s as setupOfflineReconnection } from './setupOfflineReconnection-B7I8R2Ex.mjs';
33
+ import { c as createSessionForStartup } from './startupSessionCreate-npXe2TdN.mjs';
34
34
  import { t as trimIdent } from './trimIdent-BAjmv_TG.mjs';
35
+ import { a as parseSpecialCommand, c as compactCommandText, b as parseCompact } from './specialCommands-MXUN0wfI.mjs';
35
36
  import { C as CHANGE_TITLE_INSTRUCTION } from './constants-BC4St0xd.mjs';
36
37
  import { E as EditReportThrottle, a as extractCodexPatchPaths } from './editPaths-BVfS_FFL.mjs';
37
- import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-Cv0AMaHK.mjs';
38
+ import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-DZq8bvsp.mjs';
38
39
  import 'tweetnacl';
39
40
  import 'axios';
40
- import './time-DjS5me2q.mjs';
41
- import './browser-CLsM513o.mjs';
41
+ import './time-CUK37wiV.mjs';
42
+ import './browser-vb0k1zfI.mjs';
42
43
  import 'open';
43
44
  import 'zod';
44
45
  import './prompt-QHuFx9j6.mjs';
45
- import './reportProgressTool-irHR-XEW.mjs';
46
- import './client-Zqg7DXHl.mjs';
46
+ import './reportProgressTool-B7zmX7NJ.mjs';
47
+ import './client-CvjjadIE.mjs';
47
48
  import './precheckCompat-DeEbilbr.mjs';
48
49
  import './agentGuidance-BDYt2Qy2.mjs';
49
50
  import 'node:fs';
50
51
  import 'node:os';
51
52
  import './pi-CqyoZMjI.mjs';
52
53
  import './fileStore-5qpetZS0.mjs';
53
- import './client-D8p1YjVt.mjs';
54
+ import './client-C9Ecbtko.mjs';
54
55
  import 'node:util';
55
- import './context-B-jybQhf.mjs';
56
- import './sessionOps-CiFjBCMa.mjs';
56
+ import './context-BgxbXWKS.mjs';
57
+ import './sessionOps-CljctDs5.mjs';
57
58
  import 'socket.io-client';
58
59
  import './backgroundTaskActivity-8PdPxrvy.mjs';
59
60
  import './resources-CLP_MpK4.mjs';
60
- import './tools-B_W7xJNh.mjs';
61
- import './peerTools-CyruQrOo.mjs';
61
+ import './tools-CCIEAVbB.mjs';
62
+ import './peerTools-BtrUnSwz.mjs';
62
63
  import './ids-DU6sLx4C.mjs';
63
- import './remoteSessionClient-D3XhN_sd.mjs';
64
+ import './remoteSessionClient-Vfj_5g2-.mjs';
64
65
  import '@modelcontextprotocol/sdk/server/mcp.js';
65
66
  import 'node:http';
66
67
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
67
68
  import './limits-DIo7rEBR.mjs';
68
- import './downloadTarget-ByTxs_N5.mjs';
69
+ import './downloadTarget-C6tqaXGm.mjs';
69
70
  import './terminals-Dlg0x3nY.mjs';
70
71
  import './terminalTitleSuggest-CeKsX_V6.mjs';
71
72
  import './tmuxSocket-B8Yx20sT.mjs';
72
- import './bootstrap-CndcegDb.mjs';
73
- import './package-BMBwnCn3.mjs';
73
+ import './bootstrap-DfXwkUQb.mjs';
74
+ import './package-DTcaIhjW.mjs';
74
75
  import './webPanels-B2_C2-3g.mjs';
75
- import './pushNotifications-Bi72c41d.mjs';
76
+ import './pushNotifications-Cq1s8YVK.mjs';
76
77
  import './contentLogMetadata-BlWI0egu.mjs';
77
78
  import './previewPath-CXN4Vag0.mjs';
78
79
  import 'crypto';
79
- import './lidState-LtdUCXi-.mjs';
80
+ import './lidState-q5Its2Hm.mjs';
80
81
  import 'os';
81
82
  import 'child_process';
82
83
  import 'node:events';
83
- import './registerCommonHandlers-qzb6TQqo.mjs';
84
+ import './registerCommonHandlers-DWkTysjD.mjs';
84
85
  import 'util';
85
86
  import 'fs/promises';
86
87
  import 'path';
87
88
  import 'cross-spawn';
88
- import './sync-BWX1OVQi.mjs';
89
+ import './sync-BvDMkKAN.mjs';
89
90
  import 'chalk';
90
91
  import './processTreeSnapshot-CuLJDNC-.mjs';
91
92
  import 'node:readline';
92
93
  import './manager-BEsI4qt3.mjs';
93
94
  import '@anthropic-ai/sandbox-runtime';
94
- import './rateLimitWindows-B6IAWYN5.mjs';
95
+ import './rateLimitWindows-5vIuNjko.mjs';
95
96
  import './processTree-CP5IvQ2Z.mjs';
96
97
  import './detectCLI-CSGMlV51.mjs';
97
98
  import 'fs';
98
- import './localHappyAgentAuth-DqFE0Adr.mjs';
99
+ import './localHappyAgentAuth-C_G5u5lY.mjs';
99
100
  import './fsMkdir-DumgLTzR.mjs';
100
101
  import './types-CkqAACXx.mjs';
101
102
  import 'url';
102
- import './spawnHappyCLI-Dp05fHcp.mjs';
103
+ import './spawnHappyCLI-CEsXwz5V.mjs';
103
104
  import './doctorReadiness-C208SMN9.mjs';
104
105
 
105
106
  function getStartedSubagents(state) {
@@ -1094,6 +1095,19 @@ function unsupportedEffortReason(catalog, model, effort) {
1094
1095
  return `Reasoning effort "${effort}" is not supported by ${model ?? "the default model"}. Choose a supported level.`;
1095
1096
  }
1096
1097
 
1098
+ function resolveCodexTurnModel(mode, machineDefault) {
1099
+ if (mode.model) return mode.model;
1100
+ return mode.modelReset ? machineDefault || void 0 : void 0;
1101
+ }
1102
+ function codexModelFacts(input) {
1103
+ const { threadModel, pendingModel, machineDefault } = input;
1104
+ if (!threadModel) return { stickyModel: pendingModel ?? null };
1105
+ return {
1106
+ stickyModel: threadModel !== machineDefault ? threadModel : null,
1107
+ currentModelCode: threadModel
1108
+ };
1109
+ }
1110
+
1097
1111
  const UNEXPECTED_STATUS = /^unexpected status (\d{3}) ([^:]*?):\s*([\s\S]*?)(?:,\s*url:\s*(\S+))?$/;
1098
1112
  function readableCodexErrorText(text) {
1099
1113
  const trimmed = text.trim();
@@ -1305,15 +1319,51 @@ class CodexIdleReleaseTimer {
1305
1319
  function isCodexClearText(text) {
1306
1320
  return parseSpecialCommand(text).type === "clear";
1307
1321
  }
1322
+ function codexCompactCommand(text) {
1323
+ return compactCommandText(text);
1324
+ }
1325
+ function isCodexControlText(text) {
1326
+ return isCodexClearText(text) || codexCompactCommand(text) !== null;
1327
+ }
1308
1328
  function enqueueCodexUserText(opts) {
1309
1329
  if (isCodexClearText(opts.text)) {
1310
1330
  opts.queue.pushIsolateAndClear(opts.text, opts.mode, opts.attachments, opts.sourceId);
1311
1331
  return "clear";
1312
1332
  }
1333
+ const compact = codexCompactCommand(opts.text);
1334
+ if (compact !== null) {
1335
+ opts.queue.pushIsolate(compact, opts.mode, opts.attachments, opts.sourceId);
1336
+ return "compact";
1337
+ }
1313
1338
  opts.queue.push(opts.text, opts.mode, opts.attachments, opts.sourceId);
1314
1339
  return "queued";
1315
1340
  }
1316
1341
 
1342
+ async function runCodexCompact(command, deps) {
1343
+ if (!deps.client.hasActiveThread()) {
1344
+ deps.notify("Compaction failed: there is no conversation to compact yet");
1345
+ return "no-thread";
1346
+ }
1347
+ const instructions = parseCompact(command).originalMessage.slice("/compact".length).trim();
1348
+ if (instructions) {
1349
+ deps.notify("Codex does not take compaction instructions; compacting the whole conversation");
1350
+ }
1351
+ deps.notify("Compaction started");
1352
+ try {
1353
+ const result = await deps.client.compactThreadAndWait();
1354
+ if (result.aborted) return "aborted";
1355
+ if (result.failed) {
1356
+ deps.notify("Compaction failed: Codex could not compact the conversation");
1357
+ return "failed";
1358
+ }
1359
+ deps.notify("Compaction completed");
1360
+ return "completed";
1361
+ } catch (error) {
1362
+ deps.notify(`Compaction failed: ${error instanceof Error ? error.message : String(error)}`);
1363
+ return "failed";
1364
+ }
1365
+ }
1366
+
1317
1367
  async function steerIntoRunningTurn(deps, text, attachments, localKey) {
1318
1368
  if (!deps.ownsTurn()) return false;
1319
1369
  const staged = attachments?.length ? await deps.stage(attachments) : [];
@@ -1339,6 +1389,7 @@ function hashCodexEnhancedMode(mode) {
1339
1389
  return hashObject({
1340
1390
  permissionMode: mode.permissionMode,
1341
1391
  model: mode.model,
1392
+ modelReset: mode.modelReset,
1342
1393
  appendSystemPrompt: mode.appendSystemPrompt,
1343
1394
  effort: mode.effort
1344
1395
  });
@@ -1392,7 +1443,17 @@ function safeCodexErrorMetadata(value) {
1392
1443
  };
1393
1444
  }
1394
1445
 
1395
- const DEFAULT_CODEX_MODEL = "gpt-5.5";
1446
+ const CODEX_REMOTE_PERMISSION_MODES = [
1447
+ "default",
1448
+ "read-only",
1449
+ "safe-yolo",
1450
+ "yolo"
1451
+ ];
1452
+ function codexPublishablePermissionMode(mode) {
1453
+ return typeof mode === "string" && CODEX_REMOTE_PERMISSION_MODES.includes(mode) ? mode : null;
1454
+ }
1455
+
1456
+ const DEFAULT_CODEX_MODEL = void 0;
1396
1457
  const DEFAULT_CODEX_EFFORT = "medium";
1397
1458
  async function runCodex(opts) {
1398
1459
  try {
@@ -1436,9 +1497,11 @@ async function runCodex(opts) {
1436
1497
  dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
1437
1498
  ...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
1438
1499
  ...forkedFromMessageId ? { forkedFromMessageId } : {},
1439
- capabilities: [PROMPT_QUEUE_CAPABILITY, FORK_BACKFILL_CAPABILITY, HIBERNATION_CAPABILITY, CODEX_STEER_CAPABILITY, PROJECT_SESSION_CAPABILITY]
1500
+ capabilities: [PROMPT_QUEUE_CAPABILITY, FORK_BACKFILL_CAPABILITY, HIBERNATION_CAPABILITY, CODEX_STEER_CAPABILITY, PROJECT_SESSION_CAPABILITY, CODEX_COMPACT_CAPABILITY]
1440
1501
  });
1441
1502
  metadata.attachmentKinds = [...CLAUDE_ATTACHMENT_KINDS];
1503
+ metadata.stickyModel = null;
1504
+ metadata.currentThoughtLevelCode = DEFAULT_CODEX_EFFORT;
1442
1505
  const importCodexThreadId = process.env[IMPORT_CODEX_THREAD_ENV];
1443
1506
  if (importCodexThreadId) {
1444
1507
  metadata.importedFromCodexThreadId = importCodexThreadId;
@@ -1555,20 +1618,43 @@ async function runCodex(opts) {
1555
1618
  let currentModel = DEFAULT_CODEX_MODEL;
1556
1619
  let currentEffort = DEFAULT_CODEX_EFFORT;
1557
1620
  let currentAppendSystemPrompt = void 0;
1621
+ let reportedStickyModel = null;
1622
+ let reportedCurrentModel;
1623
+ let reportedEffort = DEFAULT_CODEX_EFFORT;
1624
+ const reportModeFacts = () => {
1625
+ const facts = codexModelFacts({ threadModel: client.threadModel, pendingModel: currentModel, machineDefault: machineDefaultModel });
1626
+ const effort = currentEffort;
1627
+ if (facts.stickyModel === reportedStickyModel && facts.currentModelCode === reportedCurrentModel && effort === reportedEffort) return;
1628
+ reportedStickyModel = facts.stickyModel;
1629
+ reportedCurrentModel = facts.currentModelCode;
1630
+ reportedEffort = effort;
1631
+ session.updateMetadata((metadata2) => {
1632
+ const { currentThoughtLevelCode: _previous, currentModelCode: _model, ...rest } = metadata2;
1633
+ return {
1634
+ ...rest,
1635
+ stickyModel: facts.stickyModel,
1636
+ ...facts.currentModelCode ? { currentModelCode: facts.currentModelCode } : {},
1637
+ ...effort ? { currentThoughtLevelCode: effort } : {}
1638
+ };
1639
+ });
1640
+ };
1558
1641
  const resetCurrentModeDefaults = () => {
1559
- currentPermissionMode = DEFAULT_CODEX_PERMISSION_MODE;
1560
- currentModel = DEFAULT_CODEX_MODEL;
1561
1642
  currentEffort = DEFAULT_CODEX_EFFORT;
1643
+ reportModeFacts();
1562
1644
  currentAppendSystemPrompt = void 0;
1563
1645
  logger.debug("[Codex] Reset current mode defaults after abort");
1564
1646
  };
1565
- const VALID_REMOTE_PERMISSION_MODES = [
1566
- "default",
1567
- "read-only",
1568
- "safe-yolo",
1569
- "yolo"
1570
- ];
1647
+ const VALID_REMOTE_PERMISSION_MODES = CODEX_REMOTE_PERMISSION_MODES;
1648
+ let publishedPermissionMode = null;
1649
+ const publishPermissionMode = (mode) => {
1650
+ const publishable = codexPublishablePermissionMode(mode);
1651
+ if (!publishable || publishable === publishedPermissionMode) return;
1652
+ publishedPermissionMode = publishable;
1653
+ session.updateMetadata((currentMetadata) => ({ ...currentMetadata, permissionMode: publishable }));
1654
+ };
1655
+ publishPermissionMode(opts.permissionMode);
1571
1656
  let discoveredModels = [];
1657
+ let machineDefaultModel;
1572
1658
  registerAgentAttachmentDownloads(session);
1573
1659
  const CODEX_IMAGE_MIME_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp"];
1574
1660
  const steerDeps = {
@@ -1595,6 +1681,7 @@ async function runCodex(opts) {
1595
1681
  if (VALID_REMOTE_PERMISSION_MODES.includes(incoming)) {
1596
1682
  messagePermissionMode = incoming;
1597
1683
  currentPermissionMode = messagePermissionMode;
1684
+ publishPermissionMode(incoming);
1598
1685
  logger.debug("[Codex] Valid permission mode override applied");
1599
1686
  } else {
1600
1687
  logger.debug("[Codex] Ignoring invalid permission mode override", logValueMetadata(message.meta.permissionMode));
@@ -1603,9 +1690,12 @@ async function runCodex(opts) {
1603
1690
  logger.debug("[Codex] User message received without a permission mode override");
1604
1691
  }
1605
1692
  let messageModel = currentModel;
1693
+ let messageModelReset = false;
1606
1694
  if (message.meta?.hasOwnProperty("model")) {
1607
1695
  messageModel = message.meta.model || void 0;
1696
+ messageModelReset = !messageModel;
1608
1697
  currentModel = messageModel;
1698
+ reportModeFacts();
1609
1699
  logger.debug("[Codex] Model override updated", logValueMetadata(message.meta.model));
1610
1700
  } else {
1611
1701
  logger.debug("[Codex] User message received without a model override");
@@ -1616,10 +1706,12 @@ async function runCodex(opts) {
1616
1706
  if (incoming === null || incoming === void 0) {
1617
1707
  messageEffort = void 0;
1618
1708
  currentEffort = void 0;
1709
+ reportModeFacts();
1619
1710
  logger.debug(`[Codex] Effort reset to default`);
1620
1711
  } else if (typeof incoming === "string") {
1621
1712
  messageEffort = incoming;
1622
1713
  currentEffort = messageEffort;
1714
+ reportModeFacts();
1623
1715
  logger.debug("[Codex] Valid effort override applied");
1624
1716
  } else {
1625
1717
  logger.debug("[Codex] Ignoring invalid effort override", logValueMetadata(incoming));
@@ -1638,10 +1730,11 @@ async function runCodex(opts) {
1638
1730
  const enhancedMode = {
1639
1731
  permissionMode: messagePermissionMode || "default",
1640
1732
  model: messageModel,
1733
+ ...messageModelReset ? { modelReset: true } : {},
1641
1734
  appendSystemPrompt: messageAppendSystemPrompt,
1642
1735
  effort: messageEffort
1643
1736
  };
1644
- if (message.meta?.delivery === "steer" && !isCodexClearText(message.content.text)) {
1737
+ if (message.meta?.delivery === "steer" && !isCodexControlText(message.content.text)) {
1645
1738
  if (await steerIntoRunningTurn(steerDeps, message.content.text, attachments, message.localKey)) {
1646
1739
  logger.debug("[Codex] User message steered into the current turn");
1647
1740
  return;
@@ -1654,8 +1747,8 @@ async function runCodex(opts) {
1654
1747
  attachments,
1655
1748
  sourceId: message.localKey
1656
1749
  });
1657
- if (enqueueResult === "clear") {
1658
- logger.debug("[Codex] /clear command pushed to isolated queue");
1750
+ if (enqueueResult === "clear" || enqueueResult === "compact") {
1751
+ logger.debug(`[Codex] /${enqueueResult} command pushed to isolated queue`);
1659
1752
  }
1660
1753
  }).catch((error) => {
1661
1754
  logger.warn("[Codex] Failed to prepare user attachments", safeCodexErrorMetadata(error));
@@ -1982,17 +2075,27 @@ async function runCodex(opts) {
1982
2075
  logger.debug("[codex]: client.connect done");
1983
2076
  try {
1984
2077
  discoveredModels = await client.listModels();
1985
- if (discoveredModels.length > 0) {
2078
+ let configured = null;
2079
+ try {
2080
+ configured = { model: await client.readConfiguredModel(process.cwd()) };
2081
+ } catch (error) {
2082
+ logger.debug("[Codex] config/read unavailable", safeCodexErrorMetadata(error));
2083
+ }
2084
+ machineDefaultModel = configured?.model ?? discoveredModels.find((model) => model.isDefault)?.model;
2085
+ if (discoveredModels.length > 0 || configured) {
1986
2086
  session.updateMetadata((metadata2) => ({
1987
2087
  ...metadata2,
1988
- models: discoveredModels.map((model) => ({
1989
- code: model.model,
1990
- value: model.displayName,
1991
- description: model.description,
1992
- reasoningEfforts: model.supportedReasoningEfforts.map((option) => option.reasoningEffort),
1993
- defaultReasoningEffort: model.defaultReasoningEffort
1994
- })),
1995
- defaultModelCode: discoveredModels.find((model) => model.isDefault)?.model
2088
+ ...discoveredModels.length > 0 ? {
2089
+ models: discoveredModels.map((model) => ({
2090
+ code: model.model,
2091
+ value: model.displayName,
2092
+ description: model.description,
2093
+ reasoningEfforts: model.supportedReasoningEfforts.map((option) => option.reasoningEffort),
2094
+ defaultReasoningEffort: model.defaultReasoningEffort
2095
+ }))
2096
+ } : {},
2097
+ defaultModelCode: configured?.model ?? discoveredModels.find((model) => model.isDefault)?.model,
2098
+ ...configured ? { configuredModel: configured.model } : {}
1996
2099
  }));
1997
2100
  }
1998
2101
  } catch (error) {
@@ -2022,6 +2125,7 @@ async function runCodex(opts) {
2022
2125
  first = false;
2023
2126
  appendSystemPromptInjected = true;
2024
2127
  }
2128
+ reportModeFacts();
2025
2129
  const forkCodexThreadId = process.env.HAPPY_FORK_CODEX_THREAD_ID;
2026
2130
  if (!reconnectSessionId && forkCodexThreadId) {
2027
2131
  try {
@@ -2132,6 +2236,7 @@ async function runCodex(opts) {
2132
2236
  reasoningProcessor.abort();
2133
2237
  diffProcessor.reset();
2134
2238
  appendSystemPromptInjected = false;
2239
+ projectInjector.reset();
2135
2240
  thinking = false;
2136
2241
  session.keepAlive(thinking, "remote");
2137
2242
  messageBuffer.addMessage("Context was reset", "status");
@@ -2153,20 +2258,34 @@ async function runCodex(opts) {
2153
2258
  continue;
2154
2259
  }
2155
2260
  messageBuffer.addMessage(message.message, "user");
2261
+ const compactCommand = codexCompactCommand(message.message);
2156
2262
  try {
2263
+ if (compactCommand !== null) {
2264
+ await client.ensureConnected();
2265
+ const outcome = await runCodexCompact(compactCommand, {
2266
+ client,
2267
+ notify: (text) => {
2268
+ messageBuffer.addMessage(text, "status");
2269
+ session.sendSessionEvent({ type: "message", message: text });
2270
+ }
2271
+ });
2272
+ logger.debug(`[Codex] /compact ${outcome}`);
2273
+ continue;
2274
+ }
2157
2275
  await client.ensureConnected();
2158
2276
  const sandboxManagedByHappy = client.sandboxEnabled;
2159
2277
  const executionPolicy = resolveCodexExecutionPolicy(
2160
2278
  message.mode.permissionMode,
2161
2279
  sandboxManagedByHappy
2162
2280
  );
2163
- const effortRefusal = unsupportedEffortReason(discoveredModels, message.mode.model, message.mode.effort);
2281
+ const turnModel = resolveCodexTurnModel(message.mode, machineDefaultModel);
2282
+ const effortRefusal = unsupportedEffortReason(discoveredModels, turnModel ?? client.threadModel ?? machineDefaultModel, message.mode.effort);
2164
2283
  if (effortRefusal) {
2165
2284
  throw new Error(effortRefusal);
2166
2285
  }
2167
2286
  if (!client.hasActiveThread()) {
2168
2287
  const startedThread = await client.startThread({
2169
- model: message.mode.model,
2288
+ model: turnModel,
2170
2289
  cwd: process.cwd(),
2171
2290
  approvalPolicy: executionPolicy.approvalPolicy,
2172
2291
  sandbox: executionPolicy.sandbox,
@@ -2176,6 +2295,7 @@ async function runCodex(opts) {
2176
2295
  ...currentMetadata,
2177
2296
  codexThreadId: startedThread.threadId
2178
2297
  }));
2298
+ reportModeFacts();
2179
2299
  }
2180
2300
  const includeAppendSystemPrompt = Boolean(
2181
2301
  message.mode.appendSystemPrompt && !appendSystemPromptInjected
@@ -2192,11 +2312,12 @@ async function runCodex(opts) {
2192
2312
  }) : [];
2193
2313
  const result = await client.sendTurnAndWait(appendStagedAttachmentsToPrompt(turnPrompt, staged), {
2194
2314
  images: staged.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => file.path),
2195
- model: message.mode.model,
2315
+ model: turnModel,
2196
2316
  approvalPolicy: executionPolicy.approvalPolicy,
2197
2317
  sandbox: executionPolicy.sandbox,
2198
2318
  effort: message.mode.effort
2199
2319
  });
2320
+ reportModeFacts();
2200
2321
  first = false;
2201
2322
  if (includeAppendSystemPrompt) {
2202
2323
  appendSystemPromptInjected = true;
@@ -1,5 +1,5 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import { l as logger } from './logger-SAU4uSs4.mjs';
2
+ import { l as logger } from './logger-DOKH3Zbh.mjs';
3
3
  import { O as OFFLINE_EXIT_STAMP_TIMEOUT_MS } from './sessionExitLifecycle-CzkLIgNZ.mjs';
4
4
 
5
5
  class BaseReasoningProcessor {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var node_crypto = require('node:crypto');
4
- var logger = require('./logger-BILSzq2s.cjs');
4
+ var logger = require('./logger-BP1SW7Cs.cjs');
5
5
  var sessionExitLifecycle = require('./sessionExitLifecycle-DFltxXU8.cjs');
6
6
 
7
7
  class BaseReasoningProcessor {
@@ -4,15 +4,15 @@ var require$$0 = require('fs');
4
4
  var require$$1 = require('path');
5
5
  var os = require('os');
6
6
  var child_process = require('child_process');
7
- var logger = require('./logger-BILSzq2s.cjs');
7
+ var logger = require('./logger-BP1SW7Cs.cjs');
8
8
  var constants = require('./constants-VJ0N6WuG.cjs');
9
9
  require('chalk');
10
10
  require('node:util');
11
- require('./configuration-CAfdO4IC.cjs');
11
+ require('./configuration-C0ctLGW2.cjs');
12
12
  require('node:fs');
13
13
  require('node:os');
14
14
  require('node:path');
15
- require('./package-Bbfq2KR7.cjs');
15
+ require('./package-CYDdLA6R.cjs');
16
16
  require('node:fs/promises');
17
17
  require('./trimIdent-4gvk9Wk6.cjs');
18
18
 
@@ -2,15 +2,15 @@ import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import { homedir } from 'os';
4
4
  import { execSync } from 'child_process';
5
- import { l as logger } from './logger-SAU4uSs4.mjs';
5
+ import { l as logger } from './logger-DOKH3Zbh.mjs';
6
6
  import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './constants-BC4St0xd.mjs';
7
7
  import 'chalk';
8
8
  import 'node:util';
9
- import './configuration-8EAa2X9P.mjs';
9
+ import './configuration-1FabKklB.mjs';
10
10
  import 'node:fs';
11
11
  import 'node:os';
12
12
  import 'node:path';
13
- import './package-BMBwnCn3.mjs';
13
+ import './package-DTcaIhjW.mjs';
14
14
  import 'node:fs/promises';
15
15
  import './trimIdent-BAjmv_TG.mjs';
16
16
 
@@ -1,7 +1,7 @@
1
1
  import { mkdirSync, chmodSync, readdirSync, statSync, appendFileSync, writeFileSync, existsSync, readFileSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
- import { p as packageJson } from './package-BMBwnCn3.mjs';
4
+ import { p as packageJson } from './package-DTcaIhjW.mjs';
5
5
  import { mkdir, chmod, writeFile } from 'node:fs/promises';
6
6
 
7
7
  const PRIVATE_DIRECTORY_MODE = 448;
@@ -3,7 +3,7 @@
3
3
  var node_fs = require('node:fs');
4
4
  var os = require('node:os');
5
5
  var path = require('node:path');
6
- var _package = require('./package-Bbfq2KR7.cjs');
6
+ var _package = require('./package-CYDdLA6R.cjs');
7
7
  var promises = require('node:fs/promises');
8
8
 
9
9
  const PRIVATE_DIRECTORY_MODE = 448;
@@ -1,12 +1,12 @@
1
1
  import chalk from 'chalk';
2
2
  import { homedir } from 'os';
3
3
  import { join } from 'path';
4
- import { b as readCredentialsForConfiguredRelay } from './persistence-C7T3HYjq.mjs';
5
- import { A as ApiClient } from './api-cVvbFZVK.mjs';
6
- import { f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-8EAa2X9P.mjs';
4
+ import { b as readCredentialsForConfiguredRelay } from './persistence-0INrP3aB.mjs';
5
+ import { A as ApiClient } from './api-B0yN68XH.mjs';
6
+ import { f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-1FabKklB.mjs';
7
7
  import { createServer } from 'http';
8
8
  import { randomBytes, createHash } from 'crypto';
9
- import { o as openBrowser } from './browser-CLsM513o.mjs';
9
+ import { o as openBrowser } from './browser-vb0k1zfI.mjs';
10
10
  import { exec } from 'child_process';
11
11
  import { promisify } from 'util';
12
12
  import 'node:fs/promises';
@@ -15,29 +15,29 @@ import 'zod';
15
15
  import './authRelay-DhQhkBvX.mjs';
16
16
  import 'node:crypto';
17
17
  import 'tweetnacl';
18
- import './logger-SAU4uSs4.mjs';
18
+ import './logger-DOKH3Zbh.mjs';
19
19
  import 'node:util';
20
20
  import 'node:path';
21
21
  import 'axios';
22
- import './lidState-LtdUCXi-.mjs';
22
+ import './lidState-q5Its2Hm.mjs';
23
23
  import 'node:events';
24
24
  import 'socket.io-client';
25
- import './pushNotifications-Bi72c41d.mjs';
26
- import './index-B9f1vKcC.mjs';
25
+ import './pushNotifications-Cq1s8YVK.mjs';
26
+ import './index-WKyN-bNy.mjs';
27
27
  import '@paralleldrive/cuid2';
28
28
  import './contentLogMetadata-BlWI0egu.mjs';
29
29
  import './limits-DIo7rEBR.mjs';
30
- import './time-DjS5me2q.mjs';
31
- import './registerCommonHandlers-qzb6TQqo.mjs';
30
+ import './time-CUK37wiV.mjs';
31
+ import './registerCommonHandlers-DWkTysjD.mjs';
32
32
  import 'fs/promises';
33
33
  import 'cross-spawn';
34
34
  import './projectPath-BTBIMB57.mjs';
35
35
  import 'url';
36
- import './sync-BWX1OVQi.mjs';
36
+ import './sync-BvDMkKAN.mjs';
37
37
  import './backgroundTaskActivity-8PdPxrvy.mjs';
38
- import './controlClient-O-vf2MkJ.mjs';
38
+ import './controlClient-DwNnNAUx.mjs';
39
39
  import 'node:os';
40
- import './package-BMBwnCn3.mjs';
40
+ import './package-DTcaIhjW.mjs';
41
41
  import 'open';
42
42
 
43
43
  const CLIENT_ID$2 = "app_EMoamEEZ73f0CkXaXp7hrann";