very-happy-cli 0.2.196 → 0.2.198

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 (213) hide show
  1. package/dist/{AcpBackend-RqGkFeeY.mjs → AcpBackend-Bm3EodAb.mjs} +3 -3
  2. package/dist/{AcpBackend-tL_g_UJ5.cjs → AcpBackend-DOuWeCAx.cjs} +3 -3
  3. package/dist/{AcpSessionManager-C-R6yHXc.mjs → AcpSessionManager-BiwuXpbx.mjs} +2 -2
  4. package/dist/{AcpSessionManager-CFB24qBh.cjs → AcpSessionManager-DvsZWTXp.cjs} +2 -2
  5. package/dist/{BasePermissionHandler-CgHLVNKT.mjs → BasePermissionHandler-1QcavYFn.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-C0JS37Jt.cjs → BasePermissionHandler-25RmI4dK.cjs} +1 -1
  7. package/dist/{account-DOil1Hn8.cjs → account-ChUtFYld.cjs} +11 -11
  8. package/dist/{account-EzL-zwwE.mjs → account-DA4mbX3-.mjs} +11 -11
  9. package/dist/{accountService-DL6xhVUa.cjs → accountService-BWUjgHl0.cjs} +4 -4
  10. package/dist/{accountService-DQ21IlBs.mjs → accountService-D7NZrnQd.mjs} +4 -4
  11. package/dist/{acpSessionResume-B01oHWDS.cjs → acpSessionResume-CeQu84Ol.cjs} +1 -1
  12. package/dist/{acpSessionResume-DEOIZUuj.mjs → acpSessionResume-D6YgeofW.mjs} +1 -1
  13. package/dist/{agentHome-DucTue1n.mjs → agentHome-DM6mC64c.mjs} +4 -4
  14. package/dist/{agentHome-BulDO_1K.cjs → agentHome-DevJCRG9.cjs} +4 -4
  15. package/dist/{api-CiNezCys.mjs → api-oceym3w6.mjs} +14 -12
  16. package/dist/{api-fuwEEEkT.cjs → api-te19Pzi3.cjs} +30 -28
  17. package/dist/{apiMachine-CxmiSa2-.cjs → apiMachine-BjhCXg6C.cjs} +117 -44
  18. package/dist/{apiMachine-DCmKjms1.mjs → apiMachine-DCHsqtFQ.mjs} +105 -32
  19. package/dist/{attachmentContent-Cehh7ClR.cjs → attachmentContent-BfCEgPTP.cjs} +2 -2
  20. package/dist/{attachmentContent-CiY3MvdO.mjs → attachmentContent-Dl29U1v1.mjs} +2 -2
  21. package/dist/{auth-DVsH_a8J.mjs → auth-BIkCWkRV.mjs} +5 -5
  22. package/dist/{auth-DHqHrs5d.mjs → auth-BJ8Tej9L.mjs} +8 -8
  23. package/dist/{auth-DHlbjtf7.cjs → auth-SH0o7ue7.cjs} +5 -5
  24. package/dist/{auth-tlMcvk2Y.cjs → auth-SshU0tNW.cjs} +8 -8
  25. package/dist/{auto-Cnn8luKk.mjs → auto-Bdr4sSJk.mjs} +17 -17
  26. package/dist/{auto-DNAa8xDZ.cjs → auto-t1B1Yzb3.cjs} +17 -17
  27. package/dist/{bootstrap-C2XSEyOe.mjs → bootstrap-D8DYLUId.mjs} +2 -2
  28. package/dist/{bootstrap-PeTZ2sAn.cjs → bootstrap-GZDknvPy.cjs} +2 -2
  29. package/dist/{browser-CWWyaf8_.mjs → browser-C-H3QYV2.mjs} +1 -1
  30. package/dist/{browser-Bm24RiFU.cjs → browser-DwCi-9Ya.cjs} +1 -1
  31. package/dist/{claudeAccountEnv-_O3x5AJ1.cjs → claudeAccountEnv-DSaFKajJ.cjs} +1 -1
  32. package/dist/{claudeAccountEnv-CPO6CGNd.mjs → claudeAccountEnv-DmVbGhZb.mjs} +1 -1
  33. package/dist/{claudeLocal-CRG-Q7kS.mjs → claudeLocal-BiM2x9DJ.mjs} +5 -5
  34. package/dist/{claudeLocal-BDWy2pFt.cjs → claudeLocal-Ck1jTve1.cjs} +5 -5
  35. package/dist/{claudeLocalLauncher-B5cOrszW.mjs → claudeLocalLauncher-DzvM0jBo.mjs} +10 -10
  36. package/dist/{claudeLocalLauncher-DmSLoHlw.cjs → claudeLocalLauncher-Jsupvl4V.cjs} +10 -10
  37. package/dist/{claudeSessionFork-OffWLYgd.cjs → claudeSessionFork-CDTbQmYi.cjs} +1 -1
  38. package/dist/{claudeSessionFork-BqV6E0ep.mjs → claudeSessionFork-D-BhXkRa.mjs} +1 -1
  39. package/dist/{client-CfTeXnYS.mjs → client-BRuFIwki.mjs} +2 -2
  40. package/dist/{client-Cg_cuQb1.mjs → client-CISkP897.mjs} +2 -2
  41. package/dist/{client-Ckic3nxZ.cjs → client-D-HEr922.cjs} +2 -2
  42. package/dist/{client-B3lOol4f.mjs → client-E4kW5qjR.mjs} +4 -4
  43. package/dist/{client-B9fcSMXP.cjs → client-oqSAKwmy.cjs} +2 -2
  44. package/dist/{client-YFvImdwH.cjs → client-v6rdLsBH.cjs} +4 -4
  45. package/dist/codex/happyMcpStdioBridge.cjs +16 -16
  46. package/dist/codex/happyMcpStdioBridge.mjs +16 -16
  47. package/dist/{codexAccount-CYhQir50.cjs → codexAccount-CQ4W1Ax8.cjs} +1 -1
  48. package/dist/{codexAccount-iZwmpYti.mjs → codexAccount-CnbDfCOM.mjs} +1 -1
  49. package/dist/{codexAppServerClient-C-UwVMUN.cjs → codexAppServerClient--K-ILfqM.cjs} +3 -3
  50. package/dist/{codexAppServerClient-aV5m-FpZ.mjs → codexAppServerClient-BLasFGTm.mjs} +3 -3
  51. package/dist/{codexCommand-5nWT7F8A.cjs → codexCommand-M1uNblJx.cjs} +48 -48
  52. package/dist/{codexCommand-CI2NTyIF.mjs → codexCommand-Wv1WVNtM.mjs} +48 -48
  53. package/dist/{codexTermination-D18IHgLP.cjs → codexTermination-BumRIUqm.cjs} +1 -1
  54. package/dist/{codexTermination-CLjDP6Ja.mjs → codexTermination-DigTBSJE.mjs} +1 -1
  55. package/dist/{config-BfwjfFSC.mjs → config-Br2fCFwB.mjs} +3 -3
  56. package/dist/{config-B7YtrHi0.cjs → config-Czs0Tucv.cjs} +3 -3
  57. package/dist/{configuration-CWRKSOyj.cjs → configuration-DfRs3WLd.cjs} +1 -1
  58. package/dist/{configuration-C8r6uD9k.mjs → configuration-JBFF7432.mjs} +1 -1
  59. package/dist/{connect-K5HBcM56.mjs → connect-CbCqv-MV.mjs} +13 -13
  60. package/dist/{connect-DALX1hGB.cjs → connect-Cr--b0yl.cjs} +13 -13
  61. package/dist/{context-BqhlGL3u.cjs → context-C5WWlHOl.cjs} +1 -1
  62. package/dist/{context-CtMY-M8T.mjs → context-DLIjT5qU.mjs} +1 -1
  63. package/dist/{controlClient-DyNgxNl7.cjs → controlClient-B61crTpk.cjs} +3 -3
  64. package/dist/{controlClient-DYQ1g2ar.mjs → controlClient-D5BYm3PU.mjs} +3 -3
  65. package/dist/{createSessionMetadata-C4WN8pVK.cjs → createSessionMetadata-BwYysMTH.cjs} +2 -2
  66. package/dist/{createSessionMetadata-CZuEDo2v.mjs → createSessionMetadata-OMKj3e48.mjs} +2 -2
  67. package/dist/{daemonAccounts-CxMJw7x2.cjs → daemonAccounts-CqAnPXDJ.cjs} +2 -2
  68. package/dist/{daemonAccounts-CnAEaJE_.mjs → daemonAccounts-asWvoPKG.mjs} +3 -3
  69. package/dist/{defaultPermissionMode-CpEJ0wlb.mjs → defaultPermissionMode-4KYZA4WF.mjs} +1 -1
  70. package/dist/{defaultPermissionMode-BCWCMONI.cjs → defaultPermissionMode-BItpIZML.cjs} +1 -1
  71. package/dist/{deterministicJson-r4zhG546.cjs → deterministicJson-DIzyb1dQ.cjs} +13 -13
  72. package/dist/{deterministicJson-Dg_0QJAR.mjs → deterministicJson-DnTSkEgb.mjs} +13 -13
  73. package/dist/{doctor-0gLGzwz6.cjs → doctor-Dn1G6QhF.cjs} +7 -7
  74. package/dist/{doctor-COeFzPpz.mjs → doctor-jrvm-tl3.mjs} +7 -7
  75. package/dist/{downloadTarget-CbuUiS5p.mjs → downloadTarget-BtsN_-LN.mjs} +7 -7
  76. package/dist/{downloadTarget-8ovVpDv1.cjs → downloadTarget-DGnCGrDZ.cjs} +7 -7
  77. package/dist/{ensureDaemonRunning-CwlujXmV.mjs → ensureDaemonRunning-DCmXUwNi.mjs} +5 -5
  78. package/dist/{ensureDaemonRunning-Bq-n6xTt.cjs → ensureDaemonRunning-DsvcjXb4.cjs} +5 -5
  79. package/dist/{handleResumeCommand-B5GgmPm_.mjs → handleResumeCommand-CFupxyHT.mjs} +5 -5
  80. package/dist/{handleResumeCommand-muSrYA5y.cjs → handleResumeCommand-hzho-lp7.cjs} +5 -5
  81. package/dist/{index-BUOd8bNd.cjs → index-5TDKOvkU.cjs} +4 -4
  82. package/dist/{index-DKCmDned.mjs → index-BMFLwBCd.mjs} +4 -4
  83. package/dist/{index-D9Hidq-g.cjs → index-BknTkVnR.cjs} +256 -89
  84. package/dist/{index-BRH0XYSO.mjs → index-CHk8F9OY.mjs} +45 -45
  85. package/dist/{index-Dt_YE-zw.cjs → index-CRI-_-YH.cjs} +44 -44
  86. package/dist/{index-D0V-seiN.mjs → index-CZpFhEmE.mjs} +3 -3
  87. package/dist/{index-BZCIkrFj.mjs → index-CofTgtQ3.mjs} +4 -4
  88. package/dist/{index-C27JFCbe.mjs → index-CxiisoO1.mjs} +256 -89
  89. package/dist/{index-CQZg9jKx.cjs → index-DCfEzudP.cjs} +4 -4
  90. package/dist/{index-CnY74Dae.cjs → index-EGwuuFdL.cjs} +3 -3
  91. package/dist/index.cjs +2 -2
  92. package/dist/index.mjs +2 -2
  93. package/dist/{install-BlW2kkPl.cjs → install-CB5eTmzm.cjs} +3 -3
  94. package/dist/{install-CooQf1oU.mjs → install-CeDqNGxI.mjs} +3 -3
  95. package/dist/lib.cjs +12 -12
  96. package/dist/lib.d.cts +9 -0
  97. package/dist/lib.d.mts +9 -0
  98. package/dist/lib.mjs +12 -12
  99. package/dist/{localHappyAgentAuth-oxhpgJOb.cjs → localHappyAgentAuth-B6xdH-Fr.cjs} +1 -1
  100. package/dist/{localHappyAgentAuth-BAK_nqMG.mjs → localHappyAgentAuth-BiIyMoiG.mjs} +1 -1
  101. package/dist/{logger-D1hb3CG8.mjs → logger-BHfBDOsy.mjs} +2 -2
  102. package/dist/{logger-HQ9yDb8R.cjs → logger-BrAF4iuT.cjs} +2 -2
  103. package/dist/{machineMetadata-Dzwn-HjN.cjs → machineMetadata-D5PO2ylb.cjs} +3 -3
  104. package/dist/{machineMetadata-Dxng45Uh.mjs → machineMetadata-Ekniv5o4.mjs} +3 -3
  105. package/dist/{main-D7qre-pa.cjs → main-C8lsRSYS.cjs} +47 -47
  106. package/dist/{main-BP0iY2vQ.mjs → main-HXdcnexS.mjs} +47 -47
  107. package/dist/{mcp-BmDGyj7k.mjs → mcp-C2YD6mq4.mjs} +20 -20
  108. package/dist/{mcp-D3yzLkh8.cjs → mcp-D9sglL02.cjs} +20 -20
  109. package/dist/{mirrorProtocol-C9Zc6GFT.mjs → mirrorProtocol-BLhArCS9.mjs} +12 -5
  110. package/dist/{mirrorProtocol-Cv2otcvM.cjs → mirrorProtocol-CNF1eHsm.cjs} +12 -4
  111. package/dist/{package-CpmoMPuj.mjs → package-BGZo2vAj.mjs} +7 -7
  112. package/dist/{package-Dn7zZkY1.cjs → package-CStJrLG3.cjs} +7 -7
  113. package/dist/{panels-D59PlNoD.cjs → panels-D4_yGw4n.cjs} +5 -5
  114. package/dist/{panels-CQobcX5w.mjs → panels-GVnnEsow.mjs} +5 -5
  115. package/dist/{peerTools-CNzlwuL7.mjs → peerTools-BO-H0wNj.mjs} +5 -5
  116. package/dist/{peerTools-D417O7d-.cjs → peerTools-Drow2-P4.cjs} +5 -5
  117. package/dist/{persistence-BiyvEYaR.cjs → persistence-DGfEdbA5.cjs} +2 -2
  118. package/dist/{persistence-CagHeZ-f.mjs → persistence-DvD-irLh.mjs} +2 -2
  119. package/dist/{piRunnerArgs-kTaNYd23.cjs → piRunnerArgs-C1dLsoXF.cjs} +1 -1
  120. package/dist/{piRunnerArgs-DKU5LoWu.mjs → piRunnerArgs-DwcAwwzm.mjs} +1 -1
  121. package/dist/{piRuntime-BV4fQyZD.mjs → piRuntime-_yRSPgnR.mjs} +1 -1
  122. package/dist/{piRuntime-BI4KNAUY.cjs → piRuntime-d2h0Cska.cjs} +1 -1
  123. package/dist/{piTerminal-WPUtDJAV.cjs → piTerminal-CVB4fa5R.cjs} +22 -22
  124. package/dist/{piTerminal-oObkl3WJ.mjs → piTerminal-WN0AMv9u.mjs} +22 -22
  125. package/dist/{pushNotifications-DRDWUnP-.cjs → pushNotifications-3YsyCEfY.cjs} +16 -3
  126. package/dist/{pushNotifications-4sNESDMv.mjs → pushNotifications-D2UZnoTB.mjs} +16 -3
  127. package/dist/{query-qIbeJ2-r.cjs → query-Ba7UXc_y.cjs} +1 -1
  128. package/dist/{query-6OWHW1U1.mjs → query-_sw0hG6A.mjs} +1 -1
  129. package/dist/{rateLimitWindows-U4fc1-_6.cjs → rateLimitWindows-DiiGHS9r.cjs} +1 -1
  130. package/dist/{rateLimitWindows-4uhuwKnU.mjs → rateLimitWindows-DzXv6p_W.mjs} +1 -1
  131. package/dist/{lidState-VZ1j_QYw.cjs → reconnectGate-BpePVLPu.cjs} +27 -2
  132. package/dist/{lidState-BflRFw38.mjs → reconnectGate-CxLgZCBh.mjs} +27 -3
  133. package/dist/{registerCommonHandlers-CEV9KUsq.cjs → registerCommonHandlers-6iKpECuR.cjs} +2 -2
  134. package/dist/{registerCommonHandlers-PTJ8TBj9.mjs → registerCommonHandlers-ChdVwZW6.mjs} +2 -2
  135. package/dist/{registerKillSessionHandler-C6F1sjoo.cjs → registerKillSessionHandler-BDTgrstx.cjs} +6 -6
  136. package/dist/{registerKillSessionHandler-D4SSwQj8.mjs → registerKillSessionHandler-D6wYbAIt.mjs} +6 -6
  137. package/dist/{registerSideQuestionHandler-4mRv0Msq.mjs → registerSideQuestionHandler-C3K_qKwA.mjs} +4 -4
  138. package/dist/{registerSideQuestionHandler-ByUnjI3V.cjs → registerSideQuestionHandler-U4LGga_Z.cjs} +4 -4
  139. package/dist/{remoteSessionClient-CfYDFlKm.mjs → remoteSessionClient-CFNM8UEh.mjs} +5 -5
  140. package/dist/{remoteSessionClient-CUk6haD7.cjs → remoteSessionClient-DSC5Cj21.cjs} +5 -5
  141. package/dist/{reportProgressTool-BCn5oG52.mjs → reportProgressTool-CFmDK8ag.mjs} +3 -3
  142. package/dist/{reportProgressTool-C1JOvo6T.cjs → reportProgressTool-Cr25LWeW.cjs} +3 -3
  143. package/dist/{run-D2SlfZPP.cjs → run-Be0yicft.cjs} +41 -41
  144. package/dist/{run-DC8BIklA.mjs → run-D0D73Dam.mjs} +41 -41
  145. package/dist/{runClaude-D6fqN9PD.mjs → runClaude-1NP467UM.mjs} +25 -25
  146. package/dist/{runClaude-BE-5GgIZ.cjs → runClaude-BOxvKK4H.cjs} +25 -25
  147. package/dist/{runClaudeDeps-BmdwskeI.mjs → runClaudeDeps-BPzLoWyT.mjs} +48 -48
  148. package/dist/{runClaudeDeps-W0nv2vHL.cjs → runClaudeDeps-CkRlQx2Y.cjs} +42 -42
  149. package/dist/{runGemini-Da_d-2kV.cjs → runGemini-BowXJRXb.cjs} +35 -35
  150. package/dist/{runGemini-C3Ipeu1i.mjs → runGemini-j2n5ZlOL.mjs} +35 -35
  151. package/dist/{runOpenClaw-BoI6nbKB.mjs → runOpenClaw-6zrT8dPO.mjs} +18 -18
  152. package/dist/{runOpenClaw-af5qDNU0.cjs → runOpenClaw-DLsnZnFM.cjs} +18 -18
  153. package/dist/{sandbox-CjoyUSGa.mjs → sandbox-BFbT6HDl.mjs} +4 -4
  154. package/dist/{sandbox-UGF68GrE.cjs → sandbox-DLijcRKk.cjs} +4 -4
  155. package/dist/selfCheck-DCIqaiMu.mjs +88 -0
  156. package/dist/{selfCheck-Cr8eAw4m.cjs → selfCheck-U-A1DCi9.cjs} +39 -39
  157. package/dist/{send-CVSht9s_.cjs → send-CGxo_QUR.cjs} +8 -8
  158. package/dist/{send-gqX0-i4p.mjs → send-CQGKb3Kb.mjs} +8 -8
  159. package/dist/{server-BPgVv-BG.cjs → server-CWbcDBjV.cjs} +6 -6
  160. package/dist/{server-DxlNqWJo.mjs → server-DR5bQzTq.mjs} +4 -4
  161. package/dist/{sessionLock-D2usWXAg.cjs → sessionLock-CJiayMcZ.cjs} +3 -3
  162. package/dist/{sessionLock-BfvR9BGB.mjs → sessionLock-DqFKSW8u.mjs} +3 -3
  163. package/dist/{sessionOps-JRyQhF5s.cjs → sessionOps-Cw_JivR2.cjs} +4 -4
  164. package/dist/{sessionOps-OmRqUFm4.mjs → sessionOps-D-SDNs-D.mjs} +4 -4
  165. package/dist/{sessionProvider-DTEdidBc.mjs → sessionProvider-Cb-LtbFQ.mjs} +10 -10
  166. package/dist/{sessionProvider-BpscgwwC.cjs → sessionProvider-JEAWxBF6.cjs} +10 -10
  167. package/dist/{sessionScanner-BlAOpqMh.mjs → sessionScanner-C2M697xz.mjs} +3 -3
  168. package/dist/{sessionScanner-C_qVc1ok.cjs → sessionScanner-zJrc_Oe0.cjs} +3 -3
  169. package/dist/{sessions-CnjHHllR.mjs → sessions-CIxnjpCM.mjs} +10 -10
  170. package/dist/{sessions-7iyjxti9.cjs → sessions-D2yLkE5R.cjs} +10 -10
  171. package/dist/{setupOfflineReconnection-IKEI7fLJ.mjs → setupOfflineReconnection-DzV1wB4y.mjs} +2 -2
  172. package/dist/{setupOfflineReconnection-BCbJa5mT.cjs → setupOfflineReconnection-Uu3tqISz.cjs} +2 -2
  173. package/dist/{spawn-CbfcClhj.mjs → spawn-CeeM-Piz.mjs} +14 -14
  174. package/dist/{spawn-CxEl0Dyz.cjs → spawn-DD1Sv8Ri.cjs} +14 -14
  175. package/dist/{spawnAgents-Cm23BW-D.cjs → spawnAgents-CrHgpAzU.cjs} +1 -1
  176. package/dist/{spawnAgents-N3jxdNJC.mjs → spawnAgents-DEBfpoPZ.mjs} +1 -1
  177. package/dist/{spawnHappyCLI-C8gMHJu5.mjs → spawnHappyCLI-CUfe8n_m.mjs} +1 -1
  178. package/dist/{spawnHappyCLI-CHSlXWUe.cjs → spawnHappyCLI-CYzlz9Sl.cjs} +1 -1
  179. package/dist/{startFileWatcher-BGpYPz6L.cjs → startFileWatcher-C0u3J6Bj.cjs} +1 -1
  180. package/dist/{startFileWatcher-6hslFu_B.mjs → startFileWatcher-JdO3v65I.mjs} +1 -1
  181. package/dist/{startupSessionCreate-B7jrCZUD.mjs → startupSessionCreate-CfBajt2k.mjs} +3 -3
  182. package/dist/{startupSessionCreate-CltDtCEF.cjs → startupSessionCreate-s1ekIs2Z.cjs} +3 -3
  183. package/dist/{store-BlPvTr_Q.mjs → store-DEhdblkI.mjs} +1 -1
  184. package/dist/{store-aa3CVNwS.cjs → store-QBBJB5Ox.cjs} +1 -1
  185. package/dist/{streamRelay-C2Lb2z39.cjs → streamRelay-BVrCYh2G.cjs} +1 -1
  186. package/dist/{streamRelay-DFZyAPD_.mjs → streamRelay-DymKR1Rk.mjs} +1 -1
  187. package/dist/{sync-DtzoF9sw.mjs → sync-BLGrIKN9.mjs} +1 -1
  188. package/dist/{sync-DfI78smj.cjs → sync-BO4DRSub.cjs} +1 -1
  189. package/dist/{systemPrompt-HZNR9rjt.cjs → systemPrompt-DTUJZOn6.cjs} +2 -2
  190. package/dist/{systemPrompt-B1Xd99hK.mjs → systemPrompt-YylizkJs.mjs} +2 -2
  191. package/dist/{teams-fFX-L_ms.cjs → teams-DnLPBPKx.cjs} +7 -7
  192. package/dist/{teams-Vk75H6BZ.mjs → teams-zkGFcwsG.mjs} +7 -7
  193. package/dist/{template-CJ8uLlD8.mjs → template-BGlDAjbM.mjs} +1 -1
  194. package/dist/{template-B1AORlgU.cjs → template-uSKZ53Sv.cjs} +1 -1
  195. package/dist/{terminals-Dlg0x3nY.mjs → terminals-Dc38XmZv.mjs} +9 -5
  196. package/dist/{terminals-B_bfC9c2.cjs → terminals-dK3Lrjfp.cjs} +9 -5
  197. package/dist/{time-BqPZjTpo.cjs → time-Cv4hbCLT.cjs} +1 -1
  198. package/dist/{time-CgAwVt5R.mjs → time-DZE0879N.mjs} +1 -1
  199. package/dist/{titleGenerator-D2UB7Uyr.mjs → titleGenerator-B2BbmJuc.mjs} +2 -2
  200. package/dist/{titleGenerator-ijVOuv3J.cjs → titleGenerator-D2ehxbvK.cjs} +3 -3
  201. package/dist/tmuxSocket-BmZyixRM.mjs +29 -0
  202. package/dist/{tmuxSocket-D-Xt6Vn-.cjs → tmuxSocket-Dg11Olx0.cjs} +12 -0
  203. package/dist/{todo-vCzaIwNp.cjs → todo-9kn_9N-H.cjs} +6 -6
  204. package/dist/{todo-CCuqtD0O.mjs → todo-DUpW9d8p.mjs} +6 -6
  205. package/dist/{tools-DthGQoo3.mjs → tools-gIDXwAzk.mjs} +1 -1
  206. package/dist/{tools-CL8h3fqh.cjs → tools-rMr-wPIc.cjs} +1 -1
  207. package/dist/{uninstall-DCJh4UoO.mjs → uninstall-CBlRzvNa.mjs} +3 -3
  208. package/dist/{uninstall-CIvThBvI.cjs → uninstall-CHx5TOHi.cjs} +3 -3
  209. package/dist/{wrapperAccount-RPtq8BwD.mjs → wrapperAccount-Ce78kKMo.mjs} +2 -2
  210. package/dist/{wrapperAccount-BubTurHU.cjs → wrapperAccount-EkmR4V-v.cjs} +2 -2
  211. package/package.json +7 -7
  212. package/dist/selfCheck-CNrOZgBv.mjs +0 -88
  213. package/dist/tmuxSocket-B8Yx20sT.mjs +0 -19
