very-happy-cli 0.2.191 → 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 (214) hide show
  1. package/dist/{AcpBackend-CCy_9AfR.mjs → AcpBackend-B4PwjqHt.mjs} +3 -3
  2. package/dist/{AcpBackend-DgrIc1vH.cjs → AcpBackend-DtJCgftG.cjs} +3 -3
  3. package/dist/{AcpSessionManager-CQnxx7gD.mjs → AcpSessionManager-BzKWgkdP.mjs} +2 -2
  4. package/dist/{AcpSessionManager-DVOzCD3P.cjs → AcpSessionManager-D4qshX_H.cjs} +2 -2
  5. package/dist/{BasePermissionHandler-C9Ag7yvs.cjs → BasePermissionHandler-5iG-cvA2.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-DYLN6Ec9.mjs → BasePermissionHandler-DV6UM6e9.mjs} +1 -1
  7. package/dist/account-Dco_nGT4.mjs +297 -0
  8. package/dist/account-DvpA60oU.cjs +302 -0
  9. package/dist/accountService-Cd7bnkfd.mjs +916 -0
  10. package/dist/accountService-CuUSJDhP.cjs +921 -0
  11. package/dist/{acpSessionResume-TvP_4Zq2.cjs → acpSessionResume-Bk9mjXZ9.cjs} +1 -1
  12. package/dist/{acpSessionResume-Bi7pA1n_.mjs → acpSessionResume-TQwN9ZZE.mjs} +1 -1
  13. package/dist/{agentHome-DGv105SR.mjs → agentHome-Bep8semY.mjs} +4 -4
  14. package/dist/{agentHome-DNUKJWOY.cjs → agentHome-c2dlgcw1.cjs} +4 -4
  15. package/dist/{api-BBxZ7y2z.cjs → api-CBE_a88I.cjs} +10 -10
  16. package/dist/{api-jfeMRg5R.mjs → api-DUfunY3x.mjs} +10 -10
  17. package/dist/{apiMachine-DqyjKBZG.cjs → apiMachine-BqtG0IWm.cjs} +83 -27
  18. package/dist/{apiMachine-DRJ7y-BB.mjs → apiMachine-CU_bw5nV.mjs} +78 -22
  19. package/dist/{attachmentContent-BO2njyza.cjs → attachmentContent-B3AzuYqk.cjs} +2 -2
  20. package/dist/{attachmentContent-Dm_RIs5L.mjs → attachmentContent-KNIZxwlu.mjs} +2 -2
  21. package/dist/{auth-BYDtjVNb.mjs → auth-CZ7pKS-j.mjs} +8 -8
  22. package/dist/{auth-DnxoVkkf.cjs → auth-DCjxpI6Z.cjs} +5 -5
  23. package/dist/{auth-DLR3ksCF.cjs → auth-SJ_dPw7H.cjs} +8 -8
  24. package/dist/{auth-DC6rg8lJ.mjs → auth-jN5dNqTO.mjs} +5 -5
  25. package/dist/{auto-CwO0u8hB.cjs → auto-B_59RYH1.cjs} +23 -21
  26. package/dist/{auto-D5Jhukq1.mjs → auto-DC0Sq-qB.mjs} +23 -21
  27. package/dist/{bootstrap-rLaL3kTa.mjs → bootstrap-B3gMpU9e.mjs} +2 -2
  28. package/dist/{bootstrap-sly4qPPY.cjs → bootstrap-CoJu9VnB.cjs} +2 -2
  29. package/dist/{browser-CHpVgyni.mjs → browser-LHW2hBH8.mjs} +1 -1
  30. package/dist/{browser-BTgZ9d4i.cjs → browser-v1pdPP1E.cjs} +1 -1
  31. package/dist/claudeAccountEnv-BL1pR_37.mjs +133 -0
  32. package/dist/claudeAccountEnv-CEX_EMZr.cjs +138 -0
  33. package/dist/{claudeLocal-Bgb5GGsq.mjs → claudeLocal-BZUgA5G2.mjs} +5 -5
  34. package/dist/{claudeLocal-1vuTFcL8.cjs → claudeLocal-BrzM2RBI.cjs} +5 -5
  35. package/dist/{claudeLocalLauncher-T7EfT68h.mjs → claudeLocalLauncher-A0AQyHFi.mjs} +10 -10
  36. package/dist/{claudeLocalLauncher-DOsL6HFY.cjs → claudeLocalLauncher-XAMpXUM7.cjs} +10 -10
  37. package/dist/{claudeSessionFork-Cko4SaVi.cjs → claudeSessionFork-Mhn2fYe_.cjs} +1 -1
  38. package/dist/{claudeSessionFork-CPvi6yDX.mjs → claudeSessionFork-_GwIlmMB.mjs} +1 -1
  39. package/dist/{client-BXD66ZF5.mjs → client-7RnI9J0W.mjs} +2 -2
  40. package/dist/{client-Bi20Ka0h.mjs → client-Bde4QVIn.mjs} +4 -2
  41. package/dist/{client-C5-C0t2a.cjs → client-CJr8Pjwm.cjs} +4 -2
  42. package/dist/{client-BscskEBk.cjs → client-D2GWkd-T.cjs} +2 -2
  43. package/dist/{client-C-OdTbrU.cjs → client-DLlnmAPL.cjs} +4 -4
  44. package/dist/{client-Bh1aUPh-.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-DXhAf6i-.mjs → codexAppServerClient-B3QJV6Ey.mjs} +18 -7
  50. package/dist/{codexAppServerClient-DKXeikEe.cjs → codexAppServerClient-DWEsZUC4.cjs} +18 -7
  51. package/dist/{codexCommand-DvbbpYBS.cjs → codexCommand-Bg8AmxVm.cjs} +195 -63
  52. package/dist/{codexCommand-CIaOiiOj.mjs → codexCommand-D1xlj4sT.mjs} +196 -64
  53. package/dist/{codexTermination-BszWfyk5.cjs → codexTermination-ByX9GcEJ.cjs} +1 -1
  54. package/dist/{codexTermination-BcQdEDaw.mjs → codexTermination-CaWAVQjZ.mjs} +1 -1
  55. package/dist/{config-Di3Cf6js.cjs → config-B2GGbiTv.cjs} +3 -3
  56. package/dist/{config-OCEcVVK1.mjs → config-C2XYEwXz.mjs} +3 -3
  57. package/dist/{configuration-DfPBa-9d.cjs → configuration-BBK0rmmj.cjs} +1 -1
  58. package/dist/{configuration-ECqXu34R.mjs → configuration-ThKBP_zY.mjs} +1 -1
  59. package/dist/{connect-BTfAUhk8.mjs → connect-BirnCl9q.mjs} +13 -13
  60. package/dist/{connect-BPQRuOw5.cjs → connect-C3tZs_NC.cjs} +13 -13
  61. package/dist/{context-CfgTFpCB.mjs → context-C0EFLnOg.mjs} +1 -1
  62. package/dist/{context-Co7hUaW-.cjs → context-wDp0aZBK.cjs} +1 -1
  63. package/dist/{controlClient-ClI7A0qE.mjs → controlClient-Ckl8N1MS.mjs} +14 -5
  64. package/dist/{controlClient-C13_pSKG.cjs → controlClient-DwWTns3A.cjs} +15 -4
  65. package/dist/{createSessionMetadata-Cf78KHtt.cjs → createSessionMetadata-DqZ6h02H.cjs} +2 -2
  66. package/dist/{createSessionMetadata-B0eT_Kfj.mjs → createSessionMetadata-vug4Cv8z.mjs} +2 -2
  67. package/dist/daemonAccounts-CpGDY_4k.cjs +54 -0
  68. package/dist/daemonAccounts-DwPwKxvv.mjs +30 -0
  69. package/dist/{defaultPermissionMode-oqTupStc.cjs → defaultPermissionMode-BakXiqRr.cjs} +1 -1
  70. package/dist/{defaultPermissionMode-m6z2QVyP.mjs → defaultPermissionMode-DF5AfeBb.mjs} +1 -1
  71. package/dist/{deterministicJson-BtSwbsok.mjs → deterministicJson-BzX94gi3.mjs} +13 -13
  72. package/dist/{deterministicJson-CpFFgUL_.cjs → deterministicJson-t33SsuRC.cjs} +13 -13
  73. package/dist/{doctor-BEU0_1Xv.cjs → doctor-B9ug1LZb.cjs} +7 -7
  74. package/dist/{doctor-lsxmAK4o.mjs → doctor-C1zyOSXw.mjs} +7 -7
  75. package/dist/{downloadTarget-BXqXhNF7.mjs → downloadTarget-Baslc6jW.mjs} +6 -6
  76. package/dist/{downloadTarget-CikzJv1h.cjs → downloadTarget-T1id2Gh6.cjs} +6 -6
  77. package/dist/{ensureDaemonRunning-B_9WAlbU.mjs → ensureDaemonRunning-C6ERYK-O.mjs} +5 -5
  78. package/dist/{ensureDaemonRunning-BUuH-pbE.cjs → ensureDaemonRunning-CoAg11Zi.cjs} +5 -5
  79. package/dist/{handleResumeCommand-BK9XKH_l.mjs → handleResumeCommand-CrlqDuz7.mjs} +5 -5
  80. package/dist/{handleResumeCommand-Dj7oi2KO.cjs → handleResumeCommand-DPi-sPm7.cjs} +5 -5
  81. package/dist/{index-D3c7CLot.cjs → index-B1swQJUS.cjs} +4 -4
  82. package/dist/{index-CmZusg8Q.cjs → index-B2dJA8VG.cjs} +3 -3
  83. package/dist/{index-CLUHaPU8.cjs → index-BUFrKZeQ.cjs} +205 -5
  84. package/dist/{index-BjZnpGWX.mjs → index-BbdV2mzy.mjs} +3 -3
  85. package/dist/{index-BdOJOZ6J.mjs → index-BcSPg3c5.mjs} +4 -4
  86. package/dist/{index-CauRYQKr.cjs → index-Bkslzin5.cjs} +44 -40
  87. package/dist/{index-DuK9XYbZ.mjs → index-Cn73rdtQ.mjs} +4 -4
  88. package/dist/{index-Bq8NKSCF.mjs → index-D1YnIih6.mjs} +195 -6
  89. package/dist/{index-Cxso1rg4.mjs → index-fZO4nF6e.mjs} +45 -41
  90. package/dist/{index-Dg2NAF_-.cjs → index-rocrvOYG.cjs} +4 -4
  91. package/dist/index.cjs +2 -2
  92. package/dist/index.mjs +2 -2
  93. package/dist/{install-DXllkuy0.cjs → install-CArXjPfW.cjs} +3 -3
  94. package/dist/{install-DTIveLOS.mjs → install-CChhyV2G.mjs} +3 -3
  95. package/dist/lib.cjs +12 -12
  96. package/dist/lib.d.cts +354 -0
  97. package/dist/lib.d.mts +354 -0
  98. package/dist/lib.mjs +12 -12
  99. package/dist/{lidState-CD81ryTy.mjs → lidState-B6yYKjNK.mjs} +1 -1
  100. package/dist/{lidState-C9_DoF9i.cjs → lidState-B_v6qgfE.cjs} +1 -1
  101. package/dist/{localHappyAgentAuth-Cg-m1lwm.mjs → localHappyAgentAuth-KRlg_aI0.mjs} +1 -1
  102. package/dist/{localHappyAgentAuth-CCjUvOfi.cjs → localHappyAgentAuth-jJH0n67S.cjs} +1 -1
  103. package/dist/{logger-Ct2zvaq0.cjs → logger-CX3x2eI4.cjs} +2 -2
  104. package/dist/{logger-GcbI0eg2.mjs → logger-JV7-4Q_6.mjs} +2 -2
  105. package/dist/{machineMetadata-CXRmFNOV.mjs → machineMetadata-D5-SW9kv.mjs} +3 -3
  106. package/dist/{machineMetadata-DDCVWb_x.cjs → machineMetadata-DhZuM0iB.cjs} +3 -3
  107. package/dist/{main-BHC-WIcM.cjs → main-1x1HGQEy.cjs} +92 -48
  108. package/dist/{main-omGr_ONk.mjs → main-CFOdXbPD.mjs} +92 -48
  109. package/dist/{mcp-xUzii0m8.cjs → mcp-BnKBSEh7.cjs} +18 -15
  110. package/dist/{mcp-D5hxmRAq.mjs → mcp-R6lMcFLO.mjs} +18 -15
  111. package/dist/{mirrorProtocol-Lcx20Oby.mjs → mirrorProtocol-CD4ntuZJ.mjs} +3 -3
  112. package/dist/{mirrorProtocol-Dfl8Ahyf.cjs → mirrorProtocol-DO-KtvAL.cjs} +3 -3
  113. package/dist/{package-BsUHyqWe.mjs → package-Bw3H6VLn.mjs} +7 -7
  114. package/dist/{package-9n7wd2dT.cjs → package-uzlvxa5S.cjs} +7 -7
  115. package/dist/{panels-CpEKWWbI.mjs → panels-BamhZCoZ.mjs} +5 -5
  116. package/dist/{panels-BfknEmt7.cjs → panels-C46FxjmH.cjs} +5 -5
  117. package/dist/{peerTools-CElYh-5u.cjs → peerTools-D-VNNFw-.cjs} +5 -5
  118. package/dist/{peerTools-CwCe6tmJ.mjs → peerTools-WtRgTSqG.mjs} +5 -5
  119. package/dist/{persistence-Cpw4yJs8.mjs → persistence-Cg4sfjQV.mjs} +2 -2
  120. package/dist/{persistence-A2NeERZJ.cjs → persistence-CsmAgN-C.cjs} +2 -2
  121. package/dist/{piRunnerArgs-Bqmu16He.mjs → piRunnerArgs-BbaAQvb4.mjs} +2 -2
  122. package/dist/{piRunnerArgs-BnFU0K73.cjs → piRunnerArgs-vnFygygF.cjs} +1 -1
  123. package/dist/{piRuntime-Cgn1b0OX.mjs → piRuntime-Bid7TBf5.mjs} +1 -1
  124. package/dist/{piRuntime-DpS9TAIs.cjs → piRuntime-C2uj5Ucx.cjs} +1 -1
  125. package/dist/{piTerminal-rmve-VlI.cjs → piTerminal-Ckpjfoqa.cjs} +20 -17
  126. package/dist/{piTerminal-BGdps8f3.mjs → piTerminal-CqxgrI13.mjs} +20 -17
  127. package/dist/{pushNotifications-23YSd-0l.cjs → pushNotifications-BCg7YAiu.cjs} +5 -3
  128. package/dist/{pushNotifications-XAM8__Pg.mjs → pushNotifications-BbE-qV9I.mjs} +5 -3
  129. package/dist/{query-SZcYnJoW.mjs → query-Bfr9O_62.mjs} +1 -1
  130. package/dist/{query-u2GX-I0C.cjs → query-vQ-HG394.cjs} +1 -1
  131. package/dist/{rateLimitReporter-CaTzBe3x.cjs → rateLimitReporter-BZ8x0-6-.cjs} +3 -3
  132. package/dist/{rateLimitReporter-COUkf446.mjs → rateLimitReporter-CAz7VMw4.mjs} +3 -3
  133. package/dist/{rateLimitWindows-B2Kx6L0S.cjs → rateLimitWindows-BZl6GMwQ.cjs} +1 -1
  134. package/dist/{rateLimitWindows-j_qQk0KY.mjs → rateLimitWindows-CRARnKaI.mjs} +1 -1
  135. package/dist/reconnectEnv-B31lY4nR.cjs +27 -0
  136. package/dist/reconnectEnv-DeSvHl3q.mjs +24 -0
  137. package/dist/{registerCommonHandlers-D1MiSfcB.cjs → registerCommonHandlers-CZGmrPbT.cjs} +2 -2
  138. package/dist/{registerCommonHandlers-DRRfinzK.mjs → registerCommonHandlers-Cj3Nl9y-.mjs} +2 -2
  139. package/dist/{registerKillSessionHandler-Cpug_r5C.mjs → registerKillSessionHandler-Bg9t45Ub.mjs} +6 -6
  140. package/dist/{registerKillSessionHandler-hvCsEn7b.cjs → registerKillSessionHandler-C3EDnW4F.cjs} +6 -6
  141. package/dist/{remoteSessionClient-BdnJ_n8C.mjs → remoteSessionClient--0vfA7I5.mjs} +5 -5
  142. package/dist/{remoteSessionClient-6ymeMVa4.cjs → remoteSessionClient-CcSP24Zq.cjs} +5 -5
  143. package/dist/{reportProgressTool-XgQBzxoD.mjs → reportProgressTool-DVru7jc_.mjs} +3 -3
  144. package/dist/{reportProgressTool-tzQLCLIw.cjs → reportProgressTool-Ddg1yVq2.cjs} +3 -3
  145. package/dist/{run-DYL_wuj7.cjs → run-BTrIT_jU.cjs} +347 -856
  146. package/dist/{run-Bt0AklUU.mjs → run-HtvH6BLi.mjs} +346 -855
  147. package/dist/{runClaude-C3rii_S6.mjs → runClaude-DsHTk5Bu.mjs} +62 -44
  148. package/dist/{runClaude-CBEpYO4S.cjs → runClaude-ipjwAHPI.cjs} +62 -44
  149. package/dist/{runClaudeDeps-CYuozSC6.cjs → runClaudeDeps-BKpwL6ln.cjs} +51 -42
  150. package/dist/{runClaudeDeps-DlVfMG4F.mjs → runClaudeDeps-BV3vpeyY.mjs} +56 -47
  151. package/dist/{runGemini-CEI3b90u.cjs → runGemini-B-G0_7Ab.cjs} +33 -33
  152. package/dist/{runGemini-DkYhRk9S.mjs → runGemini-DhjK6_Fp.mjs} +33 -33
  153. package/dist/{runOpenClaw-DpprWCoz.mjs → runOpenClaw-B6lawk8n.mjs} +18 -18
  154. package/dist/{runOpenClaw-BgjD6E4d.cjs → runOpenClaw-BHIo8tkn.cjs} +18 -18
  155. package/dist/{sandbox-XCDUbH72.cjs → sandbox-BAsO0ILe.cjs} +4 -4
  156. package/dist/{sandbox-DJ7A7lsy.mjs → sandbox-CKb7pCXg.mjs} +4 -4
  157. package/dist/selfCheck-CZ-t1Xzq.mjs +88 -0
  158. package/dist/{selfCheck-BYUDB1Uq.cjs → selfCheck-D4VvVZNi.cjs} +39 -37
  159. package/dist/{send-CASDBCyJ.cjs → send-Cz5m39QR.cjs} +8 -8
  160. package/dist/{send-Ba63huxv.mjs → send-D8ipLKMY.mjs} +8 -8
  161. package/dist/{server-w3W0toNd.mjs → server-CjvgT3N9.mjs} +4 -4
  162. package/dist/{server-cZoV9XRt.cjs → server-CySyJKPH.cjs} +6 -6
  163. package/dist/{sessionLock-G2PMqvsh.mjs → sessionLock-B73fhgQN.mjs} +10 -4
  164. package/dist/{sessionLock-BmLA2S8K.cjs → sessionLock-DdDCuNUs.cjs} +10 -3
  165. package/dist/{sessionOps-DPw5k8vV.mjs → sessionOps-C65Iej_C.mjs} +50 -8
  166. package/dist/{sessionOps-DXlTmS7J.cjs → sessionOps-XSEjIqNq.cjs} +50 -8
  167. package/dist/sessionProvider-CLVNkfji.mjs +110 -0
  168. package/dist/sessionProvider-Dgsty8z_.cjs +115 -0
  169. package/dist/{sessionScanner-AHjnicxi.cjs → sessionScanner-D8IVXMMH.cjs} +3 -3
  170. package/dist/{sessionScanner-BCXpdZJN.mjs → sessionScanner-MW1P9Pm9.mjs} +3 -3
  171. package/dist/{sessions-BiBXOBx0.cjs → sessions-BKz7gZqg.cjs} +10 -10
  172. package/dist/{sessions-Clk8MR5Y.mjs → sessions-Dtk_agUL.mjs} +10 -10
  173. package/dist/{setupOfflineReconnection-DI-QZGYz.mjs → setupOfflineReconnection-Bvdy-2xd.mjs} +2 -2
  174. package/dist/{setupOfflineReconnection-BKLfOd-i.cjs → setupOfflineReconnection-DxMiW7OV.cjs} +2 -2
  175. package/dist/{spawn-D5omsx1Q.cjs → spawn-DiPkJcrQ.cjs} +36 -17
  176. package/dist/{spawn-4tsp1uhh.mjs → spawn-Dm4xsZBX.mjs} +36 -17
  177. package/dist/{spawnAgents-CtkkIFHd.cjs → spawnAgents-B9olJ8xn.cjs} +1 -1
  178. package/dist/{spawnAgents-CjoU6ZOS.mjs → spawnAgents-I29H9nO8.mjs} +1 -1
  179. package/dist/{spawnHappyCLI-CF_gLi92.cjs → spawnHappyCLI-BYGOUda1.cjs} +1 -1
  180. package/dist/{spawnHappyCLI-CIA9Sc_5.mjs → spawnHappyCLI-CnMwzjWX.mjs} +1 -1
  181. package/dist/{startFileWatcher-9Stpxe7p.cjs → startFileWatcher-D14W6gn-.cjs} +1 -1
  182. package/dist/{startFileWatcher-CDO6fb2m.mjs → startFileWatcher-DePAY1T5.mjs} +1 -1
  183. package/dist/{startupSessionCreate-BtR4iYEC.mjs → startupSessionCreate-DoK0IvJG.mjs} +3 -3
  184. package/dist/{startupSessionCreate-CcF7rGGB.cjs → startupSessionCreate-rBHd4tc1.cjs} +3 -3
  185. package/dist/store-CkNa6oj4.cjs +326 -0
  186. package/dist/store-Vej_738f.mjs +305 -0
  187. package/dist/{streamRelay-BhI6jqF-.cjs → streamRelay-C0G1HOOd.cjs} +1 -1
  188. package/dist/{streamRelay-DMwOMTKf.mjs → streamRelay-C5U-C4GS.mjs} +1 -1
  189. package/dist/{sync-C0PRuTMj.mjs → sync-BP6vnxVP.mjs} +1 -1
  190. package/dist/{sync-Ba8N6xba.cjs → sync-WYBwkJvG.cjs} +1 -1
  191. package/dist/{systemPrompt-DV5IReD4.cjs → systemPrompt-BkQlCk5_.cjs} +2 -2
  192. package/dist/{systemPrompt-D0q8eyjy.mjs → systemPrompt-aRqBmkpw.mjs} +2 -2
  193. package/dist/{teams-BO3_arwM.mjs → teams-CGmC4ygu.mjs} +7 -7
  194. package/dist/{teams-z3Gp-KlV.cjs → teams-phbpwAGD.cjs} +7 -7
  195. package/dist/{template-B_5l6pkc.cjs → template-B9pLEP8v.cjs} +2 -2
  196. package/dist/{template-DLR_0hfj.mjs → template-CL9EvQLQ.mjs} +2 -2
  197. package/dist/{time-Cy0a-7YX.cjs → time-BTLcO8jp.cjs} +1 -1
  198. package/dist/{time-D0jvDRhn.mjs → time-Cw0liIqB.mjs} +1 -1
  199. package/dist/{titleGenerator-RGHWP2YL.cjs → titleGenerator-Y1_7ceJC.cjs} +17 -13
  200. package/dist/{titleGenerator-AGQsXskb.mjs → titleGenerator-h6TmFe-c.mjs} +16 -12
  201. package/dist/{todo-CzIDPLFy.cjs → todo-BxiPiCvB.cjs} +6 -6
  202. package/dist/{todo-BZ954vsz.mjs → todo-OKcTC_VC.mjs} +6 -6
  203. package/dist/{tools-Bei5i03L.mjs → tools-BR-drXZ8.mjs} +3 -2
  204. package/dist/{tools-B1x1j6tz.cjs → tools-CcebYtLj.cjs} +3 -2
  205. package/dist/{uninstall-C3cnIvz1.cjs → uninstall-CnDeCC-M.cjs} +3 -3
  206. package/dist/{uninstall-B4T_e3Mr.mjs → uninstall-D3stWKD2.mjs} +3 -3
  207. package/dist/wrapperAccount-BkufO_9g.mjs +107 -0
  208. package/dist/wrapperAccount-D2A4DuZy.cjs +113 -0
  209. package/package.json +7 -7
  210. package/dist/providerBinding-B-Qbx9W2.cjs +0 -140
  211. package/dist/providerBinding-CYubGg-Z.mjs +0 -132
  212. package/dist/selfCheck-C-rNljKV.mjs +0 -86
  213. package/dist/sessionProvider-DUn91LhJ.mjs +0 -109
  214. package/dist/sessionProvider-Dg691XQ4.cjs +0 -114
