very-happy-cli 0.2.166 → 0.2.167

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 (178) hide show
  1. package/dist/{AcpBackend-20VHOXwb.cjs → AcpBackend-D1IKJGz_.cjs} +3 -3
  2. package/dist/{AcpBackend-tRWk7yi7.mjs → AcpBackend-kFZlee5E.mjs} +3 -3
  3. package/dist/{BasePermissionHandler-COKc4pmt.cjs → BasePermissionHandler-DHxYAK5L.cjs} +1 -1
  4. package/dist/{BasePermissionHandler-CDCLIrZJ.mjs → BasePermissionHandler-DS0kRTNI.mjs} +1 -1
  5. package/dist/{BaseReasoningProcessor-BDVKvooR.mjs → BaseReasoningProcessor-BRtCCt7q.mjs} +1 -1
  6. package/dist/{BaseReasoningProcessor-DAGQdkNp.cjs → BaseReasoningProcessor-CsjVdt_H.cjs} +1 -1
  7. package/dist/{agentHome-2IbIjKCa.mjs → agentHome-Ct-VXFeG.mjs} +4 -4
  8. package/dist/{agentHome-KVWj6nCl.cjs → agentHome-DeAWzhSe.cjs} +4 -4
  9. package/dist/{api-DnNL5fLw.cjs → api-BZYLRDM9.cjs} +88 -10
  10. package/dist/{api-Cmz3XS4P.mjs → api-CReZazeT.mjs} +88 -10
  11. package/dist/{apiMachine-DeoQ8QbZ.cjs → apiMachine-BgMxGPsR.cjs} +50 -15
  12. package/dist/{apiMachine-B6ySCFe0.mjs → apiMachine-CWndf1Vn.mjs} +50 -15
  13. package/dist/{attachmentContent-DPWxHgX4.cjs → attachmentContent-HcJqFQW8.cjs} +2 -2
  14. package/dist/{attachmentContent-CTXapi-_.mjs → attachmentContent-j875mwU7.mjs} +2 -2
  15. package/dist/{attachmentLimits-BfgKV5iE.cjs → attachmentLimits-BEYEEBm8.cjs} +13 -1
  16. package/dist/{attachmentLimits-C1PCCM79.mjs → attachmentLimits-CxG3T18E.mjs} +13 -1
  17. package/dist/{auth-BMaBjRAj.mjs → auth-BIHuc7vY.mjs} +10 -10
  18. package/dist/{auth-pzWIFdOD.mjs → auth-CFS9Lfgv.mjs} +5 -5
  19. package/dist/{auth-D4-eQz85.cjs → auth-Myr2Q42x.cjs} +10 -10
  20. package/dist/{auth-ietHtvwu.cjs → auth-VzWpbo5P.cjs} +5 -5
  21. package/dist/{auto-DOWTQDPa.cjs → auto-Bf6Dr7_o.cjs} +14 -14
  22. package/dist/{auto-DL75Dx3I.mjs → auto-Df9-zmuN.mjs} +14 -14
  23. package/dist/{bootstrap-XE8A7Ut2.mjs → bootstrap-BSOxYpaP.mjs} +2 -2
  24. package/dist/{bootstrap-BpXIc2wn.cjs → bootstrap-Dj8WBiR2.cjs} +2 -2
  25. package/dist/{browser-DDFi1T8C.mjs → browser-BCFIHOvo.mjs} +1 -1
  26. package/dist/{browser-CcG8GLRV.cjs → browser-BoCV40yC.cjs} +1 -1
  27. package/dist/{claudeLocal-DXBXwIOG.cjs → claudeLocal-CGsq7Kul.cjs} +5 -5
  28. package/dist/{claudeLocal-DmM5Oyhv.mjs → claudeLocal-D5-eA9SC.mjs} +5 -5
  29. package/dist/{claudeLocalLauncher-Cs4eUC3P.mjs → claudeLocalLauncher-C9Cc438l.mjs} +10 -10
  30. package/dist/{claudeLocalLauncher-C41Y6Kp4.cjs → claudeLocalLauncher-Cf9QeYDT.cjs} +10 -10
  31. package/dist/{claudeSessionFork-Cs0I3eGI.cjs → claudeSessionFork-Byd8zD1U.cjs} +1 -1
  32. package/dist/{claudeSessionFork-BdLnc2Hv.mjs → claudeSessionFork-CMzAva8G.mjs} +1 -1
  33. package/dist/{client-JISJx2f-.cjs → client-BKnKRLSt.cjs} +3 -3
  34. package/dist/{client-GjTnsq6F.mjs → client-C7FYMer0.mjs} +2 -2
  35. package/dist/{client-DJ0kX_8M.cjs → client-D0T5-6Ds.cjs} +2 -2
  36. package/dist/{client-CbK33y_s.mjs → client-Dsfy_SAb.mjs} +3 -3
  37. package/dist/codex/happyMcpStdioBridge.cjs +14 -14
  38. package/dist/codex/happyMcpStdioBridge.mjs +14 -14
  39. package/dist/{codexAppServerClient-CldXEojt.mjs → codexAppServerClient-Dd_4TxHv.mjs} +4 -4
  40. package/dist/{codexAppServerClient-BTjn2ZCZ.cjs → codexAppServerClient-TiW9OBk4.cjs} +4 -4
  41. package/dist/{codexCommand-DjMU-Ijf.mjs → codexCommand-BZSr4MKI.mjs} +137 -56
  42. package/dist/{codexCommand-BpD0N1F7.cjs → codexCommand-Bxryqh90.cjs} +137 -56
  43. package/dist/{config-DjSJKatx.mjs → config-C_Pj7yxV.mjs} +3 -3
  44. package/dist/{config-DuLL0Ppe.cjs → config-DXPash-r.cjs} +3 -3
  45. package/dist/{configuration-B0cb3xA3.cjs → configuration-C3piBtxY.cjs} +1 -1
  46. package/dist/{configuration-D2v3puap.mjs → configuration-WspKd2C2.mjs} +2 -2
  47. package/dist/{connect-B7JWEzyg.cjs → connect-BN-IBElA.cjs} +13 -13
  48. package/dist/{connect-CnNNyM9I.mjs → connect-DGPZs5px.mjs} +13 -13
  49. package/dist/{context-DjfqLWzE.mjs → context-Cr6a3NTg.mjs} +1 -1
  50. package/dist/{context-BFUpYT39.cjs → context-Jrq4-eCZ.cjs} +1 -1
  51. package/dist/{controlClient-CmnHGcyl.cjs → controlClient-BI6Fw3fQ.cjs} +18 -3
  52. package/dist/{controlClient-BMUJfUeF.mjs → controlClient-DTheOlvC.mjs} +18 -4
  53. package/dist/{createSessionMetadata-DU0bCg2m.mjs → createSessionMetadata-BEZ4DIDA.mjs} +57 -5
  54. package/dist/{createSessionMetadata-DbfRBhRu.cjs → createSessionMetadata-zQSz3hgk.cjs} +56 -3
  55. package/dist/defaultPermissionMode-Cif_RHGb.mjs +191 -0
  56. package/dist/defaultPermissionMode-DNKNzk7l.cjs +197 -0
  57. package/dist/{deterministicJson-D-WPUrZb.mjs → deterministicJson-BMMifViN.mjs} +8 -8
  58. package/dist/{deterministicJson-Dp3TVyap.cjs → deterministicJson-C7O2ulKY.cjs} +8 -8
  59. package/dist/{doctor-CkJmdPbi.cjs → doctor-BykBaMTr.cjs} +6 -6
  60. package/dist/{doctor-BlXXyQ1L.mjs → doctor-D1KKyPzB.mjs} +6 -6
  61. package/dist/{downloadTarget-CiQqRIc-.cjs → downloadTarget-CWTb2-EM.cjs} +6 -6
  62. package/dist/{downloadTarget-DjSwMHun.mjs → downloadTarget-Cp48jrIP.mjs} +6 -6
  63. package/dist/{ensureDaemonRunning-CAQag1zE.mjs → ensureDaemonRunning-Ba5fYoxb.mjs} +5 -5
  64. package/dist/{ensureDaemonRunning-C_aIOhgG.cjs → ensureDaemonRunning-CCxX7MoP.cjs} +5 -5
  65. package/dist/{handleResumeCommand-Ci7wacT-.mjs → handleResumeCommand-BTUGlNjB.mjs} +5 -5
  66. package/dist/{handleResumeCommand-6KzBGDnl.cjs → handleResumeCommand-yPdDQHqz.cjs} +5 -5
  67. package/dist/{index-CaFCAlX8.cjs → index-BjhKqDa0.cjs} +3 -3
  68. package/dist/{index-HQsigW_J.mjs → index-C3_83bqS.mjs} +3 -3
  69. package/dist/{index-WGCT6SSV.mjs → index-CE2GgPbr.mjs} +34 -34
  70. package/dist/{index-DQplgo0W.mjs → index-D8m8Ripb.mjs} +4 -4
  71. package/dist/{index-DBmNwMX9.cjs → index-DifM62wX.cjs} +33 -33
  72. package/dist/{index-DEKIgZUo.cjs → index-PNMQPKhz.cjs} +4 -4
  73. package/dist/index.cjs +2 -2
  74. package/dist/index.mjs +2 -2
  75. package/dist/{install-oJUvsFu9.mjs → install-C0-QFn9s.mjs} +3 -3
  76. package/dist/{install-CejEiRGW.cjs → install-CqZVeze8.cjs} +3 -3
  77. package/dist/lib.cjs +11 -11
  78. package/dist/lib.d.cts +61 -0
  79. package/dist/lib.d.mts +61 -0
  80. package/dist/lib.mjs +11 -11
  81. package/dist/{lidState-BfximpjX.mjs → lidState-B2ZxdREe.mjs} +1 -1
  82. package/dist/{lidState-D8BmnJV1.cjs → lidState-Bc2K9H9l.cjs} +1 -1
  83. package/dist/{localHappyAgentAuth-Ct1aXwqd.mjs → localHappyAgentAuth-B5XPEMwk.mjs} +1 -1
  84. package/dist/{localHappyAgentAuth-d7B6S_o7.cjs → localHappyAgentAuth-T5GOvRha.cjs} +1 -1
  85. package/dist/{logger-JTcJU-uL.cjs → logger-B_MWPbZz.cjs} +2 -2
  86. package/dist/{logger-BpQcwNnt.mjs → logger-CbBv3q_b.mjs} +2 -2
  87. package/dist/{machineMetadata-BBg_Njw3.cjs → machineMetadata-BafS4JY8.cjs} +4 -3
  88. package/dist/{machineMetadata-CBdxABeI.mjs → machineMetadata-DHg238U4.mjs} +4 -3
  89. package/dist/{main-C16fOGgn.cjs → main-DNrA0qBy.cjs} +45 -45
  90. package/dist/{main-B5b1gA3K.mjs → main-DXAK0n7x.mjs} +45 -45
  91. package/dist/{manager-BQ4flvQZ.mjs → manager-BEsI4qt3.mjs} +9 -3
  92. package/dist/{manager-Cly8xVIR.cjs → manager-HrEj442o.cjs} +8 -2
  93. package/dist/{mcp-BnNiBBax.cjs → mcp-AvPOhDXy.cjs} +14 -14
  94. package/dist/{mcp-DGNWgVdv.mjs → mcp-BotAjCdD.mjs} +14 -14
  95. package/dist/mirrorProtocol-BdcN6QlN.cjs +1270 -0
  96. package/dist/mirrorProtocol-BwHm8odn.mjs +1247 -0
  97. package/dist/{package-C1XvUQFy.cjs → package-C9ZP9bpX.cjs} +7 -7
  98. package/dist/{package-BqwrPxL0.mjs → package-DU1DxhH9.mjs} +7 -7
  99. package/dist/{peerTools-DPvbcs8V.cjs → peerTools-Dkbu7gag.cjs} +4 -4
  100. package/dist/{peerTools-CeCe-3lk.mjs → peerTools-os2DVjA0.mjs} +4 -4
  101. package/dist/{persistence-2Xp_o6x6.cjs → persistence-BYGl0QYw.cjs} +147 -25
  102. package/dist/{persistence-B9LmhAE2.mjs → persistence-ON0zpHfb.mjs} +123 -12
  103. package/dist/{piRunnerArgs-7FaTyNOq.mjs → piRunnerArgs-CYsnT9sV.mjs} +1 -1
  104. package/dist/{piRunnerArgs-DI29dDNo.cjs → piRunnerArgs-DpbvstUX.cjs} +1 -1
  105. package/dist/{piRuntime-R8XVChxK.cjs → piRuntime-CDnILlCd.cjs} +1 -1
  106. package/dist/{piRuntime-0qEK5AqE.mjs → piRuntime-CmEid-wu.mjs} +1 -1
  107. package/dist/{piTerminal-zcQKc8Sp.mjs → piTerminal-0eNlXSlL.mjs} +16 -16
  108. package/dist/{piTerminal-Ccj0KNPr.cjs → piTerminal-B57TgMON.cjs} +16 -16
  109. package/dist/{rateLimitWindows-C2Jk3Ih7.cjs → rateLimitWindows-CusGIqlq.cjs} +1 -1
  110. package/dist/{rateLimitWindows-Dhfhbtqu.mjs → rateLimitWindows-vZ9Bo7aT.mjs} +1 -1
  111. package/dist/{registerCommonHandlers-DdfGsFbM.mjs → registerCommonHandlers-B0PVff2U.mjs} +2 -2
  112. package/dist/{registerCommonHandlers-Aha_KfM3.cjs → registerCommonHandlers-DVYB3iVn.cjs} +2 -2
  113. package/dist/{registerKillSessionHandler-DboQlGcH.mjs → registerKillSessionHandler-BJMHJHXe.mjs} +14 -9
  114. package/dist/{registerKillSessionHandler-CjitOpUA.cjs → registerKillSessionHandler-BwXGKtg_.cjs} +14 -9
  115. package/dist/{remoteSessionClient-B2DtWuNP.mjs → remoteSessionClient-BzPXSC21.mjs} +5 -5
  116. package/dist/{remoteSessionClient-BwI8rpQw.cjs → remoteSessionClient-PyUAIhwK.cjs} +5 -5
  117. package/dist/{reportProgressTool-DnAD8wOa.mjs → reportProgressTool-BvB13EwC.mjs} +1 -1
  118. package/dist/{reportProgressTool-B-Rcy0s3.cjs → reportProgressTool-D4KB_4cP.cjs} +1 -1
  119. package/dist/{run-Bh66Xs40.cjs → run-BC8jzq_h.cjs} +323 -37
  120. package/dist/{run-DPEwJpQR.mjs → run-O2M8LsWf.mjs} +322 -36
  121. package/dist/{runClaude-C-lJdAKD.cjs → runClaude-C7jPa8VP.cjs} +87 -25
  122. package/dist/{runClaude-DLr_nBzw.mjs → runClaude-DGkr5E7s.mjs} +87 -25
  123. package/dist/{runClaudeDeps-vWWLod7J.cjs → runClaudeDeps-5kzncqME.cjs} +100 -31
  124. package/dist/{runClaudeDeps-C7JV7nXG.mjs → runClaudeDeps-CX_TxS78.mjs} +105 -36
  125. package/dist/{runGemini-o-CUSayc.cjs → runGemini-BfYA4Uqc.cjs} +32 -32
  126. package/dist/{runGemini-tH6sLw-G.mjs → runGemini-CwmGBH3L.mjs} +32 -32
  127. package/dist/{runOpenClaw-C5DZvVhn.mjs → runOpenClaw-BYAPYFyL.mjs} +16 -16
  128. package/dist/{runOpenClaw-D24f35l0.cjs → runOpenClaw-C72jut7v.cjs} +16 -16
  129. package/dist/{sandbox-TJZJ6ngw.cjs → sandbox-Bqkp8IT7.cjs} +4 -4
  130. package/dist/{sandbox-BaL1aslA.mjs → sandbox-DlVnK1Vi.mjs} +4 -4
  131. package/dist/{selfCheck-Dugi0Nk_.cjs → selfCheck-B4lLZplk.cjs} +34 -34
  132. package/dist/selfCheck-DYTGBdIO.mjs +84 -0
  133. package/dist/{send-DDcJ3ayi.mjs → send-B5bWW9Tl.mjs} +8 -8
  134. package/dist/{send-CkWOSYmU.cjs → send-BCwS6n_s.cjs} +8 -8
  135. package/dist/{server-CUjRvQSd.mjs → server-CEJfRQfj.mjs} +4 -4
  136. package/dist/{server-7qFQ8J2u.cjs → server-CFWZehnC.cjs} +6 -6
  137. package/dist/{sessionLock-DqVyHFAQ.mjs → sessionLock-AwOYsKT7.mjs} +12 -4
  138. package/dist/{sessionLock-DfhNICyS.cjs → sessionLock-LBWNjpHf.cjs} +12 -3
  139. package/dist/{sessionModeFile-CIznKD7O.cjs → sessionModeFile-CyPuZRIU.cjs} +1 -1
  140. package/dist/{sessionModeFile-M4OpiyrF.mjs → sessionModeFile-fvFn1JVG.mjs} +1 -1
  141. package/dist/{sessionOps-BnaEaOKs.mjs → sessionOps-DZRH4-hV.mjs} +4 -4
  142. package/dist/{sessionOps-DOyy4gkY.cjs → sessionOps-DzbZI3Eq.cjs} +4 -4
  143. package/dist/{sessionScanner-CcuOn9uU.mjs → sessionScanner-Q_Ei2flB.mjs} +3 -3
  144. package/dist/{sessionScanner-Cu1yKlj4.cjs → sessionScanner-i-cgwFVw.cjs} +3 -3
  145. package/dist/{sessions-C9O91rL1.mjs → sessions-DAmjMAZN.mjs} +9 -9
  146. package/dist/{sessions-BQgk5Kw8.cjs → sessions-DYK5hD4T.cjs} +9 -9
  147. package/dist/{setupOfflineReconnection-Byy8aeKT.mjs → setupOfflineReconnection-BfDBxNdo.mjs} +2 -2
  148. package/dist/{setupOfflineReconnection-DFmQ8s6I.cjs → setupOfflineReconnection-C2LO3hSP.cjs} +2 -2
  149. package/dist/{spawn-EZ2yrtWd.mjs → spawn-BmjG5j5Y.mjs} +13 -13
  150. package/dist/{spawn-BS7LPmSm.cjs → spawn-GK_sXE8h.cjs} +13 -13
  151. package/dist/{spawnHappyCLI-BAa49m0q.mjs → spawnHappyCLI-B2h0P4b5.mjs} +1 -1
  152. package/dist/{spawnHappyCLI-DyaldIe5.cjs → spawnHappyCLI-J4iEhfyZ.cjs} +1 -1
  153. package/dist/{specialCommands-CCWtwIGZ.mjs → specialCommands-DisVxagO.mjs} +3 -3
  154. package/dist/{specialCommands-DouFaJ_0.cjs → specialCommands-DmJMKspE.cjs} +3 -3
  155. package/dist/{startFileWatcher-Dfs4whzr.mjs → startFileWatcher-CeK1k5gt.mjs} +1 -1
  156. package/dist/{startFileWatcher-DQbbypJv.cjs → startFileWatcher-xKo8AoYl.cjs} +1 -1
  157. package/dist/{sync-x_lI_3j_.cjs → sync-Bvc-vh6C.cjs} +1 -1
  158. package/dist/{sync-BLpH13Kb.mjs → sync-CCwYpJMS.mjs} +1 -1
  159. package/dist/{systemPrompt-BanyDihy.mjs → systemPrompt-BNIkP3tR.mjs} +1 -1
  160. package/dist/{systemPrompt-4erwILTB.cjs → systemPrompt-DwOddbuG.cjs} +1 -1
  161. package/dist/{teams-D6BOT3lR.mjs → teams-DRrLBcys.mjs} +6 -6
  162. package/dist/{teams-DzetlGWC.cjs → teams-GHMCRZOw.cjs} +6 -6
  163. package/dist/{time-T0YmeOhS.cjs → time-BXvtjhe9.cjs} +1 -1
  164. package/dist/{time-CfDKj6Bx.mjs → time-PG5Dfwdv.mjs} +1 -1
  165. package/dist/{titleGenerator-CoMxqKfP.cjs → titleGenerator-B07bZA0V.cjs} +2 -2
  166. package/dist/{titleGenerator-ChImQ4q-.mjs → titleGenerator-CIzfpfZW.mjs} +1 -1
  167. package/dist/{todo-CZZebKZg.cjs → todo-B0aeoNu3.cjs} +5 -5
  168. package/dist/{todo-SVtYxGON.mjs → todo-CfL7SBFc.mjs} +5 -5
  169. package/dist/{tools-3X2z3YDe.mjs → tools-D91mq5Ib.mjs} +1 -1
  170. package/dist/{tools-IJ0TAcJs.cjs → tools-DJIANHSh.cjs} +1 -1
  171. package/dist/{uninstall-CypD-kr1.mjs → uninstall-5xz3Xvhf.mjs} +3 -3
  172. package/dist/{uninstall-CqqCWj7w.cjs → uninstall-AtzOfdrj.cjs} +3 -3
  173. package/package.json +7 -7
  174. package/dist/defaultPermissionMode-BnxJPVHT.mjs +0 -4
  175. package/dist/defaultPermissionMode-CxmTXUQR.cjs +0 -7
  176. package/dist/mirrorProtocol-BEGk2--0.cjs +0 -266
  177. package/dist/mirrorProtocol-h5WHpdhh.mjs +0 -248
  178. package/dist/selfCheck-DPi4lqme.mjs +0 -84
