very-happy-cli 0.2.161 → 0.2.163
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-Ba98QDif.cjs → AcpBackend-C2rzKnvT.cjs} +3 -3
- package/dist/{AcpBackend-6U6pQgx1.mjs → AcpBackend-CuOUXVRX.mjs} +3 -3
- package/dist/{AcpSessionManager-CoMWFVw3.mjs → AcpSessionManager-BSIBnWUb.mjs} +1 -1
- package/dist/{AcpSessionManager-BAY1Pggx.cjs → AcpSessionManager-BvIuBzoO.cjs} +1 -1
- package/dist/{BasePermissionHandler-2R0uH2CI.cjs → BasePermissionHandler-D6PdH-OU.cjs} +1 -1
- package/dist/{BasePermissionHandler-BvvhBTja.mjs → BasePermissionHandler-Ng5h8JpY.mjs} +1 -1
- package/dist/{BaseReasoningProcessor-fsVNmCEF.cjs → BaseReasoningProcessor-C0cXz1mg.cjs} +1 -1
- package/dist/{BaseReasoningProcessor-DyhO1uoU.mjs → BaseReasoningProcessor-CM-ijU4F.mjs} +1 -1
- package/dist/{agentHome-Ck1i1TQB.mjs → agentHome-Bt4lOwFE.mjs} +4 -4
- package/dist/{agentHome-DvNnGphb.cjs → agentHome-CAMEVRZZ.cjs} +4 -4
- package/dist/{api-SffjRQ1b.mjs → api-D5kfP3JF.mjs} +26 -10
- package/dist/{api-B2vLMS-z.cjs → api-DGFBAPr7.cjs} +26 -10
- package/dist/{apiMachine-gFA54X7y.cjs → apiMachine-BxCy5_No.cjs} +33 -26
- package/dist/{apiMachine-BpW9t8MO.mjs → apiMachine-C58eizxs.mjs} +21 -14
- package/dist/{assistantTools-CgiTbnWb.mjs → assistantTools-BvKH9eRc.mjs} +6 -6
- package/dist/{assistantTools-BfA0R3_m.cjs → assistantTools-NC7DMNvV.cjs} +6 -6
- package/dist/{attachmentContent-CSGxr71v.mjs → attachmentContent-CCE0Y3gR.mjs} +2 -2
- package/dist/{attachmentContent-DMMZzevR.cjs → attachmentContent-CUKdzh4v.cjs} +2 -2
- package/dist/{attachmentLimits-yba1uHFO.mjs → attachmentLimits-D5pgmASK.mjs} +1 -1
- package/dist/{attachmentLimits-CzVrqgLR.cjs → attachmentLimits-DzlBPyJP.cjs} +1 -1
- package/dist/{auth-x4CEoysH.cjs → auth-CILb5DeW.cjs} +8 -8
- package/dist/{auth-CYHjQ8oQ.mjs → auth-CRm8yNv6.mjs} +5 -5
- package/dist/{auth-Bt4ceBBy.cjs → auth-Ddz597Rw.cjs} +5 -5
- package/dist/{auth-DdyVZSo6.mjs → auth-gdc8gI9D.mjs} +8 -8
- package/dist/{auto-BDXDUnjB.cjs → auto-CXtt6MfS.cjs} +16 -14
- package/dist/{auto-CXLlRi3a.mjs → auto-lLjHfAOO.mjs} +16 -14
- package/dist/{bootstrap-CkgIq8N3.cjs → bootstrap-CccIDvh4.cjs} +2 -2
- package/dist/{bootstrap-BNQq05jR.mjs → bootstrap-DSWZAtGy.mjs} +2 -2
- package/dist/{browser-9pyhQr1R.mjs → browser-DU9kI-Q-.mjs} +1 -1
- package/dist/{browser-BDOlKWYe.cjs → browser-lizgdXYj.cjs} +1 -1
- package/dist/{claudeLocal-BDuGFnjJ.cjs → claudeLocal-Bp-lf6yb.cjs} +5 -5
- package/dist/{claudeLocal-CQa8qnwq.mjs → claudeLocal-CTR2xlPT.mjs} +5 -5
- package/dist/{claudeLocalLauncher-CDqQI9ak.mjs → claudeLocalLauncher-DFkwLMqU.mjs} +10 -10
- package/dist/{claudeLocalLauncher-Bd5I2-j6.cjs → claudeLocalLauncher-aQyL3g7I.cjs} +10 -10
- package/dist/{codexThreadFork-BCaEMBiM.mjs → claudeSessionFork-DABSCbkf.mjs} +2 -134
- package/dist/{codexThreadFork-BZqF-9bX.cjs → claudeSessionFork-DdJFvxwf.cjs} +1 -137
- package/dist/{client-Brn-UwVk.mjs → client-BbNFS1WW.mjs} +3 -3
- package/dist/{client-DOBWJL3u.cjs → client-CQzHoynf.cjs} +2 -2
- package/dist/{client-C_axwRry.cjs → client-CXvsRLAz.cjs} +3 -3
- package/dist/{client-CXb1VJui.mjs → client-CyUhxs-0.mjs} +2 -2
- package/dist/codex/happyMcpStdioBridge.cjs +15 -15
- package/dist/codex/happyMcpStdioBridge.mjs +15 -15
- package/dist/{codexAppServerClient-ZzhUTWPo.cjs → codexAppServerClient-5jNbTlE5.cjs} +2 -2
- package/dist/{codexAppServerClient-oeQKD6Qf.mjs → codexAppServerClient-Dto99RVH.mjs} +2 -2
- package/dist/{codexCommand-CJ82bl3l.mjs → codexCommand-BHfrAyds.mjs} +49 -41
- package/dist/{codexCommand-C7H0NpBe.cjs → codexCommand-LUp0vkNi.cjs} +49 -41
- package/dist/codexThreadFork-DNekT4nQ.cjs +138 -0
- package/dist/codexThreadFork-R76RU5H0.mjs +133 -0
- package/dist/{config-BglnktIo.mjs → config-BEvt_OYR.mjs} +3 -3
- package/dist/{config-CYpL1Ahd.cjs → config-CAD5NR1h.cjs} +3 -3
- package/dist/{configuration-DoWFJUPm.mjs → configuration-B0c-OP_h.mjs} +1 -1
- package/dist/{configuration-v9f8LM9T.cjs → configuration-CepfrPZ_.cjs} +1 -1
- package/dist/{connect-yEvjdRvx.cjs → connect-BPMzMoiQ.cjs} +13 -13
- package/dist/{connect-hgcNjyAB.mjs → connect-BeK0dMYB.mjs} +13 -13
- package/dist/{context-B45vMtSZ.cjs → context-BhZMRQho.cjs} +1 -1
- package/dist/{context-C9GHPLEm.mjs → context-mMg17HJv.mjs} +1 -1
- package/dist/{controlClient-DjoKTtgK.mjs → controlClient-BKmjlbGs.mjs} +3 -3
- package/dist/{controlClient-fEHE85bH.cjs → controlClient-HPMsyxLb.cjs} +3 -3
- package/dist/{createSessionMetadata-BRLB9CNO.cjs → createSessionMetadata-CGuyVxsM.cjs} +2 -2
- package/dist/{createSessionMetadata-mIeehclp.mjs → createSessionMetadata-KOL67aSN.mjs} +2 -2
- package/dist/{deterministicJson-DKDP_mM-.cjs → deterministicJson-BFzPcsCh.cjs} +9 -9
- package/dist/{deterministicJson-p835AdAU.mjs → deterministicJson-CaWami7M.mjs} +9 -9
- package/dist/{doctor-hVNnSZJn.cjs → doctor-BHNVY9DE.cjs} +6 -6
- package/dist/{doctor-BeUuQXFs.mjs → doctor-DX2P7IlL.mjs} +6 -6
- package/dist/{ensureDaemonRunning-Dg9aZfjs.cjs → ensureDaemonRunning-BahhZpQ1.cjs} +5 -5
- package/dist/{ensureDaemonRunning-CO7d1gOC.mjs → ensureDaemonRunning-CnWMrL5b.mjs} +5 -5
- package/dist/forkBackfill-8eLDeS73.cjs +66 -0
- package/dist/forkBackfill-DYIjlN1Z.mjs +62 -0
- package/dist/{handleResumeCommand-DnVmy7a3.cjs → handleResumeCommand-Ca334R4t.cjs} +5 -5
- package/dist/{handleResumeCommand-BiTPK0qd.mjs → handleResumeCommand-bToC6FDH.mjs} +5 -5
- package/dist/{index-CAFwetLk.mjs → index-B5v5fZi6.mjs} +37 -37
- package/dist/{index-gNTWtSKN.cjs → index-B6MVw_Xb.cjs} +3 -3
- package/dist/{index-qdS1friN.mjs → index-BBg9j0XK.mjs} +8 -1
- package/dist/{index-SPGPenK5.mjs → index-CpFreRx8.mjs} +4 -4
- package/dist/{index-Cqx-Raq6.mjs → index-D3AsOj4j.mjs} +3 -3
- package/dist/{index-DA7yINuk.cjs → index-DJ-oV52i.cjs} +8 -1
- package/dist/{index-Pf2cV9cn.cjs → index-DoMsO8_G.cjs} +4 -4
- package/dist/{index-LIn6nCcq.cjs → index-vFMUVtSL.cjs} +36 -36
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-Bu85vlHD.cjs → install-BnTP73AE.cjs} +3 -3
- package/dist/{install-ClUUl3yp.mjs → install-Dixfzmb_.mjs} +3 -3
- package/dist/lib.cjs +12 -12
- package/dist/lib.d.cts +26 -0
- package/dist/lib.d.mts +26 -0
- package/dist/lib.mjs +12 -12
- package/dist/{lidState-KHHu1015.cjs → lidState-BGWXfx1e.cjs} +1 -1
- package/dist/{lidState-C2dI0FAN.mjs → lidState-X7iQg4y5.mjs} +1 -1
- package/dist/{localHappyAgentAuth-BXiHPXdC.cjs → localHappyAgentAuth-D_Gc4K7h.cjs} +1 -1
- package/dist/{localHappyAgentAuth-DCsetiyG.mjs → localHappyAgentAuth-r83bTscW.mjs} +1 -1
- package/dist/{logger-fXoNzNuB.mjs → logger-BIzr7JN0.mjs} +2 -2
- package/dist/{logger-Bc8-u1w0.cjs → logger-Ca5eRZ2j.cjs} +2 -2
- package/dist/{machineMetadata-BHjehxJY.mjs → machineMetadata-DakW9c61.mjs} +3 -3
- package/dist/{machineMetadata-BibDMFVx.cjs → machineMetadata-GlObivJ-.cjs} +3 -3
- package/dist/{main-BktM4A1K.mjs → main-BJlGidfv.mjs} +44 -44
- package/dist/{main-CLaX-t-b.cjs → main-BfA1Vtqq.cjs} +44 -44
- package/dist/{mcp-GBfE70nk.cjs → mcp-BVzt1llv.cjs} +14 -14
- package/dist/{mcp-CeUd9KDr.mjs → mcp-Bb7AD1SD.mjs} +14 -14
- package/dist/{package-Cl5BEP5x.cjs → package-BfnmIH4b.cjs} +7 -7
- package/dist/{package-uOg9SCKi.mjs → package-D-W_r_pd.mjs} +7 -7
- package/dist/{peerTools-Dz3_7Bkk.mjs → peerTools-C1cELmtZ.mjs} +4 -4
- package/dist/{peerTools-CIeiy9wn.cjs → peerTools-CADjnFDx.cjs} +4 -4
- package/dist/{persistence-CBNMzSa8.cjs → persistence-Ceb-BPk6.cjs} +3 -3
- package/dist/{persistence-oET5n61f.mjs → persistence-DgBhXxu7.mjs} +3 -3
- package/dist/{piRunnerArgs-Bf7RUF__.cjs → piRunnerArgs-Bem-saSg.cjs} +1 -1
- package/dist/{piRunnerArgs-Dk1ncwHF.mjs → piRunnerArgs-CH6oh6w0.mjs} +1 -1
- package/dist/{piRuntime-BwRdhK_N.mjs → piRuntime-BRKG6Yoz.mjs} +1 -1
- package/dist/{piRuntime-B_6TE9Eb.cjs → piRuntime-Be0UP44z.cjs} +1 -1
- package/dist/{piTerminal-Bap3R8Re.mjs → piTerminal-DVOAWiZx.mjs} +16 -16
- package/dist/{piTerminal-CagmEoez.cjs → piTerminal-ibKBMmuK.cjs} +16 -16
- package/dist/{registerCommonHandlers-BjSV2Skz.cjs → registerCommonHandlers-DPOHFlxp.cjs} +2 -2
- package/dist/{registerCommonHandlers-CrgvJsOy.mjs → registerCommonHandlers-t15dS7xt.mjs} +2 -2
- package/dist/{registerKillSessionHandler-Cbc8Rgtd.mjs → registerKillSessionHandler-BS5afGeA.mjs} +11 -7
- package/dist/{registerKillSessionHandler-6TC2S3lf.cjs → registerKillSessionHandler-DGDubZLv.cjs} +11 -7
- package/dist/{remoteSessionClient-BNx78NLb.cjs → remoteSessionClient-DbnVs1Tv.cjs} +5 -5
- package/dist/{remoteSessionClient-CO7qOjR0.mjs → remoteSessionClient-N7JsQ0XS.mjs} +5 -5
- package/dist/{run-D5xAEWSB.cjs → run-CptLbkQ4.cjs} +32 -32
- package/dist/{run-2l5vSt2h.mjs → run-FZRugy70.mjs} +31 -31
- package/dist/{runClaude-BX6ixjtW.cjs → runClaude-Cnv0SnA4.cjs} +24 -21
- package/dist/{runClaude-BgN6xo05.mjs → runClaude-DNW3i-k4.mjs} +24 -21
- package/dist/{runClaudeDeps-COBBhD9o.mjs → runClaudeDeps-CpAiml84.mjs} +216 -39
- package/dist/{runClaudeDeps-Bp20MScE.cjs → runClaudeDeps-lb6LlVPa.cjs} +212 -35
- package/dist/{runGemini-CSMPkt0p.cjs → runGemini-BzS_Yw3F.cjs} +32 -32
- package/dist/{runGemini-Cc2jq-uh.mjs → runGemini-CRn8exeY.mjs} +32 -32
- package/dist/{runOpenClaw-CIlCwdW2.mjs → runOpenClaw-DuS_zRVT.mjs} +18 -18
- package/dist/{runOpenClaw-YBwua4Rf.cjs → runOpenClaw-QoDQpR9a.cjs} +18 -18
- package/dist/{sandbox-C4gXLP1p.cjs → sandbox-CT9CGjEI.cjs} +4 -4
- package/dist/{sandbox-CNkwOtHI.mjs → sandbox-DysMM_pn.mjs} +4 -4
- package/dist/selfCheck-BTltA-ZZ.mjs +84 -0
- package/dist/{selfCheck-CU8xSDsl.cjs → selfCheck-DIn7j8MD.cjs} +34 -34
- package/dist/{send-DY9Nr-x4.cjs → send-97xYN_Yw.cjs} +8 -8
- package/dist/{send-CGHcKZ-w.mjs → send-CA6fSF3S.mjs} +8 -8
- package/dist/{server-II51Mimf.cjs → server-C67NGJoX.cjs} +6 -6
- package/dist/{server-m2b5pamZ.mjs → server-r50NNW9e.mjs} +4 -4
- package/dist/{sessionLock-7ePAYDOg.cjs → sessionLock-CS4fdsmu.cjs} +2 -2
- package/dist/{sessionLock-Cw6FmbMv.mjs → sessionLock-Dab6_dCd.mjs} +2 -2
- package/dist/{sessionModeFile-CDmDyRkD.mjs → sessionModeFile-3yV7P9R-.mjs} +1 -1
- package/dist/{sessionModeFile-BVCV5f7E.cjs → sessionModeFile-BhqlFlHZ.cjs} +1 -1
- package/dist/{sessionOps-C_f1wKOr.mjs → sessionOps-DJSwzwP-.mjs} +5 -5
- package/dist/{sessionOps-DJdExmBy.cjs → sessionOps-DWsGWwfZ.cjs} +4 -4
- package/dist/{sessionScanner-D1goKdd3.cjs → sessionScanner-D6WqRtJQ.cjs} +3 -3
- package/dist/{sessionScanner-CaAHLyNV.mjs → sessionScanner-jilpq2aE.mjs} +3 -3
- package/dist/{sessions-DGs6ALNo.cjs → sessions-C22q-Z_s.cjs} +9 -9
- package/dist/{sessions-DnvmWUel.mjs → sessions-RXTp4x0o.mjs} +9 -9
- package/dist/{setupOfflineReconnection-R7XuR_sj.cjs → setupOfflineReconnection-BrnWBRUP.cjs} +2 -2
- package/dist/{setupOfflineReconnection-CVViqZft.mjs → setupOfflineReconnection-rd1PCWiN.mjs} +2 -2
- package/dist/{spawn-CXTH7qg1.cjs → spawn-Ccy5qAtp.cjs} +41 -19
- package/dist/{spawn-DNYSvFtC.mjs → spawn-D8CEQPbN.mjs} +39 -18
- package/dist/{spawnAgents-DZzZ9jMI.mjs → spawnAgents-Y1LjnCt9.mjs} +1 -1
- package/dist/{spawnAgents-BGQiEF-w.cjs → spawnAgents-iSu1Xzs5.cjs} +1 -1
- package/dist/{spawnHappyCLI-BhYj84rv.cjs → spawnHappyCLI-Dz2ZHrsN.cjs} +1 -1
- package/dist/{spawnHappyCLI-cqWQbwsb.mjs → spawnHappyCLI-wowHF2IL.mjs} +1 -1
- package/dist/{startFileWatcher-CdegMbJj.mjs → startFileWatcher-C1wjDI_o.mjs} +1 -1
- package/dist/{startFileWatcher-CKKx-8ZO.cjs → startFileWatcher-Ce17H9pG.cjs} +1 -1
- package/dist/{streamRelay-FPVbHpbM.mjs → streamRelay-BLgU9X3R.mjs} +1 -1
- package/dist/{streamRelay-BiKw59Cc.cjs → streamRelay-DnObXZZj.cjs} +1 -1
- package/dist/{sync-CxD-w_40.mjs → sync-DnmsgL3w.mjs} +5 -1
- package/dist/{sync-CVk4QERO.cjs → sync-fDRF_nO1.cjs} +5 -1
- package/dist/{systemPrompt-BygJcmbi.cjs → systemPrompt-9PWg4OU6.cjs} +2 -2
- package/dist/{systemPrompt-DmtypUc7.mjs → systemPrompt-Db9O7KGe.mjs} +2 -2
- package/dist/{teams-BOC6nIPL.mjs → teams-C5PwKr4K.mjs} +6 -6
- package/dist/{teams-BsvpOBfn.cjs → teams-DkHPUc6j.cjs} +6 -6
- package/dist/{time-BZNdNiIV.mjs → time-TxDyvAKk.mjs} +1 -1
- package/dist/{time-CNRE4ChD.cjs → time-xNkWLTSj.cjs} +1 -1
- package/dist/{titleGenerator-CFRhU-xq.cjs → titleGenerator-C8arvXNG.cjs} +13 -3
- package/dist/{titleGenerator-ox6ptCsp.mjs → titleGenerator-oK414IZc.mjs} +12 -2
- package/dist/{todo-C5KBVbUw.mjs → todo-CLHIGRUf.mjs} +6 -6
- package/dist/{todo-B-KB7oAB.cjs → todo-VqQuYyFq.cjs} +6 -6
- package/dist/{tools-BZabNIid.mjs → tools-BSzD246o.mjs} +2 -2
- package/dist/{tools-CsSovyNp.cjs → tools-GnqHEZHb.cjs} +2 -2
- package/dist/{tools-BmQQUATY.mjs → tools-sPgOmLr_.mjs} +1 -1
- package/dist/{tools-lMDra4Pv.cjs → tools-xQ38ufgo.cjs} +1 -1
- package/dist/{uninstall-fvA5aWpU.cjs → uninstall-DKM0j1qI.cjs} +3 -3
- package/dist/{uninstall-B1WLtC1d.mjs → uninstall-DyoXxpgI.mjs} +3 -3
- package/package.json +7 -7
- package/dist/selfCheck-hJ6PCh7v.mjs +0 -84
|
@@ -1,60 +1,61 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var auth = require('./auth-
|
|
4
|
-
var index = require('./index-
|
|
3
|
+
var auth = require('./auth-Ddz597Rw.cjs');
|
|
4
|
+
var index = require('./index-DJ-oV52i.cjs');
|
|
5
|
+
var forkBackfill = require('./forkBackfill-8eLDeS73.cjs');
|
|
5
6
|
var node_crypto = require('node:crypto');
|
|
6
7
|
var cuid2 = require('@paralleldrive/cuid2');
|
|
7
8
|
var agentAttachments = require('./agentAttachments-Dbw8iMCZ.cjs');
|
|
8
|
-
var attachmentContent = require('./attachmentContent-
|
|
9
|
+
var attachmentContent = require('./attachmentContent-CUKdzh4v.cjs');
|
|
9
10
|
var ink = require('ink');
|
|
10
|
-
var sessionLock = require('./sessionLock-
|
|
11
|
+
var sessionLock = require('./sessionLock-CS4fdsmu.cjs');
|
|
11
12
|
var React = require('react');
|
|
12
|
-
var api = require('./api-
|
|
13
|
-
var codexAppServerClient = require('./codexAppServerClient-
|
|
14
|
-
var logger = require('./logger-
|
|
15
|
-
var BasePermissionHandler = require('./BasePermissionHandler-
|
|
16
|
-
var BaseReasoningProcessor = require('./BaseReasoningProcessor-
|
|
13
|
+
var api = require('./api-DGFBAPr7.cjs');
|
|
14
|
+
var codexAppServerClient = require('./codexAppServerClient-5jNbTlE5.cjs');
|
|
15
|
+
var logger = require('./logger-Ca5eRZ2j.cjs');
|
|
16
|
+
var BasePermissionHandler = require('./BasePermissionHandler-D6PdH-OU.cjs');
|
|
17
|
+
var BaseReasoningProcessor = require('./BaseReasoningProcessor-C0cXz1mg.cjs');
|
|
17
18
|
var node_child_process = require('node:child_process');
|
|
18
|
-
var persistence = require('./persistence-
|
|
19
|
-
var machineMetadata = require('./machineMetadata-
|
|
20
|
-
var configuration = require('./configuration-
|
|
21
|
-
var registerKillSessionHandler = require('./registerKillSessionHandler-
|
|
19
|
+
var persistence = require('./persistence-Ceb-BPk6.cjs');
|
|
20
|
+
var machineMetadata = require('./machineMetadata-GlObivJ-.cjs');
|
|
21
|
+
var configuration = require('./configuration-CepfrPZ_.cjs');
|
|
22
|
+
var registerKillSessionHandler = require('./registerKillSessionHandler-DGDubZLv.cjs');
|
|
22
23
|
var projectPath = require('./projectPath-ChLhdOyt.cjs');
|
|
23
24
|
var path = require('node:path');
|
|
24
|
-
var createSessionMetadata = require('./createSessionMetadata-
|
|
25
|
-
var deterministicJson = require('./deterministicJson-
|
|
25
|
+
var createSessionMetadata = require('./createSessionMetadata-CGuyVxsM.cjs');
|
|
26
|
+
var deterministicJson = require('./deterministicJson-BFzPcsCh.cjs');
|
|
26
27
|
var messageBuffer = require('./messageBuffer-fJMH6uY8.cjs');
|
|
27
|
-
var controlClient = require('./controlClient-
|
|
28
|
+
var controlClient = require('./controlClient-HPMsyxLb.cjs');
|
|
28
29
|
var authRelay = require('./authRelay-BdYkC1Po.cjs');
|
|
29
|
-
var setupOfflineReconnection = require('./setupOfflineReconnection-
|
|
30
|
+
var setupOfflineReconnection = require('./setupOfflineReconnection-BrnWBRUP.cjs');
|
|
30
31
|
var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
|
|
31
32
|
var specialCommands = require('./specialCommands-DSsTeRej.cjs');
|
|
32
33
|
var constants = require('./constants-VJ0N6WuG.cjs');
|
|
33
34
|
var defaultPermissionMode = require('./defaultPermissionMode-CxmTXUQR.cjs');
|
|
34
35
|
var editPaths = require('./editPaths-Bqp4OFPw.cjs');
|
|
35
|
-
var ensureDaemonRunning = require('./ensureDaemonRunning-
|
|
36
|
+
var ensureDaemonRunning = require('./ensureDaemonRunning-BahhZpQ1.cjs');
|
|
36
37
|
require('tweetnacl');
|
|
37
38
|
require('axios');
|
|
38
|
-
require('./time-
|
|
39
|
-
require('./browser-
|
|
39
|
+
require('./time-xNkWLTSj.cjs');
|
|
40
|
+
require('./browser-lizgdXYj.cjs');
|
|
40
41
|
require('open');
|
|
41
42
|
require('zod');
|
|
42
43
|
require('node:fs/promises');
|
|
43
|
-
require('./attachmentLimits-
|
|
44
|
+
require('./attachmentLimits-DzlBPyJP.cjs');
|
|
44
45
|
require('node:fs');
|
|
45
46
|
require('node:events');
|
|
46
47
|
require('socket.io-client');
|
|
47
48
|
require('./limits-C-a7gr04.cjs');
|
|
48
|
-
require('./lidState-
|
|
49
|
+
require('./lidState-BGWXfx1e.cjs');
|
|
49
50
|
require('os');
|
|
50
51
|
require('child_process');
|
|
51
|
-
require('./registerCommonHandlers-
|
|
52
|
+
require('./registerCommonHandlers-DPOHFlxp.cjs');
|
|
52
53
|
require('util');
|
|
53
54
|
require('fs/promises');
|
|
54
55
|
require('crypto');
|
|
55
56
|
require('path');
|
|
56
57
|
require('cross-spawn');
|
|
57
|
-
require('./sync-
|
|
58
|
+
require('./sync-fDRF_nO1.cjs');
|
|
58
59
|
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
59
60
|
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
60
61
|
require('chalk');
|
|
@@ -62,34 +63,34 @@ require('node:readline');
|
|
|
62
63
|
require('./manager-Cly8xVIR.cjs');
|
|
63
64
|
require('@anthropic-ai/sandbox-runtime');
|
|
64
65
|
require('node:os');
|
|
65
|
-
require('./package-
|
|
66
|
+
require('./package-BfnmIH4b.cjs');
|
|
66
67
|
require('node:util');
|
|
67
68
|
require('./detectCLI-DR9ZaN6B.cjs');
|
|
68
69
|
require('fs');
|
|
69
|
-
require('./localHappyAgentAuth-
|
|
70
|
+
require('./localHappyAgentAuth-D_Gc4K7h.cjs');
|
|
70
71
|
require('./types-CRS-srZK.cjs');
|
|
71
72
|
require('url');
|
|
72
|
-
require('./client-
|
|
73
|
-
require('./context-
|
|
74
|
-
require('./sessionOps-
|
|
73
|
+
require('./client-CXvsRLAz.cjs');
|
|
74
|
+
require('./context-BhZMRQho.cjs');
|
|
75
|
+
require('./sessionOps-DWsGWwfZ.cjs');
|
|
75
76
|
require('./resources-JDPugcDq.cjs');
|
|
76
|
-
require('./tools-
|
|
77
|
-
require('./tools-
|
|
78
|
-
require('./client-
|
|
79
|
-
require('./peerTools-
|
|
77
|
+
require('./tools-xQ38ufgo.cjs');
|
|
78
|
+
require('./tools-GnqHEZHb.cjs');
|
|
79
|
+
require('./client-CQzHoynf.cjs');
|
|
80
|
+
require('./peerTools-CADjnFDx.cjs');
|
|
80
81
|
require('./ids-B6ZC0HGt.cjs');
|
|
81
|
-
require('./remoteSessionClient-
|
|
82
|
+
require('./remoteSessionClient-DbnVs1Tv.cjs');
|
|
82
83
|
require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
83
84
|
require('node:http');
|
|
84
85
|
require('@modelcontextprotocol/sdk/server/streamableHttp.js');
|
|
85
|
-
require('./assistantTools-
|
|
86
|
+
require('./assistantTools-NC7DMNvV.cjs');
|
|
86
87
|
require('./terminals-B_bfC9c2.cjs');
|
|
87
88
|
require('./terminalTitleSuggest-DhvRFX3H.cjs');
|
|
88
89
|
require('./tmuxSocket-D-Xt6Vn-.cjs');
|
|
89
|
-
require('./bootstrap-
|
|
90
|
+
require('./bootstrap-CccIDvh4.cjs');
|
|
90
91
|
require('./agentGuidance-B5NATuFa.cjs');
|
|
91
92
|
require('./previewPath-B0rBdhy1.cjs');
|
|
92
|
-
require('./spawnHappyCLI-
|
|
93
|
+
require('./spawnHappyCLI-Dz2ZHrsN.cjs');
|
|
93
94
|
require('./doctorReadiness-BCZGcN0a.cjs');
|
|
94
95
|
|
|
95
96
|
function getStartedSubagents(state) {
|
|
@@ -1053,10 +1054,10 @@ async function importCodexThread(opts) {
|
|
|
1053
1054
|
});
|
|
1054
1055
|
} catch (error) {
|
|
1055
1056
|
const reason = error instanceof Error ? error.message : String(error);
|
|
1056
|
-
throw
|
|
1057
|
+
throw failVisibly(opts.session, `Failed to import Codex thread ${opts.threadId}: ${reason}`);
|
|
1057
1058
|
}
|
|
1058
1059
|
if (!forked.threadId || forked.threadId === opts.threadId) {
|
|
1059
|
-
throw
|
|
1060
|
+
throw failVisibly(opts.session, `Failed to import Codex thread ${opts.threadId}: Codex did not create an independent copy`);
|
|
1060
1061
|
}
|
|
1061
1062
|
opts.session.updateMetadata((currentMetadata) => ({
|
|
1062
1063
|
...currentMetadata,
|
|
@@ -1074,10 +1075,15 @@ async function importCodexThread(opts) {
|
|
|
1074
1075
|
opts.messageBuffer.addMessage(`Imported thread ${trimIdent.trimIdent(opts.threadId)} as ${trimIdent.trimIdent(forked.threadId)}`, "status");
|
|
1075
1076
|
opts.session.sendSessionEvent({
|
|
1076
1077
|
type: "message",
|
|
1077
|
-
|
|
1078
|
+
// B-529: an empty fork used to look like "the content never loaded".
|
|
1079
|
+
message: envelopes.length > 0 ? `Imported Codex thread ${opts.threadId} (continuing as ${forked.threadId})` : `Imported Codex thread ${opts.threadId} (continuing as ${forked.threadId}), but Codex returned no history for it`
|
|
1078
1080
|
});
|
|
1079
1081
|
return { threadId: forked.threadId, model: forked.model, replayed: envelopes.length };
|
|
1080
1082
|
}
|
|
1083
|
+
function failVisibly(session, message) {
|
|
1084
|
+
session.sendSessionEvent({ type: "message", message });
|
|
1085
|
+
return new Error(message);
|
|
1086
|
+
}
|
|
1081
1087
|
|
|
1082
1088
|
function emitReadyIfIdle({ pending, queueSize, shouldExit, sendReady, notify }) {
|
|
1083
1089
|
if (shouldExit) {
|
|
@@ -1273,7 +1279,7 @@ async function runCodex(opts) {
|
|
|
1273
1279
|
dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
|
|
1274
1280
|
...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
|
|
1275
1281
|
...forkedFromMessageId ? { forkedFromMessageId } : {},
|
|
1276
|
-
capabilities: [index.PROMPT_QUEUE_CAPABILITY]
|
|
1282
|
+
capabilities: [index.PROMPT_QUEUE_CAPABILITY, forkBackfill.FORK_BACKFILL_CAPABILITY]
|
|
1277
1283
|
});
|
|
1278
1284
|
metadata.attachmentKinds = [...attachmentContent.CLAUDE_ATTACHMENT_KINDS];
|
|
1279
1285
|
const importCodexThreadId = process.env[IMPORT_CODEX_THREAD_ENV];
|
|
@@ -1832,8 +1838,10 @@ async function runCodex(opts) {
|
|
|
1832
1838
|
codexThreadId: forkCodexThreadId
|
|
1833
1839
|
}));
|
|
1834
1840
|
logger.logger.debug(`[CODEX FORK BACKFILL] Replayed ${envelopes.length} historical envelopes from thread ${forkCodexThreadId}`);
|
|
1841
|
+
void forkBackfill.publishForkBackfillWhenCommitted(session, { count: envelopes.length });
|
|
1835
1842
|
} catch (error) {
|
|
1836
1843
|
logger.logger.debug(`[CODEX FORK BACKFILL] Failed to read thread ${forkCodexThreadId}`, safeCodexErrorMetadata(error));
|
|
1844
|
+
void forkBackfill.publishForkBackfillWhenCommitted(session, { count: 0, failed: true });
|
|
1837
1845
|
}
|
|
1838
1846
|
}
|
|
1839
1847
|
let pending = null;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
class CodexForkRewindPointNotFoundError extends Error {
|
|
4
|
+
constructor(itemId, threadId) {
|
|
5
|
+
super(`Codex rewind point ${itemId} not found in thread ${threadId}`);
|
|
6
|
+
this.itemId = itemId;
|
|
7
|
+
this.threadId = threadId;
|
|
8
|
+
this.name = "CodexForkRewindPointNotFoundError";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function hasUserAttachments(item) {
|
|
12
|
+
const content = item.content;
|
|
13
|
+
return Array.isArray(content) && content.some((part) => !part || typeof part !== "object" || part.type !== "text" || typeof part.text === "string" && part.text.includes("<attached_files>"));
|
|
14
|
+
}
|
|
15
|
+
function rejectAttachedTarget(thread, itemId) {
|
|
16
|
+
const item = thread.turns?.flatMap((turn) => turn.items ?? []).find((item2) => item2.id === itemId);
|
|
17
|
+
if (item && hasUserAttachments(item)) throw new Error("Cannot edit and rerun a message with attachments");
|
|
18
|
+
}
|
|
19
|
+
function textFromUserItem(item) {
|
|
20
|
+
if (item.type !== "userMessage") {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const content = item.content;
|
|
24
|
+
if (!Array.isArray(content)) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const textParts = content.filter((part) => Boolean(part) && typeof part === "object" && part.type === "text" && typeof part.text === "string").map((part) => part.text).join("\n").trim();
|
|
28
|
+
return textParts.length > 0 ? textParts : null;
|
|
29
|
+
}
|
|
30
|
+
function timestampFromTurn(turn) {
|
|
31
|
+
const seconds = turn.startedAt ?? turn.completedAt;
|
|
32
|
+
return typeof seconds === "number" && Number.isFinite(seconds) ? seconds * 1e3 : Date.now();
|
|
33
|
+
}
|
|
34
|
+
function listCodexRewindPoints(thread) {
|
|
35
|
+
const points = [];
|
|
36
|
+
for (const turn of thread.turns ?? []) {
|
|
37
|
+
for (const item of turn.items ?? []) {
|
|
38
|
+
const text = textFromUserItem(item);
|
|
39
|
+
if (!text) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
points.push({
|
|
43
|
+
itemId: item.id,
|
|
44
|
+
text,
|
|
45
|
+
...hasUserAttachments(item) ? { hasAttachments: true } : {},
|
|
46
|
+
timestamp: timestampFromTurn(turn)
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return points;
|
|
51
|
+
}
|
|
52
|
+
function findCutTurn(thread, itemId) {
|
|
53
|
+
const turns = thread.turns ?? [];
|
|
54
|
+
for (let index = 0; index < turns.length; index++) {
|
|
55
|
+
const turn = turns[index];
|
|
56
|
+
const item = (turn.items ?? []).find((candidate) => candidate.id === itemId);
|
|
57
|
+
if (!item) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
const text = textFromUserItem(item);
|
|
61
|
+
if (text) {
|
|
62
|
+
return { index, text };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
async function forkCodexThread(client, opts) {
|
|
68
|
+
const forked = await client.forkThread({
|
|
69
|
+
threadId: opts.threadId,
|
|
70
|
+
...opts.cwd ? { cwd: opts.cwd } : {},
|
|
71
|
+
...opts.model ? { model: opts.model } : {},
|
|
72
|
+
...opts.approvalPolicy ? { approvalPolicy: opts.approvalPolicy } : {},
|
|
73
|
+
...opts.sandbox ? { sandbox: opts.sandbox } : {},
|
|
74
|
+
...opts.mcpServers ? { mcpServers: opts.mcpServers } : {}
|
|
75
|
+
});
|
|
76
|
+
if (opts.cutAfterItemId) {
|
|
77
|
+
const cutTurn = findCutTurn(forked.thread, opts.cutAfterItemId);
|
|
78
|
+
if (!cutTurn) {
|
|
79
|
+
throw new CodexForkRewindPointNotFoundError(opts.cutAfterItemId, opts.threadId);
|
|
80
|
+
}
|
|
81
|
+
const turns = forked.thread.turns ?? [];
|
|
82
|
+
const turnsToDrop = turns.length - cutTurn.index;
|
|
83
|
+
if (turnsToDrop > 0) {
|
|
84
|
+
await client.rollbackThread({
|
|
85
|
+
threadId: forked.threadId,
|
|
86
|
+
numTurns: turnsToDrop
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
await client.injectItems({
|
|
90
|
+
threadId: forked.threadId,
|
|
91
|
+
items: [{
|
|
92
|
+
type: "message",
|
|
93
|
+
role: "user",
|
|
94
|
+
content: [{ type: "input_text", text: cutTurn.text }]
|
|
95
|
+
}]
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
type: "success",
|
|
100
|
+
newCodexThreadId: forked.threadId
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
async function forkCodexBeforeUserMessage(client, opts) {
|
|
104
|
+
const { thread: source } = await client.readThread({ threadId: opts.threadId, includeTurns: true });
|
|
105
|
+
rejectAttachedTarget(source, opts.cutBeforeItemId);
|
|
106
|
+
const sourceCut = findCutTurn(source, opts.cutBeforeItemId);
|
|
107
|
+
if (!sourceCut) throw new CodexForkRewindPointNotFoundError(opts.cutBeforeItemId, opts.threadId);
|
|
108
|
+
if ((source.turns?.[sourceCut.index].items ?? []).findIndex((item) => item.id === opts.cutBeforeItemId) !== 0) {
|
|
109
|
+
throw new Error("Cannot safely rewind a user message inside an existing turn");
|
|
110
|
+
}
|
|
111
|
+
if (sourceCut.index === 0) return { type: "success", startFresh: true };
|
|
112
|
+
const forked = await client.forkThread({ threadId: opts.threadId, cwd: opts.cwd });
|
|
113
|
+
if (forked.threadId === opts.threadId) throw new Error("Codex did not create an independent fork");
|
|
114
|
+
rejectAttachedTarget(forked.thread, opts.cutBeforeItemId);
|
|
115
|
+
const cut = findCutTurn(forked.thread, opts.cutBeforeItemId);
|
|
116
|
+
if (!cut) throw new CodexForkRewindPointNotFoundError(opts.cutBeforeItemId, opts.threadId);
|
|
117
|
+
const turns = forked.thread.turns ?? [];
|
|
118
|
+
const items = turns[cut.index].items ?? [];
|
|
119
|
+
if (items.findIndex((item) => item.id === opts.cutBeforeItemId) !== 0) {
|
|
120
|
+
throw new Error("Cannot safely rewind a user message inside an existing turn");
|
|
121
|
+
}
|
|
122
|
+
if (cut.index === 0) return { type: "success", startFresh: true };
|
|
123
|
+
const expectedTurnIds = turns.slice(0, cut.index).map((turn) => turn.id);
|
|
124
|
+
const { thread } = await client.rollbackThread({
|
|
125
|
+
threadId: forked.threadId,
|
|
126
|
+
numTurns: turns.length - cut.index
|
|
127
|
+
});
|
|
128
|
+
const remaining = thread.turns ?? [];
|
|
129
|
+
if (remaining.length !== cut.index || remaining.some((turn, index) => turn.id !== expectedTurnIds[index])) {
|
|
130
|
+
throw new Error("Codex rollback did not preserve the expected history");
|
|
131
|
+
}
|
|
132
|
+
return { type: "success", newCodexThreadId: forked.threadId };
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
exports.CodexForkRewindPointNotFoundError = CodexForkRewindPointNotFoundError;
|
|
136
|
+
exports.forkCodexBeforeUserMessage = forkCodexBeforeUserMessage;
|
|
137
|
+
exports.forkCodexThread = forkCodexThread;
|
|
138
|
+
exports.listCodexRewindPoints = listCodexRewindPoints;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
class CodexForkRewindPointNotFoundError extends Error {
|
|
2
|
+
constructor(itemId, threadId) {
|
|
3
|
+
super(`Codex rewind point ${itemId} not found in thread ${threadId}`);
|
|
4
|
+
this.itemId = itemId;
|
|
5
|
+
this.threadId = threadId;
|
|
6
|
+
this.name = "CodexForkRewindPointNotFoundError";
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
function hasUserAttachments(item) {
|
|
10
|
+
const content = item.content;
|
|
11
|
+
return Array.isArray(content) && content.some((part) => !part || typeof part !== "object" || part.type !== "text" || typeof part.text === "string" && part.text.includes("<attached_files>"));
|
|
12
|
+
}
|
|
13
|
+
function rejectAttachedTarget(thread, itemId) {
|
|
14
|
+
const item = thread.turns?.flatMap((turn) => turn.items ?? []).find((item2) => item2.id === itemId);
|
|
15
|
+
if (item && hasUserAttachments(item)) throw new Error("Cannot edit and rerun a message with attachments");
|
|
16
|
+
}
|
|
17
|
+
function textFromUserItem(item) {
|
|
18
|
+
if (item.type !== "userMessage") {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const content = item.content;
|
|
22
|
+
if (!Array.isArray(content)) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const textParts = content.filter((part) => Boolean(part) && typeof part === "object" && part.type === "text" && typeof part.text === "string").map((part) => part.text).join("\n").trim();
|
|
26
|
+
return textParts.length > 0 ? textParts : null;
|
|
27
|
+
}
|
|
28
|
+
function timestampFromTurn(turn) {
|
|
29
|
+
const seconds = turn.startedAt ?? turn.completedAt;
|
|
30
|
+
return typeof seconds === "number" && Number.isFinite(seconds) ? seconds * 1e3 : Date.now();
|
|
31
|
+
}
|
|
32
|
+
function listCodexRewindPoints(thread) {
|
|
33
|
+
const points = [];
|
|
34
|
+
for (const turn of thread.turns ?? []) {
|
|
35
|
+
for (const item of turn.items ?? []) {
|
|
36
|
+
const text = textFromUserItem(item);
|
|
37
|
+
if (!text) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
points.push({
|
|
41
|
+
itemId: item.id,
|
|
42
|
+
text,
|
|
43
|
+
...hasUserAttachments(item) ? { hasAttachments: true } : {},
|
|
44
|
+
timestamp: timestampFromTurn(turn)
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return points;
|
|
49
|
+
}
|
|
50
|
+
function findCutTurn(thread, itemId) {
|
|
51
|
+
const turns = thread.turns ?? [];
|
|
52
|
+
for (let index = 0; index < turns.length; index++) {
|
|
53
|
+
const turn = turns[index];
|
|
54
|
+
const item = (turn.items ?? []).find((candidate) => candidate.id === itemId);
|
|
55
|
+
if (!item) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const text = textFromUserItem(item);
|
|
59
|
+
if (text) {
|
|
60
|
+
return { index, text };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
async function forkCodexThread(client, opts) {
|
|
66
|
+
const forked = await client.forkThread({
|
|
67
|
+
threadId: opts.threadId,
|
|
68
|
+
...opts.cwd ? { cwd: opts.cwd } : {},
|
|
69
|
+
...opts.model ? { model: opts.model } : {},
|
|
70
|
+
...opts.approvalPolicy ? { approvalPolicy: opts.approvalPolicy } : {},
|
|
71
|
+
...opts.sandbox ? { sandbox: opts.sandbox } : {},
|
|
72
|
+
...opts.mcpServers ? { mcpServers: opts.mcpServers } : {}
|
|
73
|
+
});
|
|
74
|
+
if (opts.cutAfterItemId) {
|
|
75
|
+
const cutTurn = findCutTurn(forked.thread, opts.cutAfterItemId);
|
|
76
|
+
if (!cutTurn) {
|
|
77
|
+
throw new CodexForkRewindPointNotFoundError(opts.cutAfterItemId, opts.threadId);
|
|
78
|
+
}
|
|
79
|
+
const turns = forked.thread.turns ?? [];
|
|
80
|
+
const turnsToDrop = turns.length - cutTurn.index;
|
|
81
|
+
if (turnsToDrop > 0) {
|
|
82
|
+
await client.rollbackThread({
|
|
83
|
+
threadId: forked.threadId,
|
|
84
|
+
numTurns: turnsToDrop
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
await client.injectItems({
|
|
88
|
+
threadId: forked.threadId,
|
|
89
|
+
items: [{
|
|
90
|
+
type: "message",
|
|
91
|
+
role: "user",
|
|
92
|
+
content: [{ type: "input_text", text: cutTurn.text }]
|
|
93
|
+
}]
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
type: "success",
|
|
98
|
+
newCodexThreadId: forked.threadId
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
async function forkCodexBeforeUserMessage(client, opts) {
|
|
102
|
+
const { thread: source } = await client.readThread({ threadId: opts.threadId, includeTurns: true });
|
|
103
|
+
rejectAttachedTarget(source, opts.cutBeforeItemId);
|
|
104
|
+
const sourceCut = findCutTurn(source, opts.cutBeforeItemId);
|
|
105
|
+
if (!sourceCut) throw new CodexForkRewindPointNotFoundError(opts.cutBeforeItemId, opts.threadId);
|
|
106
|
+
if ((source.turns?.[sourceCut.index].items ?? []).findIndex((item) => item.id === opts.cutBeforeItemId) !== 0) {
|
|
107
|
+
throw new Error("Cannot safely rewind a user message inside an existing turn");
|
|
108
|
+
}
|
|
109
|
+
if (sourceCut.index === 0) return { type: "success", startFresh: true };
|
|
110
|
+
const forked = await client.forkThread({ threadId: opts.threadId, cwd: opts.cwd });
|
|
111
|
+
if (forked.threadId === opts.threadId) throw new Error("Codex did not create an independent fork");
|
|
112
|
+
rejectAttachedTarget(forked.thread, opts.cutBeforeItemId);
|
|
113
|
+
const cut = findCutTurn(forked.thread, opts.cutBeforeItemId);
|
|
114
|
+
if (!cut) throw new CodexForkRewindPointNotFoundError(opts.cutBeforeItemId, opts.threadId);
|
|
115
|
+
const turns = forked.thread.turns ?? [];
|
|
116
|
+
const items = turns[cut.index].items ?? [];
|
|
117
|
+
if (items.findIndex((item) => item.id === opts.cutBeforeItemId) !== 0) {
|
|
118
|
+
throw new Error("Cannot safely rewind a user message inside an existing turn");
|
|
119
|
+
}
|
|
120
|
+
if (cut.index === 0) return { type: "success", startFresh: true };
|
|
121
|
+
const expectedTurnIds = turns.slice(0, cut.index).map((turn) => turn.id);
|
|
122
|
+
const { thread } = await client.rollbackThread({
|
|
123
|
+
threadId: forked.threadId,
|
|
124
|
+
numTurns: turns.length - cut.index
|
|
125
|
+
});
|
|
126
|
+
const remaining = thread.turns ?? [];
|
|
127
|
+
if (remaining.length !== cut.index || remaining.some((turn, index) => turn.id !== expectedTurnIds[index])) {
|
|
128
|
+
throw new Error("Codex rollback did not preserve the expected history");
|
|
129
|
+
}
|
|
130
|
+
return { type: "success", newCodexThreadId: forked.threadId };
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export { CodexForkRewindPointNotFoundError as C, forkCodexBeforeUserMessage as a, forkCodexThread as f, listCodexRewindPoints as l };
|
|
@@ -2,15 +2,15 @@ import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
|
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
import { homedir } from 'os';
|
|
4
4
|
import { execSync } from 'child_process';
|
|
5
|
-
import { l as logger } from './logger-
|
|
5
|
+
import { l as logger } from './logger-BIzr7JN0.mjs';
|
|
6
6
|
import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './constants-BC4St0xd.mjs';
|
|
7
7
|
import 'chalk';
|
|
8
8
|
import 'node:util';
|
|
9
|
-
import './configuration-
|
|
9
|
+
import './configuration-B0c-OP_h.mjs';
|
|
10
10
|
import 'node:fs';
|
|
11
11
|
import 'node:os';
|
|
12
12
|
import 'node:path';
|
|
13
|
-
import './package-
|
|
13
|
+
import './package-D-W_r_pd.mjs';
|
|
14
14
|
import 'node:fs/promises';
|
|
15
15
|
import './trimIdent-BAjmv_TG.mjs';
|
|
16
16
|
|
|
@@ -4,15 +4,15 @@ var fs = require('fs');
|
|
|
4
4
|
var path = require('path');
|
|
5
5
|
var os = require('os');
|
|
6
6
|
var child_process = require('child_process');
|
|
7
|
-
var logger = require('./logger-
|
|
7
|
+
var logger = require('./logger-Ca5eRZ2j.cjs');
|
|
8
8
|
var constants = require('./constants-VJ0N6WuG.cjs');
|
|
9
9
|
require('chalk');
|
|
10
10
|
require('node:util');
|
|
11
|
-
require('./configuration-
|
|
11
|
+
require('./configuration-CepfrPZ_.cjs');
|
|
12
12
|
require('node:fs');
|
|
13
13
|
require('node:os');
|
|
14
14
|
require('node:path');
|
|
15
|
-
require('./package-
|
|
15
|
+
require('./package-BfnmIH4b.cjs');
|
|
16
16
|
require('node:fs/promises');
|
|
17
17
|
require('./trimIdent-4gvk9Wk6.cjs');
|
|
18
18
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { mkdirSync, chmodSync, readdirSync, statSync, appendFileSync, writeFileSync, existsSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import { p as packageJson } from './package-
|
|
4
|
+
import { p as packageJson } from './package-D-W_r_pd.mjs';
|
|
5
5
|
import { mkdir, chmod, writeFile } from 'node:fs/promises';
|
|
6
6
|
|
|
7
7
|
const PRIVATE_DIRECTORY_MODE = 448;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var node_fs = require('node:fs');
|
|
4
4
|
var os = require('node:os');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var _package = require('./package-
|
|
6
|
+
var _package = require('./package-BfnmIH4b.cjs');
|
|
7
7
|
var promises = require('node:fs/promises');
|
|
8
8
|
|
|
9
9
|
const PRIVATE_DIRECTORY_MODE = 448;
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var os = require('os');
|
|
5
5
|
var path = require('path');
|
|
6
|
-
var persistence = require('./persistence-
|
|
7
|
-
var api = require('./api-
|
|
8
|
-
var configuration = require('./configuration-
|
|
6
|
+
var persistence = require('./persistence-Ceb-BPk6.cjs');
|
|
7
|
+
var api = require('./api-DGFBAPr7.cjs');
|
|
8
|
+
var configuration = require('./configuration-CepfrPZ_.cjs');
|
|
9
9
|
var http = require('http');
|
|
10
10
|
var crypto = require('crypto');
|
|
11
|
-
var browser = require('./browser-
|
|
11
|
+
var browser = require('./browser-lizgdXYj.cjs');
|
|
12
12
|
var child_process = require('child_process');
|
|
13
13
|
var util = require('util');
|
|
14
14
|
require('node:fs/promises');
|
|
@@ -17,28 +17,28 @@ require('zod');
|
|
|
17
17
|
require('./authRelay-BdYkC1Po.cjs');
|
|
18
18
|
require('node:crypto');
|
|
19
19
|
require('tweetnacl');
|
|
20
|
-
require('./logger-
|
|
20
|
+
require('./logger-Ca5eRZ2j.cjs');
|
|
21
21
|
require('node:util');
|
|
22
22
|
require('node:path');
|
|
23
23
|
require('node:os');
|
|
24
|
-
require('./package-
|
|
24
|
+
require('./package-BfnmIH4b.cjs');
|
|
25
25
|
require('axios');
|
|
26
26
|
require('node:events');
|
|
27
27
|
require('socket.io-client');
|
|
28
|
-
require('./attachmentLimits-
|
|
29
|
-
require('./index-
|
|
28
|
+
require('./attachmentLimits-DzlBPyJP.cjs');
|
|
29
|
+
require('./index-DJ-oV52i.cjs');
|
|
30
30
|
require('@paralleldrive/cuid2');
|
|
31
31
|
require('./limits-C-a7gr04.cjs');
|
|
32
|
-
require('./time-
|
|
33
|
-
require('./lidState-
|
|
34
|
-
require('./registerCommonHandlers-
|
|
32
|
+
require('./time-xNkWLTSj.cjs');
|
|
33
|
+
require('./lidState-BGWXfx1e.cjs');
|
|
34
|
+
require('./registerCommonHandlers-DPOHFlxp.cjs');
|
|
35
35
|
require('fs/promises');
|
|
36
36
|
require('cross-spawn');
|
|
37
37
|
require('./projectPath-ChLhdOyt.cjs');
|
|
38
38
|
require('url');
|
|
39
|
-
require('./sync-
|
|
39
|
+
require('./sync-fDRF_nO1.cjs');
|
|
40
40
|
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
41
|
-
require('./controlClient-
|
|
41
|
+
require('./controlClient-HPMsyxLb.cjs');
|
|
42
42
|
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
43
43
|
require('open');
|
|
44
44
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { homedir } from 'os';
|
|
3
3
|
import { join } from 'path';
|
|
4
|
-
import { readCredentialsForConfiguredRelay } from './persistence-
|
|
5
|
-
import { A as ApiClient } from './api-
|
|
6
|
-
import { f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-
|
|
4
|
+
import { readCredentialsForConfiguredRelay } from './persistence-DgBhXxu7.mjs';
|
|
5
|
+
import { A as ApiClient } from './api-D5kfP3JF.mjs';
|
|
6
|
+
import { f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-B0c-OP_h.mjs';
|
|
7
7
|
import { createServer } from 'http';
|
|
8
8
|
import { randomBytes, createHash } from 'crypto';
|
|
9
|
-
import { o as openBrowser } from './browser-
|
|
9
|
+
import { o as openBrowser } from './browser-DU9kI-Q-.mjs';
|
|
10
10
|
import { exec } from 'child_process';
|
|
11
11
|
import { promisify } from 'util';
|
|
12
12
|
import 'node:fs/promises';
|
|
@@ -15,28 +15,28 @@ import 'zod';
|
|
|
15
15
|
import './authRelay-DSAvg1uv.mjs';
|
|
16
16
|
import 'node:crypto';
|
|
17
17
|
import 'tweetnacl';
|
|
18
|
-
import './logger-
|
|
18
|
+
import './logger-BIzr7JN0.mjs';
|
|
19
19
|
import 'node:util';
|
|
20
20
|
import 'node:path';
|
|
21
21
|
import 'node:os';
|
|
22
|
-
import './package-
|
|
22
|
+
import './package-D-W_r_pd.mjs';
|
|
23
23
|
import 'axios';
|
|
24
24
|
import 'node:events';
|
|
25
25
|
import 'socket.io-client';
|
|
26
|
-
import './attachmentLimits-
|
|
27
|
-
import './index-
|
|
26
|
+
import './attachmentLimits-D5pgmASK.mjs';
|
|
27
|
+
import './index-BBg9j0XK.mjs';
|
|
28
28
|
import '@paralleldrive/cuid2';
|
|
29
29
|
import './limits-DIo7rEBR.mjs';
|
|
30
|
-
import './time-
|
|
31
|
-
import './lidState-
|
|
32
|
-
import './registerCommonHandlers-
|
|
30
|
+
import './time-TxDyvAKk.mjs';
|
|
31
|
+
import './lidState-X7iQg4y5.mjs';
|
|
32
|
+
import './registerCommonHandlers-t15dS7xt.mjs';
|
|
33
33
|
import 'fs/promises';
|
|
34
34
|
import 'cross-spawn';
|
|
35
35
|
import './projectPath-BTBIMB57.mjs';
|
|
36
36
|
import 'url';
|
|
37
|
-
import './sync-
|
|
37
|
+
import './sync-DnmsgL3w.mjs';
|
|
38
38
|
import './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
39
|
-
import './controlClient-
|
|
39
|
+
import './controlClient-BKmjlbGs.mjs';
|
|
40
40
|
import './contentLogMetadata-BlWI0egu.mjs';
|
|
41
41
|
import 'open';
|
|
42
42
|
|
|
@@ -5,7 +5,7 @@ var node_fs = require('node:fs');
|
|
|
5
5
|
var path = require('node:path');
|
|
6
6
|
var node_crypto = require('node:crypto');
|
|
7
7
|
var z = require('zod');
|
|
8
|
-
var configuration = require('./configuration-
|
|
8
|
+
var configuration = require('./configuration-CepfrPZ_.cjs');
|
|
9
9
|
|
|
10
10
|
const TeamScopeSchema = z.z.object({
|
|
11
11
|
serverUrl: z.z.string(),
|
|
@@ -3,7 +3,7 @@ import { constants } from 'node:fs';
|
|
|
3
3
|
import { isAbsolute, join, dirname } from 'node:path';
|
|
4
4
|
import { randomUUID } from 'node:crypto';
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
-
import { n as normalizeHttpEndpoint, c as configuration } from './configuration-
|
|
6
|
+
import { n as normalizeHttpEndpoint, c as configuration } from './configuration-B0c-OP_h.mjs';
|
|
7
7
|
|
|
8
8
|
const TeamScopeSchema = z.object({
|
|
9
9
|
serverUrl: z.string(),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { l as logger } from './logger-
|
|
2
|
-
import { readDaemonState, clearDaemonState } from './persistence-
|
|
3
|
-
import { c as configuration } from './configuration-
|
|
1
|
+
import { l as logger } from './logger-BIzr7JN0.mjs';
|
|
2
|
+
import { readDaemonState, clearDaemonState } from './persistence-DgBhXxu7.mjs';
|
|
3
|
+
import { c as configuration } from './configuration-B0c-OP_h.mjs';
|
|
4
4
|
|
|
5
5
|
function daemonControlHeaders(controlToken) {
|
|
6
6
|
return {
|