@@ -1,107 +1,112 @@
1
- import { a as authAndSetupMachineIfNeeded } from './auth-DC6rg8lJ.mjs';
2
- import { j as createEnvelope, t as BUILTIN_TODO_DISCOVERY, r as restoredEffort, m as readEffortIntent, E as EFFORT_INTENT_AUTO, P as PROMPT_QUEUE_CAPABILITY, Y as CODEX_STEER_CAPABILITY, a as PROJECT_SESSION_CAPABILITY, Z as CODEX_COMPACT_CAPABILITY, R as RUN_INTENT_CAPABILITY } from './index-Bq8NKSCF.mjs';
3
- import { a as recordRunIntents, w as withoutEffort, r as registerRunIntentRpc, b as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-m6z2QVyP.mjs';
4
- import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-BtSwbsok.mjs';
5
- import { s as sharedProjectsClient } from './client-Bi20Ka0h.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-jfeMRg5R.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-Dm_RIs5L.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-G2PMqvsh.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-DXhAf6i-.mjs';
17
- import { w as wrapperRateLimitReporter } from './rateLimitReporter-COUkf446.mjs';
18
- import { l as logger } from './logger-GcbI0eg2.mjs';
19
- import { B as BasePermissionHandler } from './BasePermissionHandler-DYLN6Ec9.mjs';
20
- import { B as BaseReasoningProcessor, s as settleCodexSession } from './codexTermination-BcQdEDaw.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-Cpw4yJs8.mjs';
23
- import { g as getInitialMachineMetadata } from './machineMetadata-CXRmFNOV.mjs';
24
- import { c as configuration } from './configuration-ECqXu34R.mjs';
25
- import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-Cpug_r5C.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-B0eT_Kfj.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, k as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient-ClI7A0qE.mjs';
31
- import { c as createSessionForStartup, b as HibernationExitLatch, H as HibernationProbe, a as commitHibernation } from './startupSessionCreate-BtR4iYEC.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-DI-QZGYz.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
- import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-B_9WAlbU.mjs';
38
+ import { t as takeReconnectEnv } from './reconnectEnv-DeSvHl3q.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';
39
44
  import 'tweetnacl';
40
45
  import 'axios';
41
- import './time-D0jvDRhn.mjs';
42
- import './browser-CHpVgyni.mjs';
46
+ import './time-Cw0liIqB.mjs';
47
+ import './browser-LHW2hBH8.mjs';
43
48
  import 'open';
44
49
  import 'zod';
45
50
  import './prompt-QHuFx9j6.mjs';
46
- import './reportProgressTool-XgQBzxoD.mjs';
47
- import './client-BXD66ZF5.mjs';
51
+ import './reportProgressTool-DVru7jc_.mjs';
52
+ import './client-7RnI9J0W.mjs';
48
53
  import './precheckCompat-DeEbilbr.mjs';
49
54
  import './agentGuidance-BDYt2Qy2.mjs';
50
- import 'node:fs';
51
55
  import 'node:os';
52
56
  import './pi-CqyoZMjI.mjs';
53
57
  import './fileStore-5qpetZS0.mjs';
54
- import './client-Bh1aUPh-.mjs';
58
+ import './client-DwbhrX6D.mjs';
55
59
  import 'node:util';
56
- import './context-CfgTFpCB.mjs';
57
- import './sessionOps-DPw5k8vV.mjs';
60
+ import './context-C0EFLnOg.mjs';
61
+ import './sessionOps-C65Iej_C.mjs';
58
62
  import 'socket.io-client';
59
63
  import './backgroundTaskActivity-8PdPxrvy.mjs';
60
64
  import './resources-CLP_MpK4.mjs';
61
- import './tools-Bei5i03L.mjs';
62
- import './peerTools-CwCe6tmJ.mjs';
65
+ import './tools-BR-drXZ8.mjs';
66
+ import './peerTools-WtRgTSqG.mjs';
63
67
  import './ids-DU6sLx4C.mjs';
64
- import './remoteSessionClient-BdnJ_n8C.mjs';
68
+ import './remoteSessionClient--0vfA7I5.mjs';
65
69
  import '@modelcontextprotocol/sdk/server/mcp.js';
66
70
  import 'node:http';
67
71
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
68
72
  import './limits-DIo7rEBR.mjs';
69
- import './downloadTarget-BXqXhNF7.mjs';
73
+ import './downloadTarget-Baslc6jW.mjs';
70
74
  import './terminals-Dlg0x3nY.mjs';
71
75
  import './terminalTitleSuggest-CeKsX_V6.mjs';
72
76
  import './tmuxSocket-B8Yx20sT.mjs';
73
- import './bootstrap-rLaL3kTa.mjs';
74
- import './package-BsUHyqWe.mjs';
77
+ import './bootstrap-B3gMpU9e.mjs';
78
+ import './package-Bw3H6VLn.mjs';
75
79
  import './webPanels-B2_C2-3g.mjs';
76
- import './pushNotifications-XAM8__Pg.mjs';
80
+ import './pushNotifications-BbE-qV9I.mjs';
77
81
  import './contentLogMetadata-BlWI0egu.mjs';
78
82
  import './previewPath-CXN4Vag0.mjs';
79
83
  import 'crypto';
80
- import './lidState-CD81ryTy.mjs';
84
+ import './lidState-B6yYKjNK.mjs';
81
85
  import 'os';
82
86
  import 'child_process';
83
87
  import 'node:events';
84
- import './registerCommonHandlers-DRRfinzK.mjs';
88
+ import './registerCommonHandlers-Cj3Nl9y-.mjs';
85
89
  import 'util';
86
90
  import 'fs/promises';
87
91
  import 'path';
88
92
  import 'cross-spawn';
89
- import './sync-C0PRuTMj.mjs';
93
+ import './sync-BP6vnxVP.mjs';
90
94
  import 'chalk';
91
95
  import './cliUpdate-Y34VGe9Y.mjs';
92
96
  import './processTreeSnapshot-CuLJDNC-.mjs';
93
97
  import 'node:readline';
94
98
  import './manager-BEsI4qt3.mjs';
95
99
  import '@anthropic-ai/sandbox-runtime';
96
- import './rateLimitWindows-j_qQk0KY.mjs';
100
+ import './rateLimitWindows-CRARnKaI.mjs';
97
101
  import './processTree-CP5IvQ2Z.mjs';
98
102
  import './detectCLI-CSGMlV51.mjs';
99
103
  import 'fs';
100
- import './localHappyAgentAuth-Cg-m1lwm.mjs';
104
+ import './localHappyAgentAuth-KRlg_aI0.mjs';
101
105
  import './fsMkdir-DumgLTzR.mjs';
102
106
  import './types-CkqAACXx.mjs';
103
107
  import 'url';
104
- import './spawnHappyCLI-CIA9Sc_5.mjs';
108
+ import './claudeAccountEnv-BL1pR_37.mjs';
109
+ import './spawnHappyCLI-CnMwzjWX.mjs';
105
110
  import './doctorReadiness-C208SMN9.mjs';
106
111
 
107
112
  function getStartedSubagents(state) {
@@ -1183,7 +1188,8 @@ async function resumeExistingThread(opts) {
1183
1188
  const resumedThread = await opts.client.resumeThread({
1184
1189
  threadId: opts.threadId,
1185
1190
  cwd: opts.cwd,
1186
- mcpServers: opts.mcpServers
1191
+ mcpServers: opts.mcpServers,
1192
+ ...opts.model ? { model: opts.model } : {}
1187
1193
  });
1188
1194
  opts.session.updateMetadata((currentMetadata) => ({
1189
1195
  ...currentMetadata,
@@ -1461,6 +1467,70 @@ function codexPublishablePermissionMode(mode) {
1461
1467
  return typeof mode === "string" && CODEX_REMOTE_PERMISSION_MODES.includes(mode) ? mode : null;
1462
1468
  }
1463
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
+
1464
1534
  const DEFAULT_CODEX_MODEL = void 0;
1465
1535
  const DEFAULT_CODEX_EFFORT = "medium";
1466
1536
  async function runCodex(opts) {
@@ -1477,6 +1547,8 @@ async function runCodex(opts) {
1477
1547
  console.error(" \x1B[36mvery-happy claude\x1B[0m\n");
1478
1548
  process.exit(1);
1479
1549
  }
1550
+ const spawnAccountId = process.env[SPAWN_ACCOUNT_ENV] || void 0;
1551
+ delete process.env[SPAWN_ACCOUNT_ENV];
1480
1552
  const sessionTag = randomUUID();
1481
1553
  connectionState.setBackend("Codex");
1482
1554
  const api = await ApiClient.create(opts.credentials);
@@ -1505,7 +1577,7 @@ async function runCodex(opts) {
1505
1577
  dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
1506
1578
  ...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
1507
1579
  ...forkedFromMessageId ? { forkedFromMessageId } : {},
1508
- 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]
1509
1581
  });
1510
1582
  metadata.attachmentKinds = [...CLAUDE_ATTACHMENT_KINDS];
1511
1583
  metadata.stickyModel = null;
@@ -1518,12 +1590,13 @@ async function runCodex(opts) {
1518
1590
  const importTitle = process.env.HAPPY_IMPORT_TITLE;
1519
1591
  if (importTitle) metadata.summary = { text: importTitle, updatedAt: Date.now() };
1520
1592
  }
1521
- const reconnectSessionId = process.env.HAPPY_RECONNECT_SESSION_ID;
1522
- const reconnectKeyBase64 = process.env.HAPPY_RECONNECT_ENCRYPTION_KEY;
1523
- const reconnectVariant = process.env.HAPPY_RECONNECT_ENCRYPTION_VARIANT;
1524
- const reconnectSeq = process.env.HAPPY_RECONNECT_SEQ;
1525
- const reconnectMetadataVersion = process.env.HAPPY_RECONNECT_METADATA_VERSION;
1526
- const reconnectAgentStateVersion = process.env.HAPPY_RECONNECT_AGENT_STATE_VERSION;
1593
+ const reconnectEnv = takeReconnectEnv();
1594
+ const reconnectSessionId = reconnectEnv.HAPPY_RECONNECT_SESSION_ID;
1595
+ const reconnectKeyBase64 = reconnectEnv.HAPPY_RECONNECT_ENCRYPTION_KEY;
1596
+ const reconnectVariant = reconnectEnv.HAPPY_RECONNECT_ENCRYPTION_VARIANT;
1597
+ const reconnectSeq = reconnectEnv.HAPPY_RECONNECT_SEQ;
1598
+ const reconnectMetadataVersion = reconnectEnv.HAPPY_RECONNECT_METADATA_VERSION;
1599
+ const reconnectAgentStateVersion = reconnectEnv.HAPPY_RECONNECT_AGENT_STATE_VERSION;
1527
1600
  let response;
1528
1601
  if (reconnectSessionId && reconnectKeyBase64 && reconnectVariant) {
1529
1602
  logger.debug(`[START] Reconnecting to existing session ${reconnectSessionId}`);
@@ -1566,6 +1639,21 @@ async function runCodex(opts) {
1566
1639
  }
1567
1640
  }
1568
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)" : ""}`);
1569
1657
  let session;
1570
1658
  let permissionHandler;
1571
1659
  let client;
@@ -1594,6 +1682,25 @@ async function runCodex(opts) {
1594
1682
  if (!wakingFromHibernation) void session.cancelUndeliveredQueuedInputs(reconnectReplay ? { maxSeq: reconnectReplay.seq } : void 0);
1595
1683
  session.updateMetadata((meta) => mergeReconnectMetadata(meta, metadata, Date.now()));
1596
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
+ };
1597
1704
  if (response) {
1598
1705
  try {
1599
1706
  logger.debug(`[START] Reporting session ${response.id} to daemon`);
@@ -1686,6 +1793,11 @@ async function runCodex(opts) {
1686
1793
  };
1687
1794
  let userMessageDelivery = Promise.resolve();
1688
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
+ }
1689
1801
  const downloads = session.drainAttachmentsForUserMessage();
1690
1802
  userMessageDelivery = userMessageDelivery.then(async () => {
1691
1803
  const attachments = await downloads;
@@ -1950,6 +2062,7 @@ async function runCodex(opts) {
1950
2062
  process.stdin.setEncoding("utf8");
1951
2063
  }
1952
2064
  client = new CodexAppServerClient(sandboxConfig);
2065
+ client.setAccountOverrides(codexAccount.overrides);
1953
2066
  const idleRelease = new CodexIdleReleaseTimer({
1954
2067
  delayMs: resolveCodexIdleReleaseMs(process.env[CODEX_IDLE_RELEASE_ENV]),
1955
2068
  isIdle: () => shouldReleaseIdleCodex({
@@ -2019,6 +2132,7 @@ async function runCodex(opts) {
2019
2132
  if (failure) {
2020
2133
  messageBuffer.addMessage(`Task failed: ${failure}`, "status");
2021
2134
  session.sendSessionEvent({ type: "message", message: `Codex error: ${failure}` });
2135
+ noteAccountFailure(failure);
2022
2136
  } else {
2023
2137
  messageBuffer.addMessage("Task completed", "status");
2024
2138
  }
@@ -2027,6 +2141,7 @@ async function runCodex(opts) {
2027
2141
  if (failure) {
2028
2142
  messageBuffer.addMessage(`Turn aborted: ${failure}`, "status");
2029
2143
  session.sendSessionEvent({ type: "message", message: `Codex error: ${failure}` });
2144
+ noteAccountFailure(failure);
2030
2145
  } else {
2031
2146
  messageBuffer.addMessage("Turn aborted", "status");
2032
2147
  }
@@ -2133,6 +2248,11 @@ async function runCodex(opts) {
2133
2248
  logger.debug("[Codex] config/read unavailable", safeCodexErrorMetadata(error));
2134
2249
  }
2135
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
+ }
2136
2256
  if (discoveredModels.length > 0 || configured) {
2137
2257
  session.updateMetadata((metadata2) => ({
2138
2258
  ...metadata2,
@@ -2145,22 +2265,30 @@ async function runCodex(opts) {
2145
2265
  defaultReasoningEffort: model.defaultReasoningEffort
2146
2266
  }))
2147
2267
  } : {},
2148
- defaultModelCode: configured?.model ?? discoveredModels.find((model) => model.isDefault)?.model,
2149
- ...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 } : {}
2150
2270
  }));
2151
2271
  }
2152
2272
  } catch (error) {
2153
2273
  logger.debug("[Codex] Model discovery unavailable; using compatibility fallback", safeCodexErrorMetadata(error));
2154
2274
  }
2155
- if (opts.resumeThreadId) {
2156
- await resumeExistingThread({
2157
- client,
2158
- session,
2159
- messageBuffer,
2160
- threadId: opts.resumeThreadId,
2161
- cwd: process.cwd(),
2162
- mcpServers
2163
- });
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
+ }
2164
2292
  first = false;
2165
2293
  appendSystemPromptInjected = true;
2166
2294
  }
@@ -2356,7 +2484,10 @@ async function runCodex(opts) {
2356
2484
  }
2357
2485
  if (!client.hasActiveThread()) {
2358
2486
  const startedThread = await client.startThread({
2359
- 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),
2360
2491
  cwd: process.cwd(),
2361
2492
  approvalPolicy: executionPolicy.approvalPolicy,
2362
2493
  sandbox: executionPolicy.sandbox,
@@ -2411,6 +2542,7 @@ async function runCodex(opts) {
2411
2542
  if (reason) {
2412
2543
  messageBuffer.addMessage(`Task failed: ${reason}`, "status");
2413
2544
  session.sendSessionEvent({ type: "message", message: `Codex error: ${reason}` });
2545
+ noteAccountFailure(reason);
2414
2546
  } else {
2415
2547
  const tail = codexStderrTailOf(error);
2416
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-Ct2zvaq0.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-GcbI0eg2.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-Ct2zvaq0.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-DfPBa-9d.cjs');
11
+ require('./configuration-BBK0rmmj.cjs');
12
12
  require('node:fs');
13
13
  require('node:os');
14
14
  require('node:path');
15
- require('./package-9n7wd2dT.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-GcbI0eg2.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-ECqXu34R.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-BsUHyqWe.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-9n7wd2dT.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-BsUHyqWe.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-Cpw4yJs8.mjs';
5
- import { A as ApiClient } from './api-jfeMRg5R.mjs';
6
- import { f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-ECqXu34R.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-CHpVgyni.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-GcbI0eg2.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-CD81ryTy.mjs';
22
+ import './lidState-B6yYKjNK.mjs';
23
23
  import 'node:events';
24
24
  import 'socket.io-client';
25
- import './pushNotifications-XAM8__Pg.mjs';
26
- import './index-Bq8NKSCF.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-D0jvDRhn.mjs';
31
- import './registerCommonHandlers-DRRfinzK.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-C0PRuTMj.mjs';
36
+ import './sync-BP6vnxVP.mjs';
37
37
  import './backgroundTaskActivity-8PdPxrvy.mjs';
38
- import './controlClient-ClI7A0qE.mjs';
38
+ import './controlClient-Ckl8N1MS.mjs';
39
39
  import 'node:os';
40
- import './package-BsUHyqWe.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-A2NeERZJ.cjs');
7
- var api = require('./api-BBxZ7y2z.cjs');
8
- var configuration = require('./configuration-DfPBa-9d.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-BTgZ9d4i.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-Ct2zvaq0.cjs');
20
+ require('./logger-CX3x2eI4.cjs');
21
21
  require('node:util');
22
22
  require('node:path');
23
23
  require('axios');
24
- require('./lidState-C9_DoF9i.cjs');
24
+ require('./lidState-B_v6qgfE.cjs');
25
25
  require('node:events');
26
26
  require('socket.io-client');
27
- require('./pushNotifications-23YSd-0l.cjs');
28
- require('./index-CLUHaPU8.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-Cy0a-7YX.cjs');
33
- require('./registerCommonHandlers-D1MiSfcB.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-Ba8N6xba.cjs');
38
+ require('./sync-WYBwkJvG.cjs');
39
39
  require('./backgroundTaskActivity-CBvUdj39.cjs');
40
- require('./controlClient-C13_pSKG.cjs');
40
+ require('./controlClient-DwWTns3A.cjs');
41
41
  require('node:os');
42
- require('./package-9n7wd2dT.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-ECqXu34R.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-DfPBa-9d.cjs');
8
+ var configuration = require('./configuration-BBK0rmmj.cjs');
9
9
 
10
10
  const TeamScopeSchema = z.z.object({
11
11
  serverUrl: z.z.string(),