very-happy-cli 0.2.192 → 0.2.193

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 (208) hide show
  1. package/dist/{AcpBackend-CGHTDJd9.mjs → AcpBackend-B4PwjqHt.mjs} +3 -3
  2. package/dist/{AcpBackend-BQO4ShOy.cjs → AcpBackend-DtJCgftG.cjs} +3 -3
  3. package/dist/{AcpSessionManager-G0xD6Jbq.mjs → AcpSessionManager-BzKWgkdP.mjs} +2 -2
  4. package/dist/{AcpSessionManager-LlUMmcpB.cjs → AcpSessionManager-D4qshX_H.cjs} +2 -2
  5. package/dist/{BasePermissionHandler-N6Ip3tFt.cjs → BasePermissionHandler-5iG-cvA2.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-BmTIg376.mjs → BasePermissionHandler-DV6UM6e9.mjs} +1 -1
  7. package/dist/{account-CCVT-HO_.mjs → account-Dco_nGT4.mjs} +84 -27
  8. package/dist/{account-DtaouikP.cjs → account-DvpA60oU.cjs} +84 -27
  9. package/dist/{accountService-Dd9uqde2.mjs → accountService-Cd7bnkfd.mjs} +369 -19
  10. package/dist/{accountService-Bddy0zwL.cjs → accountService-CuUSJDhP.cjs} +369 -19
  11. package/dist/{acpSessionResume-BnHDk5eD.cjs → acpSessionResume-Bk9mjXZ9.cjs} +1 -1
  12. package/dist/{acpSessionResume-BWEUxNtC.mjs → acpSessionResume-TQwN9ZZE.mjs} +1 -1
  13. package/dist/{agentHome-B0VnjkZW.mjs → agentHome-Bep8semY.mjs} +4 -4
  14. package/dist/{agentHome-CqQ29YY7.cjs → agentHome-c2dlgcw1.cjs} +4 -4
  15. package/dist/{api-hMDsC6Wg.cjs → api-CBE_a88I.cjs} +10 -10
  16. package/dist/{api-_LeBScjg.mjs → api-DUfunY3x.mjs} +10 -10
  17. package/dist/{apiMachine-CqW2m6Zr.cjs → apiMachine-BqtG0IWm.cjs} +19 -18
  18. package/dist/{apiMachine-CgRldeJ6.mjs → apiMachine-CU_bw5nV.mjs} +19 -18
  19. package/dist/{attachmentContent-BEeT2J5n.cjs → attachmentContent-B3AzuYqk.cjs} +2 -2
  20. package/dist/{attachmentContent-CyptLIfq.mjs → attachmentContent-KNIZxwlu.mjs} +2 -2
  21. package/dist/{auth-CFQikywl.mjs → auth-CZ7pKS-j.mjs} +8 -8
  22. package/dist/{auth-C9NvNHhL.cjs → auth-DCjxpI6Z.cjs} +5 -5
  23. package/dist/{auth-CA1OClsW.cjs → auth-SJ_dPw7H.cjs} +8 -8
  24. package/dist/{auth-DL8_J9vu.mjs → auth-jN5dNqTO.mjs} +5 -5
  25. package/dist/{auto-uQOxlxLp.cjs → auto-B_59RYH1.cjs} +23 -21
  26. package/dist/{auto-CKI05w1D.mjs → auto-DC0Sq-qB.mjs} +23 -21
  27. package/dist/{bootstrap-DaZ0Np7X.mjs → bootstrap-B3gMpU9e.mjs} +2 -2
  28. package/dist/{bootstrap-DsZGc69k.cjs → bootstrap-CoJu9VnB.cjs} +2 -2
  29. package/dist/{browser-BUIaSHK2.mjs → browser-LHW2hBH8.mjs} +1 -1
  30. package/dist/{browser-Ft0ASDm7.cjs → browser-v1pdPP1E.cjs} +1 -1
  31. package/dist/{claudeAccountEnv-ON24i0qv.mjs → claudeAccountEnv-BL1pR_37.mjs} +2 -1
  32. package/dist/{claudeAccountEnv-BOBpJ3k8.cjs → claudeAccountEnv-CEX_EMZr.cjs} +2 -1
  33. package/dist/{claudeLocal-B1ZVtryl.mjs → claudeLocal-BZUgA5G2.mjs} +5 -5
  34. package/dist/{claudeLocal-BMf9t4Fa.cjs → claudeLocal-BrzM2RBI.cjs} +5 -5
  35. package/dist/{claudeLocalLauncher-Bp8bqF4y.mjs → claudeLocalLauncher-A0AQyHFi.mjs} +10 -10
  36. package/dist/{claudeLocalLauncher-C8TeJcfF.cjs → claudeLocalLauncher-XAMpXUM7.cjs} +10 -10
  37. package/dist/{claudeSessionFork-YiktY55n.cjs → claudeSessionFork-Mhn2fYe_.cjs} +1 -1
  38. package/dist/{claudeSessionFork-8AA47z8Y.mjs → claudeSessionFork-_GwIlmMB.mjs} +1 -1
  39. package/dist/{client-Cxlp_D4I.mjs → client-7RnI9J0W.mjs} +2 -2
  40. package/dist/{client-Bm4oKvW7.mjs → client-Bde4QVIn.mjs} +4 -2
  41. package/dist/{client-D8XROyZc.cjs → client-CJr8Pjwm.cjs} +4 -2
  42. package/dist/{client-Crh8_cNx.cjs → client-D2GWkd-T.cjs} +2 -2
  43. package/dist/{client-CFHZfh9x.cjs → client-DLlnmAPL.cjs} +4 -4
  44. package/dist/{client-BmPaBnDK.mjs → client-DwbhrX6D.mjs} +4 -4
  45. package/dist/codex/happyMcpStdioBridge.cjs +16 -16
  46. package/dist/codex/happyMcpStdioBridge.mjs +16 -16
  47. package/dist/codexAccount-BDQjRbtI.cjs +1028 -0
  48. package/dist/codexAccount-NOX5pmQf.mjs +1015 -0
  49. package/dist/{codexAppServerClient-BWJbLCQn.mjs → codexAppServerClient-B3QJV6Ey.mjs} +18 -7
  50. package/dist/{codexAppServerClient-q8GHQhyC.cjs → codexAppServerClient-DWEsZUC4.cjs} +18 -7
  51. package/dist/{codexCommand-BgpGg-Zy.cjs → codexCommand-Bg8AmxVm.cjs} +187 -57
  52. package/dist/{codexCommand-BfXfRQr4.mjs → codexCommand-D1xlj4sT.mjs} +188 -58
  53. package/dist/{codexTermination-CVUF0X75.cjs → codexTermination-ByX9GcEJ.cjs} +1 -1
  54. package/dist/{codexTermination-s9fd1gkA.mjs → codexTermination-CaWAVQjZ.mjs} +1 -1
  55. package/dist/{config-BAjyTyYp.cjs → config-B2GGbiTv.cjs} +3 -3
  56. package/dist/{config-BF8XgLyc.mjs → config-C2XYEwXz.mjs} +3 -3
  57. package/dist/{configuration-CXEVKAyF.cjs → configuration-BBK0rmmj.cjs} +1 -1
  58. package/dist/{configuration-IhRiLDVe.mjs → configuration-ThKBP_zY.mjs} +1 -1
  59. package/dist/{connect-LZh1gr08.mjs → connect-BirnCl9q.mjs} +13 -13
  60. package/dist/{connect-rCS56arw.cjs → connect-C3tZs_NC.cjs} +13 -13
  61. package/dist/{context-DO6F5YwH.mjs → context-C0EFLnOg.mjs} +1 -1
  62. package/dist/{context-3_S_mWz9.cjs → context-wDp0aZBK.cjs} +1 -1
  63. package/dist/{controlClient-8ILulwjc.mjs → controlClient-Ckl8N1MS.mjs} +3 -3
  64. package/dist/{controlClient-j7p5p3_7.cjs → controlClient-DwWTns3A.cjs} +3 -3
  65. package/dist/{createSessionMetadata-DwdD_uVo.cjs → createSessionMetadata-DqZ6h02H.cjs} +2 -2
  66. package/dist/{createSessionMetadata-oyaTZm1b.mjs → createSessionMetadata-vug4Cv8z.mjs} +2 -2
  67. package/dist/{daemonAccounts-BCjDgoNt.cjs → daemonAccounts-CpGDY_4k.cjs} +4 -1
  68. package/dist/{daemonAccounts-BJgt6IJe.mjs → daemonAccounts-DwPwKxvv.mjs} +5 -2
  69. package/dist/{defaultPermissionMode-BFShzF55.cjs → defaultPermissionMode-BakXiqRr.cjs} +1 -1
  70. package/dist/{defaultPermissionMode-Lt3PUCwY.mjs → defaultPermissionMode-DF5AfeBb.mjs} +1 -1
  71. package/dist/{deterministicJson-Dfp-7wUZ.mjs → deterministicJson-BzX94gi3.mjs} +13 -13
  72. package/dist/{deterministicJson-DUN0v3St.cjs → deterministicJson-t33SsuRC.cjs} +13 -13
  73. package/dist/{doctor-FgUYTbAT.cjs → doctor-B9ug1LZb.cjs} +7 -7
  74. package/dist/{doctor-B_UwMcVT.mjs → doctor-C1zyOSXw.mjs} +7 -7
  75. package/dist/{downloadTarget-C0d6jRx-.mjs → downloadTarget-Baslc6jW.mjs} +6 -6
  76. package/dist/{downloadTarget-BrrQEDxg.cjs → downloadTarget-T1id2Gh6.cjs} +6 -6
  77. package/dist/{ensureDaemonRunning-KUMFfIil.mjs → ensureDaemonRunning-C6ERYK-O.mjs} +5 -5
  78. package/dist/{ensureDaemonRunning-Cq4FYI5Q.cjs → ensureDaemonRunning-CoAg11Zi.cjs} +5 -5
  79. package/dist/{handleResumeCommand-BGhVo3QH.mjs → handleResumeCommand-CrlqDuz7.mjs} +5 -5
  80. package/dist/{handleResumeCommand-Cl9GIL5F.cjs → handleResumeCommand-DPi-sPm7.cjs} +5 -5
  81. package/dist/{index-CZaLMmPC.cjs → index-B1swQJUS.cjs} +4 -4
  82. package/dist/{index-CQ_hLLCj.cjs → index-B2dJA8VG.cjs} +3 -3
  83. package/dist/{index-BzAYnYct.cjs → index-BUFrKZeQ.cjs} +198 -108
  84. package/dist/{index-JQDyJ3Li.mjs → index-BbdV2mzy.mjs} +3 -3
  85. package/dist/{index-BjXjMhGY.mjs → index-BcSPg3c5.mjs} +4 -4
  86. package/dist/{index-D8ODb0_U.cjs → index-Bkslzin5.cjs} +42 -42
  87. package/dist/{index-v5EmjT8l.mjs → index-Cn73rdtQ.mjs} +4 -4
  88. package/dist/{index-DYD3GM1m.mjs → index-D1YnIih6.mjs} +195 -109
  89. package/dist/{index-Ca1Tt96A.mjs → index-fZO4nF6e.mjs} +43 -43
  90. package/dist/{index-CRipkiqo.cjs → index-rocrvOYG.cjs} +4 -4
  91. package/dist/index.cjs +2 -2
  92. package/dist/index.mjs +2 -2
  93. package/dist/{install-ClUA9tbC.cjs → install-CArXjPfW.cjs} +3 -3
  94. package/dist/{install-D6EHRtAN.mjs → install-CChhyV2G.mjs} +3 -3
  95. package/dist/lib.cjs +12 -12
  96. package/dist/lib.d.cts +97 -25
  97. package/dist/lib.d.mts +97 -25
  98. package/dist/lib.mjs +12 -12
  99. package/dist/{lidState-CZOXXdzv.mjs → lidState-B6yYKjNK.mjs} +1 -1
  100. package/dist/{lidState-DqoN7zH4.cjs → lidState-B_v6qgfE.cjs} +1 -1
  101. package/dist/{localHappyAgentAuth-YHxDZ4x4.mjs → localHappyAgentAuth-KRlg_aI0.mjs} +1 -1
  102. package/dist/{localHappyAgentAuth-BnGCpHRX.cjs → localHappyAgentAuth-jJH0n67S.cjs} +1 -1
  103. package/dist/{logger-8su64lqR.cjs → logger-CX3x2eI4.cjs} +2 -2
  104. package/dist/{logger-Fd_rNvgd.mjs → logger-JV7-4Q_6.mjs} +2 -2
  105. package/dist/{machineMetadata-1HIIC7Bc.mjs → machineMetadata-D5-SW9kv.mjs} +3 -3
  106. package/dist/{machineMetadata-DYXt3p6u.cjs → machineMetadata-DhZuM0iB.cjs} +3 -3
  107. package/dist/{main-C_GrcYkn.cjs → main-1x1HGQEy.cjs} +47 -47
  108. package/dist/{main-BI6GIzUL.mjs → main-CFOdXbPD.mjs} +47 -47
  109. package/dist/{mcp-BycIv9oQ.cjs → mcp-BnKBSEh7.cjs} +18 -18
  110. package/dist/{mcp-XGoxywno.mjs → mcp-R6lMcFLO.mjs} +18 -18
  111. package/dist/{mirrorProtocol-DXT3rv7T.mjs → mirrorProtocol-CD4ntuZJ.mjs} +3 -3
  112. package/dist/{mirrorProtocol-DVnB8EO8.cjs → mirrorProtocol-DO-KtvAL.cjs} +3 -3
  113. package/dist/{package-6KkRAops.mjs → package-Bw3H6VLn.mjs} +7 -7
  114. package/dist/{package-iuLlSiSF.cjs → package-uzlvxa5S.cjs} +7 -7
  115. package/dist/{panels-B5Di2zb2.mjs → panels-BamhZCoZ.mjs} +5 -5
  116. package/dist/{panels-0C89q0Tu.cjs → panels-C46FxjmH.cjs} +5 -5
  117. package/dist/{peerTools-CANTX_mG.cjs → peerTools-D-VNNFw-.cjs} +5 -5
  118. package/dist/{peerTools-CKJ-IDM4.mjs → peerTools-WtRgTSqG.mjs} +5 -5
  119. package/dist/{persistence-DWcHe035.mjs → persistence-Cg4sfjQV.mjs} +2 -2
  120. package/dist/{persistence-B4ttN-fR.cjs → persistence-CsmAgN-C.cjs} +2 -2
  121. package/dist/{piRunnerArgs-Bl5GpBoN.mjs → piRunnerArgs-BbaAQvb4.mjs} +1 -1
  122. package/dist/{piRunnerArgs-BOkfxyak.cjs → piRunnerArgs-vnFygygF.cjs} +1 -1
  123. package/dist/{piRuntime-BhwxzdQf.mjs → piRuntime-Bid7TBf5.mjs} +1 -1
  124. package/dist/{piRuntime-DzrIiZU8.cjs → piRuntime-C2uj5Ucx.cjs} +1 -1
  125. package/dist/{piTerminal-BdS7ol7v.cjs → piTerminal-Ckpjfoqa.cjs} +20 -20
  126. package/dist/{piTerminal-DnA2CbGr.mjs → piTerminal-CqxgrI13.mjs} +20 -20
  127. package/dist/{pushNotifications-BqFoLye2.cjs → pushNotifications-BCg7YAiu.cjs} +3 -3
  128. package/dist/{pushNotifications-DkQ0yvFs.mjs → pushNotifications-BbE-qV9I.mjs} +3 -3
  129. package/dist/{query-BRJYSkb1.mjs → query-Bfr9O_62.mjs} +1 -1
  130. package/dist/{query-BQ4br3yn.cjs → query-vQ-HG394.cjs} +1 -1
  131. package/dist/{rateLimitReporter-DK5SQuCc.cjs → rateLimitReporter-BZ8x0-6-.cjs} +3 -3
  132. package/dist/{rateLimitReporter-BRbYkmuP.mjs → rateLimitReporter-CAz7VMw4.mjs} +3 -3
  133. package/dist/{rateLimitWindows-DBfiuYeg.cjs → rateLimitWindows-BZl6GMwQ.cjs} +1 -1
  134. package/dist/{rateLimitWindows-Da5AR-4u.mjs → rateLimitWindows-CRARnKaI.mjs} +1 -1
  135. package/dist/{registerCommonHandlers-m6pxxf2J.cjs → registerCommonHandlers-CZGmrPbT.cjs} +2 -2
  136. package/dist/{registerCommonHandlers-yQ7Ru-l0.mjs → registerCommonHandlers-Cj3Nl9y-.mjs} +2 -2
  137. package/dist/{registerKillSessionHandler-BDNpi7YO.mjs → registerKillSessionHandler-Bg9t45Ub.mjs} +6 -6
  138. package/dist/{registerKillSessionHandler-BAOIa_Fs.cjs → registerKillSessionHandler-C3EDnW4F.cjs} +6 -6
  139. package/dist/{remoteSessionClient-CZ7aaNgj.mjs → remoteSessionClient--0vfA7I5.mjs} +5 -5
  140. package/dist/{remoteSessionClient-iJMXRN_D.cjs → remoteSessionClient-CcSP24Zq.cjs} +5 -5
  141. package/dist/{reportProgressTool-DfQhPu0s.mjs → reportProgressTool-DVru7jc_.mjs} +3 -3
  142. package/dist/{reportProgressTool-DpFs7pSe.cjs → reportProgressTool-Ddg1yVq2.cjs} +3 -3
  143. package/dist/{run-p-xp1_HY.cjs → run-BTrIT_jU.cjs} +178 -847
  144. package/dist/{run-CwN28mcj.mjs → run-HtvH6BLi.mjs} +176 -845
  145. package/dist/{runClaude-DRKtAGTm.mjs → runClaude-DsHTk5Bu.mjs} +25 -25
  146. package/dist/{runClaude-D6U1Z575.cjs → runClaude-ipjwAHPI.cjs} +25 -25
  147. package/dist/{runClaudeDeps-Dkofokgb.cjs → runClaudeDeps-BKpwL6ln.cjs} +41 -41
  148. package/dist/{runClaudeDeps-BheVcIlD.mjs → runClaudeDeps-BV3vpeyY.mjs} +46 -46
  149. package/dist/{runGemini-C8q3YCc0.cjs → runGemini-B-G0_7Ab.cjs} +33 -33
  150. package/dist/{runGemini-owbvhFbi.mjs → runGemini-DhjK6_Fp.mjs} +33 -33
  151. package/dist/{runOpenClaw-Dky3-mjO.mjs → runOpenClaw-B6lawk8n.mjs} +18 -18
  152. package/dist/{runOpenClaw-DGeN66-t.cjs → runOpenClaw-BHIo8tkn.cjs} +18 -18
  153. package/dist/{sandbox-D2CPyoCA.cjs → sandbox-BAsO0ILe.cjs} +4 -4
  154. package/dist/{sandbox-sq_wy9Gl.mjs → sandbox-CKb7pCXg.mjs} +4 -4
  155. package/dist/selfCheck-CZ-t1Xzq.mjs +88 -0
  156. package/dist/{selfCheck-BgLvQKSt.cjs → selfCheck-D4VvVZNi.cjs} +39 -39
  157. package/dist/{send-Cd10YhXh.cjs → send-Cz5m39QR.cjs} +8 -8
  158. package/dist/{send-K9vg-8t-.mjs → send-D8ipLKMY.mjs} +8 -8
  159. package/dist/{server-De4W1zuK.mjs → server-CjvgT3N9.mjs} +4 -4
  160. package/dist/{server-DRrV64r0.cjs → server-CySyJKPH.cjs} +6 -6
  161. package/dist/{sessionLock-Dl6i7IgA.mjs → sessionLock-B73fhgQN.mjs} +3 -3
  162. package/dist/{sessionLock-BDtSzzKS.cjs → sessionLock-DdDCuNUs.cjs} +3 -3
  163. package/dist/{sessionOps-gU88-W9F.mjs → sessionOps-C65Iej_C.mjs} +50 -8
  164. package/dist/{sessionOps-DvnEH4PL.cjs → sessionOps-XSEjIqNq.cjs} +50 -8
  165. package/dist/{sessionProvider-CKcIo7KO.mjs → sessionProvider-CLVNkfji.mjs} +11 -9
  166. package/dist/{sessionProvider-CbSZeZrl.cjs → sessionProvider-Dgsty8z_.cjs} +11 -9
  167. package/dist/{sessionScanner-7RtcCeyD.cjs → sessionScanner-D8IVXMMH.cjs} +3 -3
  168. package/dist/{sessionScanner-DR32uSby.mjs → sessionScanner-MW1P9Pm9.mjs} +3 -3
  169. package/dist/{sessions-BvuMjgvJ.cjs → sessions-BKz7gZqg.cjs} +10 -10
  170. package/dist/{sessions-DTt2Eguk.mjs → sessions-Dtk_agUL.mjs} +10 -10
  171. package/dist/{setupOfflineReconnection-BGnvhRfb.mjs → setupOfflineReconnection-Bvdy-2xd.mjs} +2 -2
  172. package/dist/{setupOfflineReconnection-DduOsw6p.cjs → setupOfflineReconnection-DxMiW7OV.cjs} +2 -2
  173. package/dist/{spawn-DMB6rRPA.cjs → spawn-DiPkJcrQ.cjs} +26 -16
  174. package/dist/{spawn-CL3cUc7b.mjs → spawn-Dm4xsZBX.mjs} +26 -16
  175. package/dist/{spawnAgents-CClb7buD.cjs → spawnAgents-B9olJ8xn.cjs} +1 -1
  176. package/dist/{spawnAgents-CRMfOJhh.mjs → spawnAgents-I29H9nO8.mjs} +1 -1
  177. package/dist/{spawnHappyCLI-DJdhX_Qx.cjs → spawnHappyCLI-BYGOUda1.cjs} +1 -1
  178. package/dist/{spawnHappyCLI-Cj_6IICe.mjs → spawnHappyCLI-CnMwzjWX.mjs} +1 -1
  179. package/dist/{startFileWatcher-LnOmVW6H.cjs → startFileWatcher-D14W6gn-.cjs} +1 -1
  180. package/dist/{startFileWatcher-DikVa8kg.mjs → startFileWatcher-DePAY1T5.mjs} +1 -1
  181. package/dist/{startupSessionCreate-CDdaLaMq.mjs → startupSessionCreate-DoK0IvJG.mjs} +3 -3
  182. package/dist/{startupSessionCreate-B3ND-917.cjs → startupSessionCreate-rBHd4tc1.cjs} +3 -3
  183. package/dist/{store-DV__wCvP.cjs → store-CkNa6oj4.cjs} +46 -9
  184. package/dist/{store--XN-7MS0.mjs → store-Vej_738f.mjs} +46 -10
  185. package/dist/{streamRelay-DFdOaLOn.cjs → streamRelay-C0G1HOOd.cjs} +1 -1
  186. package/dist/{streamRelay-sABnxEXq.mjs → streamRelay-C5U-C4GS.mjs} +1 -1
  187. package/dist/{sync-JoEZKRo8.mjs → sync-BP6vnxVP.mjs} +1 -1
  188. package/dist/{sync-_2lsZ1U2.cjs → sync-WYBwkJvG.cjs} +1 -1
  189. package/dist/{systemPrompt-CJEvNCuW.cjs → systemPrompt-BkQlCk5_.cjs} +2 -2
  190. package/dist/{systemPrompt-Zq4HyrZ5.mjs → systemPrompt-aRqBmkpw.mjs} +2 -2
  191. package/dist/{teams-qz4LqKJ2.mjs → teams-CGmC4ygu.mjs} +7 -7
  192. package/dist/{teams-BNZafnrT.cjs → teams-phbpwAGD.cjs} +7 -7
  193. package/dist/{template-LgvBbOna.cjs → template-B9pLEP8v.cjs} +2 -2
  194. package/dist/{template-CJ8BWSsc.mjs → template-CL9EvQLQ.mjs} +2 -2
  195. package/dist/{time-CaUlWSNJ.cjs → time-BTLcO8jp.cjs} +1 -1
  196. package/dist/{time-bzmet4s5.mjs → time-Cw0liIqB.mjs} +1 -1
  197. package/dist/{titleGenerator-BuIIu_JP.cjs → titleGenerator-Y1_7ceJC.cjs} +3 -3
  198. package/dist/{titleGenerator-CbTtJ_1D.mjs → titleGenerator-h6TmFe-c.mjs} +2 -2
  199. package/dist/{todo-CQ_BTf9C.cjs → todo-BxiPiCvB.cjs} +6 -6
  200. package/dist/{todo-DIrVF_Ak.mjs → todo-OKcTC_VC.mjs} +6 -6
  201. package/dist/{tools-cLOjBvPn.mjs → tools-BR-drXZ8.mjs} +3 -2
  202. package/dist/{tools-BnmmFZji.cjs → tools-CcebYtLj.cjs} +3 -2
  203. package/dist/{uninstall-uEEGKB84.cjs → uninstall-CnDeCC-M.cjs} +3 -3
  204. package/dist/{uninstall-C5OuW6dE.mjs → uninstall-D3stWKD2.mjs} +3 -3
  205. package/dist/{wrapperAccount-DXlD3bsO.mjs → wrapperAccount-BkufO_9g.mjs} +5 -4
  206. package/dist/{wrapperAccount-DzoGqS2b.cjs → wrapperAccount-D2A4DuZy.cjs} +6 -3
  207. package/package.json +7 -7
  208. package/dist/selfCheck-vkfrgQ7X.mjs +0 -88