@@ -636,7 +636,7 @@ function agentProfileUnavailableReason(error) {
636
636
  return m ? m[1] : null;
637
637
  }
638
638
  const TeamPermissionModeSchema = z.z.enum(["default", "bypassPermissions"]);
639
- const id$3 = z.z.string().min(1).max(128);
639
+ const id$4 = z.z.string().min(1).max(128);
640
640
  const text$1 = z.z.string().min(1).max(32e3);
641
641
  const TeamAssistantSchema = z.z.enum(["claude", "codex", "pi-acp"]);
642
642
  const TeamModelSchema = z.z.string().trim().min(1).max(256);
@@ -648,50 +648,50 @@ const TeamActionSchema = z.z.discriminatedUnion("type", [
648
648
  z.z.object({ type: z.z.literal("set-defaults"), defaults: TeamDefaultsSchema }),
649
649
  z.z.object({ type: z.z.literal("set-permission-mode"), permissionMode: TeamPermissionModeSchema }),
650
650
  /** B-850d: a member's account for its next spawn (absent = follow the team default). An old server answers invalid action. */
651
- z.z.object({ type: z.z.literal("set-bot-account"), botId: id$3, agentProfile: AgentProfileChoiceSchema.optional() }),
652
- z.z.object({ type: z.z.literal("schedule-create"), name: id$3, botId: id$3, body: text$1, runAt: z.z.number().int().positive().max(864e13), intervalMs: z.z.number().int().min(6e4).max(366 * 864e5).optional() }),
653
- z.z.object({ type: z.z.literal("schedule-pause"), scheduleId: id$3, version: z.z.number().int().positive() }),
654
- z.z.object({ type: z.z.literal("schedule-resume"), scheduleId: id$3, version: z.z.number().int().positive() }),
655
- z.z.object({ type: z.z.literal("schedule-cancel"), scheduleId: id$3, version: z.z.number().int().positive() }),
656
- z.z.object({ type: z.z.literal("reconcile-operation"), operationId: id$3, claimId: id$3, note: z.z.string().trim().min(1).max(4e3) }),
651
+ z.z.object({ type: z.z.literal("set-bot-account"), botId: id$4, agentProfile: AgentProfileChoiceSchema.optional() }),
652
+ z.z.object({ type: z.z.literal("schedule-create"), name: id$4, botId: id$4, body: text$1, runAt: z.z.number().int().positive().max(864e13), intervalMs: z.z.number().int().min(6e4).max(366 * 864e5).optional() }),
653
+ z.z.object({ type: z.z.literal("schedule-pause"), scheduleId: id$4, version: z.z.number().int().positive() }),
654
+ z.z.object({ type: z.z.literal("schedule-resume"), scheduleId: id$4, version: z.z.number().int().positive() }),
655
+ z.z.object({ type: z.z.literal("schedule-cancel"), scheduleId: id$4, version: z.z.number().int().positive() }),
656
+ z.z.object({ type: z.z.literal("reconcile-operation"), operationId: id$4, claimId: id$4, note: z.z.string().trim().min(1).max(4e3) }),
657
657
  // B-689: owner asks the execution computer to run a failed/uncertain operation again.
658
- z.z.object({ type: z.z.literal("retry-operation"), operationId: id$3, claimId: id$3 }),
658
+ z.z.object({ type: z.z.literal("retry-operation"), operationId: id$4, claimId: id$4 }),
659
659
  /** B-730: `transfer` = the owner confirmed moving a session that is bound in another live team (Web adopt); without it the server answers `session_in_other_team`. An old server strips it. */
660
- z.z.object({ type: z.z.literal("join"), name: id$3, sessionId: id$3, botId: id$3.optional(), transfer: z.z.literal(true).optional() }),
661
- z.z.object({ type: z.z.literal("delegate"), goal: text$1, acceptance: z.z.array(text$1).min(1).max(32), parentTaskId: id$3.optional(), assigneeBotId: id$3.optional(), botName: id$3.optional(), directory: z.z.string().min(1).max(4096).optional(), assistant: TeamAssistantSchema.optional(), model: TeamModelSchema.optional(), agentProfile: AgentProfileChoiceSchema.optional() }),
662
- z.z.object({ type: z.z.literal("message"), taskId: id$3, body: text$1, recipientBotId: id$3.optional() }),
663
- z.z.object({ type: z.z.literal("submit"), taskId: id$3, attemptId: id$3, goalVersion: z.z.number().int().positive(), result: text$1 }),
664
- z.z.object({ type: z.z.literal("accept"), taskId: id$3, attemptId: id$3, goalVersion: z.z.number().int().positive() }),
665
- z.z.object({ type: z.z.literal("return"), taskId: id$3, attemptId: id$3, goalVersion: z.z.number().int().positive(), reason: text$1 }),
666
- z.z.object({ type: z.z.literal("cancel"), taskId: id$3, attemptId: id$3, goalVersion: z.z.number().int().positive(), reason: text$1 }),
667
- z.z.object({ type: z.z.literal("handoff"), taskId: id$3, attemptId: id$3, goalVersion: z.z.number().int().positive(), assigneeBotId: id$3 }),
668
- z.z.object({ type: z.z.literal("claim-operation"), operationId: id$3, machineId: id$3, teamLaunchVersion: z.z.literal(1).optional() }),
669
- z.z.object({ type: z.z.literal("complete-operation"), operationId: id$3, machineId: id$3, claimId: id$3, sessionId: id$3.optional(), workingDirectory: z.z.string().min(1).max(4096).optional() }),
660
+ z.z.object({ type: z.z.literal("join"), name: id$4, sessionId: id$4, botId: id$4.optional(), transfer: z.z.literal(true).optional() }),
661
+ z.z.object({ type: z.z.literal("delegate"), goal: text$1, acceptance: z.z.array(text$1).min(1).max(32), parentTaskId: id$4.optional(), assigneeBotId: id$4.optional(), botName: id$4.optional(), directory: z.z.string().min(1).max(4096).optional(), assistant: TeamAssistantSchema.optional(), model: TeamModelSchema.optional(), agentProfile: AgentProfileChoiceSchema.optional() }),
662
+ z.z.object({ type: z.z.literal("message"), taskId: id$4, body: text$1, recipientBotId: id$4.optional() }),
663
+ z.z.object({ type: z.z.literal("submit"), taskId: id$4, attemptId: id$4, goalVersion: z.z.number().int().positive(), result: text$1 }),
664
+ z.z.object({ type: z.z.literal("accept"), taskId: id$4, attemptId: id$4, goalVersion: z.z.number().int().positive() }),
665
+ z.z.object({ type: z.z.literal("return"), taskId: id$4, attemptId: id$4, goalVersion: z.z.number().int().positive(), reason: text$1 }),
666
+ z.z.object({ type: z.z.literal("cancel"), taskId: id$4, attemptId: id$4, goalVersion: z.z.number().int().positive(), reason: text$1 }),
667
+ z.z.object({ type: z.z.literal("handoff"), taskId: id$4, attemptId: id$4, goalVersion: z.z.number().int().positive(), assigneeBotId: id$4 }),
668
+ z.z.object({ type: z.z.literal("claim-operation"), operationId: id$4, machineId: id$4, teamLaunchVersion: z.z.literal(1).optional() }),
669
+ z.z.object({ type: z.z.literal("complete-operation"), operationId: id$4, machineId: id$4, claimId: id$4, sessionId: id$4.optional(), workingDirectory: z.z.string().min(1).max(4096).optional() }),
670
670
  z.z.object({
671
671
  type: z.z.literal("fail-operation"),
672
- operationId: id$3,
673
- machineId: id$3,
674
- claimId: id$3,
672
+ operationId: id$4,
673
+ machineId: id$4,
674
+ claimId: id$4,
675
675
  error: text$1,
676
676
  unknown: z.z.boolean().optional(),
677
677
  /** B-775: a failed cleanup whose wrapper was already stopped (only resources retained). */
678
678
  sessionStopped: z.z.boolean().optional()
679
679
  }),
680
- z.z.object({ type: z.z.literal("session-event"), sessionId: id$3, event: z.z.enum(["idle", "blocked", "exited"]) }),
681
- z.z.object({ type: z.z.literal("message-delivered"), messageId: id$3, recipientBotId: id$3, generation: z.z.number().int().positive(), sessionId: id$3 })
680
+ z.z.object({ type: z.z.literal("session-event"), sessionId: id$4, event: z.z.enum(["idle", "blocked", "exited"]) }),
681
+ z.z.object({ type: z.z.literal("message-delivered"), messageId: id$4, recipientBotId: id$4, generation: z.z.number().int().positive(), sessionId: id$4 })
682
682
  ]);
