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.
Files changed (176) hide show
  1. package/dist/{AcpBackend-mzv8Dhba.mjs → AcpBackend--TmFHgRH.mjs} +3 -3
  2. package/dist/{AcpBackend-Bm2rdke8.cjs → AcpBackend-9asD_DL7.cjs} +3 -3
  3. package/dist/{AcpSessionManager-CoMWFVw3.mjs → AcpSessionManager-BSIBnWUb.mjs} +1 -1
  4. package/dist/{AcpSessionManager-BAY1Pggx.cjs → AcpSessionManager-BvIuBzoO.cjs} +1 -1
  5. package/dist/{BasePermissionHandler-CFHAxumV.cjs → BasePermissionHandler-D4B-NNu2.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-m3WVholL.mjs → BasePermissionHandler-DUBySe0f.mjs} +1 -1
  7. package/dist/{BaseReasoningProcessor-CYrKBXGm.mjs → BaseReasoningProcessor-9TybUGTq.mjs} +1 -1
  8. package/dist/{BaseReasoningProcessor-BFa9_rZA.cjs → BaseReasoningProcessor-CqLl-ikP.cjs} +1 -1
  9. package/dist/{agentHome-CboCeKWq.cjs → agentHome-BohNUYnE.cjs} +4 -4
  10. package/dist/{agentHome-Dj1C43aJ.mjs → agentHome-DQrq_FG1.mjs} +4 -4
  11. package/dist/{api-CgundNNX.cjs → api-CQnLOqRS.cjs} +10 -10
  12. package/dist/{api-CLMUr-SX.mjs → api-D57dsd6_.mjs} +10 -10
  13. package/dist/{apiMachine-B9dLW_p5.mjs → apiMachine-78Aqzg--.mjs} +21 -14
  14. package/dist/{apiMachine-Bn8482VM.cjs → apiMachine-fFFaWxYy.cjs} +33 -26
  15. package/dist/{assistantTools-BTqPnlFl.cjs → assistantTools-CwESq24n.cjs} +6 -6
  16. package/dist/{assistantTools-D6tuc6o4.mjs → assistantTools-mEz6uNqL.mjs} +6 -6
  17. package/dist/{attachmentContent-DpiTJZb4.cjs → attachmentContent-GHOk6Muq.cjs} +2 -2
  18. package/dist/{attachmentContent-_kxRznNf.mjs → attachmentContent-s1xPha4Q.mjs} +2 -2
  19. package/dist/{attachmentLimits-yba1uHFO.mjs → attachmentLimits-D5pgmASK.mjs} +1 -1
  20. package/dist/{attachmentLimits-CzVrqgLR.cjs → attachmentLimits-DzlBPyJP.cjs} +1 -1
  21. package/dist/{auth-BDOVh5h5.cjs → auth-B8EagV6G.cjs} +8 -8
  22. package/dist/{auth-PYHZQNPp.mjs → auth-BOaHWquu.mjs} +8 -8
  23. package/dist/{auth-ba4WMYrN.cjs → auth-BbSdXMQ_.cjs} +5 -5
  24. package/dist/{auth-Cwutmdsa.mjs → auth-C8V7-oUT.mjs} +5 -5
  25. package/dist/{auto-BOX_fgmR.cjs → auto-Bw_h0yVc.cjs} +15 -14
  26. package/dist/{auto-BXu14yP_.mjs → auto-CWDOX35m.mjs} +15 -14
  27. package/dist/{bootstrap-hxXPCFMx.mjs → bootstrap-BKmsYSwh.mjs} +2 -2
  28. package/dist/{bootstrap-B5G1TijC.cjs → bootstrap-DvZjEa9_.cjs} +2 -2
  29. package/dist/{browser-Y6Bl8L_O.cjs → browser-CBZj-1Wx.cjs} +1 -1
  30. package/dist/{browser-jh2P0UVZ.mjs → browser-CrMAr5fI.mjs} +1 -1
  31. package/dist/{claudeLocal-CRGG4Pea.cjs → claudeLocal-Bpw-u9et.cjs} +5 -5
  32. package/dist/{claudeLocal-BaY4fZKi.mjs → claudeLocal-dhdlcQ6F.mjs} +5 -5
  33. package/dist/{claudeLocalLauncher-D4T7MTqd.mjs → claudeLocalLauncher-BFfGT4eY.mjs} +10 -10
  34. package/dist/{claudeLocalLauncher-DyEbVzUN.cjs → claudeLocalLauncher-DWFWuLhY.cjs} +10 -10
  35. package/dist/{codexThreadFork-BH9IZPqD.cjs → claudeSessionFork-D9-mANmu.cjs} +1 -137
  36. package/dist/{codexThreadFork-slzAseLx.mjs → claudeSessionFork-_DUrXaqd.mjs} +2 -134
  37. package/dist/{client-BPNbmtvO.cjs → client-CVQJWqjx.cjs} +2 -2
  38. package/dist/{client-3Ac-O4pw.cjs → client-DiBTHWNU.cjs} +3 -3
  39. package/dist/{client-CeGKqqcJ.mjs → client-Dk7x-s-O.mjs} +3 -3
  40. package/dist/{client-ClR0K8zX.mjs → client-DwqHDsLb.mjs} +2 -2
  41. package/dist/codex/happyMcpStdioBridge.cjs +15 -15
  42. package/dist/codex/happyMcpStdioBridge.mjs +15 -15
  43. package/dist/{codexAppServerClient-I3teiV-N.mjs → codexAppServerClient-C2ybs2mZ.mjs} +2 -2
  44. package/dist/{codexAppServerClient-q2FjnRcK.cjs → codexAppServerClient-DlKv5TjG.cjs} +2 -2
  45. package/dist/{codexCommand-4zcccIoq.cjs → codexCommand-4vLE31fj.cjs} +45 -40
  46. package/dist/{codexCommand-Cc9gcbdX.mjs → codexCommand-DnmFr9Qx.mjs} +45 -40
  47. package/dist/codexThreadFork-DNekT4nQ.cjs +138 -0
  48. package/dist/codexThreadFork-R76RU5H0.mjs +133 -0
  49. package/dist/{config-Ci9Kpgwa.cjs → config-Btd4B05_.cjs} +3 -3
  50. package/dist/{config-CTx_jb-C.mjs → config-CSOG_ZcP.mjs} +3 -3
  51. package/dist/{configuration-RfeNjFmd.mjs → configuration-A5gW_0GE.mjs} +1 -1
  52. package/dist/{configuration-BSYpcPwE.cjs → configuration-UsI0sxEv.cjs} +1 -1
  53. package/dist/{connect-C2CiOUFs.cjs → connect-C9yxp8Om.cjs} +13 -13
  54. package/dist/{connect-BpOdzNbE.mjs → connect-DWYj8LP_.mjs} +13 -13
  55. package/dist/{context-DsDr6E2t.cjs → context-0FjjA4vJ.cjs} +1 -1
  56. package/dist/{context-H0Bcb9S_.mjs → context-BXnxalWW.mjs} +1 -1
  57. package/dist/{controlClient-Bcwv3D21.cjs → controlClient-BXktrQ4z.cjs} +3 -3
  58. package/dist/{controlClient-BGbDcgWS.mjs → controlClient-CYzHrh3e.mjs} +3 -3
  59. package/dist/{createSessionMetadata-CVVkGjxV.mjs → createSessionMetadata-Dyg33ZlU.mjs} +2 -2
  60. package/dist/{createSessionMetadata-BJxEnM-o.cjs → createSessionMetadata-EX1eAlHx.cjs} +2 -2
  61. package/dist/{deterministicJson-CzkFJWw1.mjs → deterministicJson-DiR7EOMO.mjs} +9 -9
  62. package/dist/{deterministicJson-C5CYTVpm.cjs → deterministicJson-eha_oMZ2.cjs} +9 -9
  63. package/dist/{doctor-D2YJ-Yn2.cjs → doctor-DunLBgVi.cjs} +6 -6
  64. package/dist/{doctor-DOvByjbk.mjs → doctor-FuCvKdRa.mjs} +6 -6
  65. package/dist/{ensureDaemonRunning-BCwNrMyv.cjs → ensureDaemonRunning-B4dZFmUy.cjs} +5 -5
  66. package/dist/{ensureDaemonRunning-Dqa2pOjY.mjs → ensureDaemonRunning-EZkb-CAF.mjs} +5 -5
  67. package/dist/{handleResumeCommand-C2cKchpX.cjs → handleResumeCommand-CKMIw4pE.cjs} +5 -5
  68. package/dist/{handleResumeCommand-BvXYf5El.mjs → handleResumeCommand-CsXendKb.mjs} +5 -5
  69. package/dist/{index-DMZqWwsP.mjs → index-9L39wqYR.mjs} +37 -37
  70. package/dist/{index-qdS1friN.mjs → index-BBg9j0XK.mjs} +8 -1
  71. package/dist/{index-B6pAdvJx.cjs → index-BOhgL3rh.cjs} +36 -36
  72. package/dist/{index-Bu5Zi_a9.cjs → index-CZWAiydF.cjs} +4 -4
  73. package/dist/{index-DVkMGPyS.mjs → index-CvXcVQ06.mjs} +3 -3
  74. package/dist/{index-DA7yINuk.cjs → index-DJ-oV52i.cjs} +8 -1
  75. package/dist/{index-DKLU_fD0.mjs → index-DK2JpTJf.mjs} +4 -4
  76. package/dist/{index-DDeHXrIX.cjs → index-DRhWHEuW.cjs} +3 -3
  77. package/dist/index.cjs +2 -2
  78. package/dist/index.mjs +2 -2
  79. package/dist/{install-CFY3tYtJ.mjs → install-B2duVo9a.mjs} +3 -3
  80. package/dist/{install-BgoC2e_2.cjs → install-C8WyZI9K.cjs} +3 -3
  81. package/dist/lib.cjs +12 -12
  82. package/dist/lib.d.cts +5 -0
  83. package/dist/lib.d.mts +5 -0
  84. package/dist/lib.mjs +12 -12
  85. package/dist/{lidState-CeEt442o.mjs → lidState-CigXWxhe.mjs} +1 -1
  86. package/dist/{lidState-BeDfxxEX.cjs → lidState-Ds-6ytZV.cjs} +1 -1
  87. package/dist/{localHappyAgentAuth-C-HQyiv6.mjs → localHappyAgentAuth-CaCyKzYp.mjs} +1 -1
  88. package/dist/{localHappyAgentAuth-D6rFhaoc.cjs → localHappyAgentAuth-l0Na-5Ys.cjs} +1 -1
  89. package/dist/{logger-CS0mw3fa.cjs → logger-7ucWm9wp.cjs} +2 -2
  90. package/dist/{logger-6HYUEXNk.mjs → logger-CGE4C8ho.mjs} +2 -2
  91. package/dist/{machineMetadata-DyDbODYd.cjs → machineMetadata-lMPtpF16.cjs} +3 -3
  92. package/dist/{machineMetadata-oOzBfDfs.mjs → machineMetadata-ue1nkowa.mjs} +3 -3
  93. package/dist/{main-BwNIAI1A.mjs → main-3fIFXD-t.mjs} +44 -44
  94. package/dist/{main-BkxJP6JQ.cjs → main-CFI0datL.cjs} +44 -44
  95. package/dist/{mcp-B1A4I3TK.mjs → mcp-DARQBZ7l.mjs} +14 -14
  96. package/dist/{mcp-Hszd7qpS.cjs → mcp-DfxLAc1G.cjs} +14 -14
  97. package/dist/{package-BwMrPwqH.cjs → package-D1A-8ZJy.cjs} +7 -7
  98. package/dist/{package-BhaKlnxz.mjs → package-DQsvY1XN.mjs} +7 -7
  99. package/dist/{peerTools-BTqw97Gb.mjs → peerTools-D19hhSQF.mjs} +4 -4
  100. package/dist/{peerTools-BvKtHXj8.cjs → peerTools-DLwNaEEV.cjs} +4 -4
  101. package/dist/{permissionMode-Cr5JCbB7.mjs → permissionMode-CH4FoZfU.mjs} +1 -1
  102. package/dist/{persistence-HGW_ZVs9.mjs → persistence-Cw8aLoyL.mjs} +3 -3
  103. package/dist/{persistence-yKTH3-5X.cjs → persistence-i0nQMLlk.cjs} +3 -3
  104. package/dist/{piRunnerArgs-BuX1UFWy.mjs → piRunnerArgs-58t454gw.mjs} +1 -1
  105. package/dist/{piRunnerArgs-BNloJCCg.cjs → piRunnerArgs-BUyxPxjZ.cjs} +1 -1
  106. package/dist/{piRuntime-CSGkwCKQ.mjs → piRuntime-DVPixFjl.mjs} +1 -1
  107. package/dist/{piRuntime-C_H7MJCM.cjs → piRuntime-Dff73XCb.cjs} +1 -1
  108. package/dist/{piTerminal-DNCZ6yTM.cjs → piTerminal-Dz1RrO70.cjs} +16 -16
  109. package/dist/{piTerminal-C8a1OrNQ.mjs → piTerminal-gHWFAyzq.mjs} +16 -16
  110. package/dist/{registerCommonHandlers-DskirN-_.cjs → registerCommonHandlers-CMROPdJz.cjs} +2 -2
  111. package/dist/{registerCommonHandlers-Ccvsz7Ou.mjs → registerCommonHandlers-Ckv5boQI.mjs} +2 -2
  112. package/dist/{registerKillSessionHandler-DZeLXWcB.cjs → registerKillSessionHandler-CA9-oelM.cjs} +19 -10
  113. package/dist/{registerKillSessionHandler-GYvHdipX.mjs → registerKillSessionHandler-Cll4-o8Y.mjs} +19 -10
  114. package/dist/{remoteSessionClient-CYnXRynE.mjs → remoteSessionClient-BMjsbuBh.mjs} +5 -5
  115. package/dist/{remoteSessionClient-B0LraSB9.cjs → remoteSessionClient-DX9jHLeW.cjs} +5 -5
  116. package/dist/{run-CJzxoHVh.cjs → run-CjbGo2wb.cjs} +36 -32
  117. package/dist/{run-D3ifupU3.mjs → run-CrunzDlt.mjs} +35 -31
  118. package/dist/{runClaude-Da3RirzE.cjs → runClaude-KN-4Y4LH.cjs} +184 -140
  119. package/dist/{runClaude-Ba01qT-u.mjs → runClaude-WDBWRtnF.mjs} +185 -141
  120. package/dist/{runClaudeDeps-DOzEBMls.cjs → runClaudeDeps-DW-8lnHv.cjs} +821 -125
  121. package/dist/{runClaudeDeps-DOt79DjU.mjs → runClaudeDeps-QaEx8y5r.mjs} +811 -129
  122. package/dist/{runGemini-DSr9LIxL.cjs → runGemini-Djmwjdv1.cjs} +32 -32
  123. package/dist/{runGemini-BGeTz57m.mjs → runGemini-Nf6SKBpw.mjs} +32 -32
  124. package/dist/{runOpenClaw-CogSedIc.mjs → runOpenClaw-9nHtmYbN.mjs} +18 -18
  125. package/dist/{runOpenClaw-B1mTxN35.cjs → runOpenClaw-CAqP5KFH.cjs} +18 -18
  126. package/dist/{sandbox-CG7IyDTU.cjs → sandbox-C8Dd8GPM.cjs} +4 -4
  127. package/dist/{sandbox-DTe6d54R.mjs → sandbox-SP0THMt0.mjs} +4 -4
  128. package/dist/selfCheck-7FaZtVu2.mjs +84 -0
  129. package/dist/{selfCheck-Dc-mNSLb.cjs → selfCheck-D9ZXrK7h.cjs} +34 -34
  130. package/dist/{send-CBXJKc6O.mjs → send-DOx9aQsx.mjs} +8 -8
  131. package/dist/{send-B7J_eaG3.cjs → send-LPk6Q5HI.cjs} +8 -8
  132. package/dist/{server-DcVBv04l.mjs → server-BZNi8Hq_.mjs} +4 -4
  133. package/dist/{server-CZTP_iOn.cjs → server-CxT8jNyn.cjs} +6 -6
  134. package/dist/{sessionLock-D-EG2CfG.mjs → sessionLock-CfLqJfeI.mjs} +2 -2
  135. package/dist/{sessionLock-Bys1PNSo.cjs → sessionLock-y9rnA4LK.cjs} +2 -2
  136. package/dist/{sessionModeFile-RSm0NQkH.cjs → sessionModeFile-B5YeoQJh.cjs} +1 -1
  137. package/dist/{sessionModeFile-DMl3dw3r.mjs → sessionModeFile-BKxgNH3P.mjs} +1 -1
  138. package/dist/{sessionOps-SuHW8Dfe.mjs → sessionOps-CdwVPSZz.mjs} +4 -4
  139. package/dist/{sessionOps-Dn8z85h_.cjs → sessionOps-GsELm2PZ.cjs} +4 -4
  140. package/dist/{sessionScanner-CX3onqXh.mjs → sessionScanner-Cdukzo70.mjs} +3 -3
  141. package/dist/{sessionScanner-BOrGjMXL.cjs → sessionScanner-aLEv7mD3.cjs} +3 -3
  142. package/dist/{sessions-D74aJbhL.cjs → sessions-CfG4WGN0.cjs} +9 -9
  143. package/dist/{sessions-BEG_HTSi.mjs → sessions-Dne-OiRL.mjs} +9 -9
  144. package/dist/{setupOfflineReconnection-ByElY60m.cjs → setupOfflineReconnection-CFwltTcP.cjs} +2 -2
  145. package/dist/{setupOfflineReconnection-DpvWTt69.mjs → setupOfflineReconnection-DiQma2Cc.mjs} +2 -2
  146. package/dist/{spawn-DgR0RKRs.cjs → spawn-BI_sdgWs.cjs} +24 -15
  147. package/dist/{spawn-B7yro0b2.mjs → spawn-DkgP2BGF.mjs} +22 -14
  148. package/dist/{spawnAgents-DZzZ9jMI.mjs → spawnAgents-Y1LjnCt9.mjs} +1 -1
  149. package/dist/{spawnAgents-BGQiEF-w.cjs → spawnAgents-iSu1Xzs5.cjs} +1 -1
  150. package/dist/{spawnHappyCLI-B2H5s4B_.mjs → spawnHappyCLI-9mx4lPxh.mjs} +1 -1
  151. package/dist/{spawnHappyCLI-DBhwZT7O.cjs → spawnHappyCLI-BRdx0sAX.cjs} +1 -1
  152. package/dist/{startFileWatcher-B4VsLgjD.cjs → startFileWatcher-C2HC2_Dg.cjs} +1 -1
  153. package/dist/{startFileWatcher-DErVWZE4.mjs → startFileWatcher-COD5UKNs.mjs} +1 -1
  154. package/dist/{streamRelay-FPVbHpbM.mjs → streamRelay-BLgU9X3R.mjs} +1 -1
  155. package/dist/{streamRelay-BiKw59Cc.cjs → streamRelay-DnObXZZj.cjs} +1 -1
  156. package/dist/{sync-C8gyQFMc.mjs → sync-BpLasLu2.mjs} +1 -1
  157. package/dist/{sync-DccIKZ5_.cjs → sync-Dj92ZJ8Y.cjs} +1 -1
  158. package/dist/{systemPrompt-BwTPWfMu.cjs → systemPrompt-CyEz_IfR.cjs} +2 -2
  159. package/dist/{systemPrompt-DX521JJz.mjs → systemPrompt-DsQoUgQw.mjs} +2 -2
  160. package/dist/{teams-C32F1hqd.mjs → teams-BETNMjpZ.mjs} +6 -6
  161. package/dist/{teams-Dl8g8kTI.cjs → teams-Ctx9zXn4.cjs} +6 -6
  162. package/dist/{time-DCuTyook.cjs → time-CLwVAz6s.cjs} +1 -1
  163. package/dist/{time-D0XyHOid.mjs → time-CVvxdEDh.mjs} +1 -1
  164. package/dist/{titleGenerator-CQ8CoGhg.mjs → titleGenerator-B4AW3dLr.mjs} +12 -2
  165. package/dist/{titleGenerator-ChzMJsyg.cjs → titleGenerator-FDpdizn7.cjs} +13 -3
  166. package/dist/{todo-BvUOTa8G.cjs → todo-C3tyFeq1.cjs} +6 -6
  167. package/dist/{todo-CZ6cFrrn.mjs → todo-Jk4Vs7hP.mjs} +6 -6
  168. package/dist/{tools-BZtHF_qQ.mjs → tools-BA1qkiV1.mjs} +2 -2
  169. package/dist/{tools-DQj0AeLk.cjs → tools-CGxq3I52.cjs} +2 -2
  170. package/dist/{tools-Be3AoAwu.cjs → tools-O5beDK-s.cjs} +1 -1
  171. package/dist/{tools-DkluDcG4.mjs → tools-_kFe4m_l.mjs} +1 -1
  172. package/dist/{uninstall-BkLzaJ6I.mjs → uninstall-C_mdAZlm.mjs} +3 -3
  173. package/dist/{uninstall-x-TUtf5H.cjs → uninstall-DHKF90lo.cjs} +3 -3
  174. package/package.json +7 -7
  175. package/scripts/session_hook_forwarder.cjs +9 -2
  176. 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-BSYpcPwE.cjs');
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-DCuTyook.cjs');
9
- var persistence = require('./persistence-yKTH3-5X.cjs');
10
- var browser = require('./browser-Y6Bl8L_O.cjs');
11
- var logger = require('./logger-CS0mw3fa.cjs');
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-RfeNjFmd.mjs';
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-D0XyHOid.mjs';
7
- import { readCredentials, readSettingsOutcome, updateSettings, writeCredentialsLegacy, writeCredentialsDataKey } from './persistence-HGW_ZVs9.mjs';
8
- import { o as openBrowser } from './browser-jh2P0UVZ.mjs';
9
- import { l as logger } from './logger-6HYUEXNk.mjs';
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-DA7yINuk.cjs');
8
- var configuration = require('./configuration-BSYpcPwE.cjs');
9
- var client = require('./client-BPNbmtvO.cjs');
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-Dn8z85h_.cjs');
13
- var spawn = require('./spawn-DgR0RKRs.cjs');
14
- var spawnAgents = require('./spawnAgents-BGQiEF-w.cjs');
15
- var time = require('./time-DCuTyook.cjs');
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-BwMrPwqH.cjs');
18
+ require('./package-D1A-8ZJy.cjs');
19
19
  require('node:fs/promises');
