very-happy-cli 0.2.161 → 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 (174) hide show
  1. package/dist/{AcpBackend-6U6pQgx1.mjs → AcpBackend--TmFHgRH.mjs} +3 -3
  2. package/dist/{AcpBackend-Ba98QDif.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-2R0uH2CI.cjs → BasePermissionHandler-D4B-NNu2.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-BvvhBTja.mjs → BasePermissionHandler-DUBySe0f.mjs} +1 -1
  7. package/dist/{BaseReasoningProcessor-DyhO1uoU.mjs → BaseReasoningProcessor-9TybUGTq.mjs} +1 -1
  8. package/dist/{BaseReasoningProcessor-fsVNmCEF.cjs → BaseReasoningProcessor-CqLl-ikP.cjs} +1 -1
  9. package/dist/{agentHome-DvNnGphb.cjs → agentHome-BohNUYnE.cjs} +4 -4
  10. package/dist/{agentHome-Ck1i1TQB.mjs → agentHome-DQrq_FG1.mjs} +4 -4
  11. package/dist/{api-B2vLMS-z.cjs → api-CQnLOqRS.cjs} +10 -10
  12. package/dist/{api-SffjRQ1b.mjs → api-D57dsd6_.mjs} +10 -10
  13. package/dist/{apiMachine-BpW9t8MO.mjs → apiMachine-78Aqzg--.mjs} +21 -14
  14. package/dist/{apiMachine-gFA54X7y.cjs → apiMachine-fFFaWxYy.cjs} +33 -26
  15. package/dist/{assistantTools-BfA0R3_m.cjs → assistantTools-CwESq24n.cjs} +6 -6
  16. package/dist/{assistantTools-CgiTbnWb.mjs → assistantTools-mEz6uNqL.mjs} +6 -6
  17. package/dist/{attachmentContent-DMMZzevR.cjs → attachmentContent-GHOk6Muq.cjs} +2 -2
  18. package/dist/{attachmentContent-CSGxr71v.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-x4CEoysH.cjs → auth-B8EagV6G.cjs} +8 -8
  22. package/dist/{auth-DdyVZSo6.mjs → auth-BOaHWquu.mjs} +8 -8
  23. package/dist/{auth-Bt4ceBBy.cjs → auth-BbSdXMQ_.cjs} +5 -5
  24. package/dist/{auth-CYHjQ8oQ.mjs → auth-C8V7-oUT.mjs} +5 -5
  25. package/dist/{auto-BDXDUnjB.cjs → auto-Bw_h0yVc.cjs} +15 -14
  26. package/dist/{auto-CXLlRi3a.mjs → auto-CWDOX35m.mjs} +15 -14
  27. package/dist/{bootstrap-BNQq05jR.mjs → bootstrap-BKmsYSwh.mjs} +2 -2
  28. package/dist/{bootstrap-CkgIq8N3.cjs → bootstrap-DvZjEa9_.cjs} +2 -2
  29. package/dist/{browser-BDOlKWYe.cjs → browser-CBZj-1Wx.cjs} +1 -1
  30. package/dist/{browser-9pyhQr1R.mjs → browser-CrMAr5fI.mjs} +1 -1
  31. package/dist/{claudeLocal-BDuGFnjJ.cjs → claudeLocal-Bpw-u9et.cjs} +5 -5
  32. package/dist/{claudeLocal-CQa8qnwq.mjs → claudeLocal-dhdlcQ6F.mjs} +5 -5
  33. package/dist/{claudeLocalLauncher-CDqQI9ak.mjs → claudeLocalLauncher-BFfGT4eY.mjs} +10 -10
  34. package/dist/{claudeLocalLauncher-Bd5I2-j6.cjs → claudeLocalLauncher-DWFWuLhY.cjs} +10 -10
  35. package/dist/{codexThreadFork-BZqF-9bX.cjs → claudeSessionFork-D9-mANmu.cjs} +1 -137
  36. package/dist/{codexThreadFork-BCaEMBiM.mjs → claudeSessionFork-_DUrXaqd.mjs} +2 -134
  37. package/dist/{client-DOBWJL3u.cjs → client-CVQJWqjx.cjs} +2 -2
  38. package/dist/{client-C_axwRry.cjs → client-DiBTHWNU.cjs} +3 -3
  39. package/dist/{client-Brn-UwVk.mjs → client-Dk7x-s-O.mjs} +3 -3
  40. package/dist/{client-CXb1VJui.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-oeQKD6Qf.mjs → codexAppServerClient-C2ybs2mZ.mjs} +2 -2
  44. package/dist/{codexAppServerClient-ZzhUTWPo.cjs → codexAppServerClient-DlKv5TjG.cjs} +2 -2
  45. package/dist/{codexCommand-C7H0NpBe.cjs → codexCommand-4vLE31fj.cjs} +45 -40
  46. package/dist/{codexCommand-CJ82bl3l.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-CYpL1Ahd.cjs → config-Btd4B05_.cjs} +3 -3
  50. package/dist/{config-BglnktIo.mjs → config-CSOG_ZcP.mjs} +3 -3
  51. package/dist/{configuration-DoWFJUPm.mjs → configuration-A5gW_0GE.mjs} +1 -1
  52. package/dist/{configuration-v9f8LM9T.cjs → configuration-UsI0sxEv.cjs} +1 -1
  53. package/dist/{connect-yEvjdRvx.cjs → connect-C9yxp8Om.cjs} +13 -13
  54. package/dist/{connect-hgcNjyAB.mjs → connect-DWYj8LP_.mjs} +13 -13
  55. package/dist/{context-B45vMtSZ.cjs → context-0FjjA4vJ.cjs} +1 -1
  56. package/dist/{context-C9GHPLEm.mjs → context-BXnxalWW.mjs} +1 -1
  57. package/dist/{controlClient-fEHE85bH.cjs → controlClient-BXktrQ4z.cjs} +3 -3
  58. package/dist/{controlClient-DjoKTtgK.mjs → controlClient-CYzHrh3e.mjs} +3 -3
  59. package/dist/{createSessionMetadata-mIeehclp.mjs → createSessionMetadata-Dyg33ZlU.mjs} +2 -2
  60. package/dist/{createSessionMetadata-BRLB9CNO.cjs → createSessionMetadata-EX1eAlHx.cjs} +2 -2
  61. package/dist/{deterministicJson-p835AdAU.mjs → deterministicJson-DiR7EOMO.mjs} +9 -9
  62. package/dist/{deterministicJson-DKDP_mM-.cjs → deterministicJson-eha_oMZ2.cjs} +9 -9
  63. package/dist/{doctor-hVNnSZJn.cjs → doctor-DunLBgVi.cjs} +6 -6
  64. package/dist/{doctor-BeUuQXFs.mjs → doctor-FuCvKdRa.mjs} +6 -6
  65. package/dist/{ensureDaemonRunning-Dg9aZfjs.cjs → ensureDaemonRunning-B4dZFmUy.cjs} +5 -5
  66. package/dist/{ensureDaemonRunning-CO7d1gOC.mjs → ensureDaemonRunning-EZkb-CAF.mjs} +5 -5
  67. package/dist/{handleResumeCommand-DnVmy7a3.cjs → handleResumeCommand-CKMIw4pE.cjs} +5 -5
  68. package/dist/{handleResumeCommand-BiTPK0qd.mjs → handleResumeCommand-CsXendKb.mjs} +5 -5
  69. package/dist/{index-CAFwetLk.mjs → index-9L39wqYR.mjs} +37 -37
  70. package/dist/{index-qdS1friN.mjs → index-BBg9j0XK.mjs} +8 -1
  71. package/dist/{index-LIn6nCcq.cjs → index-BOhgL3rh.cjs} +36 -36
  72. package/dist/{index-Pf2cV9cn.cjs → index-CZWAiydF.cjs} +4 -4
  73. package/dist/{index-Cqx-Raq6.mjs → index-CvXcVQ06.mjs} +3 -3
  74. package/dist/{index-DA7yINuk.cjs → index-DJ-oV52i.cjs} +8 -1
  75. package/dist/{index-SPGPenK5.mjs → index-DK2JpTJf.mjs} +4 -4
  76. package/dist/{index-gNTWtSKN.cjs → index-DRhWHEuW.cjs} +3 -3
  77. package/dist/index.cjs +2 -2
  78. package/dist/index.mjs +2 -2
  79. package/dist/{install-ClUUl3yp.mjs → install-B2duVo9a.mjs} +3 -3
  80. package/dist/{install-Bu85vlHD.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-C2dI0FAN.mjs → lidState-CigXWxhe.mjs} +1 -1
  86. package/dist/{lidState-KHHu1015.cjs → lidState-Ds-6ytZV.cjs} +1 -1
  87. package/dist/{localHappyAgentAuth-DCsetiyG.mjs → localHappyAgentAuth-CaCyKzYp.mjs} +1 -1
  88. package/dist/{localHappyAgentAuth-BXiHPXdC.cjs → localHappyAgentAuth-l0Na-5Ys.cjs} +1 -1
  89. package/dist/{logger-Bc8-u1w0.cjs → logger-7ucWm9wp.cjs} +2 -2
  90. package/dist/{logger-fXoNzNuB.mjs → logger-CGE4C8ho.mjs} +2 -2
  91. package/dist/{machineMetadata-BibDMFVx.cjs → machineMetadata-lMPtpF16.cjs} +3 -3
  92. package/dist/{machineMetadata-BHjehxJY.mjs → machineMetadata-ue1nkowa.mjs} +3 -3
  93. package/dist/{main-BktM4A1K.mjs → main-3fIFXD-t.mjs} +44 -44
  94. package/dist/{main-CLaX-t-b.cjs → main-CFI0datL.cjs} +44 -44
  95. package/dist/{mcp-CeUd9KDr.mjs → mcp-DARQBZ7l.mjs} +14 -14
  96. package/dist/{mcp-GBfE70nk.cjs → mcp-DfxLAc1G.cjs} +14 -14
  97. package/dist/{package-Cl5BEP5x.cjs → package-D1A-8ZJy.cjs} +7 -7
  98. package/dist/{package-uOg9SCKi.mjs → package-DQsvY1XN.mjs} +7 -7
  99. package/dist/{peerTools-Dz3_7Bkk.mjs → peerTools-D19hhSQF.mjs} +4 -4
  100. package/dist/{peerTools-CIeiy9wn.cjs → peerTools-DLwNaEEV.cjs} +4 -4
  101. package/dist/{persistence-oET5n61f.mjs → persistence-Cw8aLoyL.mjs} +3 -3
  102. package/dist/{persistence-CBNMzSa8.cjs → persistence-i0nQMLlk.cjs} +3 -3
  103. package/dist/{piRunnerArgs-Dk1ncwHF.mjs → piRunnerArgs-58t454gw.mjs} +1 -1
  104. package/dist/{piRunnerArgs-Bf7RUF__.cjs → piRunnerArgs-BUyxPxjZ.cjs} +1 -1
  105. package/dist/{piRuntime-BwRdhK_N.mjs → piRuntime-DVPixFjl.mjs} +1 -1
  106. package/dist/{piRuntime-B_6TE9Eb.cjs → piRuntime-Dff73XCb.cjs} +1 -1
  107. package/dist/{piTerminal-CagmEoez.cjs → piTerminal-Dz1RrO70.cjs} +16 -16
  108. package/dist/{piTerminal-Bap3R8Re.mjs → piTerminal-gHWFAyzq.mjs} +16 -16
  109. package/dist/{registerCommonHandlers-BjSV2Skz.cjs → registerCommonHandlers-CMROPdJz.cjs} +2 -2
  110. package/dist/{registerCommonHandlers-CrgvJsOy.mjs → registerCommonHandlers-Ckv5boQI.mjs} +2 -2
  111. package/dist/{registerKillSessionHandler-6TC2S3lf.cjs → registerKillSessionHandler-CA9-oelM.cjs} +11 -7
  112. package/dist/{registerKillSessionHandler-Cbc8Rgtd.mjs → registerKillSessionHandler-Cll4-o8Y.mjs} +11 -7
  113. package/dist/{remoteSessionClient-CO7qOjR0.mjs → remoteSessionClient-BMjsbuBh.mjs} +5 -5
  114. package/dist/{remoteSessionClient-BNx78NLb.cjs → remoteSessionClient-DX9jHLeW.cjs} +5 -5
  115. package/dist/{run-D5xAEWSB.cjs → run-CjbGo2wb.cjs} +32 -32
  116. package/dist/{run-2l5vSt2h.mjs → run-CrunzDlt.mjs} +31 -31
  117. package/dist/{runClaude-BX6ixjtW.cjs → runClaude-KN-4Y4LH.cjs} +20 -20
  118. package/dist/{runClaude-BgN6xo05.mjs → runClaude-WDBWRtnF.mjs} +20 -20
  119. package/dist/{runClaudeDeps-Bp20MScE.cjs → runClaudeDeps-DW-8lnHv.cjs} +212 -35
  120. package/dist/{runClaudeDeps-COBBhD9o.mjs → runClaudeDeps-QaEx8y5r.mjs} +216 -39
  121. package/dist/{runGemini-CSMPkt0p.cjs → runGemini-Djmwjdv1.cjs} +32 -32
  122. package/dist/{runGemini-Cc2jq-uh.mjs → runGemini-Nf6SKBpw.mjs} +32 -32
  123. package/dist/{runOpenClaw-CIlCwdW2.mjs → runOpenClaw-9nHtmYbN.mjs} +18 -18
  124. package/dist/{runOpenClaw-YBwua4Rf.cjs → runOpenClaw-CAqP5KFH.cjs} +18 -18
  125. package/dist/{sandbox-C4gXLP1p.cjs → sandbox-C8Dd8GPM.cjs} +4 -4
  126. package/dist/{sandbox-CNkwOtHI.mjs → sandbox-SP0THMt0.mjs} +4 -4
  127. package/dist/selfCheck-7FaZtVu2.mjs +84 -0
  128. package/dist/{selfCheck-CU8xSDsl.cjs → selfCheck-D9ZXrK7h.cjs} +34 -34
  129. package/dist/{send-CGHcKZ-w.mjs → send-DOx9aQsx.mjs} +8 -8
  130. package/dist/{send-DY9Nr-x4.cjs → send-LPk6Q5HI.cjs} +8 -8
  131. package/dist/{server-m2b5pamZ.mjs → server-BZNi8Hq_.mjs} +4 -4
  132. package/dist/{server-II51Mimf.cjs → server-CxT8jNyn.cjs} +6 -6
  133. package/dist/{sessionLock-Cw6FmbMv.mjs → sessionLock-CfLqJfeI.mjs} +2 -2
  134. package/dist/{sessionLock-7ePAYDOg.cjs → sessionLock-y9rnA4LK.cjs} +2 -2
  135. package/dist/{sessionModeFile-BVCV5f7E.cjs → sessionModeFile-B5YeoQJh.cjs} +1 -1
  136. package/dist/{sessionModeFile-CDmDyRkD.mjs → sessionModeFile-BKxgNH3P.mjs} +1 -1
  137. package/dist/{sessionOps-C_f1wKOr.mjs → sessionOps-CdwVPSZz.mjs} +4 -4
  138. package/dist/{sessionOps-DJdExmBy.cjs → sessionOps-GsELm2PZ.cjs} +4 -4
  139. package/dist/{sessionScanner-CaAHLyNV.mjs → sessionScanner-Cdukzo70.mjs} +3 -3
  140. package/dist/{sessionScanner-D1goKdd3.cjs → sessionScanner-aLEv7mD3.cjs} +3 -3
  141. package/dist/{sessions-DGs6ALNo.cjs → sessions-CfG4WGN0.cjs} +9 -9
  142. package/dist/{sessions-DnvmWUel.mjs → sessions-Dne-OiRL.mjs} +9 -9
  143. package/dist/{setupOfflineReconnection-R7XuR_sj.cjs → setupOfflineReconnection-CFwltTcP.cjs} +2 -2
  144. package/dist/{setupOfflineReconnection-CVViqZft.mjs → setupOfflineReconnection-DiQma2Cc.mjs} +2 -2
  145. package/dist/{spawn-CXTH7qg1.cjs → spawn-BI_sdgWs.cjs} +15 -14
  146. package/dist/{spawn-DNYSvFtC.mjs → spawn-DkgP2BGF.mjs} +13 -12
  147. package/dist/{spawnAgents-DZzZ9jMI.mjs → spawnAgents-Y1LjnCt9.mjs} +1 -1
  148. package/dist/{spawnAgents-BGQiEF-w.cjs → spawnAgents-iSu1Xzs5.cjs} +1 -1
  149. package/dist/{spawnHappyCLI-cqWQbwsb.mjs → spawnHappyCLI-9mx4lPxh.mjs} +1 -1
  150. package/dist/{spawnHappyCLI-BhYj84rv.cjs → spawnHappyCLI-BRdx0sAX.cjs} +1 -1
  151. package/dist/{startFileWatcher-CKKx-8ZO.cjs → startFileWatcher-C2HC2_Dg.cjs} +1 -1
  152. package/dist/{startFileWatcher-CdegMbJj.mjs → startFileWatcher-COD5UKNs.mjs} +1 -1
  153. package/dist/{streamRelay-FPVbHpbM.mjs → streamRelay-BLgU9X3R.mjs} +1 -1
  154. package/dist/{streamRelay-BiKw59Cc.cjs → streamRelay-DnObXZZj.cjs} +1 -1
  155. package/dist/{sync-CxD-w_40.mjs → sync-BpLasLu2.mjs} +1 -1
  156. package/dist/{sync-CVk4QERO.cjs → sync-Dj92ZJ8Y.cjs} +1 -1
  157. package/dist/{systemPrompt-BygJcmbi.cjs → systemPrompt-CyEz_IfR.cjs} +2 -2
  158. package/dist/{systemPrompt-DmtypUc7.mjs → systemPrompt-DsQoUgQw.mjs} +2 -2
  159. package/dist/{teams-BOC6nIPL.mjs → teams-BETNMjpZ.mjs} +6 -6
  160. package/dist/{teams-BsvpOBfn.cjs → teams-Ctx9zXn4.cjs} +6 -6
  161. package/dist/{time-CNRE4ChD.cjs → time-CLwVAz6s.cjs} +1 -1
  162. package/dist/{time-BZNdNiIV.mjs → time-CVvxdEDh.mjs} +1 -1
  163. package/dist/{titleGenerator-ox6ptCsp.mjs → titleGenerator-B4AW3dLr.mjs} +12 -2
  164. package/dist/{titleGenerator-CFRhU-xq.cjs → titleGenerator-FDpdizn7.cjs} +13 -3
  165. package/dist/{todo-B-KB7oAB.cjs → todo-C3tyFeq1.cjs} +6 -6
  166. package/dist/{todo-C5KBVbUw.mjs → todo-Jk4Vs7hP.mjs} +6 -6
  167. package/dist/{tools-BZabNIid.mjs → tools-BA1qkiV1.mjs} +2 -2
  168. package/dist/{tools-CsSovyNp.cjs → tools-CGxq3I52.cjs} +2 -2
  169. package/dist/{tools-lMDra4Pv.cjs → tools-O5beDK-s.cjs} +1 -1
  170. package/dist/{tools-BmQQUATY.mjs → tools-_kFe4m_l.mjs} +1 -1
  171. package/dist/{uninstall-B1WLtC1d.mjs → uninstall-C_mdAZlm.mjs} +3 -3
  172. package/dist/{uninstall-fvA5aWpU.cjs → uninstall-DHKF90lo.cjs} +3 -3
  173. package/package.json +7 -7
  174. package/dist/selfCheck-hJ6PCh7v.mjs +0 -84
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  var node_crypto = require('node:crypto');
4
- var configuration = require('./configuration-v9f8LM9T.cjs');
5
- var persistence = require('./persistence-CBNMzSa8.cjs');
6
- var context = require('./context-B45vMtSZ.cjs');
4
+ var configuration = require('./configuration-UsI0sxEv.cjs');
5
+ var persistence = require('./persistence-i0nQMLlk.cjs');
6
+ var context = require('./context-0FjjA4vJ.cjs');
7
7
 
