very-happy-cli 0.2.180 → 0.2.182

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 (202) hide show
  1. package/dist/{AcpBackend-B8Zi30Zh.mjs → AcpBackend-DLk3gMYH.mjs} +3 -3
  2. package/dist/{AcpBackend-DfRDtMcG.cjs → AcpBackend-JA5eu8Y0.cjs} +3 -3
  3. package/dist/{AcpSessionManager-CASKOnOj.cjs → AcpSessionManager-DjYidq4C.cjs} +1 -1
  4. package/dist/{AcpSessionManager-i8Rab0xT.mjs → AcpSessionManager-OrCww-Qv.mjs} +1 -1
  5. package/dist/{BasePermissionHandler-BlM_tfej.cjs → BasePermissionHandler-D3PMKLBS.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-26fKbRCm.mjs → BasePermissionHandler-u-neo-iN.mjs} +1 -1
  7. package/dist/{acpSessionResume-CR5pmgVo.cjs → acpSessionResume-Dxo8222T.cjs} +1 -1
  8. package/dist/{acpSessionResume-B9l54P-X.mjs → acpSessionResume-u2TwX5Jd.mjs} +1 -1
  9. package/dist/{agentHome-C7Sb7-Tz.cjs → agentHome-CP1tCBXz.cjs} +4 -4
  10. package/dist/{agentHome-CmGy0NWv.mjs → agentHome-D3hNrnoA.mjs} +4 -4
  11. package/dist/{api-DM7b1OKj.cjs → api-CZWcG7uh.cjs} +10 -10
  12. package/dist/{api-Hov8p7CA.mjs → api-C_YSQnsi.mjs} +10 -10
  13. package/dist/{apiMachine-CwGEhQDT.mjs → apiMachine-C_GA5Bm-.mjs} +59 -32
  14. package/dist/{apiMachine-DkGRj-Ai.cjs → apiMachine-DPGrED5C.cjs} +60 -33
  15. package/dist/{attachmentContent-CIn4iPEk.mjs → attachmentContent-Ckzyb1Uy.mjs} +2 -2
  16. package/dist/{attachmentContent-CEm13_gF.cjs → attachmentContent-I_dJIevE.cjs} +2 -2
  17. package/dist/{auth-Dawj7pP5.cjs → auth-BKnE7uv7.cjs} +8 -8
  18. package/dist/{auth-BG1DY0gj.mjs → auth-CGgpiJ5-.mjs} +5 -5
  19. package/dist/{auth-rggxMpEE.mjs → auth-DOXMI-xp.mjs} +8 -8
  20. package/dist/{auth-CBXnm-Mj.cjs → auth-Lw_utSMV.cjs} +5 -5
  21. package/dist/{auto-CbYOfoPS.cjs → auto-CIgFHIyQ.cjs} +18 -18
  22. package/dist/{auto-CXXLXGeL.mjs → auto-Z56mMZnH.mjs} +18 -18
  23. package/dist/{bootstrap-Dt5I1SOl.mjs → bootstrap-D3vlOROj.mjs} +2 -2
  24. package/dist/{bootstrap-DoA7okld.cjs → bootstrap-DsXp74wv.cjs} +2 -2
  25. package/dist/{browser-DUNetFT4.mjs → browser-CUxGoATV.mjs} +1 -1
  26. package/dist/{browser-DZ6qRtfH.cjs → browser-CZlA9AkO.cjs} +1 -1
  27. package/dist/{claudeLocal-OHWQigCl.mjs → claudeLocal-FnTUgwCi.mjs} +6 -6
  28. package/dist/{claudeLocal--DNyMOSv.cjs → claudeLocal-oELvwiZL.cjs} +6 -6
  29. package/dist/{claudeLocalLauncher-BStvfa7M.mjs → claudeLocalLauncher-CO5YHCzi.mjs} +11 -11
  30. package/dist/{claudeLocalLauncher-BhvPbcyH.cjs → claudeLocalLauncher-QsVXEVdE.cjs} +11 -11
  31. package/dist/{claudeSessionFork-Be16vzGc.cjs → claudeSessionFork-BA4GE5AL.cjs} +1 -1
  32. package/dist/{claudeSessionFork-GAVWhiKG.mjs → claudeSessionFork-Cspr6QW0.mjs} +1 -1
  33. package/dist/{client-D4uPb1uu.mjs → client-BGfmSbWc.mjs} +44 -9
  34. package/dist/{client-BWjaHKtj.cjs → client-CDuW4MS9.cjs} +2 -2
  35. package/dist/{client-CnB7kRCT.mjs → client-Ctbw05Xj.mjs} +2 -2
  36. package/dist/{client-DJplzPjD.cjs → client-DK8CzUry.cjs} +2 -2
  37. package/dist/{client-Ca5Pcgy_.mjs → client-o-meK7-a.mjs} +2 -2
  38. package/dist/{client-D_loZ9IK.cjs → client-xnWiHqdb.cjs} +44 -8
  39. package/dist/codex/happyMcpStdioBridge.cjs +21 -20
  40. package/dist/codex/happyMcpStdioBridge.mjs +21 -20
  41. package/dist/{codexAppServerClient-CO4G6OS4.mjs → codexAppServerClient-BlsOZLul.mjs} +3 -3
  42. package/dist/{codexAppServerClient-PE-12AsW.cjs → codexAppServerClient-DhNDTU_i.cjs} +3 -3
  43. package/dist/{codexCommand-B_xUH79E.mjs → codexCommand-BGx5NMQR.mjs} +49 -46
  44. package/dist/{codexCommand-BNoD1t1C.cjs → codexCommand-DJDPfpIs.cjs} +49 -46
  45. package/dist/{codexTermination-Dx48ma6e.mjs → codexTermination-CVhhwHZU.mjs} +1 -1
  46. package/dist/{codexTermination-BmBbizFK.cjs → codexTermination-CqPMuokw.cjs} +1 -1
  47. package/dist/{config-CtwEUxUP.cjs → config-CHpxzXBL.cjs} +3 -3
  48. package/dist/{config-DSu0Blos.mjs → config-CWAe08-Q.mjs} +3 -3
  49. package/dist/{configuration-CYO-kPOS.cjs → configuration-B-CugKJ3.cjs} +1 -1
  50. package/dist/{configuration-PxzEJumr.mjs → configuration-YXw_Dcsb.mjs} +1 -1
  51. package/dist/{connect-Dq7wndzR.cjs → connect-BmHvMXH2.cjs} +13 -13
  52. package/dist/{connect-BQrg3TB6.mjs → connect-CPeJXHha.mjs} +13 -13
  53. package/dist/{context-6TP-iz_c.cjs → context-BtIVqHI5.cjs} +1 -1
  54. package/dist/{context-CJGRRGWW.mjs → context-Drzs_Z38.mjs} +1 -1
  55. package/dist/{controlClient-DoeYovwP.mjs → controlClient-BL4hb4l3.mjs} +3 -3
  56. package/dist/{controlClient-Bqv5v5OM.cjs → controlClient-D0kGwKYx.cjs} +3 -3
  57. package/dist/{createSessionMetadata-DDIChCx8.mjs → createSessionMetadata-DvGDsnsn.mjs} +2 -2
  58. package/dist/{createSessionMetadata-xz767pcG.cjs → createSessionMetadata-L499emJn.cjs} +2 -2
  59. package/dist/{defaultPermissionMode-i5KzdK09.mjs → defaultPermissionMode-BLfxu-Yz.mjs} +2 -2
  60. package/dist/{defaultPermissionMode-PkZGsQDk.cjs → defaultPermissionMode-MXpZlXud.cjs} +2 -2
  61. package/dist/{deterministicJson-CTEJDqtS.mjs → deterministicJson-B_UAbmQ4.mjs} +87 -24
  62. package/dist/{deterministicJson-xqA6DaOm.cjs → deterministicJson-CfLkBRvU.cjs} +87 -22
  63. package/dist/{doctor-BrgSlfXn.cjs → doctor-DMvlzmnE.cjs} +8 -7
  64. package/dist/{doctor-IctjVh9T.mjs → doctor-bKScPtZu.mjs} +8 -8
  65. package/dist/{downloadTarget-CEb9che-.cjs → downloadTarget-D33BFvew.cjs} +6 -6
  66. package/dist/{downloadTarget-jbOz1egC.mjs → downloadTarget-J9j37eFG.mjs} +6 -6
  67. package/dist/{ensureDaemonRunning-D-HyjGIX.cjs → ensureDaemonRunning-2IqWROJp.cjs} +5 -5
  68. package/dist/{ensureDaemonRunning-b1e8LCSM.mjs → ensureDaemonRunning-DLvwhpNg.mjs} +5 -5
  69. package/dist/fileStore-5qpetZS0.mjs +146 -0
  70. package/dist/fileStore-7qhnbs6N.cjs +152 -0
  71. package/dist/fsMkdir-0K3yENml.cjs +56 -0
  72. package/dist/fsMkdir-DumgLTzR.mjs +53 -0
  73. package/dist/{handleResumeCommand-DpaZvm2c.mjs → handleResumeCommand-CjtjQ_I7.mjs} +5 -5
  74. package/dist/{handleResumeCommand-BvWVuRwH.cjs → handleResumeCommand-Dp2Y-p6V.cjs} +5 -5
  75. package/dist/{index-C6Vn5Eac.mjs → index-BI0h2Zks.mjs} +54 -6
  76. package/dist/{index-CMf5VbzG.mjs → index-BOT0Tg5E.mjs} +4 -4
  77. package/dist/{index-C64Ufj4D.cjs → index-B_aNaW9w.cjs} +4 -4
  78. package/dist/{index-F2UejqYs.cjs → index-CZC7egJA.cjs} +3 -3
  79. package/dist/{index-Bsvbgh9e.mjs → index-Cllzqoes.mjs} +4 -4
  80. package/dist/{index-B2p2Mut7.cjs → index-DYVIbhAJ.cjs} +78 -60
  81. package/dist/{index-wCbtF4BK.mjs → index-D_LvOWUN.mjs} +3 -3
  82. package/dist/{index-DmTlDRSL.cjs → index-DymOv3kK.cjs} +4 -4
  83. package/dist/{index-BUNnpGFF.mjs → index-kA46KMxN.mjs} +79 -61
  84. package/dist/{index-Dv0Q48P3.cjs → index-oh8XEozJ.cjs} +57 -6
  85. package/dist/index.cjs +2 -2
  86. package/dist/index.mjs +2 -2
  87. package/dist/{install-C0ANcEAW.cjs → install-BAa_Xmof.cjs} +3 -3
  88. package/dist/{install-CdzSV7qO.mjs → install-C46mkr9a.mjs} +3 -3
  89. package/dist/{install-BX3lv3NO.mjs → install-D0inLCv-.mjs} +1 -1
  90. package/dist/{install-BXvf2E3o.cjs → install-D2NCbeJ-.cjs} +1 -1
  91. package/dist/lib.cjs +12 -12
  92. package/dist/lib.d.cts +40 -1
  93. package/dist/lib.d.mts +40 -1
  94. package/dist/lib.mjs +12 -12
  95. package/dist/{lidState-bBrmaQd2.mjs → lidState-D8Iuvjgl.mjs} +1 -1
  96. package/dist/{lidState-DWGnm2H4.cjs → lidState-DcPvwniz.cjs} +1 -1
  97. package/dist/{localHappyAgentAuth-Dn1jYDpt.mjs → localHappyAgentAuth-D3rQDRd9.mjs} +1 -1
  98. package/dist/{localHappyAgentAuth-DZHQnIW9.cjs → localHappyAgentAuth-SD6GM97y.cjs} +1 -1
  99. package/dist/{logger-CphW5nUE.cjs → logger-DK1ytCz6.cjs} +2 -2
  100. package/dist/{logger-BUngm5Xg.mjs → logger-DpqihN1f.mjs} +2 -2
  101. package/dist/{machineMetadata-BXN_bKU3.mjs → machineMetadata-D4E3qoIG.mjs} +13 -4
  102. package/dist/{machineMetadata-BQm9YTcI.cjs → machineMetadata-IJc6_iyx.cjs} +13 -3
  103. package/dist/{main-DGkdYfEq.mjs → main-CpUmw7hm.mjs} +45 -45
  104. package/dist/{main-B2UV51nK.cjs → main-DUXh2rgW.cjs} +45 -45
  105. package/dist/{mcp-CbTtbs0f.mjs → mcp-66g1TJ8P.mjs} +17 -15
  106. package/dist/{mcp-BFvAEIRz.cjs → mcp-D5f3Vd-z.cjs} +17 -15
  107. package/dist/{mirrorProtocol-HKPivs5o.cjs → mirrorProtocol-DkWOcZh9.cjs} +16 -153
  108. package/dist/{mirrorProtocol-BR4luBC0.mjs → mirrorProtocol-bsCUcaCY.mjs} +19 -151
  109. package/dist/{package-KhLqBDX9.cjs → package-BfeqAzyJ.cjs} +8 -8
  110. package/dist/{package-7Ld1YMhh.mjs → package-CKj8zndE.mjs} +8 -8
  111. package/dist/{panels-Njf6GelF.cjs → panels-2PXsw9-d.cjs} +5 -5
  112. package/dist/{panels-C7IVqpJk.mjs → panels-r8LmaBs6.mjs} +5 -5
  113. package/dist/{peerTools-DQNlrcqM.cjs → peerTools-BVp1z0T_.cjs} +5 -5
  114. package/dist/{peerTools-BOlDRyhi.mjs → peerTools-D_id4d41.mjs} +5 -5
  115. package/dist/{persistence-9BMYspxG.cjs → persistence-BdpwWXKh.cjs} +2 -2
  116. package/dist/{persistence-BFUOHW5h.mjs → persistence-jOEuAFTS.mjs} +2 -2
  117. package/dist/pi-CqyoZMjI.mjs +380 -0
  118. package/dist/pi-DlsrPCTa.cjs +400 -0
  119. package/dist/{piRunnerArgs-H2pgpA5z.mjs → piRunnerArgs-68I5F_M1.mjs} +1 -1
  120. package/dist/{piRunnerArgs-DGaq6VYM.cjs → piRunnerArgs-vxCHKnSA.cjs} +1 -1
  121. package/dist/{piRuntime-CT5xv_3h.cjs → piRuntime-C3Dg5uni.cjs} +2 -2
  122. package/dist/{piRuntime-CdN0JAsa.mjs → piRuntime-DgLIard1.mjs} +2 -2
  123. package/dist/{piTerminal-0FBtXTHK.cjs → piTerminal-C135BcLP.cjs} +20 -18
  124. package/dist/{piTerminal-C4m9YXAV.mjs → piTerminal-DJL0w-uA.mjs} +20 -18
  125. package/dist/{prompt-lgF9IE82.cjs → prompt-Bof2aQkI.cjs} +7 -2
  126. package/dist/{prompt-BOouDaTM.mjs → prompt-QHuFx9j6.mjs} +7 -2
  127. package/dist/{pushNotifications-DCiBEVeC.mjs → pushNotifications-CMmRsbKv.mjs} +12 -4
  128. package/dist/{pushNotifications-DI92havG.cjs → pushNotifications-CyQVDThC.cjs} +12 -4
  129. package/dist/{query-BETKBrnz.cjs → query-CK--1fbL.cjs} +1 -1
  130. package/dist/{query-ywZbQUzR.mjs → query-CPXnDURZ.mjs} +1 -1
  131. package/dist/{rateLimitWindows-BkfuUB1a.mjs → rateLimitWindows-Cqa4AGaB.mjs} +1 -1
  132. package/dist/{rateLimitWindows-YRIYVdo4.cjs → rateLimitWindows-DJxnNw-X.cjs} +1 -1
  133. package/dist/{registerCommonHandlers-C7a_dUWs.cjs → registerCommonHandlers-DbNoM39q.cjs} +2 -2
  134. package/dist/{registerCommonHandlers-CTkCvjxt.mjs → registerCommonHandlers-K8dICQO2.mjs} +2 -2
  135. package/dist/{registerKillSessionHandler-CIsvBrVe.cjs → registerKillSessionHandler-DiS_go8d.cjs} +6 -6
  136. package/dist/{registerKillSessionHandler-CaqqRYq6.mjs → registerKillSessionHandler-O1iriOMO.mjs} +6 -6
  137. package/dist/{remoteSessionClient-PP-mOKmw.mjs → remoteSessionClient-BlURPulk.mjs} +5 -5
  138. package/dist/{remoteSessionClient-D843fkzL.cjs → remoteSessionClient-CtV9mDko.cjs} +5 -5
  139. package/dist/{reportProgressTool-14AXr959.cjs → reportProgressTool-DlD_xjzU.cjs} +4 -4
  140. package/dist/{reportProgressTool-ZOCNjWHr.mjs → reportProgressTool-nCExrHZH.mjs} +4 -4
  141. package/dist/{resources-CvIlkzpP.cjs → resources-BPyN59Iv.cjs} +23 -2
  142. package/dist/{resources-y9jfyO-_.mjs → resources-CH1iP6Cv.mjs} +22 -3
  143. package/dist/{run-CAOCYYfT.cjs → run-BBNrcCfI.cjs} +621 -594
  144. package/dist/{run-Dajw2E5j.mjs → run-drtwHYkO.mjs} +557 -530
  145. package/dist/{runClaude-CRRKt-tm.cjs → runClaude-B3KSeby4.cjs} +23 -22
  146. package/dist/{runClaude-C6oxWYbp.mjs → runClaude-CFp27Tyi.mjs} +23 -22
  147. package/dist/{runClaudeDeps-B1ysqTvx.cjs → runClaudeDeps-C_C9TCI0.cjs} +43 -41
  148. package/dist/{runClaudeDeps-BcZ68cX3.mjs → runClaudeDeps-DMcv93lA.mjs} +48 -46
  149. package/dist/{runGemini-D7yKc4wD.mjs → runGemini-Bc6SY-hd.mjs} +40 -37
  150. package/dist/{runGemini-DtKFXqf-.cjs → runGemini-DzdSBAr9.cjs} +40 -37
  151. package/dist/{runOpenClaw-C8ilyLP9.mjs → runOpenClaw-DI0qMlgF.mjs} +19 -18
  152. package/dist/{runOpenClaw-Cq29mryb.cjs → runOpenClaw-DN6rEVqC.cjs} +19 -18
  153. package/dist/{sandbox-gIj-EuF4.cjs → sandbox-DtttPBMA.cjs} +4 -4
  154. package/dist/{sandbox-CbCutma4.mjs → sandbox-v-ffe8LR.mjs} +4 -4
  155. package/dist/{selfCheck-BTGBVthv.cjs → selfCheck-B-yy6bW3.cjs} +36 -36
  156. package/dist/selfCheck-BDfTwxqB.mjs +85 -0
  157. package/dist/{send-YZRMQvMJ.mjs → send-DpBwSZuj.mjs} +8 -8
  158. package/dist/{send-CZf5lLw_.cjs → send-ShzXYPRu.cjs} +8 -8
  159. package/dist/{server-CknFq6xG.cjs → server-CEzKrfKj.cjs} +6 -6
  160. package/dist/{server-BqwXRzFZ.mjs → server-DScgJXxa.mjs} +4 -4
  161. package/dist/{sessionLock-nBXdJxJm.mjs → sessionLock-B6K4SBZD.mjs} +3 -3
  162. package/dist/{sessionLock-DRZUcKHT.cjs → sessionLock-Dc0fadGG.cjs} +3 -3
  163. package/dist/{sessionOps-C58iDeD5.mjs → sessionOps-D0BPWPoh.mjs} +4 -4
  164. package/dist/{sessionOps-BrGiU9-s.cjs → sessionOps-Dx7wARjI.cjs} +4 -4
  165. package/dist/{sessionScanner-Bm57LEXe.mjs → sessionScanner-9Fpgaxtf.mjs} +3 -3
  166. package/dist/{sessionScanner-CaO8bLaG.cjs → sessionScanner-BJ35TVG6.cjs} +3 -3
  167. package/dist/{sessions-BXyBHo8n.mjs → sessions-CFtDlyZd.mjs} +10 -10
  168. package/dist/{sessions-uzqPCc37.cjs → sessions-TZGGAry1.cjs} +10 -10
  169. package/dist/{setupOfflineReconnection-DvvVX3TB.cjs → setupOfflineReconnection-B1GsVA8P.cjs} +2 -2
  170. package/dist/{setupOfflineReconnection-1Qlek3wl.mjs → setupOfflineReconnection-Biaus-0T.mjs} +2 -2
  171. package/dist/{spawn-DBkodJEO.cjs → spawn-BRTuypQ2.cjs} +14 -14
  172. package/dist/{spawn-vn93PhYL.mjs → spawn-CsoQ-Ecz.mjs} +14 -14
  173. package/dist/{spawnAgents-DLNMlhWJ.cjs → spawnAgents-CG211IW7.cjs} +1 -1
  174. package/dist/{spawnAgents-CgPMWexP.mjs → spawnAgents-Co-SLcx-.mjs} +1 -1
  175. package/dist/{spawnHappyCLI-BjFZc_7V.mjs → spawnHappyCLI-D1doCjkZ.mjs} +1 -1
  176. package/dist/{spawnHappyCLI-DnUZv0X2.cjs → spawnHappyCLI-D47kX6jg.cjs} +1 -1
  177. package/dist/{specialCommands-BRufxlqe.cjs → specialCommands-Ch-Gvy-i.cjs} +3 -3
  178. package/dist/{specialCommands-D3ND9bdg.mjs → specialCommands-xSmqT_Fu.mjs} +3 -3
  179. package/dist/{startFileWatcher-DXJ7yB5v.mjs → startFileWatcher-CCl2fFxT.mjs} +1 -1
  180. package/dist/{startFileWatcher-D9cYzZOq.cjs → startFileWatcher-gKQTstR6.cjs} +1 -1
  181. package/dist/{startupSessionCreate-kdr3m1uX.cjs → startupSessionCreate-BXqoUX30.cjs} +1 -1
  182. package/dist/{startupSessionCreate-uZ6BM0ty.mjs → startupSessionCreate-DlZc8yPl.mjs} +1 -1
  183. package/dist/{streamRelay-Dy6amlzx.cjs → streamRelay-B-J-4St1.cjs} +1 -1
  184. package/dist/{streamRelay-DnMCMMfV.mjs → streamRelay-DnJXsi36.mjs} +1 -1
  185. package/dist/{sync-BvVhDO40.mjs → sync-BbjMC3sR.mjs} +1 -1
  186. package/dist/{sync-Bn-idAoy.cjs → sync-BxMdnZzz.cjs} +1 -1
  187. package/dist/{systemPrompt-DlyEk35T.cjs → systemPrompt-C2KojRmK.cjs} +3 -3
  188. package/dist/{systemPrompt-CIZcJuJF.mjs → systemPrompt-CmSDAoIx.mjs} +3 -3
  189. package/dist/{teams-BLeRpDxv.cjs → teams-DESdalox.cjs} +13 -10
  190. package/dist/{teams-DLY3B5yi.mjs → teams-lRy1MS0Z.mjs} +13 -10
  191. package/dist/{time-D3ETL7Jb.mjs → time-Cfknl7xG.mjs} +1 -1
  192. package/dist/{time-Cjv0zxQO.cjs → time-DNLeIRgR.cjs} +1 -1
  193. package/dist/{titleGenerator-Uzbd4utr.mjs → titleGenerator-ClnMSzwC.mjs} +1 -1
  194. package/dist/{titleGenerator-Cgp5ihFb.cjs → titleGenerator-YNutaU88.cjs} +2 -2
  195. package/dist/{todo-pOMcEECE.cjs → todo-DS75Mboz.cjs} +6 -6
  196. package/dist/{todo-C9Ga-oEM.mjs → todo-DZbK5POc.mjs} +6 -6
  197. package/dist/{tools-Cho7iIWf.mjs → tools-BgdU0dWp.mjs} +3 -3
  198. package/dist/{tools-BL7Byl_x.cjs → tools-ClYcb1YQ.cjs} +3 -3
  199. package/dist/{uninstall-CbayEVoV.cjs → uninstall-Di1vPBLV.cjs} +3 -3
  200. package/dist/{uninstall-CvZHVY9C.mjs → uninstall-bXenFevR.mjs} +3 -3
  201. package/package.json +8 -8
  202. package/dist/selfCheck-Smt-5Xiq.mjs +0 -85