@@ -1,8 +1,58 @@
1
1
  import os from 'node:os';
2
- import { resolve } from 'node:path';
3
- import { c as configuration } from './configuration-D2v3puap.mjs';
2
+ import { resolve, isAbsolute, dirname } from 'node:path';
3
+ import { c as configuration } from './configuration-WspKd2C2.mjs';
4
4
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
5
- import { p as packageJson } from './package-BqwrPxL0.mjs';
5
+ import { p as packageJson } from './package-DU1DxhH9.mjs';
6
+ import { existsSync, readFileSync, statSync } from 'node:fs';
7
+
8
+ const realFs = {
9
+ existsSync,
10
+ isDirectory: (path) => {
11
+ try {
12
+ return statSync(path).isDirectory();
13
+ } catch {
14
+ return false;
15
+ }
16
+ },
17
+ readFileSync: (path) => readFileSync(path, "utf8")
18
+ };
19
+ function resolveSessionWorktree(cwd, fs = realFs) {
20
+ let dir = resolve(cwd);
21
+ for (let depth = 0; depth < 64; depth++) {
22
+ const dotGit = resolve(dir, ".git");
23
+ try {
24
+ if (fs.existsSync(dotGit)) {
25
+ if (fs.isDirectory(dotGit)) return null;
26
+ const gitdir = fs.readFileSync(dotGit).match(/^gitdir:\s*(.+?)\s*$/m)?.[1];
27
+ if (!gitdir) return null;
28
+ const absolute = isAbsolute(gitdir) ? gitdir : resolve(dir, gitdir);
29
+ if (!/[\\/]\.git[\\/]worktrees[\\/][^\\/]+[\\/]?$/.test(absolute)) return null;
30
+ let branch = null;
31
+ try {
32
+ const head = fs.readFileSync(resolve(absolute, "HEAD")).trim();
33
+ const ref = head.match(/^ref:\s*refs\/heads\/(.+)$/)?.[1];
34
+ branch = ref ?? null;
35
+ } catch {
36
+ }
37
+ return { branch, root: dir };
38
+ }
39
+ } catch {
40
+ return null;
41
+ }
42
+ const parent = dirname(dir);
43
+ if (parent === dir) break;
44
+ dir = parent;
45
+ }
46
+ return null;
47
+ }
48
+ function sessionWorktreeMetadata(cwd) {
49
+ try {
50
+ const worktree = resolveSessionWorktree(cwd);
51
+ return worktree ? { worktree } : {};
52
+ } catch {
53
+ return {};
54
+ }
55
+ }
6
56
 
