very-happy-cli 0.2.178 → 0.2.180
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-DCQXHRzT.mjs → AcpBackend-B8Zi30Zh.mjs} +135 -16
- package/dist/{AcpBackend-CDkAQXYf.cjs → AcpBackend-DfRDtMcG.cjs} +135 -16
- package/dist/{AcpSessionManager-DckmUZza.cjs → AcpSessionManager-CASKOnOj.cjs} +38 -4
- package/dist/{AcpSessionManager-BXrQcqwC.mjs → AcpSessionManager-i8Rab0xT.mjs} +38 -4
- package/dist/{BasePermissionHandler-BVlrEhIi.mjs → BasePermissionHandler-26fKbRCm.mjs} +5 -2
- package/dist/{BasePermissionHandler-DyLmKKtO.cjs → BasePermissionHandler-BlM_tfej.cjs} +5 -2
- package/dist/acpSessionResume-B9l54P-X.mjs +67 -0
- package/dist/acpSessionResume-CR5pmgVo.cjs +74 -0
- package/dist/{agentHome-CEp9RMyK.cjs → agentHome-C7Sb7-Tz.cjs} +4 -4
- package/dist/{agentHome-C1xi37as.mjs → agentHome-CmGy0NWv.mjs} +4 -4
- package/dist/{api-JANhFdZV.cjs → api-DM7b1OKj.cjs} +38 -262
- package/dist/{api-Dib0dmqC.mjs → api-Hov8p7CA.mjs} +32 -256
- package/dist/{apiMachine-DNTJidYH.mjs → apiMachine-CwGEhQDT.mjs} +62 -15
- package/dist/{apiMachine-QhK-sKcr.cjs → apiMachine-DkGRj-Ai.cjs} +64 -17
- package/dist/{attachmentContent-bpQTBJ0y.cjs → attachmentContent-CEm13_gF.cjs} +4 -4
- package/dist/{attachmentContent-DkkdpSSJ.mjs → attachmentContent-CIn4iPEk.mjs} +2 -2
- package/dist/{auth-BRjd2esb.mjs → auth-BG1DY0gj.mjs} +5 -5
- package/dist/{auth-DgIV0Cvt.cjs → auth-CBXnm-Mj.cjs} +5 -5
- package/dist/{auth-omWDtgR8.cjs → auth-Dawj7pP5.cjs} +8 -8
- package/dist/{auth-DNct7VUi.mjs → auth-rggxMpEE.mjs} +8 -8
- package/dist/{auto-DKGFOJBo.mjs → auto-CXXLXGeL.mjs} +19 -18
- package/dist/{auto-CI16FZmX.cjs → auto-CbYOfoPS.cjs} +19 -18
- package/dist/{backgroundTaskActivity-BVwJBl02.mjs → backgroundTaskActivity-8PdPxrvy.mjs} +1 -1
- package/dist/{bootstrap-DCQ87Aan.cjs → bootstrap-DoA7okld.cjs} +2 -2
- package/dist/{bootstrap-BUagGC_-.mjs → bootstrap-Dt5I1SOl.mjs} +2 -2
- package/dist/{browser-Dj_DYQEh.mjs → browser-DUNetFT4.mjs} +1 -1
- package/dist/{browser-CSKhc0Bl.cjs → browser-DZ6qRtfH.cjs} +1 -1
- package/dist/{claudeCliPath-U4HHmV4r.cjs → claudeCliPath-GaP3UUz1.cjs} +1 -1
- package/dist/{claudeLocal-CdIVnOZp.cjs → claudeLocal--DNyMOSv.cjs} +8 -7
- package/dist/{claudeLocal-CCCvAeMd.mjs → claudeLocal-OHWQigCl.mjs} +6 -5
- package/dist/{claudeLocalLauncher-BmrpaRYJ.mjs → claudeLocalLauncher-BStvfa7M.mjs} +11 -10
- package/dist/{claudeLocalLauncher-21-xh5gc.cjs → claudeLocalLauncher-BhvPbcyH.cjs} +13 -12
- package/dist/{claudeSessionFork-kYCP1IJB.cjs → claudeSessionFork-Be16vzGc.cjs} +1 -1
- package/dist/{claudeSessionFork-DvxMKAmY.mjs → claudeSessionFork-GAVWhiKG.mjs} +1 -1
- package/dist/{client-C4zKGjiJ.cjs → client-BWjaHKtj.cjs} +2 -2
- package/dist/client-Ca5Pcgy_.mjs +71 -0
- package/dist/{client-CnlkkrZO.mjs → client-CnB7kRCT.mjs} +2 -2
- package/dist/{client-BTX9hsbr.mjs → client-D4uPb1uu.mjs} +3 -3
- package/dist/client-DJplzPjD.cjs +76 -0
- package/dist/{client-Dnza1hgN.cjs → client-D_loZ9IK.cjs} +3 -3
- package/dist/codex/happyMcpStdioBridge.cjs +24 -15
- package/dist/codex/happyMcpStdioBridge.mjs +25 -16
- package/dist/{codexAppServerClient-DvkpQgyv.mjs → codexAppServerClient-CO4G6OS4.mjs} +3 -3
- package/dist/{codexAppServerClient-CRlBWGn3.cjs → codexAppServerClient-PE-12AsW.cjs} +3 -3
- package/dist/{codexCommand-DzxIWXIT.cjs → codexCommand-BNoD1t1C.cjs} +127 -116
- package/dist/{codexCommand-BxjogBzU.mjs → codexCommand-B_xUH79E.mjs} +77 -66
- package/dist/{codexTermination-C28FzlLb.cjs → codexTermination-BmBbizFK.cjs} +7 -2
- package/dist/{codexTermination-ySDNMEhd.mjs → codexTermination-Dx48ma6e.mjs} +7 -2
- package/dist/{config-BFB5uJ4t.cjs → config-CtwEUxUP.cjs} +26 -26
- package/dist/{config-DwfEpFr3.mjs → config-DSu0Blos.mjs} +3 -3
- package/dist/{configuration-4TGMrjul.cjs → configuration-CYO-kPOS.cjs} +1 -1
- package/dist/{configuration-DVrb61aY.mjs → configuration-PxzEJumr.mjs} +1 -1
- package/dist/{connect-C7FPY0PI.mjs → connect-BQrg3TB6.mjs} +15 -15
- package/dist/{connect-QH2VJGBG.cjs → connect-Dq7wndzR.cjs} +28 -28
- package/dist/{context-JoKu0V54.cjs → context-6TP-iz_c.cjs} +1 -1
- package/dist/{context-B3XPVJlj.mjs → context-CJGRRGWW.mjs} +1 -1
- package/dist/{controlClient-BTaZlbC6.cjs → controlClient-Bqv5v5OM.cjs} +3 -3
- package/dist/{controlClient-BYKyGyxj.mjs → controlClient-DoeYovwP.mjs} +4 -4
- package/dist/{createSessionMetadata-8Fuj2-IV.mjs → createSessionMetadata-DDIChCx8.mjs} +2 -2
- package/dist/{createSessionMetadata-B2NynaWZ.cjs → createSessionMetadata-xz767pcG.cjs} +3 -3
- package/dist/{defaultPermissionMode-BEWCqJU-.cjs → defaultPermissionMode-PkZGsQDk.cjs} +2 -2
- package/dist/{defaultPermissionMode-B8kJG9uI.mjs → defaultPermissionMode-i5KzdK09.mjs} +2 -2
- package/dist/{detectCLI-DR9ZaN6B.cjs → detectCLI-BuYR_Qxe.cjs} +4 -4
- package/dist/{deterministicJson-C5ZwZ7hu.mjs → deterministicJson-CTEJDqtS.mjs} +217 -12
- package/dist/{deterministicJson-BjNQsAjO.cjs → deterministicJson-xqA6DaOm.cjs} +222 -16
- package/dist/{doctor-BshRnjLi.cjs → doctor-BrgSlfXn.cjs} +9 -9
- package/dist/{doctor-0BiGwJXk.mjs → doctor-IctjVh9T.mjs} +8 -8
- package/dist/{doctorReadiness-BCZGcN0a.cjs → doctorReadiness-Dl6yRQCy.cjs} +1 -1
- package/dist/{downloadTarget-BN5vZt3K.cjs → downloadTarget-CEb9che-.cjs} +6 -6
- package/dist/{downloadTarget-DJPwAZlu.mjs → downloadTarget-jbOz1egC.mjs} +6 -6
- package/dist/{ensureDaemonRunning-C5QfToCe.cjs → ensureDaemonRunning-D-HyjGIX.cjs} +6 -6
- package/dist/{ensureDaemonRunning-CSmb_mqt.mjs → ensureDaemonRunning-b1e8LCSM.mjs} +5 -5
- package/dist/{handleResumeCommand-BwnUZmbo.cjs → handleResumeCommand-BvWVuRwH.cjs} +23 -7
- package/dist/{handleResumeCommand-CgjpsdDe.mjs → handleResumeCommand-DpaZvm2c.mjs} +22 -6
- package/dist/{index-piJPsTsm.cjs → index-B2p2Mut7.cjs} +259 -53
- package/dist/{index-BehVbAsA.mjs → index-BUNnpGFF.mjs} +256 -50
- package/dist/{index-Bvldtdny.mjs → index-Bsvbgh9e.mjs} +4 -4
- package/dist/{index-BYOZ_8WZ.cjs → index-C64Ufj4D.cjs} +4 -4
- package/dist/{index-Clqlu17M.mjs → index-C6Vn5Eac.mjs} +155 -34
- package/dist/index-CMf5VbzG.mjs +18 -0
- package/dist/index-DmTlDRSL.cjs +24 -0
- package/dist/{index-_l1Sdmbi.cjs → index-Dv0Q48P3.cjs} +156 -33
- package/dist/{index-BRClDe07.cjs → index-F2UejqYs.cjs} +3 -3
- package/dist/{index-BYgfern_.mjs → index-wCbtF4BK.mjs} +3 -3
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-BdvKiOQw.mjs → install-BX3lv3NO.mjs} +1 -1
- package/dist/{install-Cf6AFSWC.cjs → install-BXvf2E3o.cjs} +1 -1
- package/dist/{install-TO4taKW7.cjs → install-C0ANcEAW.cjs} +7 -7
- package/dist/{install-fYWHrPcC.mjs → install-CdzSV7qO.mjs} +3 -3
- package/dist/{installPiTools-BKnXjrVu.cjs → installPiTools-CL_axh_6.cjs} +1 -1
- package/dist/{installTerminalHooks-BQZbvxsZ.cjs → installTerminalHooks-BETLKAtd.cjs} +3 -3
- package/dist/lib.cjs +14 -14
- package/dist/lib.d.cts +239 -2
- package/dist/lib.d.mts +239 -2
- package/dist/lib.mjs +14 -14
- package/dist/{lidState-BeOwj6eW.cjs → lidState-DWGnm2H4.cjs} +1 -1
- package/dist/{lidState-DNMlIhX0.mjs → lidState-bBrmaQd2.mjs} +1 -1
- package/dist/{localHappyAgentAuth-Br-mgogg.cjs → localHappyAgentAuth-DZHQnIW9.cjs} +1 -1
- package/dist/{localHappyAgentAuth-BezKSFDi.mjs → localHappyAgentAuth-Dn1jYDpt.mjs} +1 -1
- package/dist/{logger--vAVtXB_.mjs → logger-BUngm5Xg.mjs} +2 -2
- package/dist/{logger-DXTWlPzP.cjs → logger-CphW5nUE.cjs} +2 -2
- package/dist/machineMetadata-BQm9YTcI.cjs +79 -0
- package/dist/machineMetadata-BXN_bKU3.mjs +68 -0
- package/dist/{main-DoMFJ2Cl.cjs → main-B2UV51nK.cjs} +112 -132
- package/dist/{main-CshDb5-1.mjs → main-DGkdYfEq.mjs} +106 -126
- package/dist/{mcp-pNc1EbQf.cjs → mcp-BFvAEIRz.cjs} +15 -15
- package/dist/{mcp-DKT_lrvQ.mjs → mcp-CbTtbs0f.mjs} +15 -15
- package/dist/{mirrorProtocol-6IFGPpjJ.mjs → mirrorProtocol-BR4luBC0.mjs} +148 -7
- package/dist/{mirrorProtocol-qKflWTX_.cjs → mirrorProtocol-HKPivs5o.cjs} +150 -4
- package/dist/{package-B7B03ejW.mjs → package-7Ld1YMhh.mjs} +8 -7
- package/dist/{package-DY4zTbKS.cjs → package-KhLqBDX9.cjs} +8 -7
- package/dist/panels-C7IVqpJk.mjs +137 -0
- package/dist/panels-Njf6GelF.cjs +142 -0
- package/dist/{peerTools-3R9RUARX.mjs → peerTools-BOlDRyhi.mjs} +60 -10
- package/dist/{peerTools-iy3_6Yc5.cjs → peerTools-DQNlrcqM.cjs} +60 -9
- package/dist/{persistence-BfX72dne.cjs → persistence-9BMYspxG.cjs} +2 -2
- package/dist/{persistence-DTk4sNpd.mjs → persistence-BFUOHW5h.mjs} +3 -3
- package/dist/{piRunnerArgs-CRQVR9o-.cjs → piRunnerArgs-DGaq6VYM.cjs} +8 -2
- package/dist/{piRunnerArgs-AT8QJY7x.mjs → piRunnerArgs-H2pgpA5z.mjs} +7 -1
- package/dist/{piRuntime-BHRT5MKO.cjs → piRuntime-CT5xv_3h.cjs} +2 -2
- package/dist/{piRuntime-E44qTVQ4.mjs → piRuntime-CdN0JAsa.mjs} +2 -2
- package/dist/{piTerminal-hI4WFdWm.cjs → piTerminal-0FBtXTHK.cjs} +18 -18
- package/dist/{piTerminal-De8nbciM.mjs → piTerminal-C4m9YXAV.mjs} +18 -18
- package/dist/processTreeSnapshot-CuLJDNC-.mjs +101 -0
- package/dist/processTreeSnapshot-mDbnuojn.cjs +105 -0
- package/dist/projectPath-C3ioB4Bu.cjs +13 -0
- package/dist/prompt-BOouDaTM.mjs +99 -0
- package/dist/prompt-lgF9IE82.cjs +105 -0
- package/dist/{attachmentLimits-UyFn8fkQ.mjs → pushNotifications-DCiBEVeC.mjs} +307 -3
- package/dist/{attachmentLimits-SqeAHrVC.cjs → pushNotifications-DI92havG.cjs} +308 -2
- package/dist/{index-DFPT4HOO.cjs → query-BETKBrnz.cjs} +25 -5
- package/dist/{index-CEjJnq05.mjs → query-ywZbQUzR.mjs} +26 -3
- package/dist/{rateLimitWindows-XrJiiBpU.mjs → rateLimitWindows-BkfuUB1a.mjs} +1 -1
- package/dist/{rateLimitWindows-Czb7_7cK.cjs → rateLimitWindows-YRIYVdo4.cjs} +1 -1
- package/dist/{registerCommonHandlers-C0_fyBQ0.cjs → registerCommonHandlers-C7a_dUWs.cjs} +30 -30
- package/dist/{registerCommonHandlers-CvIedVRf.mjs → registerCommonHandlers-CTkCvjxt.mjs} +2 -2
- package/dist/{registerKillSessionHandler-DYl7l4Ts.cjs → registerKillSessionHandler-CIsvBrVe.cjs} +6 -6
- package/dist/{registerKillSessionHandler-gwJ5lTf0.mjs → registerKillSessionHandler-CaqqRYq6.mjs} +6 -6
- package/dist/{remoteSessionClient-BRTIOX5b.cjs → remoteSessionClient-D843fkzL.cjs} +5 -5
- package/dist/{remoteSessionClient-DRb2Jr5s.mjs → remoteSessionClient-PP-mOKmw.mjs} +5 -5
- package/dist/{reportProgressTool-B9nCzbkL.cjs → reportProgressTool-14AXr959.cjs} +84 -2
- package/dist/{reportProgressTool-D5tEoXMW.mjs → reportProgressTool-ZOCNjWHr.mjs} +82 -3
- package/dist/{resources-JDPugcDq.cjs → resources-CvIlkzpP.cjs} +30 -0
- package/dist/{resources-BdFBQi8r.mjs → resources-y9jfyO-_.mjs} +30 -0
- package/dist/{run-CKe_WeLW.cjs → run-CAOCYYfT.cjs} +2806 -110
- package/dist/{run-BQ_FGaOL.mjs → run-Dajw2E5j.mjs} +2787 -91
- package/dist/{runClaude-zrrNcQC_.mjs → runClaude-C6oxWYbp.mjs} +49 -47
- package/dist/{runClaude-MHI5IKM-.cjs → runClaude-CRRKt-tm.cjs} +50 -48
- package/dist/{runClaudeDeps-RRw-Nusc.cjs → runClaudeDeps-B1ysqTvx.cjs} +310 -237
- package/dist/{runClaudeDeps-CVBCokOS.mjs → runClaudeDeps-BcZ68cX3.mjs} +297 -226
- package/dist/{runGemini-kipag2ag.mjs → runGemini-D7yKc4wD.mjs} +61 -55
- package/dist/{runGemini-D7Lg9yCr.cjs → runGemini-DtKFXqf-.cjs} +89 -83
- package/dist/{runOpenClaw-C_lRY3Do.mjs → runOpenClaw-C8ilyLP9.mjs} +19 -19
- package/dist/{runOpenClaw-DCcQ0L2N.cjs → runOpenClaw-Cq29mryb.cjs} +20 -20
- package/dist/{sandbox-BSyXFVFp.mjs → sandbox-CbCutma4.mjs} +4 -4
- package/dist/{sandbox-dMwPTmjm.cjs → sandbox-gIj-EuF4.cjs} +4 -4
- package/dist/{selfCheck-DkzDDUsE.cjs → selfCheck-BTGBVthv.cjs} +39 -38
- package/dist/selfCheck-Smt-5Xiq.mjs +85 -0
- package/dist/{send-dxC0miIA.cjs → send-CZf5lLw_.cjs} +8 -8
- package/dist/{send-C-k9nsd3.mjs → send-YZRMQvMJ.mjs} +9 -9
- package/dist/{server-DxoTYNlw.mjs → server-BqwXRzFZ.mjs} +4 -4
- package/dist/{server-B-W6P7Qr.cjs → server-CknFq6xG.cjs} +6 -6
- package/dist/sessionExitLifecycle-CzkLIgNZ.mjs +142 -0
- package/dist/sessionExitLifecycle-DFltxXU8.cjs +148 -0
- package/dist/{sessionLock-DWX6BbiU.cjs → sessionLock-DRZUcKHT.cjs} +38 -5
- package/dist/{sessionLock-DBdtZGOL.mjs → sessionLock-nBXdJxJm.mjs} +36 -5
- package/dist/{sessionOps-BAnr7n8t.cjs → sessionOps-BrGiU9-s.cjs} +10 -5
- package/dist/{sessionOps-BVoXe12O.mjs → sessionOps-C58iDeD5.mjs} +11 -6
- package/dist/{sessionScanner-BtxoeluY.mjs → sessionScanner-Bm57LEXe.mjs} +3 -3
- package/dist/{sessionScanner-CDOYsEUD.cjs → sessionScanner-CaO8bLaG.cjs} +3 -3
- package/dist/{sessions-C3sZJkzI.mjs → sessions-BXyBHo8n.mjs} +40 -18
- package/dist/{sessions-hAitoN-m.cjs → sessions-uzqPCc37.cjs} +39 -16
- package/dist/{setupOfflineReconnection-_eD4cuUT.mjs → setupOfflineReconnection-1Qlek3wl.mjs} +2 -2
- package/dist/{setupOfflineReconnection-C2EeYTFH.cjs → setupOfflineReconnection-DvvVX3TB.cjs} +2 -2
- package/dist/{spawn-Bc9v7pIf.cjs → spawn-DBkodJEO.cjs} +49 -18
- package/dist/{spawn-qNrB2CD_.mjs → spawn-vn93PhYL.mjs} +49 -18
- package/dist/spawnAgents-CgPMWexP.mjs +79 -0
- package/dist/{spawnAgents-BVEaz35W.cjs → spawnAgents-DLNMlhWJ.cjs} +37 -1
- package/dist/{spawnHappyCLI-C2stUioM.mjs → spawnHappyCLI-BjFZc_7V.mjs} +1 -1
- package/dist/{spawnHappyCLI-fzUagkKV.cjs → spawnHappyCLI-DnUZv0X2.cjs} +2 -2
- package/dist/{specialCommands-BJ-nqY4s.cjs → specialCommands-BRufxlqe.cjs} +3 -3
- package/dist/{specialCommands-C6W-rVyh.mjs → specialCommands-D3ND9bdg.mjs} +3 -3
- package/dist/{startFileWatcher-Bqlqjt93.cjs → startFileWatcher-D9cYzZOq.cjs} +1 -1
- package/dist/{startFileWatcher-CR09Snmz.mjs → startFileWatcher-DXJ7yB5v.mjs} +1 -1
- package/dist/startupSessionCreate-kdr3m1uX.cjs +26 -0
- package/dist/startupSessionCreate-uZ6BM0ty.mjs +24 -0
- package/dist/{streamRelay-CJoMk_d2.mjs → streamRelay-DnMCMMfV.mjs} +1 -1
- package/dist/{streamRelay-9kBPpbvU.cjs → streamRelay-Dy6amlzx.cjs} +1 -1
- package/dist/{sync-Dhmtk66S.cjs → sync-Bn-idAoy.cjs} +1 -1
- package/dist/{sync-DbW07iQS.mjs → sync-BvVhDO40.mjs} +1 -1
- package/dist/{systemPrompt-CQcuUmVp.mjs → systemPrompt-CIZcJuJF.mjs} +4 -3
- package/dist/{systemPrompt-3PYi3EUY.cjs → systemPrompt-DlyEk35T.cjs} +4 -3
- package/dist/{teams-DpxLcUU_.cjs → teams-BLeRpDxv.cjs} +8 -8
- package/dist/{teams-CwF4Z2fA.mjs → teams-DLY3B5yi.mjs} +8 -8
- package/dist/{time-A6zR3Iy6.cjs → time-Cjv0zxQO.cjs} +1 -1
- package/dist/{time-BuGWTVP6.mjs → time-D3ETL7Jb.mjs} +1 -1
- package/dist/{titleGenerator-D26gvNaS.cjs → titleGenerator-Cgp5ihFb.cjs} +10 -9
- package/dist/{titleGenerator-BGEzNWC9.mjs → titleGenerator-Uzbd4utr.mjs} +9 -8
- package/dist/{todo-DrZc76H5.mjs → todo-C9Ga-oEM.mjs} +6 -6
- package/dist/{todo-73g3NCIO.cjs → todo-pOMcEECE.cjs} +6 -6
- package/dist/{tools-CxJp4T1T.cjs → tools-BL7Byl_x.cjs} +1 -1
- package/dist/{tools-BtsrQnNS.mjs → tools-Cho7iIWf.mjs} +1 -1
- package/dist/{uninstall-DWNYvewQ.cjs → uninstall-CbayEVoV.cjs} +6 -6
- package/dist/{uninstall-DOb2mTwV.mjs → uninstall-CvZHVY9C.mjs} +3 -3
- package/dist/webPanels-B2_C2-3g.mjs +49 -0
- package/dist/webPanels-FCgFKvVe.cjs +53 -0
- package/package.json +8 -7
- package/dist/machineMetadata-B1H9gNbN.mjs +0 -39
- package/dist/machineMetadata-DcUupMje.cjs +0 -42
- package/dist/messageBuffer-BWlGgR3A.mjs +0 -71
- package/dist/messageBuffer-fJMH6uY8.cjs +0 -73
- package/dist/projectPath-ChLhdOyt.cjs +0 -13
- package/dist/selfCheck-CF7XGJPb.mjs +0 -84
- package/dist/sessionModeFile-ByLbXTbg.mjs +0 -32
- package/dist/sessionModeFile-CLLdidiJ.cjs +0 -36
- package/dist/spawnAgents-Bw6j4tqz.mjs +0 -45
|
@@ -1,100 +1,105 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var auth = require('./auth-
|
|
4
|
-
var index = require('./index-
|
|
3
|
+
var auth = require('./auth-CBXnm-Mj.cjs');
|
|
4
|
+
var index = require('./index-Dv0Q48P3.cjs');
|
|
5
|
+
var deterministicJson = require('./deterministicJson-xqA6DaOm.cjs');
|
|
6
|
+
var client = require('./client-DJplzPjD.cjs');
|
|
5
7
|
var promises = require('node:fs/promises');
|
|
6
8
|
var forkBackfill = require('./forkBackfill-8eLDeS73.cjs');
|
|
7
9
|
var node_crypto = require('node:crypto');
|
|
8
10
|
var cuid2 = require('@paralleldrive/cuid2');
|
|
9
11
|
var agentAttachments = require('./agentAttachments-Dbw8iMCZ.cjs');
|
|
10
|
-
var attachmentContent = require('./attachmentContent-
|
|
12
|
+
var attachmentContent = require('./attachmentContent-CEm13_gF.cjs');
|
|
11
13
|
var ink = require('ink');
|
|
12
|
-
var sessionLock = require('./sessionLock-
|
|
14
|
+
var sessionLock = require('./sessionLock-DRZUcKHT.cjs');
|
|
13
15
|
var React = require('react');
|
|
14
|
-
var api = require('./api-
|
|
15
|
-
var codexAppServerClient = require('./codexAppServerClient-
|
|
16
|
-
var specialCommands = require('./specialCommands-
|
|
17
|
-
var logger = require('./logger-
|
|
18
|
-
var BasePermissionHandler = require('./BasePermissionHandler-
|
|
19
|
-
var codexTermination = require('./codexTermination-
|
|
16
|
+
var api = require('./api-DM7b1OKj.cjs');
|
|
17
|
+
var codexAppServerClient = require('./codexAppServerClient-PE-12AsW.cjs');
|
|
18
|
+
var specialCommands = require('./specialCommands-BRufxlqe.cjs');
|
|
19
|
+
var logger = require('./logger-CphW5nUE.cjs');
|
|
20
|
+
var BasePermissionHandler = require('./BasePermissionHandler-BlM_tfej.cjs');
|
|
21
|
+
var codexTermination = require('./codexTermination-BmBbizFK.cjs');
|
|
20
22
|
var node_child_process = require('node:child_process');
|
|
21
|
-
var persistence = require('./persistence-
|
|
22
|
-
var machineMetadata = require('./machineMetadata-
|
|
23
|
-
var configuration = require('./configuration-
|
|
24
|
-
var registerKillSessionHandler = require('./registerKillSessionHandler-
|
|
25
|
-
var projectPath = require('./projectPath-
|
|
23
|
+
var persistence = require('./persistence-9BMYspxG.cjs');
|
|
24
|
+
var machineMetadata = require('./machineMetadata-BQm9YTcI.cjs');
|
|
25
|
+
var configuration = require('./configuration-CYO-kPOS.cjs');
|
|
26
|
+
var registerKillSessionHandler = require('./registerKillSessionHandler-CIsvBrVe.cjs');
|
|
27
|
+
var projectPath = require('./projectPath-C3ioB4Bu.cjs');
|
|
26
28
|
var path = require('node:path');
|
|
27
|
-
var createSessionMetadata = require('./createSessionMetadata-
|
|
28
|
-
var
|
|
29
|
-
var
|
|
30
|
-
var
|
|
31
|
-
var defaultPermissionMode = require('./defaultPermissionMode-BEWCqJU-.cjs');
|
|
29
|
+
var createSessionMetadata = require('./createSessionMetadata-xz767pcG.cjs');
|
|
30
|
+
var sessionExitLifecycle = require('./sessionExitLifecycle-DFltxXU8.cjs');
|
|
31
|
+
var controlClient = require('./controlClient-Bqv5v5OM.cjs');
|
|
32
|
+
var defaultPermissionMode = require('./defaultPermissionMode-PkZGsQDk.cjs');
|
|
32
33
|
var authRelay = require('./authRelay-Dy1qU9td.cjs');
|
|
33
|
-
var setupOfflineReconnection = require('./setupOfflineReconnection-
|
|
34
|
+
var setupOfflineReconnection = require('./setupOfflineReconnection-DvvVX3TB.cjs');
|
|
35
|
+
var startupSessionCreate = require('./startupSessionCreate-kdr3m1uX.cjs');
|
|
34
36
|
var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
|
|
35
37
|
var constants = require('./constants-VJ0N6WuG.cjs');
|
|
36
38
|
var editPaths = require('./editPaths-Bqp4OFPw.cjs');
|
|
37
|
-
var ensureDaemonRunning = require('./ensureDaemonRunning-
|
|
39
|
+
var ensureDaemonRunning = require('./ensureDaemonRunning-D-HyjGIX.cjs');
|
|
38
40
|
require('tweetnacl');
|
|
39
41
|
require('axios');
|
|
40
|
-
require('./time-
|
|
41
|
-
require('./browser-
|
|
42
|
+
require('./time-Cjv0zxQO.cjs');
|
|
43
|
+
require('./browser-DZ6qRtfH.cjs');
|
|
42
44
|
require('open');
|
|
43
45
|
require('zod');
|
|
44
|
-
require('./
|
|
46
|
+
require('./prompt-lgF9IE82.cjs');
|
|
47
|
+
require('./reportProgressTool-14AXr959.cjs');
|
|
48
|
+
require('./client-BWjaHKtj.cjs');
|
|
49
|
+
require('./precheckCompat-CWOi5c9L.cjs');
|
|
50
|
+
require('./agentGuidance-BtBx2xxE.cjs');
|
|
45
51
|
require('node:fs');
|
|
46
|
-
require('./
|
|
52
|
+
require('./client-D_loZ9IK.cjs');
|
|
53
|
+
require('./context-6TP-iz_c.cjs');
|
|
54
|
+
require('./sessionOps-BrGiU9-s.cjs');
|
|
55
|
+
require('socket.io-client');
|
|
56
|
+
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
57
|
+
require('./resources-CvIlkzpP.cjs');
|
|
58
|
+
require('./tools-BL7Byl_x.cjs');
|
|
59
|
+
require('./peerTools-DQNlrcqM.cjs');
|
|
60
|
+
require('node:os');
|
|
61
|
+
require('./ids-B6ZC0HGt.cjs');
|
|
62
|
+
require('./remoteSessionClient-D843fkzL.cjs');
|
|
63
|
+
require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
64
|
+
require('node:http');
|
|
65
|
+
require('@modelcontextprotocol/sdk/server/streamableHttp.js');
|
|
66
|
+
require('./limits-C-a7gr04.cjs');
|
|
67
|
+
require('./downloadTarget-CEb9che-.cjs');
|
|
68
|
+
require('./terminals-B_bfC9c2.cjs');
|
|
69
|
+
require('./terminalTitleSuggest-DhvRFX3H.cjs');
|
|
70
|
+
require('./tmuxSocket-D-Xt6Vn-.cjs');
|
|
71
|
+
require('./bootstrap-DoA7okld.cjs');
|
|
72
|
+
require('./package-KhLqBDX9.cjs');
|
|
73
|
+
require('./webPanels-FCgFKvVe.cjs');
|
|
74
|
+
require('./pushNotifications-DI92havG.cjs');
|
|
75
|
+
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
76
|
+
require('./previewPath-B0rBdhy1.cjs');
|
|
77
|
+
require('crypto');
|
|
78
|
+
require('./processTreeSnapshot-mDbnuojn.cjs');
|
|
79
|
+
require('./lidState-DWGnm2H4.cjs');
|
|
47
80
|
require('os');
|
|
48
81
|
require('child_process');
|
|
49
82
|
require('node:events');
|
|
50
|
-
require('
|
|
51
|
-
require('./limits-C-a7gr04.cjs');
|
|
52
|
-
require('./registerCommonHandlers-C0_fyBQ0.cjs');
|
|
83
|
+
require('./registerCommonHandlers-C7a_dUWs.cjs');
|
|
53
84
|
require('util');
|
|
54
85
|
require('fs/promises');
|
|
55
|
-
require('crypto');
|
|
56
86
|
require('path');
|
|
57
87
|
require('cross-spawn');
|
|
58
|
-
require('./sync-
|
|
59
|
-
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
60
|
-
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
88
|
+
require('./sync-Bn-idAoy.cjs');
|
|
61
89
|
require('chalk');
|
|
62
90
|
require('node:readline');
|
|
63
91
|
require('./manager-HrEj442o.cjs');
|
|
64
92
|
require('@anthropic-ai/sandbox-runtime');
|
|
65
|
-
require('
|
|
66
|
-
require('./package-DY4zTbKS.cjs');
|
|
67
|
-
require('./rateLimitWindows-Czb7_7cK.cjs');
|
|
93
|
+
require('./rateLimitWindows-YRIYVdo4.cjs');
|
|
68
94
|
require('./processTree-CMHWlVse.cjs');
|
|
69
95
|
require('node:util');
|
|
70
|
-
require('./detectCLI-
|
|
96
|
+
require('./detectCLI-BuYR_Qxe.cjs');
|
|
71
97
|
require('fs');
|
|
72
|
-
require('./localHappyAgentAuth-
|
|
98
|
+
require('./localHappyAgentAuth-DZHQnIW9.cjs');
|
|
73
99
|
require('./types-CRS-srZK.cjs');
|
|
74
100
|
require('url');
|
|
75
|
-
require('./
|
|
76
|
-
require('./
|
|
77
|
-
require('./sessionOps-BAnr7n8t.cjs');
|
|
78
|
-
require('./resources-JDPugcDq.cjs');
|
|
79
|
-
require('./tools-CxJp4T1T.cjs');
|
|
80
|
-
require('./reportProgressTool-B9nCzbkL.cjs');
|
|
81
|
-
require('./client-C4zKGjiJ.cjs');
|
|
82
|
-
require('./precheckCompat-CWOi5c9L.cjs');
|
|
83
|
-
require('./agentGuidance-BtBx2xxE.cjs');
|
|
84
|
-
require('./peerTools-iy3_6Yc5.cjs');
|
|
85
|
-
require('./ids-B6ZC0HGt.cjs');
|
|
86
|
-
require('./remoteSessionClient-BRTIOX5b.cjs');
|
|
87
|
-
require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
88
|
-
require('node:http');
|
|
89
|
-
require('@modelcontextprotocol/sdk/server/streamableHttp.js');
|
|
90
|
-
require('./downloadTarget-BN5vZt3K.cjs');
|
|
91
|
-
require('./terminals-B_bfC9c2.cjs');
|
|
92
|
-
require('./terminalTitleSuggest-DhvRFX3H.cjs');
|
|
93
|
-
require('./tmuxSocket-D-Xt6Vn-.cjs');
|
|
94
|
-
require('./bootstrap-DCQ87Aan.cjs');
|
|
95
|
-
require('./previewPath-B0rBdhy1.cjs');
|
|
96
|
-
require('./spawnHappyCLI-fzUagkKV.cjs');
|
|
97
|
-
require('./doctorReadiness-BCZGcN0a.cjs');
|
|
101
|
+
require('./spawnHappyCLI-DnUZv0X2.cjs');
|
|
102
|
+
require('./doctorReadiness-Dl6yRQCy.cjs');
|
|
98
103
|
|
|
99
104
|
function getStartedSubagents(state) {
|
|
100
105
|
return state.startedSubagents ?? /* @__PURE__ */ new Set();
|
|
@@ -1396,7 +1401,7 @@ async function runCodex(opts) {
|
|
|
1396
1401
|
dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
|
|
1397
1402
|
...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
|
|
1398
1403
|
...forkedFromMessageId ? { forkedFromMessageId } : {},
|
|
1399
|
-
capabilities: [index.PROMPT_QUEUE_CAPABILITY, forkBackfill.FORK_BACKFILL_CAPABILITY, persistence.HIBERNATION_CAPABILITY, index.CODEX_STEER_CAPABILITY]
|
|
1404
|
+
capabilities: [index.PROMPT_QUEUE_CAPABILITY, forkBackfill.FORK_BACKFILL_CAPABILITY, persistence.HIBERNATION_CAPABILITY, index.CODEX_STEER_CAPABILITY, index.PROJECT_SESSION_CAPABILITY]
|
|
1400
1405
|
});
|
|
1401
1406
|
metadata.attachmentKinds = [...attachmentContent.CLAUDE_ATTACHMENT_KINDS];
|
|
1402
1407
|
const importCodexThreadId = process.env[IMPORT_CODEX_THREAD_ENV];
|
|
@@ -1425,7 +1430,7 @@ async function runCodex(opts) {
|
|
|
1425
1430
|
agentStateVersion: parseInt(reconnectAgentStateVersion || "0", 10)
|
|
1426
1431
|
};
|
|
1427
1432
|
} else {
|
|
1428
|
-
response = await api$1.getOrCreateSession({ tag: sessionTag, metadata, state });
|
|
1433
|
+
response = await startupSessionCreate.createSessionForStartup(() => api$1.getOrCreateSession({ tag: sessionTag, metadata, state }), { startedBy: opts.startedBy, log: (m) => logger.logger.debug(m) });
|
|
1429
1434
|
}
|
|
1430
1435
|
if (response) {
|
|
1431
1436
|
await sessionLock.claimSessionOrExit(response.id, { takeover: !!reconnectSessionId, flavor: "codex" });
|
|
@@ -1435,15 +1440,18 @@ async function runCodex(opts) {
|
|
|
1435
1440
|
}
|
|
1436
1441
|
let reconnectSeeded = false;
|
|
1437
1442
|
let wakingFromHibernation = false;
|
|
1443
|
+
let reconnectReplay = null;
|
|
1438
1444
|
if (reconnectSessionId && response) {
|
|
1439
1445
|
const snapshot = await api$1.getSession(response.id, response.encryptionKey, response.encryptionVariant);
|
|
1440
1446
|
if (snapshot.ok) {
|
|
1441
1447
|
response = sessionLock.applyServerSnapshot(response, snapshot.session);
|
|
1442
1448
|
reconnectSeeded = true;
|
|
1443
1449
|
logger.logger.debug(`[START] Reconnect seeded from server: seq=${snapshot.session.seq} metadataVersion=${snapshot.session.metadataVersion}`);
|
|
1444
|
-
const wake = sessionLock.
|
|
1450
|
+
const wake = sessionLock.applyReconnectReplay(response);
|
|
1445
1451
|
response = wake.response;
|
|
1446
|
-
|
|
1452
|
+
reconnectReplay = wake.replay;
|
|
1453
|
+
wakingFromHibernation = wake.replay?.source === "hibernation";
|
|
1454
|
+
if (wake.replay) logger.logger.debug(`[START] Resuming (${wake.replay.source}): replaying records after seq=${response.seq}`);
|
|
1447
1455
|
} else {
|
|
1448
1456
|
response = sessionLock.withoutServerSnapshot(response);
|
|
1449
1457
|
logger.logger.debug(`[START] Reconnect without server snapshot (${snapshot.reason}); skipping existing messages`);
|
|
@@ -1451,7 +1459,7 @@ async function runCodex(opts) {
|
|
|
1451
1459
|
}
|
|
1452
1460
|
let session;
|
|
1453
1461
|
let permissionHandler;
|
|
1454
|
-
let client;
|
|
1462
|
+
let client$1;
|
|
1455
1463
|
let reasoningProcessor;
|
|
1456
1464
|
let abortInProgress = null;
|
|
1457
1465
|
let turnActive = false;
|
|
@@ -1474,7 +1482,7 @@ async function runCodex(opts) {
|
|
|
1474
1482
|
if (reconnectSessionId) {
|
|
1475
1483
|
session.suppressNextArchiveSignal();
|
|
1476
1484
|
if (!reconnectSeeded) session.skipExistingMessages();
|
|
1477
|
-
if (!wakingFromHibernation) void session.cancelUndeliveredQueuedInputs();
|
|
1485
|
+
if (!wakingFromHibernation) void session.cancelUndeliveredQueuedInputs(reconnectReplay ? { maxSeq: reconnectReplay.seq } : void 0);
|
|
1478
1486
|
session.updateMetadata((meta) => sessionLock.mergeReconnectMetadata(meta, metadata, Date.now()));
|
|
1479
1487
|
}
|
|
1480
1488
|
if (response) {
|
|
@@ -1530,7 +1538,7 @@ async function runCodex(opts) {
|
|
|
1530
1538
|
const CODEX_IMAGE_MIME_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp"];
|
|
1531
1539
|
const steerDeps = {
|
|
1532
1540
|
ownsTurn: () => turnActive && !abortInProgress && !shouldExit,
|
|
1533
|
-
steer: (input) => client.steerTurn(input),
|
|
1541
|
+
steer: (input) => client$1.steerTurn(input),
|
|
1534
1542
|
stage: (attachments) => attachmentContent.stageClaudeAttachments(attachments, {
|
|
1535
1543
|
happyHomeDir: configuration.configuration.happyHomeDir,
|
|
1536
1544
|
sessionId: session.sessionId
|
|
@@ -1538,7 +1546,7 @@ async function runCodex(opts) {
|
|
|
1538
1546
|
withAttachments: attachmentContent.appendStagedAttachmentsToPrompt,
|
|
1539
1547
|
unlink: (path) => promises.unlink(path),
|
|
1540
1548
|
isImage: (file) => CODEX_IMAGE_MIME_TYPES.includes(file.mimeType),
|
|
1541
|
-
onSteered: (text) => messageBuffer
|
|
1549
|
+
onSteered: (text) => messageBuffer.addMessage(text, "user"),
|
|
1542
1550
|
log: (message) => logger.logger.debug(message)
|
|
1543
1551
|
};
|
|
1544
1552
|
let userMessageDelivery = Promise.resolve();
|
|
@@ -1673,8 +1681,8 @@ async function runCodex(opts) {
|
|
|
1673
1681
|
if (permissionHandler) {
|
|
1674
1682
|
permissionHandler.abortAll();
|
|
1675
1683
|
}
|
|
1676
|
-
if (client) {
|
|
1677
|
-
const abortResult = await client.abortTurnWithFallback({
|
|
1684
|
+
if (client$1) {
|
|
1685
|
+
const abortResult = await client$1.abortTurnWithFallback({
|
|
1678
1686
|
gracePeriodMs: 3e3,
|
|
1679
1687
|
forceRestartOnTimeout: true
|
|
1680
1688
|
});
|
|
@@ -1710,12 +1718,14 @@ async function runCodex(opts) {
|
|
|
1710
1718
|
return;
|
|
1711
1719
|
}
|
|
1712
1720
|
logger.logger.debug("[Codex] Kill session requested - terminating process");
|
|
1721
|
+
const exitCursor = intent === "offline" && session ? sessionLock.exitCursorStamp(session.messageCursor, Date.now()) : void 0;
|
|
1722
|
+
if (exitCursor) session.freezeInbound();
|
|
1713
1723
|
await handleAbort("kill");
|
|
1714
1724
|
logger.logger.debug("[Codex] Abort completed, proceeding with termination");
|
|
1715
1725
|
try {
|
|
1716
|
-
if (session) await codexTermination.settleCodexSession(session, intent, (id) => api$1.deactivateSession(id), (m, e) => logger.logger.debug(m, safeCodexErrorMetadata(e)));
|
|
1726
|
+
if (session) await codexTermination.settleCodexSession(session, intent, (id) => api$1.deactivateSession(id), (m, e) => logger.logger.debug(m, safeCodexErrorMetadata(e)), exitCursor);
|
|
1717
1727
|
try {
|
|
1718
|
-
await client.disconnect();
|
|
1728
|
+
await client$1.disconnect();
|
|
1719
1729
|
} catch (e) {
|
|
1720
1730
|
logger.logger.debug("[Codex] Error disconnecting Codex during termination", safeCodexErrorMetadata(e));
|
|
1721
1731
|
}
|
|
@@ -1729,20 +1739,20 @@ async function runCodex(opts) {
|
|
|
1729
1739
|
};
|
|
1730
1740
|
session.rpcHandlerManager.registerHandler("codex-child-read", async (args) => {
|
|
1731
1741
|
try {
|
|
1732
|
-
return await readChildThread(client, args?.threadId);
|
|
1742
|
+
return await readChildThread(client$1, args?.threadId);
|
|
1733
1743
|
} catch (error) {
|
|
1734
1744
|
return { error: error instanceof Error ? error.message : "Child read failed" };
|
|
1735
1745
|
}
|
|
1736
1746
|
});
|
|
1737
1747
|
session.rpcHandlerManager.registerHandler("abort", () => handleAbort("user"));
|
|
1738
1748
|
const disposeTermination = registerKillSessionHandler.registerKillSessionHandler(session.rpcHandlerManager, () => handleKillSession("archive"), session, { processSignals: true, onSignal: () => handleKillSession("offline") });
|
|
1739
|
-
const messageBuffer
|
|
1749
|
+
const messageBuffer = new sessionExitLifecycle.MessageBuffer();
|
|
1740
1750
|
const hasTTY = process.stdout.isTTY && process.stdin.isTTY;
|
|
1741
1751
|
let inkInstance = null;
|
|
1742
1752
|
if (hasTTY) {
|
|
1743
1753
|
console.clear();
|
|
1744
1754
|
inkInstance = ink.render(React.createElement(CodexDisplay, {
|
|
1745
|
-
messageBuffer
|
|
1755
|
+
messageBuffer,
|
|
1746
1756
|
logPath: process.env.DEBUG ? logger.logger.getLogPath() : void 0,
|
|
1747
1757
|
onExit: async () => {
|
|
1748
1758
|
logger.logger.debug("[codex]: Exiting agent via Ctrl-C");
|
|
@@ -1761,7 +1771,7 @@ async function runCodex(opts) {
|
|
|
1761
1771
|
}
|
|
1762
1772
|
process.stdin.setEncoding("utf8");
|
|
1763
1773
|
}
|
|
1764
|
-
client = new codexAppServerClient.CodexAppServerClient(sandboxConfig);
|
|
1774
|
+
client$1 = new codexAppServerClient.CodexAppServerClient(sandboxConfig);
|
|
1765
1775
|
const idleRelease = new CodexIdleReleaseTimer({
|
|
1766
1776
|
delayMs: resolveCodexIdleReleaseMs(process.env[CODEX_IDLE_RELEASE_ENV]),
|
|
1767
1777
|
isIdle: () => shouldReleaseIdleCodex({
|
|
@@ -1771,7 +1781,7 @@ async function runCodex(opts) {
|
|
|
1771
1781
|
abortInProgress: abortInProgress !== null
|
|
1772
1782
|
}),
|
|
1773
1783
|
release: async () => {
|
|
1774
|
-
const released = await client.releaseIdleProcess();
|
|
1784
|
+
const released = await client$1.releaseIdleProcess();
|
|
1775
1785
|
if (released) {
|
|
1776
1786
|
logger.logger.debug("[Codex] Released idle app-server; thread kept for resume on next message");
|
|
1777
1787
|
}
|
|
@@ -1792,7 +1802,7 @@ async function runCodex(opts) {
|
|
|
1792
1802
|
session.sendSessionProtocolMessage(envelope);
|
|
1793
1803
|
}
|
|
1794
1804
|
});
|
|
1795
|
-
client.setApprovalHandler(async (params) => {
|
|
1805
|
+
client$1.setApprovalHandler(async (params) => {
|
|
1796
1806
|
const toolName = params.type === "exec" ? "CodexBash" : params.type === "patch" ? "CodexPatch" : params.toolName ?? "McpTool";
|
|
1797
1807
|
const input = params.type === "exec" ? { command: params.command, cwd: params.cwd } : params.type === "patch" ? { changes: params.fileChanges } : params.input ?? {};
|
|
1798
1808
|
try {
|
|
@@ -1805,52 +1815,52 @@ async function runCodex(opts) {
|
|
|
1805
1815
|
}
|
|
1806
1816
|
});
|
|
1807
1817
|
const editThrottle = new editPaths.EditReportThrottle();
|
|
1808
|
-
client.setRateLimitHandler((snapshot) => specialCommands.wrapperRateLimitReporter().observeCodex(snapshot));
|
|
1809
|
-
client.setEventHandler((msg) => {
|
|
1818
|
+
client$1.setRateLimitHandler((snapshot) => specialCommands.wrapperRateLimitReporter().observeCodex(snapshot));
|
|
1819
|
+
client$1.setEventHandler((msg) => {
|
|
1810
1820
|
if (msg.type === "token_count") {
|
|
1811
1821
|
session.sendAgentUsageSnapshot("codex", msg);
|
|
1812
1822
|
}
|
|
1813
1823
|
logger.logger.debug("[Codex] Event metadata", codexEventLogMetadata(msg));
|
|
1814
1824
|
if (msg.type === "agent_message") {
|
|
1815
|
-
messageBuffer
|
|
1825
|
+
messageBuffer.addMessage(msg.message, "assistant");
|
|
1816
1826
|
} else if (msg.type === "agent_reasoning_delta") ; else if (msg.type === "agent_reasoning") {
|
|
1817
|
-
messageBuffer
|
|
1827
|
+
messageBuffer.addMessage(`[Thinking] ${msg.text.substring(0, 100)}...`, "system");
|
|
1818
1828
|
} else if (msg.type === "exec_command_begin") {
|
|
1819
|
-
messageBuffer
|
|
1829
|
+
messageBuffer.addMessage(`Executing: ${msg.command}`, "tool");
|
|
1820
1830
|
} else if (msg.type === "exec_command_end") {
|
|
1821
1831
|
const output = msg.output || msg.error || "Command completed";
|
|
1822
1832
|
const truncatedOutput = output.substring(0, 200);
|
|
1823
|
-
messageBuffer
|
|
1833
|
+
messageBuffer.addMessage(
|
|
1824
1834
|
`Result: ${truncatedOutput}${output.length > 200 ? "..." : ""}`,
|
|
1825
1835
|
"result"
|
|
1826
1836
|
);
|
|
1827
1837
|
} else if (msg.type === "task_started") {
|
|
1828
|
-
messageBuffer
|
|
1838
|
+
messageBuffer.addMessage("Starting task...", "status");
|
|
1829
1839
|
} else if (msg.type === "task_complete") {
|
|
1830
1840
|
const failure = describeCodexFailure(msg);
|
|
1831
1841
|
if (failure) {
|
|
1832
|
-
messageBuffer
|
|
1842
|
+
messageBuffer.addMessage(`Task failed: ${failure}`, "status");
|
|
1833
1843
|
session.sendSessionEvent({ type: "message", message: `Codex error: ${failure}` });
|
|
1834
1844
|
} else {
|
|
1835
|
-
messageBuffer
|
|
1845
|
+
messageBuffer.addMessage("Task completed", "status");
|
|
1836
1846
|
}
|
|
1837
1847
|
} else if (msg.type === "turn_aborted") {
|
|
1838
1848
|
const failure = describeCodexFailure(msg);
|
|
1839
1849
|
if (failure) {
|
|
1840
|
-
messageBuffer
|
|
1850
|
+
messageBuffer.addMessage(`Turn aborted: ${failure}`, "status");
|
|
1841
1851
|
session.sendSessionEvent({ type: "message", message: `Codex error: ${failure}` });
|
|
1842
1852
|
} else {
|
|
1843
|
-
messageBuffer
|
|
1853
|
+
messageBuffer.addMessage("Turn aborted", "status");
|
|
1844
1854
|
}
|
|
1845
1855
|
} else if (msg.type === "turn_retry") {
|
|
1846
1856
|
const notice = describeCodexRetry(msg);
|
|
1847
|
-
messageBuffer
|
|
1857
|
+
messageBuffer.addMessage(notice, "status");
|
|
1848
1858
|
session.sendSessionEvent({ type: "message", message: notice });
|
|
1849
1859
|
} else if (msg.type === "steer_dropped") {
|
|
1850
1860
|
const clientIds = Array.isArray(msg.client_ids) ? msg.client_ids.filter((id) => typeof id === "string" && id.length > 0) : [];
|
|
1851
1861
|
if (clientIds.length > 0) {
|
|
1852
1862
|
session.sendQueueCancelReason(clientIds, "aborted");
|
|
1853
|
-
messageBuffer
|
|
1863
|
+
messageBuffer.addMessage("A steered message was not read before the turn ended", "status");
|
|
1854
1864
|
}
|
|
1855
1865
|
}
|
|
1856
1866
|
if (msg.type === "task_started") {
|
|
@@ -1884,16 +1894,16 @@ async function runCodex(opts) {
|
|
|
1884
1894
|
}
|
|
1885
1895
|
const changeCount = Object.keys(changes).length;
|
|
1886
1896
|
const filesMsg = changeCount === 1 ? "1 file" : `${changeCount} files`;
|
|
1887
|
-
messageBuffer
|
|
1897
|
+
messageBuffer.addMessage(`Modifying ${filesMsg}...`, "tool");
|
|
1888
1898
|
}
|
|
1889
1899
|
if (msg.type === "patch_apply_end") {
|
|
1890
1900
|
const { stdout, stderr, success } = msg;
|
|
1891
1901
|
if (success) {
|
|
1892
1902
|
const message = stdout || "Files modified successfully";
|
|
1893
|
-
messageBuffer
|
|
1903
|
+
messageBuffer.addMessage(message.substring(0, 200), "result");
|
|
1894
1904
|
} else {
|
|
1895
1905
|
const errorMsg = stderr || "Failed to modify files";
|
|
1896
|
-
messageBuffer
|
|
1906
|
+
messageBuffer.addMessage(`Error: ${errorMsg.substring(0, 200)}`, "result");
|
|
1897
1907
|
}
|
|
1898
1908
|
}
|
|
1899
1909
|
if (msg.type === "turn_diff") {
|
|
@@ -1919,7 +1929,7 @@ async function runCodex(opts) {
|
|
|
1919
1929
|
}
|
|
1920
1930
|
}
|
|
1921
1931
|
});
|
|
1922
|
-
const happyServer = await deterministicJson.startHappyServer(session);
|
|
1932
|
+
const happyServer = await deterministicJson.startHappyServer(session, { push: { sendAttention: (input) => api$1.push().sendAttention(input) } });
|
|
1923
1933
|
const bridgeEntrypoint = path.join(projectPath.projectPath(), "bin", "very-happy-mcp.mjs");
|
|
1924
1934
|
const mcpServers = {
|
|
1925
1935
|
[HAPPY_MCP_SERVER_NAME]: {
|
|
@@ -1929,13 +1939,14 @@ async function runCodex(opts) {
|
|
|
1929
1939
|
};
|
|
1930
1940
|
let first = true;
|
|
1931
1941
|
let appendSystemPromptInjected = false;
|
|
1942
|
+
const projectInjector = deterministicJson.createProjectInjector({ client: client.sharedProjectsClient(), sessionId: () => session?.sessionId, metadata: () => session?.getMetadata?.() ?? null, agent: "codex" });
|
|
1932
1943
|
process.env.VH_PEER_SESSION_ID = session.sessionId;
|
|
1933
1944
|
try {
|
|
1934
1945
|
logger.logger.debug("[codex]: client.connect begin");
|
|
1935
|
-
await client.connect();
|
|
1946
|
+
await client$1.connect();
|
|
1936
1947
|
logger.logger.debug("[codex]: client.connect done");
|
|
1937
1948
|
try {
|
|
1938
|
-
discoveredModels = await client.listModels();
|
|
1949
|
+
discoveredModels = await client$1.listModels();
|
|
1939
1950
|
if (discoveredModels.length > 0) {
|
|
1940
1951
|
session.updateMetadata((metadata2) => ({
|
|
1941
1952
|
...metadata2,
|
|
@@ -1954,9 +1965,9 @@ async function runCodex(opts) {
|
|
|
1954
1965
|
}
|
|
1955
1966
|
if (opts.resumeThreadId) {
|
|
1956
1967
|
await resumeExistingThread({
|
|
1957
|
-
client,
|
|
1968
|
+
client: client$1,
|
|
1958
1969
|
session,
|
|
1959
|
-
messageBuffer
|
|
1970
|
+
messageBuffer,
|
|
1960
1971
|
threadId: opts.resumeThreadId,
|
|
1961
1972
|
cwd: process.cwd(),
|
|
1962
1973
|
mcpServers
|
|
@@ -1966,9 +1977,9 @@ async function runCodex(opts) {
|
|
|
1966
1977
|
}
|
|
1967
1978
|
if (!reconnectSessionId && !opts.resumeThreadId && importCodexThreadId) {
|
|
1968
1979
|
await importCodexThread({
|
|
1969
|
-
client,
|
|
1980
|
+
client: client$1,
|
|
1970
1981
|
session,
|
|
1971
|
-
messageBuffer
|
|
1982
|
+
messageBuffer,
|
|
1972
1983
|
threadId: importCodexThreadId,
|
|
1973
1984
|
cwd: process.cwd(),
|
|
1974
1985
|
mcpServers
|
|
@@ -1979,7 +1990,7 @@ async function runCodex(opts) {
|
|
|
1979
1990
|
const forkCodexThreadId = process.env.HAPPY_FORK_CODEX_THREAD_ID;
|
|
1980
1991
|
if (!reconnectSessionId && forkCodexThreadId) {
|
|
1981
1992
|
try {
|
|
1982
|
-
const { thread } = await client.readThread({
|
|
1993
|
+
const { thread } = await client$1.readThread({
|
|
1983
1994
|
threadId: forkCodexThreadId,
|
|
1984
1995
|
includeTurns: true
|
|
1985
1996
|
});
|
|
@@ -2076,7 +2087,7 @@ async function runCodex(opts) {
|
|
|
2076
2087
|
turnActive = true;
|
|
2077
2088
|
if (isCodexClearText(message.message)) {
|
|
2078
2089
|
logger.logger.debug("[Codex] Handling /clear command - resetting Codex thread state");
|
|
2079
|
-
client.clearThreadState();
|
|
2090
|
+
client$1.clearThreadState();
|
|
2080
2091
|
currentTurnId = null;
|
|
2081
2092
|
codexStartedSubagents = /* @__PURE__ */ new Set();
|
|
2082
2093
|
codexActiveSubagents = /* @__PURE__ */ new Set();
|
|
@@ -2088,7 +2099,7 @@ async function runCodex(opts) {
|
|
|
2088
2099
|
appendSystemPromptInjected = false;
|
|
2089
2100
|
thinking = false;
|
|
2090
2101
|
session.keepAlive(thinking, "remote");
|
|
2091
|
-
messageBuffer
|
|
2102
|
+
messageBuffer.addMessage("Context was reset", "status");
|
|
2092
2103
|
session.sendSessionEvent({ type: "message", message: "Context was reset" });
|
|
2093
2104
|
session.updateMetadata((currentMetadata) => {
|
|
2094
2105
|
const nextMetadata = { ...currentMetadata };
|
|
@@ -2106,10 +2117,10 @@ async function runCodex(opts) {
|
|
|
2106
2117
|
idleRelease.arm();
|
|
2107
2118
|
continue;
|
|
2108
2119
|
}
|
|
2109
|
-
messageBuffer
|
|
2120
|
+
messageBuffer.addMessage(message.message, "user");
|
|
2110
2121
|
try {
|
|
2111
|
-
await client.ensureConnected();
|
|
2112
|
-
const sandboxManagedByHappy = client.sandboxEnabled;
|
|
2122
|
+
await client$1.ensureConnected();
|
|
2123
|
+
const sandboxManagedByHappy = client$1.sandboxEnabled;
|
|
2113
2124
|
const executionPolicy = resolveCodexExecutionPolicy(
|
|
2114
2125
|
message.mode.permissionMode,
|
|
2115
2126
|
sandboxManagedByHappy
|
|
@@ -2118,8 +2129,8 @@ async function runCodex(opts) {
|
|
|
2118
2129
|
if (effortRefusal) {
|
|
2119
2130
|
throw new Error(effortRefusal);
|
|
2120
2131
|
}
|
|
2121
|
-
if (!client.hasActiveThread()) {
|
|
2122
|
-
const startedThread = await client.startThread({
|
|
2132
|
+
if (!client$1.hasActiveThread()) {
|
|
2133
|
+
const startedThread = await client$1.startThread({
|
|
2123
2134
|
model: message.mode.model,
|
|
2124
2135
|
cwd: process.cwd(),
|
|
2125
2136
|
approvalPolicy: executionPolicy.approvalPolicy,
|
|
@@ -2135,7 +2146,7 @@ async function runCodex(opts) {
|
|
|
2135
2146
|
message.mode.appendSystemPrompt && !appendSystemPromptInjected
|
|
2136
2147
|
);
|
|
2137
2148
|
const turnPrompt = buildCodexTurnPrompt({
|
|
2138
|
-
message: message.message,
|
|
2149
|
+
message: await projectInjector.decorate(message.message),
|
|
2139
2150
|
mode: message.mode,
|
|
2140
2151
|
includeAppendSystemPrompt,
|
|
2141
2152
|
includeTitleInstruction: first
|
|
@@ -2144,7 +2155,7 @@ async function runCodex(opts) {
|
|
|
2144
2155
|
happyHomeDir: configuration.configuration.happyHomeDir,
|
|
2145
2156
|
sessionId: session.sessionId
|
|
2146
2157
|
}) : [];
|
|
2147
|
-
const result = await client.sendTurnAndWait(attachmentContent.appendStagedAttachmentsToPrompt(turnPrompt, staged), {
|
|
2158
|
+
const result = await client$1.sendTurnAndWait(attachmentContent.appendStagedAttachmentsToPrompt(turnPrompt, staged), {
|
|
2148
2159
|
images: staged.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => file.path),
|
|
2149
2160
|
model: message.mode.model,
|
|
2150
2161
|
approvalPolicy: executionPolicy.approvalPolicy,
|
|
@@ -2162,11 +2173,11 @@ async function runCodex(opts) {
|
|
|
2162
2173
|
logger.logger.warn("Error in codex session", safeCodexErrorMetadata(error));
|
|
2163
2174
|
const reason = describeThrownTurnError(error);
|
|
2164
2175
|
if (reason) {
|
|
2165
|
-
messageBuffer
|
|
2176
|
+
messageBuffer.addMessage(`Task failed: ${reason}`, "status");
|
|
2166
2177
|
session.sendSessionEvent({ type: "message", message: `Codex error: ${reason}` });
|
|
2167
2178
|
} else {
|
|
2168
2179
|
const tail = codexStderrTailOf(error);
|
|
2169
|
-
messageBuffer
|
|
2180
|
+
messageBuffer.addMessage("Process exited unexpectedly", "status");
|
|
2170
2181
|
session.sendSessionEvent({ type: "message", message: tail ? `Process exited unexpectedly: ${tail}` : "Process exited unexpectedly" });
|
|
2171
2182
|
}
|
|
2172
2183
|
} finally {
|
|
@@ -2211,7 +2222,7 @@ async function runCodex(opts) {
|
|
|
2211
2222
|
}
|
|
2212
2223
|
idleRelease.cancel();
|
|
2213
2224
|
logger.logger.debug("[codex]: client.disconnect begin");
|
|
2214
|
-
await client.disconnect();
|
|
2225
|
+
await client$1.disconnect();
|
|
2215
2226
|
logger.logger.debug("[codex]: client.disconnect done");
|
|
2216
2227
|
logger.logger.debug("[codex]: happyServer.stop");
|
|
2217
2228
|
happyServer.stop();
|
|
@@ -2235,7 +2246,7 @@ async function runCodex(opts) {
|
|
|
2235
2246
|
logger.logger.debug("[codex]: inkInstance.unmount()");
|
|
2236
2247
|
inkInstance.unmount();
|
|
2237
2248
|
}
|
|
2238
|
-
messageBuffer
|
|
2249
|
+
messageBuffer.clear();
|
|
2239
2250
|
logActiveHandles("cleanup-end");
|
|
2240
2251
|
logger.logger.debug("[codex]: Final cleanup completed");
|
|
2241
2252
|
if (hibernationExit.hibernating && hibernationStamp) {
|