very-happy-cli 0.2.203 → 0.2.204

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 (222) hide show
  1. package/dist/{AcpBackend-CAMuhS0Z.mjs → AcpBackend-BBfcpIDj.mjs} +3 -3
  2. package/dist/{AcpBackend-DReFgpYD.cjs → AcpBackend-BupxHXGp.cjs} +3 -3
  3. package/dist/{AcpSessionManager-CJOxMFCF.mjs → AcpSessionManager-B9UkPYGi.mjs} +2 -2
  4. package/dist/{AcpSessionManager-BZKM-sCt.cjs → AcpSessionManager-JJrnenKM.cjs} +2 -2
  5. package/dist/{BasePermissionHandler-BBR9Gkob.cjs → BasePermissionHandler-86_xnisC.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-BgX73mQ5.mjs → BasePermissionHandler-tGylJLUH.mjs} +1 -1
  7. package/dist/{account-hy0rztXY.mjs → account-BRqUOj_D.mjs} +11 -11
  8. package/dist/{account-41PkJ9nx.cjs → account-C91_R-kw.cjs} +11 -11
  9. package/dist/{accountService-DEpIq6CF.mjs → accountService-CqrWNH8K.mjs} +4 -4
  10. package/dist/{accountService-Cns8UYGI.cjs → accountService-SOeB_21A.cjs} +4 -4
  11. package/dist/{acpSessionResume-5El4xksf.mjs → acpSessionResume-CZQ91ano.mjs} +1 -1
  12. package/dist/{acpSessionResume-DmOPXKpC.cjs → acpSessionResume-DK8EjIY0.cjs} +1 -1
  13. package/dist/{agentHome-DUxArmak.mjs → agentHome-71zGywwx.mjs} +4 -4
  14. package/dist/{agentHome-BXaVMqHX.cjs → agentHome-BZvbPuy1.cjs} +4 -4
  15. package/dist/{api-D8ZDxBWw.mjs → api-BYh1VGBa.mjs} +107 -18
  16. package/dist/{api-ChhFBuB0.cjs → api-BoJA-zK3.cjs} +107 -18
  17. package/dist/{apiMachine-qav2pnk5.mjs → apiMachine--_eI4PTv.mjs} +105 -21
  18. package/dist/{apiMachine-MPwddFXq.cjs → apiMachine-CA58NM_V.cjs} +105 -21
  19. package/dist/{attachmentContent-BfSQxccA.mjs → attachmentContent-D95cCBX5.mjs} +2 -2
  20. package/dist/{attachmentContent-f5gwnv9J.cjs → attachmentContent-y621KwMz.cjs} +2 -2
  21. package/dist/{auth-thi2T_T8.cjs → auth-CAkpHr8F.cjs} +5 -5
  22. package/dist/{auth-BxNuFv_0.mjs → auth-DCzFx5BN.mjs} +8 -8
  23. package/dist/{auth-xW7SDE_7.mjs → auth-DRJ_WPn3.mjs} +5 -5
  24. package/dist/{auth-DkPAHXLj.cjs → auth-Dofm64Kp.cjs} +8 -8
  25. package/dist/{auto-DmXTwayU.mjs → auto-CrgOy5OR.mjs} +18 -18
  26. package/dist/{auto-BiRlQ4tm.cjs → auto-D4IBwJEE.cjs} +18 -18
  27. package/dist/{bootstrap-EGhaCmXy.cjs → bootstrap-D16MMPNP.cjs} +2 -2
  28. package/dist/{bootstrap-pGaFGbWO.mjs → bootstrap-PnL2FX64.mjs} +2 -2
  29. package/dist/{browser-BYSYzXvP.mjs → browser-D2enJJfv.mjs} +1 -1
  30. package/dist/{browser-DSxpOnPb.cjs → browser-DK2GfyEr.cjs} +1 -1
  31. package/dist/{claudeAccountEnv-Btp39mfa.cjs → claudeAccountEnv-BTZjHTpF.cjs} +1 -1
  32. package/dist/{claudeAccountEnv-DowsOlDB.mjs → claudeAccountEnv-C6Wl-ZbT.mjs} +1 -1
  33. package/dist/{claudeLocal-bDarWqaU.mjs → claudeLocal-BbzN1qly.mjs} +5 -5
  34. package/dist/{claudeLocal-ClqHmkk6.cjs → claudeLocal-DaqiRW9N.cjs} +5 -5
  35. package/dist/{claudeLocalLauncher-Bxi0_eW9.cjs → claudeLocalLauncher-B0qbyOUc.cjs} +10 -10
  36. package/dist/{claudeLocalLauncher-Ccpj2KgW.mjs → claudeLocalLauncher-D7bhZ9rp.mjs} +10 -10
  37. package/dist/claudeLongContext-BR_zdjUp.cjs +239 -0
  38. package/dist/claudeLongContext-CZ60xo5p.mjs +219 -0
  39. package/dist/{claudeSessionFork-Cize0Y2T.mjs → claudeSessionFork-BPF3cpGs.mjs} +1 -1
  40. package/dist/{claudeSessionFork-nyNFjgaf.cjs → claudeSessionFork-lcajftLB.cjs} +1 -1
  41. package/dist/{client-DO8DNDC3.mjs → client-BH4s6mzX.mjs} +2 -2
  42. package/dist/{client-CgMVIP7v.mjs → client-BHt14nix.mjs} +2 -2
  43. package/dist/{client-DP8FabOE.cjs → client-ByK8-iRd.cjs} +3 -3
  44. package/dist/{client-Cddb1dhi.cjs → client-CqmT_ur8.cjs} +2 -2
  45. package/dist/{client-6Y6O72Uq.cjs → client-D5_YDMpA.cjs} +2 -2
  46. package/dist/{client-Wr_BiOon.mjs → client-Og5iNZ6S.mjs} +16 -7
  47. package/dist/{client-CX8kRedW.mjs → client-t1vQ7gho.mjs} +3 -3
  48. package/dist/{client-CMKgB-76.cjs → client-xA44FUnf.cjs} +16 -7
  49. package/dist/codex/happyMcpStdioBridge.cjs +20 -19
  50. package/dist/codex/happyMcpStdioBridge.mjs +20 -19
  51. package/dist/{codexAccount-CieIQLOX.mjs → codexAccount-BPQ-lPhH.mjs} +1 -1
  52. package/dist/{codexAccount-D-OBY29W.cjs → codexAccount-BjaHvmKH.cjs} +1 -1
  53. package/dist/{codexAppServerClient-D-cD2Dfj.mjs → codexAppServerClient-CvL3eBlM.mjs} +3 -3
  54. package/dist/{codexAppServerClient-EzrHWYhX.cjs → codexAppServerClient-CyLtj1kP.cjs} +3 -3
  55. package/dist/{codexCommand-BMcXtvU3.cjs → codexCommand-B0Slfvne.cjs} +67 -56
  56. package/dist/{codexCommand-D79GnRhB.mjs → codexCommand-CXytYlk9.mjs} +67 -56
  57. package/dist/{codexTermination-CF6xiFbb.cjs → codexTermination-CykPnK3G.cjs} +1 -1
  58. package/dist/{codexTermination-CK1MYJT7.mjs → codexTermination-D0sBaTvW.mjs} +1 -1
  59. package/dist/{config-F6zSRyk2.cjs → config-7Z5qIB3k.cjs} +3 -3
  60. package/dist/{config-Crn1mNgr.mjs → config-DeXK_5y4.mjs} +3 -3
  61. package/dist/{configuration-Cl9kOv09.cjs → configuration-CDqmWkHO.cjs} +1 -1
  62. package/dist/{configuration-i9MVy0a5.mjs → configuration-D_YrWa_i.mjs} +1 -1
  63. package/dist/{connect-CiA13Xm4.mjs → connect-CivOym_v.mjs} +13 -13
  64. package/dist/{connect-ClklWmnI.cjs → connect-D_tzdR4l.cjs} +13 -13
  65. package/dist/{context-DvdZsGgl.mjs → context-DXfkj_FL.mjs} +1 -1
  66. package/dist/{context-BxODP3mG.cjs → context-k2CbuBtp.cjs} +1 -1
  67. package/dist/{controlClient-DxCQKfqe.cjs → controlClient-BS86Ksm8.cjs} +12 -3
  68. package/dist/{controlClient-D6vqMUfi.mjs → controlClient-Daki7wgo.mjs} +12 -4
  69. package/dist/{createSessionMetadata-B_NZvmhm.cjs → createSessionMetadata-2s80RDL1.cjs} +2 -2
  70. package/dist/{createSessionMetadata-BuAVB-xI.mjs → createSessionMetadata-B_hQ8lDn.mjs} +2 -2
  71. package/dist/{daemonAccounts-ciidbU2h.cjs → daemonAccounts-BOoI7-sw.cjs} +2 -2
  72. package/dist/{daemonAccounts-D5shoCLt.mjs → daemonAccounts-BtkmoJmC.mjs} +3 -3
  73. package/dist/{defaultPermissionMode-DgeiMMqy.mjs → defaultPermissionMode-CYQi7vqJ.mjs} +1 -1
  74. package/dist/{defaultPermissionMode-Cs_Tv83b.cjs → defaultPermissionMode-DmLYaaL8.cjs} +1 -1
  75. package/dist/{deterministicJson-B9XrEawW.mjs → deterministicJson-DKiOtrSA.mjs} +23 -16
  76. package/dist/{deterministicJson-kM2OdGZu.cjs → deterministicJson-lwG_VzWd.cjs} +23 -16
  77. package/dist/{doctor-DiPRqsqg.cjs → doctor-C0kONAQn.cjs} +7 -7
  78. package/dist/{doctor-HHS4YegX.mjs → doctor-DegBfYjz.mjs} +7 -7
  79. package/dist/{downloadTarget-osB-mGh0.cjs → downloadTarget-BTEVg8t6.cjs} +6 -6
  80. package/dist/{downloadTarget-Cd8hx54t.mjs → downloadTarget-osakJyyA.mjs} +6 -6
  81. package/dist/{ensureDaemonRunning-C0iDtuL7.mjs → ensureDaemonRunning-ED6UVEbk.mjs} +5 -5
  82. package/dist/{ensureDaemonRunning-CtBvPHVB.cjs → ensureDaemonRunning-vxHxmXo2.cjs} +5 -5
  83. package/dist/exitNotice-BhRrv8dx.cjs +88 -0
  84. package/dist/exitNotice-D1tMULzu.mjs +79 -0
  85. package/dist/{forkBackfill-DYIjlN1Z.mjs → forkBackfill-C9EfJ64O.mjs} +28 -2
  86. package/dist/{forkBackfill-8eLDeS73.cjs → forkBackfill-D2WW91fz.cjs} +28 -1
  87. package/dist/{format-B5V7ie8N.cjs → format-9KvRMdvY.cjs} +1 -1
  88. package/dist/{format-Dc5zMslz.mjs → format-DJwRUrQm.mjs} +1 -1
  89. package/dist/{handleResumeCommand-vcD2qcAM.cjs → handleResumeCommand-0lsgLgBB.cjs} +5 -5
  90. package/dist/{handleResumeCommand-xrOAA1qI.mjs → handleResumeCommand-PfKmR-hv.mjs} +5 -5
  91. package/dist/{index-iFVMrlPo.mjs → index-BNcFxRSt.mjs} +4 -4
  92. package/dist/{index-44o_qMvE.cjs → index-BYL_X3gP.cjs} +27 -6
  93. package/dist/{index-AyDwQ6FG.cjs → index-B_narjYR.cjs} +45 -44
  94. package/dist/{index-Cl-WkB_6.cjs → index-Bm_9wBaO.cjs} +4 -4
  95. package/dist/{index-C_ePuQwB.cjs → index-C7yXrMau.cjs} +3 -3
  96. package/dist/{index-B7pKBIcn.mjs → index-CUJZx4cs.mjs} +3 -3
  97. package/dist/{index-DIKJMfs2.mjs → index-CUeuMsap.mjs} +4 -4
  98. package/dist/{index-B7CXMlrz.mjs → index-D1rxFJ2b.mjs} +46 -45
  99. package/dist/{index-CiRMvS73.mjs → index-DWk-WTU-.mjs} +24 -7
  100. package/dist/{index-D0rCXp-e.cjs → index-l8Xg3Mbf.cjs} +4 -4
  101. package/dist/index.cjs +2 -2
  102. package/dist/index.mjs +2 -2
  103. package/dist/{install-yqS4y1cm.mjs → install-B593oYZs.mjs} +3 -3
  104. package/dist/{install-BgBgsOlS.cjs → install-C0I1a5sL.cjs} +3 -3
  105. package/dist/{issue-D7liK6bR.cjs → issue-CJrXCpnf.cjs} +8 -8
  106. package/dist/{issue-aKZd7J55.mjs → issue-D9ukoK-U.mjs} +8 -8
  107. package/dist/lib.cjs +12 -12
  108. package/dist/lib.d.cts +42 -1
  109. package/dist/lib.d.mts +42 -1
  110. package/dist/lib.mjs +12 -12
  111. package/dist/{localHappyAgentAuth-B2JJxlE9.mjs → localHappyAgentAuth-CxNcSjMM.mjs} +1 -1
  112. package/dist/{localHappyAgentAuth-Dm9obisi.cjs → localHappyAgentAuth-D3GKuEC2.cjs} +1 -1
  113. package/dist/{logger-BiKmiREe.mjs → logger-BcdURxNR.mjs} +2 -2
  114. package/dist/{logger-BtWBoP60.cjs → logger-C8anCmdW.cjs} +2 -2
  115. package/dist/{machineMetadata-CiyO9wm-.mjs → machineMetadata-BQaQQk6Z.mjs} +3 -3
  116. package/dist/{machineMetadata-C0-LyMsb.cjs → machineMetadata-DYWtdEtE.cjs} +3 -3
  117. package/dist/{main-C7hKf5hG.cjs → main-Bw7qSCWA.cjs} +48 -48
  118. package/dist/{main-BP2TBnp5.mjs → main-KsUdHnwc.mjs} +48 -48
  119. package/dist/{mcp-DO00rr9n.cjs → mcp-CxPUFOEd.cjs} +20 -18
  120. package/dist/{mcp-Cn4k-PXb.mjs → mcp-OeLaQ2XR.mjs} +20 -18
  121. package/dist/{mirrorProtocol-DDtEN49F.mjs → mirrorProtocol-Sj0yEHHU.mjs} +3 -3
  122. package/dist/{mirrorProtocol-DwO8QgLM.cjs → mirrorProtocol-cTQcrW55.cjs} +3 -3
  123. package/dist/{package-Djdgx8nb.cjs → package-DkpXQvp1.cjs} +7 -7
  124. package/dist/{package-CIW5lwaN.mjs → package-Dx3hbh9J.mjs} +7 -7
  125. package/dist/{panels-DMLtEOtJ.cjs → panels-CPNZnwCH.cjs} +5 -5
  126. package/dist/{panels-BpfVEvwF.mjs → panels-DKYO14Sq.mjs} +5 -5
  127. package/dist/{peerTools-CQ60fUPp.mjs → peerTools-DYFslv6R.mjs} +5 -5
  128. package/dist/{peerTools-fYuKq3ev.cjs → peerTools-DpCWFxI6.cjs} +5 -5
  129. package/dist/{persistence-D_zVC4Xz.mjs → persistence-3iZXGbfb.mjs} +2 -2
  130. package/dist/{persistence-BOEZtiKb.cjs → persistence-Ch78xygf.cjs} +2 -2
  131. package/dist/{piRunnerArgs-Dz9P62db.cjs → piRunnerArgs-CA6jqQ0k.cjs} +1 -1
  132. package/dist/{piRunnerArgs-DE_YXvS1.mjs → piRunnerArgs-DEuYl6FL.mjs} +1 -1
  133. package/dist/{piRuntime-Du62fjeU.cjs → piRuntime-BIVHf-hN.cjs} +1 -1
  134. package/dist/{piRuntime-8SbpRmNA.mjs → piRuntime-CyN43ILm.mjs} +1 -1
  135. package/dist/{piTerminal-Cl45kac0.mjs → piTerminal-DXz5L73L.mjs} +22 -20
  136. package/dist/{piTerminal-CGAw7WDW.cjs → piTerminal-Hw4StZWN.cjs} +22 -20
  137. package/dist/{pushNotifications-B19lT5mY.cjs → pushNotifications-D2ejrxlN.cjs} +17 -3
  138. package/dist/{pushNotifications-RVpbqrxR.mjs → pushNotifications-Db1NGJiA.mjs} +17 -3
  139. package/dist/{query-DBRR3TOO.mjs → query-CeYpZWVb.mjs} +1 -1
  140. package/dist/{query-CNWdX2r5.cjs → query-velpFYxW.cjs} +1 -1
  141. package/dist/{rateLimitWindows-DX5y23x_.mjs → rateLimitWindows-BSQttrPk.mjs} +1 -1
  142. package/dist/{rateLimitWindows-mfdokrkQ.cjs → rateLimitWindows-C78D8Uf-.cjs} +1 -1
  143. package/dist/{reconnectGate-DSxYUCWy.mjs → reconnectGate-Ie4nSKNl.mjs} +1 -1
  144. package/dist/{reconnectGate-B8ltzSJD.cjs → reconnectGate-S9yNiuY7.cjs} +1 -1
  145. package/dist/{registerCommonHandlers-Y2siJGwL.cjs → registerCommonHandlers-51llVpLx.cjs} +2 -2
  146. package/dist/{registerCommonHandlers-CQDRKlkG.mjs → registerCommonHandlers-BR7BeGX3.mjs} +2 -2
  147. package/dist/{registerKillSessionHandler-B0pMZOdH.cjs → registerKillSessionHandler-BjY79qBi.cjs} +6 -6
  148. package/dist/{registerKillSessionHandler-U4Dxtohy.mjs → registerKillSessionHandler-RbWPmKnK.mjs} +6 -6
  149. package/dist/{registerSideQuestionHandler--ruKhCdY.cjs → registerSideQuestionHandler-B1Xk7dFK.cjs} +4 -4
  150. package/dist/{registerSideQuestionHandler-DM1QqTxf.mjs → registerSideQuestionHandler-BbYT7QfR.mjs} +4 -4
  151. package/dist/{remoteSessionClient-T-Raoiy6.mjs → remoteSessionClient-Ddns3U8M.mjs} +5 -5
  152. package/dist/{remoteSessionClient-CjINaEs_.cjs → remoteSessionClient-r-UnqHor.cjs} +5 -5
  153. package/dist/{reportProgressTool-DDfL1OY7.cjs → reportProgressTool-ByadxJtc.cjs} +5 -5
  154. package/dist/{reportProgressTool-Stg0xrjF.mjs → reportProgressTool-C3sf9D8m.mjs} +5 -5
  155. package/dist/{run-Dq48xBtw.mjs → run-jsINwBOz.mjs} +200 -55
  156. package/dist/{run-BoSVfVCZ.cjs → run-r5sY3wHk.cjs} +200 -55
  157. package/dist/{runClaude-D8ScJdJU.cjs → runClaude-CRKsRfnq.cjs} +53 -38
  158. package/dist/{runClaude-CJe5atrS.mjs → runClaude-D8CuiZhi.mjs} +44 -29
  159. package/dist/{runClaudeDeps-4RFRR4cY.cjs → runClaudeDeps-BiVzNIE6.cjs} +129 -61
  160. package/dist/{runClaudeDeps-CL3goCXG.mjs → runClaudeDeps-CUuPWcg9.mjs} +125 -57
  161. package/dist/{runGemini-BcbNxgsA.cjs → runGemini-DANnc0BW.cjs} +36 -35
  162. package/dist/{runGemini-DZv6jPxV.mjs → runGemini-cqVZjPT6.mjs} +36 -35
  163. package/dist/{runOpenClaw-CRqCoj-_.mjs → runOpenClaw-B6V2nz8J.mjs} +18 -18
  164. package/dist/{runOpenClaw-BeSivE0X.cjs → runOpenClaw-CGwc6mfJ.cjs} +18 -18
  165. package/dist/{sandbox-xflHChws.cjs → sandbox-CNheYPva.cjs} +4 -4
  166. package/dist/{sandbox-DAvJJZcV.mjs → sandbox-JYBMckKE.mjs} +4 -4
  167. package/dist/{selfCheck-DZwdgBg0.cjs → selfCheck-DtSEBt0g.cjs} +40 -40
  168. package/dist/selfCheck-Jjy_wMw3.mjs +89 -0
  169. package/dist/{send-Co_l_Nmg.mjs → send-BHrbbGJ7.mjs} +8 -8
  170. package/dist/{send-ConAuYqL.cjs → send-DNdJR3n8.cjs} +8 -8
  171. package/dist/{server-by6kezmM.cjs → server-CvP_b3eb.cjs} +6 -6
  172. package/dist/{server-D1Qrmxl7.mjs → server-DhQjVsyZ.mjs} +4 -4
  173. package/dist/{sessionLock-DFrwAnwR.mjs → sessionLock-5i516L-w.mjs} +21 -4
  174. package/dist/{sessionLock-Db_uQcUP.cjs → sessionLock-UkF8M3j5.cjs} +22 -3
  175. package/dist/{sessionOps-CptDjoZi.cjs → sessionOps-D77IeFSt.cjs} +4 -4
  176. package/dist/{sessionOps-C7nps7qG.mjs → sessionOps-DX49XNAT.mjs} +4 -4
  177. package/dist/{sessionProvider-BaJq1AnY.mjs → sessionProvider-C5xW4Dt3.mjs} +10 -10
  178. package/dist/{sessionProvider-D9nsAE14.cjs → sessionProvider-mSI2UgLX.cjs} +10 -10
  179. package/dist/{sessionScanner-C6OVO0Ne.cjs → sessionScanner-B1Am8D4Y.cjs} +3 -3
  180. package/dist/{sessionScanner-BOb33NVJ.mjs → sessionScanner-BZkOnp5a.mjs} +3 -3
  181. package/dist/{sessions-GCql_3Dl.mjs → sessions-ClQFpjcA.mjs} +10 -10
  182. package/dist/{sessions-qVHDXJa6.cjs → sessions-DDDEiHVR.cjs} +10 -10
  183. package/dist/{setupOfflineReconnection-B8QKqc9a.cjs → setupOfflineReconnection-Cn2_vuvO.cjs} +2 -2
  184. package/dist/{setupOfflineReconnection-lu0YbS7m.mjs → setupOfflineReconnection-PjK9laDd.mjs} +2 -2
  185. package/dist/{spawn-C9NSlg99.mjs → spawn-BJGaxdot.mjs} +15 -15
  186. package/dist/{spawn-tL-724RS.cjs → spawn-DOj-sY6W.cjs} +15 -15
  187. package/dist/{spawnAgents-BclZYkov.mjs → spawnAgents-CcFKtKdX.mjs} +2 -1
  188. package/dist/{spawnAgents-DvbEDCIq.cjs → spawnAgents-D4lR468W.cjs} +2 -1
  189. package/dist/{spawnHappyCLI-jXUKLUT5.mjs → spawnHappyCLI-CpOMz9hX.mjs} +1 -1
  190. package/dist/{spawnHappyCLI-D7EO8s4E.cjs → spawnHappyCLI-DvxZ7elP.cjs} +1 -1
  191. package/dist/{startFileWatcher-6NpLGxg5.cjs → startFileWatcher-1ar7WS96.cjs} +1 -1
  192. package/dist/{startFileWatcher-C7eFs4hA.mjs → startFileWatcher-CPbPNFGY.mjs} +1 -1
  193. package/dist/{startupSessionCreate-C5wdvraY.cjs → startupSessionCreate-COc5Nnr9.cjs} +3 -3
  194. package/dist/{startupSessionCreate-D3ph1DtL.mjs → startupSessionCreate-CnVaUZ16.mjs} +3 -3
  195. package/dist/{store-Cpb1LMNW.cjs → store-DGMILdMn.cjs} +1 -1
  196. package/dist/{store-DWmjM4Ex.mjs → store-Fge1h9wy.mjs} +1 -1
  197. package/dist/{streamRelay-DdGOsW8v.mjs → streamRelay-MaaYNNuh.mjs} +1 -1
  198. package/dist/{streamRelay-4XiiNB3N.cjs → streamRelay-keuifCPQ.cjs} +1 -1
  199. package/dist/{sync-BIXH8ijr.mjs → sync-BZji3J2r.mjs} +1 -1
  200. package/dist/{sync-ni64k2OI.cjs → sync-DzInYE_l.cjs} +1 -1
  201. package/dist/{systemPrompt-DuoULaqr.cjs → systemPrompt-CvpjNmQL.cjs} +2 -2
  202. package/dist/{systemPrompt-B_vnlIr1.mjs → systemPrompt-Dhdq8hGf.mjs} +2 -2
  203. package/dist/{teams-DLfcbOMh.cjs → teams-CRCbDPob.cjs} +20 -9
  204. package/dist/{teams-CsR_8p3Q.mjs → teams-CVW4ZvmW.mjs} +20 -9
  205. package/dist/{template-3fV9bi0X.cjs → template-ChUotPTL.cjs} +1 -1
  206. package/dist/{template-CtRLg2PG.mjs → template-D8fzlO58.mjs} +1 -1
  207. package/dist/{time-Che8GhII.mjs → time-BWVJTcWI.mjs} +1 -1
  208. package/dist/{time-BMCY7zJL.cjs → time-UUMqbIq8.cjs} +1 -1
  209. package/dist/{titleGenerator-HVEN1e7o.cjs → titleGenerator-BHOA2Wkx.cjs} +3 -3
  210. package/dist/{titleGenerator-B9LckLDq.mjs → titleGenerator-Ck82YoB7.mjs} +2 -2
  211. package/dist/{todo-bc7db5NN.mjs → todo-Cf52TlmX.mjs} +8 -8
  212. package/dist/{todo-B8byb_cy.cjs → todo-Cwo7joub.cjs} +8 -8
  213. package/dist/{tools--RN1SFkD.cjs → tools-DEErCtZG.cjs} +1 -1
  214. package/dist/{tools-BAMaBbbP.mjs → tools-DmNaOlUF.mjs} +1 -1
  215. package/dist/{uninstall-Dv4C-W9z.mjs → uninstall-B85MiNK2.mjs} +3 -3
  216. package/dist/{uninstall-UC0Q8YTj.cjs → uninstall-CoAK4ANz.cjs} +3 -3
  217. package/dist/{wrapperAccount-nGGMJDBF.cjs → wrapperAccount-BHMM9I6g.cjs} +2 -2
  218. package/dist/{wrapperAccount-z8Swrd08.mjs → wrapperAccount-CwaA-n1S.mjs} +2 -2
  219. package/package.json +7 -7
  220. package/dist/permissionMode-CH4FoZfU.mjs +0 -80
  221. package/dist/permissionMode-CrV-XuMs.cjs +0 -87
  222. package/dist/selfCheck-BKOIROoJ.mjs +0 -89