7
57
  const SPAWN_ORIGIN_TAG_MAX = 24;
8
58
  function spawnOriginTags(env = process.env, flavor = void 0) {
@@ -46,9 +96,11 @@ function createSessionMetadata(opts) {
46
96
  // B-091/B-303: dispatched sessions carry their spawn origin as a tag
47
97
  // from birth (see spawnOriginTags) — applies to every flavor the daemon
48
98
  // can spawn, since HAPPY_SPAWNED_BY is exported flavor-independently.
49
- ...originTags ? { tags: originTags } : {}
99
+ ...originTags ? { tags: originTags } : {},
100
+ // B-586: linked git worktree → branch shown in the session list.
101
+ ...sessionWorktreeMetadata(process.cwd())
50
102
  };
51
103
  return { state, metadata };
52
104
  }
53
105
 
54
- export { createSessionMetadata as c, isValidSpawnOrigin as i, spawnOriginTags as s };
106
+ export { sessionWorktreeMetadata as a, createSessionMetadata as c, isValidSpawnOrigin as i, spawnOriginTags as s };
@@ -2,9 +2,59 @@
2
2
 
3
3
  var os = require('node:os');
4
4
  var path = require('node:path');
5
- var configuration = require('./configuration-B0cb3xA3.cjs');
5
+ var configuration = require('./configuration-C3piBtxY.cjs');
6
6
  var projectPath = require('./projectPath-ChLhdOyt.cjs');