@@ -2,15 +2,15 @@ import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import { homedir } from 'os';
4
4
  import { execSync } from 'child_process';
5
- import { l as logger } from './logger-BUngm5Xg.mjs';
5
+ import { l as logger } from './logger-DpqihN1f.mjs';
6
6
  import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './constants-BC4St0xd.mjs';
7
7
  import 'chalk';
8
8
  import 'node:util';
9
- import './configuration-PxzEJumr.mjs';
9
+ import './configuration-YXw_Dcsb.mjs';
10
10
  import 'node:fs';
11
11
  import 'node:os';
12
12
  import 'node:path';
13
- import './package-7Ld1YMhh.mjs';
13
+ import './package-CKj8zndE.mjs';
14
14
  import 'node:fs/promises';
15
15
  import './trimIdent-BAjmv_TG.mjs';
16
16
 
@@ -3,7 +3,7 @@
3
3
  var node_fs = require('node:fs');
4
4
  var os = require('node:os');
5
5
  var path = require('node:path');
6
- var _package = require('./package-KhLqBDX9.cjs');
6
+ var _package = require('./package-BfeqAzyJ.cjs');
7
7
  var promises = require('node:fs/promises');
8
8
 
9
9
  const PRIVATE_DIRECTORY_MODE = 448;
