very-happy-cli 0.2.207 → 0.2.209
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-Bl-oWkHt.mjs → AcpBackend-CYVjjkTJ.mjs} +3 -3
- package/dist/{AcpBackend-C4SaE4IN.cjs → AcpBackend-D-W7JjO5.cjs} +3 -3
- package/dist/{AcpSessionManager-DqNWNKVy.mjs → AcpSessionManager-D380OsFx.mjs} +1 -1
- package/dist/{AcpSessionManager-CKSM-N3a.cjs → AcpSessionManager-JfEvyMrn.cjs} +1 -1
- package/dist/{BasePermissionHandler-DffP0tjT.cjs → BasePermissionHandler-CNba2MyO.cjs} +1 -1
- package/dist/{BasePermissionHandler-BAfjjqWG.mjs → BasePermissionHandler-TLq_W9pl.mjs} +1 -1
- package/dist/{account-CneNvaLv.mjs → account-B2f23fIK.mjs} +5 -5
- package/dist/{account-pH6JQJbQ.cjs → account-CiQRVn95.cjs} +5 -5
- package/dist/{acpSessionResume-Cp2majJ5.cjs → acpSessionResume-CdZCok4p.cjs} +1 -1
- package/dist/{acpSessionResume-C6KuYvK8.mjs → acpSessionResume-D7s2CpYx.mjs} +1 -1
- package/dist/{agentHome-ZGpu5XKy.cjs → agentHome-CBrBSMnQ.cjs} +4 -4
- package/dist/{agentHome-BkiHrQwj.mjs → agentHome-CnuMiK-o.mjs} +4 -4
- package/dist/{api-D7EAwOT2.mjs → api-CkLdf3Hw.mjs} +14 -11
- package/dist/{api-eXuwG3LS.cjs → api-Ey908pwP.cjs} +14 -11
- package/dist/{apiMachine-B5c9zCjB.mjs → apiMachine-Bmz_70G5.mjs} +112 -19
- package/dist/{apiMachine-B8ZxgTx1.cjs → apiMachine-Cf58HfKd.cjs} +111 -18
- package/dist/{attachmentContent-DhTreh-W.cjs → attachmentContent-BAdLzMn2.cjs} +2 -2
- package/dist/{attachmentContent-DV7W3vw7.mjs → attachmentContent-zrtuHdZ6.mjs} +2 -2
- package/dist/{auth-DX3_VbOL.mjs → auth-BSUhf3ga.mjs} +8 -8
- package/dist/{auth-DhZkCYgz.cjs → auth-BTEHYxT8.cjs} +8 -8
- package/dist/{auth-hEcrRFkt.mjs → auth-DFkU4wew.mjs} +5 -5
- package/dist/{auth-CFUuiMdV.cjs → auth-Du2R-gUh.cjs} +5 -5
- package/dist/{auto-BI4y9q_F.mjs → auto-OAOErj-W.mjs} +15 -15
- package/dist/{auto-C4fniaPr.cjs → auto-qzoYqxeh.cjs} +14 -14
- package/dist/{bootstrap-CBoerZOm.mjs → bootstrap-Bv2SvdDx.mjs} +2 -2
- package/dist/{bootstrap-DPbGC_1B.cjs → bootstrap-CHBrF6YF.cjs} +2 -2
- package/dist/{browser-ilsUkzwR.mjs → browser-C63tLxfu.mjs} +1 -1
- package/dist/{browser-BRH_1Tgz.cjs → browser-DJ8PhjCJ.cjs} +1 -1
- package/dist/{claudeLocal-CmRDtqcj.mjs → claudeLocal-B6zMp1Pr.mjs} +5 -5
- package/dist/{claudeLocal-D6-w4R7R.cjs → claudeLocal-ClpJ_2Mk.cjs} +4 -4
- package/dist/{claudeLocalLauncher-D93IuVcy.cjs → claudeLocalLauncher-C6VnhKGg.cjs} +9 -9
- package/dist/{claudeLocalLauncher-B9gzCvDn.mjs → claudeLocalLauncher-C9zlUxEK.mjs} +10 -10
- package/dist/{claudeSessionFork-Bo-LD1DH.cjs → claudeSessionFork-B9csQS3q.cjs} +1 -1
- package/dist/{claudeSessionFork-ghL7gnlU.mjs → claudeSessionFork-CQmkyPrl.mjs} +1 -1
- package/dist/{client-5SAqN0dw.cjs → client--Y2cO566.cjs} +4 -4
- package/dist/{client-N9svGBOP.cjs → client-B95PYz0H.cjs} +2 -2
- package/dist/{client-DCFPJD00.mjs → client-BZgYpNB0.mjs} +2 -2
- package/dist/{client-BGLgYzYC.mjs → client-BanKGPA4.mjs} +4 -4
- package/dist/{client-CTsx4zlq.cjs → client-C07PP_4E.cjs} +2 -2
- package/dist/{client-DhnaMxKS.mjs → client-CUvGQuJX.mjs} +2 -2
- package/dist/{client-BcUWsWK-.cjs → client-Cc7G2erF.cjs} +2 -2
- package/dist/{client-DTwpdW59.mjs → client-DqNL-Cjk.mjs} +2 -2
- package/dist/codex/happyMcpStdioBridge.cjs +18 -18
- package/dist/codex/happyMcpStdioBridge.mjs +18 -18
- package/dist/{codexAppServerClient-3mdddlO9.cjs → codexAppServerClient-DLm3D7-Z.cjs} +107 -5
- package/dist/{codexAppServerClient-CBVlr7hu.mjs → codexAppServerClient-Mc5onT8f.mjs} +105 -7
- package/dist/{codexCommand-BP88QTCU.mjs → codexCommand-5r7wqrYt.mjs} +119 -106
- package/dist/{codexCommand-Bps4LkvI.cjs → codexCommand-DwVQoGO1.cjs} +122 -109
- package/dist/{codexTermination-C9CVmb9Q.cjs → codexTermination-Cl5MMVDr.cjs} +1 -1
- package/dist/{codexTermination-CUPmLwbF.mjs → codexTermination-D5CGQPvh.mjs} +1 -1
- package/dist/{config-O4t1U8Bi.cjs → config-D_T8G2HJ.cjs} +3 -3
- package/dist/{config-eTAvnx-a.mjs → config-W4pmQc1k.mjs} +3 -3
- package/dist/{configuration-C4w7_yT9.mjs → configuration-B3wgZX4R.mjs} +1 -1
- package/dist/{configuration-B-smHMf7.cjs → configuration-swJoFD0a.cjs} +1 -1
- package/dist/{connect-BJT1vGf-.mjs → connect-CL2T_Evn.mjs} +12 -12
- package/dist/{connect-BGZmkECR.cjs → connect-Ct7OikyT.cjs} +12 -12
- package/dist/{context-Cy2pdGOi.mjs → context-5r4WVFFt.mjs} +1 -1
- package/dist/{context-Dfj4Pjqz.cjs → context-BG_UKLuU.cjs} +1 -1
- package/dist/{controlClient-CtBRHlbJ.mjs → controlClient--DAPnEd4.mjs} +3 -3
- package/dist/{controlClient-Dlm7wz-k.cjs → controlClient-DhrKwFJt.cjs} +3 -3
- package/dist/{createSessionMetadata-DqBHMEgs.mjs → createSessionMetadata-DGVfg9tW.mjs} +2 -2
- package/dist/{createSessionMetadata-B1NbiqH5.cjs → createSessionMetadata-ZRwYKvMp.cjs} +2 -2
- package/dist/{deterministicJson-DGheByZm.cjs → deterministicJson-CnVlxzAp.cjs} +14 -14
- package/dist/{deterministicJson-B94VfD9g.mjs → deterministicJson-Dg0wvwNe.mjs} +14 -14
- package/dist/{doctor-CdXBxTms.cjs → doctor-CMMa2LJA.cjs} +7 -7
- package/dist/{doctor-D3Ph5EzU.mjs → doctor-DLbyvQ9Z.mjs} +7 -7
- package/dist/{downloadTarget-DBDqU17k.mjs → downloadTarget-BgZcstO5.mjs} +6 -6
- package/dist/{downloadTarget-BpToCct7.cjs → downloadTarget-C53IC8U9.cjs} +6 -6
- package/dist/{ensureDaemonRunning-7J9kb-Sj.mjs → ensureDaemonRunning-CWTOK8WR.mjs} +5 -5
- package/dist/{ensureDaemonRunning-Balq1x5B.cjs → ensureDaemonRunning-DS4GZKY9.cjs} +5 -5
- package/dist/{exitNotice-DkJaD0I0.mjs → exitNotice-BUsSapfz.mjs} +2 -2
- package/dist/{exitNotice-CTcWpCmg.cjs → exitNotice-Bj6JVAEc.cjs} +2 -2
- package/dist/{format-0c3qb7FE.mjs → format-CEG2hRK-.mjs} +1 -1
- package/dist/{format-DoTTSy8C.cjs → format-UU6BHTs0.cjs} +1 -1
- package/dist/{handleResumeCommand-BUIHxf87.mjs → handleResumeCommand-BWHiKkQC.mjs} +5 -5
- package/dist/{handleResumeCommand-Dp-rTs9Q.cjs → handleResumeCommand-CxOxcYjE.cjs} +5 -5
- package/dist/{index-DE5JMca_.mjs → index-BH0fVzRF.mjs} +4 -4
- package/dist/{index-Du6DD3Re.cjs → index-BLQpsI9I.cjs} +3 -3
- package/dist/{index-CP6WBAk_.cjs → index-B_muybV3.cjs} +4 -4
- package/dist/{index-B-hkUPYN.mjs → index-Bjpbyuyd.mjs} +41 -41
- package/dist/{index-DWtaNZd1.cjs → index-BsLXPLqz.cjs} +40 -40
- package/dist/{index-D47YHzru.mjs → index-CN-3w3P8.mjs} +4 -4
- package/dist/{index-DMhMr4cb.cjs → index-SQIIva3h.cjs} +4 -4
- package/dist/{index-BlUhrNAx.mjs → index-eEjPS0M6.mjs} +3 -3
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-Sr04Bhi-.cjs → install-BxB7KmGi.cjs} +3 -3
- package/dist/{install-CwQRBYJL.mjs → install-CxwV8YVK.mjs} +3 -3
- package/dist/{issue-D9rmZ2Im.mjs → issue-B75oOPi6.mjs} +7 -7
- package/dist/{issue-pnYFBO-F.cjs → issue-BRZrzStW.cjs} +7 -7
- package/dist/lib.cjs +11 -11
- package/dist/lib.d.cts +8 -0
- package/dist/lib.d.mts +8 -0
- package/dist/lib.mjs +11 -11
- package/dist/{localHappyAgentAuth-BpBQ_aFo.cjs → localHappyAgentAuth-cZ1UzB3N.cjs} +1 -1
- package/dist/{localHappyAgentAuth-Bc3bo0fI.mjs → localHappyAgentAuth-pQ1tydmz.mjs} +1 -1
- package/dist/{logger-8f-WNgus.mjs → logger-4c2kQKdA.mjs} +2 -2
- package/dist/{logger-HxTu5uFs.cjs → logger-BgiIn8N6.cjs} +2 -2
- package/dist/{machineMetadata-EyybyGYp.mjs → machineMetadata-05fRn35o.mjs} +3 -3
- package/dist/{machineMetadata-C7DEm41X.cjs → machineMetadata-CtPf5dLj.cjs} +3 -3
- package/dist/{main-CW8xXpXM.cjs → main-CYkrRiCH.cjs} +48 -48
- package/dist/{main-Dmb6KKtB.mjs → main-rHs6jmx-.mjs} +48 -48
- package/dist/{manager-BEsI4qt3.mjs → manager-2Il8XJVq.mjs} +1 -1
- package/dist/{mcp-DAuW3X2i.mjs → mcp-BXw9rHea.mjs} +15 -15
- package/dist/{mcp-BHKpSJPk.cjs → mcp-DFNqLMbv.cjs} +15 -15
- package/dist/{mirrorProtocol-Cmxr0YBU.cjs → mirrorProtocol-BWMat_4c.cjs} +2 -2
- package/dist/{mirrorProtocol-kXv1EaAI.mjs → mirrorProtocol-DWG3tXpD.mjs} +2 -2
- package/dist/{package-ChmhpzsE.cjs → package-B-rucZuX.cjs} +8 -8
- package/dist/{package-Cp8RjVmm.mjs → package-DVsmL69e.mjs} +8 -8
- package/dist/{panels-iylFFXPZ.cjs → panels-B-n6X9Yk.cjs} +5 -5
- package/dist/{panels-x99J6c1O.mjs → panels-Dyd-4NaJ.mjs} +5 -5
- package/dist/{peerTools-ZUDz2PCs.cjs → peerTools-BQ5xWXof.cjs} +5 -5
- package/dist/{peerTools-jWghbgAH.mjs → peerTools-wx9UOrla.mjs} +5 -5
- package/dist/{persistence-DxboRqwb.cjs → persistence-C_NJ8wVb.cjs} +2 -2
- package/dist/{persistence-D1E7jiV4.mjs → persistence-D8JwMaku.mjs} +2 -2
- package/dist/{piRunnerArgs-BM9b8W_4.mjs → piRunnerArgs-BV4g7Hmm.mjs} +1 -1
- package/dist/{piRunnerArgs-gNYQH48T.cjs → piRunnerArgs-eHB-JNoh.cjs} +1 -1
- package/dist/{piRuntime-mqdaYw91.cjs → piRuntime-DiZF0Nqv.cjs} +1 -1
- package/dist/{piRuntime-B6X6ax5K.mjs → piRuntime-DzY2jt2G.mjs} +1 -1
- package/dist/{piTerminal-DaoQF1Rn.mjs → piTerminal-CXsFC_JI.mjs} +17 -17
- package/dist/{piTerminal-D-bOYy3E.cjs → piTerminal-UYlG-ZxW.cjs} +17 -17
- package/dist/{pushNotifications-WgO2p0eT.mjs → pushNotifications-BnYZ4jrt.mjs} +2 -2
- package/dist/{pushNotifications-EJWZAYed.cjs → pushNotifications-D4vbuMHx.cjs} +2 -2
- package/dist/{query-ykhx5AZx.cjs → query-C1XzkRMT.cjs} +1 -1
- package/dist/{query-BGtAkN33.mjs → query-DFpGdyiT.mjs} +1 -1
- package/dist/{rateLimitWindows-Cfdnt4On.cjs → rateLimitWindows-Cxg57bVZ.cjs} +1 -1
- package/dist/{rateLimitWindows-BRImToc6.mjs → rateLimitWindows-Xbu2cD8b.mjs} +1 -1
- package/dist/{reconnectGate-B9iXSyiI.mjs → reconnectGate-BqogaLTK.mjs} +1 -1
- package/dist/{reconnectGate-DY97bPDg.cjs → reconnectGate-DjRjnZe-.cjs} +1 -1
- package/dist/{registerCommonHandlers-YbBzC20u.mjs → registerCommonHandlers-BDEwSik-.mjs} +2 -2
- package/dist/{registerCommonHandlers-YsrcwRo3.cjs → registerCommonHandlers-BsRmCAOS.cjs} +2 -2
- package/dist/{registerKillSessionHandler-ClPpvQnu.cjs → registerKillSessionHandler-C9PlDdh4.cjs} +5 -5
- package/dist/{registerKillSessionHandler-d3rziH37.mjs → registerKillSessionHandler-CJG29HDi.mjs} +5 -5
- package/dist/{registerSideQuestionHandler-CMvcaD2A.cjs → registerSideQuestionHandler-DWQL3tBZ.cjs} +4 -4
- package/dist/{registerSideQuestionHandler-C3K33AGg.mjs → registerSideQuestionHandler-Dc8VtXzy.mjs} +4 -4
- package/dist/{remoteSessionClient-e9jDdGyc.cjs → remoteSessionClient-BOQjGMkq.cjs} +5 -5
- package/dist/{remoteSessionClient-B1C7gwqX.mjs → remoteSessionClient-CliGqDqa.mjs} +5 -5
- package/dist/{reportProgressTool-67vB9Y7g.mjs → reportProgressTool-CuHHc66P.mjs} +4 -4
- package/dist/{reportProgressTool-B3yNkD_S.cjs → reportProgressTool-jzvAyDH0.cjs} +4 -4
- package/dist/{run-c4votzBI.cjs → run-BBSymJ6D.cjs} +34 -34
- package/dist/{run-BjpvcAAW.mjs → run-hMQwQVEx.mjs} +34 -34
- package/dist/{runClaude-B1NEkS3e.mjs → runClaude-BHUMnY2G.mjs} +21 -21
- package/dist/{runClaude-DkaZHsDR.cjs → runClaude-qOeODZhV.cjs} +21 -21
- package/dist/{runClaudeDeps-JYJCSgT2.mjs → runClaudeDeps-Ce3DIMUa.mjs} +44 -44
- package/dist/{runClaudeDeps-C8s0t81_.cjs → runClaudeDeps-DEKf-dCb.cjs} +38 -38
- package/dist/{runGemini-Bgmlv2sP.mjs → runGemini-BX9SnIkS.mjs} +35 -35
- package/dist/{runGemini-m1e3OwXi.cjs → runGemini-BYm18yiR.cjs} +35 -35
- package/dist/{runOpenClaw-B5iSbZvU.cjs → runOpenClaw-CkXTQ1xM.cjs} +17 -17
- package/dist/{runOpenClaw-BTry3E0Y.mjs → runOpenClaw-DsId6bZj.mjs} +17 -17
- package/dist/{sandbox-D-irSe8t.cjs → sandbox-BiNqCHs8.cjs} +4 -4
- package/dist/{sandbox-BPZsegqb.mjs → sandbox-Ddpq3lAR.mjs} +4 -4
- package/dist/selfCheck-o2HhQpjV.mjs +89 -0
- package/dist/{selfCheck-08_EII_I.cjs → selfCheck-wUk6qBo8.cjs} +39 -39
- package/dist/{send-4esWxXzr.mjs → send-Csdcq-K-.mjs} +8 -8
- package/dist/{send-DUNnoCVK.cjs → send-Cvq1uENA.cjs} +8 -8
- package/dist/{server-NG8ODDc_.cjs → server-BH4Qsm3G.cjs} +6 -6
- package/dist/{server-Bn1QXAY4.mjs → server-C1k_ajv8.mjs} +4 -4
- package/dist/{sessionLock-BKnXIWnQ.mjs → sessionLock-BdXvyzhz.mjs} +3 -3
- package/dist/{sessionLock-CW-P7VU9.cjs → sessionLock-CdP6pP5O.cjs} +3 -3
- package/dist/{sessionOps-Cei-Q7OB.cjs → sessionOps-CXTgzjZJ.cjs} +4 -4
- package/dist/{sessionOps-Ct7ayY1X.mjs → sessionOps-CcOSnH7K.mjs} +4 -4
- package/dist/{sessionProvider-DoXNlG4E.cjs → sessionProvider-CBRH_U0l.cjs} +5 -5
- package/dist/{sessionProvider-D8bZBiAX.mjs → sessionProvider-DpOzXmqv.mjs} +5 -5
- package/dist/{sessionScanner-DivfvOis.mjs → sessionScanner-9bShAB5x.mjs} +3 -3
- package/dist/{sessionScanner-CGs_Lbq7.cjs → sessionScanner-DkTBAjTt.cjs} +3 -3
- package/dist/{sessions-VYh46wvf.cjs → sessions-CuqK9JP3.cjs} +10 -10
- package/dist/{sessions-DN47YSMs.mjs → sessions-Dee2EKGB.mjs} +10 -10
- package/dist/{setupOfflineReconnection-DqeCU4SM.mjs → setupOfflineReconnection-DewXskRn.mjs} +2 -2
- package/dist/{setupOfflineReconnection-DHBmg5_6.cjs → setupOfflineReconnection-cGiqFFco.cjs} +2 -2
- package/dist/{spawn-DQLUI6h9.cjs → spawn-CK29nUkh.cjs} +12 -12
- package/dist/{spawn-ChyfhZlN.mjs → spawn-C_DZ9dlL.mjs} +13 -13
- package/dist/{spawnHappyCLI-DIR-U_rK.cjs → spawnHappyCLI-Ace1lfB4.cjs} +1 -1
- package/dist/{spawnHappyCLI-D6R-aIkL.mjs → spawnHappyCLI-CGoBUcM-.mjs} +1 -1
- package/dist/{startFileWatcher-CQCQrB3d.mjs → startFileWatcher-DDSvcz8k.mjs} +1 -1
- package/dist/{startFileWatcher-Qy7f8U4k.cjs → startFileWatcher-YmyS4zBl.cjs} +1 -1
- package/dist/{startupSessionCreate-BgoNJdcx.mjs → startupSessionCreate-CQ7PWP3A.mjs} +3 -3
- package/dist/{startupSessionCreate-cInaqBEd.cjs → startupSessionCreate-SNZm_wCS.cjs} +3 -3
- package/dist/{sync-DS_emV3g.cjs → sync-DjVi4LBV.cjs} +1 -1
- package/dist/{sync-DzKT0Ova.mjs → sync-DxZNc7C_.mjs} +1 -1
- package/dist/{systemPrompt-DVy690s2.cjs → systemPrompt-4n2tptU3.cjs} +1 -1
- package/dist/{systemPrompt-rpf-Xff-.mjs → systemPrompt-DKqgPtUs.mjs} +1 -1
- package/dist/{teams-CbqS5j_2.mjs → teams-BSW7lKfJ.mjs} +8 -8
- package/dist/{teams-DwBVRsbw.cjs → teams-C_5X9hb3.cjs} +8 -8
- package/dist/{time-o_AW-82H.mjs → time-CCZ-nP8H.mjs} +1 -1
- package/dist/{time-i8fiLSHv.cjs → time-CKVbeZ-a.cjs} +1 -1
- package/dist/{titleGenerator-EGdbOCLR.cjs → titleGenerator-EmPqCSo5.cjs} +2 -2
- package/dist/{titleGenerator-rKTQTQN7.mjs → titleGenerator-JVdBfafo.mjs} +1 -1
- package/dist/{todo-CWyVxUyT.mjs → todo-DNiRA_5m.mjs} +7 -7
- package/dist/{todo-d8aPaBq_.cjs → todo-DXQfbkSL.cjs} +7 -7
- package/dist/{tools-DtSHBOmt.cjs → tools-B6mOWP7m.cjs} +1 -1
- package/dist/{tools--22wuNI5.mjs → tools-C1uZUyl9.mjs} +1 -1
- package/dist/{uninstall-CJqFoKZO.mjs → uninstall-BTlCdGNB.mjs} +3 -3
- package/dist/{uninstall-BAaq0c10.cjs → uninstall-DNAX7djH.cjs} +3 -3
- package/package.json +8 -8
- package/dist/selfCheck-BPzN6ip2.mjs +0 -89
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { a as authAndSetupMachineIfNeeded } from './auth-
|
|
1
|
+
import { a as authAndSetupMachineIfNeeded } from './auth-DFkU4wew.mjs';
|
|
2
2
|
import { t as createEnvelope, M as BUILTIN_TODO_DISCOVERY, I as ISSUE_SESSION_CAPABILITY, r as restoredEffort, x as readEffortIntent, Y as EFFORT_INTENT_AUTO, P as PROMPT_QUEUE_CAPABILITY, ai as CODEX_STEER_CAPABILITY, a as PROJECT_SESSION_CAPABILITY, aj as CODEX_COMPACT_CAPABILITY, R as RUN_INTENT_CAPABILITY, A as AGENT_PROFILE_SESSION_CAPABILITY, ak as CODEX_BTW_CAPABILITY, al as CODEX_LIVE_PERMISSION_CAPABILITY } from './index-DWk-WTU-.mjs';
|
|
3
3
|
import { i as issueSessionMetadata } from './sessionMetadata-C1eoAi89.mjs';
|
|
4
4
|
import { a as recordRunIntents, w as withoutEffort, r as registerRunIntentRpc, b as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-CYQi7vqJ.mjs';
|
|
5
|
-
import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-
|
|
6
|
-
import { s as sharedProjectsClient } from './client-
|
|
5
|
+
import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-Dg0wvwNe.mjs';
|
|
6
|
+
import { s as sharedProjectsClient } from './client-BZgYpNB0.mjs';
|
|
7
7
|
import { unlink } from 'node:fs/promises';
|
|
8
8
|
import { a as announceForkBackfill, p as publishForkBackfillWhenCommitted, F as FORK_BACKFILL_CAPABILITY } from './forkBackfill-C9EfJ64O.mjs';
|
|
9
9
|
import { randomUUID } from 'node:crypto';
|
|
10
10
|
import { createId } from '@paralleldrive/cuid2';
|
|
11
|
-
import { t as textResultPayload, d as toolResultContentText, c as connectionState, A as ApiClient } from './api-
|
|
11
|
+
import { t as textResultPayload, d as toolResultContentText, c as connectionState, A as ApiClient } from './api-CkLdf3Hw.mjs';
|
|
12
12
|
import { r as registerAgentAttachmentDownloads, H as HeldInput } from './heldInput-C69lA2dH.mjs';
|
|
13
|
-
import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-
|
|
13
|
+
import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-zrtuHdZ6.mjs';
|
|
14
14
|
import { useStdout, useInput, Box, Text, render } from 'ink';
|
|
15
|
-
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-
|
|
15
|
+
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-BdXvyzhz.mjs';
|
|
16
16
|
import React, { useState, useRef, useEffect, useCallback } from 'react';
|
|
17
|
-
import { C as CodexAppServerClient } from './codexAppServerClient-
|
|
18
|
-
import { S as SIDE_QUESTION_SYSTEM_PROMPT, b as buildSideQuestionPrompt, t as toolAttemptNotice, r as registerSideQuestionHandler, d as describePendingApprovals, w as wrapperRateLimitReporter } from './registerSideQuestionHandler-
|
|
19
|
-
import { l as logger } from './logger-
|
|
20
|
-
import { B as BasePermissionHandler } from './BasePermissionHandler-
|
|
21
|
-
import { B as BaseReasoningProcessor, s as settleCodexSession } from './codexTermination-
|
|
17
|
+
import { C as CodexAppServerClient, d as describeCodexFailure, a as describeCodexRetry, b as describeThrownTurnError, p as processLossMessage } from './codexAppServerClient-Mc5onT8f.mjs';
|
|
18
|
+
import { S as SIDE_QUESTION_SYSTEM_PROMPT, b as buildSideQuestionPrompt, t as toolAttemptNotice, r as registerSideQuestionHandler, d as describePendingApprovals, w as wrapperRateLimitReporter } from './registerSideQuestionHandler-Dc8VtXzy.mjs';
|
|
19
|
+
import { l as logger } from './logger-4c2kQKdA.mjs';
|
|
20
|
+
import { B as BasePermissionHandler } from './BasePermissionHandler-TLq_W9pl.mjs';
|
|
21
|
+
import { B as BaseReasoningProcessor, s as settleCodexSession } from './codexTermination-D5CGQPvh.mjs';
|
|
22
22
|
import { execSync } from 'node:child_process';
|
|
23
|
-
import { r as readSettings, l as latchKeepAwake, e as evaluateWrapperIdle, a as resolveCheckMs, H as HIBERNATION_CAPABILITY } from './persistence-
|
|
24
|
-
import { g as getInitialMachineMetadata } from './machineMetadata-
|
|
25
|
-
import { c as configuration } from './configuration-
|
|
26
|
-
import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-
|
|
23
|
+
import { r as readSettings, l as latchKeepAwake, e as evaluateWrapperIdle, a as resolveCheckMs, H as HIBERNATION_CAPABILITY } from './persistence-D8JwMaku.mjs';
|
|
24
|
+
import { g as getInitialMachineMetadata } from './machineMetadata-05fRn35o.mjs';
|
|
25
|
+
import { c as configuration } from './configuration-B3wgZX4R.mjs';
|
|
26
|
+
import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-CJG29HDi.mjs';
|
|
27
27
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
28
28
|
import { dirname, join } from 'node:path';
|
|
29
|
-
import { c as createSessionMetadata } from './createSessionMetadata-
|
|
29
|
+
import { c as createSessionMetadata } from './createSessionMetadata-DGVfg9tW.mjs';
|
|
30
30
|
import { M as MessageBuffer } from './sessionExitLifecycle-iAtZN9sa.mjs';
|
|
31
|
-
import { n as notifyDaemonSessionStarted, q as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient
|
|
32
|
-
import { c as createSessionForStartup, b as HibernationExitLatch, H as HibernationProbe, a as commitHibernation } from './startupSessionCreate-
|
|
31
|
+
import { n as notifyDaemonSessionStarted, q as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient--DAPnEd4.mjs';
|
|
32
|
+
import { c as createSessionForStartup, b as HibernationExitLatch, H as HibernationProbe, a as commitHibernation } from './startupSessionCreate-CQ7PWP3A.mjs';
|
|
33
33
|
import { d as decodeBase64, e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
|
|
34
|
-
import { s as setupOfflineReconnection } from './setupOfflineReconnection-
|
|
34
|
+
import { s as setupOfflineReconnection } from './setupOfflineReconnection-DewXskRn.mjs';
|
|
35
35
|
import { t as trimIdent } from './trimIdent-BAjmv_TG.mjs';
|
|
36
36
|
import { a as parseSpecialCommand, c as compactCommandText, b as parseCompact } from './specialCommands-MXUN0wfI.mjs';
|
|
37
37
|
import { C as CHANGE_TITLE_INSTRUCTION } from './constants-BC4St0xd.mjs';
|
|
@@ -41,77 +41,77 @@ import { r as readSessionBindings, w as writeSessionBinding, d as defaultSecretP
|
|
|
41
41
|
import { mkdirSync, writeFileSync, chmodSync, rmSync } from 'node:fs';
|
|
42
42
|
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-BPQ-lPhH.mjs';
|
|
43
43
|
import { s as shouldRecordSpawnAccount, u as unavailableNotice } from './wrapperAccount-CwaA-n1S.mjs';
|
|
44
|
-
import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-
|
|
44
|
+
import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-CWTOK8WR.mjs';
|
|
45
45
|
import 'tweetnacl';
|
|
46
46
|
import 'axios';
|
|
47
|
-
import './time-
|
|
48
|
-
import './browser-
|
|
47
|
+
import './time-CCZ-nP8H.mjs';
|
|
48
|
+
import './browser-C63tLxfu.mjs';
|
|
49
49
|
import 'open';
|
|
50
50
|
import 'zod';
|
|
51
51
|
import './prompt-QHuFx9j6.mjs';
|
|
52
|
-
import './client-
|
|
53
|
-
import './exitNotice-
|
|
54
|
-
import './reportProgressTool-
|
|
55
|
-
import './client-
|
|
52
|
+
import './client-DqNL-Cjk.mjs';
|
|
53
|
+
import './exitNotice-BUsSapfz.mjs';
|
|
54
|
+
import './reportProgressTool-CuHHc66P.mjs';
|
|
55
|
+
import './client-CUvGQuJX.mjs';
|
|
56
56
|
import './precheckCompat-DeEbilbr.mjs';
|
|
57
|
-
import './format-
|
|
57
|
+
import './format-CEG2hRK-.mjs';
|
|
58
58
|
import './agentGuidance-BDYt2Qy2.mjs';
|
|
59
59
|
import 'node:os';
|
|
60
60
|
import './pi-CqyoZMjI.mjs';
|
|
61
61
|
import './fileStore-5qpetZS0.mjs';
|
|
62
|
-
import './client-
|
|
62
|
+
import './client-BanKGPA4.mjs';
|
|
63
63
|
import 'node:util';
|
|
64
|
-
import './context-
|
|
65
|
-
import './sessionOps-
|
|
64
|
+
import './context-5r4WVFFt.mjs';
|
|
65
|
+
import './sessionOps-CcOSnH7K.mjs';
|
|
66
66
|
import 'socket.io-client';
|
|
67
67
|
import './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
68
68
|
import './resources-CLP_MpK4.mjs';
|
|
69
|
-
import './tools
|
|
70
|
-
import './peerTools-
|
|
69
|
+
import './tools-C1uZUyl9.mjs';
|
|
70
|
+
import './peerTools-wx9UOrla.mjs';
|
|
71
71
|
import './ids-DU6sLx4C.mjs';
|
|
72
|
-
import './remoteSessionClient-
|
|
72
|
+
import './remoteSessionClient-CliGqDqa.mjs';
|
|
73
73
|
import '@modelcontextprotocol/sdk/server/mcp.js';
|
|
74
74
|
import 'node:http';
|
|
75
75
|
import '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
76
76
|
import './limits-DIo7rEBR.mjs';
|
|
77
|
-
import './downloadTarget-
|
|
77
|
+
import './downloadTarget-BgZcstO5.mjs';
|
|
78
78
|
import './terminals-Dc38XmZv.mjs';
|
|
79
79
|
import './terminalTitleSuggest-CeKsX_V6.mjs';
|
|
80
80
|
import './tmuxSocket-BmZyixRM.mjs';
|
|
81
|
-
import './bootstrap-
|
|
82
|
-
import './package-
|
|
81
|
+
import './bootstrap-Bv2SvdDx.mjs';
|
|
82
|
+
import './package-DVsmL69e.mjs';
|
|
83
83
|
import './webPanels-B2_C2-3g.mjs';
|
|
84
|
-
import './pushNotifications-
|
|
84
|
+
import './pushNotifications-BnYZ4jrt.mjs';
|
|
85
85
|
import './contentLogMetadata-BlWI0egu.mjs';
|
|
86
86
|
import './previewPath-CXN4Vag0.mjs';
|
|
87
87
|
import 'crypto';
|
|
88
|
-
import './reconnectGate-
|
|
88
|
+
import './reconnectGate-BqogaLTK.mjs';
|
|
89
89
|
import 'os';
|
|
90
90
|
import 'child_process';
|
|
91
91
|
import 'node:events';
|
|
92
|
-
import './registerCommonHandlers-
|
|
92
|
+
import './registerCommonHandlers-BDEwSik-.mjs';
|
|
93
93
|
import 'util';
|
|
94
94
|
import 'fs/promises';
|
|
95
95
|
import 'path';
|
|
96
96
|
import 'cross-spawn';
|
|
97
|
-
import './sync-
|
|
97
|
+
import './sync-DxZNc7C_.mjs';
|
|
98
98
|
import 'chalk';
|
|
99
99
|
import './cliUpdate-Y34VGe9Y.mjs';
|
|
100
100
|
import './processTermination-ChJG5SLW.mjs';
|
|
101
101
|
import './processTreeSnapshot-fuwxC0fr.mjs';
|
|
102
102
|
import 'node:readline';
|
|
103
|
-
import './manager-
|
|
103
|
+
import './manager-2Il8XJVq.mjs';
|
|
104
104
|
import '@anthropic-ai/sandbox-runtime';
|
|
105
|
-
import './rateLimitWindows-
|
|
105
|
+
import './rateLimitWindows-Xbu2cD8b.mjs';
|
|
106
106
|
import './processTree-CP5IvQ2Z.mjs';
|
|
107
107
|
import './detectCLI-CSGMlV51.mjs';
|
|
108
108
|
import 'fs';
|
|
109
|
-
import './localHappyAgentAuth-
|
|
109
|
+
import './localHappyAgentAuth-pQ1tydmz.mjs';
|
|
110
110
|
import './fsMkdir-DumgLTzR.mjs';
|
|
111
111
|
import './types-CkqAACXx.mjs';
|
|
112
112
|
import 'url';
|
|
113
113
|
import './claudeAccountEnv-C6Wl-ZbT.mjs';
|
|
114
|
-
import './spawnHappyCLI-
|
|
114
|
+
import './spawnHappyCLI-CGoBUcM-.mjs';
|
|
115
115
|
import './doctorReadiness-C208SMN9.mjs';
|
|
116
116
|
|
|
117
117
|
function getStartedSubagents(state) {
|
|
@@ -1126,66 +1126,39 @@ function codexModelFacts(input) {
|
|
|
1126
1126
|
};
|
|
1127
1127
|
}
|
|
1128
1128
|
|
|
1129
|
-
const
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1129
|
+
const CRASH_LOOP_LIMIT = 2;
|
|
1130
|
+
const STREAK_WINDOW_MS = 6 * 60 * 60 * 1e3;
|
|
1131
|
+
const CODEX_CRASH_LOOP_PREFIX = "Codex thread crash loop:";
|
|
1132
|
+
function readCodexResumeCrash(value) {
|
|
1133
|
+
const v = value;
|
|
1134
|
+
if (!v || typeof v !== "object" || typeof v.threadId !== "string" || !v.threadId) return null;
|
|
1135
|
+
if (typeof v.count !== "number" || !Number.isFinite(v.count) || v.count < 1) return null;
|
|
1136
|
+
if (typeof v.at !== "number" || !Number.isFinite(v.at)) return null;
|
|
1137
|
+
return {
|
|
1138
|
+
threadId: v.threadId,
|
|
1139
|
+
count: Math.floor(v.count),
|
|
1140
|
+
at: v.at,
|
|
1141
|
+
...typeof v.signal === "string" ? { signal: v.signal } : {},
|
|
1142
|
+
...typeof v.code === "number" ? { code: v.code } : {}
|
|
1143
|
+
};
|
|
1144
|
+
}
|
|
1145
|
+
function recordCodexCrash(previous, exit, now) {
|
|
1146
|
+
if (!exit.threadId || exit.servedTurn) return null;
|
|
1147
|
+
const continues = previous && previous.threadId === exit.threadId && now - previous.at < STREAK_WINDOW_MS;
|
|
1148
|
+
return {
|
|
1149
|
+
threadId: exit.threadId,
|
|
1150
|
+
count: continues ? previous.count + 1 : 1,
|
|
1151
|
+
at: now,
|
|
1152
|
+
signal: exit.signal,
|
|
1153
|
+
code: exit.code
|
|
1154
|
+
};
|
|
1151
1155
|
}
|
|
1152
|
-
function
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
}
|
|
1158
|
-
body = body.replace(/\s+/g, " ").trim();
|
|
1159
|
-
if (!body) return null;
|
|
1160
|
-
const normalize = (value) => value.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
1161
|
-
if (normalize(body) === normalize(statusLine)) return null;
|
|
1162
|
-
return body.length > 240 ? `${body.slice(0, 240)}\u2026` : body;
|
|
1163
|
-
}
|
|
1164
|
-
function describeCodexFailure(msg) {
|
|
1165
|
-
const hasFailure = msg?.status === "failed" || msg?.error !== void 0 && msg?.error !== null;
|
|
1166
|
-
if (!hasFailure) return null;
|
|
1167
|
-
const err = msg.error;
|
|
1168
|
-
if (typeof err === "string" && err.length > 0) return readableCodexErrorText(err);
|
|
1169
|
-
if (err && typeof err === "object" && typeof err.message === "string" && err.message.length > 0) {
|
|
1170
|
-
return readableCodexErrorText(err.message);
|
|
1171
|
-
}
|
|
1172
|
-
return "Unknown error";
|
|
1173
|
-
}
|
|
1174
|
-
function describeCodexRetry(msg) {
|
|
1175
|
-
const message = typeof msg?.message === "string" ? msg.message.trim() : "";
|
|
1176
|
-
const status = typeof msg?.http_status === "number" ? msg.http_status : null;
|
|
1177
|
-
const cause = status ? `HTTP ${status} from the model API` : "a model API error";
|
|
1178
|
-
return message ? `Codex is retrying after ${cause} (${message})` : `Codex is retrying after ${cause}`;
|
|
1179
|
-
}
|
|
1180
|
-
function codexStderrTailOf(error) {
|
|
1181
|
-
const tail = error?.codexStderrTail;
|
|
1182
|
-
return typeof tail === "string" && tail.trim() ? tail.trim() : null;
|
|
1183
|
-
}
|
|
1184
|
-
const TRANSPORT_LOSS = /^Codex process (exited|disconnected)\b|stdin not writable| timed out after \d+ms/;
|
|
1185
|
-
function describeThrownTurnError(error) {
|
|
1186
|
-
const message = error instanceof Error ? error.message : typeof error === "string" ? error : "";
|
|
1187
|
-
if (!message.trim() || TRANSPORT_LOSS.test(message)) return null;
|
|
1188
|
-
return readableCodexErrorText(message);
|
|
1156
|
+
function isCrashLoopBlocked(streak, threadId, now) {
|
|
1157
|
+
return !!streak && !!threadId && streak.threadId === threadId && streak.count >= CRASH_LOOP_LIMIT && now - streak.at < STREAK_WINDOW_MS;
|
|
1158
|
+
}
|
|
1159
|
+
function crashLoopNotice(streak) {
|
|
1160
|
+
const how = streak.signal === "SIGKILL" ? "it was killed (SIGKILL), most likely out of memory" : streak.signal ? `it exited (signal=${streak.signal})` : `it exited (code=${streak.code ?? "null"})`;
|
|
1161
|
+
return `${CODEX_CRASH_LOOP_PREFIX} Codex died ${streak.count} times in a row while loading this thread \u2014 ${how}. Very Happy stopped restarting it. Start a new Codex session with a summary of this one to continue.`;
|
|
1189
1162
|
}
|
|
1190
1163
|
|
|
1191
1164
|
async function resumeExistingThread(opts) {
|
|
@@ -2221,6 +2194,32 @@ async function runCodex(opts) {
|
|
|
2221
2194
|
});
|
|
2222
2195
|
const editThrottle = new EditReportThrottle();
|
|
2223
2196
|
client.setRateLimitHandler((snapshot) => wrapperRateLimitReporter().observeCodex(snapshot));
|
|
2197
|
+
let crashStreakNow = readCodexResumeCrash(session.getMetadata()?.codexResumeCrash);
|
|
2198
|
+
const crashStreak = () => crashStreakNow;
|
|
2199
|
+
let blockedResumeThreadId = null;
|
|
2200
|
+
const crashLoopBlocked = () => isCrashLoopBlocked(crashStreak(), client.threadId ?? blockedResumeThreadId, Date.now());
|
|
2201
|
+
const sendCrashLoopNotice = () => {
|
|
2202
|
+
const streak = crashStreak();
|
|
2203
|
+
if (!streak) return;
|
|
2204
|
+
messageBuffer.addMessage("Codex keeps dying while loading this thread; not restarting it", "status");
|
|
2205
|
+
session.sendSessionEvent({ type: "message", message: crashLoopNotice(streak) });
|
|
2206
|
+
};
|
|
2207
|
+
client.setUnexpectedExitHandler((exit) => {
|
|
2208
|
+
const next = recordCodexCrash(crashStreak(), exit, Date.now());
|
|
2209
|
+
logger.debug(`[Codex] App-server died: code=${exit.code} signal=${exit.signal} servedTurn=${exit.servedTurn} streak=${next?.count ?? 0}`);
|
|
2210
|
+
if (!next) return;
|
|
2211
|
+
crashStreakNow = next;
|
|
2212
|
+
session.updateMetadata((currentMetadata) => ({ ...currentMetadata, codexResumeCrash: next }));
|
|
2213
|
+
});
|
|
2214
|
+
const clearCrashStreak = () => {
|
|
2215
|
+
if (!crashStreakNow) return;
|
|
2216
|
+
crashStreakNow = null;
|
|
2217
|
+
session.updateMetadata((currentMetadata) => {
|
|
2218
|
+
const nextMetadata = { ...currentMetadata };
|
|
2219
|
+
delete nextMetadata.codexResumeCrash;
|
|
2220
|
+
return nextMetadata;
|
|
2221
|
+
});
|
|
2222
|
+
};
|
|
2224
2223
|
client.setEventHandler((msg) => {
|
|
2225
2224
|
if (msg.type === "token_count") {
|
|
2226
2225
|
session.sendAgentUsageSnapshot("codex", msg);
|
|
@@ -2386,7 +2385,13 @@ async function runCodex(opts) {
|
|
|
2386
2385
|
} catch (error) {
|
|
2387
2386
|
logger.debug("[Codex] Model discovery unavailable; using compatibility fallback", safeCodexErrorMetadata(error));
|
|
2388
2387
|
}
|
|
2389
|
-
if (opts.resumeThreadId && !codexAccount.unavailable) {
|
|
2388
|
+
if (opts.resumeThreadId && !codexAccount.unavailable && isCrashLoopBlocked(crashStreak(), opts.resumeThreadId, Date.now())) {
|
|
2389
|
+
blockedResumeThreadId = opts.resumeThreadId;
|
|
2390
|
+
logger.debug("[Codex] Not resuming a thread in a crash loop");
|
|
2391
|
+
sendCrashLoopNotice();
|
|
2392
|
+
first = false;
|
|
2393
|
+
appendSystemPromptInjected = true;
|
|
2394
|
+
} else if (opts.resumeThreadId && !codexAccount.unavailable) {
|
|
2390
2395
|
try {
|
|
2391
2396
|
await resumeExistingThread({
|
|
2392
2397
|
client,
|
|
@@ -2528,6 +2533,7 @@ async function runCodex(opts) {
|
|
|
2528
2533
|
logger.debug("[Codex] Handling /clear command - resetting Codex thread state");
|
|
2529
2534
|
heldInput.delivered();
|
|
2530
2535
|
client.clearThreadState();
|
|
2536
|
+
blockedResumeThreadId = null;
|
|
2531
2537
|
currentTurnId = null;
|
|
2532
2538
|
codexStartedSubagents = /* @__PURE__ */ new Set();
|
|
2533
2539
|
codexActiveSubagents = /* @__PURE__ */ new Set();
|
|
@@ -2561,6 +2567,11 @@ async function runCodex(opts) {
|
|
|
2561
2567
|
messageBuffer.addMessage(message.message, "user");
|
|
2562
2568
|
const compactCommand = codexCompactCommand(message.message);
|
|
2563
2569
|
try {
|
|
2570
|
+
if (crashLoopBlocked()) {
|
|
2571
|
+
heldInput.drop("failed");
|
|
2572
|
+
sendCrashLoopNotice();
|
|
2573
|
+
continue;
|
|
2574
|
+
}
|
|
2564
2575
|
if (compactCommand !== null) {
|
|
2565
2576
|
await client.ensureConnected();
|
|
2566
2577
|
heldInput.delivered();
|
|
@@ -2646,6 +2657,7 @@ async function runCodex(opts) {
|
|
|
2646
2657
|
});
|
|
2647
2658
|
reportModeFacts();
|
|
2648
2659
|
first = false;
|
|
2660
|
+
if (!result.aborted) clearCrashStreak();
|
|
2649
2661
|
if (includeAppendSystemPrompt) {
|
|
2650
2662
|
appendSystemPromptInjected = true;
|
|
2651
2663
|
}
|
|
@@ -2661,9 +2673,10 @@ async function runCodex(opts) {
|
|
|
2661
2673
|
session.sendSessionEvent({ type: "message", message: `Codex error: ${reason}` });
|
|
2662
2674
|
noteAccountFailure(reason);
|
|
2663
2675
|
} else {
|
|
2664
|
-
const tail = codexStderrTailOf(error);
|
|
2665
2676
|
messageBuffer.addMessage("Process exited unexpectedly", "status");
|
|
2666
|
-
session.sendSessionEvent({ type: "message", message:
|
|
2677
|
+
session.sendSessionEvent({ type: "message", message: processLossMessage(error) });
|
|
2678
|
+
logger.debug(`[Codex] Crash-loop check: streak=${crashStreak()?.count ?? 0} thread=${client.threadId ?? blockedResumeThreadId ?? "none"} blocked=${crashLoopBlocked()}`);
|
|
2679
|
+
if (crashLoopBlocked()) sendCrashLoopNotice();
|
|
2667
2680
|
}
|
|
2668
2681
|
} finally {
|
|
2669
2682
|
permissionHandler.reset();
|