7
- var _package = require('./package-C1XvUQFy.cjs');
7
+ var _package = require('./package-C9ZP9bpX.cjs');
8
+ var node_fs = require('node:fs');
9
+
10
+ const realFs = {
11
+ existsSync: node_fs.existsSync,
12
+ isDirectory: (path) => {
13
+ try {
14
+ return node_fs.statSync(path).isDirectory();
15
+ } catch {
16
+ return false;
17
+ }
18
+ },
19
+ readFileSync: (path) => node_fs.readFileSync(path, "utf8")
20
+ };
21
+ function resolveSessionWorktree(cwd, fs = realFs) {
22
+ let dir = path.resolve(cwd);
23
+ for (let depth = 0; depth < 64; depth++) {
24
+ const dotGit = path.resolve(dir, ".git");
25
+ try {
26
+ if (fs.existsSync(dotGit)) {
27
+ if (fs.isDirectory(dotGit)) return null;
28
+ const gitdir = fs.readFileSync(dotGit).match(/^gitdir:\s*(.+?)\s*$/m)?.[1];
29
+ if (!gitdir) return null;
30
+ const absolute = path.isAbsolute(gitdir) ? gitdir : path.resolve(dir, gitdir);
31
+ if (!/[\\/]\.git[\\/]worktrees[\\/][^\\/]+[\\/]?$/.test(absolute)) return null;
32
+ let branch = null;
33
+ try {
34
+ const head = fs.readFileSync(path.resolve(absolute, "HEAD")).trim();
35
+ const ref = head.match(/^ref:\s*refs\/heads\/(.+)$/)?.[1];
36
+ branch = ref ?? null;
37
+ } catch {
38
+ }
39
+ return { branch, root: dir };
40
+ }
41
+ } catch {
42
+ return null;
43
+ }
44
+ const parent = path.dirname(dir);
45
+ if (parent === dir) break;
46
+ dir = parent;
47
+ }
48
+ return null;
49
+ }
50
+ function sessionWorktreeMetadata(cwd) {
51
+ try {
52
+ const worktree = resolveSessionWorktree(cwd);
53
+ return worktree ? { worktree } : {};
54
+ } catch {
55
+ return {};
56
+ }
57
+ }
8
58
 
9
59
  const SPAWN_ORIGIN_TAG_MAX = 24;