20
- require('./persistence-yKTH3-5X.cjs');
20
+ require('./persistence-i0nQMLlk.cjs');
21
21
  require('./authRelay-BdYkC1Po.cjs');
22
22
  require('node:crypto');
23
23
  require('tweetnacl');
24
- require('./logger-CS0mw3fa.cjs');
24
+ require('./logger-7ucWm9wp.cjs');
25
25
  require('node:util');
26
26
  require('./resources-JDPugcDq.cjs');
27
27
  require('axios');
28
- require('./controlClient-Bcwv3D21.cjs');
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('./codexThreadFork-BH9IZPqD.cjs');
32
+ require('./claudeSessionFork-D9-mANmu.cjs');
33
33
  require('node:readline');
34
- require('./codexAppServerClient-q2FjnRcK.cjs');
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('./createSessionMetadata-BJxEnM-o.cjs');
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-qdS1friN.mjs';
6
- import { c as configuration } from './configuration-RfeNjFmd.mjs';
7
- import { a as authenticatedAutomationsClient, b as automationRunIdFromEnv, i as isAutomationsUnavailable, A as AUTOMATIONS_UNAVAILABLE_MESSAGE } from './client-ClR0K8zX.mjs';
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-SuHW8Dfe.mjs';
11
- import { parseEnvAssignment } from './spawn-B7yro0b2.mjs';
12
- import { S as SPAWN_AGENTS, s as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES } from './spawnAgents-DZzZ9jMI.mjs';
13
- import { d as delay } from './time-D0XyHOid.mjs';
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-BhaKlnxz.mjs';
16
+ import './package-DQsvY1XN.mjs';
17
17
  import 'node:fs/promises';