683
- z.z.object({ requestId: id$3, action: TeamActionSchema });
683
+ z.z.object({ requestId: id$4, action: TeamActionSchema });
684
684
  const TeamProjectChoiceSchema = z.z.object({
685
- projectId: id$3.optional(),
686
- inheritFromSessionId: id$3.optional(),
685
+ projectId: id$4.optional(),
686
+ inheritFromSessionId: id$4.optional(),
687
687
  create: z.z.boolean().optional(),
688
688
  directory: z.z.string().min(1).max(4096).optional()
689
689
  });
690
- z.z.object({ name: id$3, machineId: id$3, requestId: id$3.optional(), launch: TeamLaunchSchema.optional(), project: TeamProjectChoiceSchema.optional(), sessionId: id$3.optional(), transfer: z.z.literal(true).optional() });
690
+ z.z.object({ name: id$4, machineId: id$4, requestId: id$4.optional(), launch: TeamLaunchSchema.optional(), project: TeamProjectChoiceSchema.optional(), sessionId: id$4.optional(), transfer: z.z.literal(true).optional() });
691
691
  z.z.object({
692
- projectId: id$3.nullable().optional(),
692
+ projectId: id$4.nullable().optional(),
693
693
  create: z.z.boolean().optional(),
694
- requestId: id$3.optional()
694
+ requestId: id$4.optional()
695
695
  }).refine((v) => v.projectId !== void 0 !== (v.create === true), "exactly one of projectId / create");