10
60
  function spawnOriginTags(env = process.env, flavor = void 0) {
@@ -48,11 +98,14 @@ function createSessionMetadata(opts) {
48
98
  // B-091/B-303: dispatched sessions carry their spawn origin as a tag
49
99
  // from birth (see spawnOriginTags) — applies to every flavor the daemon
50
100
  // can spawn, since HAPPY_SPAWNED_BY is exported flavor-independently.
51
- ...originTags ? { tags: originTags } : {}
101
+ ...originTags ? { tags: originTags } : {},
102
+ // B-586: linked git worktree → branch shown in the session list.
103
+ ...sessionWorktreeMetadata(process.cwd())
52
104
  };
53
105
  return { state, metadata };
54
106
  }
55
107
 
56
108
  exports.createSessionMetadata = createSessionMetadata;
57
109
  exports.isValidSpawnOrigin = isValidSpawnOrigin;
110
+ exports.sessionWorktreeMetadata = sessionWorktreeMetadata;
58
111
  exports.spawnOriginTags = spawnOriginTags;
@@ -0,0 +1,191 @@
1
+ import { l as logger } from './logger-CbBv3q_b.mjs';
2
+ import { e as evaluateWrapperIdle, j as HIBERNATION_UNSUPPORTED_BACKOFF_MS } from './persistence-ON0zpHfb.mjs';
3
+
4
+ const PRESENCE_SETTLE_MS = 6e3;
5
+ async function commitHibernation(deps) {
6
+ const log = deps.log ?? ((message) => logger.debug(message));
7
+ if (!deps.claimExit()) {
8
+ log("[hibernate] exit already claimed for another reason; not hibernating");
9
+ return false;
10
+ }
11
+ const { client } = deps;
12
+ const now = deps.now ?? Date.now;
13
+ const sleep = deps.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
14
+ let frozen = false;
15
+ let stamped = false;
16
+ const waitOrExit = async (work, fallback) => {
17
+ let settled = false;
18
+ const watched = work.finally(() => {
19
+ settled = true;
20
+ });
21
+ const exitWatch = (async () => {
22
+ while (!settled && !deps.exitRequested()) await sleep(EXIT_POLL_MS);
23
+ return settled ? watched : fallback;
24
+ })();
25
+ return Promise.race([watched, exitWatch]);
26
+ };
27
+ const abort = async (why2) => {
28
+ log(`[hibernate] aborted at commit: ${why2}`);
29
+ if (stamped) {
30
+ const clear = (metadata) => {
31
+ const next = { ...metadata };
32
+ delete next.hibernation;
33
+ return next;
34
+ };
35
+ const cleared = await client.updateMetadataAndWait(clear, deps.exitRequested() ? EXIT_CLEAR_TIMEOUT_MS : void 0).catch(() => false);
36
+ if (!cleared) log("[hibernate] stamp clear not confirmed (it keeps retrying in the background)");
37
+ }
38
+ if (frozen) {
39
+ client.unmuteHeartbeats();
40
+ client.unfreezeInbound();
41
+ }
42
+ deps.releaseExit();
43
+ return false;
44
+ };
45
+ const moved = () => {
46
+ if (deps.exitRequested()) return "exit requested";
47
+ if (client.inboundRoutedSinceCommit()) return "inbound message";
48
+ const verdict = deps.recheck();
49
+ return verdict.ok ? null : verdict.reason;
50
+ };
51
+ client.beginHibernationCommit();
52
+ try {
53
+ await client.flush();
54
+ } catch (error) {
55
+ return abort(`flush failed: ${error instanceof Error ? error.message : String(error)}`);
56
+ }
57
+ let why = moved();
58
+ if (why) return abort(why);
59
+ client.freezeInbound();
60
+ client.muteHeartbeats();
61
+ frozen = true;
62
+ const stamp = { at: now(), seq: client.messageCursor, idleMs: deps.idleMs, v: 1 };
63
+ stamped = true;
64
+ const landed = await waitOrExit(client.updateMetadataAndWait((metadata) => ({ ...metadata, hibernation: stamp })).catch(() => false), false);
65
+ if (deps.exitRequested()) return abort("exit requested");
66
+ if (!landed) return abort("stamp not confirmed");
67
+ const settle = Math.max(0, client.lastHeartbeatAt + (deps.presenceSettleMs ?? PRESENCE_SETTLE_MS) - now());
68
+ if (settle > 0) await waitOrExit(sleep(settle), void 0);
69
+ why = moved();
70
+ if (why) return abort(why);
71
+ deps.markCommitted();
72
+ log(`[hibernate] committing: seq=${stamp.seq} idleMs=${stamp.idleMs}`);
73
+ await deps.finish(stamp);
74
+ return true;
75
+ }
76
+ const EXIT_POLL_MS = 100;
77
+ const EXIT_CLEAR_TIMEOUT_MS = 1e3;
78
+ class HibernationProbe {
79
+ constructor(deps) {
80
+ this.deps = deps;
81
+ }
82
+ timer = null;
83
+ stopped = false;
84
+ running = false;
85
+ start() {
86
+ this.schedule(this.deps.checkMs);
87
+ }
88
+ stop() {
89
+ this.stopped = true;
90
+ if (this.timer !== null) (this.deps.clearTimer ?? ((h) => clearTimeout(h)))(this.timer);
91
+ this.timer = null;
92
+ }
93
+ schedule(ms) {
94
+ if (this.stopped) return;
95
+ const set = this.deps.setTimer ?? ((fn, delay) => {
96
+ const handle = setTimeout(fn, delay);
97
+ handle.unref?.();
98
+ return handle;
99
+ });
100
+ this.timer = set(() => {
101
+ void this.tick();
102
+ }, Math.max(1e3, ms));
103
+ }
104
+ /** One sample; returns the delay it scheduled (or null when it hibernated / stopped). */
105
+ async tick() {
106
+ if (this.stopped || this.running) return null;
107
+ this.running = true;
108
+ const log = this.deps.log ?? ((message) => logger.debug(message));
109
+ try {
110
+ const now = (this.deps.now ?? Date.now)();
111
+ const snapshot = this.deps.snapshot();
112
+ const local = evaluateWrapperIdle(snapshot, 1, now);
113
+ if (!local.ok && local.reason !== "keep-awake") {
114
+ this.schedule(this.deps.checkMs);
115
+ return this.deps.checkMs;
116
+ }
117
+ const answer = await this.deps.ask(snapshot);
118
+ if (answer === "unsupported") {
119
+ this.schedule(HIBERNATION_UNSUPPORTED_BACKOFF_MS);
120
+ return HIBERNATION_UNSUPPORTED_BACKOFF_MS;
121
+ }
122
+ if (answer === "error") {
123
+ this.schedule(this.deps.checkMs);
124
+ return this.deps.checkMs;
125
+ }
126
+ if (answer.keepAwake === true) this.deps.onKeepAwakeLatched?.();
127
+ if (local.ok && answer.hibernate && typeof answer.idleMs === "number" && answer.idleMs > 0) {
128
+ const done = await this.deps.commit(answer.idleMs);
129
+ if (done) {
130
+ this.stopped = true;
131
+ return null;
132
+ }
133
+ this.schedule(this.deps.checkMs);
134
+ return this.deps.checkMs;
135
+ }
136
+ const next = typeof answer.nextCheckMs === "number" && answer.nextCheckMs > 0 ? answer.nextCheckMs : this.deps.checkMs;
137
+ if (answer.reason) log(`[hibernate] daemon says stay awake (${answer.reason}); next check in ${Math.round(next / 1e3)}s`);
138
+ this.schedule(next);
139
+ return next;
140
+ } catch (error) {
141
+ log(`[hibernate] probe failed: ${error instanceof Error ? error.message : String(error)}`);
142
+ this.schedule(this.deps.checkMs);
143
+ return this.deps.checkMs;
144
+ } finally {
145
+ this.running = false;
146
+ }
147
+ }
148
+ }
149
+ class HibernationExitLatch {
150
+ constructor(outranks) {
151
+ this.outranks = outranks;
152
+ }
153
+ active = false;
154
+ committed = false;
155
+ deferredIntent = null;
156
+ begin() {
157
+ if (this.active) return false;
158
+ this.active = true;
159
+ this.committed = false;
160
+ this.deferredIntent = null;
161
+ return true;
162
+ }
163
+ get hibernating() {
164
+ return this.active;
165
+ }
166
+ /** true = the caller must NOT run this exit now (deferred, or the process is already leaving). */
167
+ intercept(intent) {
168
+ if (!this.active) return false;
169
+ if (!this.committed && (this.deferredIntent === null || this.outranks(intent, this.deferredIntent))) this.deferredIntent = intent;
170
+ return true;
171
+ }
172
+ get exitRequested() {
173
+ return this.deferredIntent !== null;
174
+ }
175
+ commit() {
176
+ if (this.active) this.committed = true;
177
+ }
178
+ /** Abort: returns the deferred exit to run now (or null). No-op once committed. */
179
+ release() {
180
+ if (!this.active || this.committed) return null;
181
+ this.active = false;
182
+ const deferred = this.deferredIntent;
183
+ this.deferredIntent = null;
184
+ return deferred;
185
+ }
186
+ }
187
+
188
+ const DEFAULT_CLAUDE_PERMISSION_MODE = "default";
189
+ const DEFAULT_CODEX_PERMISSION_MODE = "default";
190
+
191
+ export { DEFAULT_CLAUDE_PERMISSION_MODE as D, HibernationProbe as H, HibernationExitLatch as a, DEFAULT_CODEX_PERMISSION_MODE as b, commitHibernation as c };
@@ -0,0 +1,197 @@
1
+ 'use strict';
2
+
3
+ var logger = require('./logger-B_MWPbZz.cjs');
4
+ var persistence = require('./persistence-BYGl0QYw.cjs');
5
+
6
+ const PRESENCE_SETTLE_MS = 6e3;
7
+ async function commitHibernation(deps) {
8
+ const log = deps.log ?? ((message) => logger.logger.debug(message));
9
+ if (!deps.claimExit()) {
10
+ log("[hibernate] exit already claimed for another reason; not hibernating");
11
+ return false;
12
+ }
13
+ const { client } = deps;
14
+ const now = deps.now ?? Date.now;
15
+ const sleep = deps.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
16
+ let frozen = false;
17
+ let stamped = false;
18
+ const waitOrExit = async (work, fallback) => {
19
+ let settled = false;
20
+ const watched = work.finally(() => {
21
+ settled = true;
22
+ });
23
+ const exitWatch = (async () => {
24
+ while (!settled && !deps.exitRequested()) await sleep(EXIT_POLL_MS);
25
+ return settled ? watched : fallback;
26
+ })();
27
+ return Promise.race([watched, exitWatch]);
28
+ };
29
+ const abort = async (why2) => {
30
+ log(`[hibernate] aborted at commit: ${why2}`);
31
+ if (stamped) {
32
+ const clear = (metadata) => {
33
+ const next = { ...metadata };
34
+ delete next.hibernation;
35
+ return next;
36
+ };
37
+ const cleared = await client.updateMetadataAndWait(clear, deps.exitRequested() ? EXIT_CLEAR_TIMEOUT_MS : void 0).catch(() => false);
38
+ if (!cleared) log("[hibernate] stamp clear not confirmed (it keeps retrying in the background)");
39
+ }
40
+ if (frozen) {
41
+ client.unmuteHeartbeats();
42
+ client.unfreezeInbound();
43
+ }
44
+ deps.releaseExit();
45
+ return false;
46
+ };
47
+ const moved = () => {
48
+ if (deps.exitRequested()) return "exit requested";
49
+ if (client.inboundRoutedSinceCommit()) return "inbound message";
50
+ const verdict = deps.recheck();
51
+ return verdict.ok ? null : verdict.reason;
52
+ };
53
+ client.beginHibernationCommit();
54
+ try {
55
+ await client.flush();
56
+ } catch (error) {
57
+ return abort(`flush failed: ${error instanceof Error ? error.message : String(error)}`);
58
+ }
59
+ let why = moved();
60
+ if (why) return abort(why);
61
+ client.freezeInbound();
62
+ client.muteHeartbeats();
63
+ frozen = true;
64
+ const stamp = { at: now(), seq: client.messageCursor, idleMs: deps.idleMs, v: 1 };
65
+ stamped = true;
66
+ const landed = await waitOrExit(client.updateMetadataAndWait((metadata) => ({ ...metadata, hibernation: stamp })).catch(() => false), false);
67
+ if (deps.exitRequested()) return abort("exit requested");
68
+ if (!landed) return abort("stamp not confirmed");
69
+ const settle = Math.max(0, client.lastHeartbeatAt + (deps.presenceSettleMs ?? PRESENCE_SETTLE_MS) - now());
70
+ if (settle > 0) await waitOrExit(sleep(settle), void 0);
71
+ why = moved();
72
+ if (why) return abort(why);
73
+ deps.markCommitted();
74
+ log(`[hibernate] committing: seq=${stamp.seq} idleMs=${stamp.idleMs}`);
75
+ await deps.finish(stamp);
76
+ return true;
77
+ }
78
+ const EXIT_POLL_MS = 100;
79
+ const EXIT_CLEAR_TIMEOUT_MS = 1e3;
80
+ class HibernationProbe {
81
+ constructor(deps) {
82
+ this.deps = deps;
83
+ }
84
+ timer = null;
85
+ stopped = false;
86
+ running = false;
87
+ start() {
88
+ this.schedule(this.deps.checkMs);
89
+ }
90
+ stop() {
91
+ this.stopped = true;
92
+ if (this.timer !== null) (this.deps.clearTimer ?? ((h) => clearTimeout(h)))(this.timer);
93
+ this.timer = null;
94
+ }
95
+ schedule(ms) {
96
+ if (this.stopped) return;
97
+ const set = this.deps.setTimer ?? ((fn, delay) => {
98
+ const handle = setTimeout(fn, delay);
99
+ handle.unref?.();
100
+ return handle;
101
+ });
102
+ this.timer = set(() => {
103
+ void this.tick();
104
+ }, Math.max(1e3, ms));
105
+ }
106
+ /** One sample; returns the delay it scheduled (or null when it hibernated / stopped). */
107
+ async tick() {
108
+ if (this.stopped || this.running) return null;
109
+ this.running = true;
110
+ const log = this.deps.log ?? ((message) => logger.logger.debug(message));
111
+ try {
112
+ const now = (this.deps.now ?? Date.now)();
113
+ const snapshot = this.deps.snapshot();
114
+ const local = persistence.evaluateWrapperIdle(snapshot, 1, now);
115
+ if (!local.ok && local.reason !== "keep-awake") {
116
+ this.schedule(this.deps.checkMs);
117
+ return this.deps.checkMs;
118
+ }
119
+ const answer = await this.deps.ask(snapshot);
120
+ if (answer === "unsupported") {
121
+ this.schedule(persistence.HIBERNATION_UNSUPPORTED_BACKOFF_MS);
122
+ return persistence.HIBERNATION_UNSUPPORTED_BACKOFF_MS;
123
+ }
124
+ if (answer === "error") {
125
+ this.schedule(this.deps.checkMs);
126
+ return this.deps.checkMs;
127
+ }
128
+ if (answer.keepAwake === true) this.deps.onKeepAwakeLatched?.();
129
+ if (local.ok && answer.hibernate && typeof answer.idleMs === "number" && answer.idleMs > 0) {
130
+ const done = await this.deps.commit(answer.idleMs);
131
+ if (done) {
132
+ this.stopped = true;
133
+ return null;
134
+ }
135
+ this.schedule(this.deps.checkMs);
136
+ return this.deps.checkMs;
137
+ }
138
+ const next = typeof answer.nextCheckMs === "number" && answer.nextCheckMs > 0 ? answer.nextCheckMs : this.deps.checkMs;
139
+ if (answer.reason) log(`[hibernate] daemon says stay awake (${answer.reason}); next check in ${Math.round(next / 1e3)}s`);
140
+ this.schedule(next);
141
+ return next;
142
+ } catch (error) {
143
+ log(`[hibernate] probe failed: ${error instanceof Error ? error.message : String(error)}`);
144
+ this.schedule(this.deps.checkMs);
145
+ return this.deps.checkMs;
146
+ } finally {
147
+ this.running = false;
148
+ }
149
+ }
150
+ }
151
+ class HibernationExitLatch {
152
+ constructor(outranks) {
153
+ this.outranks = outranks;
154
+ }
155
+ active = false;
156
+ committed = false;
157
+ deferredIntent = null;
158
+ begin() {
159
+ if (this.active) return false;
160
+ this.active = true;
161
+ this.committed = false;
162
+ this.deferredIntent = null;
163
+ return true;
164
+ }
165
+ get hibernating() {
166
+ return this.active;
167
+ }
168
+ /** true = the caller must NOT run this exit now (deferred, or the process is already leaving). */
169
+ intercept(intent) {
170
+ if (!this.active) return false;
171
+ if (!this.committed && (this.deferredIntent === null || this.outranks(intent, this.deferredIntent))) this.deferredIntent = intent;
172
+ return true;
173
+ }
174
+ get exitRequested() {
175
+ return this.deferredIntent !== null;
176
+ }
177
+ commit() {
178
+ if (this.active) this.committed = true;
179
+ }
180
+ /** Abort: returns the deferred exit to run now (or null). No-op once committed. */
181
+ release() {
182
+ if (!this.active || this.committed) return null;
183
+ this.active = false;
184
+ const deferred = this.deferredIntent;
185
+ this.deferredIntent = null;
186
+ return deferred;
187
+ }
188
+ }
189
+
190
+ const DEFAULT_CLAUDE_PERMISSION_MODE = "default";
191
+ const DEFAULT_CODEX_PERMISSION_MODE = "default";
192
+
193
+ exports.DEFAULT_CLAUDE_PERMISSION_MODE = DEFAULT_CLAUDE_PERMISSION_MODE;
194
+ exports.DEFAULT_CODEX_PERMISSION_MODE = DEFAULT_CODEX_PERMISSION_MODE;
195
+ exports.HibernationExitLatch = HibernationExitLatch;
196
+ exports.HibernationProbe = HibernationProbe;
197
+ exports.commitHibernation = commitHibernation;
@@ -4,19 +4,19 @@ import { randomUUID } from 'node:crypto';
4
4
  import { constants } from 'node:fs';