@@ -1,7 +1,7 @@
1
1
  import { mkdirSync, chmodSync, readdirSync, statSync, appendFileSync, writeFileSync, existsSync, readFileSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
- import { p as packageJson } from './package-7Ld1YMhh.mjs';
4
+ import { p as packageJson } from './package-CKj8zndE.mjs';
5
5
  import { mkdir, chmod, writeFile } from 'node:fs/promises';
6
6
 
7
7
  const PRIVATE_DIRECTORY_MODE = 448;
@@ -3,12 +3,12 @@
3
3
  var chalk = require('chalk');
4
4
  var os = require('os');
5
5
  var require$$1 = require('path');
6
- var persistence = require('./persistence-9BMYspxG.cjs');
7
- var api = require('./api-DM7b1OKj.cjs');
8
- var configuration = require('./configuration-CYO-kPOS.cjs');
6
+ var persistence = require('./persistence-BdpwWXKh.cjs');
7
+ var api = require('./api-CZWcG7uh.cjs');
8
+ var configuration = require('./configuration-B-CugKJ3.cjs');
9
9
  var http = require('http');
10
10
  var require$$3 = require('crypto');
11
- var browser = require('./browser-DZ6qRtfH.cjs');
11
+ var browser = require('./browser-CZlA9AkO.cjs');
12
12
  var child_process = require('child_process');
13
13
  var util = require('util');
14
14
  require('node:fs/promises');
@@ -17,29 +17,29 @@ require('zod');
17
17
  require('./authRelay-Dy1qU9td.cjs');
18
18
  require('node:crypto');
19
19
  require('tweetnacl');
20
- require('./logger-CphW5nUE.cjs');
20
+ require('./logger-DK1ytCz6.cjs');
21
21
  require('node:util');
22
22
  require('node:path');
23
23
  require('axios');
24
- require('./lidState-DWGnm2H4.cjs');
24
+ require('./lidState-DcPvwniz.cjs');
25
25
  require('node:events');
26
26
  require('socket.io-client');
27
- require('./pushNotifications-DI92havG.cjs');
28
- require('./index-Dv0Q48P3.cjs');
27
+ require('./pushNotifications-CyQVDThC.cjs');
28
+ require('./index-oh8XEozJ.cjs');
29
29
  require('@paralleldrive/cuid2');
30
30
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
31
31
  require('./limits-C-a7gr04.cjs');
32
- require('./time-Cjv0zxQO.cjs');
33
- require('./registerCommonHandlers-C7a_dUWs.cjs');
32
+ require('./time-DNLeIRgR.cjs');
33
+ require('./registerCommonHandlers-DbNoM39q.cjs');
34
34
  require('fs/promises');
35
35
  require('cross-spawn');
36
36
  require('./projectPath-C3ioB4Bu.cjs');
37
37
  require('url');
38
- require('./sync-Bn-idAoy.cjs');
38
+ require('./sync-BxMdnZzz.cjs');
39
39
  require('./backgroundTaskActivity-CBvUdj39.cjs');
40
- require('./controlClient-Bqv5v5OM.cjs');
40
+ require('./controlClient-D0kGwKYx.cjs');
41
41
  require('node:os');
42
- require('./package-KhLqBDX9.cjs');
42
+ require('./package-BfeqAzyJ.cjs');
43
43
  require('open');
44
44
 
45
45
  const CLIENT_ID$2 = "app_EMoamEEZ73f0CkXaXp7hrann";
@@ -1,12 +1,12 @@
1
1
  import chalk from 'chalk';
2
2
  import { homedir } from 'os';
3
3
  import { join } from 'path';
4
- import { b as readCredentialsForConfiguredRelay } from './persistence-BFUOHW5h.mjs';
5
- import { A as ApiClient } from './api-Hov8p7CA.mjs';
6
- import { f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-PxzEJumr.mjs';
4
+ import { b as readCredentialsForConfiguredRelay } from './persistence-jOEuAFTS.mjs';
5
+ import { A as ApiClient } from './api-C_YSQnsi.mjs';
6
+ import { f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-YXw_Dcsb.mjs';
7
7
  import { createServer } from 'http';
8
8
  import { randomBytes, createHash } from 'crypto';
9
- import { o as openBrowser } from './browser-DUNetFT4.mjs';
9
+ import { o as openBrowser } from './browser-CUxGoATV.mjs';
10
10
  import { exec } from 'child_process';
11
11
  import { promisify } from 'util';
12
12
  import 'node:fs/promises';
@@ -15,29 +15,29 @@ import 'zod';
15
15
  import './authRelay-DhQhkBvX.mjs';
16
16
  import 'node:crypto';
17
17
  import 'tweetnacl';
18
- import './logger-BUngm5Xg.mjs';
18
+ import './logger-DpqihN1f.mjs';
19
19
  import 'node:util';
20
20
  import 'node:path';
21
21
  import 'axios';
22
- import './lidState-bBrmaQd2.mjs';
22
+ import './lidState-D8Iuvjgl.mjs';
23
23
  import 'node:events';
24
24
  import 'socket.io-client';
25
- import './pushNotifications-DCiBEVeC.mjs';
26
- import './index-C6Vn5Eac.mjs';
25
+ import './pushNotifications-CMmRsbKv.mjs';
26
+ import './index-BI0h2Zks.mjs';
27
27
  import '@paralleldrive/cuid2';
28
28
  import './contentLogMetadata-BlWI0egu.mjs';
29
29
  import './limits-DIo7rEBR.mjs';
30
- import './time-D3ETL7Jb.mjs';
31
- import './registerCommonHandlers-CTkCvjxt.mjs';
30
+ import './time-Cfknl7xG.mjs';
31
+ import './registerCommonHandlers-K8dICQO2.mjs';
32
32
  import 'fs/promises';
33
33
  import 'cross-spawn';
34
34
  import './projectPath-BTBIMB57.mjs';
35
35
  import 'url';
36
- import './sync-BvVhDO40.mjs';
36
+ import './sync-BbjMC3sR.mjs';
37
37
  import './backgroundTaskActivity-8PdPxrvy.mjs';
38
- import './controlClient-DoeYovwP.mjs';
38
+ import './controlClient-BL4hb4l3.mjs';
39
39
  import 'node:os';
40
- import './package-7Ld1YMhh.mjs';
40
+ import './package-CKj8zndE.mjs';
41
41
  import 'open';
42
42
 
43
43
  const CLIENT_ID$2 = "app_EMoamEEZ73f0CkXaXp7hrann";
@@ -5,7 +5,7 @@ var node_fs = require('node:fs');
5
5
  var path = require('node:path');
6
6
  var node_crypto = require('node:crypto');
7
7
  var z = require('zod');
8
- var configuration = require('./configuration-CYO-kPOS.cjs');
8
+ var configuration = require('./configuration-B-CugKJ3.cjs');
9
9
 
10
10
  const TeamScopeSchema = z.z.object({
11
11
  serverUrl: z.z.string(),
@@ -3,7 +3,7 @@ import { constants } from 'node:fs';
3
3
  import { isAbsolute, join, dirname } from 'node:path';
4
4
  import { randomUUID } from 'node:crypto';
5
5
  import { z } from 'zod';
6
- import { n as normalizeHttpEndpoint, c as configuration } from './configuration-PxzEJumr.mjs';
6
+ import { n as normalizeHttpEndpoint, c as configuration } from './configuration-YXw_Dcsb.mjs';
7
7
 
8
8
  const TeamScopeSchema = z.object({
9
9
  serverUrl: z.string(),
@@ -1,6 +1,6 @@
1
- import { l as logger } from './logger-BUngm5Xg.mjs';
2
- import { d as readDaemonState, f as clearDaemonState } from './persistence-BFUOHW5h.mjs';
3
- import { c as configuration } from './configuration-PxzEJumr.mjs';
1
+ import { l as logger } from './logger-DpqihN1f.mjs';
2
+ import { d as readDaemonState, f as clearDaemonState } from './persistence-jOEuAFTS.mjs';
3
+ import { c as configuration } from './configuration-YXw_Dcsb.mjs';
4
4
 
5
5
  function daemonControlHeaders(controlToken) {
6
6
  return {
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-CphW5nUE.cjs');
4
- var persistence = require('./persistence-9BMYspxG.cjs');
5
- var configuration = require('./configuration-CYO-kPOS.cjs');
3
+ var logger = require('./logger-DK1ytCz6.cjs');
4
+ var persistence = require('./persistence-BdpwWXKh.cjs');
5
+ var configuration = require('./configuration-B-CugKJ3.cjs');
6
6
 
7
7
  function daemonControlHeaders(controlToken) {
8
8
  return {
@@ -1,8 +1,8 @@
1
1
  import os from 'node:os';
2
2
  import { resolve, isAbsolute, dirname } from 'node:path';
3
- import { c as configuration } from './configuration-PxzEJumr.mjs';
3
+ import { c as configuration } from './configuration-YXw_Dcsb.mjs';
4
4
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
5
- import { p as packageJson } from './package-7Ld1YMhh.mjs';
5
+ import { p as packageJson } from './package-CKj8zndE.mjs';
6
6
  import { existsSync, readFileSync, statSync } from 'node:fs';
7
7
 
8
8
  const realFs = {
@@ -2,9 +2,9 @@
2
2
 
3
3
  var os = require('node:os');
4
4
  var path = require('node:path');
5
- var configuration = require('./configuration-CYO-kPOS.cjs');
5
+ var configuration = require('./configuration-B-CugKJ3.cjs');
6
6
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
7
- var _package = require('./package-KhLqBDX9.cjs');
7
+ var _package = require('./package-BfeqAzyJ.cjs');
8
8
  var node_fs = require('node:fs');
9
9
 
10
10
  const realFs = {
@@ -1,5 +1,5 @@
1
- import { l as logger } from './logger-BUngm5Xg.mjs';
2
- import { e as evaluateWrapperIdle, j as HIBERNATION_UNSUPPORTED_BACKOFF_MS } from './persistence-BFUOHW5h.mjs';
1
+ import { l as logger } from './logger-DpqihN1f.mjs';
2
+ import { e as evaluateWrapperIdle, j as HIBERNATION_UNSUPPORTED_BACKOFF_MS } from './persistence-jOEuAFTS.mjs';
3
3
 
4
4
  const PRESENCE_SETTLE_MS = 6e3;
5
5
  async function commitHibernation(deps) {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-CphW5nUE.cjs');
4
- var persistence = require('./persistence-9BMYspxG.cjs');
3
+ var logger = require('./logger-DK1ytCz6.cjs');
4
+ var persistence = require('./persistence-BdpwWXKh.cjs');
5
5
 
6
6
  const PRESENCE_SETTLE_MS = 6e3;
7
7
  async function commitHibernation(deps) {
@@ -1,28 +1,29 @@
1
- import { l as logger } from './logger-BUngm5Xg.mjs';
2
- import { p as prependToMessage, b as buildDigestLine, a as buildFirstTurnPrefix } from './prompt-BOouDaTM.mjs';
3
- import { P as ProjectsUnsupportedError } from './client-Ca5Pcgy_.mjs';
4
- import { c as createSelfReportState, A as AUTOMATION_TOOL_NAMES, P as PROJECT_TOOL_NAMES, r as registerAutomationTools, a as registerProjectTools, d as createProjectToolExecutor, b as registerReportProgressTool, n as normalizeAttention, e as normalizePhase, f as normalizeProgress, s as shouldAcceptSelfReport } from './reportProgressTool-ZOCNjWHr.mjs';
5
- import { C as ContextUsageSchema } from './index-C6Vn5Eac.mjs';
1
+ import { l as logger } from './logger-DpqihN1f.mjs';
2
+ import { p as prependToMessage, b as buildDigestLine, a as buildFirstTurnPrefix } from './prompt-QHuFx9j6.mjs';
3
+ import { P as ProjectsUnsupportedError } from './client-o-meK7-a.mjs';
4
+ import { c as createSelfReportState, A as AUTOMATION_TOOL_NAMES, P as PROJECT_TOOL_NAMES, r as registerAutomationTools, a as registerProjectTools, d as createProjectToolExecutor, b as registerReportProgressTool, n as normalizeAttention, e as normalizePhase, f as normalizeProgress, s as shouldAcceptSelfReport } from './reportProgressTool-nCExrHZH.mjs';
5
+ import { readFileSync, constants } from 'node:fs';
6
+ import { homedir } from 'node:os';
7
+ import { join, dirname } from 'node:path';
8
+ import { z } from 'zod';
9
+ import { p as piAgentDir } from './pi-CqyoZMjI.mjs';
6
10
  import { unlink, mkdir, open, rename } from 'node:fs/promises';
7
11
  import { randomUUID } from 'node:crypto';
8
- import { constants } from 'node:fs';
9
- import { dirname } from 'node:path';
10
- import { z } from 'zod';
11
- import { T as TeamConnectionPreflightError, c as createTeamsClient } from './client-D4uPb1uu.mjs';
12
- import { t as teamScopePath } from './context-CJGRRGWW.mjs';
13
- import { g as waitForSessionKey, e as sendUserMessage } from './sessionOps-C58iDeD5.mjs';
14
- import { T as TEAM_SKILL } from './resources-y9jfyO-_.mjs';
15
- import { T as TEAM_TOOL_NAMES, r as registerTeamsTools } from './tools-Cho7iIWf.mjs';
16
- import { S as SESSION_PEER_TOOL_NAMES, r as registerSessionPeerTools, a as createSessionPeerToolExecutor } from './peerTools-BOlDRyhi.mjs';
12
+ import { T as TeamConnectionPreflightError, S as SessionInOtherTeamError, c as createTeamsClient } from './client-BGfmSbWc.mjs';
13
+ import { t as teamScopePath } from './context-Drzs_Z38.mjs';
14
+ import { g as waitForSessionKey, e as sendUserMessage } from './sessionOps-D0BPWPoh.mjs';
15
+ import { T as TEAM_SKILL, a as TEAM_LEAD_PLAYBOOK } from './resources-CH1iP6Cv.mjs';
16
+ import { T as TEAM_TOOL_NAMES, r as registerTeamsTools } from './tools-BgdU0dWp.mjs';
17
+ import { S as SESSION_PEER_TOOL_NAMES, r as registerSessionPeerTools, a as createSessionPeerToolExecutor } from './peerTools-D_id4d41.mjs';
17
18
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
18
19
  import { createServer } from 'node:http';
19
20
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
20
21
  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';
21
- import { A as ASSISTANT_TOOL_NAMES, a as registerAssistantTools, c as checkDownloadTarget } from './downloadTarget-jbOz1egC.mjs';
22
+ import { A as ASSISTANT_TOOL_NAMES, a as registerAssistantTools, c as checkDownloadTarget } from './downloadTarget-J9j37eFG.mjs';
22
23
  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';
23
24
  import { n as normalizeWebPanels, w as webPanelPath } from './webPanels-B2_C2-3g.mjs';
24
- import { r as readSettings } from './persistence-BFUOHW5h.mjs';
25
- import { g as getSessionNotificationBody } from './pushNotifications-DCiBEVeC.mjs';
25
+ import { r as readSettings } from './persistence-jOEuAFTS.mjs';
26
+ import { g as getSessionNotificationBody } from './pushNotifications-CMmRsbKv.mjs';
26
27
  import { c as checkPreviewPath } from './previewPath-CXN4Vag0.mjs';
27
28
  import { createHash } from 'crypto';
28
29
 
@@ -119,11 +120,67 @@ function createProjectInjector(deps) {
119
120
  };
120
121
  }
121
122
 
123
+ const PiContextReportSchema = z.object({
124
+ source: z.literal("pi"),
125
+ tokens: z.number().finite().nonnegative().nullable(),
126
+ contextWindow: z.number().finite().positive(),
127
+ model: z.string().max(200).nullable().optional(),
128
+ provider: z.string().max(200).nullable().optional(),
129
+ /** The pi event that produced the report (`session_compact`, `turn_end`, …). */
130
+ event: z.string().max(64).nullable().optional(),
131
+ /** Other registry entries with the same model id. */
132
+ peers: z.array(z.object({ provider: z.string().max(200), contextWindow: z.number().finite().positive() })).max(8).optional()
133
+ });
134
+ const obj = (v) => v && typeof v === "object" && !Array.isArray(v) ? v : null;
135
+ const positive = (v) => typeof v === "number" && Number.isFinite(v) && v > 0;
136
+ function piWindowConfigured(modelsJson, provider, model) {
137
+ if (!modelsJson || !provider || !model) return true;
138
+ const config = obj(obj(modelsJson.providers)?.[provider]);
139
+ if (!config) return true;
140
+ if (positive(obj(obj(config.modelOverrides)?.[model])?.contextWindow)) return true;
141
+ const models = Array.isArray(config.models) ? config.models : [];
142
+ const entry = models.map(obj).find((m) => m?.id === model);
143
+ if (!entry) return true;
144
+ return positive(entry.contextWindow);
145
+ }
146
+ function resolvePiContextUsage(report, modelsJson, previous, now) {
147
+ let windowSource = "configured";
148
+ let contextWindow = report.contextWindow;
149
+ if (!piWindowConfigured(modelsJson, report.provider, report.model)) {
150
+ const known = new Set((report.peers ?? []).filter((p) => p.provider !== report.provider && piWindowConfigured(modelsJson, p.provider, report.model)).map((p) => p.contextWindow));
151
+ if (known.size === 1) {
152
+ windowSource = "inferred";
153
+ contextWindow = [...known][0];
154
+ } else {
155
+ windowSource = "unknown";
156
+ }
157
+ }
158
+ const compactedAt = report.event === "session_compact" ? now : report.tokens === null ? previous?.compactedAt ?? null : null;
159
+ return {
160
+ source: "pi",
161
+ tokens: report.tokens,
162
+ contextWindow,
163
+ updatedAt: now,
164
+ windowSource,
165
+ model: report.model ?? null,
166
+ compactedAt
167
+ };
168
+ }
169
+ function readPiModelsJson(env = process.env, home = homedir()) {
170
+ try {
171
+ return obj(JSON.parse(readFileSync(join(piAgentDir({ home, env }), "models.json"), "utf8")));
172
+ } catch {
173
+ return null;
174
+ }
175
+ }
176
+
122
177
  const TEAMS_ADOPT_CAPABILITY = "teams-adopt-v1";
123
178
  const TeamAdoptSchema = z.object({
124
179
  requestId: z.string().min(1).max(128),
125
180
  name: z.string().trim().min(1).max(128),
126
- teamId: z.string().min(1).max(128).optional()
181
+ teamId: z.string().min(1).max(128).optional(),
182
+ /** B-730: the owner confirmed moving this session out of the team it already belongs to. */
183
+ transfer: z.literal(true).optional()
127
184
  }).strict();
128
185
  async function retainIntent(path, input) {
129
186
  await mkdir(dirname(path), { recursive: true, mode: 448 });
@@ -206,7 +263,9 @@ function createTeamAdoption(sessionId) {
206
263
  const connected = await client.initialize(input, { resumeAdoption: true, expectedTeamId: intent.resolvedTeamId, onTeamResolved: (teamId) => retainTeam(path, input, teamId, intent?.guidanceDelivered) });
207
264
  const instructions = `${TEAM_SKILL}
208
265
 
209
- This session is now connected as the team lead. Call team_inspect to read the authoritative state before continuing the user's goal. Do not call team_create or team_join again.`;
266
+ This session is now connected as the team lead. Call team_inspect to read the authoritative state before continuing the user's goal. Do not call team_create or team_join again.
267
+
268
+ ${TEAM_LEAD_PLAYBOOK}`;
210
269
  if (!intent.guidanceDelivered) {
211
270
  const key = await waitForSessionKey(sessionId, 1e4);
212
271
  await sendUserMessage(sessionId, key, instructions, "teams", { localId: `teams-adopt-${input.requestId}`, sentFrom: "team" });
@@ -219,7 +278,12 @@ This session is now connected as the team lead. Call team_inspect to read the au
219
278
  });
220
279
  operation.safeToChange = true;
221
280
  }
222
- operation.result = { error: error instanceof Error ? error.message : "Team connection failed; retry the same request", ...operation.safeToChange ? { safeToChange: true } : {} };
281
+ operation.result = {
282
+ error: error instanceof Error ? error.message : "Team connection failed; retry the same request",
283
+ ...operation.safeToChange ? { safeToChange: true } : {},
284
+ // B-730: the Web asks the owner to confirm a transfer, then sends a new request with `transfer`.
285
+ ...error instanceof SessionInOtherTeamError ? { code: error.code, teamId: error.teamId, teamName: error.teamName } : {}
286
+ };
223
287
  }
224
288
  })();
225
289
  return { status: "pending", requestId: input.requestId };
@@ -534,13 +598,12 @@ async function startHappyServer(client, options) {
534
598
  let body = "";
535
599
  for await (const chunk of req) {
536
600
  body += chunk.toString();
537
- if (Buffer.byteLength(body) > 2048) {
601
+ if (Buffer.byteLength(body) > 4096) {
538
602
  res.writeHead(413).end();
539
603
  return;
540
604
  }
541
605
  }
542
- const usage = ContextUsageSchema.parse({ ...JSON.parse(body), updatedAt: Date.now() });
543
- options.onContextUsage(usage);
606
+ options.onContextUsage(PiContextReportSchema.parse(JSON.parse(body)));
544
607
  res.writeHead(204).end();
545
608
  } catch {
546
609
  if (!res.headersSent) res.writeHead(400).end();
@@ -688,4 +751,4 @@ function hashObject(obj, options, encoding = "hex") {
688
751
  return createHash("sha256").update(jsonString).digest(encoding);
689
752
  }
690
753
 
691
- export { createProjectInjector as c, hashObject as h, startHappyServer as s };
754
+ export { resolvePiContextUsage as a, createProjectInjector as c, hashObject as h, readPiModelsJson as r, startHappyServer as s };
@@ -1,30 +1,31 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-CphW5nUE.cjs');
4
- var prompt = require('./prompt-lgF9IE82.cjs');
5
- var client = require('./client-DJplzPjD.cjs');
6
- var reportProgressTool = require('./reportProgressTool-14AXr959.cjs');
7
- var index = require('./index-Dv0Q48P3.cjs');
8
- var promises = require('node:fs/promises');
9
- var node_crypto = require('node:crypto');
3
+ var logger = require('./logger-DK1ytCz6.cjs');
4
+ var prompt = require('./prompt-Bof2aQkI.cjs');
5
+ var client = require('./client-DK8CzUry.cjs');
6
+ var reportProgressTool = require('./reportProgressTool-DlD_xjzU.cjs');
10
7
  var node_fs = require('node:fs');
8
+ var os = require('node:os');
11
9
  var path = require('node:path');
12
10
  var z = require('zod');
13
- var client$1 = require('./client-D_loZ9IK.cjs');
14
- var context = require('./context-6TP-iz_c.cjs');
15
- var sessionOps = require('./sessionOps-BrGiU9-s.cjs');
16
- var resources = require('./resources-CvIlkzpP.cjs');
17
- var tools = require('./tools-BL7Byl_x.cjs');
18
- var peerTools = require('./peerTools-DQNlrcqM.cjs');
11
+ var pi = require('./pi-DlsrPCTa.cjs');
12
+ var promises = require('node:fs/promises');
13
+ var node_crypto = require('node:crypto');
14
+ var client$1 = require('./client-xnWiHqdb.cjs');
15
+ var context = require('./context-BtIVqHI5.cjs');
16
+ var sessionOps = require('./sessionOps-Dx7wARjI.cjs');
17
+ var resources = require('./resources-BPyN59Iv.cjs');
18
+ var tools = require('./tools-ClYcb1YQ.cjs');
19
+ var peerTools = require('./peerTools-BVp1z0T_.cjs');
19
20
  var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
20
21
  var node_http = require('node:http');
21
22
  var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
22
23
  var limits = require('./limits-C-a7gr04.cjs');
23
- var downloadTarget = require('./downloadTarget-CEb9che-.cjs');
24
+ var downloadTarget = require('./downloadTarget-D33BFvew.cjs');
24
25
  var agentGuidance = require('./agentGuidance-BtBx2xxE.cjs');
25
26
  var webPanels = require('./webPanels-FCgFKvVe.cjs');
26
- var persistence = require('./persistence-9BMYspxG.cjs');
27
- var pushNotifications = require('./pushNotifications-DI92havG.cjs');
27
+ var persistence = require('./persistence-BdpwWXKh.cjs');
28
+ var pushNotifications = require('./pushNotifications-CyQVDThC.cjs');
28
29
  var previewPath = require('./previewPath-B0rBdhy1.cjs');
29
30
  var require$$3 = require('crypto');
30
31
 
@@ -121,11 +122,67 @@ function createProjectInjector(deps) {
121
122
  };
122
123
  }
123
124
 
125
+ const PiContextReportSchema = z.z.object({
126
+ source: z.z.literal("pi"),
127
+ tokens: z.z.number().finite().nonnegative().nullable(),
128
+ contextWindow: z.z.number().finite().positive(),
129
+ model: z.z.string().max(200).nullable().optional(),
130
+ provider: z.z.string().max(200).nullable().optional(),
131
+ /** The pi event that produced the report (`session_compact`, `turn_end`, …). */
132
+ event: z.z.string().max(64).nullable().optional(),
133
+ /** Other registry entries with the same model id. */
134
+ peers: z.z.array(z.z.object({ provider: z.z.string().max(200), contextWindow: z.z.number().finite().positive() })).max(8).optional()
135
+ });
136
+ const obj = (v) => v && typeof v === "object" && !Array.isArray(v) ? v : null;
137
+ const positive = (v) => typeof v === "number" && Number.isFinite(v) && v > 0;
138
+ function piWindowConfigured(modelsJson, provider, model) {
139
+ if (!modelsJson || !provider || !model) return true;
140
+ const config = obj(obj(modelsJson.providers)?.[provider]);
141
+ if (!config) return true;
142
+ if (positive(obj(obj(config.modelOverrides)?.[model])?.contextWindow)) return true;
143
+ const models = Array.isArray(config.models) ? config.models : [];
144
+ const entry = models.map(obj).find((m) => m?.id === model);
145
+ if (!entry) return true;
146
+ return positive(entry.contextWindow);
147
+ }
148
+ function resolvePiContextUsage(report, modelsJson, previous, now) {
149
+ let windowSource = "configured";
150
+ let contextWindow = report.contextWindow;
151
+ if (!piWindowConfigured(modelsJson, report.provider, report.model)) {
152
+ const known = new Set((report.peers ?? []).filter((p) => p.provider !== report.provider && piWindowConfigured(modelsJson, p.provider, report.model)).map((p) => p.contextWindow));
153
+ if (known.size === 1) {
154
+ windowSource = "inferred";
155
+ contextWindow = [...known][0];
156
+ } else {
157
+ windowSource = "unknown";
158
+ }
159
+ }
160
+ const compactedAt = report.event === "session_compact" ? now : report.tokens === null ? previous?.compactedAt ?? null : null;
161
+ return {
162
+ source: "pi",
163
+ tokens: report.tokens,
164
+ contextWindow,
165
+ updatedAt: now,
166
+ windowSource,
167
+ model: report.model ?? null,
168
+ compactedAt
169
+ };
170
+ }
171
+ function readPiModelsJson(env = process.env, home = os.homedir()) {
172
+ try {
173
+ return obj(JSON.parse(node_fs.readFileSync(path.join(pi.piAgentDir({ home, env }), "models.json"), "utf8")));
174
+ } catch {
175
+ return null;
176
+ }
177
+ }
178
+
124
179
  const TEAMS_ADOPT_CAPABILITY = "teams-adopt-v1";
125
180
  const TeamAdoptSchema = z.z.object({
126
181
  requestId: z.z.string().min(1).max(128),
127
182
  name: z.z.string().trim().min(1).max(128),
128
- teamId: z.z.string().min(1).max(128).optional()
183
+ teamId: z.z.string().min(1).max(128).optional(),
184
+ /** B-730: the owner confirmed moving this session out of the team it already belongs to. */
185
+ transfer: z.z.literal(true).optional()
129
186
  }).strict();
130
187
  async function retainIntent(path$1, input) {
131
188
  await promises.mkdir(path.dirname(path$1), { recursive: true, mode: 448 });
@@ -208,7 +265,9 @@ function createTeamAdoption(sessionId) {
208
265
  const connected = await client.initialize(input, { resumeAdoption: true, expectedTeamId: intent.resolvedTeamId, onTeamResolved: (teamId) => retainTeam(path, input, teamId, intent?.guidanceDelivered) });
209
266
  const instructions = `${resources.TEAM_SKILL}
210
267
 
211
- This session is now connected as the team lead. Call team_inspect to read the authoritative state before continuing the user's goal. Do not call team_create or team_join again.`;
268
+ This session is now connected as the team lead. Call team_inspect to read the authoritative state before continuing the user's goal. Do not call team_create or team_join again.
269
+
270
+ ${resources.TEAM_LEAD_PLAYBOOK}`;
212
271
  if (!intent.guidanceDelivered) {
213
272
  const key = await sessionOps.waitForSessionKey(sessionId, 1e4);
214
273
  await sessionOps.sendUserMessage(sessionId, key, instructions, "teams", { localId: `teams-adopt-${input.requestId}`, sentFrom: "team" });
@@ -221,7 +280,12 @@ This session is now connected as the team lead. Call team_inspect to read the au
221
280
  });
222
281
  operation.safeToChange = true;
223
282
  }
224
- operation.result = { error: error instanceof Error ? error.message : "Team connection failed; retry the same request", ...operation.safeToChange ? { safeToChange: true } : {} };
283
+ operation.result = {
284
+ error: error instanceof Error ? error.message : "Team connection failed; retry the same request",
285
+ ...operation.safeToChange ? { safeToChange: true } : {},
286
+ // B-730: the Web asks the owner to confirm a transfer, then sends a new request with `transfer`.
287
+ ...error instanceof client$1.SessionInOtherTeamError ? { code: error.code, teamId: error.teamId, teamName: error.teamName } : {}
288
+ };
225
289
  }
226
290
  })();
227
291
  return { status: "pending", requestId: input.requestId };
@@ -536,13 +600,12 @@ async function startHappyServer(client, options) {
536
600
  let body = "";
537
601
  for await (const chunk of req) {
538
602
  body += chunk.toString();
539
- if (Buffer.byteLength(body) > 2048) {
603
+ if (Buffer.byteLength(body) > 4096) {
540
604
  res.writeHead(413).end();
541
605
  return;
542
606
  }
543
607
  }
544
- const usage = index.ContextUsageSchema.parse({ ...JSON.parse(body), updatedAt: Date.now() });
545
- options.onContextUsage(usage);
608
+ options.onContextUsage(PiContextReportSchema.parse(JSON.parse(body)));
546
609
  res.writeHead(204).end();
547
610
  } catch {
548
611
  if (!res.headersSent) res.writeHead(400).end();
@@ -692,4 +755,6 @@ function hashObject(obj, options, encoding = "hex") {
692
755
 
693
756
  exports.createProjectInjector = createProjectInjector;
694
757
  exports.hashObject = hashObject;
758
+ exports.readPiModelsJson = readPiModelsJson;
759
+ exports.resolvePiContextUsage = resolvePiContextUsage;
695
760
  exports.startHappyServer = startHappyServer;
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var configuration = require('./configuration-CYO-kPOS.cjs');
5
- var persistence = require('./persistence-9BMYspxG.cjs');
6
- var controlClient = require('./controlClient-Bqv5v5OM.cjs');
4
+ var configuration = require('./configuration-B-CugKJ3.cjs');
5
+ var persistence = require('./persistence-BdpwWXKh.cjs');
6
+ var controlClient = require('./controlClient-D0kGwKYx.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-C3ioB4Bu.cjs');
11
- var _package = require('./package-KhLqBDX9.cjs');
11
+ var _package = require('./package-BfeqAzyJ.cjs');
12
12
  var doctorReadiness = require('./doctorReadiness-Dl6yRQCy.cjs');
13
13
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
14
14
  var cliUpdate = require('./cliUpdate-DsKXPFYp.cjs');
15
15
  var node_child_process = require('node:child_process');
16
- var piRunnerArgs = require('./piRunnerArgs-DGaq6VYM.cjs');
16
+ var piRunnerArgs = require('./piRunnerArgs-vxCHKnSA.cjs');
17
17
 
18
18
  function shareSafeProcessLine(process2) {
19
19
  return `PID ${process2.pid}: command arguments hidden for privacy`;
@@ -313,8 +313,8 @@ ${typeLabels[type] || type}:`));
313
313
  }
314
314
  console.log(chalk.gray(" An external claude command is only needed for native terminal/mirror use."));
315
315
  try {
316
- const { resolveAgentHomesForCli } = await Promise.resolve().then(function () { return require('./agentHome-C7Sb7-Tz.cjs'); });
317
- const { describeAgentHome } = await Promise.resolve().then(function () { return require('./index-C64Ufj4D.cjs'); });
316
+ const { resolveAgentHomesForCli } = await Promise.resolve().then(function () { return require('./agentHome-CP1tCBXz.cjs'); });
317
+ const { describeAgentHome } = await Promise.resolve().then(function () { return require('./index-B_aNaW9w.cjs'); });
318
318
  const homes = await resolveAgentHomesForCli();
319
319
  console.log(chalk.green(`\u2713 Claude config dir: ${describeAgentHome(homes.claudeConfigDir)}`));
320
320
  console.log(chalk.green(`\u2713 Codex home: ${describeAgentHome(homes.codexHome)}`));
@@ -391,6 +391,7 @@ var doctor = /*#__PURE__*/Object.freeze({
391
391
  runDoctorDaemon: runDoctorDaemon
392
392
  });
393
393
 
394
+ exports.NPM_SAFE_ARG = NPM_SAFE_ARG;
394
395
  exports.doctor = doctor;
395
396
  exports.getEnvironmentInfo = getEnvironmentInfo;
396
397
  exports.globalPrefixForPackage = globalPrefixForPackage;