@@ -1,108 +1,112 @@
1
- import { a as authAndSetupMachineIfNeeded } from './auth-DL8_J9vu.mjs';
2
- import { k as createEnvelope, y as BUILTIN_TODO_DISCOVERY, r as restoredEffort, o as readEffortIntent, M as EFFORT_INTENT_AUTO, P as PROMPT_QUEUE_CAPABILITY, a2 as CODEX_STEER_CAPABILITY, a as PROJECT_SESSION_CAPABILITY, a3 as CODEX_COMPACT_CAPABILITY, R as RUN_INTENT_CAPABILITY } from './index-DYD3GM1m.mjs';
3
- import { a as recordRunIntents, w as withoutEffort, r as registerRunIntentRpc, b as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-Lt3PUCwY.mjs';
4
- import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-Dfp-7wUZ.mjs';
5
- import { s as sharedProjectsClient } from './client-Bm4oKvW7.mjs';
1
+ import { a as authAndSetupMachineIfNeeded } from './auth-jN5dNqTO.mjs';
2
+ import { k as createEnvelope, w as BUILTIN_TODO_DISCOVERY, r as restoredEffort, o as readEffortIntent, Q as EFFORT_INTENT_AUTO, P as PROMPT_QUEUE_CAPABILITY, a5 as CODEX_STEER_CAPABILITY, a as PROJECT_SESSION_CAPABILITY, a6 as CODEX_COMPACT_CAPABILITY, R as RUN_INTENT_CAPABILITY, A as AGENT_PROFILE_SESSION_CAPABILITY } from './index-D1YnIih6.mjs';
3
+ import { a as recordRunIntents, w as withoutEffort, r as registerRunIntentRpc, b as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-DF5AfeBb.mjs';
4
+ import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-BzX94gi3.mjs';
5
+ import { s as sharedProjectsClient } from './client-Bde4QVIn.mjs';
6
6
  import { unlink } from 'node:fs/promises';
7
7
  import { p as publishForkBackfillWhenCommitted, F as FORK_BACKFILL_CAPABILITY } from './forkBackfill-DYIjlN1Z.mjs';
8
8
  import { randomUUID } from 'node:crypto';
9
9
  import { createId } from '@paralleldrive/cuid2';
10
- import { t as textResultPayload, d as toolResultContentText, c as connectionState, A as ApiClient } from './api-_LeBScjg.mjs';
10
+ import { t as textResultPayload, d as toolResultContentText, c as connectionState, A as ApiClient } from './api-DUfunY3x.mjs';
11
11
  import { r as registerAgentAttachmentDownloads, H as HeldInput } from './heldInput-C69lA2dH.mjs';
12
- import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-CyptLIfq.mjs';
12
+ import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-KNIZxwlu.mjs';
13
13
  import { useStdout, useInput, Box, Text, render } from 'ink';
14
- import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, t as takeAutoRestartedEvent, A as AUTO_RESTART_CAPABILITY, e as exitCursorStamp } from './sessionLock-Dl6i7IgA.mjs';
14
+ import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, t as takeAutoRestartedEvent, A as AUTO_RESTART_CAPABILITY, e as exitCursorStamp } from './sessionLock-B73fhgQN.mjs';
15
15
  import React, { useState, useRef, useEffect, useCallback } from 'react';