5
5
  import { dirname } from 'node:path';
6
6
  import { z } from 'zod';
7
- import { T as TeamConnectionPreflightError, c as createTeamsClient } from './client-CbK33y_s.mjs';
8
- import { t as teamScopePath } from './context-DjfqLWzE.mjs';
9
- import { g as waitForSessionKey, e as sendUserMessage } from './sessionOps-BnaEaOKs.mjs';
7
+ import { T as TeamConnectionPreflightError, c as createTeamsClient } from './client-Dsfy_SAb.mjs';
8
+ import { t as teamScopePath } from './context-Cr6a3NTg.mjs';
9
+ import { g as waitForSessionKey, e as sendUserMessage } from './sessionOps-DZRH4-hV.mjs';
10
10
  import { T as TEAM_SKILL } from './resources-BdFBQi8r.mjs';
11
- import { T as TEAM_TOOL_NAMES, r as registerTeamsTools } from './tools-3X2z3YDe.mjs';
12
- import { c as createSelfReportState, A as AUTOMATION_TOOL_NAMES, r as registerAutomationTools, a as registerReportProgressTool, n as normalizeAttention, b as normalizePhase, d as normalizeProgress, s as shouldAcceptSelfReport } from './reportProgressTool-DnAD8wOa.mjs';
13
- import { S as SESSION_PEER_TOOL_NAMES, r as registerSessionPeerTools, a as createSessionPeerToolExecutor } from './peerTools-CeCe-3lk.mjs';
11
+ import { T as TEAM_TOOL_NAMES, r as registerTeamsTools } from './tools-D91mq5Ib.mjs';
12
+ import { c as createSelfReportState, A as AUTOMATION_TOOL_NAMES, r as registerAutomationTools, a as registerReportProgressTool, n as normalizeAttention, b as normalizePhase, d as normalizeProgress, s as shouldAcceptSelfReport } from './reportProgressTool-BvB13EwC.mjs';
13
+ import { S as SESSION_PEER_TOOL_NAMES, r as registerSessionPeerTools, a as createSessionPeerToolExecutor } from './peerTools-os2DVjA0.mjs';
14
14
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
15
15
  import { createServer } from 'node:http';