8
8
  async function teamRequest(path, method, token, scoped, body) {
9
9
  const response = await fetch(`${configuration.configuration.serverUrl}${path}`, {
@@ -1,7 +1,7 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import { c as configuration } from './configuration-DoWFJUPm.mjs';
3
- import { readSettings, readPersistedSessions, readCredentialsForConfiguredRelay } from './persistence-oET5n61f.mjs';
4
- import { r as readTeamScope, t as teamScopePath, w as writeTeamScope } from './context-C9GHPLEm.mjs';
2
+ import { c as configuration } from './configuration-A5gW_0GE.mjs';
3
+ import { readSettings, readPersistedSessions, readCredentialsForConfiguredRelay } from './persistence-Cw8aLoyL.mjs';
4
+ import { r as readTeamScope, t as teamScopePath, w as writeTeamScope } from './context-BXnxalWW.mjs';
5
5
 
6
6
  async function teamRequest(path, method, token, scoped, body) {
7
7
  const response = await fetch(`${configuration.serverUrl}${path}`, {
@@ -1,5 +1,5 @@
1
- import { c as configuration } from './configuration-DoWFJUPm.mjs';
2
- import { readCredentialsForConfiguredRelay, readSettings } from './persistence-oET5n61f.mjs';
1
+ import { c as configuration } from './configuration-A5gW_0GE.mjs';
2
+ import { readCredentialsForConfiguredRelay, readSettings } from './persistence-Cw8aLoyL.mjs';
3
3
 
4
4
  class AutomationsRequestError extends Error {
5
5
  constructor(status, code, runStatus) {
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var tools = require('../tools-lMDra4Pv.cjs');
4
- var tools$1 = require('../tools-CsSovyNp.cjs');
5
- var peerTools = require('../peerTools-CIeiy9wn.cjs');
3
+ var tools = require('../tools-O5beDK-s.cjs');
4
+ var tools$1 = require('../tools-CGxq3I52.cjs');
5
+ var peerTools = require('../peerTools-DLwNaEEV.cjs');
6
6
  var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
7
7
  var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
8
8
  var index_js = require('@modelcontextprotocol/sdk/client/index.js');
@@ -10,32 +10,32 @@ var streamableHttp_js = require('@modelcontextprotocol/sdk/client/streamableHttp
10
10
  var z = require('zod');
11
11
  var limits = require('../limits-C-a7gr04.cjs');
12
12
  var agentGuidance = require('../agentGuidance-B5NATuFa.cjs');
13
- require('../client-C_axwRry.cjs');
13
+ require('../client-DiBTHWNU.cjs');
14
14
  require('node:crypto');
15
- require('../configuration-v9f8LM9T.cjs');
15
+ require('../configuration-UsI0sxEv.cjs');
16
16
  require('node:fs');
17
17
  require('node:os');
18
18
  require('node:path');
19
- require('../package-Cl5BEP5x.cjs');
19
+ require('../package-D1A-8ZJy.cjs');
20
20
  require('node:fs/promises');
21
- require('../persistence-CBNMzSa8.cjs');
21
+ require('../persistence-i0nQMLlk.cjs');
22
22
  require('../authRelay-BdYkC1Po.cjs');
23
23
  require('tweetnacl');
24
- require('../logger-Bc8-u1w0.cjs');
24
+ require('../logger-7ucWm9wp.cjs');
25
25
  require('chalk');
26
26
  require('node:util');
27
- require('../context-B45vMtSZ.cjs');
28
- require('../index-DA7yINuk.cjs');
27
+ require('../context-0FjjA4vJ.cjs');
28
+ require('../index-DJ-oV52i.cjs');
29
29
  require('@paralleldrive/cuid2');
30
- require('../client-DOBWJL3u.cjs');
30
+ require('../client-CVQJWqjx.cjs');
31
31
  require('../ids-B6ZC0HGt.cjs');
32
- require('../controlClient-fEHE85bH.cjs');
33
- require('../sessionOps-DJdExmBy.cjs');
32
+ require('../controlClient-BXktrQ4z.cjs');
33
+ require('../sessionOps-GsELm2PZ.cjs');
34
34
  require('axios');
35
- require('../time-CNRE4ChD.cjs');
35
+ require('../time-CLwVAz6s.cjs');
36
36
  require('socket.io-client');
37
37
  require('../backgroundTaskActivity-CBvUdj39.cjs');
38
- require('../remoteSessionClient-BNx78NLb.cjs');
38
+ require('../remoteSessionClient-DX9jHLeW.cjs');
39
39
  require('../trimIdent-4gvk9Wk6.cjs');
40
40
 
41
41
  function parseArgs(argv) {
@@ -1,6 +1,6 @@
1
- import { r as registerTeamsTools } from '../tools-BmQQUATY.mjs';
2
- import { r as registerAutomationTools } from '../tools-BZabNIid.mjs';
3
- import { r as registerSessionPeerTools } from '../peerTools-Dz3_7Bkk.mjs';
1
+ import { r as registerTeamsTools } from '../tools-_kFe4m_l.mjs';
2
+ import { r as registerAutomationTools } from '../tools-BA1qkiV1.mjs';
3
+ import { r as registerSessionPeerTools } from '../peerTools-D19hhSQF.mjs';
4
4
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
5
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
6
6
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
@@ -8,32 +8,32 @@ import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/
8
8
  import { z } from 'zod';
9
9
  import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION } from '../limits-DIo7rEBR.mjs';
10
10
  import { P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION } from '../agentGuidance-CQuNlNx8.mjs';
11
- import '../client-Brn-UwVk.mjs';
11
+ import '../client-Dk7x-s-O.mjs';
12
12
  import 'node:crypto';
13
- import '../configuration-DoWFJUPm.mjs';
13
+ import '../configuration-A5gW_0GE.mjs';
14
14
  import 'node:fs';
15
15
  import 'node:os';
16
16
  import 'node:path';
17
- import '../package-uOg9SCKi.mjs';
17
+ import '../package-DQsvY1XN.mjs';
18
18
  import 'node:fs/promises';
19
- import '../persistence-oET5n61f.mjs';
19
+ import '../persistence-Cw8aLoyL.mjs';
20
20
  import '../authRelay-DSAvg1uv.mjs';
21
21
  import 'tweetnacl';
22
- import '../logger-fXoNzNuB.mjs';
22
+ import '../logger-CGE4C8ho.mjs';
23
23
  import 'chalk';
24
24
  import 'node:util';
25
- import '../context-C9GHPLEm.mjs';
26
- import '../index-qdS1friN.mjs';
25
+ import '../context-BXnxalWW.mjs';
26
+ import '../index-BBg9j0XK.mjs';
27
27
  import '@paralleldrive/cuid2';
28
- import '../client-CXb1VJui.mjs';
28
+ import '../client-DwqHDsLb.mjs';
29
29
  import '../ids-DU6sLx4C.mjs';
30
- import '../controlClient-DjoKTtgK.mjs';
31
- import '../sessionOps-C_f1wKOr.mjs';
30
+ import '../controlClient-CYzHrh3e.mjs';
31
+ import '../sessionOps-CdwVPSZz.mjs';
32
32
  import 'axios';
33
- import '../time-BZNdNiIV.mjs';
33
+ import '../time-CVvxdEDh.mjs';
34
34
  import 'socket.io-client';
35
35
  import '../backgroundTaskActivity-8PdPxrvy.mjs';
36
- import '../remoteSessionClient-CO7qOjR0.mjs';
36
+ import '../remoteSessionClient-BMjsbuBh.mjs';
37
37
  import '../trimIdent-BAjmv_TG.mjs';
38
38
 
39
39
  function parseArgs(argv) {
@@ -1,10 +1,10 @@
1
1
  import { execSync } from 'node:child_process';
2
2
  import { spawn } from 'cross-spawn';
3
3
  import { createInterface } from 'node:readline';
4
- import { l as logger } from './logger-fXoNzNuB.mjs';
4
+ import { l as logger } from './logger-CGE4C8ho.mjs';
5
5
  import { c as contentLogMetadata, e as errorLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
6
6
  import { i as initializeSandbox, w as wrapForMcpTransport } from './manager-BQ4flvQZ.mjs';
7
- import { p as packageJson } from './package-uOg9SCKi.mjs';
7
+ import { p as packageJson } from './package-DQsvY1XN.mjs';
8
8
 
9
9
  function isAppServerAvailable() {
10
10
  try {
@@ -3,10 +3,10 @@
3
3
  var node_child_process = require('node:child_process');
4
4
  var spawn = require('cross-spawn');
5
5
  var node_readline = require('node:readline');
6
- var logger = require('./logger-Bc8-u1w0.cjs');
6
+ var logger = require('./logger-7ucWm9wp.cjs');
7
7
  var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
8
8
  var manager = require('./manager-Cly8xVIR.cjs');
9
- var _package = require('./package-Cl5BEP5x.cjs');
9
+ var _package = require('./package-D1A-8ZJy.cjs');
10
10
 
11
11
  function isAppServerAvailable() {
12
12
  try {
@@ -1,60 +1,60 @@
1
1
  'use strict';
2
2
 
3
- var auth = require('./auth-Bt4ceBBy.cjs');
4
- var index = require('./index-DA7yINuk.cjs');
3
+ var auth = require('./auth-BbSdXMQ_.cjs');
4
+ var index = require('./index-DJ-oV52i.cjs');
5
5
  var node_crypto = require('node:crypto');
6
6
  var cuid2 = require('@paralleldrive/cuid2');
7
7
  var agentAttachments = require('./agentAttachments-Dbw8iMCZ.cjs');
8
- var attachmentContent = require('./attachmentContent-DMMZzevR.cjs');
8
+ var attachmentContent = require('./attachmentContent-GHOk6Muq.cjs');
9
9
  var ink = require('ink');
10
- var sessionLock = require('./sessionLock-7ePAYDOg.cjs');
10
+ var sessionLock = require('./sessionLock-y9rnA4LK.cjs');
11
11
  var React = require('react');
12
- var api = require('./api-B2vLMS-z.cjs');
13
- var codexAppServerClient = require('./codexAppServerClient-ZzhUTWPo.cjs');
14
- var logger = require('./logger-Bc8-u1w0.cjs');
15
- var BasePermissionHandler = require('./BasePermissionHandler-2R0uH2CI.cjs');
16
- var BaseReasoningProcessor = require('./BaseReasoningProcessor-fsVNmCEF.cjs');
12
+ var api = require('./api-CQnLOqRS.cjs');
13
+ var codexAppServerClient = require('./codexAppServerClient-DlKv5TjG.cjs');
14
+ var logger = require('./logger-7ucWm9wp.cjs');
15
+ var BasePermissionHandler = require('./BasePermissionHandler-D4B-NNu2.cjs');
16
+ var BaseReasoningProcessor = require('./BaseReasoningProcessor-CqLl-ikP.cjs');
17
17
  var node_child_process = require('node:child_process');
18
- var persistence = require('./persistence-CBNMzSa8.cjs');
19
- var machineMetadata = require('./machineMetadata-BibDMFVx.cjs');
20
- var configuration = require('./configuration-v9f8LM9T.cjs');
21
- var registerKillSessionHandler = require('./registerKillSessionHandler-6TC2S3lf.cjs');
18
+ var persistence = require('./persistence-i0nQMLlk.cjs');
19
+ var machineMetadata = require('./machineMetadata-lMPtpF16.cjs');
20
+ var configuration = require('./configuration-UsI0sxEv.cjs');
21
+ var registerKillSessionHandler = require('./registerKillSessionHandler-CA9-oelM.cjs');
22
22
  var projectPath = require('./projectPath-ChLhdOyt.cjs');
23
23
  var path = require('node:path');
24
- var createSessionMetadata = require('./createSessionMetadata-BRLB9CNO.cjs');
25
- var deterministicJson = require('./deterministicJson-DKDP_mM-.cjs');
24
+ var createSessionMetadata = require('./createSessionMetadata-EX1eAlHx.cjs');
25
+ var deterministicJson = require('./deterministicJson-eha_oMZ2.cjs');
26
26
  var messageBuffer = require('./messageBuffer-fJMH6uY8.cjs');
27
- var controlClient = require('./controlClient-fEHE85bH.cjs');
27
+ var controlClient = require('./controlClient-BXktrQ4z.cjs');
28
28
  var authRelay = require('./authRelay-BdYkC1Po.cjs');
29
- var setupOfflineReconnection = require('./setupOfflineReconnection-R7XuR_sj.cjs');
29
+ var setupOfflineReconnection = require('./setupOfflineReconnection-CFwltTcP.cjs');
30
30
  var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
31
31
  var specialCommands = require('./specialCommands-DSsTeRej.cjs');
32
32
  var constants = require('./constants-VJ0N6WuG.cjs');
33
33
  var defaultPermissionMode = require('./defaultPermissionMode-CxmTXUQR.cjs');
34
34
  var editPaths = require('./editPaths-Bqp4OFPw.cjs');
35
- var ensureDaemonRunning = require('./ensureDaemonRunning-Dg9aZfjs.cjs');
35
+ var ensureDaemonRunning = require('./ensureDaemonRunning-B4dZFmUy.cjs');
36
36
  require('tweetnacl');
37
37
  require('axios');
38
- require('./time-CNRE4ChD.cjs');
39
- require('./browser-BDOlKWYe.cjs');
38
+ require('./time-CLwVAz6s.cjs');
39
+ require('./browser-CBZj-1Wx.cjs');
40
40
  require('open');
41
41
  require('zod');
42
42
  require('node:fs/promises');
43
- require('./attachmentLimits-CzVrqgLR.cjs');
43
+ require('./attachmentLimits-DzlBPyJP.cjs');
44
44
  require('node:fs');
45
45
  require('node:events');
46
46
  require('socket.io-client');
47
47
  require('./limits-C-a7gr04.cjs');
48
- require('./lidState-KHHu1015.cjs');
48
+ require('./lidState-Ds-6ytZV.cjs');
49
49
  require('os');
50
50
  require('child_process');
51
- require('./registerCommonHandlers-BjSV2Skz.cjs');
51
+ require('./registerCommonHandlers-CMROPdJz.cjs');
52
52
  require('util');
53
53
  require('fs/promises');
54
54
  require('crypto');
55
55
  require('path');
56
56
  require('cross-spawn');
57
- require('./sync-CVk4QERO.cjs');
57
+ require('./sync-Dj92ZJ8Y.cjs');
58
58
  require('./backgroundTaskActivity-CBvUdj39.cjs');
59
59
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
60
60
  require('chalk');
@@ -62,34 +62,34 @@ require('node:readline');
62
62
  require('./manager-Cly8xVIR.cjs');
63
63
  require('@anthropic-ai/sandbox-runtime');
64
64
  require('node:os');
65
- require('./package-Cl5BEP5x.cjs');
65
+ require('./package-D1A-8ZJy.cjs');
66
66
  require('node:util');
67
67
  require('./detectCLI-DR9ZaN6B.cjs');
68
68
  require('fs');
69
- require('./localHappyAgentAuth-BXiHPXdC.cjs');
69
+ require('./localHappyAgentAuth-l0Na-5Ys.cjs');
70
70
  require('./types-CRS-srZK.cjs');
71
71
  require('url');
72
- require('./client-C_axwRry.cjs');
73
- require('./context-B45vMtSZ.cjs');
74
- require('./sessionOps-DJdExmBy.cjs');
72
+ require('./client-DiBTHWNU.cjs');
73
+ require('./context-0FjjA4vJ.cjs');
74
+ require('./sessionOps-GsELm2PZ.cjs');
75
75
  require('./resources-JDPugcDq.cjs');
76
- require('./tools-lMDra4Pv.cjs');
77
- require('./tools-CsSovyNp.cjs');
78
- require('./client-DOBWJL3u.cjs');
79
- require('./peerTools-CIeiy9wn.cjs');
76
+ require('./tools-O5beDK-s.cjs');
77
+ require('./tools-CGxq3I52.cjs');
78
+ require('./client-CVQJWqjx.cjs');
79
+ require('./peerTools-DLwNaEEV.cjs');
80
80
  require('./ids-B6ZC0HGt.cjs');
81
- require('./remoteSessionClient-BNx78NLb.cjs');
81
+ require('./remoteSessionClient-DX9jHLeW.cjs');
82
82
  require('@modelcontextprotocol/sdk/server/mcp.js');
83
83
  require('node:http');
84
84
  require('@modelcontextprotocol/sdk/server/streamableHttp.js');
85
- require('./assistantTools-BfA0R3_m.cjs');
85
+ require('./assistantTools-CwESq24n.cjs');
86
86
  require('./terminals-B_bfC9c2.cjs');
87
87
  require('./terminalTitleSuggest-DhvRFX3H.cjs');
88
88
  require('./tmuxSocket-D-Xt6Vn-.cjs');
89
- require('./bootstrap-CkgIq8N3.cjs');
89
+ require('./bootstrap-DvZjEa9_.cjs');
90
90
  require('./agentGuidance-B5NATuFa.cjs');
91
91
  require('./previewPath-B0rBdhy1.cjs');
92
- require('./spawnHappyCLI-BhYj84rv.cjs');
92
+ require('./spawnHappyCLI-BRdx0sAX.cjs');
93
93
  require('./doctorReadiness-BCZGcN0a.cjs');
94
94
 
95
95
  function getStartedSubagents(state) {
@@ -1053,10 +1053,10 @@ async function importCodexThread(opts) {
1053
1053
  });
1054
1054
  } catch (error) {
1055
1055
  const reason = error instanceof Error ? error.message : String(error);
1056
- throw new Error(`Failed to import Codex thread ${opts.threadId}: ${reason}`);
1056
+ throw failVisibly(opts.session, `Failed to import Codex thread ${opts.threadId}: ${reason}`);
1057
1057
  }
1058
1058
  if (!forked.threadId || forked.threadId === opts.threadId) {
1059
- throw new Error(`Failed to import Codex thread ${opts.threadId}: Codex did not create an independent copy`);
1059
+ throw failVisibly(opts.session, `Failed to import Codex thread ${opts.threadId}: Codex did not create an independent copy`);
1060
1060
  }
1061
1061
  opts.session.updateMetadata((currentMetadata) => ({
1062
1062
  ...currentMetadata,
@@ -1074,10 +1074,15 @@ async function importCodexThread(opts) {
1074
1074
  opts.messageBuffer.addMessage(`Imported thread ${trimIdent.trimIdent(opts.threadId)} as ${trimIdent.trimIdent(forked.threadId)}`, "status");
1075
1075
  opts.session.sendSessionEvent({
1076
1076
  type: "message",
1077
- message: `Imported Codex thread ${opts.threadId} (continuing as ${forked.threadId})`
1077
+ // B-529: an empty fork used to look like "the content never loaded".
1078
+ 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
1079
  });
1079
1080
  return { threadId: forked.threadId, model: forked.model, replayed: envelopes.length };
1080
1081
  }
1082
+ function failVisibly(session, message) {
1083
+ session.sendSessionEvent({ type: "message", message });
1084
+ return new Error(message);
1085
+ }
1081
1086
 
1082
1087
  function emitReadyIfIdle({ pending, queueSize, shouldExit, sendReady, notify }) {
1083
1088
  if (shouldExit) {
@@ -1,58 +1,58 @@
1
- import { a as authAndSetupMachineIfNeeded } from './auth-CYHjQ8oQ.mjs';
2
- import { e as createEnvelope, l as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY } from './index-qdS1friN.mjs';
1
+ import { a as authAndSetupMachineIfNeeded } from './auth-C8V7-oUT.mjs';
2
+ import { e as createEnvelope, l as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY } from './index-BBg9j0XK.mjs';
3
3
  import { randomUUID } from 'node:crypto';
4
4
  import { createId } from '@paralleldrive/cuid2';
5
5
  import { r as registerAgentAttachmentDownloads } from './agentAttachments-M_B5qEF2.mjs';
6
- import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-CSGxr71v.mjs';
6
+ import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-s1xPha4Q.mjs';
7
7
  import { useStdout, useInput, Box, Text, render } from 'ink';
8
- import { c as claimSessionOrExit, a as applyServerSnapshot, w as withoutServerSnapshot, m as mergeReconnectMetadata } from './sessionLock-Cw6FmbMv.mjs';
8
+ import { c as claimSessionOrExit, a as applyServerSnapshot, w as withoutServerSnapshot, m as mergeReconnectMetadata } from './sessionLock-CfLqJfeI.mjs';
9
9
  import React, { useState, useRef, useEffect, useCallback } from 'react';
10
- import { c as connectionState, A as ApiClient } from './api-SffjRQ1b.mjs';
11
- import { C as CodexAppServerClient } from './codexAppServerClient-oeQKD6Qf.mjs';
12
- import { l as logger } from './logger-fXoNzNuB.mjs';
13
- import { B as BasePermissionHandler } from './BasePermissionHandler-BvvhBTja.mjs';
14
- import { B as BaseReasoningProcessor } from './BaseReasoningProcessor-DyhO1uoU.mjs';
10
+ import { c as connectionState, A as ApiClient } from './api-D57dsd6_.mjs';
11
+ import { C as CodexAppServerClient } from './codexAppServerClient-C2ybs2mZ.mjs';
12
+ import { l as logger } from './logger-CGE4C8ho.mjs';
13
+ import { B as BasePermissionHandler } from './BasePermissionHandler-DUBySe0f.mjs';
14
+ import { B as BaseReasoningProcessor } from './BaseReasoningProcessor-9TybUGTq.mjs';
15
15
  import { execSync } from 'node:child_process';
16
- import { readSettings } from './persistence-oET5n61f.mjs';
17
- import { g as getInitialMachineMetadata } from './machineMetadata-BHjehxJY.mjs';
18
- import { c as configuration } from './configuration-DoWFJUPm.mjs';
19
- import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-Cbc8Rgtd.mjs';
16
+ import { readSettings } from './persistence-Cw8aLoyL.mjs';
17
+ import { g as getInitialMachineMetadata } from './machineMetadata-ue1nkowa.mjs';
18
+ import { c as configuration } from './configuration-A5gW_0GE.mjs';
19
+ import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-Cll4-o8Y.mjs';
20
20
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
21
21
  import { join } from 'node:path';
22
- import { c as createSessionMetadata } from './createSessionMetadata-mIeehclp.mjs';
23
- import { h as hashObject, s as startHappyServer } from './deterministicJson-p835AdAU.mjs';
22
+ import { c as createSessionMetadata } from './createSessionMetadata-Dyg33ZlU.mjs';
23
+ import { h as hashObject, s as startHappyServer } from './deterministicJson-DiR7EOMO.mjs';
24
24
  import { M as MessageBuffer } from './messageBuffer-BWlGgR3A.mjs';
25
- import { n as notifyDaemonSessionStarted, g as reportSessionEditToDaemon } from './controlClient-DjoKTtgK.mjs';
25
+ import { n as notifyDaemonSessionStarted, g as reportSessionEditToDaemon } from './controlClient-CYzHrh3e.mjs';
26
26
  import { d as decodeBase64, e as encodeBase64 } from './authRelay-DSAvg1uv.mjs';
27
- import { s as setupOfflineReconnection } from './setupOfflineReconnection-CVViqZft.mjs';
27
+ import { s as setupOfflineReconnection } from './setupOfflineReconnection-DiQma2Cc.mjs';
28
28
  import { t as trimIdent } from './trimIdent-BAjmv_TG.mjs';
29
29
  import { p as parseSpecialCommand } from './specialCommands-BSqhYg5X.mjs';
30
30
  import { C as CHANGE_TITLE_INSTRUCTION } from './constants-BC4St0xd.mjs';
31
31
  import { a as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-BnxJPVHT.mjs';
32
32
  import { E as EditReportThrottle, a as extractCodexPatchPaths } from './editPaths-BVfS_FFL.mjs';
33
- import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-CO7d1gOC.mjs';
33
+ import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-EZkb-CAF.mjs';
34
34
  import 'tweetnacl';
35
35
  import 'axios';
36
- import './time-BZNdNiIV.mjs';
37
- import './browser-9pyhQr1R.mjs';
36
+ import './time-CVvxdEDh.mjs';
37
+ import './browser-CrMAr5fI.mjs';
38
38
  import 'open';
39
39
  import 'zod';
40
40
  import 'node:fs/promises';
41
- import './attachmentLimits-yba1uHFO.mjs';
41
+ import './attachmentLimits-D5pgmASK.mjs';
42
42
  import 'node:fs';
43
43
  import 'node:events';
44
44
  import 'socket.io-client';
45
45
  import './limits-DIo7rEBR.mjs';
46
- import './lidState-C2dI0FAN.mjs';
46
+ import './lidState-CigXWxhe.mjs';
47
47
  import 'os';
48
48
  import 'child_process';
49
- import './registerCommonHandlers-CrgvJsOy.mjs';
49
+ import './registerCommonHandlers-Ckv5boQI.mjs';
50
50
  import 'util';
51
51
  import 'fs/promises';
52
52
  import 'crypto';
53
53
  import 'path';
54
54
  import 'cross-spawn';
55
- import './sync-CxD-w_40.mjs';
55
+ import './sync-BpLasLu2.mjs';
56
56
  import './backgroundTaskActivity-8PdPxrvy.mjs';
57
57
  import './contentLogMetadata-BlWI0egu.mjs';
58
58
  import 'chalk';
@@ -60,34 +60,34 @@ import 'node:readline';
60
60
  import './manager-BQ4flvQZ.mjs';
61
61
  import '@anthropic-ai/sandbox-runtime';
62
62
  import 'node:os';
63
- import './package-uOg9SCKi.mjs';
63
+ import './package-DQsvY1XN.mjs';
64
64
  import 'node:util';
65
65
  import './detectCLI-CSGMlV51.mjs';
66
66
  import 'fs';
67
- import './localHappyAgentAuth-DCsetiyG.mjs';
67
+ import './localHappyAgentAuth-CaCyKzYp.mjs';
68
68
  import './types-CkqAACXx.mjs';
69
69
  import 'url';
70
- import './client-Brn-UwVk.mjs';
71
- import './context-C9GHPLEm.mjs';
72
- import './sessionOps-C_f1wKOr.mjs';
70
+ import './client-Dk7x-s-O.mjs';
71
+ import './context-BXnxalWW.mjs';
72
+ import './sessionOps-CdwVPSZz.mjs';
73
73
  import './resources-BdFBQi8r.mjs';
74
- import './tools-BmQQUATY.mjs';
75
- import './tools-BZabNIid.mjs';
76
- import './client-CXb1VJui.mjs';
77
- import './peerTools-Dz3_7Bkk.mjs';
74
+ import './tools-_kFe4m_l.mjs';
75
+ import './tools-BA1qkiV1.mjs';
76
+ import './client-DwqHDsLb.mjs';
77
+ import './peerTools-D19hhSQF.mjs';
78
78
  import './ids-DU6sLx4C.mjs';
79
- import './remoteSessionClient-CO7qOjR0.mjs';
79
+ import './remoteSessionClient-BMjsbuBh.mjs';
80
80
  import '@modelcontextprotocol/sdk/server/mcp.js';
81
81
  import 'node:http';
82
82
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
83
- import './assistantTools-CgiTbnWb.mjs';
83
+ import './assistantTools-mEz6uNqL.mjs';
84
84
  import './terminals-Dlg0x3nY.mjs';
85
85
  import './terminalTitleSuggest-CeKsX_V6.mjs';
86
86
  import './tmuxSocket-B8Yx20sT.mjs';
87
- import './bootstrap-BNQq05jR.mjs';
87
+ import './bootstrap-BKmsYSwh.mjs';
88
88
  import './agentGuidance-CQuNlNx8.mjs';
89
89
  import './previewPath-CXN4Vag0.mjs';
90
- import './spawnHappyCLI-cqWQbwsb.mjs';
90
+ import './spawnHappyCLI-9mx4lPxh.mjs';
91
91
  import './doctorReadiness-C208SMN9.mjs';
92
92
 
93
93
  function getStartedSubagents(state) {
@@ -1051,10 +1051,10 @@ async function importCodexThread(opts) {
1051
1051
  });
1052
1052
  } catch (error) {
1053
1053
  const reason = error instanceof Error ? error.message : String(error);
1054
- throw new Error(`Failed to import Codex thread ${opts.threadId}: ${reason}`);
1054
+ throw failVisibly(opts.session, `Failed to import Codex thread ${opts.threadId}: ${reason}`);
1055
1055
  }
1056
1056
  if (!forked.threadId || forked.threadId === opts.threadId) {
1057
- throw new Error(`Failed to import Codex thread ${opts.threadId}: Codex did not create an independent copy`);
1057
+ throw failVisibly(opts.session, `Failed to import Codex thread ${opts.threadId}: Codex did not create an independent copy`);
1058
1058
  }
1059
1059
  opts.session.updateMetadata((currentMetadata) => ({
1060
1060
  ...currentMetadata,
@@ -1072,10 +1072,15 @@ async function importCodexThread(opts) {
1072
1072
  opts.messageBuffer.addMessage(`Imported thread ${trimIdent(opts.threadId)} as ${trimIdent(forked.threadId)}`, "status");
1073
1073
  opts.session.sendSessionEvent({
1074
1074
  type: "message",
1075
- message: `Imported Codex thread ${opts.threadId} (continuing as ${forked.threadId})`
1075
+ // B-529: an empty fork used to look like "the content never loaded".
1076
+ 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`
1076
1077
  });
1077
1078
  return { threadId: forked.threadId, model: forked.model, replayed: envelopes.length };
1078
1079
  }
1080
+ function failVisibly(session, message) {
1081
+ session.sendSessionEvent({ type: "message", message });
1082
+ return new Error(message);
1083
+ }
1079
1084
 
1080
1085
  function emitReadyIfIdle({ pending, queueSize, shouldExit, sendReady, notify }) {
1081
1086
  if (shouldExit) {
@@ -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;