16
- import { C as CodexAppServerClient } from './codexAppServerClient-BWJbLCQn.mjs';
17
- import { w as wrapperRateLimitReporter } from './rateLimitReporter-BRbYkmuP.mjs';
18
- import { l as logger } from './logger-Fd_rNvgd.mjs';
19
- import { B as BasePermissionHandler } from './BasePermissionHandler-BmTIg376.mjs';
20
- import { B as BaseReasoningProcessor, s as settleCodexSession } from './codexTermination-s9fd1gkA.mjs';
16
+ import { C as CodexAppServerClient } from './codexAppServerClient-B3QJV6Ey.mjs';
17
+ import { w as wrapperRateLimitReporter } from './rateLimitReporter-CAz7VMw4.mjs';
18
+ import { l as logger } from './logger-JV7-4Q_6.mjs';
19
+ import { B as BasePermissionHandler } from './BasePermissionHandler-DV6UM6e9.mjs';
20
+ import { B as BaseReasoningProcessor, s as settleCodexSession } from './codexTermination-CaWAVQjZ.mjs';
21
21
  import { execSync } from 'node:child_process';
22
- import { r as readSettings, l as latchKeepAwake, e as evaluateWrapperIdle, a as resolveCheckMs, H as HIBERNATION_CAPABILITY } from './persistence-DWcHe035.mjs';
23
- import { g as getInitialMachineMetadata } from './machineMetadata-1HIIC7Bc.mjs';
24
- import { c as configuration } from './configuration-IhRiLDVe.mjs';
25
- import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-BDNpi7YO.mjs';
22
+ import { r as readSettings, l as latchKeepAwake, e as evaluateWrapperIdle, a as resolveCheckMs, H as HIBERNATION_CAPABILITY } from './persistence-Cg4sfjQV.mjs';
23
+ import { g as getInitialMachineMetadata } from './machineMetadata-D5-SW9kv.mjs';
24
+ import { c as configuration } from './configuration-ThKBP_zY.mjs';
25
+ import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-Bg9t45Ub.mjs';
26
26
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
27
- import { join } from 'node:path';
28
- import { c as createSessionMetadata } from './createSessionMetadata-oyaTZm1b.mjs';
27
+ import { dirname, join } from 'node:path';
28
+ import { c as createSessionMetadata } from './createSessionMetadata-vug4Cv8z.mjs';
29
29
  import { M as MessageBuffer } from './sessionExitLifecycle-CzkLIgNZ.mjs';