16
16
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
17
- import { l as logger } from './logger-BpQcwNnt.mjs';
17
+ import { l as logger } from './logger-CbBv3q_b.mjs';
18
18
  import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, c as CLIPBOARD_MAX_BYTES } from './limits-DIo7rEBR.mjs';
19
- import { A as ASSISTANT_TOOL_NAMES, a as registerAssistantTools, c as checkDownloadTarget } from './downloadTarget-DjSwMHun.mjs';
19
+ import { A as ASSISTANT_TOOL_NAMES, a as registerAssistantTools, c as checkDownloadTarget } from './downloadTarget-Cp48jrIP.mjs';
20
20
  import { P as PREVIEW_TOOL_NAME, R as REPORT_PROGRESS_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, c as PREVIEW_DOWNLOAD_PARAM_DESCRIPTION } from './agentGuidance-BDYt2Qy2.mjs';
21
21
  import { c as checkPreviewPath } from './previewPath-CXN4Vag0.mjs';
22
22
  import { createHash } from 'crypto';
@@ -6,19 +6,19 @@ var node_crypto = require('node:crypto');
6
6
  var node_fs = require('node:fs');
7
7
  var path = require('node:path');
8
8
  var z = require('zod');
9
- var client = require('./client-JISJx2f-.cjs');
10
- var context = require('./context-BFUpYT39.cjs');
11
- var sessionOps = require('./sessionOps-DOyy4gkY.cjs');
9
+ var client = require('./client-BKnKRLSt.cjs');
10
+ var context = require('./context-Jrq4-eCZ.cjs');
11
+ var sessionOps = require('./sessionOps-DzbZI3Eq.cjs');
12
12
  var resources = require('./resources-JDPugcDq.cjs');