696
696
  const TEAM_WORKTREE = /\/teams\/worktrees\/([^/]+)(?:\/|$)/;
697
697
  function teamWorktreeId(path) {
@@ -708,7 +708,7 @@ function rebaseTeamWorktreePath(path, repository) {
708
708
  const rest = normalized.slice(match.index + match[0].length).replace(/\/+$/, "");
709
709
  return rest ? `${repository.replace(/\/+$/, "")}/${rest}` : repository;
710
710
  }
711
- const id$2 = z.z.string().min(1).max(128);
711
+ const id$3 = z.z.string().min(1).max(128);
712
712
  const text = z.z.string().min(1).max(32e3);
713
713
  const AUTOMATION_NAME_PATTERN = /^[a-z0-9][a-z0-9-_.]{0,63}$/;
714
714
  const AutomationNameSchema = z.z.string().regex(AUTOMATION_NAME_PATTERN, "automation name must match [a-z0-9][a-z0-9-_.]{0,63}");
@@ -750,7 +750,7 @@ const AutomationActionSchema = z.z.discriminatedUnion("kind", [
750
750
  /** B-850d: the account the run uses (absent = project default > machine default; null = machine login). An older daemon ignores it. */
751
751
  agentProfile: AgentProfileChoiceSchema.optional()
752
752
  }),
753
- z.z.object({ kind: z.z.literal("send"), sessionId: id$2, prompt: text }),
753
+ z.z.object({ kind: z.z.literal("send"), sessionId: id$3, prompt: text }),
754
754
  z.z.object({
755
755
  kind: z.z.literal("script"),
756
756
  command: z.z.array(z.z.string().min(1).max(4096)).min(1).max(256),
@@ -776,7 +776,7 @@ const maxRuntimeMs = z.z.number().int().min(6e4).max(7 * 864e5);
776
776
  z.z.object({
777
777
  name: AutomationNameSchema,
778
778
  description: z.z.string().max(4e3).nullable().optional(),
779
- machineId: id$2,
779
+ machineId: id$3,
780
780
  trigger: AutomationTriggerSchema,
781
781
  action: AutomationActionSchema,
782
782
  concurrency: AutomationConcurrencySchema.optional(),
@@ -785,13 +785,13 @@ z.z.object({
785
785
  /** B-548. Older servers strip it silently — clients must check the response echoes `precheck`. */
786
786
  precheck: AutomationPrecheckSchema.nullable().optional(),
787
787
  /** B-644: sessions this automation spawns join this project (quiet variant). Older servers strip it — check the echo. */
788
- projectId: id$2.nullable().optional()
788
+ projectId: id$3.nullable().optional()
789
789
  });
790
790
  z.z.object({
791
791
  version: z.z.number().int().positive(),
792
792
  name: AutomationNameSchema.optional(),
793
793
  description: z.z.string().max(4e3).nullable().optional(),
794
- machineId: id$2.optional(),
794
+ machineId: id$3.optional(),
795
795
  trigger: AutomationTriggerSchema.optional(),
796
796
  action: AutomationActionSchema.optional(),
797
797
  concurrency: AutomationConcurrencySchema.optional(),
@@ -799,22 +799,22 @@ z.z.object({
799
799
  /** B-548: omitted keeps the current precheck, `null` removes it. Changing `action` alone keeps it too. */
800
800
  precheck: AutomationPrecheckSchema.nullable().optional(),
801
801
  /** B-644: omitted keeps the current project, `null` detaches. */
802
- projectId: id$2.nullable().optional()
802
+ projectId: id$3.nullable().optional()
803
803
  });
804
804
  const payload = z.z.string().max(AUTOMATION_PAYLOAD_MAX_BYTES).refine((v) => new TextEncoder().encode(v).length <= AUTOMATION_PAYLOAD_MAX_BYTES, "payload exceeds 64KB");
805
805
  z.z.object({ payload: payload.optional(), dedupeKey: z.z.string().min(1).max(256).optional() });
806
806
  z.z.object({ payload: payload.optional() });
807
807
  z.z.object({
808
- machineId: id$2,
808
+ machineId: id$3,
809
809
  limit: z.z.number().int().min(1).max(AUTOMATION_CLAIM_MAX_RUNS).optional(),
810
810
  leaseMs: z.z.number().int().min(5e3).max(36e5).optional(),
811
811
  /** B-548: what this daemon can execute (e.g. `precheck`). Older daemons send nothing; older servers strip it. */
812
812
  capabilities: z.z.array(z.z.string().min(1).max(64)).max(32).optional()
813
813
  });
814
814
  z.z.object({
815
- claimId: id$2.optional(),
815
+ claimId: id$3.optional(),
816
816
  status: z.z.enum(["running", "done", "failed", "skipped"]).optional(),
817
- sessionId: id$2.nullable().optional(),
817
+ sessionId: id$3.nullable().optional(),
818
818
  stickyKey: z.z.string().min(1).max(512).optional(),
819
819
  summary: z.z.string().max(AUTOMATION_SUMMARY_MAX_CHARS).nullable().optional(),
820
820
  error: z.z.string().max(AUTOMATION_SUMMARY_MAX_CHARS).nullable().optional(),
@@ -824,16 +824,16 @@ z.z.object({
824
824
  leaseMs: z.z.number().int().min(5e3).max(36e5).optional()
825
825
  });
826
826
  z.z.object({ by: z.z.string().min(1).max(64).optional() });
827
- z.z.object({ key: z.z.string().min(1).max(512), sessionId: id$2 });
827
+ z.z.object({ key: z.z.string().min(1).max(512), sessionId: id$3 });
828
828
  z.z.object({ key: z.z.string().min(1).max(512) });
829
829
  z.z.object({
830
- automationId: id$2.optional(),
830
+ automationId: id$3.optional(),
831
831
  name: AutomationNameSchema.optional(),
832
832
  status: z.z.string().min(1).max(64).optional(),
833
833
  attention: z.z.enum(["1", "true", "0", "false"]).optional(),
834
834
  limit: z.z.coerce.number().int().min(1).max(200).optional()
835
835
  });
836
- z.z.object({ machineId: id$2.optional() });
836
+ z.z.object({ machineId: id$3.optional() });
837
837
  const PROJECT_SESSION_CAPABILITY = "project-v1";
838
838
  const PROJECT_LIMITS = {
839
839
  nameChars: 120,
@@ -845,11 +845,11 @@ const PROJECT_LIMITS = {
845
845
  messageBytes: 64 * 1024,
846
846
  presenceBatch: 200,
847
847
  memberBatch: 200};
848
- const id$1 = z.z.string().min(1).max(128);
849
- const utf8Bytes = (value) => new TextEncoder().encode(value).length;
850
- const boundedText = (maxBytes) => z.z.string().max(maxBytes).refine((v) => utf8Bytes(v) <= maxBytes, `exceeds ${maxBytes} bytes`);
848
+ const id$2 = z.z.string().min(1).max(128);
849
+ const utf8Bytes$1 = (value) => new TextEncoder().encode(value).length;
850
+ const boundedText$1 = (maxBytes) => z.z.string().max(maxBytes).refine((v) => utf8Bytes$1(v) <= maxBytes, `exceeds ${maxBytes} bytes`);
851
851
  const ProjectFolderSchema = z.z.object({
852
- machineId: id$1,
852
+ machineId: id$2,
853
853
  path: z.z.string().min(1).max(4096),
854
854
  primary: z.z.boolean().optional()
855
855
  });
@@ -863,17 +863,17 @@ const ProjectDefaultsSchema = z.z.object({
863
863
  });
864
864
  const PROJECT_LOG_KINDS = ["decision", "finding", "handoff"];
865
865
  const ProjectLogKindSchema = z.z.enum(PROJECT_LOG_KINDS);
866
- const ProjectMemberViaInputSchema = z.z.enum(["explicit", "lineage", "suggested-accepted", "automation"]);
866
+ const ProjectMemberViaInputSchema = z.z.enum(["explicit", "lineage", "suggested-accepted", "automation", "issue"]);
867
867
  z.z.object({
868
868
  name: z.z.string().trim().min(1).max(PROJECT_LIMITS.nameChars),
869
869
  goal: z.z.string().max(PROJECT_LIMITS.goalChars).nullable().optional(),
870
- instructions: boundedText(PROJECT_LIMITS.instructionsBytes).optional(),
870
+ instructions: boundedText$1(PROJECT_LIMITS.instructionsBytes).optional(),
871
871
  folders: z.z.array(ProjectFolderSchema).max(PROJECT_LIMITS.folders).optional(),
872
872
  defaults: ProjectDefaultsSchema.optional(),
873
873
  /** Idempotency: the same requestId returns the project it created. */
874
- requestId: id$1.optional(),
874
+ requestId: id$2.optional(),
875
875
  /** Optional initial members (e.g. "设为项目" moves a folder's sessions in one step). */
876
- sessionIds: z.z.array(id$1).max(PROJECT_LIMITS.memberBatch).optional()
876
+ sessionIds: z.z.array(id$2).max(PROJECT_LIMITS.memberBatch).optional()
877
877
  });
878
878
  z.z.object({
879
879
  name: z.z.string().trim().min(1).max(PROJECT_LIMITS.nameChars).optional(),
@@ -883,31 +883,31 @@ z.z.object({
883
883
  archived: z.z.boolean().optional()
884
884
  });
885
885
  z.z.object({
886
- instructions: boundedText(PROJECT_LIMITS.instructionsBytes),
886
+ instructions: boundedText$1(PROJECT_LIMITS.instructionsBytes),
887
887
  ifVersion: z.z.number().int().min(0),
888
888
  /** One-line summary shown in the next-turn digest ("instructions now v8 — …"). */
889
889
  summary: z.z.string().max(200).optional()
890
890
  });
891
891
  z.z.object({
892
- sessionIds: z.z.array(id$1).min(1).max(PROJECT_LIMITS.memberBatch),
892
+ sessionIds: z.z.array(id$2).min(1).max(PROJECT_LIMITS.memberBatch),
893
893
  via: ProjectMemberViaInputSchema.optional()
894
894
  });
895
895
  z.z.object({
896
896
  kind: ProjectLogKindSchema,
897
897
  title: z.z.string().trim().min(1).max(PROJECT_LIMITS.logTitleChars),
898
- body: boundedText(PROJECT_LIMITS.logBodyBytes).optional(),
898
+ body: boundedText$1(PROJECT_LIMITS.logBodyBytes).optional(),
899
899
  /** Entry id (or `#seq`) this entry replaces. */
900
900
  supersedes: z.z.string().min(1).max(128).optional(),
901
901
  /** Stamped by the wrapper (the agent cannot fill it). Absent = written by the user. */
902
- authorSessionId: id$1.optional()
902
+ authorSessionId: id$2.optional()
903
903
  });
904
904
  z.z.object({
905
905
  /** When set, only entries this session authored may be revoked. Absent = the owner. */
906
- bySessionId: id$1.optional()
906
+ bySessionId: id$2.optional()
907
907
  });
908
- z.z.object({ teamId: id$1 });
908
+ z.z.object({ teamId: id$2 });
909
909
  const ProjectPresenceEntrySchema = z.z.object({
910
- sessionId: id$1,
910
+ sessionId: id$2,
911
911
  title: z.z.string().max(200).nullable().optional(),
912
912
  agent: z.z.string().max(64).nullable().optional(),
913
913
  machine: z.z.string().max(200).nullable().optional(),
@@ -919,19 +919,19 @@ const ProjectPresenceEntrySchema = z.z.object({
919
919
  capabilities: z.z.array(z.z.string().max(64)).max(32).optional()
920
920
  });
921
921
  z.z.object({
922
- machineId: id$1,
922
+ machineId: id$2,
923
923
  sessions: z.z.array(ProjectPresenceEntrySchema).max(PROJECT_LIMITS.presenceBatch),
924
924
  /** Sessions of this machine that stopped; their presence rows are marked `offline`. */
925
- gone: z.z.array(id$1).max(PROJECT_LIMITS.presenceBatch).optional()
925
+ gone: z.z.array(id$2).max(PROJECT_LIMITS.presenceBatch).optional()
926
926
  });
927
927
  z.z.object({
928
- fromSessionId: id$1,
929
- toSessionId: id$1,
930
- body: boundedText(PROJECT_LIMITS.messageBytes).pipe(z.z.string().min(1))
928
+ fromSessionId: id$2,
929
+ toSessionId: id$2,
930
+ body: boundedText$1(PROJECT_LIMITS.messageBytes).pipe(z.z.string().min(1))
931
931
  });
932
932
  z.z.object({
933
- sessionId: id$1,
934
- messageIds: z.z.array(id$1).min(1).max(100)
933
+ sessionId: id$2,
934
+ messageIds: z.z.array(id$2).min(1).max(100)
935
935
  });
936
936
  z.z.object({
937
937
  full: z.z.enum(["0", "1", "true", "false"]).optional(),
@@ -1454,17 +1454,17 @@ function resolveLatestModel(table, agent, ctx) {
1454
1454
  const tier = getLatestModelTier(table, agent);
1455
1455
  if (!tier) return { model: null, newest: null, label: null, limited: false, configured: null };
1456
1456
  const catalogIds = catalogTierIds(tier, ctx.catalog);
1457
- const labels = /* @__PURE__ */ new Map();
1457
+ const labels2 = /* @__PURE__ */ new Map();
1458
1458
  const known = [];
1459
1459
  const runnable = [];
1460
1460
  for (const entry of tier.models) {
1461
1461
  if (!tierVersion(tier, entry.model)) continue;
1462
- labels.set(entry.model, entry.label ?? entry.model);
1462
+ labels2.set(entry.model, entry.label ?? entry.model);
1463
1463
  known.push(entry.model);
1464
1464
  if (entryRunnable(entry, ctx, catalogIds)) runnable.push(entry.model);
1465
1465
  }
1466
- for (const [id2, label] of catalogIds) {
1467
- if (!labels.has(id2)) labels.set(id2, label);
1466
+ for (const [id2, label2] of catalogIds) {
1467
+ if (!labels2.has(id2)) labels2.set(id2, label2);
1468
1468
  known.push(id2);
1469
1469
  runnable.push(id2);
1470
1470
  }
@@ -1488,7 +1488,7 @@ function resolveLatestModel(table, agent, ctx) {
1488
1488
  return {
1489
1489
  model,
1490
1490
  newest,
1491
- label: model ? labels.get(model) ?? model : null,
1491
+ label: model ? labels2.get(model) ?? model : null,
1492
1492
  limited: newest !== null && !sameVersion,
1493
1493
  configured: null
1494
1494
  };
@@ -1650,7 +1650,7 @@ const ATTENTION_LIMITS = {
1650
1650
  /** Open `needsOwner` items per session before the playbook asks the lead to merge or drop stale ones (§5.1 rule 6). */
1651
1651
  openPerSessionSoftCap: 5
1652
1652
  };
1653
- const ATTENTION_SOURCES = ["lead", "agent", "owner", "automation", "team"];
1653
+ const ATTENTION_SOURCES = ["lead", "agent", "owner", "automation", "team", "issue"];
1654
1654
  const ATTENTION_KINDS = ["decision", "todo", "blocked", "report", "answer", "question", "request", "pin"];
1655
1655
  const OWNER_BOARD_POST_KINDS = ["decision", "todo", "report", "answer"];
1656
1656
  const OWNER_BOARD_RESOLVE_OUTCOMES = ["done", "answered", "dropped", "superseded"];
@@ -1658,11 +1658,11 @@ const ATTENTION_BOARD_LOCAL_ID_PREFIX = "board-";
1658
1658
  function isAttentionBoardLocalId(localId) {
1659
1659
  return typeof localId === "string" && localId.startsWith(ATTENTION_BOARD_LOCAL_ID_PREFIX);
1660
1660
  }
1661
- const id = z.z.string().min(1).max(128);
1662
- const title = z.z.string().trim().min(1).max(ATTENTION_LIMITS.titleChars);
1661
+ const id$1 = z.z.string().min(1).max(128);
1662
+ const title$1 = z.z.string().trim().min(1).max(ATTENTION_LIMITS.titleChars);
1663
1663
  const bodyMd = z.z.string().max(ATTENTION_LIMITS.bodyBytes * 4).refine((v) => new TextEncoder().encode(v).length <= ATTENTION_LIMITS.bodyBytes, "body exceeds 8KB");
1664
1664
  const note = z.z.string().max(ATTENTION_LIMITS.noteChars);
1665
- const requestId = z.z.string().min(1).max(128);
1665
+ const requestId$1 = z.z.string().min(1).max(128);
1666
1666
  const key = z.z.string().min(1).max(ATTENTION_LIMITS.keyChars);
1667
1667
  const AttentionOptionSchema = z.z.object({
1668
1668
  id: z.z.string().trim().min(1).max(ATTENTION_LIMITS.optionIdChars),
@@ -1671,7 +1671,7 @@ const AttentionOptionSchema = z.z.object({
1671
1671
  recommended: z.z.boolean().optional()
1672
1672
  });
1673
1673
  const options = z.z.array(AttentionOptionSchema).min(ATTENTION_LIMITS.options.min).max(ATTENTION_LIMITS.options.max).refine((o) => new Set(o.map((x) => x.id)).size === o.length, "option ids must be unique");
1674
- const ATTENTION_LINK_TYPES = ["task", "pr", "commit", "url", "panel"];
1674
+ const ATTENTION_LINK_TYPES = ["task", "pr", "commit", "url", "panel", "issue"];
1675
1675
  const AttentionLinkSchema = z.z.object({
1676
1676
  type: z.z.enum(ATTENTION_LINK_TYPES),
1677
1677
  ref: z.z.string().trim().min(1).max(ATTENTION_LIMITS.linkRefChars),
@@ -1722,17 +1722,17 @@ z.z.object({
1722
1722
  item: AttentionItemSchema
1723
1723
  });
1724
1724
  z.z.object({
1725
- sessionId: id,
1725
+ sessionId: id$1,
1726
1726
  source: z.z.enum(ATTENTION_SOURCES),
1727
1727
  kind: z.z.enum(ATTENTION_KINDS),
1728
- title,
1728
+ title: title$1,
1729
1729
  bodyMd: bodyMd.optional(),
1730
1730
  options: options.optional(),
1731
1731
  links: links.optional(),
1732
1732
  anchor: AttentionAnchorSchema.optional(),
1733
- replyToId: id.optional(),
1733
+ replyToId: id$1.optional(),
1734
1734
  key: key.optional(),
1735
- requestId: requestId.optional(),
1735
+ requestId: requestId$1.optional(),
1736
1736
  /**
1737
1737
  * D5 draft: only the CLI's auto-detect path sets it (`owner_board_post` does
1738
1738
  * not expose it). A repost of the key with `false` confirms the draft (and
@@ -1741,7 +1741,7 @@ z.z.object({
1741
1741
  inferred: z.z.boolean().default(false)
1742
1742
  }).refine((p) => p.kind !== "decision" || p.options !== void 0, { message: "decision needs 2-4 options", path: ["options"] });
1743
1743
  z.z.object({
1744
- title: title.optional(),
1744
+ title: title$1.optional(),
1745
1745
  bodyMd: bodyMd.nullable().optional(),
1746
1746
  appendMd: bodyMd.optional(),
1747
1747
  options: options.nullable().optional(),
@@ -1750,14 +1750,14 @@ z.z.object({
1750
1750
  kind: z.z.literal("request").optional(),
1751
1751
  state: z.z.enum(["open", "in_progress", "answered"]).optional(),
1752
1752
  firstReply: AttentionAnchorSchema.optional(),
1753
- requestId: requestId.optional()
1753
+ requestId: requestId$1.optional()
1754
1754
  }).refine((p) => !(p.bodyMd !== void 0 && p.appendMd !== void 0), "use bodyMd or appendMd, not both");
1755
1755
  z.z.object({
1756
1756
  outcome: z.z.enum(OWNER_BOARD_RESOLVE_OUTCOMES),
1757
1757
  note: note.optional(),
1758
1758
  /** Defaults to `lead`. */
1759
1759
  by: z.z.enum(["lead", "auto-first-reply"]).optional(),
1760
- requestId: requestId.optional()
1760
+ requestId: requestId$1.optional()
1761
1761
  });
1762
1762
  z.z.discriminatedUnion("action", [
1763
1763
  z.z.object({ action: z.z.literal("choose"), choice: z.z.string().trim().min(1).max(ATTENTION_LIMITS.optionIdChars), note: note.optional() }),
@@ -1765,7 +1765,7 @@ z.z.discriminatedUnion("action", [
1765
1765
  z.z.object({ action: z.z.literal("reopen"), note: note.optional() })
1766
1766
  ]);
1767
1767
  z.z.object({
1768
- sessionId: id.optional(),
1768
+ sessionId: id$1.optional(),
1769
1769
  /** `open` (default) = open + in_progress; `active` adds the latest `answered`; `all` = everything. */
1770
1770
  state: z.z.enum(["open", "active", "all"]).optional(),
1771
1771
  needsOwner: z.z.enum(["1", "true", "0", "false"]).optional(),
@@ -1775,30 +1775,30 @@ z.z.object({
1775
1775
  });
1776
1776
  const OwnerBoardPostInputSchema = z.z.object({
1777
1777
  kind: z.z.enum(OWNER_BOARD_POST_KINDS),
1778
- title,
1778
+ title: title$1,
1779
1779
  body_md: bodyMd.optional(),
1780
1780
  options: options.optional(),
1781
1781
  links: links.optional(),
1782
- reply_to: id.optional(),
1782
+ reply_to: id$1.optional(),
1783
1783
  key: key.optional(),
1784
1784
  anchor: z.z.union([z.z.literal("this_turn"), z.z.object({ localId: z.z.string().min(1).max(256) })]).optional(),
1785
- request_id: requestId
1785
+ request_id: requestId$1
1786
1786
  }).refine((p) => p.kind !== "decision" || p.options !== void 0, { message: "decision needs 2-4 options", path: ["options"] });
1787
1787
  const OwnerBoardUpdateInputSchema = z.z.object({
1788
- id,
1789
- title: title.optional(),
1788
+ id: id$1,
1789
+ title: title$1.optional(),
1790
1790
  body_md: bodyMd.optional(),
1791
1791
  append_md: bodyMd.optional(),
1792
1792
  options: options.optional(),
1793
1793
  links: links.optional(),
1794
1794
  state: z.z.enum(["open", "in_progress"]).optional(),
1795
- request_id: requestId
1795
+ request_id: requestId$1
1796
1796
  }).refine((p) => !(p.body_md !== void 0 && p.append_md !== void 0), "use body_md or append_md, not both");
1797
1797
  const OwnerBoardResolveInputSchema = z.z.object({
1798
- id,
1798
+ id: id$1,
1799
1799
  outcome: z.z.enum(OWNER_BOARD_RESOLVE_OUTCOMES),
1800
1800
  note: note.optional(),
1801
- request_id: requestId
1801
+ request_id: requestId$1
1802
1802
  });
1803
1803
  const OwnerBoardListInputSchema = z.z.object({
1804
1804
  state: z.z.enum(["open", "all"]).optional(),
@@ -1821,6 +1821,173 @@ function ownerBoardPostToRest(sessionId, input, anchor) {
1821
1821
  inferred: false
1822
1822
  };
1823
1823
  }
1824
+ const ISSUE_LIMITS = {
1825
+ titleChars: 300,
1826
+ descriptionBytes: 32 * 1024,
1827
+ commentBytes: 16 * 1024,
1828
+ labels: 16,
1829
+ labelChars: 40,
1830
+ /** Distinct agents one comment may @ (each becomes a delivery or a run). */
1831
+ mentionsPerComment: 3,
1832
+ listMax: 500};
1833
+ const ISSUE_STATUSES = ["backlog", "todo", "in_progress", "in_review", "blocked", "done", "cancelled"];
1834
+ const ISSUE_PRIORITIES = ["urgent", "high", "medium", "low", "none"];
1835
+ const ISSUE_AGENT_STATUSES = ["in_progress", "in_review", "blocked"];
1836
+ const ISSUE_ASSIGNABLE_AGENTS = ["claude", "codex", "pi"];
1837
+ const ISSUE_ASSIGNEE_KINDS = ["none", "self", "agent", "team"];
1838
+ const id = z.z.string().min(1).max(128);
1839
+ const requestId = z.z.string().min(1).max(128);
1840
+ const utf8Bytes = (value) => new TextEncoder().encode(value).length;
1841
+ const boundedText = (maxBytes) => z.z.string().max(maxBytes).refine((v) => utf8Bytes(v) <= maxBytes, `exceeds ${maxBytes} bytes`);
1842
+ const title = z.z.string().trim().min(1).max(ISSUE_LIMITS.titleChars);
1843
+ const description = boundedText(ISSUE_LIMITS.descriptionBytes);
1844
+ const commentBody = boundedText(ISSUE_LIMITS.commentBytes).pipe(z.z.string().trim().min(1));
1845
+ const label = z.z.string().trim().min(1).max(ISSUE_LIMITS.labelChars);
1846
+ const labels = z.z.array(label).max(ISSUE_LIMITS.labels);
1847
+ const epochMs = z.z.number().int().min(0).max(864e13);
1848
+ const IssueAgentAssigneeSchema = z.z.object({
1849
+ kind: z.z.literal("agent"),
1850
+ machineId: id,
1851
+ agent: z.z.enum(ISSUE_ASSIGNABLE_AGENTS),
1852
+ agentProfile: AgentProfileChoiceSchema.optional(),
1853
+ model: z.z.string().trim().min(1).max(256).nullable().optional(),
1854
+ permissionMode: z.z.string().trim().min(1).max(64).nullable().optional(),
1855
+ directory: z.z.string().min(1).max(4096).optional(),
1856
+ /** Reserved: run each issue in its own worktree (team-style). Phase 1 servers store it; the daemon ignores it until spec §3.6 lands. */
1857
+ worktree: z.z.boolean().optional()
1858
+ });
1859
+ const IssueAssigneeSchema = z.z.discriminatedUnion("kind", [
1860
+ z.z.object({ kind: z.z.literal("none") }),
1861
+ z.z.object({ kind: z.z.literal("self") }),
1862
+ IssueAgentAssigneeSchema,
1863
+ /** Phase 3; accepted by the schema so the contract is stable, refused by a phase-1 server. */
1864
+ z.z.object({ kind: z.z.literal("team"), teamId: id })
1865
+ ]);
1866
+ const IssueMentionSchema = z.z.discriminatedUnion("kind", [
1867
+ z.z.object({ kind: z.z.literal("agent"), agent: z.z.enum(ISSUE_ASSIGNABLE_AGENTS), machineId: id.optional() }),
1868
+ /** Written by the server from an agent's `issue_comment({ mention_owner: true })`; a client may not send it. */
1869
+ z.z.object({ kind: z.z.literal("owner") })
1870
+ ]);
1871
+ const humanMentions = z.z.array(IssueMentionSchema).max(ISSUE_LIMITS.mentionsPerComment).refine((list) => list.every((m) => m.kind === "agent"), "only agent mentions may be sent");
1872
+ z.z.object({
1873
+ title,
1874
+ description: description.optional(),
1875
+ /** Default: `todo` when assigned to an agent, otherwise `backlog`. */
1876
+ status: z.z.enum(ISSUE_STATUSES).optional(),
1877
+ priority: z.z.enum(ISSUE_PRIORITIES).optional(),
1878
+ assignee: IssueAssigneeSchema.optional(),
1879
+ projectId: id.nullable().optional(),
1880
+ labels: labels.optional(),
1881
+ dueAt: epochMs.nullable().optional(),
1882
+ parentId: id.nullable().optional(),
1883
+ /** Idempotency: the same requestId returns the issue it created. */
1884
+ requestId: requestId.optional()
1885
+ });
1886
+ z.z.object({
1887
+ title: title.optional(),
1888
+ description: description.optional(),
1889
+ status: z.z.enum(ISSUE_STATUSES).optional(),
1890
+ priority: z.z.enum(ISSUE_PRIORITIES).optional(),
1891
+ assignee: IssueAssigneeSchema.optional(),
1892
+ projectId: id.nullable().optional(),
1893
+ labels: labels.optional(),
1894
+ dueAt: epochMs.nullable().optional(),
1895
+ parentId: id.nullable().optional(),
1896
+ /** Fractional board order within a status column. */
1897
+ sortOrder: z.z.number().finite().optional(),
1898
+ ifVersion: z.z.number().int().min(1).optional()
1899
+ });
1900
+ z.z.object({
1901
+ body: commentBody,
1902
+ mentions: humanMentions.optional(),
1903
+ /** A session this comment quotes / refers to (shown as a chip). */
1904
+ refSessionId: id.optional(),
1905
+ requestId: requestId.optional()
1906
+ });
1907
+ z.z.object({
1908
+ assignee: IssueAgentAssigneeSchema.optional(),
1909
+ /** Also make it the issue's assignee (換 agent). */
1910
+ reassign: z.z.boolean().optional(),
1911
+ requestId: requestId.optional()
1912
+ });
1913
+ z.z.object({ archiveSession: z.z.boolean().optional() });
1914
+ z.z.object({});
1915
+ z.z.object({
1916
+ status: z.z.string().max(200).optional(),
1917
+ projectId: id.optional(),
1918
+ assigneeKind: z.z.enum(ISSUE_ASSIGNEE_KINDS).optional(),
1919
+ label: label.optional(),
1920
+ priority: z.z.string().max(100).optional(),
1921
+ q: z.z.string().max(200).optional(),
1922
+ updatedSince: z.z.coerce.number().int().min(0).optional(),
1923
+ includeDeleted: z.z.enum(["0", "1", "true", "false"]).optional(),
1924
+ limit: z.z.coerce.number().int().min(1).max(ISSUE_LIMITS.listMax).optional(),
1925
+ cursor: z.z.string().max(256).optional()
1926
+ });
1927
+ z.z.object({
1928
+ sessionId: id,
1929
+ status: z.z.enum(ISSUE_AGENT_STATUSES).optional(),
1930
+ comment: commentBody.optional(),
1931
+ requestId: requestId.optional()
1932
+ }).refine((v) => v.status !== void 0 || v.comment !== void 0, "status or comment required");
1933
+ z.z.object({
1934
+ sessionId: id,
1935
+ body: commentBody,
1936
+ mentionOwner: z.z.boolean().optional(),
1937
+ requestId: requestId.optional()
1938
+ });
1939
+ z.z.object({
1940
+ machineId: id,
1941
+ workerVersion: z.z.coerce.number().int().min(1)
1942
+ });
1943
+ z.z.object({ machineId: id });
1944
+ z.z.object({
1945
+ machineId: id,
1946
+ claimId: id,
1947
+ /** `spawn`: the new session. `message`: the session it was delivered to. */
1948
+ sessionId: id
1949
+ });
1950
+ z.z.object({
1951
+ machineId: id,
1952
+ claimId: id,
1953
+ error: z.z.string().min(1).max(4e3),
1954
+ /** True when the outcome is unknown (e.g. timeout after the spawn RPC); the server keeps the run `claimed` for owner retry instead of failing it. */
1955
+ unknown: z.z.boolean().optional()
1956
+ });
1957
+ z.z.object({
1958
+ machineId: id,
1959
+ sessionId: id,
1960
+ event: z.z.enum(["running", "idle", "exited", "crashed"])
1961
+ });
1962
+ z.z.object({
1963
+ /** `VH-12` / id; absent = the issue this session is bound to. */
1964
+ issue: z.z.string().min(1).max(128).optional()
1965
+ });
1966
+ z.z.object({
1967
+ status: z.z.enum(ISSUE_AGENT_STATUSES).optional(),
1968
+ comment: z.z.string().min(1).max(ISSUE_LIMITS.commentBytes).optional()
1969
+ }).refine((v) => v.status !== void 0 || v.comment !== void 0, "status or comment required");
1970
+ z.z.object({
1971
+ body: z.z.string().min(1).max(ISSUE_LIMITS.commentBytes),
1972
+ mention_owner: z.z.boolean().optional()
1973
+ });
1974
+ z.z.object({
1975
+ status: z.z.array(z.z.enum(ISSUE_STATUSES)).max(ISSUE_STATUSES.length).optional(),
1976
+ project: z.z.enum(["current", "any"]).optional(),
1977
+ limit: z.z.number().int().min(1).max(50).optional()
1978
+ });
1979
+ z.z.object({
1980
+ t: z.z.literal("issue"),
1981
+ issue: z.z.object({ id: z.z.string(), version: z.z.number() }).passthrough()
1982
+ });
1983
+ z.z.object({
1984
+ t: z.z.literal("issue-comment"),
1985
+ comment: z.z.object({ id: z.z.string(), issueId: z.z.string() }).passthrough()
1986
+ });
1987
+ z.z.object({
1988
+ t: z.z.literal("issue-run"),
1989
+ run: z.z.object({ id: z.z.string(), issueId: z.z.string(), status: z.z.string() }).passthrough()
1990
+ });
1824
1991
  const SYNC_HELLO_MAX_REQUEST_SUBS = 64;
1825
1992
  const sessionIdSchema = z__namespace.string().min(1).max(128);
1826
1993
  const afterSeqSchema = z__namespace.number().int().min(0).nullable();