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.
- package/dist/{AcpBackend-CCy_9AfR.mjs → AcpBackend-B4PwjqHt.mjs} +3 -3
- package/dist/{AcpBackend-DgrIc1vH.cjs → AcpBackend-DtJCgftG.cjs} +3 -3
- package/dist/{AcpSessionManager-CQnxx7gD.mjs → AcpSessionManager-BzKWgkdP.mjs} +2 -2
- package/dist/{AcpSessionManager-DVOzCD3P.cjs → AcpSessionManager-D4qshX_H.cjs} +2 -2
- package/dist/{BasePermissionHandler-C9Ag7yvs.cjs → BasePermissionHandler-5iG-cvA2.cjs} +1 -1
- package/dist/{BasePermissionHandler-DYLN6Ec9.mjs → BasePermissionHandler-DV6UM6e9.mjs} +1 -1
- package/dist/account-Dco_nGT4.mjs +297 -0
- package/dist/account-DvpA60oU.cjs +302 -0
- package/dist/accountService-Cd7bnkfd.mjs +916 -0
- package/dist/accountService-CuUSJDhP.cjs +921 -0
- package/dist/{acpSessionResume-TvP_4Zq2.cjs → acpSessionResume-Bk9mjXZ9.cjs} +1 -1
- package/dist/{acpSessionResume-Bi7pA1n_.mjs → acpSessionResume-TQwN9ZZE.mjs} +1 -1
- package/dist/{agentHome-DGv105SR.mjs → agentHome-Bep8semY.mjs} +4 -4
- package/dist/{agentHome-DNUKJWOY.cjs → agentHome-c2dlgcw1.cjs} +4 -4
- package/dist/{api-BBxZ7y2z.cjs → api-CBE_a88I.cjs} +10 -10
- package/dist/{api-jfeMRg5R.mjs → api-DUfunY3x.mjs} +10 -10
- package/dist/{apiMachine-DqyjKBZG.cjs → apiMachine-BqtG0IWm.cjs} +83 -27
- package/dist/{apiMachine-DRJ7y-BB.mjs → apiMachine-CU_bw5nV.mjs} +78 -22
- package/dist/{attachmentContent-BO2njyza.cjs → attachmentContent-B3AzuYqk.cjs} +2 -2
- package/dist/{attachmentContent-Dm_RIs5L.mjs → attachmentContent-KNIZxwlu.mjs} +2 -2
- package/dist/{auth-BYDtjVNb.mjs → auth-CZ7pKS-j.mjs} +8 -8
- package/dist/{auth-DnxoVkkf.cjs → auth-DCjxpI6Z.cjs} +5 -5
- package/dist/{auth-DLR3ksCF.cjs → auth-SJ_dPw7H.cjs} +8 -8
- package/dist/{auth-DC6rg8lJ.mjs → auth-jN5dNqTO.mjs} +5 -5
- package/dist/{auto-CwO0u8hB.cjs → auto-B_59RYH1.cjs} +23 -21
- package/dist/{auto-D5Jhukq1.mjs → auto-DC0Sq-qB.mjs} +23 -21
- package/dist/{bootstrap-rLaL3kTa.mjs → bootstrap-B3gMpU9e.mjs} +2 -2
- package/dist/{bootstrap-sly4qPPY.cjs → bootstrap-CoJu9VnB.cjs} +2 -2
- package/dist/{browser-CHpVgyni.mjs → browser-LHW2hBH8.mjs} +1 -1
- package/dist/{browser-BTgZ9d4i.cjs → browser-v1pdPP1E.cjs} +1 -1
- package/dist/claudeAccountEnv-BL1pR_37.mjs +133 -0
- package/dist/claudeAccountEnv-CEX_EMZr.cjs +138 -0
- package/dist/{claudeLocal-Bgb5GGsq.mjs → claudeLocal-BZUgA5G2.mjs} +5 -5
- package/dist/{claudeLocal-1vuTFcL8.cjs → claudeLocal-BrzM2RBI.cjs} +5 -5
- package/dist/{claudeLocalLauncher-T7EfT68h.mjs → claudeLocalLauncher-A0AQyHFi.mjs} +10 -10
- package/dist/{claudeLocalLauncher-DOsL6HFY.cjs → claudeLocalLauncher-XAMpXUM7.cjs} +10 -10
- package/dist/{claudeSessionFork-Cko4SaVi.cjs → claudeSessionFork-Mhn2fYe_.cjs} +1 -1
- package/dist/{claudeSessionFork-CPvi6yDX.mjs → claudeSessionFork-_GwIlmMB.mjs} +1 -1
- package/dist/{client-BXD66ZF5.mjs → client-7RnI9J0W.mjs} +2 -2
- package/dist/{client-Bi20Ka0h.mjs → client-Bde4QVIn.mjs} +4 -2
- package/dist/{client-C5-C0t2a.cjs → client-CJr8Pjwm.cjs} +4 -2
- package/dist/{client-BscskEBk.cjs → client-D2GWkd-T.cjs} +2 -2
- package/dist/{client-C-OdTbrU.cjs → client-DLlnmAPL.cjs} +4 -4
- package/dist/{client-Bh1aUPh-.mjs → client-DwbhrX6D.mjs} +4 -4
- package/dist/codex/happyMcpStdioBridge.cjs +16 -16
- package/dist/codex/happyMcpStdioBridge.mjs +16 -16
- package/dist/codexAccount-BDQjRbtI.cjs +1028 -0
- package/dist/codexAccount-NOX5pmQf.mjs +1015 -0
- package/dist/{codexAppServerClient-DXhAf6i-.mjs → codexAppServerClient-B3QJV6Ey.mjs} +18 -7
- package/dist/{codexAppServerClient-DKXeikEe.cjs → codexAppServerClient-DWEsZUC4.cjs} +18 -7
- package/dist/{codexCommand-DvbbpYBS.cjs → codexCommand-Bg8AmxVm.cjs} +195 -63
- package/dist/{codexCommand-CIaOiiOj.mjs → codexCommand-D1xlj4sT.mjs} +196 -64
- package/dist/{codexTermination-BszWfyk5.cjs → codexTermination-ByX9GcEJ.cjs} +1 -1
- package/dist/{codexTermination-BcQdEDaw.mjs → codexTermination-CaWAVQjZ.mjs} +1 -1
- package/dist/{config-Di3Cf6js.cjs → config-B2GGbiTv.cjs} +3 -3
- package/dist/{config-OCEcVVK1.mjs → config-C2XYEwXz.mjs} +3 -3
- package/dist/{configuration-DfPBa-9d.cjs → configuration-BBK0rmmj.cjs} +1 -1
- package/dist/{configuration-ECqXu34R.mjs → configuration-ThKBP_zY.mjs} +1 -1
- package/dist/{connect-BTfAUhk8.mjs → connect-BirnCl9q.mjs} +13 -13
- package/dist/{connect-BPQRuOw5.cjs → connect-C3tZs_NC.cjs} +13 -13
- package/dist/{context-CfgTFpCB.mjs → context-C0EFLnOg.mjs} +1 -1
- package/dist/{context-Co7hUaW-.cjs → context-wDp0aZBK.cjs} +1 -1
- package/dist/{controlClient-ClI7A0qE.mjs → controlClient-Ckl8N1MS.mjs} +14 -5
- package/dist/{controlClient-C13_pSKG.cjs → controlClient-DwWTns3A.cjs} +15 -4
- package/dist/{createSessionMetadata-Cf78KHtt.cjs → createSessionMetadata-DqZ6h02H.cjs} +2 -2
- package/dist/{createSessionMetadata-B0eT_Kfj.mjs → createSessionMetadata-vug4Cv8z.mjs} +2 -2
- package/dist/daemonAccounts-CpGDY_4k.cjs +54 -0
- package/dist/daemonAccounts-DwPwKxvv.mjs +30 -0
- package/dist/{defaultPermissionMode-oqTupStc.cjs → defaultPermissionMode-BakXiqRr.cjs} +1 -1
- package/dist/{defaultPermissionMode-m6z2QVyP.mjs → defaultPermissionMode-DF5AfeBb.mjs} +1 -1
- package/dist/{deterministicJson-BtSwbsok.mjs → deterministicJson-BzX94gi3.mjs} +13 -13
- package/dist/{deterministicJson-CpFFgUL_.cjs → deterministicJson-t33SsuRC.cjs} +13 -13
- package/dist/{doctor-BEU0_1Xv.cjs → doctor-B9ug1LZb.cjs} +7 -7
- package/dist/{doctor-lsxmAK4o.mjs → doctor-C1zyOSXw.mjs} +7 -7
- package/dist/{downloadTarget-BXqXhNF7.mjs → downloadTarget-Baslc6jW.mjs} +6 -6
- package/dist/{downloadTarget-CikzJv1h.cjs → downloadTarget-T1id2Gh6.cjs} +6 -6
- package/dist/{ensureDaemonRunning-B_9WAlbU.mjs → ensureDaemonRunning-C6ERYK-O.mjs} +5 -5
- package/dist/{ensureDaemonRunning-BUuH-pbE.cjs → ensureDaemonRunning-CoAg11Zi.cjs} +5 -5
- package/dist/{handleResumeCommand-BK9XKH_l.mjs → handleResumeCommand-CrlqDuz7.mjs} +5 -5
- package/dist/{handleResumeCommand-Dj7oi2KO.cjs → handleResumeCommand-DPi-sPm7.cjs} +5 -5
- package/dist/{index-D3c7CLot.cjs → index-B1swQJUS.cjs} +4 -4
- package/dist/{index-CmZusg8Q.cjs → index-B2dJA8VG.cjs} +3 -3
- package/dist/{index-CLUHaPU8.cjs → index-BUFrKZeQ.cjs} +205 -5
- package/dist/{index-BjZnpGWX.mjs → index-BbdV2mzy.mjs} +3 -3
- package/dist/{index-BdOJOZ6J.mjs → index-BcSPg3c5.mjs} +4 -4
- package/dist/{index-CauRYQKr.cjs → index-Bkslzin5.cjs} +44 -40
- package/dist/{index-DuK9XYbZ.mjs → index-Cn73rdtQ.mjs} +4 -4
- package/dist/{index-Bq8NKSCF.mjs → index-D1YnIih6.mjs} +195 -6
- package/dist/{index-Cxso1rg4.mjs → index-fZO4nF6e.mjs} +45 -41
- package/dist/{index-Dg2NAF_-.cjs → index-rocrvOYG.cjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-DXllkuy0.cjs → install-CArXjPfW.cjs} +3 -3
- package/dist/{install-DTIveLOS.mjs → install-CChhyV2G.mjs} +3 -3
- package/dist/lib.cjs +12 -12
- package/dist/lib.d.cts +354 -0
- package/dist/lib.d.mts +354 -0
- package/dist/lib.mjs +12 -12
- package/dist/{lidState-CD81ryTy.mjs → lidState-B6yYKjNK.mjs} +1 -1
- package/dist/{lidState-C9_DoF9i.cjs → lidState-B_v6qgfE.cjs} +1 -1
- package/dist/{localHappyAgentAuth-Cg-m1lwm.mjs → localHappyAgentAuth-KRlg_aI0.mjs} +1 -1
- package/dist/{localHappyAgentAuth-CCjUvOfi.cjs → localHappyAgentAuth-jJH0n67S.cjs} +1 -1
- package/dist/{logger-Ct2zvaq0.cjs → logger-CX3x2eI4.cjs} +2 -2
- package/dist/{logger-GcbI0eg2.mjs → logger-JV7-4Q_6.mjs} +2 -2
- package/dist/{machineMetadata-CXRmFNOV.mjs → machineMetadata-D5-SW9kv.mjs} +3 -3
- package/dist/{machineMetadata-DDCVWb_x.cjs → machineMetadata-DhZuM0iB.cjs} +3 -3
- package/dist/{main-BHC-WIcM.cjs → main-1x1HGQEy.cjs} +92 -48
- package/dist/{main-omGr_ONk.mjs → main-CFOdXbPD.mjs} +92 -48
- package/dist/{mcp-xUzii0m8.cjs → mcp-BnKBSEh7.cjs} +18 -15
- package/dist/{mcp-D5hxmRAq.mjs → mcp-R6lMcFLO.mjs} +18 -15
- package/dist/{mirrorProtocol-Lcx20Oby.mjs → mirrorProtocol-CD4ntuZJ.mjs} +3 -3
- package/dist/{mirrorProtocol-Dfl8Ahyf.cjs → mirrorProtocol-DO-KtvAL.cjs} +3 -3
- package/dist/{package-BsUHyqWe.mjs → package-Bw3H6VLn.mjs} +7 -7
- package/dist/{package-9n7wd2dT.cjs → package-uzlvxa5S.cjs} +7 -7
- package/dist/{panels-CpEKWWbI.mjs → panels-BamhZCoZ.mjs} +5 -5
- package/dist/{panels-BfknEmt7.cjs → panels-C46FxjmH.cjs} +5 -5
- package/dist/{peerTools-CElYh-5u.cjs → peerTools-D-VNNFw-.cjs} +5 -5
- package/dist/{peerTools-CwCe6tmJ.mjs → peerTools-WtRgTSqG.mjs} +5 -5
- package/dist/{persistence-Cpw4yJs8.mjs → persistence-Cg4sfjQV.mjs} +2 -2
- package/dist/{persistence-A2NeERZJ.cjs → persistence-CsmAgN-C.cjs} +2 -2
- package/dist/{piRunnerArgs-Bqmu16He.mjs → piRunnerArgs-BbaAQvb4.mjs} +2 -2
- package/dist/{piRunnerArgs-BnFU0K73.cjs → piRunnerArgs-vnFygygF.cjs} +1 -1
- package/dist/{piRuntime-Cgn1b0OX.mjs → piRuntime-Bid7TBf5.mjs} +1 -1
- package/dist/{piRuntime-DpS9TAIs.cjs → piRuntime-C2uj5Ucx.cjs} +1 -1
- package/dist/{piTerminal-rmve-VlI.cjs → piTerminal-Ckpjfoqa.cjs} +20 -17
- package/dist/{piTerminal-BGdps8f3.mjs → piTerminal-CqxgrI13.mjs} +20 -17
- package/dist/{pushNotifications-23YSd-0l.cjs → pushNotifications-BCg7YAiu.cjs} +5 -3
- package/dist/{pushNotifications-XAM8__Pg.mjs → pushNotifications-BbE-qV9I.mjs} +5 -3
- package/dist/{query-SZcYnJoW.mjs → query-Bfr9O_62.mjs} +1 -1
- package/dist/{query-u2GX-I0C.cjs → query-vQ-HG394.cjs} +1 -1
- package/dist/{rateLimitReporter-CaTzBe3x.cjs → rateLimitReporter-BZ8x0-6-.cjs} +3 -3
- package/dist/{rateLimitReporter-COUkf446.mjs → rateLimitReporter-CAz7VMw4.mjs} +3 -3
- package/dist/{rateLimitWindows-B2Kx6L0S.cjs → rateLimitWindows-BZl6GMwQ.cjs} +1 -1
- package/dist/{rateLimitWindows-j_qQk0KY.mjs → rateLimitWindows-CRARnKaI.mjs} +1 -1
- package/dist/reconnectEnv-B31lY4nR.cjs +27 -0
- package/dist/reconnectEnv-DeSvHl3q.mjs +24 -0
- package/dist/{registerCommonHandlers-D1MiSfcB.cjs → registerCommonHandlers-CZGmrPbT.cjs} +2 -2
- package/dist/{registerCommonHandlers-DRRfinzK.mjs → registerCommonHandlers-Cj3Nl9y-.mjs} +2 -2
- package/dist/{registerKillSessionHandler-Cpug_r5C.mjs → registerKillSessionHandler-Bg9t45Ub.mjs} +6 -6
- package/dist/{registerKillSessionHandler-hvCsEn7b.cjs → registerKillSessionHandler-C3EDnW4F.cjs} +6 -6
- package/dist/{remoteSessionClient-BdnJ_n8C.mjs → remoteSessionClient--0vfA7I5.mjs} +5 -5
- package/dist/{remoteSessionClient-6ymeMVa4.cjs → remoteSessionClient-CcSP24Zq.cjs} +5 -5
- package/dist/{reportProgressTool-XgQBzxoD.mjs → reportProgressTool-DVru7jc_.mjs} +3 -3
- package/dist/{reportProgressTool-tzQLCLIw.cjs → reportProgressTool-Ddg1yVq2.cjs} +3 -3
- package/dist/{run-DYL_wuj7.cjs → run-BTrIT_jU.cjs} +347 -856
- package/dist/{run-Bt0AklUU.mjs → run-HtvH6BLi.mjs} +346 -855
- package/dist/{runClaude-C3rii_S6.mjs → runClaude-DsHTk5Bu.mjs} +62 -44
- package/dist/{runClaude-CBEpYO4S.cjs → runClaude-ipjwAHPI.cjs} +62 -44
- package/dist/{runClaudeDeps-CYuozSC6.cjs → runClaudeDeps-BKpwL6ln.cjs} +51 -42
- package/dist/{runClaudeDeps-DlVfMG4F.mjs → runClaudeDeps-BV3vpeyY.mjs} +56 -47
- package/dist/{runGemini-CEI3b90u.cjs → runGemini-B-G0_7Ab.cjs} +33 -33
- package/dist/{runGemini-DkYhRk9S.mjs → runGemini-DhjK6_Fp.mjs} +33 -33
- package/dist/{runOpenClaw-DpprWCoz.mjs → runOpenClaw-B6lawk8n.mjs} +18 -18
- package/dist/{runOpenClaw-BgjD6E4d.cjs → runOpenClaw-BHIo8tkn.cjs} +18 -18
- package/dist/{sandbox-XCDUbH72.cjs → sandbox-BAsO0ILe.cjs} +4 -4
- package/dist/{sandbox-DJ7A7lsy.mjs → sandbox-CKb7pCXg.mjs} +4 -4
- package/dist/selfCheck-CZ-t1Xzq.mjs +88 -0
- package/dist/{selfCheck-BYUDB1Uq.cjs → selfCheck-D4VvVZNi.cjs} +39 -37
- package/dist/{send-CASDBCyJ.cjs → send-Cz5m39QR.cjs} +8 -8
- package/dist/{send-Ba63huxv.mjs → send-D8ipLKMY.mjs} +8 -8
- package/dist/{server-w3W0toNd.mjs → server-CjvgT3N9.mjs} +4 -4
- package/dist/{server-cZoV9XRt.cjs → server-CySyJKPH.cjs} +6 -6
- package/dist/{sessionLock-G2PMqvsh.mjs → sessionLock-B73fhgQN.mjs} +10 -4
- package/dist/{sessionLock-BmLA2S8K.cjs → sessionLock-DdDCuNUs.cjs} +10 -3
- package/dist/{sessionOps-DPw5k8vV.mjs → sessionOps-C65Iej_C.mjs} +50 -8
- package/dist/{sessionOps-DXlTmS7J.cjs → sessionOps-XSEjIqNq.cjs} +50 -8
- package/dist/sessionProvider-CLVNkfji.mjs +110 -0
- package/dist/sessionProvider-Dgsty8z_.cjs +115 -0
- package/dist/{sessionScanner-AHjnicxi.cjs → sessionScanner-D8IVXMMH.cjs} +3 -3
- package/dist/{sessionScanner-BCXpdZJN.mjs → sessionScanner-MW1P9Pm9.mjs} +3 -3
- package/dist/{sessions-BiBXOBx0.cjs → sessions-BKz7gZqg.cjs} +10 -10
- package/dist/{sessions-Clk8MR5Y.mjs → sessions-Dtk_agUL.mjs} +10 -10
- package/dist/{setupOfflineReconnection-DI-QZGYz.mjs → setupOfflineReconnection-Bvdy-2xd.mjs} +2 -2
- package/dist/{setupOfflineReconnection-BKLfOd-i.cjs → setupOfflineReconnection-DxMiW7OV.cjs} +2 -2
- package/dist/{spawn-D5omsx1Q.cjs → spawn-DiPkJcrQ.cjs} +36 -17
- package/dist/{spawn-4tsp1uhh.mjs → spawn-Dm4xsZBX.mjs} +36 -17
- package/dist/{spawnAgents-CtkkIFHd.cjs → spawnAgents-B9olJ8xn.cjs} +1 -1
- package/dist/{spawnAgents-CjoU6ZOS.mjs → spawnAgents-I29H9nO8.mjs} +1 -1
- package/dist/{spawnHappyCLI-CF_gLi92.cjs → spawnHappyCLI-BYGOUda1.cjs} +1 -1
- package/dist/{spawnHappyCLI-CIA9Sc_5.mjs → spawnHappyCLI-CnMwzjWX.mjs} +1 -1
- package/dist/{startFileWatcher-9Stpxe7p.cjs → startFileWatcher-D14W6gn-.cjs} +1 -1
- package/dist/{startFileWatcher-CDO6fb2m.mjs → startFileWatcher-DePAY1T5.mjs} +1 -1
- package/dist/{startupSessionCreate-BtR4iYEC.mjs → startupSessionCreate-DoK0IvJG.mjs} +3 -3
- package/dist/{startupSessionCreate-CcF7rGGB.cjs → startupSessionCreate-rBHd4tc1.cjs} +3 -3
- package/dist/store-CkNa6oj4.cjs +326 -0
- package/dist/store-Vej_738f.mjs +305 -0
- package/dist/{streamRelay-BhI6jqF-.cjs → streamRelay-C0G1HOOd.cjs} +1 -1
- package/dist/{streamRelay-DMwOMTKf.mjs → streamRelay-C5U-C4GS.mjs} +1 -1
- package/dist/{sync-C0PRuTMj.mjs → sync-BP6vnxVP.mjs} +1 -1
- package/dist/{sync-Ba8N6xba.cjs → sync-WYBwkJvG.cjs} +1 -1
- package/dist/{systemPrompt-DV5IReD4.cjs → systemPrompt-BkQlCk5_.cjs} +2 -2
- package/dist/{systemPrompt-D0q8eyjy.mjs → systemPrompt-aRqBmkpw.mjs} +2 -2
- package/dist/{teams-BO3_arwM.mjs → teams-CGmC4ygu.mjs} +7 -7
- package/dist/{teams-z3Gp-KlV.cjs → teams-phbpwAGD.cjs} +7 -7
- package/dist/{template-B_5l6pkc.cjs → template-B9pLEP8v.cjs} +2 -2
- package/dist/{template-DLR_0hfj.mjs → template-CL9EvQLQ.mjs} +2 -2
- package/dist/{time-Cy0a-7YX.cjs → time-BTLcO8jp.cjs} +1 -1
- package/dist/{time-D0jvDRhn.mjs → time-Cw0liIqB.mjs} +1 -1
- package/dist/{titleGenerator-RGHWP2YL.cjs → titleGenerator-Y1_7ceJC.cjs} +17 -13
- package/dist/{titleGenerator-AGQsXskb.mjs → titleGenerator-h6TmFe-c.mjs} +16 -12
- package/dist/{todo-CzIDPLFy.cjs → todo-BxiPiCvB.cjs} +6 -6
- package/dist/{todo-BZ954vsz.mjs → todo-OKcTC_VC.mjs} +6 -6
- package/dist/{tools-Bei5i03L.mjs → tools-BR-drXZ8.mjs} +3 -2
- package/dist/{tools-B1x1j6tz.cjs → tools-CcebYtLj.cjs} +3 -2
- package/dist/{uninstall-C3cnIvz1.cjs → uninstall-CnDeCC-M.cjs} +3 -3
- package/dist/{uninstall-B4T_e3Mr.mjs → uninstall-D3stWKD2.mjs} +3 -3
- package/dist/wrapperAccount-BkufO_9g.mjs +107 -0
- package/dist/wrapperAccount-D2A4DuZy.cjs +113 -0
- package/package.json +7 -7
- package/dist/providerBinding-B-Qbx9W2.cjs +0 -140
- package/dist/providerBinding-CYubGg-Z.mjs +0 -132
- package/dist/selfCheck-C-rNljKV.mjs +0 -86
- package/dist/sessionProvider-DUn91LhJ.mjs +0 -109
- package/dist/sessionProvider-Dg691XQ4.cjs +0 -114
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { execSync } from 'node:child_process';
|
|
2
2
|
import { spawn } from 'cross-spawn';
|
|
3
3
|
import { createInterface } from 'node:readline';
|
|
4
|
-
import { l as logger } from './logger-
|
|
4
|
+
import { l as logger } from './logger-JV7-4Q_6.mjs';
|
|
5
5
|
import { e as errorLogMetadata, c as contentLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
|
|
6
6
|
import { i as initializeSandbox, w as wrapForMcpTransport } from './manager-BEsI4qt3.mjs';
|
|
7
|
-
import { p as packageJson } from './package-
|
|
8
|
-
import { s as shouldReadCodexRateLimits, i as isUnsupportedCodexMethodError } from './rateLimitWindows-
|
|
7
|
+
import { p as packageJson } from './package-Bw3H6VLn.mjs';
|
|
8
|
+
import { s as shouldReadCodexRateLimits, i as isUnsupportedCodexMethodError } from './rateLimitWindows-CRARnKaI.mjs';
|
|
9
9
|
import { s as stopProcessGracefully, k as killProcessTree } from './processTree-CP5IvQ2Z.mjs';
|
|
10
10
|
|
|
11
11
|
const CODEX_HELPER_LABEL_MAX_CHARS = 80;
|
|
@@ -195,6 +195,15 @@ class CodexAppServerClient {
|
|
|
195
195
|
rateLimitReadAt = 0;
|
|
196
196
|
rateLimitReadInFlight = false;
|
|
197
197
|
rateLimitReadUnsupported = false;
|
|
198
|
+
/**
|
|
199
|
+
* B-850b: the session's account (agentProfiles/codexWrapperAccount.ts) —
|
|
200
|
+
* env for the app-server (a ChatGPT account's CODEX_HOME overlay) and the
|
|
201
|
+
* provider every thread runs on. Kept across idle-release respawns.
|
|
202
|
+
*/
|
|
203
|
+
accountOverrides = { env: {} };
|
|
204
|
+
setAccountOverrides(overrides) {
|
|
205
|
+
this.accountOverrides = overrides;
|
|
206
|
+
}
|
|
198
207
|
constructor(sandboxConfig) {
|
|
199
208
|
this.sandboxConfig = sandboxConfig;
|
|
200
209
|
}
|
|
@@ -560,6 +569,7 @@ class CodexAppServerClient {
|
|
|
560
569
|
if (this.sandboxEnabled) {
|
|
561
570
|
env.CODEX_SANDBOX = "seatbelt";
|
|
562
571
|
}
|
|
572
|
+
Object.assign(env, this.accountOverrides.env);
|
|
563
573
|
logger.debug(`[CodexAppServer] Spawning: ${command} ${args.join(" ")}`);
|
|
564
574
|
const epoch = ++this.processEpoch;
|
|
565
575
|
const proc = spawn(command, args, {
|
|
@@ -730,7 +740,8 @@ ${text}`.slice(-400);
|
|
|
730
740
|
}
|
|
731
741
|
}
|
|
732
742
|
buildThreadConfig(mcpServers) {
|
|
733
|
-
|
|
743
|
+
const config = { ...mcpServers ? { mcp_servers: mcpServers } : {}, ...this.accountOverrides.config };
|
|
744
|
+
return Object.keys(config).length > 0 ? config : null;
|
|
734
745
|
}
|
|
735
746
|
rememberThreadDefaults(opts) {
|
|
736
747
|
this.threadDefaults = {
|
|
@@ -746,7 +757,7 @@ ${text}`.slice(-400);
|
|
|
746
757
|
await this.ensureConnected();
|
|
747
758
|
const params = {
|
|
748
759
|
model: opts.model ?? null,
|
|
749
|
-
modelProvider: null,
|
|
760
|
+
modelProvider: this.accountOverrides.modelProvider ?? null,
|
|
750
761
|
profile: null,
|
|
751
762
|
cwd: opts.cwd ?? process.cwd(),
|
|
752
763
|
approvalPolicy: opts.approvalPolicy ?? null,
|
|
@@ -777,7 +788,7 @@ ${text}`.slice(-400);
|
|
|
777
788
|
const params = {
|
|
778
789
|
threadId,
|
|
779
790
|
model: opts?.model ?? defaults.model ?? null,
|
|
780
|
-
modelProvider: null,
|
|
791
|
+
modelProvider: this.accountOverrides.modelProvider ?? null,
|
|
781
792
|
cwd: opts?.cwd ?? defaults.cwd ?? process.cwd(),
|
|
782
793
|
approvalPolicy: opts?.approvalPolicy ?? defaults.approvalPolicy ?? null,
|
|
783
794
|
sandbox: opts?.sandbox ?? defaults.sandbox ?? null,
|
|
@@ -806,7 +817,7 @@ ${text}`.slice(-400);
|
|
|
806
817
|
const params = {
|
|
807
818
|
threadId: opts.threadId,
|
|
808
819
|
model: opts.model ?? defaults.model ?? null,
|
|
809
|
-
modelProvider: null,
|
|
820
|
+
modelProvider: this.accountOverrides.modelProvider ?? null,
|
|
810
821
|
cwd: opts.cwd ?? defaults.cwd ?? process.cwd(),
|
|
811
822
|
approvalPolicy: opts.approvalPolicy ?? defaults.approvalPolicy ?? null,
|
|
812
823
|
sandbox: opts.sandbox ?? defaults.sandbox ?? null,
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
var node_child_process = require('node:child_process');
|
|
4
4
|
var spawn = require('cross-spawn');
|
|
5
5
|
var node_readline = require('node:readline');
|
|
6
|
-
var logger = require('./logger-
|
|
6
|
+
var logger = require('./logger-CX3x2eI4.cjs');
|
|
7
7
|
var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
8
8
|
var manager = require('./manager-HrEj442o.cjs');
|
|
9
|
-
var _package = require('./package-
|
|
10
|
-
var rateLimitWindows = require('./rateLimitWindows-
|
|
9
|
+
var _package = require('./package-uzlvxa5S.cjs');
|
|
10
|
+
var rateLimitWindows = require('./rateLimitWindows-BZl6GMwQ.cjs');
|
|
11
11
|
var processTree = require('./processTree-CMHWlVse.cjs');
|
|
12
12
|
|
|
13
13
|
const CODEX_HELPER_LABEL_MAX_CHARS = 80;
|
|
@@ -197,6 +197,15 @@ class CodexAppServerClient {
|
|
|
197
197
|
rateLimitReadAt = 0;
|
|
198
198
|
rateLimitReadInFlight = false;
|
|
199
199
|
rateLimitReadUnsupported = false;
|
|
200
|
+
/**
|
|
201
|
+
* B-850b: the session's account (agentProfiles/codexWrapperAccount.ts) —
|
|
202
|
+
* env for the app-server (a ChatGPT account's CODEX_HOME overlay) and the
|
|
203
|
+
* provider every thread runs on. Kept across idle-release respawns.
|
|
204
|
+
*/
|
|
205
|
+
accountOverrides = { env: {} };
|
|
206
|
+
setAccountOverrides(overrides) {
|
|
207
|
+
this.accountOverrides = overrides;
|
|
208
|
+
}
|
|
200
209
|
constructor(sandboxConfig) {
|
|
201
210
|
this.sandboxConfig = sandboxConfig;
|
|
202
211
|
}
|
|
@@ -562,6 +571,7 @@ class CodexAppServerClient {
|
|
|
562
571
|
if (this.sandboxEnabled) {
|
|
563
572
|
env.CODEX_SANDBOX = "seatbelt";
|
|
564
573
|
}
|
|
574
|
+
Object.assign(env, this.accountOverrides.env);
|
|
565
575
|
logger.logger.debug(`[CodexAppServer] Spawning: ${command} ${args.join(" ")}`);
|
|
566
576
|
const epoch = ++this.processEpoch;
|
|
567
577
|
const proc = spawn.spawn(command, args, {
|
|
@@ -732,7 +742,8 @@ ${text}`.slice(-400);
|
|
|
732
742
|
}
|
|
733
743
|
}
|
|
734
744
|
buildThreadConfig(mcpServers) {
|
|
735
|
-
|
|
745
|
+
const config = { ...mcpServers ? { mcp_servers: mcpServers } : {}, ...this.accountOverrides.config };
|
|
746
|
+
return Object.keys(config).length > 0 ? config : null;
|
|
736
747
|
}
|
|
737
748
|
rememberThreadDefaults(opts) {
|
|
738
749
|
this.threadDefaults = {
|
|
@@ -748,7 +759,7 @@ ${text}`.slice(-400);
|
|
|
748
759
|
await this.ensureConnected();
|
|
749
760
|
const params = {
|
|
750
761
|
model: opts.model ?? null,
|
|
751
|
-
modelProvider: null,
|
|
762
|
+
modelProvider: this.accountOverrides.modelProvider ?? null,
|
|
752
763
|
profile: null,
|
|
753
764
|
cwd: opts.cwd ?? process.cwd(),
|
|
754
765
|
approvalPolicy: opts.approvalPolicy ?? null,
|
|
@@ -779,7 +790,7 @@ ${text}`.slice(-400);
|
|
|
779
790
|
const params = {
|
|
780
791
|
threadId,
|
|
781
792
|
model: opts?.model ?? defaults.model ?? null,
|
|
782
|
-
modelProvider: null,
|
|
793
|
+
modelProvider: this.accountOverrides.modelProvider ?? null,
|
|
783
794
|
cwd: opts?.cwd ?? defaults.cwd ?? process.cwd(),
|
|
784
795
|
approvalPolicy: opts?.approvalPolicy ?? defaults.approvalPolicy ?? null,
|
|
785
796
|
sandbox: opts?.sandbox ?? defaults.sandbox ?? null,
|
|
@@ -808,7 +819,7 @@ ${text}`.slice(-400);
|
|
|
808
819
|
const params = {
|
|
809
820
|
threadId: opts.threadId,
|
|
810
821
|
model: opts.model ?? defaults.model ?? null,
|
|
811
|
-
modelProvider: null,
|
|
822
|
+
modelProvider: this.accountOverrides.modelProvider ?? null,
|
|
812
823
|
cwd: opts.cwd ?? defaults.cwd ?? process.cwd(),
|
|
813
824
|
approvalPolicy: opts.approvalPolicy ?? defaults.approvalPolicy ?? null,
|
|
814
825
|
sandbox: opts.sandbox ?? defaults.sandbox ?? null,
|
|
@@ -1,109 +1,114 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var auth = require('./auth-
|
|
4
|
-
var index = require('./index-
|
|
5
|
-
var defaultPermissionMode = require('./defaultPermissionMode-
|
|
6
|
-
var deterministicJson = require('./deterministicJson-
|
|
7
|
-
var client = require('./client-
|
|
3
|
+
var auth = require('./auth-DCjxpI6Z.cjs');
|
|
4
|
+
var index = require('./index-BUFrKZeQ.cjs');
|
|
5
|
+
var defaultPermissionMode = require('./defaultPermissionMode-BakXiqRr.cjs');
|
|
6
|
+
var deterministicJson = require('./deterministicJson-t33SsuRC.cjs');
|
|
7
|
+
var client = require('./client-CJr8Pjwm.cjs');
|
|
8
8
|
var promises = require('node:fs/promises');
|
|
9
9
|
var forkBackfill = require('./forkBackfill-8eLDeS73.cjs');
|
|
10
10
|
var node_crypto = require('node:crypto');
|
|
11
11
|
var cuid2 = require('@paralleldrive/cuid2');
|
|
12
|
-
var api = require('./api-
|
|
12
|
+
var api = require('./api-CBE_a88I.cjs');
|
|
13
13
|
var heldInput = require('./heldInput-BOtqFO2r.cjs');
|
|
14
|
-
var attachmentContent = require('./attachmentContent-
|
|
14
|
+
var attachmentContent = require('./attachmentContent-B3AzuYqk.cjs');
|
|
15
15
|
var ink = require('ink');
|
|
16
|
-
var sessionLock = require('./sessionLock-
|
|
16
|
+
var sessionLock = require('./sessionLock-DdDCuNUs.cjs');
|
|
17
17
|
var React = require('react');
|
|
18
|
-
var codexAppServerClient = require('./codexAppServerClient-
|
|
19
|
-
var rateLimitReporter = require('./rateLimitReporter-
|
|
20
|
-
var logger = require('./logger-
|
|
21
|
-
var BasePermissionHandler = require('./BasePermissionHandler-
|
|
22
|
-
var codexTermination = require('./codexTermination-
|
|
18
|
+
var codexAppServerClient = require('./codexAppServerClient-DWEsZUC4.cjs');
|
|
19
|
+
var rateLimitReporter = require('./rateLimitReporter-BZ8x0-6-.cjs');
|
|
20
|
+
var logger = require('./logger-CX3x2eI4.cjs');
|
|
21
|
+
var BasePermissionHandler = require('./BasePermissionHandler-5iG-cvA2.cjs');
|
|
22
|
+
var codexTermination = require('./codexTermination-ByX9GcEJ.cjs');
|
|
23
23
|
var node_child_process = require('node:child_process');
|
|
24
|
-
var persistence = require('./persistence-
|
|
25
|
-
var machineMetadata = require('./machineMetadata-
|
|
26
|
-
var configuration = require('./configuration-
|
|
27
|
-
var registerKillSessionHandler = require('./registerKillSessionHandler-
|
|
24
|
+
var persistence = require('./persistence-CsmAgN-C.cjs');
|
|
25
|
+
var machineMetadata = require('./machineMetadata-DhZuM0iB.cjs');
|
|
26
|
+
var configuration = require('./configuration-BBK0rmmj.cjs');
|
|
27
|
+
var registerKillSessionHandler = require('./registerKillSessionHandler-C3EDnW4F.cjs');
|
|
28
28
|
var projectPath = require('./projectPath-C3ioB4Bu.cjs');
|
|
29
29
|
var path = require('node:path');
|
|
30
|
-
var createSessionMetadata = require('./createSessionMetadata-
|
|
30
|
+
var createSessionMetadata = require('./createSessionMetadata-DqZ6h02H.cjs');
|
|
31
31
|
var sessionExitLifecycle = require('./sessionExitLifecycle-DFltxXU8.cjs');
|
|
32
|
-
var controlClient = require('./controlClient-
|
|
33
|
-
var startupSessionCreate = require('./startupSessionCreate-
|
|
32
|
+
var controlClient = require('./controlClient-DwWTns3A.cjs');
|
|
33
|
+
var startupSessionCreate = require('./startupSessionCreate-rBHd4tc1.cjs');
|
|
34
34
|
var authRelay = require('./authRelay-Dy1qU9td.cjs');
|
|
35
|
-
var setupOfflineReconnection = require('./setupOfflineReconnection-
|
|
35
|
+
var setupOfflineReconnection = require('./setupOfflineReconnection-DxMiW7OV.cjs');
|
|
36
36
|
var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
|
|
37
37
|
var specialCommands = require('./specialCommands-J3JFOq0J.cjs');
|
|
38
38
|
var constants = require('./constants-VJ0N6WuG.cjs');
|
|
39
39
|
var editPaths = require('./editPaths-Bqp4OFPw.cjs');
|
|
40
|
-
var
|
|
40
|
+
var reconnectEnv = require('./reconnectEnv-B31lY4nR.cjs');
|
|
41
|
+
var store = require('./store-CkNa6oj4.cjs');
|
|
42
|
+
var node_fs = require('node:fs');
|
|
43
|
+
var codexAccount = require('./codexAccount-BDQjRbtI.cjs');
|
|
44
|
+
var wrapperAccount = require('./wrapperAccount-D2A4DuZy.cjs');
|
|
45
|
+
var ensureDaemonRunning = require('./ensureDaemonRunning-CoAg11Zi.cjs');
|
|
41
46
|
require('tweetnacl');
|
|
42
47
|
require('axios');
|
|
43
|
-
require('./time-
|
|
44
|
-
require('./browser-
|
|
48
|
+
require('./time-BTLcO8jp.cjs');
|
|
49
|
+
require('./browser-v1pdPP1E.cjs');
|
|
45
50
|
require('open');
|
|
46
51
|
require('zod');
|
|
47
52
|
require('./prompt-Bof2aQkI.cjs');
|
|
48
|
-
require('./reportProgressTool-
|
|
49
|
-
require('./client-
|
|
53
|
+
require('./reportProgressTool-Ddg1yVq2.cjs');
|
|
54
|
+
require('./client-D2GWkd-T.cjs');
|
|
50
55
|
require('./precheckCompat-CWOi5c9L.cjs');
|
|
51
56
|
require('./agentGuidance-BtBx2xxE.cjs');
|
|
52
|
-
require('node:fs');
|
|
53
57
|
require('node:os');
|
|
54
58
|
require('./pi-DlsrPCTa.cjs');
|
|
55
59
|
require('./fileStore-7qhnbs6N.cjs');
|
|
56
|
-
require('./client-
|
|
60
|
+
require('./client-DLlnmAPL.cjs');
|
|
57
61
|
require('node:util');
|
|
58
|
-
require('./context-
|
|
59
|
-
require('./sessionOps-
|
|
62
|
+
require('./context-wDp0aZBK.cjs');
|
|
63
|
+
require('./sessionOps-XSEjIqNq.cjs');
|
|
60
64
|
require('socket.io-client');
|
|
61
65
|
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
62
66
|
require('./resources-BZ_Be0qM.cjs');
|
|
63
|
-
require('./tools-
|
|
64
|
-
require('./peerTools-
|
|
67
|
+
require('./tools-CcebYtLj.cjs');
|
|
68
|
+
require('./peerTools-D-VNNFw-.cjs');
|
|
65
69
|
require('./ids-B6ZC0HGt.cjs');
|
|
66
|
-
require('./remoteSessionClient-
|
|
70
|
+
require('./remoteSessionClient-CcSP24Zq.cjs');
|
|
67
71
|
require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
68
72
|
require('node:http');
|
|
69
73
|
require('@modelcontextprotocol/sdk/server/streamableHttp.js');
|
|
70
74
|
require('./limits-C-a7gr04.cjs');
|
|
71
|
-
require('./downloadTarget-
|
|
75
|
+
require('./downloadTarget-T1id2Gh6.cjs');
|
|
72
76
|
require('./terminals-B_bfC9c2.cjs');
|
|
73
77
|
require('./terminalTitleSuggest-DhvRFX3H.cjs');
|
|
74
78
|
require('./tmuxSocket-D-Xt6Vn-.cjs');
|
|
75
|
-
require('./bootstrap-
|
|
76
|
-
require('./package-
|
|
79
|
+
require('./bootstrap-CoJu9VnB.cjs');
|
|
80
|
+
require('./package-uzlvxa5S.cjs');
|
|
77
81
|
require('./webPanels-FCgFKvVe.cjs');
|
|
78
|
-
require('./pushNotifications-
|
|
82
|
+
require('./pushNotifications-BCg7YAiu.cjs');
|
|
79
83
|
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
80
84
|
require('./previewPath-B0rBdhy1.cjs');
|
|
81
85
|
require('crypto');
|
|
82
|
-
require('./lidState-
|
|
86
|
+
require('./lidState-B_v6qgfE.cjs');
|
|
83
87
|
require('os');
|
|
84
88
|
require('child_process');
|
|
85
89
|
require('node:events');
|
|
86
|
-
require('./registerCommonHandlers-
|
|
90
|
+
require('./registerCommonHandlers-CZGmrPbT.cjs');
|
|
87
91
|
require('util');
|
|
88
92
|
require('fs/promises');
|
|
89
93
|
require('path');
|
|
90
94
|
require('cross-spawn');
|
|
91
|
-
require('./sync-
|
|
95
|
+
require('./sync-WYBwkJvG.cjs');
|
|
92
96
|
require('chalk');
|
|
93
97
|
require('./cliUpdate-DsKXPFYp.cjs');
|
|
94
98
|
require('./processTreeSnapshot-mDbnuojn.cjs');
|
|
95
99
|
require('node:readline');
|
|
96
100
|
require('./manager-HrEj442o.cjs');
|
|
97
101
|
require('@anthropic-ai/sandbox-runtime');
|
|
98
|
-
require('./rateLimitWindows-
|
|
102
|
+
require('./rateLimitWindows-BZl6GMwQ.cjs');
|
|
99
103
|
require('./processTree-CMHWlVse.cjs');
|
|
100
104
|
require('./detectCLI-BuYR_Qxe.cjs');
|
|
101
105
|
require('fs');
|
|
102
|
-
require('./localHappyAgentAuth-
|
|
106
|
+
require('./localHappyAgentAuth-jJH0n67S.cjs');
|
|
103
107
|
require('./fsMkdir-0K3yENml.cjs');
|
|
104
108
|
require('./types-CRS-srZK.cjs');
|
|
105
109
|
require('url');
|
|
106
|
-
require('./
|
|
110
|
+
require('./claudeAccountEnv-CEX_EMZr.cjs');
|
|
111
|
+
require('./spawnHappyCLI-BYGOUda1.cjs');
|
|
107
112
|
require('./doctorReadiness-Dl6yRQCy.cjs');
|
|
108
113
|
|
|
109
114
|
function getStartedSubagents(state) {
|
|
@@ -1185,7 +1190,8 @@ async function resumeExistingThread(opts) {
|
|
|
1185
1190
|
const resumedThread = await opts.client.resumeThread({
|
|
1186
1191
|
threadId: opts.threadId,
|
|
1187
1192
|
cwd: opts.cwd,
|
|
1188
|
-
mcpServers: opts.mcpServers
|
|
1193
|
+
mcpServers: opts.mcpServers,
|
|
1194
|
+
...opts.model ? { model: opts.model } : {}
|
|
1189
1195
|
});
|
|
1190
1196
|
opts.session.updateMetadata((currentMetadata) => ({
|
|
1191
1197
|
...currentMetadata,
|
|
@@ -1463,6 +1469,70 @@ function codexPublishablePermissionMode(mode) {
|
|
|
1463
1469
|
return typeof mode === "string" && CODEX_REMOTE_PERMISSION_MODES.includes(mode) ? mode : null;
|
|
1464
1470
|
}
|
|
1465
1471
|
|
|
1472
|
+
const MACHINE_CODEX_ACCOUNT = { profile: null, overrides: { env: {} }, unavailable: false, notices: [], cleanup: () => {
|
|
1473
|
+
} };
|
|
1474
|
+
function loadCodexWrapperAccount(happyHome, sessionId, spawnAccountId, env = process.env, now = Date.now()) {
|
|
1475
|
+
let bindings = store.readSessionBindings(happyHome);
|
|
1476
|
+
if (wrapperAccount.shouldRecordSpawnAccount(spawnAccountId, sessionId in bindings)) {
|
|
1477
|
+
store.writeSessionBinding(happyHome, sessionId, { account: spawnAccountId });
|
|
1478
|
+
bindings = { ...bindings, [sessionId]: { account: spawnAccountId } };
|
|
1479
|
+
}
|
|
1480
|
+
const probe = store.defaultSecretProbe(env);
|
|
1481
|
+
const resolution = codexAccount.resolveCodexAccount(sessionId, {
|
|
1482
|
+
home: happyHome,
|
|
1483
|
+
accounts: store.readAccounts(happyHome),
|
|
1484
|
+
bindings,
|
|
1485
|
+
providers: codexAccount.readCodexProviders(env),
|
|
1486
|
+
fileReadable: probe.fileReadable,
|
|
1487
|
+
env,
|
|
1488
|
+
nodePath: process.execPath,
|
|
1489
|
+
envKeyCopyPath: (id) => path.join(happyHome, "tmp", "accounts", `key-${process.pid}-${id}`)
|
|
1490
|
+
});
|
|
1491
|
+
if (resolution.kind === "machine") return MACHINE_CODEX_ACCOUNT;
|
|
1492
|
+
let cleanup = () => {
|
|
1493
|
+
};
|
|
1494
|
+
if (resolution.kind === "active" && resolution.envKeyCopy) {
|
|
1495
|
+
const { name, path: path$1 } = resolution.envKeyCopy;
|
|
1496
|
+
node_fs.mkdirSync(path.dirname(path$1), { recursive: true, mode: 448 });
|
|
1497
|
+
node_fs.writeFileSync(path$1, (env[name] ?? "").trim() + "\n", { mode: 384 });
|
|
1498
|
+
node_fs.chmodSync(path$1, 384);
|
|
1499
|
+
cleanup = () => node_fs.rmSync(path$1, { force: true });
|
|
1500
|
+
}
|
|
1501
|
+
for (const key of resolution.unset) delete env[key];
|
|
1502
|
+
if (resolution.kind === "active" && resolution.envKeyCopy) delete env[resolution.envKeyCopy.name];
|
|
1503
|
+
if (resolution.kind === "unavailable") {
|
|
1504
|
+
return { profile: resolution.profile, overrides: { env: {} }, unavailable: true, notices: [wrapperAccount.unavailableNotice(resolution.profile)], cleanup };
|
|
1505
|
+
}
|
|
1506
|
+
const overrides = { env: {}, modelProvider: resolution.modelProvider, ...resolution.config ? { config: resolution.config } : {} };
|
|
1507
|
+
if (resolution.codexHome) {
|
|
1508
|
+
codexAccount.syncCodexOverlay(resolution.codexHome, codexAccount.baseCodexHome(env), now);
|
|
1509
|
+
overrides.env.CODEX_HOME = resolution.codexHome;
|
|
1510
|
+
}
|
|
1511
|
+
return {
|
|
1512
|
+
profile: resolution.profile,
|
|
1513
|
+
overrides,
|
|
1514
|
+
...resolution.pinnedModel ? { pinnedModel: resolution.pinnedModel } : {},
|
|
1515
|
+
...resolution.models ? { models: resolution.models } : {},
|
|
1516
|
+
unavailable: false,
|
|
1517
|
+
notices: [],
|
|
1518
|
+
cleanup
|
|
1519
|
+
};
|
|
1520
|
+
}
|
|
1521
|
+
function markCodexAccountRejected(happyHome, accountId, now = Date.now()) {
|
|
1522
|
+
try {
|
|
1523
|
+
const file = store.readAccountsFileV2(happyHome);
|
|
1524
|
+
const record = file.accounts[accountId];
|
|
1525
|
+
if (!record || record.agent !== "codex") return null;
|
|
1526
|
+
const status = record.kind === "codex-chatgpt" ? "expired" : "invalid";
|
|
1527
|
+
if (record.check?.status === status) return status;
|
|
1528
|
+
record.check = { status, at: now, detail: "rejected during a session" };
|
|
1529
|
+
store.writeAccountsFile(happyHome, file);
|
|
1530
|
+
return status;
|
|
1531
|
+
} catch {
|
|
1532
|
+
return null;
|
|
1533
|
+
}
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1466
1536
|
const DEFAULT_CODEX_MODEL = void 0;
|
|
1467
1537
|
const DEFAULT_CODEX_EFFORT = "medium";
|
|
1468
1538
|
async function runCodex(opts) {
|
|
@@ -1479,6 +1549,8 @@ async function runCodex(opts) {
|
|
|
1479
1549
|
console.error(" \x1B[36mvery-happy claude\x1B[0m\n");
|
|
1480
1550
|
process.exit(1);
|
|
1481
1551
|
}
|
|
1552
|
+
const spawnAccountId = process.env[store.SPAWN_ACCOUNT_ENV] || void 0;
|
|
1553
|
+
delete process.env[store.SPAWN_ACCOUNT_ENV];
|
|
1482
1554
|
const sessionTag = node_crypto.randomUUID();
|
|
1483
1555
|
api.connectionState.setBackend("Codex");
|
|
1484
1556
|
const api$1 = await api.ApiClient.create(opts.credentials);
|
|
@@ -1507,7 +1579,7 @@ async function runCodex(opts) {
|
|
|
1507
1579
|
dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
|
|
1508
1580
|
...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
|
|
1509
1581
|
...forkedFromMessageId ? { forkedFromMessageId } : {},
|
|
1510
|
-
capabilities: [index.PROMPT_QUEUE_CAPABILITY, forkBackfill.FORK_BACKFILL_CAPABILITY, persistence.HIBERNATION_CAPABILITY, sessionLock.AUTO_RESTART_CAPABILITY, index.CODEX_STEER_CAPABILITY, index.PROJECT_SESSION_CAPABILITY, index.CODEX_COMPACT_CAPABILITY, index.RUN_INTENT_CAPABILITY]
|
|
1582
|
+
capabilities: [index.PROMPT_QUEUE_CAPABILITY, forkBackfill.FORK_BACKFILL_CAPABILITY, persistence.HIBERNATION_CAPABILITY, sessionLock.AUTO_RESTART_CAPABILITY, index.CODEX_STEER_CAPABILITY, index.PROJECT_SESSION_CAPABILITY, index.CODEX_COMPACT_CAPABILITY, index.RUN_INTENT_CAPABILITY, index.AGENT_PROFILE_SESSION_CAPABILITY]
|
|
1511
1583
|
});
|
|
1512
1584
|
metadata.attachmentKinds = [...attachmentContent.CLAUDE_ATTACHMENT_KINDS];
|
|
1513
1585
|
metadata.stickyModel = null;
|
|
@@ -1520,12 +1592,13 @@ async function runCodex(opts) {
|
|
|
1520
1592
|
const importTitle = process.env.HAPPY_IMPORT_TITLE;
|
|
1521
1593
|
if (importTitle) metadata.summary = { text: importTitle, updatedAt: Date.now() };
|
|
1522
1594
|
}
|
|
1523
|
-
const
|
|
1524
|
-
const
|
|
1525
|
-
const
|
|
1526
|
-
const
|
|
1527
|
-
const
|
|
1528
|
-
const
|
|
1595
|
+
const reconnectEnv$1 = reconnectEnv.takeReconnectEnv();
|
|
1596
|
+
const reconnectSessionId = reconnectEnv$1.HAPPY_RECONNECT_SESSION_ID;
|
|
1597
|
+
const reconnectKeyBase64 = reconnectEnv$1.HAPPY_RECONNECT_ENCRYPTION_KEY;
|
|
1598
|
+
const reconnectVariant = reconnectEnv$1.HAPPY_RECONNECT_ENCRYPTION_VARIANT;
|
|
1599
|
+
const reconnectSeq = reconnectEnv$1.HAPPY_RECONNECT_SEQ;
|
|
1600
|
+
const reconnectMetadataVersion = reconnectEnv$1.HAPPY_RECONNECT_METADATA_VERSION;
|
|
1601
|
+
const reconnectAgentStateVersion = reconnectEnv$1.HAPPY_RECONNECT_AGENT_STATE_VERSION;
|
|
1529
1602
|
let response;
|
|
1530
1603
|
if (reconnectSessionId && reconnectKeyBase64 && reconnectVariant) {
|
|
1531
1604
|
logger.logger.debug(`[START] Reconnecting to existing session ${reconnectSessionId}`);
|
|
@@ -1568,6 +1641,21 @@ async function runCodex(opts) {
|
|
|
1568
1641
|
}
|
|
1569
1642
|
}
|
|
1570
1643
|
const resumedEffort = reconnectSeeded && response ? index.restoredEffort(response.metadata, { useReportedLevel: true }) : void 0;
|
|
1644
|
+
let codexAccount$1 = MACHINE_CODEX_ACCOUNT;
|
|
1645
|
+
if (response) {
|
|
1646
|
+
try {
|
|
1647
|
+
codexAccount$1 = loadCodexWrapperAccount(configuration.configuration.happyHomeDir, response.id, spawnAccountId);
|
|
1648
|
+
} catch (error) {
|
|
1649
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
1650
|
+
logger.logger.debug(`[START] B-850b account resolution failed: ${reason}`);
|
|
1651
|
+
if (spawnAccountId) {
|
|
1652
|
+
codexAccount$1 = { ...MACHINE_CODEX_ACCOUNT, profile: { id: spawnAccountId, label: spawnAccountId, kind: "unknown", status: "unavailable", reason: "error" }, unavailable: true, notices: [`Account "${spawnAccountId}" could not be loaded: ${reason}`] };
|
|
1653
|
+
}
|
|
1654
|
+
}
|
|
1655
|
+
}
|
|
1656
|
+
const accountSwitched = !!reconnectSessionId && reconnectSeeded && !!response && codexAccount.codexAccountSwitched(response.metadata?.agentProfile, codexAccount$1.profile);
|
|
1657
|
+
if (accountSwitched && !codexAccount$1.profile) codexAccount$1 = { ...codexAccount$1, overrides: { env: {}, modelProvider: codexAccount.readCodexDefaultProvider() } };
|
|
1658
|
+
logger.logger.debug(`[START] B-850b account: ${codexAccount$1.profile ? `${codexAccount$1.profile.id} ${codexAccount$1.profile.kind} ${codexAccount$1.profile.status}` : "machine login"}${accountSwitched ? " (switched)" : ""}`);
|
|
1571
1659
|
let session;
|
|
1572
1660
|
let permissionHandler;
|
|
1573
1661
|
let client$1;
|
|
@@ -1596,6 +1684,25 @@ async function runCodex(opts) {
|
|
|
1596
1684
|
if (!wakingFromHibernation) void session.cancelUndeliveredQueuedInputs(reconnectReplay ? { maxSeq: reconnectReplay.seq } : void 0);
|
|
1597
1685
|
session.updateMetadata((meta) => sessionLock.mergeReconnectMetadata(meta, metadata, Date.now()));
|
|
1598
1686
|
}
|
|
1687
|
+
session.updateMetadata((current) => ({
|
|
1688
|
+
...current,
|
|
1689
|
+
agentProfile: codexAccount$1.profile,
|
|
1690
|
+
...accountSwitched ? { stickyModel: null, modelIntent: null } : {}
|
|
1691
|
+
}));
|
|
1692
|
+
for (const notice of codexAccount$1.notices) {
|
|
1693
|
+
session.sendSessionEvent({ type: "message", message: notice, kind: codexAccount$1.unavailable ? "agent-profile-unavailable" : "agent-profile-warning" });
|
|
1694
|
+
}
|
|
1695
|
+
let historyRejectionReported = false;
|
|
1696
|
+
const noteAccountFailure = (text) => {
|
|
1697
|
+
if (!codexAccount$1.profile || codexAccount$1.unavailable) return;
|
|
1698
|
+
if (accountSwitched && !historyRejectionReported && codexAccount.isHistoryRejectedError(text)) {
|
|
1699
|
+
historyRejectionReported = true;
|
|
1700
|
+
session.sendSessionEvent({ type: "message", message: `This conversation's history cannot continue on account "${codexAccount$1.profile.label}". Start a new session on it, or switch back to the previous account.`, kind: "agent-profile-history-rejected" });
|
|
1701
|
+
} else if (codexAccount.isCodexAuthRejection(text)) {
|
|
1702
|
+
const marked = markCodexAccountRejected(configuration.configuration.happyHomeDir, codexAccount$1.profile.id);
|
|
1703
|
+
if (marked) session.sendSessionEvent({ type: "message", message: `Account "${codexAccount$1.profile.label}" was rejected (${marked}). Sign in again or switch accounts.`, kind: "agent-profile-auth-failed" });
|
|
1704
|
+
}
|
|
1705
|
+
};
|
|
1599
1706
|
if (response) {
|
|
1600
1707
|
try {
|
|
1601
1708
|
logger.logger.debug(`[START] Reporting session ${response.id} to daemon`);
|
|
@@ -1688,6 +1795,11 @@ async function runCodex(opts) {
|
|
|
1688
1795
|
};
|
|
1689
1796
|
let userMessageDelivery = Promise.resolve();
|
|
1690
1797
|
session.onUserMessage((message) => {
|
|
1798
|
+
if (codexAccount$1.unavailable && codexAccount$1.profile) {
|
|
1799
|
+
if (message.localKey) session.sendQueueCancelReason([message.localKey], "failed");
|
|
1800
|
+
session.sendSessionEvent({ type: "message", message: codexAccount$1.notices[0] ?? `Account "${codexAccount$1.profile.label}" is unavailable.`, kind: "agent-profile-unavailable" });
|
|
1801
|
+
return;
|
|
1802
|
+
}
|
|
1691
1803
|
const downloads = session.drainAttachmentsForUserMessage();
|
|
1692
1804
|
userMessageDelivery = userMessageDelivery.then(async () => {
|
|
1693
1805
|
const attachments = await downloads;
|
|
@@ -1952,6 +2064,7 @@ async function runCodex(opts) {
|
|
|
1952
2064
|
process.stdin.setEncoding("utf8");
|
|
1953
2065
|
}
|
|
1954
2066
|
client$1 = new codexAppServerClient.CodexAppServerClient(sandboxConfig);
|
|
2067
|
+
client$1.setAccountOverrides(codexAccount$1.overrides);
|
|
1955
2068
|
const idleRelease = new CodexIdleReleaseTimer({
|
|
1956
2069
|
delayMs: resolveCodexIdleReleaseMs(process.env[CODEX_IDLE_RELEASE_ENV]),
|
|
1957
2070
|
isIdle: () => shouldReleaseIdleCodex({
|
|
@@ -2021,6 +2134,7 @@ async function runCodex(opts) {
|
|
|
2021
2134
|
if (failure) {
|
|
2022
2135
|
messageBuffer.addMessage(`Task failed: ${failure}`, "status");
|
|
2023
2136
|
session.sendSessionEvent({ type: "message", message: `Codex error: ${failure}` });
|
|
2137
|
+
noteAccountFailure(failure);
|
|
2024
2138
|
} else {
|
|
2025
2139
|
messageBuffer.addMessage("Task completed", "status");
|
|
2026
2140
|
}
|
|
@@ -2029,6 +2143,7 @@ async function runCodex(opts) {
|
|
|
2029
2143
|
if (failure) {
|
|
2030
2144
|
messageBuffer.addMessage(`Turn aborted: ${failure}`, "status");
|
|
2031
2145
|
session.sendSessionEvent({ type: "message", message: `Codex error: ${failure}` });
|
|
2146
|
+
noteAccountFailure(failure);
|
|
2032
2147
|
} else {
|
|
2033
2148
|
messageBuffer.addMessage("Turn aborted", "status");
|
|
2034
2149
|
}
|
|
@@ -2135,6 +2250,11 @@ async function runCodex(opts) {
|
|
|
2135
2250
|
logger.logger.debug("[Codex] config/read unavailable", safeCodexErrorMetadata(error));
|
|
2136
2251
|
}
|
|
2137
2252
|
machineDefaultModel = configured?.model ?? discoveredModels.find((model) => model.isDefault)?.model;
|
|
2253
|
+
const accountDefault = codexAccount.codexAccountDefaultModel(codexAccount$1, configured?.model ?? null, discoveredModels);
|
|
2254
|
+
if (codexAccount$1.profile && !codexAccount$1.unavailable) {
|
|
2255
|
+
machineDefaultModel = accountDefault;
|
|
2256
|
+
if (codexAccount$1.models?.length) discoveredModels = codexAccount.accountModelsAsCatalog(codexAccount$1.models, discoveredModels);
|
|
2257
|
+
}
|
|
2138
2258
|
if (discoveredModels.length > 0 || configured) {
|
|
2139
2259
|
session.updateMetadata((metadata2) => ({
|
|
2140
2260
|
...metadata2,
|
|
@@ -2147,22 +2267,30 @@ async function runCodex(opts) {
|
|
|
2147
2267
|
defaultReasoningEffort: model.defaultReasoningEffort
|
|
2148
2268
|
}))
|
|
2149
2269
|
} : {},
|
|
2150
|
-
defaultModelCode: configured?.model ?? discoveredModels.find((model) => model.isDefault)?.model,
|
|
2151
|
-
...configured ? { configuredModel: configured.model } : {}
|
|
2270
|
+
defaultModelCode: codexAccount$1.profile && !codexAccount$1.unavailable ? accountDefault : configured?.model ?? discoveredModels.find((model) => model.isDefault)?.model,
|
|
2271
|
+
...configured ? { configuredModel: codexAccount$1.profile && !codexAccount$1.unavailable ? accountDefault ?? null : configured.model } : {}
|
|
2152
2272
|
}));
|
|
2153
2273
|
}
|
|
2154
2274
|
} catch (error) {
|
|
2155
2275
|
logger.logger.debug("[Codex] Model discovery unavailable; using compatibility fallback", safeCodexErrorMetadata(error));
|
|
2156
2276
|
}
|
|
2157
|
-
if (opts.resumeThreadId) {
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2277
|
+
if (opts.resumeThreadId && !codexAccount$1.unavailable) {
|
|
2278
|
+
try {
|
|
2279
|
+
await resumeExistingThread({
|
|
2280
|
+
client: client$1,
|
|
2281
|
+
session,
|
|
2282
|
+
messageBuffer,
|
|
2283
|
+
threadId: opts.resumeThreadId,
|
|
2284
|
+
cwd: process.cwd(),
|
|
2285
|
+
mcpServers,
|
|
2286
|
+
// B-850b: after an account switch the thread moves to the
|
|
2287
|
+
// new account's model (its old one is sticky otherwise).
|
|
2288
|
+
...accountSwitched && machineDefaultModel ? { model: machineDefaultModel } : {}
|
|
2289
|
+
});
|
|
2290
|
+
} catch (error) {
|
|
2291
|
+
noteAccountFailure(error instanceof Error ? error.message : String(error));
|
|
2292
|
+
throw error;
|
|
2293
|
+
}
|
|
2166
2294
|
first = false;
|
|
2167
2295
|
appendSystemPromptInjected = true;
|
|
2168
2296
|
}
|
|
@@ -2358,7 +2486,10 @@ async function runCodex(opts) {
|
|
|
2358
2486
|
}
|
|
2359
2487
|
if (!client$1.hasActiveThread()) {
|
|
2360
2488
|
const startedThread = await client$1.startThread({
|
|
2361
|
-
|
|
2489
|
+
// B-850b: a new thread on an account starts on the account's
|
|
2490
|
+
// model — Codex would otherwise pick config.toml's, which
|
|
2491
|
+
// belongs to the machine's own provider.
|
|
2492
|
+
model: turnModel ?? (codexAccount$1.profile && !codexAccount$1.unavailable ? machineDefaultModel : void 0),
|
|
2362
2493
|
cwd: process.cwd(),
|
|
2363
2494
|
approvalPolicy: executionPolicy.approvalPolicy,
|
|
2364
2495
|
sandbox: executionPolicy.sandbox,
|
|
@@ -2413,6 +2544,7 @@ async function runCodex(opts) {
|
|
|
2413
2544
|
if (reason) {
|
|
2414
2545
|
messageBuffer.addMessage(`Task failed: ${reason}`, "status");
|
|
2415
2546
|
session.sendSessionEvent({ type: "message", message: `Codex error: ${reason}` });
|
|
2547
|
+
noteAccountFailure(reason);
|
|
2416
2548
|
} else {
|
|
2417
2549
|
const tail = codexStderrTailOf(error);
|
|
2418
2550
|
messageBuffer.addMessage("Process exited unexpectedly", "status");
|