30
- import { n as notifyDaemonSessionStarted, o as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient-8ILulwjc.mjs';
31
- import { c as createSessionForStartup, b as HibernationExitLatch, H as HibernationProbe, a as commitHibernation } from './startupSessionCreate-CDdaLaMq.mjs';
30
+ import { n as notifyDaemonSessionStarted, o as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient-Ckl8N1MS.mjs';
31
+ import { c as createSessionForStartup, b as HibernationExitLatch, H as HibernationProbe, a as commitHibernation } from './startupSessionCreate-DoK0IvJG.mjs';
32
32
  import { d as decodeBase64, e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
33
- import { s as setupOfflineReconnection } from './setupOfflineReconnection-BGnvhRfb.mjs';
33
+ import { s as setupOfflineReconnection } from './setupOfflineReconnection-Bvdy-2xd.mjs';
34
34
  import { t as trimIdent } from './trimIdent-BAjmv_TG.mjs';
35
35
  import { a as parseSpecialCommand, c as compactCommandText, b as parseCompact } from './specialCommands-MXUN0wfI.mjs';
36
36
  import { C as CHANGE_TITLE_INSTRUCTION } from './constants-BC4St0xd.mjs';
37
37
  import { E as EditReportThrottle, a as extractCodexPatchPaths } from './editPaths-BVfS_FFL.mjs';
38
38
  import { t as takeReconnectEnv } from './reconnectEnv-DeSvHl3q.mjs';
39
- import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-KUMFfIil.mjs';
39
+ import { r as readSessionBindings, w as writeSessionBinding, d as defaultSecretProbe, a as readAccounts, c as readAccountsFileV2, f as writeAccountsFile, S as SPAWN_ACCOUNT_ENV } from './store-Vej_738f.mjs';
40
+ import { mkdirSync, writeFileSync, chmodSync, rmSync } from 'node:fs';
41
+ import { a as resolveCodexAccount, r as readCodexProviders, s as syncCodexOverlay, b as baseCodexHome, c as codexAccountSwitched, d as readCodexDefaultProvider, e as codexAccountDefaultModel, f as accountModelsAsCatalog, i as isHistoryRejectedError, g as isCodexAuthRejection } from './codexAccount-NOX5pmQf.mjs';
42
+ import { s as shouldRecordSpawnAccount, u as unavailableNotice } from './wrapperAccount-BkufO_9g.mjs';
43
+ import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-C6ERYK-O.mjs';
40
44
  import 'tweetnacl';
41
45
  import 'axios';
42
- import './time-bzmet4s5.mjs';
43
- import './browser-BUIaSHK2.mjs';
46
+ import './time-Cw0liIqB.mjs';
47
+ import './browser-LHW2hBH8.mjs';
44
48
  import 'open';
45
49
  import 'zod';
46
50
  import './prompt-QHuFx9j6.mjs';
47
- import './reportProgressTool-DfQhPu0s.mjs';
48
- import './client-Cxlp_D4I.mjs';
51
+ import './reportProgressTool-DVru7jc_.mjs';
52
+ import './client-7RnI9J0W.mjs';
49
53
  import './precheckCompat-DeEbilbr.mjs';
50
54
  import './agentGuidance-BDYt2Qy2.mjs';
51
- import 'node:fs';
52
55
  import 'node:os';
53
56
  import './pi-CqyoZMjI.mjs';
54
57
  import './fileStore-5qpetZS0.mjs';
55
- import './client-BmPaBnDK.mjs';
58
+ import './client-DwbhrX6D.mjs';
56
59
  import 'node:util';
57
- import './context-DO6F5YwH.mjs';
58
- import './sessionOps-gU88-W9F.mjs';
60
+ import './context-C0EFLnOg.mjs';
61
+ import './sessionOps-C65Iej_C.mjs';
59
62
  import 'socket.io-client';
60
63
  import './backgroundTaskActivity-8PdPxrvy.mjs';
61
64
  import './resources-CLP_MpK4.mjs';
62
- import './tools-cLOjBvPn.mjs';
63
- import './peerTools-CKJ-IDM4.mjs';
65
+ import './tools-BR-drXZ8.mjs';
66
+ import './peerTools-WtRgTSqG.mjs';
64
67
  import './ids-DU6sLx4C.mjs';
65
- import './remoteSessionClient-CZ7aaNgj.mjs';
68
+ import './remoteSessionClient--0vfA7I5.mjs';
66
69
  import '@modelcontextprotocol/sdk/server/mcp.js';
67
70
  import 'node:http';
68
71
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
69
72
  import './limits-DIo7rEBR.mjs';
70
- import './downloadTarget-C0d6jRx-.mjs';
73
+ import './downloadTarget-Baslc6jW.mjs';
71
74
  import './terminals-Dlg0x3nY.mjs';
72
75
  import './terminalTitleSuggest-CeKsX_V6.mjs';
73
76
  import './tmuxSocket-B8Yx20sT.mjs';
74
- import './bootstrap-DaZ0Np7X.mjs';
75
- import './package-6KkRAops.mjs';
77
+ import './bootstrap-B3gMpU9e.mjs';
78
+ import './package-Bw3H6VLn.mjs';
76
79
  import './webPanels-B2_C2-3g.mjs';
77
- import './pushNotifications-DkQ0yvFs.mjs';
80
+ import './pushNotifications-BbE-qV9I.mjs';
78
81
  import './contentLogMetadata-BlWI0egu.mjs';
79
82
  import './previewPath-CXN4Vag0.mjs';
80
83
  import 'crypto';
81
- import './lidState-CZOXXdzv.mjs';
84
+ import './lidState-B6yYKjNK.mjs';
82
85
  import 'os';
83
86
  import 'child_process';
84
87
  import 'node:events';
85
- import './registerCommonHandlers-yQ7Ru-l0.mjs';
88
+ import './registerCommonHandlers-Cj3Nl9y-.mjs';
86
89
  import 'util';
87
90
  import 'fs/promises';
88
91
  import 'path';
89
92
  import 'cross-spawn';
90
- import './sync-JoEZKRo8.mjs';
93
+ import './sync-BP6vnxVP.mjs';
91
94
  import 'chalk';
92
95
  import './cliUpdate-Y34VGe9Y.mjs';
93
96
  import './processTreeSnapshot-CuLJDNC-.mjs';
94
97
  import 'node:readline';
95
98
  import './manager-BEsI4qt3.mjs';
96
99
  import '@anthropic-ai/sandbox-runtime';
97
- import './rateLimitWindows-Da5AR-4u.mjs';
100
+ import './rateLimitWindows-CRARnKaI.mjs';
98
101
  import './processTree-CP5IvQ2Z.mjs';
99
102
  import './detectCLI-CSGMlV51.mjs';
100
103
  import 'fs';
101
- import './localHappyAgentAuth-YHxDZ4x4.mjs';
104
+ import './localHappyAgentAuth-KRlg_aI0.mjs';
102
105
  import './fsMkdir-DumgLTzR.mjs';
103
106
  import './types-CkqAACXx.mjs';
104
107
  import 'url';
105
- import './spawnHappyCLI-Cj_6IICe.mjs';
108
+ import './claudeAccountEnv-BL1pR_37.mjs';
109
+ import './spawnHappyCLI-CnMwzjWX.mjs';
106
110
  import './doctorReadiness-C208SMN9.mjs';
107
111
 
108
112
  function getStartedSubagents(state) {
@@ -1184,7 +1188,8 @@ async function resumeExistingThread(opts) {
1184
1188
  const resumedThread = await opts.client.resumeThread({
1185
1189
  threadId: opts.threadId,
1186
1190
  cwd: opts.cwd,
1187
- mcpServers: opts.mcpServers
1191
+ mcpServers: opts.mcpServers,
1192
+ ...opts.model ? { model: opts.model } : {}
1188
1193
  });
1189
1194
  opts.session.updateMetadata((currentMetadata) => ({
1190
1195
  ...currentMetadata,
@@ -1462,6 +1467,70 @@ function codexPublishablePermissionMode(mode) {
1462
1467
  return typeof mode === "string" && CODEX_REMOTE_PERMISSION_MODES.includes(mode) ? mode : null;
1463
1468
  }
1464
1469
 
1470
+ const MACHINE_CODEX_ACCOUNT = { profile: null, overrides: { env: {} }, unavailable: false, notices: [], cleanup: () => {
1471
+ } };
1472
+ function loadCodexWrapperAccount(happyHome, sessionId, spawnAccountId, env = process.env, now = Date.now()) {
1473
+ let bindings = readSessionBindings(happyHome);
1474
+ if (shouldRecordSpawnAccount(spawnAccountId, sessionId in bindings)) {
1475
+ writeSessionBinding(happyHome, sessionId, { account: spawnAccountId });
1476
+ bindings = { ...bindings, [sessionId]: { account: spawnAccountId } };
1477
+ }
1478
+ const probe = defaultSecretProbe(env);
1479
+ const resolution = resolveCodexAccount(sessionId, {
1480
+ home: happyHome,
1481
+ accounts: readAccounts(happyHome),
1482
+ bindings,
1483
+ providers: readCodexProviders(env),
1484
+ fileReadable: probe.fileReadable,
1485
+ env,
1486
+ nodePath: process.execPath,
1487
+ envKeyCopyPath: (id) => join(happyHome, "tmp", "accounts", `key-${process.pid}-${id}`)
1488
+ });
1489
+ if (resolution.kind === "machine") return MACHINE_CODEX_ACCOUNT;
1490
+ let cleanup = () => {
1491
+ };
1492
+ if (resolution.kind === "active" && resolution.envKeyCopy) {
1493
+ const { name, path } = resolution.envKeyCopy;
1494
+ mkdirSync(dirname(path), { recursive: true, mode: 448 });
1495
+ writeFileSync(path, (env[name] ?? "").trim() + "\n", { mode: 384 });
1496
+ chmodSync(path, 384);
1497
+ cleanup = () => rmSync(path, { force: true });
1498
+ }
1499
+ for (const key of resolution.unset) delete env[key];
1500
+ if (resolution.kind === "active" && resolution.envKeyCopy) delete env[resolution.envKeyCopy.name];
1501
+ if (resolution.kind === "unavailable") {
1502
+ return { profile: resolution.profile, overrides: { env: {} }, unavailable: true, notices: [unavailableNotice(resolution.profile)], cleanup };
1503
+ }
1504
+ const overrides = { env: {}, modelProvider: resolution.modelProvider, ...resolution.config ? { config: resolution.config } : {} };
1505
+ if (resolution.codexHome) {
1506
+ syncCodexOverlay(resolution.codexHome, baseCodexHome(env), now);
1507
+ overrides.env.CODEX_HOME = resolution.codexHome;
1508
+ }
1509
+ return {
1510
+ profile: resolution.profile,
1511
+ overrides,
1512
+ ...resolution.pinnedModel ? { pinnedModel: resolution.pinnedModel } : {},
1513
+ ...resolution.models ? { models: resolution.models } : {},
1514
+ unavailable: false,
1515
+ notices: [],
1516
+ cleanup
1517
+ };
1518
+ }
1519
+ function markCodexAccountRejected(happyHome, accountId, now = Date.now()) {
1520
+ try {
1521
+ const file = readAccountsFileV2(happyHome);
1522
+ const record = file.accounts[accountId];
1523
+ if (!record || record.agent !== "codex") return null;
1524
+ const status = record.kind === "codex-chatgpt" ? "expired" : "invalid";
1525
+ if (record.check?.status === status) return status;
1526
+ record.check = { status, at: now, detail: "rejected during a session" };
1527
+ writeAccountsFile(happyHome, file);
1528
+ return status;
1529
+ } catch {
1530
+ return null;
1531
+ }
1532
+ }
1533
+
1465
1534
  const DEFAULT_CODEX_MODEL = void 0;
1466
1535
  const DEFAULT_CODEX_EFFORT = "medium";
1467
1536
  async function runCodex(opts) {
@@ -1478,6 +1547,8 @@ async function runCodex(opts) {
1478
1547
  console.error(" \x1B[36mvery-happy claude\x1B[0m\n");
1479
1548
  process.exit(1);
1480
1549
  }
1550
+ const spawnAccountId = process.env[SPAWN_ACCOUNT_ENV] || void 0;
1551
+ delete process.env[SPAWN_ACCOUNT_ENV];
1481
1552
  const sessionTag = randomUUID();
1482
1553
  connectionState.setBackend("Codex");
1483
1554
  const api = await ApiClient.create(opts.credentials);
@@ -1506,7 +1577,7 @@ async function runCodex(opts) {
1506
1577
  dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
1507
1578
  ...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
1508
1579
  ...forkedFromMessageId ? { forkedFromMessageId } : {},
1509
- capabilities: [PROMPT_QUEUE_CAPABILITY, FORK_BACKFILL_CAPABILITY, HIBERNATION_CAPABILITY, AUTO_RESTART_CAPABILITY, CODEX_STEER_CAPABILITY, PROJECT_SESSION_CAPABILITY, CODEX_COMPACT_CAPABILITY, RUN_INTENT_CAPABILITY]
1580
+ capabilities: [PROMPT_QUEUE_CAPABILITY, FORK_BACKFILL_CAPABILITY, HIBERNATION_CAPABILITY, AUTO_RESTART_CAPABILITY, CODEX_STEER_CAPABILITY, PROJECT_SESSION_CAPABILITY, CODEX_COMPACT_CAPABILITY, RUN_INTENT_CAPABILITY, AGENT_PROFILE_SESSION_CAPABILITY]
1510
1581
  });
1511
1582
  metadata.attachmentKinds = [...CLAUDE_ATTACHMENT_KINDS];
1512
1583
  metadata.stickyModel = null;
@@ -1568,6 +1639,21 @@ async function runCodex(opts) {
1568
1639
  }
1569
1640
  }
1570
1641
  const resumedEffort = reconnectSeeded && response ? restoredEffort(response.metadata, { useReportedLevel: true }) : void 0;
1642
+ let codexAccount = MACHINE_CODEX_ACCOUNT;
1643
+ if (response) {
1644
+ try {
1645
+ codexAccount = loadCodexWrapperAccount(configuration.happyHomeDir, response.id, spawnAccountId);
1646
+ } catch (error) {
1647
+ const reason = error instanceof Error ? error.message : String(error);
1648
+ logger.debug(`[START] B-850b account resolution failed: ${reason}`);
1649
+ if (spawnAccountId) {
1650
+ codexAccount = { ...MACHINE_CODEX_ACCOUNT, profile: { id: spawnAccountId, label: spawnAccountId, kind: "unknown", status: "unavailable", reason: "error" }, unavailable: true, notices: [`Account "${spawnAccountId}" could not be loaded: ${reason}`] };
1651
+ }
1652
+ }
1653
+ }
1654
+ const accountSwitched = !!reconnectSessionId && reconnectSeeded && !!response && codexAccountSwitched(response.metadata?.agentProfile, codexAccount.profile);
1655
+ if (accountSwitched && !codexAccount.profile) codexAccount = { ...codexAccount, overrides: { env: {}, modelProvider: readCodexDefaultProvider() } };
1656
+ logger.debug(`[START] B-850b account: ${codexAccount.profile ? `${codexAccount.profile.id} ${codexAccount.profile.kind} ${codexAccount.profile.status}` : "machine login"}${accountSwitched ? " (switched)" : ""}`);
1571
1657
  let session;
1572
1658
  let permissionHandler;
1573
1659
  let client;
@@ -1596,6 +1682,25 @@ async function runCodex(opts) {
1596
1682
  if (!wakingFromHibernation) void session.cancelUndeliveredQueuedInputs(reconnectReplay ? { maxSeq: reconnectReplay.seq } : void 0);
1597
1683
  session.updateMetadata((meta) => mergeReconnectMetadata(meta, metadata, Date.now()));
1598
1684
  }
1685
+ session.updateMetadata((current) => ({
1686
+ ...current,
1687
+ agentProfile: codexAccount.profile,
1688
+ ...accountSwitched ? { stickyModel: null, modelIntent: null } : {}
1689
+ }));
1690
+ for (const notice of codexAccount.notices) {
1691
+ session.sendSessionEvent({ type: "message", message: notice, kind: codexAccount.unavailable ? "agent-profile-unavailable" : "agent-profile-warning" });
1692
+ }
1693
+ let historyRejectionReported = false;
1694
+ const noteAccountFailure = (text) => {
1695
+ if (!codexAccount.profile || codexAccount.unavailable) return;
1696
+ if (accountSwitched && !historyRejectionReported && isHistoryRejectedError(text)) {
1697
+ historyRejectionReported = true;
1698
+ session.sendSessionEvent({ type: "message", message: `This conversation's history cannot continue on account "${codexAccount.profile.label}". Start a new session on it, or switch back to the previous account.`, kind: "agent-profile-history-rejected" });
1699
+ } else if (isCodexAuthRejection(text)) {
1700
+ const marked = markCodexAccountRejected(configuration.happyHomeDir, codexAccount.profile.id);
1701
+ if (marked) session.sendSessionEvent({ type: "message", message: `Account "${codexAccount.profile.label}" was rejected (${marked}). Sign in again or switch accounts.`, kind: "agent-profile-auth-failed" });
1702
+ }
1703
+ };
1599
1704
  if (response) {
1600
1705
  try {
1601
1706
  logger.debug(`[START] Reporting session ${response.id} to daemon`);
@@ -1688,6 +1793,11 @@ async function runCodex(opts) {
1688
1793
  };
1689
1794
  let userMessageDelivery = Promise.resolve();
1690
1795
  session.onUserMessage((message) => {
1796
+ if (codexAccount.unavailable && codexAccount.profile) {
1797
+ if (message.localKey) session.sendQueueCancelReason([message.localKey], "failed");
1798
+ session.sendSessionEvent({ type: "message", message: codexAccount.notices[0] ?? `Account "${codexAccount.profile.label}" is unavailable.`, kind: "agent-profile-unavailable" });
1799
+ return;
1800
+ }
1691
1801
  const downloads = session.drainAttachmentsForUserMessage();
1692
1802
  userMessageDelivery = userMessageDelivery.then(async () => {
1693
1803
  const attachments = await downloads;
@@ -1952,6 +2062,7 @@ async function runCodex(opts) {
1952
2062
  process.stdin.setEncoding("utf8");
1953
2063
  }
1954
2064
  client = new CodexAppServerClient(sandboxConfig);
2065
+ client.setAccountOverrides(codexAccount.overrides);
1955
2066
  const idleRelease = new CodexIdleReleaseTimer({
1956
2067
  delayMs: resolveCodexIdleReleaseMs(process.env[CODEX_IDLE_RELEASE_ENV]),
1957
2068
  isIdle: () => shouldReleaseIdleCodex({
@@ -2021,6 +2132,7 @@ async function runCodex(opts) {
2021
2132
  if (failure) {
2022
2133
  messageBuffer.addMessage(`Task failed: ${failure}`, "status");
2023
2134
  session.sendSessionEvent({ type: "message", message: `Codex error: ${failure}` });
2135
+ noteAccountFailure(failure);
2024
2136
  } else {
2025
2137
  messageBuffer.addMessage("Task completed", "status");
2026
2138
  }
@@ -2029,6 +2141,7 @@ async function runCodex(opts) {
2029
2141
  if (failure) {
2030
2142
  messageBuffer.addMessage(`Turn aborted: ${failure}`, "status");
2031
2143
  session.sendSessionEvent({ type: "message", message: `Codex error: ${failure}` });
2144
+ noteAccountFailure(failure);
2032
2145
  } else {
2033
2146
  messageBuffer.addMessage("Turn aborted", "status");
2034
2147
  }
@@ -2135,6 +2248,11 @@ async function runCodex(opts) {
2135
2248
  logger.debug("[Codex] config/read unavailable", safeCodexErrorMetadata(error));
2136
2249
  }
2137
2250
  machineDefaultModel = configured?.model ?? discoveredModels.find((model) => model.isDefault)?.model;
2251
+ const accountDefault = codexAccountDefaultModel(codexAccount, configured?.model ?? null, discoveredModels);
2252
+ if (codexAccount.profile && !codexAccount.unavailable) {
2253
+ machineDefaultModel = accountDefault;
2254
+ if (codexAccount.models?.length) discoveredModels = accountModelsAsCatalog(codexAccount.models, discoveredModels);
2255
+ }
2138
2256
  if (discoveredModels.length > 0 || configured) {
2139
2257
  session.updateMetadata((metadata2) => ({
2140
2258
  ...metadata2,
@@ -2147,22 +2265,30 @@ async function runCodex(opts) {
2147
2265
  defaultReasoningEffort: model.defaultReasoningEffort
2148
2266
  }))
2149
2267
  } : {},
2150
- defaultModelCode: configured?.model ?? discoveredModels.find((model) => model.isDefault)?.model,
2151
- ...configured ? { configuredModel: configured.model } : {}
2268
+ defaultModelCode: codexAccount.profile && !codexAccount.unavailable ? accountDefault : configured?.model ?? discoveredModels.find((model) => model.isDefault)?.model,
2269
+ ...configured ? { configuredModel: codexAccount.profile && !codexAccount.unavailable ? accountDefault ?? null : configured.model } : {}
2152
2270
  }));
2153
2271
  }
2154
2272
  } catch (error) {
2155
2273
  logger.debug("[Codex] Model discovery unavailable; using compatibility fallback", safeCodexErrorMetadata(error));
2156
2274
  }
2157
- if (opts.resumeThreadId) {
2158
- await resumeExistingThread({
2159
- client,
2160
- session,
2161
- messageBuffer,
2162
- threadId: opts.resumeThreadId,
2163
- cwd: process.cwd(),
2164
- mcpServers
2165
- });
2275
+ if (opts.resumeThreadId && !codexAccount.unavailable) {
2276
+ try {
2277
+ await resumeExistingThread({
2278
+ client,
2279
+ session,
2280
+ messageBuffer,
2281
+ threadId: opts.resumeThreadId,
2282
+ cwd: process.cwd(),
2283
+ mcpServers,
2284
+ // B-850b: after an account switch the thread moves to the
2285
+ // new account's model (its old one is sticky otherwise).
2286
+ ...accountSwitched && machineDefaultModel ? { model: machineDefaultModel } : {}
2287
+ });
2288
+ } catch (error) {
2289
+ noteAccountFailure(error instanceof Error ? error.message : String(error));
2290
+ throw error;
2291
+ }
2166
2292
  first = false;
2167
2293
  appendSystemPromptInjected = true;
2168
2294
  }
@@ -2358,7 +2484,10 @@ async function runCodex(opts) {
2358
2484
  }
2359
2485
  if (!client.hasActiveThread()) {
2360
2486
  const startedThread = await client.startThread({
2361
- model: turnModel,
2487
+ // B-850b: a new thread on an account starts on the account's
2488
+ // model — Codex would otherwise pick config.toml's, which
2489
+ // belongs to the machine's own provider.
2490
+ model: turnModel ?? (codexAccount.profile && !codexAccount.unavailable ? machineDefaultModel : void 0),
2362
2491
  cwd: process.cwd(),
2363
2492
  approvalPolicy: executionPolicy.approvalPolicy,
2364
2493
  sandbox: executionPolicy.sandbox,
@@ -2413,6 +2542,7 @@ async function runCodex(opts) {
2413
2542
  if (reason) {
2414
2543
  messageBuffer.addMessage(`Task failed: ${reason}`, "status");
2415
2544
  session.sendSessionEvent({ type: "message", message: `Codex error: ${reason}` });
2545
+ noteAccountFailure(reason);
2416
2546
  } else {
2417
2547
  const tail = codexStderrTailOf(error);
2418
2548
  messageBuffer.addMessage("Process exited unexpectedly", "status");
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var node_crypto = require('node:crypto');
4
- var logger = require('./logger-8su64lqR.cjs');
4
+ var logger = require('./logger-CX3x2eI4.cjs');
5
5
  var sessionExitLifecycle = require('./sessionExitLifecycle-DFltxXU8.cjs');
6
6
 
7
7
  class BaseReasoningProcessor {
@@ -1,5 +1,5 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import { l as logger } from './logger-Fd_rNvgd.mjs';
2
+ import { l as logger } from './logger-JV7-4Q_6.mjs';
3
3
  import { O as OFFLINE_EXIT_STAMP_TIMEOUT_MS } from './sessionExitLifecycle-CzkLIgNZ.mjs';
4
4
 
5
5
  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-8su64lqR.cjs');
7
+ var logger = require('./logger-CX3x2eI4.cjs');
8
8
  var constants = require('./constants-VJ0N6WuG.cjs');
9
9
  require('chalk');
10
10
  require('node:util');
11
- require('./configuration-CXEVKAyF.cjs');
11
+ require('./configuration-BBK0rmmj.cjs');
12
12
  require('node:fs');
13
13
  require('node:os');
14
14
  require('node:path');
15
- require('./package-iuLlSiSF.cjs');
15
+ require('./package-uzlvxa5S.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-Fd_rNvgd.mjs';
5
+ import { l as logger } from './logger-JV7-4Q_6.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-IhRiLDVe.mjs';
9
+ import './configuration-ThKBP_zY.mjs';
10
10
  import 'node:fs';
11
11
  import 'node:os';
12
12
  import 'node:path';
13
- import './package-6KkRAops.mjs';
13
+ import './package-Bw3H6VLn.mjs';
14
14
  import 'node:fs/promises';
15
15
  import './trimIdent-BAjmv_TG.mjs';
16
16
 
@@ -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-iuLlSiSF.cjs');
6
+ var _package = require('./package-uzlvxa5S.cjs');
7
7
  var promises = require('node:fs/promises');
8
8
 
9
9
  const PRIVATE_DIRECTORY_MODE = 448;
@@ -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-6KkRAops.mjs';
4
+ import { p as packageJson } from './package-Bw3H6VLn.mjs';
5
5
  import { mkdir, chmod, writeFile } from 'node:fs/promises';
6
6
 
7
7
  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-DWcHe035.mjs';
5
- import { A as ApiClient } from './api-_LeBScjg.mjs';
6
- import { f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-IhRiLDVe.mjs';
4
+ import { b as readCredentialsForConfiguredRelay } from './persistence-Cg4sfjQV.mjs';
5
+ import { A as ApiClient } from './api-DUfunY3x.mjs';
6
+ import { f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-ThKBP_zY.mjs';
7
7
  import { createServer } from 'http';
8
8
  import { randomBytes, createHash } from 'crypto';
9
- import { o as openBrowser } from './browser-BUIaSHK2.mjs';
9
+ import { o as openBrowser } from './browser-LHW2hBH8.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-Fd_rNvgd.mjs';
18
+ import './logger-JV7-4Q_6.mjs';
19
19
  import 'node:util';
20
20
  import 'node:path';
21
21
  import 'axios';
22
- import './lidState-CZOXXdzv.mjs';
22
+ import './lidState-B6yYKjNK.mjs';
23
23
  import 'node:events';
24
24
  import 'socket.io-client';
25
- import './pushNotifications-DkQ0yvFs.mjs';
26
- import './index-DYD3GM1m.mjs';
25
+ import './pushNotifications-BbE-qV9I.mjs';
26
+ import './index-D1YnIih6.mjs';
27
27
  import '@paralleldrive/cuid2';
28
28
  import './contentLogMetadata-BlWI0egu.mjs';
29
29
  import './limits-DIo7rEBR.mjs';
30
- import './time-bzmet4s5.mjs';
31
- import './registerCommonHandlers-yQ7Ru-l0.mjs';
30
+ import './time-Cw0liIqB.mjs';
31
+ import './registerCommonHandlers-Cj3Nl9y-.mjs';
32
32
  import 'fs/promises';
33
33
  import 'cross-spawn';
34
34
  import './projectPath-BTBIMB57.mjs';
35
35
  import 'url';
36
- import './sync-JoEZKRo8.mjs';
36
+ import './sync-BP6vnxVP.mjs';
37
37
  import './backgroundTaskActivity-8PdPxrvy.mjs';
38
- import './controlClient-8ILulwjc.mjs';
38
+ import './controlClient-Ckl8N1MS.mjs';
39
39
  import 'node:os';
40
- import './package-6KkRAops.mjs';
40
+ import './package-Bw3H6VLn.mjs';
41
41
  import 'open';
42
42
 
43
43
  const CLIENT_ID$2 = "app_EMoamEEZ73f0CkXaXp7hrann";
@@ -3,12 +3,12 @@
3
3
  var chalk = require('chalk');
4
4
  var os = require('os');
5
5
  var require$$1 = require('path');
6
- var persistence = require('./persistence-B4ttN-fR.cjs');
7
- var api = require('./api-hMDsC6Wg.cjs');
8
- var configuration = require('./configuration-CXEVKAyF.cjs');
6
+ var persistence = require('./persistence-CsmAgN-C.cjs');
7
+ var api = require('./api-CBE_a88I.cjs');
8
+ var configuration = require('./configuration-BBK0rmmj.cjs');
9
9
  var http = require('http');
10
10
  var require$$3 = require('crypto');
11
- var browser = require('./browser-Ft0ASDm7.cjs');
11
+ var browser = require('./browser-v1pdPP1E.cjs');
12
12
  var child_process = require('child_process');
13
13
  var util = require('util');
14
14
  require('node:fs/promises');
@@ -17,29 +17,29 @@ require('zod');
17
17
  require('./authRelay-Dy1qU9td.cjs');
18
18
  require('node:crypto');
19
19
  require('tweetnacl');
20
- require('./logger-8su64lqR.cjs');
20
+ require('./logger-CX3x2eI4.cjs');
21
21
  require('node:util');
22
22
  require('node:path');
23
23
  require('axios');
24
- require('./lidState-DqoN7zH4.cjs');
24
+ require('./lidState-B_v6qgfE.cjs');
25
25
  require('node:events');
26
26
  require('socket.io-client');
27
- require('./pushNotifications-BqFoLye2.cjs');
28
- require('./index-BzAYnYct.cjs');
27
+ require('./pushNotifications-BCg7YAiu.cjs');
28
+ require('./index-BUFrKZeQ.cjs');
29
29
  require('@paralleldrive/cuid2');
30
30
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
31
31
  require('./limits-C-a7gr04.cjs');
32
- require('./time-CaUlWSNJ.cjs');
33
- require('./registerCommonHandlers-m6pxxf2J.cjs');
32
+ require('./time-BTLcO8jp.cjs');
33
+ require('./registerCommonHandlers-CZGmrPbT.cjs');
34
34
  require('fs/promises');
35
35
  require('cross-spawn');
36
36
  require('./projectPath-C3ioB4Bu.cjs');
37
37
  require('url');
38
- require('./sync-_2lsZ1U2.cjs');
38
+ require('./sync-WYBwkJvG.cjs');
39
39
  require('./backgroundTaskActivity-CBvUdj39.cjs');
40
- require('./controlClient-j7p5p3_7.cjs');
40
+ require('./controlClient-DwWTns3A.cjs');
41
41
  require('node:os');
42
- require('./package-iuLlSiSF.cjs');
42
+ require('./package-uzlvxa5S.cjs');
43
43
  require('open');
44
44
 
45
45
  const CLIENT_ID$2 = "app_EMoamEEZ73f0CkXaXp7hrann";
@@ -3,7 +3,7 @@ import { constants } from 'node:fs';
3
3
  import { isAbsolute, join, dirname } from 'node:path';
4
4
  import { randomUUID } from 'node:crypto';
5
5
  import { z } from 'zod';
6
- import { n as normalizeHttpEndpoint, c as configuration } from './configuration-IhRiLDVe.mjs';
6
+ import { n as normalizeHttpEndpoint, c as configuration } from './configuration-ThKBP_zY.mjs';
7
7
 
8
8
  const TeamScopeSchema = z.object({
9
9
  serverUrl: z.string(),
@@ -5,7 +5,7 @@ var node_fs = require('node:fs');
5
5
  var path = require('node:path');
6
6
  var node_crypto = require('node:crypto');
7
7
  var z = require('zod');
8
- var configuration = require('./configuration-CXEVKAyF.cjs');
8
+ var configuration = require('./configuration-BBK0rmmj.cjs');
9
9
 
10
10
  const TeamScopeSchema = z.z.object({
11
11
  serverUrl: z.z.string(),
@@ -1,6 +1,6 @@
1
- import { l as logger } from './logger-Fd_rNvgd.mjs';
2
- import { d as readDaemonState, f as clearDaemonState } from './persistence-DWcHe035.mjs';
3
- import { c as configuration } from './configuration-IhRiLDVe.mjs';
1
+ import { l as logger } from './logger-JV7-4Q_6.mjs';
2
+ import { d as readDaemonState, f as clearDaemonState } from './persistence-Cg4sfjQV.mjs';
3
+ import { c as configuration } from './configuration-ThKBP_zY.mjs';
4
4
 
5
5
  function daemonControlHeaders(controlToken) {
6
6
  return {