very-happy-cli 0.2.160 → 0.2.162
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-mzv8Dhba.mjs → AcpBackend--TmFHgRH.mjs} +3 -3
- package/dist/{AcpBackend-Bm2rdke8.cjs → AcpBackend-9asD_DL7.cjs} +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-CFHAxumV.cjs → BasePermissionHandler-D4B-NNu2.cjs} +1 -1
- package/dist/{BasePermissionHandler-m3WVholL.mjs → BasePermissionHandler-DUBySe0f.mjs} +1 -1
- package/dist/{BaseReasoningProcessor-CYrKBXGm.mjs → BaseReasoningProcessor-9TybUGTq.mjs} +1 -1
- package/dist/{BaseReasoningProcessor-BFa9_rZA.cjs → BaseReasoningProcessor-CqLl-ikP.cjs} +1 -1
- package/dist/{agentHome-CboCeKWq.cjs → agentHome-BohNUYnE.cjs} +4 -4
- package/dist/{agentHome-Dj1C43aJ.mjs → agentHome-DQrq_FG1.mjs} +4 -4
- package/dist/{api-CgundNNX.cjs → api-CQnLOqRS.cjs} +10 -10
- package/dist/{api-CLMUr-SX.mjs → api-D57dsd6_.mjs} +10 -10
- package/dist/{apiMachine-B9dLW_p5.mjs → apiMachine-78Aqzg--.mjs} +21 -14
- package/dist/{apiMachine-Bn8482VM.cjs → apiMachine-fFFaWxYy.cjs} +33 -26
- package/dist/{assistantTools-BTqPnlFl.cjs → assistantTools-CwESq24n.cjs} +6 -6
- package/dist/{assistantTools-D6tuc6o4.mjs → assistantTools-mEz6uNqL.mjs} +6 -6
- package/dist/{attachmentContent-DpiTJZb4.cjs → attachmentContent-GHOk6Muq.cjs} +2 -2
- package/dist/{attachmentContent-_kxRznNf.mjs → attachmentContent-s1xPha4Q.mjs} +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-BDOVh5h5.cjs → auth-B8EagV6G.cjs} +8 -8
- package/dist/{auth-PYHZQNPp.mjs → auth-BOaHWquu.mjs} +8 -8
- package/dist/{auth-ba4WMYrN.cjs → auth-BbSdXMQ_.cjs} +5 -5
- package/dist/{auth-Cwutmdsa.mjs → auth-C8V7-oUT.mjs} +5 -5
- package/dist/{auto-BOX_fgmR.cjs → auto-Bw_h0yVc.cjs} +15 -14
- package/dist/{auto-BXu14yP_.mjs → auto-CWDOX35m.mjs} +15 -14
- package/dist/{bootstrap-hxXPCFMx.mjs → bootstrap-BKmsYSwh.mjs} +2 -2
- package/dist/{bootstrap-B5G1TijC.cjs → bootstrap-DvZjEa9_.cjs} +2 -2
- package/dist/{browser-Y6Bl8L_O.cjs → browser-CBZj-1Wx.cjs} +1 -1
- package/dist/{browser-jh2P0UVZ.mjs → browser-CrMAr5fI.mjs} +1 -1
- package/dist/{claudeLocal-CRGG4Pea.cjs → claudeLocal-Bpw-u9et.cjs} +5 -5
- package/dist/{claudeLocal-BaY4fZKi.mjs → claudeLocal-dhdlcQ6F.mjs} +5 -5
- package/dist/{claudeLocalLauncher-D4T7MTqd.mjs → claudeLocalLauncher-BFfGT4eY.mjs} +10 -10
- package/dist/{claudeLocalLauncher-DyEbVzUN.cjs → claudeLocalLauncher-DWFWuLhY.cjs} +10 -10
- package/dist/{codexThreadFork-BH9IZPqD.cjs → claudeSessionFork-D9-mANmu.cjs} +1 -137
- package/dist/{codexThreadFork-slzAseLx.mjs → claudeSessionFork-_DUrXaqd.mjs} +2 -134
- package/dist/{client-BPNbmtvO.cjs → client-CVQJWqjx.cjs} +2 -2
- package/dist/{client-3Ac-O4pw.cjs → client-DiBTHWNU.cjs} +3 -3
- package/dist/{client-CeGKqqcJ.mjs → client-Dk7x-s-O.mjs} +3 -3
- package/dist/{client-ClR0K8zX.mjs → client-DwqHDsLb.mjs} +2 -2
- package/dist/codex/happyMcpStdioBridge.cjs +15 -15
- package/dist/codex/happyMcpStdioBridge.mjs +15 -15
- package/dist/{codexAppServerClient-I3teiV-N.mjs → codexAppServerClient-C2ybs2mZ.mjs} +2 -2
- package/dist/{codexAppServerClient-q2FjnRcK.cjs → codexAppServerClient-DlKv5TjG.cjs} +2 -2
- package/dist/{codexCommand-4zcccIoq.cjs → codexCommand-4vLE31fj.cjs} +45 -40
- package/dist/{codexCommand-Cc9gcbdX.mjs → codexCommand-DnmFr9Qx.mjs} +45 -40
- package/dist/codexThreadFork-DNekT4nQ.cjs +138 -0
- package/dist/codexThreadFork-R76RU5H0.mjs +133 -0
- package/dist/{config-Ci9Kpgwa.cjs → config-Btd4B05_.cjs} +3 -3
- package/dist/{config-CTx_jb-C.mjs → config-CSOG_ZcP.mjs} +3 -3
- package/dist/{configuration-RfeNjFmd.mjs → configuration-A5gW_0GE.mjs} +1 -1
- package/dist/{configuration-BSYpcPwE.cjs → configuration-UsI0sxEv.cjs} +1 -1
- package/dist/{connect-C2CiOUFs.cjs → connect-C9yxp8Om.cjs} +13 -13
- package/dist/{connect-BpOdzNbE.mjs → connect-DWYj8LP_.mjs} +13 -13
- package/dist/{context-DsDr6E2t.cjs → context-0FjjA4vJ.cjs} +1 -1
- package/dist/{context-H0Bcb9S_.mjs → context-BXnxalWW.mjs} +1 -1
- package/dist/{controlClient-Bcwv3D21.cjs → controlClient-BXktrQ4z.cjs} +3 -3
- package/dist/{controlClient-BGbDcgWS.mjs → controlClient-CYzHrh3e.mjs} +3 -3
- package/dist/{createSessionMetadata-CVVkGjxV.mjs → createSessionMetadata-Dyg33ZlU.mjs} +2 -2
- package/dist/{createSessionMetadata-BJxEnM-o.cjs → createSessionMetadata-EX1eAlHx.cjs} +2 -2
- package/dist/{deterministicJson-CzkFJWw1.mjs → deterministicJson-DiR7EOMO.mjs} +9 -9
- package/dist/{deterministicJson-C5CYTVpm.cjs → deterministicJson-eha_oMZ2.cjs} +9 -9
- package/dist/{doctor-D2YJ-Yn2.cjs → doctor-DunLBgVi.cjs} +6 -6
- package/dist/{doctor-DOvByjbk.mjs → doctor-FuCvKdRa.mjs} +6 -6
- package/dist/{ensureDaemonRunning-BCwNrMyv.cjs → ensureDaemonRunning-B4dZFmUy.cjs} +5 -5
- package/dist/{ensureDaemonRunning-Dqa2pOjY.mjs → ensureDaemonRunning-EZkb-CAF.mjs} +5 -5
- package/dist/{handleResumeCommand-C2cKchpX.cjs → handleResumeCommand-CKMIw4pE.cjs} +5 -5
- package/dist/{handleResumeCommand-BvXYf5El.mjs → handleResumeCommand-CsXendKb.mjs} +5 -5
- package/dist/{index-DMZqWwsP.mjs → index-9L39wqYR.mjs} +37 -37
- package/dist/{index-qdS1friN.mjs → index-BBg9j0XK.mjs} +8 -1
- package/dist/{index-B6pAdvJx.cjs → index-BOhgL3rh.cjs} +36 -36
- package/dist/{index-Bu5Zi_a9.cjs → index-CZWAiydF.cjs} +4 -4
- package/dist/{index-DVkMGPyS.mjs → index-CvXcVQ06.mjs} +3 -3
- package/dist/{index-DA7yINuk.cjs → index-DJ-oV52i.cjs} +8 -1
- package/dist/{index-DKLU_fD0.mjs → index-DK2JpTJf.mjs} +4 -4
- package/dist/{index-DDeHXrIX.cjs → index-DRhWHEuW.cjs} +3 -3
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-CFY3tYtJ.mjs → install-B2duVo9a.mjs} +3 -3
- package/dist/{install-BgoC2e_2.cjs → install-C8WyZI9K.cjs} +3 -3
- package/dist/lib.cjs +12 -12
- package/dist/lib.d.cts +5 -0
- package/dist/lib.d.mts +5 -0
- package/dist/lib.mjs +12 -12
- package/dist/{lidState-CeEt442o.mjs → lidState-CigXWxhe.mjs} +1 -1
- package/dist/{lidState-BeDfxxEX.cjs → lidState-Ds-6ytZV.cjs} +1 -1
- package/dist/{localHappyAgentAuth-C-HQyiv6.mjs → localHappyAgentAuth-CaCyKzYp.mjs} +1 -1
- package/dist/{localHappyAgentAuth-D6rFhaoc.cjs → localHappyAgentAuth-l0Na-5Ys.cjs} +1 -1
- package/dist/{logger-CS0mw3fa.cjs → logger-7ucWm9wp.cjs} +2 -2
- package/dist/{logger-6HYUEXNk.mjs → logger-CGE4C8ho.mjs} +2 -2
- package/dist/{machineMetadata-DyDbODYd.cjs → machineMetadata-lMPtpF16.cjs} +3 -3
- package/dist/{machineMetadata-oOzBfDfs.mjs → machineMetadata-ue1nkowa.mjs} +3 -3
- package/dist/{main-BwNIAI1A.mjs → main-3fIFXD-t.mjs} +44 -44
- package/dist/{main-BkxJP6JQ.cjs → main-CFI0datL.cjs} +44 -44
- package/dist/{mcp-B1A4I3TK.mjs → mcp-DARQBZ7l.mjs} +14 -14
- package/dist/{mcp-Hszd7qpS.cjs → mcp-DfxLAc1G.cjs} +14 -14
- package/dist/{package-BwMrPwqH.cjs → package-D1A-8ZJy.cjs} +7 -7
- package/dist/{package-BhaKlnxz.mjs → package-DQsvY1XN.mjs} +7 -7
- package/dist/{peerTools-BTqw97Gb.mjs → peerTools-D19hhSQF.mjs} +4 -4
- package/dist/{peerTools-BvKtHXj8.cjs → peerTools-DLwNaEEV.cjs} +4 -4
- package/dist/{permissionMode-Cr5JCbB7.mjs → permissionMode-CH4FoZfU.mjs} +1 -1
- package/dist/{persistence-HGW_ZVs9.mjs → persistence-Cw8aLoyL.mjs} +3 -3
- package/dist/{persistence-yKTH3-5X.cjs → persistence-i0nQMLlk.cjs} +3 -3
- package/dist/{piRunnerArgs-BuX1UFWy.mjs → piRunnerArgs-58t454gw.mjs} +1 -1
- package/dist/{piRunnerArgs-BNloJCCg.cjs → piRunnerArgs-BUyxPxjZ.cjs} +1 -1
- package/dist/{piRuntime-CSGkwCKQ.mjs → piRuntime-DVPixFjl.mjs} +1 -1
- package/dist/{piRuntime-C_H7MJCM.cjs → piRuntime-Dff73XCb.cjs} +1 -1
- package/dist/{piTerminal-DNCZ6yTM.cjs → piTerminal-Dz1RrO70.cjs} +16 -16
- package/dist/{piTerminal-C8a1OrNQ.mjs → piTerminal-gHWFAyzq.mjs} +16 -16
- package/dist/{registerCommonHandlers-DskirN-_.cjs → registerCommonHandlers-CMROPdJz.cjs} +2 -2
- package/dist/{registerCommonHandlers-Ccvsz7Ou.mjs → registerCommonHandlers-Ckv5boQI.mjs} +2 -2
- package/dist/{registerKillSessionHandler-DZeLXWcB.cjs → registerKillSessionHandler-CA9-oelM.cjs} +19 -10
- package/dist/{registerKillSessionHandler-GYvHdipX.mjs → registerKillSessionHandler-Cll4-o8Y.mjs} +19 -10
- package/dist/{remoteSessionClient-CYnXRynE.mjs → remoteSessionClient-BMjsbuBh.mjs} +5 -5
- package/dist/{remoteSessionClient-B0LraSB9.cjs → remoteSessionClient-DX9jHLeW.cjs} +5 -5
- package/dist/{run-CJzxoHVh.cjs → run-CjbGo2wb.cjs} +36 -32
- package/dist/{run-D3ifupU3.mjs → run-CrunzDlt.mjs} +35 -31
- package/dist/{runClaude-Da3RirzE.cjs → runClaude-KN-4Y4LH.cjs} +184 -140
- package/dist/{runClaude-Ba01qT-u.mjs → runClaude-WDBWRtnF.mjs} +185 -141
- package/dist/{runClaudeDeps-DOzEBMls.cjs → runClaudeDeps-DW-8lnHv.cjs} +821 -125
- package/dist/{runClaudeDeps-DOt79DjU.mjs → runClaudeDeps-QaEx8y5r.mjs} +811 -129
- package/dist/{runGemini-DSr9LIxL.cjs → runGemini-Djmwjdv1.cjs} +32 -32
- package/dist/{runGemini-BGeTz57m.mjs → runGemini-Nf6SKBpw.mjs} +32 -32
- package/dist/{runOpenClaw-CogSedIc.mjs → runOpenClaw-9nHtmYbN.mjs} +18 -18
- package/dist/{runOpenClaw-B1mTxN35.cjs → runOpenClaw-CAqP5KFH.cjs} +18 -18
- package/dist/{sandbox-CG7IyDTU.cjs → sandbox-C8Dd8GPM.cjs} +4 -4
- package/dist/{sandbox-DTe6d54R.mjs → sandbox-SP0THMt0.mjs} +4 -4
- package/dist/selfCheck-7FaZtVu2.mjs +84 -0
- package/dist/{selfCheck-Dc-mNSLb.cjs → selfCheck-D9ZXrK7h.cjs} +34 -34
- package/dist/{send-CBXJKc6O.mjs → send-DOx9aQsx.mjs} +8 -8
- package/dist/{send-B7J_eaG3.cjs → send-LPk6Q5HI.cjs} +8 -8
- package/dist/{server-DcVBv04l.mjs → server-BZNi8Hq_.mjs} +4 -4
- package/dist/{server-CZTP_iOn.cjs → server-CxT8jNyn.cjs} +6 -6
- package/dist/{sessionLock-D-EG2CfG.mjs → sessionLock-CfLqJfeI.mjs} +2 -2
- package/dist/{sessionLock-Bys1PNSo.cjs → sessionLock-y9rnA4LK.cjs} +2 -2
- package/dist/{sessionModeFile-RSm0NQkH.cjs → sessionModeFile-B5YeoQJh.cjs} +1 -1
- package/dist/{sessionModeFile-DMl3dw3r.mjs → sessionModeFile-BKxgNH3P.mjs} +1 -1
- package/dist/{sessionOps-SuHW8Dfe.mjs → sessionOps-CdwVPSZz.mjs} +4 -4
- package/dist/{sessionOps-Dn8z85h_.cjs → sessionOps-GsELm2PZ.cjs} +4 -4
- package/dist/{sessionScanner-CX3onqXh.mjs → sessionScanner-Cdukzo70.mjs} +3 -3
- package/dist/{sessionScanner-BOrGjMXL.cjs → sessionScanner-aLEv7mD3.cjs} +3 -3
- package/dist/{sessions-D74aJbhL.cjs → sessions-CfG4WGN0.cjs} +9 -9
- package/dist/{sessions-BEG_HTSi.mjs → sessions-Dne-OiRL.mjs} +9 -9
- package/dist/{setupOfflineReconnection-ByElY60m.cjs → setupOfflineReconnection-CFwltTcP.cjs} +2 -2
- package/dist/{setupOfflineReconnection-DpvWTt69.mjs → setupOfflineReconnection-DiQma2Cc.mjs} +2 -2
- package/dist/{spawn-DgR0RKRs.cjs → spawn-BI_sdgWs.cjs} +24 -15
- package/dist/{spawn-B7yro0b2.mjs → spawn-DkgP2BGF.mjs} +22 -14
- package/dist/{spawnAgents-DZzZ9jMI.mjs → spawnAgents-Y1LjnCt9.mjs} +1 -1
- package/dist/{spawnAgents-BGQiEF-w.cjs → spawnAgents-iSu1Xzs5.cjs} +1 -1
- package/dist/{spawnHappyCLI-B2H5s4B_.mjs → spawnHappyCLI-9mx4lPxh.mjs} +1 -1
- package/dist/{spawnHappyCLI-DBhwZT7O.cjs → spawnHappyCLI-BRdx0sAX.cjs} +1 -1
- package/dist/{startFileWatcher-B4VsLgjD.cjs → startFileWatcher-C2HC2_Dg.cjs} +1 -1
- package/dist/{startFileWatcher-DErVWZE4.mjs → startFileWatcher-COD5UKNs.mjs} +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-C8gyQFMc.mjs → sync-BpLasLu2.mjs} +1 -1
- package/dist/{sync-DccIKZ5_.cjs → sync-Dj92ZJ8Y.cjs} +1 -1
- package/dist/{systemPrompt-BwTPWfMu.cjs → systemPrompt-CyEz_IfR.cjs} +2 -2
- package/dist/{systemPrompt-DX521JJz.mjs → systemPrompt-DsQoUgQw.mjs} +2 -2
- package/dist/{teams-C32F1hqd.mjs → teams-BETNMjpZ.mjs} +6 -6
- package/dist/{teams-Dl8g8kTI.cjs → teams-Ctx9zXn4.cjs} +6 -6
- package/dist/{time-DCuTyook.cjs → time-CLwVAz6s.cjs} +1 -1
- package/dist/{time-D0XyHOid.mjs → time-CVvxdEDh.mjs} +1 -1
- package/dist/{titleGenerator-CQ8CoGhg.mjs → titleGenerator-B4AW3dLr.mjs} +12 -2
- package/dist/{titleGenerator-ChzMJsyg.cjs → titleGenerator-FDpdizn7.cjs} +13 -3
- package/dist/{todo-BvUOTa8G.cjs → todo-C3tyFeq1.cjs} +6 -6
- package/dist/{todo-CZ6cFrrn.mjs → todo-Jk4Vs7hP.mjs} +6 -6
- package/dist/{tools-BZtHF_qQ.mjs → tools-BA1qkiV1.mjs} +2 -2
- package/dist/{tools-DQj0AeLk.cjs → tools-CGxq3I52.cjs} +2 -2
- package/dist/{tools-Be3AoAwu.cjs → tools-O5beDK-s.cjs} +1 -1
- package/dist/{tools-DkluDcG4.mjs → tools-_kFe4m_l.mjs} +1 -1
- package/dist/{uninstall-BkLzaJ6I.mjs → uninstall-C_mdAZlm.mjs} +3 -3
- package/dist/{uninstall-x-TUtf5H.cjs → uninstall-DHKF90lo.cjs} +3 -3
- package/package.json +7 -7
- package/scripts/session_hook_forwarder.cjs +9 -2
- package/dist/selfCheck-C9mVrQwf.mjs +0 -84
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var authRelay = require('./authRelay-BdYkC1Po.cjs');
|
|
4
|
-
var configuration = require('./configuration-
|
|
4
|
+
var configuration = require('./configuration-UsI0sxEv.cjs');
|
|
5
5
|
var node_crypto = require('node:crypto');
|
|
6
6
|
var tweetnacl = require('tweetnacl');
|
|
7
7
|
var axios = require('axios');
|
|
8
|
-
var time = require('./time-
|
|
9
|
-
var persistence = require('./persistence-
|
|
10
|
-
var browser = require('./browser-
|
|
11
|
-
var logger = require('./logger-
|
|
8
|
+
var time = require('./time-CLwVAz6s.cjs');
|
|
9
|
+
var persistence = require('./persistence-i0nQMLlk.cjs');
|
|
10
|
+
var browser = require('./browser-CBZj-1Wx.cjs');
|
|
11
|
+
var logger = require('./logger-7ucWm9wp.cjs');
|
|
12
12
|
|
|
13
13
|
function generateWebAuthUrl(publicKey) {
|
|
14
14
|
const publicKeyBase64 = authRelay.encodeBase64(publicKey, "base64url");
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { e as encodeBase64, c as credentialRelayProblem, f as encodeBase64Url, d as decodeBase64 } from './authRelay-DSAvg1uv.mjs';
|
|
2
|
-
import { c as configuration } from './configuration-
|
|
2
|
+
import { c as configuration } from './configuration-A5gW_0GE.mjs';
|
|
3
3
|
import { randomUUID, randomBytes } from 'node:crypto';
|
|
4
4
|
import tweetnacl from 'tweetnacl';
|
|
5
5
|
import axios from 'axios';
|
|
6
|
-
import { d as delay } from './time-
|
|
7
|
-
import { readCredentials, readSettingsOutcome, updateSettings, writeCredentialsLegacy, writeCredentialsDataKey } from './persistence-
|
|
8
|
-
import { o as openBrowser } from './browser-
|
|
9
|
-
import { l as logger } from './logger-
|
|
6
|
+
import { d as delay } from './time-CVvxdEDh.mjs';
|
|
7
|
+
import { readCredentials, readSettingsOutcome, updateSettings, writeCredentialsLegacy, writeCredentialsDataKey } from './persistence-Cw8aLoyL.mjs';
|
|
8
|
+
import { o as openBrowser } from './browser-CrMAr5fI.mjs';
|
|
9
|
+
import { l as logger } from './logger-CGE4C8ho.mjs';
|
|
10
10
|
|
|
11
11
|
function generateWebAuthUrl(publicKey) {
|
|
12
12
|
const publicKeyBase64 = encodeBase64(publicKey, "base64url");
|
|
@@ -4,40 +4,41 @@ var chalk = require('chalk');
|
|
|
4
4
|
var os = require('node:os');
|
|
5
5
|
var node_fs = require('node:fs');
|
|
6
6
|
var path = require('node:path');
|
|
7
|
-
var index = require('./index-
|
|
8
|
-
var configuration = require('./configuration-
|
|
9
|
-
var client = require('./client-
|
|
7
|
+
var index = require('./index-DJ-oV52i.cjs');
|
|
8
|
+
var configuration = require('./configuration-UsI0sxEv.cjs');
|
|
9
|
+
var client = require('./client-CVQJWqjx.cjs');
|
|
10
10
|
var template = require('./template-BaHAmH2K.cjs');
|
|
11
11
|
var install = require('./install-Cs5qAPrB.cjs');
|
|
12
|
-
var sessionOps = require('./sessionOps-
|
|
13
|
-
var spawn = require('./spawn-
|
|
14
|
-
var spawnAgents = require('./spawnAgents-
|
|
15
|
-
var time = require('./time-
|
|
12
|
+
var sessionOps = require('./sessionOps-GsELm2PZ.cjs');
|
|
13
|
+
var spawn = require('./spawn-BI_sdgWs.cjs');
|
|
14
|
+
var spawnAgents = require('./spawnAgents-iSu1Xzs5.cjs');
|
|
15
|
+
var time = require('./time-CLwVAz6s.cjs');
|
|
16
16
|
require('zod');
|
|
17
17
|
require('@paralleldrive/cuid2');
|
|
18
|
-
require('./package-
|
|
18
|
+
require('./package-D1A-8ZJy.cjs');
|
|
19
19
|
require('node:fs/promises');
|
|
20
|
-
require('./persistence-
|
|
20
|
+
require('./persistence-i0nQMLlk.cjs');
|
|
21
21
|
require('./authRelay-BdYkC1Po.cjs');
|
|
22
22
|
require('node:crypto');
|
|
23
23
|
require('tweetnacl');
|
|
24
|
-
require('./logger-
|
|
24
|
+
require('./logger-7ucWm9wp.cjs');
|
|
25
25
|
require('node:util');
|
|
26
26
|
require('./resources-JDPugcDq.cjs');
|
|
27
27
|
require('axios');
|
|
28
|
-
require('./controlClient-
|
|
28
|
+
require('./controlClient-BXktrQ4z.cjs');
|
|
29
29
|
require('socket.io-client');
|
|
30
30
|
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
31
31
|
require('./path-B7zW-WwE.cjs');
|
|
32
|
-
require('./
|
|
32
|
+
require('./claudeSessionFork-D9-mANmu.cjs');
|
|
33
33
|
require('node:readline');
|
|
34
|
-
require('./codexAppServerClient-
|
|
34
|
+
require('./codexAppServerClient-DlKv5TjG.cjs');
|
|
35
35
|
require('node:child_process');
|
|
36
36
|
require('cross-spawn');
|
|
37
37
|
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
38
38
|
require('./manager-Cly8xVIR.cjs');
|
|
39
39
|
require('@anthropic-ai/sandbox-runtime');
|
|
40
|
-
require('./
|
|
40
|
+
require('./codexThreadFork-DNekT4nQ.cjs');
|
|
41
|
+
require('./createSessionMetadata-EX1eAlHx.cjs');
|
|
41
42
|
require('./projectPath-ChLhdOyt.cjs');
|
|
42
43
|
require('path');
|
|
43
44
|
require('url');
|
|
@@ -2,40 +2,41 @@ import chalk from 'chalk';
|
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { readFileSync } from 'node:fs';
|
|
4
4
|
import { resolve } from 'node:path';
|
|
5
|
-
import { A as AUTOMATION_NAME_PATTERN, i as isAutomationRunTerminal } from './index-
|
|
6
|
-
import { c as configuration } from './configuration-
|
|
7
|
-
import { a as authenticatedAutomationsClient, b as automationRunIdFromEnv, i as isAutomationsUnavailable, A as AUTOMATIONS_UNAVAILABLE_MESSAGE } from './client-
|
|
5
|
+
import { A as AUTOMATION_NAME_PATTERN, i as isAutomationRunTerminal } from './index-BBg9j0XK.mjs';
|
|
6
|
+
import { c as configuration } from './configuration-A5gW_0GE.mjs';
|
|
7
|
+
import { a as authenticatedAutomationsClient, b as automationRunIdFromEnv, i as isAutomationsUnavailable, A as AUTOMATIONS_UNAVAILABLE_MESSAGE } from './client-DwqHDsLb.mjs';
|
|
8
8
|
import { p as parseDuration, t as triggerFromFlags, d as describeTrigger, a as describeAction } from './template-CiOPa2rd.mjs';
|
|
9
9
|
import { A as AUTOMATION_SKILL, i as installAutomationSkill } from './install-BO_W7VhL.mjs';
|
|
10
|
-
import { s as sessionWebUrl } from './sessionOps-
|
|
11
|
-
import { parseEnvAssignment } from './spawn-
|
|
12
|
-
import { S as SPAWN_AGENTS, s as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES } from './spawnAgents-
|
|
13
|
-
import { d as delay } from './time-
|
|
10
|
+
import { s as sessionWebUrl } from './sessionOps-CdwVPSZz.mjs';
|
|
11
|
+
import { parseEnvAssignment } from './spawn-DkgP2BGF.mjs';
|
|
12
|
+
import { S as SPAWN_AGENTS, s as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES } from './spawnAgents-Y1LjnCt9.mjs';
|
|
13
|
+
import { d as delay } from './time-CVvxdEDh.mjs';
|
|
14
14
|
import 'zod';
|
|
15
15
|
import '@paralleldrive/cuid2';
|
|
16
|
-
import './package-
|
|
16
|
+
import './package-DQsvY1XN.mjs';
|
|
17
17
|
import 'node:fs/promises';
|
|
18
|
-
import './persistence-
|
|
18
|
+
import './persistence-Cw8aLoyL.mjs';
|
|
19
19
|
import './authRelay-DSAvg1uv.mjs';
|
|
20
20
|
import 'node:crypto';
|
|
21
21
|
import 'tweetnacl';
|
|
22
|
-
import './logger-
|
|
22
|
+
import './logger-CGE4C8ho.mjs';
|
|
23
23
|
import 'node:util';
|
|
24
24
|
import './resources-BdFBQi8r.mjs';
|
|
25
25
|
import 'axios';
|
|
26
|
-
import './controlClient-
|
|
26
|
+
import './controlClient-CYzHrh3e.mjs';
|
|
27
27
|
import 'socket.io-client';
|
|
28
28
|
import './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
29
29
|
import './path-D2wdaNSk.mjs';
|
|
30
|
-
import './
|
|
30
|
+
import './claudeSessionFork-_DUrXaqd.mjs';
|
|
31
31
|
import 'node:readline';
|
|
32
|
-
import './codexAppServerClient-
|
|
32
|
+
import './codexAppServerClient-C2ybs2mZ.mjs';
|
|
33
33
|
import 'node:child_process';
|
|
34
34
|
import 'cross-spawn';
|
|
35
35
|
import './contentLogMetadata-BlWI0egu.mjs';
|
|
36
36
|
import './manager-BQ4flvQZ.mjs';
|
|
37
37
|
import '@anthropic-ai/sandbox-runtime';
|
|
38
|
-
import './
|
|
38
|
+
import './codexThreadFork-R76RU5H0.mjs';
|
|
39
|
+
import './createSessionMetadata-Dyg33ZlU.mjs';
|
|
39
40
|
import './projectPath-BTBIMB57.mjs';
|
|
40
41
|
import 'path';
|
|
41
42
|
import 'url';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
2
|
import { mkdir, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import { c as configuration } from './configuration-
|
|
4
|
+
import { c as configuration } from './configuration-A5gW_0GE.mjs';
|
|
5
5
|
import 'node:os';
|
|
6
|
-
import './package-
|
|
6
|
+
import './package-DQsvY1XN.mjs';
|
|
7
7
|
|
|
8
8
|
const ASSISTANT_CLAUDE_MD = `# very-happy \u8C03\u5EA6\u4E2D\u5FC3\uFF08\u8BED\u97F3\u52A9\u624B\uFF09
|
|
9
9
|
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
var node_fs = require('node:fs');
|
|
4
4
|
var promises = require('node:fs/promises');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var configuration = require('./configuration-
|
|
6
|
+
var configuration = require('./configuration-UsI0sxEv.cjs');
|
|
7
7
|
require('node:os');
|
|
8
|
-
require('./package-
|
|
8
|
+
require('./package-D1A-8ZJy.cjs');
|
|
9
9
|
|
|
10
10
|
const ASSISTANT_CLAUDE_MD = `# very-happy \u8C03\u5EA6\u4E2D\u5FC3\uFF08\u8BED\u97F3\u52A9\u624B\uFF09
|
|
11
11
|
|
|
@@ -4,21 +4,21 @@ var spawn = require('cross-spawn');
|
|
|
4
4
|
var node_readline = require('node:readline');
|
|
5
5
|
var node_fs = require('node:fs');
|
|
6
6
|
var node_crypto = require('node:crypto');
|
|
7
|
-
var logger = require('./logger-
|
|
7
|
+
var logger = require('./logger-7ucWm9wp.cjs');
|
|
8
8
|
var smallFastModel = require('./smallFastModel-D_uxGMo3.cjs');
|
|
9
9
|
var path$1 = require('node:path');
|
|
10
10
|
var path = require('./path-B7zW-WwE.cjs');
|
|
11
|
-
var systemPrompt = require('./systemPrompt-
|
|
11
|
+
var systemPrompt = require('./systemPrompt-CyEz_IfR.cjs');
|
|
12
12
|
var manager = require('./manager-Cly8xVIR.cjs');
|
|
13
13
|
var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
14
14
|
var claudeCliPath = require('./claudeCliPath-U4HHmV4r.cjs');
|
|
15
15
|
require('chalk');
|
|
16
16
|
require('node:util');
|
|
17
|
-
require('./configuration-
|
|
17
|
+
require('./configuration-UsI0sxEv.cjs');
|
|
18
18
|
require('node:os');
|
|
19
|
-
require('./package-
|
|
19
|
+
require('./package-D1A-8ZJy.cjs');
|
|
20
20
|
require('node:fs/promises');
|
|
21
|
-
require('./index-
|
|
21
|
+
require('./index-DJ-oV52i.cjs');
|
|
22
22
|
require('zod');
|
|
23
23
|
require('@paralleldrive/cuid2');
|
|
24
24
|
require('./trimIdent-4gvk9Wk6.cjs');
|
|
@@ -2,21 +2,21 @@ import { spawn } from 'cross-spawn';
|
|
|
2
2
|
import { createInterface } from 'node:readline';
|
|
3
3
|
import { readdirSync, statSync, mkdirSync, existsSync } from 'node:fs';
|
|
4
4
|
import { randomUUID } from 'node:crypto';
|
|
5
|
-
import { l as logger } from './logger-
|
|
5
|
+
import { l as logger } from './logger-CGE4C8ho.mjs';
|
|
6
6
|
import { p as pinSmallFastModel, e as ensureLocalProxyBypass } from './smallFastModel-BLNgMrwR.mjs';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
import { g as getProjectPath } from './path-D2wdaNSk.mjs';
|
|
9
|
-
import { c as claudeCheckSession, s as systemPrompt } from './systemPrompt-
|
|
9
|
+
import { c as claudeCheckSession, s as systemPrompt } from './systemPrompt-DsQoUgQw.mjs';
|
|
10
10
|
import { i as initializeSandbox, a as wrapCommand } from './manager-BQ4flvQZ.mjs';
|
|
11
11
|
import { c as contentLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
|
|
12
12
|
import { claudeCliPath } from './claudeCliPath-BqkaH2oR.mjs';
|
|
13
13
|
import 'chalk';
|
|
14
14
|
import 'node:util';
|
|
15
|
-
import './configuration-
|
|
15
|
+
import './configuration-A5gW_0GE.mjs';
|
|
16
16
|
import 'node:os';
|
|
17
|
-
import './package-
|
|
17
|
+
import './package-DQsvY1XN.mjs';
|
|
18
18
|
import 'node:fs/promises';
|
|
19
|
-
import './index-
|
|
19
|
+
import './index-BBg9j0XK.mjs';
|
|
20
20
|
import 'zod';
|
|
21
21
|
import '@paralleldrive/cuid2';
|
|
22
22
|
import './trimIdent-BAjmv_TG.mjs';
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { l as logger } from './logger-
|
|
2
|
-
import { claudeLocal, ExitCodeError } from './claudeLocal-
|
|
3
|
-
import { c as createSessionScanner, F as Future } from './sessionScanner-
|
|
1
|
+
import { l as logger } from './logger-CGE4C8ho.mjs';
|
|
2
|
+
import { claudeLocal, ExitCodeError } from './claudeLocal-dhdlcQ6F.mjs';
|
|
3
|
+
import { c as createSessionScanner, F as Future } from './sessionScanner-Cdukzo70.mjs';
|
|
4
4
|
import 'chalk';
|
|
5
5
|
import 'node:util';
|
|
6
|
-
import './configuration-
|
|
6
|
+
import './configuration-A5gW_0GE.mjs';
|
|
7
7
|
import 'node:fs';
|
|
8
8
|
import 'node:os';
|
|
9
9
|
import 'node:path';
|
|
10
|
-
import './package-
|
|
10
|
+
import './package-DQsvY1XN.mjs';
|
|
11
11
|
import 'node:fs/promises';
|
|
12
12
|
import 'cross-spawn';
|
|
13
13
|
import 'node:readline';
|
|
14
14
|
import 'node:crypto';
|
|
15
15
|
import './smallFastModel-BLNgMrwR.mjs';
|
|
16
16
|
import './path-D2wdaNSk.mjs';
|
|
17
|
-
import './systemPrompt-
|
|
18
|
-
import './index-
|
|
17
|
+
import './systemPrompt-DsQoUgQw.mjs';
|
|
18
|
+
import './index-BBg9j0XK.mjs';
|
|
19
19
|
import 'zod';
|
|
20
20
|
import '@paralleldrive/cuid2';
|
|
21
21
|
import './trimIdent-BAjmv_TG.mjs';
|
|
@@ -27,10 +27,10 @@ import './claudeCliPath-BqkaH2oR.mjs';
|
|
|
27
27
|
import './projectPath-BTBIMB57.mjs';
|
|
28
28
|
import 'path';
|
|
29
29
|
import 'url';
|
|
30
|
-
import './sync-
|
|
31
|
-
import './time-
|
|
30
|
+
import './sync-BpLasLu2.mjs';
|
|
31
|
+
import './time-CVvxdEDh.mjs';
|
|
32
32
|
import './types-CkqAACXx.mjs';
|
|
33
|
-
import './startFileWatcher-
|
|
33
|
+
import './startFileWatcher-COD5UKNs.mjs';
|
|
34
34
|
import 'fs/promises';
|
|
35
35
|
|
|
36
36
|
async function claudeLocalLauncher(session) {
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var logger = require('./logger-
|
|
4
|
-
var claudeLocal = require('./claudeLocal-
|
|
5
|
-
var sessionScanner = require('./sessionScanner-
|
|
3
|
+
var logger = require('./logger-7ucWm9wp.cjs');
|
|
4
|
+
var claudeLocal = require('./claudeLocal-Bpw-u9et.cjs');
|
|
5
|
+
var sessionScanner = require('./sessionScanner-aLEv7mD3.cjs');
|
|
6
6
|
require('chalk');
|
|
7
7
|
require('node:util');
|
|
8
|
-
require('./configuration-
|
|
8
|
+
require('./configuration-UsI0sxEv.cjs');
|
|
9
9
|
require('node:fs');
|
|
10
10
|
require('node:os');
|
|
11
11
|
require('node:path');
|
|
12
|
-
require('./package-
|
|
12
|
+
require('./package-D1A-8ZJy.cjs');
|
|
13
13
|
require('node:fs/promises');
|
|
14
14
|
require('cross-spawn');
|
|
15
15
|
require('node:readline');
|
|
16
16
|
require('node:crypto');
|
|
17
17
|
require('./smallFastModel-D_uxGMo3.cjs');
|
|
18
18
|
require('./path-B7zW-WwE.cjs');
|
|
19
|
-
require('./systemPrompt-
|
|
20
|
-
require('./index-
|
|
19
|
+
require('./systemPrompt-CyEz_IfR.cjs');
|
|
20
|
+
require('./index-DJ-oV52i.cjs');
|
|
21
21
|
require('zod');
|
|
22
22
|
require('@paralleldrive/cuid2');
|
|
23
23
|
require('./trimIdent-4gvk9Wk6.cjs');
|
|
@@ -29,10 +29,10 @@ require('./claudeCliPath-U4HHmV4r.cjs');
|
|
|
29
29
|
require('./projectPath-ChLhdOyt.cjs');
|
|
30
30
|
require('path');
|
|
31
31
|
require('url');
|
|
32
|
-
require('./sync-
|
|
33
|
-
require('./time-
|
|
32
|
+
require('./sync-Dj92ZJ8Y.cjs');
|
|
33
|
+
require('./time-CLwVAz6s.cjs');
|
|
34
34
|
require('./types-CRS-srZK.cjs');
|
|
35
|
-
require('./startFileWatcher-
|
|
35
|
+
require('./startFileWatcher-C2HC2_Dg.cjs');
|
|
36
36
|
require('fs/promises');
|
|
37
37
|
|
|
38
38
|
async function claudeLocalLauncher(session) {
|
|
@@ -5,7 +5,7 @@ var promises = require('node:fs/promises');
|
|
|
5
5
|
var node_fs = require('node:fs');
|
|
6
6
|
var path = require('node:path');
|
|
7
7
|
var node_readline = require('node:readline');
|
|
8
|
-
var logger = require('./logger-
|
|
8
|
+
var logger = require('./logger-7ucWm9wp.cjs');
|
|
9
9
|
|
|
10
10
|
class ForkTruncateUuidNotFoundError extends Error {
|
|
11
11
|
constructor(cutAfterUuid, sourcePath) {
|
|
@@ -205,146 +205,10 @@ async function forkBeforeUserMessage(projectDir, sourceClaudeSessionId, cutBefor
|
|
|
205
205
|
return newId;
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
-
class CodexForkRewindPointNotFoundError extends Error {
|
|
209
|
-
constructor(itemId, threadId) {
|
|
210
|
-
super(`Codex rewind point ${itemId} not found in thread ${threadId}`);
|
|
211
|
-
this.itemId = itemId;
|
|
212
|
-
this.threadId = threadId;
|
|
213
|
-
this.name = "CodexForkRewindPointNotFoundError";
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
function hasUserAttachments(item) {
|
|
217
|
-
const content = item.content;
|
|
218
|
-
return Array.isArray(content) && content.some((part) => !part || typeof part !== "object" || part.type !== "text" || typeof part.text === "string" && part.text.includes("<attached_files>"));
|
|
219
|
-
}
|
|
220
|
-
function rejectAttachedTarget(thread, itemId) {
|
|
221
|
-
const item = thread.turns?.flatMap((turn) => turn.items ?? []).find((item2) => item2.id === itemId);
|
|
222
|
-
if (item && hasUserAttachments(item)) throw new Error("Cannot edit and rerun a message with attachments");
|
|
223
|
-
}
|
|
224
|
-
function textFromUserItem(item) {
|
|
225
|
-
if (item.type !== "userMessage") {
|
|
226
|
-
return null;
|
|
227
|
-
}
|
|
228
|
-
const content = item.content;
|
|
229
|
-
if (!Array.isArray(content)) {
|
|
230
|
-
return null;
|
|
231
|
-
}
|
|
232
|
-
const textParts = content.filter((part) => Boolean(part) && typeof part === "object" && part.type === "text" && typeof part.text === "string").map((part) => part.text).join("\n").trim();
|
|
233
|
-
return textParts.length > 0 ? textParts : null;
|
|
234
|
-
}
|
|
235
|
-
function timestampFromTurn(turn) {
|
|
236
|
-
const seconds = turn.startedAt ?? turn.completedAt;
|
|
237
|
-
return typeof seconds === "number" && Number.isFinite(seconds) ? seconds * 1e3 : Date.now();
|
|
238
|
-
}
|
|
239
|
-
function listCodexRewindPoints(thread) {
|
|
240
|
-
const points = [];
|
|
241
|
-
for (const turn of thread.turns ?? []) {
|
|
242
|
-
for (const item of turn.items ?? []) {
|
|
243
|
-
const text = textFromUserItem(item);
|
|
244
|
-
if (!text) {
|
|
245
|
-
continue;
|
|
246
|
-
}
|
|
247
|
-
points.push({
|
|
248
|
-
itemId: item.id,
|
|
249
|
-
text,
|
|
250
|
-
...hasUserAttachments(item) ? { hasAttachments: true } : {},
|
|
251
|
-
timestamp: timestampFromTurn(turn)
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
return points;
|
|
256
|
-
}
|
|
257
|
-
function findCutTurn(thread, itemId) {
|
|
258
|
-
const turns = thread.turns ?? [];
|
|
259
|
-
for (let index = 0; index < turns.length; index++) {
|
|
260
|
-
const turn = turns[index];
|
|
261
|
-
const item = (turn.items ?? []).find((candidate) => candidate.id === itemId);
|
|
262
|
-
if (!item) {
|
|
263
|
-
continue;
|
|
264
|
-
}
|
|
265
|
-
const text = textFromUserItem(item);
|
|
266
|
-
if (text) {
|
|
267
|
-
return { index, text };
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
return null;
|
|
271
|
-
}
|
|
272
|
-
async function forkCodexThread(client, opts) {
|
|
273
|
-
const forked = await client.forkThread({
|
|
274
|
-
threadId: opts.threadId,
|
|
275
|
-
...opts.cwd ? { cwd: opts.cwd } : {},
|
|
276
|
-
...opts.model ? { model: opts.model } : {},
|
|
277
|
-
...opts.approvalPolicy ? { approvalPolicy: opts.approvalPolicy } : {},
|
|
278
|
-
...opts.sandbox ? { sandbox: opts.sandbox } : {},
|
|
279
|
-
...opts.mcpServers ? { mcpServers: opts.mcpServers } : {}
|
|
280
|
-
});
|
|
281
|
-
if (opts.cutAfterItemId) {
|
|
282
|
-
const cutTurn = findCutTurn(forked.thread, opts.cutAfterItemId);
|
|
283
|
-
if (!cutTurn) {
|
|
284
|
-
throw new CodexForkRewindPointNotFoundError(opts.cutAfterItemId, opts.threadId);
|
|
285
|
-
}
|
|
286
|
-
const turns = forked.thread.turns ?? [];
|
|
287
|
-
const turnsToDrop = turns.length - cutTurn.index;
|
|
288
|
-
if (turnsToDrop > 0) {
|
|
289
|
-
await client.rollbackThread({
|
|
290
|
-
threadId: forked.threadId,
|
|
291
|
-
numTurns: turnsToDrop
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
|
-
await client.injectItems({
|
|
295
|
-
threadId: forked.threadId,
|
|
296
|
-
items: [{
|
|
297
|
-
type: "message",
|
|
298
|
-
role: "user",
|
|
299
|
-
content: [{ type: "input_text", text: cutTurn.text }]
|
|
300
|
-
}]
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
return {
|
|
304
|
-
type: "success",
|
|
305
|
-
newCodexThreadId: forked.threadId
|
|
306
|
-
};
|
|
307
|
-
}
|
|
308
|
-
async function forkCodexBeforeUserMessage(client, opts) {
|
|
309
|
-
const { thread: source } = await client.readThread({ threadId: opts.threadId, includeTurns: true });
|
|
310
|
-
rejectAttachedTarget(source, opts.cutBeforeItemId);
|
|
311
|
-
const sourceCut = findCutTurn(source, opts.cutBeforeItemId);
|
|
312
|
-
if (!sourceCut) throw new CodexForkRewindPointNotFoundError(opts.cutBeforeItemId, opts.threadId);
|
|
313
|
-
if ((source.turns?.[sourceCut.index].items ?? []).findIndex((item) => item.id === opts.cutBeforeItemId) !== 0) {
|
|
314
|
-
throw new Error("Cannot safely rewind a user message inside an existing turn");
|
|
315
|
-
}
|
|
316
|
-
if (sourceCut.index === 0) return { type: "success", startFresh: true };
|
|
317
|
-
const forked = await client.forkThread({ threadId: opts.threadId, cwd: opts.cwd });
|
|
318
|
-
if (forked.threadId === opts.threadId) throw new Error("Codex did not create an independent fork");
|
|
319
|
-
rejectAttachedTarget(forked.thread, opts.cutBeforeItemId);
|
|
320
|
-
const cut = findCutTurn(forked.thread, opts.cutBeforeItemId);
|
|
321
|
-
if (!cut) throw new CodexForkRewindPointNotFoundError(opts.cutBeforeItemId, opts.threadId);
|
|
322
|
-
const turns = forked.thread.turns ?? [];
|
|
323
|
-
const items = turns[cut.index].items ?? [];
|
|
324
|
-
if (items.findIndex((item) => item.id === opts.cutBeforeItemId) !== 0) {
|
|
325
|
-
throw new Error("Cannot safely rewind a user message inside an existing turn");
|
|
326
|
-
}
|
|
327
|
-
if (cut.index === 0) return { type: "success", startFresh: true };
|
|
328
|
-
const expectedTurnIds = turns.slice(0, cut.index).map((turn) => turn.id);
|
|
329
|
-
const { thread } = await client.rollbackThread({
|
|
330
|
-
threadId: forked.threadId,
|
|
331
|
-
numTurns: turns.length - cut.index
|
|
332
|
-
});
|
|
333
|
-
const remaining = thread.turns ?? [];
|
|
334
|
-
if (remaining.length !== cut.index || remaining.some((turn, index) => turn.id !== expectedTurnIds[index])) {
|
|
335
|
-
throw new Error("Codex rollback did not preserve the expected history");
|
|
336
|
-
}
|
|
337
|
-
return { type: "success", newCodexThreadId: forked.threadId };
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
exports.CodexForkRewindPointNotFoundError = CodexForkRewindPointNotFoundError;
|
|
341
208
|
exports.ForkSourceMissingError = ForkSourceMissingError;
|
|
342
209
|
exports.ForkTruncateUuidNotFoundError = ForkTruncateUuidNotFoundError;
|
|
343
210
|
exports.discardForkedSession = discardForkedSession;
|
|
344
211
|
exports.forkAndTruncateSession = forkAndTruncateSession;
|
|
345
212
|
exports.forkBeforeUserMessage = forkBeforeUserMessage;
|
|
346
|
-
exports.forkCodexBeforeUserMessage = forkCodexBeforeUserMessage;
|
|
347
|
-
exports.forkCodexThread = forkCodexThread;
|
|
348
213
|
exports.forkSession = forkSession;
|
|
349
214
|
exports.listClaudeRewindPoints = listClaudeRewindPoints;
|
|
350
|
-
exports.listCodexRewindPoints = listCodexRewindPoints;
|
|
@@ -3,7 +3,7 @@ import { copyFile, unlink, readFile, rename, writeFile } from 'node:fs/promises'
|
|
|
3
3
|
import { createReadStream, createWriteStream } from 'node:fs';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
5
|
import { createInterface } from 'node:readline';
|
|
6
|
-
import { l as logger } from './logger-
|
|
6
|
+
import { l as logger } from './logger-CGE4C8ho.mjs';
|
|
7
7
|
|
|
8
8
|
class ForkTruncateUuidNotFoundError extends Error {
|
|
9
9
|
constructor(cutAfterUuid, sourcePath) {
|
|
@@ -203,136 +203,4 @@ async function forkBeforeUserMessage(projectDir, sourceClaudeSessionId, cutBefor
|
|
|
203
203
|
return newId;
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
-
|
|
207
|
-
constructor(itemId, threadId) {
|
|
208
|
-
super(`Codex rewind point ${itemId} not found in thread ${threadId}`);
|
|
209
|
-
this.itemId = itemId;
|
|
210
|
-
this.threadId = threadId;
|
|
211
|
-
this.name = "CodexForkRewindPointNotFoundError";
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
function hasUserAttachments(item) {
|
|
215
|
-
const content = item.content;
|
|
216
|
-
return Array.isArray(content) && content.some((part) => !part || typeof part !== "object" || part.type !== "text" || typeof part.text === "string" && part.text.includes("<attached_files>"));
|
|
217
|
-
}
|
|
218
|
-
function rejectAttachedTarget(thread, itemId) {
|
|
219
|
-
const item = thread.turns?.flatMap((turn) => turn.items ?? []).find((item2) => item2.id === itemId);
|
|
220
|
-
if (item && hasUserAttachments(item)) throw new Error("Cannot edit and rerun a message with attachments");
|
|
221
|
-
}
|
|
222
|
-
function textFromUserItem(item) {
|
|
223
|
-
if (item.type !== "userMessage") {
|
|
224
|
-
return null;
|
|
225
|
-
}
|
|
226
|
-
const content = item.content;
|
|
227
|
-
if (!Array.isArray(content)) {
|
|
228
|
-
return null;
|
|
229
|
-
}
|
|
230
|
-
const textParts = content.filter((part) => Boolean(part) && typeof part === "object" && part.type === "text" && typeof part.text === "string").map((part) => part.text).join("\n").trim();
|
|
231
|
-
return textParts.length > 0 ? textParts : null;
|
|
232
|
-
}
|
|
233
|
-
function timestampFromTurn(turn) {
|
|
234
|
-
const seconds = turn.startedAt ?? turn.completedAt;
|
|
235
|
-
return typeof seconds === "number" && Number.isFinite(seconds) ? seconds * 1e3 : Date.now();
|
|
236
|
-
}
|
|
237
|
-
function listCodexRewindPoints(thread) {
|
|
238
|
-
const points = [];
|
|
239
|
-
for (const turn of thread.turns ?? []) {
|
|
240
|
-
for (const item of turn.items ?? []) {
|
|
241
|
-
const text = textFromUserItem(item);
|
|
242
|
-
if (!text) {
|
|
243
|
-
continue;
|
|
244
|
-
}
|
|
245
|
-
points.push({
|
|
246
|
-
itemId: item.id,
|
|
247
|
-
text,
|
|
248
|
-
...hasUserAttachments(item) ? { hasAttachments: true } : {},
|
|
249
|
-
timestamp: timestampFromTurn(turn)
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
return points;
|
|
254
|
-
}
|
|
255
|
-
function findCutTurn(thread, itemId) {
|
|
256
|
-
const turns = thread.turns ?? [];
|
|
257
|
-
for (let index = 0; index < turns.length; index++) {
|
|
258
|
-
const turn = turns[index];
|
|
259
|
-
const item = (turn.items ?? []).find((candidate) => candidate.id === itemId);
|
|
260
|
-
if (!item) {
|
|
261
|
-
continue;
|
|
262
|
-
}
|
|
263
|
-
const text = textFromUserItem(item);
|
|
264
|
-
if (text) {
|
|
265
|
-
return { index, text };
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
return null;
|
|
269
|
-
}
|
|
270
|
-
async function forkCodexThread(client, opts) {
|
|
271
|
-
const forked = await client.forkThread({
|
|
272
|
-
threadId: opts.threadId,
|
|
273
|
-
...opts.cwd ? { cwd: opts.cwd } : {},
|
|
274
|
-
...opts.model ? { model: opts.model } : {},
|
|
275
|
-
...opts.approvalPolicy ? { approvalPolicy: opts.approvalPolicy } : {},
|
|
276
|
-
...opts.sandbox ? { sandbox: opts.sandbox } : {},
|
|
277
|
-
...opts.mcpServers ? { mcpServers: opts.mcpServers } : {}
|
|
278
|
-
});
|
|
279
|
-
if (opts.cutAfterItemId) {
|
|
280
|
-
const cutTurn = findCutTurn(forked.thread, opts.cutAfterItemId);
|
|
281
|
-
if (!cutTurn) {
|
|
282
|
-
throw new CodexForkRewindPointNotFoundError(opts.cutAfterItemId, opts.threadId);
|
|
283
|
-
}
|
|
284
|
-
const turns = forked.thread.turns ?? [];
|
|
285
|
-
const turnsToDrop = turns.length - cutTurn.index;
|
|
286
|
-
if (turnsToDrop > 0) {
|
|
287
|
-
await client.rollbackThread({
|
|
288
|
-
threadId: forked.threadId,
|
|
289
|
-
numTurns: turnsToDrop
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
await client.injectItems({
|
|
293
|
-
threadId: forked.threadId,
|
|
294
|
-
items: [{
|
|
295
|
-
type: "message",
|
|
296
|
-
role: "user",
|
|
297
|
-
content: [{ type: "input_text", text: cutTurn.text }]
|
|
298
|
-
}]
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
return {
|
|
302
|
-
type: "success",
|
|
303
|
-
newCodexThreadId: forked.threadId
|
|
304
|
-
};
|
|
305
|
-
}
|
|
306
|
-
async function forkCodexBeforeUserMessage(client, opts) {
|
|
307
|
-
const { thread: source } = await client.readThread({ threadId: opts.threadId, includeTurns: true });
|
|
308
|
-
rejectAttachedTarget(source, opts.cutBeforeItemId);
|
|
309
|
-
const sourceCut = findCutTurn(source, opts.cutBeforeItemId);
|
|
310
|
-
if (!sourceCut) throw new CodexForkRewindPointNotFoundError(opts.cutBeforeItemId, opts.threadId);
|
|
311
|
-
if ((source.turns?.[sourceCut.index].items ?? []).findIndex((item) => item.id === opts.cutBeforeItemId) !== 0) {
|
|
312
|
-
throw new Error("Cannot safely rewind a user message inside an existing turn");
|
|
313
|
-
}
|
|
314
|
-
if (sourceCut.index === 0) return { type: "success", startFresh: true };
|
|
315
|
-
const forked = await client.forkThread({ threadId: opts.threadId, cwd: opts.cwd });
|
|
316
|
-
if (forked.threadId === opts.threadId) throw new Error("Codex did not create an independent fork");
|
|
317
|
-
rejectAttachedTarget(forked.thread, opts.cutBeforeItemId);
|
|
318
|
-
const cut = findCutTurn(forked.thread, opts.cutBeforeItemId);
|
|
319
|
-
if (!cut) throw new CodexForkRewindPointNotFoundError(opts.cutBeforeItemId, opts.threadId);
|
|
320
|
-
const turns = forked.thread.turns ?? [];
|
|
321
|
-
const items = turns[cut.index].items ?? [];
|
|
322
|
-
if (items.findIndex((item) => item.id === opts.cutBeforeItemId) !== 0) {
|
|
323
|
-
throw new Error("Cannot safely rewind a user message inside an existing turn");
|
|
324
|
-
}
|
|
325
|
-
if (cut.index === 0) return { type: "success", startFresh: true };
|
|
326
|
-
const expectedTurnIds = turns.slice(0, cut.index).map((turn) => turn.id);
|
|
327
|
-
const { thread } = await client.rollbackThread({
|
|
328
|
-
threadId: forked.threadId,
|
|
329
|
-
numTurns: turns.length - cut.index
|
|
330
|
-
});
|
|
331
|
-
const remaining = thread.turns ?? [];
|
|
332
|
-
if (remaining.length !== cut.index || remaining.some((turn, index) => turn.id !== expectedTurnIds[index])) {
|
|
333
|
-
throw new Error("Codex rollback did not preserve the expected history");
|
|
334
|
-
}
|
|
335
|
-
return { type: "success", newCodexThreadId: forked.threadId };
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
export { CodexForkRewindPointNotFoundError as C, ForkSourceMissingError as F, forkCodexThread as a, forkAndTruncateSession as b, ForkTruncateUuidNotFoundError as c, discardForkedSession as d, forkBeforeUserMessage as e, forkSession as f, listCodexRewindPoints as g, forkCodexBeforeUserMessage as h, listClaudeRewindPoints as l };
|
|
206
|
+
export { ForkSourceMissingError as F, forkAndTruncateSession as a, ForkTruncateUuidNotFoundError as b, forkBeforeUserMessage as c, discardForkedSession as d, forkSession as f, listClaudeRewindPoints as l };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var configuration = require('./configuration-
|
|
4
|
-
var persistence = require('./persistence-
|
|
3
|
+
var configuration = require('./configuration-UsI0sxEv.cjs');
|
|
4
|
+
var persistence = require('./persistence-i0nQMLlk.cjs');
|
|
5
5
|
|
|
6
6
|
class AutomationsRequestError extends Error {
|
|
7
7
|
constructor(status, code, runStatus) {
|