18
- import './persistence-HGW_ZVs9.mjs';
18
+ import './persistence-Cw8aLoyL.mjs';
19
19
  import './authRelay-DSAvg1uv.mjs';
20
20
  import 'node:crypto';
21
21
  import 'tweetnacl';
22
- import './logger-6HYUEXNk.mjs';
22
+ import './logger-CGE4C8ho.mjs';
23
23
  import 'node:util';
24
24
  import './resources-BdFBQi8r.mjs';
25
25
  import 'axios';
26
- import './controlClient-BGbDcgWS.mjs';
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 './codexThreadFork-slzAseLx.mjs';
30
+ import './claudeSessionFork-_DUrXaqd.mjs';
31
31
  import 'node:readline';
32
- import './codexAppServerClient-I3teiV-N.mjs';
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 './createSessionMetadata-CVVkGjxV.mjs';
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-RfeNjFmd.mjs';
4
+ import { c as configuration } from './configuration-A5gW_0GE.mjs';
5
5
  import 'node:os';
6
- import './package-BhaKlnxz.mjs';
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-BSYpcPwE.cjs');
6
+ var configuration = require('./configuration-UsI0sxEv.cjs');
7
7
  require('node:os');
8
- require('./package-BwMrPwqH.cjs');
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
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var open = require('open');
4
- var logger = require('./logger-CS0mw3fa.cjs');
4
+ var logger = require('./logger-7ucWm9wp.cjs');
5
5
 