@@ -0,0 +1,219 @@
1
+ import { readFileSync, writeFileSync, renameSync, mkdirSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { join, dirname } from 'node:path';
4
+ import { L as LATEST_MODEL_MODE, K as LONG_CONTEXT_MARKER } from './index-DWk-WTU-.mjs';
5
+
6
+ function mapToClaudeMode(mode) {
7
+ const codexToClaudeMap = {
8
+ "yolo": "bypassPermissions",
9
+ "safe-yolo": "default",
10
+ "read-only": "default"
11
+ };
12
+ return codexToClaudeMap[mode] ?? mode;
13
+ }
14
+ const VALID_PERMISSION_MODES = [
15
+ "default",
16
+ "acceptEdits",
17
+ "bypassPermissions",
18
+ "plan",
19
+ "read-only",
20
+ "safe-yolo",
21
+ "yolo"
22
+ ];
23
+ function isPermissionMode(value) {
24
+ return !!value && VALID_PERMISSION_MODES.includes(value);
25
+ }
26
+ function parseClaudePermissionMode(value) {
27
+ return typeof value === "string" && isPermissionMode(value) ? mapToClaudeMode(value) : null;
28
+ }
29
+ function extractPermissionModeFromClaudeArgs(claudeArgs) {
30
+ if (!claudeArgs || claudeArgs.length === 0) {
31
+ return void 0;
32
+ }
33
+ let found = void 0;
34
+ for (let i = 0; i < claudeArgs.length; i++) {
35
+ const arg = claudeArgs[i];
36
+ if (arg === "--permission-mode") {
37
+ const next = claudeArgs[i + 1];
38
+ if (isPermissionMode(next)) {
39
+ found = next;
40
+ }
41
+ i += 1;
42
+ continue;
43
+ }
44
+ if (arg.startsWith("--permission-mode=")) {
45
+ const value = arg.slice("--permission-mode=".length);
46
+ if (isPermissionMode(value)) {
47
+ found = value;
48
+ }
49
+ }
50
+ }
51
+ return found;
52
+ }
53
+ function resolveInitialClaudePermissionMode(optionMode, claudeArgs) {
54
+ if (claudeArgs?.includes("--dangerously-skip-permissions")) {
55
+ return "bypassPermissions";
56
+ }
57
+ return extractPermissionModeFromClaudeArgs(claudeArgs) ?? optionMode;
58
+ }
59
+ function applySandboxPermissionPolicy(mode, sandboxEnabled) {
60
+ if (!sandboxEnabled) {
61
+ return mode;
62
+ }
63
+ return "bypassPermissions";
64
+ }
65
+ function isClaudeBypassEquivalent(mode) {
66
+ return mode === "bypassPermissions" || mode === "yolo";
67
+ }
68
+ function resolveRemoteClaudePermissionMode(currentMode, incomingMode, sandboxEnabled) {
69
+ if (!incomingMode) {
70
+ return currentMode;
71
+ }
72
+ const nextMode = applySandboxPermissionPolicy(incomingMode, sandboxEnabled);
73
+ if (isClaudeBypassEquivalent(currentMode) && nextMode === "default") {
74
+ return currentMode;
75
+ }
76
+ return nextMode;
77
+ }
78
+ function reconcilePublishedPermissionMode(input) {
79
+ if (!input.effective) return null;
80
+ const mismatch = input.effective !== input.intent;
81
+ if (input.effective === input.published) return mismatch ? { publish: input.effective, mismatch } : null;
82
+ return { publish: input.effective, mismatch };
83
+ }
84
+
85
+ function str(value) {
86
+ return typeof value === "string" && value.trim() ? value.trim() : null;
87
+ }
88
+ function configuredModelOf(settings, processEnvModel) {
89
+ const env = settings?.env && typeof settings.env === "object" ? settings.env : {};
90
+ return str(env.ANTHROPIC_MODEL) ?? str(processEnvModel) ?? str(settings?.model);
91
+ }
92
+ function claudeSettingsFiles(env, cwd, home = homedir()) {
93
+ const userDir = env.CLAUDE_CONFIG_DIR?.trim() || join(home, ".claude");
94
+ return [join(userDir, "settings.json"), join(cwd, ".claude", "settings.json"), join(cwd, ".claude", "settings.local.json")];
95
+ }
96
+ function readClaudeMergedSettings(env, cwd, readFile = (path) => readFileSync(path, "utf8"), home) {
97
+ let model;
98
+ const mergedEnv = {};
99
+ for (const path of claudeSettingsFiles(env, cwd, home)) {
100
+ let parsed;
101
+ try {
102
+ parsed = JSON.parse(readFile(path));
103
+ } catch {
104
+ continue;
105
+ }
106
+ if (!parsed || typeof parsed !== "object") continue;
107
+ const settings = parsed;
108
+ if (str(settings.model)) model = settings.model;
109
+ if (settings.env && typeof settings.env === "object") Object.assign(mergedEnv, settings.env);
110
+ }
111
+ return { model, env: mergedEnv };
112
+ }
113
+ function readClaudeConfiguredModel(env, cwd, readFile, home) {
114
+ return configuredModelOf(readClaudeMergedSettings(env, cwd, readFile, home), env.ANTHROPIC_MODEL);
115
+ }
116
+
117
+ const LONG_CONTEXT_ERROR_TEXT = /long[ -]context|context-1m|\b1m context\b/i;
118
+ const REJECTION_STATUSES = /* @__PURE__ */ new Set([400, 403, 429]);
119
+ function rootErrorText(message) {
120
+ const content = message.message?.content;
121
+ if (!Array.isArray(content)) return "";
122
+ return content.map((block) => block && typeof block === "object" && typeof block.text === "string" ? block.text : "").join(" ");
123
+ }
124
+ function longContextRejectionFrom(message, runningModel) {
125
+ const m = message;
126
+ if (!m || m.type !== "assistant" || !m.error) return null;
127
+ if ((m.parent_tool_use_id ?? null) !== null) return null;
128
+ if (typeof runningModel !== "string" || !runningModel.endsWith(LONG_CONTEXT_MARKER)) return null;
129
+ const status = typeof m.api_error_status === "number" ? m.api_error_status : null;
130
+ if (status !== null && !REJECTION_STATUSES.has(status)) return null;
131
+ const text = rootErrorText(m);
132
+ if (!LONG_CONTEXT_ERROR_TEXT.test(text)) return null;
133
+ return { model: runningModel, plain: runningModel.slice(0, -LONG_CONTEXT_MARKER.length), reason: text.trim().slice(0, 300) };
134
+ }
135
+ function longContextFallbackNotice(rejection) {
136
+ return `\u26A0\uFE0F This account or provider does not support 1M context \u2014 retried with ${rejection.plain} (standard context). Following latest no longer uses 1M on this machine.
137
+ \u26A0\uFE0F \u5F53\u524D\u8D26\u53F7\u6216\u4F9B\u5E94\u5546\u4E0D\u652F\u6301 1M \u4E0A\u4E0B\u6587\uFF0C\u5DF2\u6539\u7528 ${rejection.plain}\uFF08\u6807\u51C6\u4E0A\u4E0B\u6587\uFF09\u91CD\u8BD5\u3002\u6B64\u540E\u8FD9\u53F0\u673A\u5668\u8DDF\u968F\u6700\u65B0\u4E0D\u518D\u4F7F\u7528 1M\u3002`;
138
+ }
139
+ function longContextInterruptedNotice(rejection) {
140
+ return `\u26A0\uFE0F This account or provider does not support 1M context, and this turn stopped partway. Switched to ${rejection.plain} (standard context); nothing was resent \u2014 check the work so far and send your next message.
141
+ \u26A0\uFE0F \u5F53\u524D\u8D26\u53F7\u6216\u4F9B\u5E94\u5546\u4E0D\u652F\u6301 1M \u4E0A\u4E0B\u6587\uFF0C\u8FD9\u4E00\u8F6E\u4E2D\u9014\u505C\u6B62\u3002\u5DF2\u5207\u5230 ${rejection.plain}\uFF08\u6807\u51C6\u4E0A\u4E0B\u6587\uFF09\uFF0C\u6CA1\u6709\u81EA\u52A8\u91CD\u53D1\uFF1A\u8BF7\u786E\u8BA4\u5DF2\u5B8C\u6210\u7684\u90E8\u5206\u540E\u518D\u53D1\u4E0B\u4E00\u6761\u3002`;
142
+ }
143
+ function longContextExplicitNotice(rejection) {
144
+ return `\u26A0\uFE0F ${rejection.model} was rejected: this account or provider does not support 1M context. Turn off 1M context in the model picker (or pick another model) and send again.
145
+ \u26A0\uFE0F ${rejection.model} \u88AB\u62D2\u7EDD\uFF1A\u5F53\u524D\u8D26\u53F7\u6216\u4F9B\u5E94\u5546\u4E0D\u652F\u6301 1M \u4E0A\u4E0B\u6587\u3002\u8BF7\u5728\u6A21\u578B\u9009\u62E9\u5668\u91CC\u5173\u95ED 1M \u4E0A\u4E0B\u6587\uFF08\u6216\u6362\u4E00\u4E2A\u6A21\u578B\uFF09\u540E\u91CD\u65B0\u53D1\u9001\u3002`;
146
+ }
147
+ function longContextKey(env, settingsEnv = {}) {
148
+ const base = typeof settingsEnv.ANTHROPIC_BASE_URL === "string" && settingsEnv.ANTHROPIC_BASE_URL.trim() ? settingsEnv.ANTHROPIC_BASE_URL.trim() : env.ANTHROPIC_BASE_URL?.trim() || "anthropic";
149
+ return `${base}|${env.CLAUDE_CONFIG_DIR?.trim() || "~/.claude"}`;
150
+ }
151
+ function longContextStorePath(happyHomeDir) {
152
+ return join(happyHomeDir, "claude-long-context.json");
153
+ }
154
+ function readStore(path) {
155
+ try {
156
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
157
+ return parsed && typeof parsed === "object" ? parsed : {};
158
+ } catch {
159
+ return {};
160
+ }
161
+ }
162
+ function readLongContextVerdict(path, key) {
163
+ const entry = readStore(path).unsupported?.[key];
164
+ return entry && typeof entry.reason === "string" && typeof entry.at === "number" ? entry : null;
165
+ }
166
+ function writeLongContextVerdict(path, key, verdict) {
167
+ const store = readStore(path);
168
+ store.unsupported = { ...store.unsupported, [key]: verdict };
169
+ mkdirSync(dirname(path), { recursive: true });
170
+ const tmp = `${path}.${process.pid}.tmp`;
171
+ writeFileSync(tmp, JSON.stringify(store, null, 2));
172
+ renameSync(tmp, path);
173
+ }
174
+ function clearLongContextVerdict(path, key) {
175
+ const store = readStore(path);
176
+ if (!store.unsupported?.[key]) return;
177
+ const { [key]: _gone, ...rest } = store.unsupported;
178
+ store.unsupported = rest;
179
+ const tmp = `${path}.${process.pid}.tmp`;
180
+ writeFileSync(tmp, JSON.stringify(store, null, 2));
181
+ renameSync(tmp, path);
182
+ }
183
+ function createLongContextPolicy(input) {
184
+ const write = input.write ?? writeLongContextVerdict;
185
+ return {
186
+ onRejected(rejection) {
187
+ const verdict = { reason: rejection.reason, at: (input.now ?? Date.now)() };
188
+ try {
189
+ write(input.storePath, input.key, verdict);
190
+ } catch {
191
+ }
192
+ const retry = input.session.getMetadata()?.modelIntent === LATEST_MODEL_MODE;
193
+ input.session.updateMetadata((metadata) => ({
194
+ ...metadata,
195
+ longContextUnsupported: verdict,
196
+ ...retry && metadata.stickyModel === rejection.model ? { stickyModel: rejection.plain } : {}
197
+ }));
198
+ return retry ? "retry" : "fail";
199
+ },
200
+ onServed() {
201
+ if (!input.session.getMetadata()?.longContextUnsupported) return;
202
+ try {
203
+ (input.clear ?? clearLongContextVerdict)(input.storePath, input.key);
204
+ } catch {
205
+ }
206
+ input.session.updateMetadata((metadata) => ({ ...metadata, longContextUnsupported: null }));
207
+ }
208
+ };
209
+ }
210
+ function messageModelIntent(meta, sessionIntent) {
211
+ if (meta?.modelIntent !== void 0) return meta.modelIntent;
212
+ return typeof meta?.model === "string" && meta.model ? meta.model : sessionIntent;
213
+ }
214
+ function withoutRefusedLongContext(model, modelIntent, verdict) {
215
+ if (!verdict || modelIntent !== LATEST_MODEL_MODE || !model?.endsWith(LONG_CONTEXT_MARKER)) return model;
216
+ return model.slice(0, -LONG_CONTEXT_MARKER.length);
217
+ }
218
+
219
+ export { applySandboxPermissionPolicy as a, longContextKey as b, readClaudeMergedSettings as c, readClaudeConfiguredModel as d, messageModelIntent as e, createLongContextPolicy as f, readLongContextVerdict as g, reconcilePublishedPermissionMode as h, configuredModelOf as i, longContextRejectionFrom as j, longContextFallbackNotice as k, longContextStorePath as l, mapToClaudeMode as m, longContextInterruptedNotice as n, longContextExplicitNotice as o, parseClaudePermissionMode as p, resolveRemoteClaudePermissionMode as q, resolveInitialClaudePermissionMode as r, withoutRefusedLongContext as w };
@@ -3,7 +3,7 @@ import { 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-BiKmiREe.mjs';
6
+ import { l as logger } from './logger-BcdURxNR.mjs';
7
7
 
8
8
  class ForkTruncateUuidNotFoundError extends Error {
9
9
  constructor(cutAfterUuid, sourcePath) {
@@ -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-BtWBoP60.cjs');
8
+ var logger = require('./logger-C8anCmdW.cjs');
9
9
 
10
10
  class ForkTruncateUuidNotFoundError extends Error {
11
11
  constructor(cutAfterUuid, sourcePath) {
@@ -1,5 +1,5 @@
1
- import { c as configuration } from './configuration-i9MVy0a5.mjs';
2
- import { b as readCredentialsForConfiguredRelay } from './persistence-D_zVC4Xz.mjs';
1
+ import { c as configuration } from './configuration-D_YrWa_i.mjs';
2
+ import { b as readCredentialsForConfiguredRelay } from './persistence-3iZXGbfb.mjs';
3
3
 
4
4
  const UNSUPPORTED_BACKOFF_MS = 10 * 6e4;
5
5
  class ProjectsUnsupportedError extends Error {
@@ -1,5 +1,5 @@
1
- import { c as configuration } from './configuration-i9MVy0a5.mjs';
2
- import { b as readCredentialsForConfiguredRelay, r as readSettings } from './persistence-D_zVC4Xz.mjs';
1
+ import { c as configuration } from './configuration-D_YrWa_i.mjs';
2
+ import { b as readCredentialsForConfiguredRelay, r as readSettings } from './persistence-3iZXGbfb.mjs';
3
3
 
4
4
  class AutomationsRequestError extends Error {
5
5
  constructor(status, code, runStatus, invalidFields = []) {
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-44o_qMvE.cjs');
4
- var configuration = require('./configuration-Cl9kOv09.cjs');
5
- var persistence = require('./persistence-BOEZtiKb.cjs');
3
+ var index = require('./index-BYL_X3gP.cjs');
4
+ var configuration = require('./configuration-CDqmWkHO.cjs');
5
+ var persistence = require('./persistence-Ch78xygf.cjs');
6
6
 
7
7
  const ISSUES_UNSUPPORTED_BACKOFF_MS = 10 * 6e4;
8
8
  class IssuesUnsupportedError extends Error {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var configuration = require('./configuration-Cl9kOv09.cjs');
4
- var persistence = require('./persistence-BOEZtiKb.cjs');
3
+ var configuration = require('./configuration-CDqmWkHO.cjs');
4
+ var persistence = require('./persistence-Ch78xygf.cjs');
5
5
 
6
6
  const UNSUPPORTED_BACKOFF_MS = 10 * 6e4;
7
7
  class ProjectsUnsupportedError extends Error {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var configuration = require('./configuration-Cl9kOv09.cjs');
4
- var persistence = require('./persistence-BOEZtiKb.cjs');
3
+ var configuration = require('./configuration-CDqmWkHO.cjs');
4
+ var persistence = require('./persistence-Ch78xygf.cjs');
5
5
 
6
6
  class AutomationsRequestError extends Error {
7
7
  constructor(status, code, runStatus, invalidFields = []) {
@@ -2,10 +2,11 @@ import { randomUUID } from 'node:crypto';
2
2
  import { execFile } from 'node:child_process';
3
3
  import { promisify } from 'node:util';
4
4
  import { basename, dirname } from 'node:path';
5
- import { j as isInsideTeamWorktree, k as rebaseTeamWorktreePath } from './index-CiRMvS73.mjs';
6
- import { c as configuration } from './configuration-i9MVy0a5.mjs';
7
- import { r as readSettings, c as readPersistedSessions, b as readCredentialsForConfiguredRelay } from './persistence-D_zVC4Xz.mjs';
8
- import { r as readTeamScope, t as teamScopePath, w as writeTeamScope } from './context-DvdZsGgl.mjs';
5
+ import { j as isInsideTeamWorktree, k as rebaseTeamWorktreePath } from './index-DWk-WTU-.mjs';
6
+ import { c as configuration } from './configuration-D_YrWa_i.mjs';
7
+ import { r as readSettings, c as readPersistedSessions, b as readCredentialsForConfiguredRelay } from './persistence-3iZXGbfb.mjs';
8
+ import { r as readTeamScope, t as teamScopePath, w as writeTeamScope } from './context-DXfkj_FL.mjs';
9
+ import { r as readTeamExitMarker, t as teamExitedMessage } from './exitNotice-D1tMULzu.mjs';
9
10
 
10
11
  async function teamRequest(path, method, token, scoped, body) {
11
12
  const response = await fetch(`${configuration.serverUrl}${path}`, {
@@ -47,8 +48,10 @@ function teamRefusalMessage(status, body) {
47
48
  const used = count("used"), limit = count("limit");
48
49
  return `Teams request refused (${code}${used !== null && limit !== null ? `: ${used}/${limit}` : ""}): ${TEAM_LIMIT_EXPLANATION}`;
49
50
  }
51
+ if (code === "team_archived") return TEAM_ARCHIVED_MESSAGE;
50
52
  return `Teams request failed (HTTP ${status}: ${code})`;
51
53
  }
54
+ const TEAM_ARCHIVED_MESSAGE = "Teams request refused (team_archived): this team is archived, which is final; its tasks were cancelled and no team action can succeed. Do not retry or wait for team access. Tell the user the team has ended and do what they ask yourself, in this session. \u56E2\u961F\u5DF2\u5F52\u6863\uFF0C\u56E2\u961F\u5DE5\u5177\u4E0D\u518D\u53EF\u7528\uFF1B\u8BF7\u76F4\u63A5\u544A\u8BC9\u7528\u6237\u5E76\u81EA\u5DF1\u5B8C\u6210\u7528\u6237\u7684\u8981\u6C42\u3002";
52
55
  const TEAM_LIMIT_EXPLANATION = "a team capacity limit was reached. This is not rate limiting: retrying or waiting will not help. Closed tasks, their delivered messages and finished operations are archived automatically, so what is left is open work \u2014 accept, cancel or hand off finished tasks (team_inspect shows `capacity`), or ask the user to archive this team and start a new one. \u56E2\u961F\u5BB9\u91CF\u5DF2\u6EE1\uFF0C\u4E0D\u662F\u9650\u6D41\uFF0C\u91CD\u8BD5\u65E0\u6548\uFF1A\u8BF7\u9A8C\u6536/\u53D6\u6D88\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\uFF0C\u6216\u8BF7\u7528\u6237\u5F52\u6863\u672C\u56E2\u961F\u540E\u65B0\u5EFA\u3002";
53
56
  class TeamConnectionPreflightError extends Error {
54
57
  }
@@ -66,7 +69,13 @@ class SessionInOtherTeamError extends TeamConnectionPreflightError {
66
69
  function sessionInOtherTeamMessage(teamName, teamId) {
67
70
  return `This session is already the lead or a member of team "${teamName}"${teamId ? ` (${teamId})` : ""}. Call team_inspect and use team_delegate to assign work inside that team; do not create or join another team. \u4F60\u5DF2\u7ECF\u662F\u56E2\u961F\u300C${teamName}\u300D\u7684\u6210\u5458\u6216\u8D1F\u8D23\u4EBA\uFF0C\u8BF7\u5148 team_inspect\uFF0C\u518D\u7528 team_delegate \u5728\u672C\u56E2\u961F\u5185\u6D3E\u6D3B\uFF0C\u4E0D\u8981\u65B0\u5EFA\u6216\u52A0\u5165\u5176\u4ED6\u56E2\u961F\u3002`;
68
71
  }
69
- const NO_TEAM_SCOPE_MESSAGE = "This session has no team scope. Do not create a team to get one: if you lead or work in a team (for example after a restart), call team_inspect again or tell the user; use team_create or team_join only when the user asks for a new team.";
72
+ const NO_TEAM_SCOPE_MESSAGE = "This session is not in a team, so team tools do not work here. Retrying will not change that. Do not create or join a team to get one: answer the user and do what they ask yourself, in this session; use team_create or team_join only when the user explicitly asks for a new team.";
73
+ const MISSING_TEAM_SCOPE_MESSAGE = "This session's team scope is missing (the Very Happy daemon could not restore it), so team tools do not work here. Retrying will not help. Tell the user; the owner can restart this session from the team page to restore it. Do not create or join another team.";
74
+ function noTeamScopeMessage(sessionId, home = configuration.happyHomeDir) {
75
+ const marker = readTeamExitMarker(home, sessionId);
76
+ if (marker) return teamExitedMessage(marker);
77
+ return process.env.VH_TEAM_SCOPE_FILE ? MISSING_TEAM_SCOPE_MESSAGE : NO_TEAM_SCOPE_MESSAGE;
78
+ }
70
79
  const initializationLocks = /* @__PURE__ */ new Map();
71
80
  async function serializeInitialization(path, work) {
72
81
  const previous = initializationLocks.get(path) ?? Promise.resolve();
@@ -140,13 +149,13 @@ function createTeamsClient(sessionId) {
140
149
  },
141
150
  async inspect() {
142
151
  const scope = await readTeamScope(scopePath());
143
- if (!scope) throw new Error(NO_TEAM_SCOPE_MESSAGE);
152
+ if (!scope) throw new Error(noTeamScopeMessage(sessionId ?? process.env.HAPPY_SESSION_ID));
144
153
  const { credential: _credential, ...safe } = await teamRequest(`/v1/teams/${encodeURIComponent(scope.teamId)}/agent`, "GET", scope.scopeToken, true);
145
154
  return { ...safe, botId: scope.botId };
146
155
  },
147
156
  async action(action, requestId = randomUUID()) {
148
157
  const scope = await readTeamScope(scopePath());
149
- if (!scope) throw new Error(NO_TEAM_SCOPE_MESSAGE);
158
+ if (!scope) throw new Error(noTeamScopeMessage(sessionId ?? process.env.HAPPY_SESSION_ID));
150
159
  const result = await teamRequest(`/v1/teams/${encodeURIComponent(scope.teamId)}/agent`, "POST", scope.scopeToken, true, { requestId, action });
151
160
  const { credential: _credential, ...safe } = result;
152
161
  return safe;
@@ -1,6 +1,6 @@
1
- import { l as ISSUE_ERROR_CODES, m as ISSUES_DISABLED_ERROR, n as ISSUE_WORKER_VERSION } from './index-CiRMvS73.mjs';
2
- import { c as configuration } from './configuration-i9MVy0a5.mjs';
3
- import { b as readCredentialsForConfiguredRelay } from './persistence-D_zVC4Xz.mjs';
1
+ import { l as ISSUE_ERROR_CODES, m as ISSUES_DISABLED_ERROR, n as ISSUE_WORKER_VERSION } from './index-DWk-WTU-.mjs';
2
+ import { c as configuration } from './configuration-D_YrWa_i.mjs';
3
+ import { b as readCredentialsForConfiguredRelay } from './persistence-3iZXGbfb.mjs';
4
4
 
5
5
  const ISSUES_UNSUPPORTED_BACKOFF_MS = 10 * 6e4;
6
6
  class IssuesUnsupportedError extends Error {
@@ -4,10 +4,11 @@ var node_crypto = require('node:crypto');
4
4
  var node_child_process = require('node:child_process');
5
5
  var node_util = require('node:util');
6
6
  var path = require('node:path');
7
- var index = require('./index-44o_qMvE.cjs');
8
- var configuration = require('./configuration-Cl9kOv09.cjs');
9
- var persistence = require('./persistence-BOEZtiKb.cjs');
10
- var context = require('./context-BxODP3mG.cjs');
7
+ var index = require('./index-BYL_X3gP.cjs');
8
+ var configuration = require('./configuration-CDqmWkHO.cjs');
9
+ var persistence = require('./persistence-Ch78xygf.cjs');
10
+ var context = require('./context-k2CbuBtp.cjs');
11
+ var exitNotice = require('./exitNotice-BhRrv8dx.cjs');
11
12
 
12
13
  async function teamRequest(path, method, token, scoped, body) {
13
14
  const response = await fetch(`${configuration.configuration.serverUrl}${path}`, {
@@ -49,8 +50,10 @@ function teamRefusalMessage(status, body) {
49
50
  const used = count("used"), limit = count("limit");
50
51
  return `Teams request refused (${code}${used !== null && limit !== null ? `: ${used}/${limit}` : ""}): ${TEAM_LIMIT_EXPLANATION}`;
51
52
  }
53
+ if (code === "team_archived") return TEAM_ARCHIVED_MESSAGE;
52
54
  return `Teams request failed (HTTP ${status}: ${code})`;
53
55
  }
56
+ const TEAM_ARCHIVED_MESSAGE = "Teams request refused (team_archived): this team is archived, which is final; its tasks were cancelled and no team action can succeed. Do not retry or wait for team access. Tell the user the team has ended and do what they ask yourself, in this session. \u56E2\u961F\u5DF2\u5F52\u6863\uFF0C\u56E2\u961F\u5DE5\u5177\u4E0D\u518D\u53EF\u7528\uFF1B\u8BF7\u76F4\u63A5\u544A\u8BC9\u7528\u6237\u5E76\u81EA\u5DF1\u5B8C\u6210\u7528\u6237\u7684\u8981\u6C42\u3002";
54
57
  const TEAM_LIMIT_EXPLANATION = "a team capacity limit was reached. This is not rate limiting: retrying or waiting will not help. Closed tasks, their delivered messages and finished operations are archived automatically, so what is left is open work \u2014 accept, cancel or hand off finished tasks (team_inspect shows `capacity`), or ask the user to archive this team and start a new one. \u56E2\u961F\u5BB9\u91CF\u5DF2\u6EE1\uFF0C\u4E0D\u662F\u9650\u6D41\uFF0C\u91CD\u8BD5\u65E0\u6548\uFF1A\u8BF7\u9A8C\u6536/\u53D6\u6D88\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\uFF0C\u6216\u8BF7\u7528\u6237\u5F52\u6863\u672C\u56E2\u961F\u540E\u65B0\u5EFA\u3002";
55
58
  class TeamConnectionPreflightError extends Error {
56
59
  }
@@ -68,7 +71,13 @@ class SessionInOtherTeamError extends TeamConnectionPreflightError {
68
71
  function sessionInOtherTeamMessage(teamName, teamId) {
69
72
  return `This session is already the lead or a member of team "${teamName}"${teamId ? ` (${teamId})` : ""}. Call team_inspect and use team_delegate to assign work inside that team; do not create or join another team. \u4F60\u5DF2\u7ECF\u662F\u56E2\u961F\u300C${teamName}\u300D\u7684\u6210\u5458\u6216\u8D1F\u8D23\u4EBA\uFF0C\u8BF7\u5148 team_inspect\uFF0C\u518D\u7528 team_delegate \u5728\u672C\u56E2\u961F\u5185\u6D3E\u6D3B\uFF0C\u4E0D\u8981\u65B0\u5EFA\u6216\u52A0\u5165\u5176\u4ED6\u56E2\u961F\u3002`;
70
73
  }
71
- const NO_TEAM_SCOPE_MESSAGE = "This session has no team scope. Do not create a team to get one: if you lead or work in a team (for example after a restart), call team_inspect again or tell the user; use team_create or team_join only when the user asks for a new team.";
74
+ const NO_TEAM_SCOPE_MESSAGE = "This session is not in a team, so team tools do not work here. Retrying will not change that. Do not create or join a team to get one: answer the user and do what they ask yourself, in this session; use team_create or team_join only when the user explicitly asks for a new team.";
75
+ const MISSING_TEAM_SCOPE_MESSAGE = "This session's team scope is missing (the Very Happy daemon could not restore it), so team tools do not work here. Retrying will not help. Tell the user; the owner can restart this session from the team page to restore it. Do not create or join another team.";
76
+ function noTeamScopeMessage(sessionId, home = configuration.configuration.happyHomeDir) {
77
+ const marker = exitNotice.readTeamExitMarker(home, sessionId);
78
+ if (marker) return exitNotice.teamExitedMessage(marker);
79
+ return process.env.VH_TEAM_SCOPE_FILE ? MISSING_TEAM_SCOPE_MESSAGE : NO_TEAM_SCOPE_MESSAGE;
80
+ }
72
81
  const initializationLocks = /* @__PURE__ */ new Map();
73
82
  async function serializeInitialization(path, work) {
74
83
  const previous = initializationLocks.get(path) ?? Promise.resolve();
@@ -142,13 +151,13 @@ function createTeamsClient(sessionId) {
142
151
  },
143
152
  async inspect() {
144
153
  const scope = await context.readTeamScope(scopePath());
145
- if (!scope) throw new Error(NO_TEAM_SCOPE_MESSAGE);
154
+ if (!scope) throw new Error(noTeamScopeMessage(sessionId ?? process.env.HAPPY_SESSION_ID));
146
155
  const { credential: _credential, ...safe } = await teamRequest(`/v1/teams/${encodeURIComponent(scope.teamId)}/agent`, "GET", scope.scopeToken, true);
147
156
  return { ...safe, botId: scope.botId };
148
157
  },
149
158
  async action(action, requestId = node_crypto.randomUUID()) {
150
159
  const scope = await context.readTeamScope(scopePath());
151
- if (!scope) throw new Error(NO_TEAM_SCOPE_MESSAGE);
160
+ if (!scope) throw new Error(noTeamScopeMessage(sessionId ?? process.env.HAPPY_SESSION_ID));
152
161
  const result = await teamRequest(`/v1/teams/${encodeURIComponent(scope.teamId)}/agent`, "POST", scope.scopeToken, true, { requestId, action });
153
162
  const { credential: _credential, ...safe } = result;
154
163
  return safe;
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var tools = require('../tools--RN1SFkD.cjs');
4
- var reportProgressTool = require('../reportProgressTool-DDfL1OY7.cjs');
5
- var peerTools = require('../peerTools-fYuKq3ev.cjs');
3
+ var tools = require('../tools-DEErCtZG.cjs');
4
+ var reportProgressTool = require('../reportProgressTool-ByadxJtc.cjs');
5
+ var peerTools = require('../peerTools-DpCWFxI6.cjs');
6
6
  var agentGuidance = require('../agentGuidance-BtBx2xxE.cjs');
7
7
  var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
8
8
  var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
@@ -10,39 +10,40 @@ var index_js = require('@modelcontextprotocol/sdk/client/index.js');
10
10
  var streamableHttp_js = require('@modelcontextprotocol/sdk/client/streamableHttp.js');
11
11
  var z = require('zod');
12
12
  var limits = require('../limits-C-a7gr04.cjs');
13
- require('../client-CMKgB-76.cjs');
13
+ require('../client-xA44FUnf.cjs');
14
14
  require('node:crypto');
15
15
  require('node:child_process');
16
16
  require('node:util');
17
17
  require('node:path');
18
- require('../index-44o_qMvE.cjs');
18
+ require('../index-BYL_X3gP.cjs');
19
19
  require('@paralleldrive/cuid2');
20
- require('../configuration-Cl9kOv09.cjs');
20
+ require('../configuration-CDqmWkHO.cjs');
21
21
  require('node:fs');
22
22
  require('node:os');
23
- require('../package-Djdgx8nb.cjs');
23
+ require('../package-DkpXQvp1.cjs');
24
24
  require('node:fs/promises');
25
- require('../persistence-BOEZtiKb.cjs');
25
+ require('../persistence-Ch78xygf.cjs');
26
26
  require('../authRelay-Dy1qU9td.cjs');
27
27
  require('tweetnacl');
28
- require('../logger-BtWBoP60.cjs');
28
+ require('../logger-C8anCmdW.cjs');
29
29
  require('chalk');
30
- require('../context-BxODP3mG.cjs');
31
- require('../client-6Y6O72Uq.cjs');
32
- require('../precheckCompat-CWOi5c9L.cjs');
33
- require('../client-Cddb1dhi.cjs');
30
+ require('../context-k2CbuBtp.cjs');
31
+ require('../exitNotice-BhRrv8dx.cjs');
34
32
  require('../prompt-Bof2aQkI.cjs');
35
- require('../client-DP8FabOE.cjs');
36
- require('../format-B5V7ie8N.cjs');
33
+ require('../client-D5_YDMpA.cjs');
34
+ require('../precheckCompat-CWOi5c9L.cjs');
35
+ require('../client-CqmT_ur8.cjs');
36
+ require('../client-ByK8-iRd.cjs');
37
+ require('../format-9KvRMdvY.cjs');
37
38
  require('../ids-B6ZC0HGt.cjs');
38
- require('../controlClient-DxCQKfqe.cjs');
39
- require('../sessionOps-CptDjoZi.cjs');
39
+ require('../controlClient-BS86Ksm8.cjs');
40
+ require('../sessionOps-D77IeFSt.cjs');
40
41
  require('axios');
41
- require('../time-BMCY7zJL.cjs');
42
+ require('../time-UUMqbIq8.cjs');
42
43
  require('../specialCommands-J3JFOq0J.cjs');
43
44
  require('socket.io-client');
44
45
  require('../backgroundTaskActivity-CBvUdj39.cjs');
45
- require('../remoteSessionClient-CjINaEs_.cjs');
46
+ require('../remoteSessionClient-r-UnqHor.cjs');
46
47
  require('../trimIdent-4gvk9Wk6.cjs');
47
48
 
48
49
  function parseArgs(argv) {
@@ -1,6 +1,6 @@
1
- import { r as registerTeamsTools } from '../tools-BAMaBbbP.mjs';
2
- import { r as registerAutomationTools, a as registerProjectTools, b as registerIssueTools, c as registerReportProgressTool } from '../reportProgressTool-Stg0xrjF.mjs';
3
- import { r as registerSessionPeerTools } from '../peerTools-CQ60fUPp.mjs';
1
+ import { r as registerTeamsTools } from '../tools-DmNaOlUF.mjs';
2
+ import { r as registerAutomationTools, a as registerProjectTools, b as registerIssueTools, c as registerReportProgressTool } from '../reportProgressTool-C3sf9D8m.mjs';
3
+ import { r as registerSessionPeerTools } from '../peerTools-DYFslv6R.mjs';
4
4
  import { P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, c as PREVIEW_DOWNLOAD_PARAM_DESCRIPTION, R as REPORT_PROGRESS_TOOL_NAME } from '../agentGuidance-BDYt2Qy2.mjs';
5
5
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
6
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
@@ -8,39 +8,40 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
8
8
  import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
9
9
  import { z } from 'zod';
10
10
  import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION } from '../limits-DIo7rEBR.mjs';
11
- import '../client-Wr_BiOon.mjs';
11
+ import '../client-Og5iNZ6S.mjs';
12
12
  import 'node:crypto';
13
13
  import 'node:child_process';
14
14
  import 'node:util';
15
15
  import 'node:path';
16
- import '../index-CiRMvS73.mjs';
16
+ import '../index-DWk-WTU-.mjs';
17
17
  import '@paralleldrive/cuid2';
18
- import '../configuration-i9MVy0a5.mjs';
18
+ import '../configuration-D_YrWa_i.mjs';
19
19
  import 'node:fs';
20
20
  import 'node:os';
21
- import '../package-CIW5lwaN.mjs';
21
+ import '../package-Dx3hbh9J.mjs';
22
22
  import 'node:fs/promises';
23
- import '../persistence-D_zVC4Xz.mjs';
23
+ import '../persistence-3iZXGbfb.mjs';
24
24
  import '../authRelay-DhQhkBvX.mjs';
25
25
  import 'tweetnacl';
26
- import '../logger-BiKmiREe.mjs';
26
+ import '../logger-BcdURxNR.mjs';
27
27
  import 'chalk';
28
- import '../context-DvdZsGgl.mjs';
29
- import '../client-CgMVIP7v.mjs';
30
- import '../precheckCompat-DeEbilbr.mjs';
31
- import '../client-DO8DNDC3.mjs';
28
+ import '../context-DXfkj_FL.mjs';
29
+ import '../exitNotice-D1tMULzu.mjs';
32
30
  import '../prompt-QHuFx9j6.mjs';
33
- import '../client-CX8kRedW.mjs';
34
- import '../format-Dc5zMslz.mjs';
31
+ import '../client-BHt14nix.mjs';
32
+ import '../precheckCompat-DeEbilbr.mjs';
33
+ import '../client-BH4s6mzX.mjs';
34
+ import '../client-t1vQ7gho.mjs';
35
+ import '../format-DJwRUrQm.mjs';
35
36
  import '../ids-DU6sLx4C.mjs';
36
- import '../controlClient-D6vqMUfi.mjs';
37
- import '../sessionOps-C7nps7qG.mjs';
37
+ import '../controlClient-Daki7wgo.mjs';
38
+ import '../sessionOps-DX49XNAT.mjs';
38
39
  import 'axios';
39
- import '../time-Che8GhII.mjs';
40
+ import '../time-BWVJTcWI.mjs';
40
41
  import '../specialCommands-MXUN0wfI.mjs';
41
42
  import 'socket.io-client';
42
43
  import '../backgroundTaskActivity-8PdPxrvy.mjs';
43
- import '../remoteSessionClient-T-Raoiy6.mjs';
44
+ import '../remoteSessionClient-Ddns3U8M.mjs';
44
45
  import '../trimIdent-BAjmv_TG.mjs';
45
46
 
46
47
  function parseArgs(argv) {
@@ -1,7 +1,7 @@
1
1
  import { readFileSync, renameSync, rmSync, symlinkSync, mkdirSync, lstatSync, readlinkSync, readdirSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { homedir } from 'node:os';
4
- import { l as accountCodexHomePath, b as accountSecretPath, e as expandHome } from './store-DWmjM4Ex.mjs';
4
+ import { l as accountCodexHomePath, b as accountSecretPath, e as expandHome } from './store-Fge1h9wy.mjs';
5
5
 
6
6
  /*!
7
7
  * Copyright (c) Squirrel Chat et al., All rights reserved.
@@ -3,7 +3,7 @@
3
3
  var node_fs = require('node:fs');
4
4
  var path = require('node:path');
5
5
  var os = require('node:os');
6
- var store = require('./store-Cpb1LMNW.cjs');
6
+ var store = require('./store-DGMILdMn.cjs');
7
7
 
8
8
  /*!
9
9
  * Copyright (c) Squirrel Chat et al., All rights reserved.
@@ -1,11 +1,11 @@
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-BiKmiREe.mjs';
4
+ import { l as logger } from './logger-BcdURxNR.mjs';
5
5
  import { e as errorLogMetadata, c as contentLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
6
6
  import { i as initializeSandbox, w as wrapForMcpTransport } from './manager-BEsI4qt3.mjs';
7
- import { p as packageJson } from './package-CIW5lwaN.mjs';
8
- import { s as shouldReadCodexRateLimits, i as isUnsupportedCodexMethodError } from './rateLimitWindows-DX5y23x_.mjs';
7
+ import { p as packageJson } from './package-Dx3hbh9J.mjs';
8
+ import { s as shouldReadCodexRateLimits, i as isUnsupportedCodexMethodError } from './rateLimitWindows-BSQttrPk.mjs';
9
9
  import { s as stopProcessGracefully, k as killProcessTree } from './processTree-CP5IvQ2Z.mjs';
10
10
 
11
11
  const CODEX_HELPER_LABEL_MAX_CHARS = 80;
@@ -3,11 +3,11 @@
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-BtWBoP60.cjs');
6
+ var logger = require('./logger-C8anCmdW.cjs');
7
7
  var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
8
8
  var manager = require('./manager-HrEj442o.cjs');
9
- var _package = require('./package-Djdgx8nb.cjs');
10
- var rateLimitWindows = require('./rateLimitWindows-mfdokrkQ.cjs');
9
+ var _package = require('./package-DkpXQvp1.cjs');
10
+ var rateLimitWindows = require('./rateLimitWindows-C78D8Uf-.cjs');
11
11
  var processTree = require('./processTree-CMHWlVse.cjs');
12
12
 
13
13
  const CODEX_HELPER_LABEL_MAX_CHARS = 80;