13
- var tools = require('./tools-IJ0TAcJs.cjs');
14
- var reportProgressTool = require('./reportProgressTool-B-Rcy0s3.cjs');
15
- var peerTools = require('./peerTools-DPvbcs8V.cjs');
13
+ var tools = require('./tools-DJIANHSh.cjs');
14
+ var reportProgressTool = require('./reportProgressTool-D4KB_4cP.cjs');
15
+ var peerTools = require('./peerTools-Dkbu7gag.cjs');
16
16
  var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
17
17
  var node_http = require('node:http');
18
18
  var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
19
- var logger = require('./logger-JTcJU-uL.cjs');
19
+ var logger = require('./logger-B_MWPbZz.cjs');
20
20
  var limits = require('./limits-C-a7gr04.cjs');
21
- var downloadTarget = require('./downloadTarget-CiQqRIc-.cjs');
21
+ var downloadTarget = require('./downloadTarget-CWTb2-EM.cjs');
22
22
  var agentGuidance = require('./agentGuidance-BtBx2xxE.cjs');
23
23
  var previewPath = require('./previewPath-B0rBdhy1.cjs');
24
24
  var crypto = require('crypto');
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var configuration = require('./configuration-B0cb3xA3.cjs');
5
- var persistence = require('./persistence-2Xp_o6x6.cjs');
6
- var controlClient = require('./controlClient-CmnHGcyl.cjs');
4
+ var configuration = require('./configuration-C3piBtxY.cjs');
5
+ var persistence = require('./persistence-BYGl0QYw.cjs');
6
+ var controlClient = require('./controlClient-BI6Fw3fQ.cjs');
7
7
  var doctor$1 = require('./doctor-u46qYYKX.cjs');
8
8
  var node_fs = require('node:fs');
9
9
  var path = require('node:path');
10
10
  var projectPath = require('./projectPath-ChLhdOyt.cjs');
11
- var _package = require('./package-C1XvUQFy.cjs');
11
+ var _package = require('./package-C9ZP9bpX.cjs');
12
12
  var doctorReadiness = require('./doctorReadiness-BCZGcN0a.cjs');
13
13
  var authRelay = require('./authRelay-BdYkC1Po.cjs');
14
14
  var cliUpdate = require('./cliUpdate-DsKXPFYp.cjs');
@@ -312,8 +312,8 @@ ${typeLabels[type] || type}:`));
312
312
  }
313
313
  console.log(chalk.gray(" An external claude command is only needed for native terminal/mirror use."));
314
314
  try {
315
- const { resolveAgentHomesForCli } = await Promise.resolve().then(function () { return require('./agentHome-KVWj6nCl.cjs'); });
316
- const { describeAgentHome } = await Promise.resolve().then(function () { return require('./index-DEKIgZUo.cjs'); });
315
+ const { resolveAgentHomesForCli } = await Promise.resolve().then(function () { return require('./agentHome-DeAWzhSe.cjs'); });
316
+ const { describeAgentHome } = await Promise.resolve().then(function () { return require('./index-PNMQPKhz.cjs'); });
317
317
  const homes = await resolveAgentHomesForCli();
318
318
  console.log(chalk.green(`\u2713 Claude config dir: ${describeAgentHome(homes.claudeConfigDir)}`));
319
319
  console.log(chalk.green(`\u2713 Codex home: ${describeAgentHome(homes.codexHome)}`));
@@ -1,12 +1,12 @@
1
1
  import chalk from 'chalk';
2
- import { c as configuration } from './configuration-D2v3puap.mjs';
3
- import { readSettings, readCredentials, readDaemonState } from './persistence-B9LmhAE2.mjs';
4
- import { c as checkIfDaemonRunningAndCleanupStaleState } from './controlClient-BMUJfUeF.mjs';
2
+ import { c as configuration } from './configuration-WspKd2C2.mjs';
3
+ import { r as readSettings, g as readCredentials, d as readDaemonState } from './persistence-ON0zpHfb.mjs';
4
+ import { a as checkIfDaemonRunningAndCleanupStaleState } from './controlClient-DTheOlvC.mjs';
5
5
  import { findAllHappyProcesses } from './doctor-BPkYWSuq.mjs';
6
6
  import { statSync, realpathSync, existsSync, readdirSync } from 'node:fs';
7
7
  import { isAbsolute, resolve, dirname, basename, delimiter, join } from 'node:path';
8
8
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
9
- import { p as packageJson } from './package-BqwrPxL0.mjs';
9
+ import { p as packageJson } from './package-DU1DxhH9.mjs';
10
10
  import { s as shareableSettingsSummary, c as collectRuntimeReadiness, S as SUPPORTED_NODE_LABEL, r as resolveClaudeCredentialReadiness, a as toolProbeLabel, b as daemonReadiness, d as daemonEndpointsMatch } from './doctorReadiness-C208SMN9.mjs';
11
11
  import { c as credentialRelayProblem } from './authRelay-DSAvg1uv.mjs';
12
12
  import { d as deriveLocalCliUpdateSummary } from './cliUpdate-Y34VGe9Y.mjs';
@@ -310,8 +310,8 @@ ${typeLabels[type] || type}:`));
310
310
  }
311
311
  console.log(chalk.gray(" An external claude command is only needed for native terminal/mirror use."));
312
312
  try {
313
- const { resolveAgentHomesForCli } = await import('./agentHome-2IbIjKCa.mjs');
314
- const { describeAgentHome } = await import('./index-DQplgo0W.mjs');
313
+ const { resolveAgentHomesForCli } = await import('./agentHome-Ct-VXFeG.mjs');
314
+ const { describeAgentHome } = await import('./index-D8m8Ripb.mjs');
315
315
  const homes = await resolveAgentHomesForCli();
316
316
  console.log(chalk.green(`\u2713 Claude config dir: ${describeAgentHome(homes.claudeConfigDir)}`));
317
317
  console.log(chalk.green(`\u2713 Codex home: ${describeAgentHome(homes.codexHome)}`));