6
6
  async function openBrowser(url) {
7
7
  try {
@@ -1,5 +1,5 @@
1
1
  import open from 'open';
2
- import { l as logger } from './logger-6HYUEXNk.mjs';
2
+ import { l as logger } from './logger-CGE4C8ho.mjs';
3
3
 
4
4
  async function openBrowser(url) {
5
5
  try {
@@ -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-CS0mw3fa.cjs');
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-BwTPWfMu.cjs');
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-BSYpcPwE.cjs');
17
+ require('./configuration-UsI0sxEv.cjs');
18
18
  require('node:os');
19
- require('./package-BwMrPwqH.cjs');
19
+ require('./package-D1A-8ZJy.cjs');
20
20
  require('node:fs/promises');
21
- require('./index-DA7yINuk.cjs');
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-6HYUEXNk.mjs';
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-DX521JJz.mjs';
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-RfeNjFmd.mjs';
15
+ import './configuration-A5gW_0GE.mjs';
16
16
  import 'node:os';
17
- import './package-BhaKlnxz.mjs';
17
+ import './package-DQsvY1XN.mjs';
18
18
  import 'node:fs/promises';
19
- import './index-qdS1friN.mjs';
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-6HYUEXNk.mjs';
2
- import { claudeLocal, ExitCodeError } from './claudeLocal-BaY4fZKi.mjs';
3
- import { c as createSessionScanner, F as Future } from './sessionScanner-CX3onqXh.mjs';
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-RfeNjFmd.mjs';
6
+ import './configuration-A5gW_0GE.mjs';
7
7
  import 'node:fs';
8
8
  import 'node:os';
9
9
  import 'node:path';
10
- import './package-BhaKlnxz.mjs';
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-DX521JJz.mjs';
18
- import './index-qdS1friN.mjs';
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-C8gyQFMc.mjs';
31
- import './time-D0XyHOid.mjs';
30
+ import './sync-BpLasLu2.mjs';
31
+ import './time-CVvxdEDh.mjs';
32
32
  import './types-CkqAACXx.mjs';
33
- import './startFileWatcher-DErVWZE4.mjs';
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-CS0mw3fa.cjs');
4
- var claudeLocal = require('./claudeLocal-CRGG4Pea.cjs');
5
- var sessionScanner = require('./sessionScanner-BOrGjMXL.cjs');
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-BSYpcPwE.cjs');
8
+ require('./configuration-UsI0sxEv.cjs');
9
9
  require('node:fs');
10
10
  require('node:os');
11
11
  require('node:path');
12
- require('./package-BwMrPwqH.cjs');
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-BwTPWfMu.cjs');
20
- require('./index-DA7yINuk.cjs');
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-DccIKZ5_.cjs');
33
- require('./time-DCuTyook.cjs');
32
+ require('./sync-Dj92ZJ8Y.cjs');
33
+ require('./time-CLwVAz6s.cjs');
34
34
  require('./types-CRS-srZK.cjs');
35
- require('./startFileWatcher-B4VsLgjD.cjs');
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-CS0mw3fa.cjs');
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-6HYUEXNk.mjs';
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
- class CodexForkRewindPointNotFoundError extends Error {
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-BSYpcPwE.cjs');
4
- var persistence = require('./persistence-yKTH3-5X.cjs');
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) {