@overdeck/desktop 0.49.1 → 0.50.0

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 (545) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +1 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-Crw-xSJ3.js → acceptance-criteria-B_maCGZv.js} +2 -2
  4. package/server/{active-dashboard-bundle-CLwfD-Om.js → active-dashboard-bundle-CCqpFWiz.js} +2 -2
  5. package/server/activity-logger-B0X2JJwM.js +3 -0
  6. package/server/{activity-logger-BAVLrkR7.js → activity-logger-SlTXYCVf.js} +22 -4
  7. package/server/{advancing-selfheal-BQiJ7mIH.js → advancing-selfheal-BJAfiY-C.js} +12 -7
  8. package/server/{agent-gc-5E0lgxI1.js → agent-gc-bhikjoJ_.js} +11 -11
  9. package/server/agent-idle-D-UQ7gDv.js +745 -0
  10. package/server/agent-state-BrUPf_7Z.js +3 -0
  11. package/server/{agent-state-Bb3UUxQm.js → agent-state-FABw8neJ.js} +682 -454
  12. package/server/{agent-state-service-keg-x1bT.js → agent-state-service-BAQApt97.js} +1 -1
  13. package/server/{agent-state-service-BFbttwRA.js → agent-state-service-rDenYSlD.js} +5 -5
  14. package/server/agents-DixZjXWm.js +3 -0
  15. package/server/{agents-CqQJW75N.js → agents-DzpQidT8.js} +8 -8
  16. package/server/{archive-planning-BwEhu9Oq.js → archive-planning-BL1ABtW0.js} +20 -135
  17. package/server/archive-planning-D3gw32U9.js +2 -0
  18. package/server/{artifact-index-jobs-C6Lg2rKm.js → artifact-index-jobs-Cjdme0jS.js} +3 -3
  19. package/server/{assemble-DyTp2gSB.js → assemble-B_JgnCbG.js} +28 -9
  20. package/server/{auto-spawn-consent-BDfe4qz0.js → auto-spawn-consent-BesWchEi.js} +8 -7
  21. package/server/{backlog-auto-trigger-DuOGpdDW.js → backlog-auto-trigger-COLq639j.js} +3 -3
  22. package/server/{behavior-Bitko0mD.js → behavior-DCg8CIWC.js} +3 -3
  23. package/server/{bridge-pool-patrol-DiHEd13O.js → bridge-pool-patrol-BDohuMRt.js} +2 -2
  24. package/server/{briefing-freshness-CDJcmHHZ.js → briefing-freshness-ENa_hW_V.js} +2 -2
  25. package/server/build-info-Dx2qrVhb.js +2 -0
  26. package/server/{build-info-DTX8JwVP.js → build-info-WuZT6xyi.js} +3 -3
  27. package/server/{checkpoint-manager-BlOOdzLF.js → checkpoint-manager-CSZ7aVQF.js} +26 -9
  28. package/server/{checkpoint-manager-CKg1tn34.js → checkpoint-manager-DXhGRvg4.js} +1 -1
  29. package/server/checkpoint-worker.js +1 -1
  30. package/server/{checkpoints-BGfl0cHM.js → checkpoints-DUkUsPVS.js} +2 -2
  31. package/server/{checkpoints-DRALkfDS.js → checkpoints-tm_w6Y4V.js} +1 -1
  32. package/server/{claude-hooks-provision-B_tv3wzE.js → claude-hooks-provision-CTh9zxEi.js} +1 -1
  33. package/server/{claude-hooks-provision-BlGv6twJ.js → claude-hooks-provision-fRofvhTN.js} +2 -2
  34. package/server/{claude-permissions-aHgDcZi5.js → claude-permissions-DLrb9ovz.js} +18 -3
  35. package/server/{claude-settings-overlay-T2LWLteV.js → claude-settings-overlay-BYnXaTVc.js} +2 -2
  36. package/server/{claude-settings-overlay-CYOvFE3A.js → claude-settings-overlay-CMS5Jab5.js} +1 -1
  37. package/server/cli-BflmtEFM.js +2 -0
  38. package/server/{cli-Do8UpLoI.js → cli-CoQou1t_.js} +11 -11
  39. package/server/{cliproxy-CX6jHRDP.js → cliproxy-DXDQcR3I.js} +52 -17
  40. package/server/cliproxy-DdhFpcXU.js +3 -0
  41. package/server/{close-issue-J0_eWYT1.js → close-issue-CpQ0BWg-.js} +5 -5
  42. package/server/{closed-issue-reaper-bFppuk6F.js → closed-issue-reaper-CdcJRvUx.js} +13 -12
  43. package/server/{closed-issue-reaper-Cl2h9AfT.js → closed-issue-reaper-TymtZM37.js} +1 -1
  44. package/server/{codex-icapA4om.js → codex-BValsmtK.js} +1 -1
  45. package/server/{codex-OOea7lXs.js → codex-DYyZL8JD.js} +16 -10
  46. package/server/{compaction-continuation-D5voR1ME.js → compaction-continuation-CVjbdGKt.js} +3 -3
  47. package/server/{config-Cjleh3_U.js → config-CvKH7r7W.js} +1 -1
  48. package/server/{config-tucKBCCc.js → config-NxI9Yl2f.js} +2 -2
  49. package/server/{config-DC75T4Mr.js → config-_qaa1UXH.js} +2 -2
  50. package/server/{config-yaml-BwOEANMr.js → config-yaml-D60AnTIu.js} +55 -15
  51. package/server/{conflict-gate-DlpWCMd7.js → conflict-gate-0dD1kxjN.js} +1 -1
  52. package/server/{conflict-gate-D2L1kZeL.js → conflict-gate-hAUCL-un.js} +5 -5
  53. package/server/{context-layers-CSPGc2Hb.js → context-layers-CdpabJj0.js} +3 -3
  54. package/server/context-layers-Ds1MnEFI.js +4 -0
  55. package/server/{continue-U3Af0jUq.js → continue-CnvrUfxw.js} +3 -3
  56. package/server/{control-settings-5k6ixdFW.js → control-settings-Db0uXgVM.js} +310 -7
  57. package/server/{conversation-compaction-CSpVpxN6.js → conversation-compaction-B-1KETG9.js} +8 -8
  58. package/server/{conversation-compaction-Ciit9O6k.js → conversation-compaction-DzMXGRiJ.js} +1 -1
  59. package/server/{conversation-service-BxrB5lUT.js → conversation-service-BL-asWPX.js} +1 -1
  60. package/server/{conversation-service-BteE4ELK.js → conversation-service-BxIOd5ay.js} +21 -7
  61. package/server/conversations-CEMfwMt-.js +3 -0
  62. package/server/{conversations-DhwxsOru.js → conversations-nS6QgYpD.js} +12 -7
  63. package/server/cost-3FyqKK56.js +838 -0
  64. package/server/{cost-Bnf9NUC5.js → cost-Cctc-Q9M.js} +3 -3
  65. package/server/{cost-CQKI6OCu.js → cost-DTuIRE4y.js} +2 -2
  66. package/server/{cost-sync-B-ADeXKY.js → cost-sync-DfmvLT9L.js} +3 -3
  67. package/server/{dag-DI9LaK_q.js → dag-o-dUpw1L.js} +6 -19
  68. package/server/{dangerous-git-ops-akhA3iyF.js → dangerous-git-ops-BOtXCFkT.js} +1 -1
  69. package/server/dashboard-db-worker.js +61 -11
  70. package/server/{deacon-TPYssFYt.js → deacon-CsisLmPt.js} +1735 -172
  71. package/server/{deacon-canonical-state-DFYymrDw.js → deacon-canonical-state-DkdkQS5p.js} +3 -3
  72. package/server/deacon-e6py3jkM.js +4 -0
  73. package/server/{deacon-event-client-Te5v10-b.js → deacon-event-client-BCjHiGAY.js} +1 -1
  74. package/server/{deacon-event-client-BKOL4AcL.js → deacon-event-client-CMQswEHX.js} +2 -2
  75. package/server/{deacon-nudge-log-BtlTWgWu.js → deacon-nudge-log-pcliw8Dr.js} +1 -1
  76. package/server/{deacon-pending-lifecycle-DVHjOLje.js → deacon-pending-lifecycle-BzaE76Xo.js} +3 -3
  77. package/server/deacon.js +11 -11
  78. package/server/{dead-end-trip-P0IF1O0E.js → dead-end-trip-Bs3hxIn6.js} +3 -3
  79. package/server/dead-end-trip-DUbiRMtT.js +2 -0
  80. package/server/delivery-DhZGRShH.js +3 -0
  81. package/server/{deploy-patrol-BXjlvoV3.js → deploy-patrol-B8sKkA8h.js} +8 -8
  82. package/server/deploy-queue--smqHLhe.js +2 -0
  83. package/server/{deploy-queue-o7shYg1j.js → deploy-queue-CCGWXFkp.js} +2 -2
  84. package/server/{deploy-window-CNT6fOff.js → deploy-window-YuJewzmC.js} +4 -4
  85. package/server/{deploy-window-BMk5_oX6.js → deploy-window-hgsvZ3UZ.js} +1 -1
  86. package/server/{dev-supervisor-SR1CLOAK.js → dev-supervisor-4SBloJHV.js} +2 -2
  87. package/server/{devcontainer-renderer-enMmNDFa.js → devcontainer-renderer-BiJhwFNi.js} +3 -3
  88. package/server/{dist-CPTO_zMR.js → dist-CoR2sivG.js} +1 -1
  89. package/server/dist-FHv1s5ez.js +3 -0
  90. package/server/{docker-B7qUZptz.js → docker-CWO7dcIP.js} +3 -3
  91. package/server/{docker-KR3zSFKY.js → docker-DQzyMXkd.js} +1 -1
  92. package/server/{dod-gK835UMf.js → dod-BAk5arLF.js} +1 -1
  93. package/server/{done-preflight-CksRvh49.js → done-preflight-CGFA0M1b.js} +1 -1
  94. package/server/{done-preflight-Bk8aExAL.js → done-preflight-Cx9JGznT.js} +5 -5
  95. package/server/{driver-CmsY2RLl.js → driver-BtcFz-qu.js} +14 -3
  96. package/server/durable-review-pipeline-BOEZ0chh.js +3 -0
  97. package/server/{durable-review-pipeline-DgYHucN2.js → durable-review-pipeline-Djx_lvFd.js} +11 -2
  98. package/server/{ensure-devcontainer-BQ4YizSH.js → ensure-devcontainer-Dk6ZMOUC.js} +1 -1
  99. package/server/{ensure-devcontainer-ojerEqQg.js → ensure-devcontainer-DzYBBwnM.js} +4 -4
  100. package/server/{esm-shims-1htPASWs.js → esm-shims-deFq5Hhl.js} +1 -1
  101. package/server/{event-store-BgEjNsvk.js → event-store-C50Qt-f1.js} +1 -1
  102. package/server/{event-store-D7qcJXuZ.js → event-store-DTns2XZP.js} +5 -5
  103. package/server/{event-store-provider-BKvk2rDj.js → event-store-provider-Bu1Qrg6v.js} +1 -1
  104. package/server/{events-BIKGJZOT.js → events-B6xW8Cpm.js} +3 -3
  105. package/server/{dist-src-BM9eudEd.js → factory-CWVKwKFE.js} +714 -2
  106. package/server/{feature-registry-storage-ewNSIVsQ.js → feature-registry-storage-vaxRN3WO.js} +3 -3
  107. package/server/{features-CGopJXdU.js → features-DXWwktJB.js} +2 -2
  108. package/server/{feedback-stuck-retirement-B8-fX7NA.js → feedback-stuck-retirement-CXAYe2rU.js} +2 -2
  109. package/server/{feedback-target-CkyLYohm.js → feedback-target-DSVpi0gT.js} +1 -1
  110. package/server/{feedback-target-Ci6N5p4G.js → feedback-target-yPD_wclF.js} +10 -10
  111. package/server/{feedback-writer-DfuVjvH0.js → feedback-writer-BzN4qvaP.js} +1 -1
  112. package/server/{feedback-writer-D4ULO4qG.js → feedback-writer-Ds1Wjsz4.js} +5 -5
  113. package/server/{flywheel-DXI_WITn.js → flywheel-BCZS-FlW.js} +1 -1
  114. package/server/{flywheel-BwYPDlhK.js → flywheel-CC4gE_rx.js} +15 -15
  115. package/server/{flywheel-C7yek87O.js → flywheel-DWKd7bMc.js} +79 -29
  116. package/server/{flywheel-merge-order-C5m5bYBc.js → flywheel-merge-order-DDT3i57u.js} +1 -1
  117. package/server/{flywheel-merge-order-CXfU4M6l.js → flywheel-merge-order-DJwH2KpL.js} +17 -15
  118. package/server/forge-4VVCRcF7.js +2 -0
  119. package/server/{forge-DYX9sKzG.js → forge-CHADjOFs.js} +2 -2
  120. package/server/{from-DAdMxC29.js → from-C3dzmjSO.js} +1 -1
  121. package/server/{fs-lock-cw25uO_E.js → fs-lock-DQ_gUxfq.js} +2 -2
  122. package/server/{fts-operations-D_rzLxX5.js → fts-operations-asZo2fh1.js} +3 -3
  123. package/server/git-info-DMOSfJ9I.js +148 -0
  124. package/server/{git-utils-Y0zG25ez.js → git-utils-BAMwn9Nf.js} +1 -1
  125. package/server/{git-utils-DV4B9TRl.js → git-utils-BdHk8y7g.js} +4 -4
  126. package/server/{github-app-C33lDk9Z.js → github-app-BWziYCf3.js} +1 -1
  127. package/server/{github-app-4UX8VIr8.js → github-app-BlMSzSTw.js} +2 -2
  128. package/server/{github-client-nPj5ckZO.js → github-client-OK24qpol.js} +1 -1
  129. package/server/{github-client-DkJVR908.js → github-client-w6j5nVlz.js} +3 -3
  130. package/server/{github-pr-lookup-C9Vokb0W.js → github-pr-lookup-bGcsEvLE.js} +2 -2
  131. package/server/{harness-binary-BgXYDo2Z.js → harness-binary-DChiynaB.js} +2 -2
  132. package/server/{harness-resolve-1NZcVx7n.js → harness-resolve-BplBEbwn.js} +4 -4
  133. package/server/{health-events-jMfxrElt.js → health-events-BTqsmunw.js} +1 -1
  134. package/server/{health-events-DlX_FVAB.js → health-events-Bk3LjaJ9.js} +2 -2
  135. package/server/{hooks-NQ19vvlB.js → hooks-DJR1yR9w.js} +2 -2
  136. package/server/{hooks-W3REcb3h.js → hooks-EndRNrx9.js} +1 -1
  137. package/server/{hume-BFkid2PO.js → hume-1FJmNDTq.js} +2 -2
  138. package/server/hume-gXLmRhmN.js +3 -0
  139. package/server/{identity-Bwh6VGeL.js → identity-C3s8lyp0.js} +3 -3
  140. package/server/{idle-stack-reaper-CHtCNpvd.js → idle-stack-reaper-CBelVOE3.js} +1 -1
  141. package/server/{idle-stack-reaper-BeU_KxWx.js → idle-stack-reaper-DtoI4al6.js} +4 -4
  142. package/server/{in-flight-guard-pcwXKLGz.js → in-flight-guard-B7khcBdQ.js} +1 -1
  143. package/server/{infra-KTp9KV9u.js → infra-CJRi_5Wu.js} +36 -7
  144. package/server/{injection-67YyU6SC.js → injection-ADWQ3D0s.js} +8 -8
  145. package/server/{injection-BxbZKPDh.js → injection-BWsgHvrL.js} +1 -1
  146. package/server/{inspect-agent-VHSihlb7.js → inspect-agent-CCfNJjKr.js} +12 -12
  147. package/server/inspect-agent-Dhp3hCGp.js +2 -0
  148. package/server/{internal-token-B-z-sGBH.js → internal-token-BCTEqUCX.js} +1 -1
  149. package/server/{internal-token-zY75jrRJ.js → internal-token-BeIWG_kT.js} +2 -2
  150. package/server/{io-DfvO2xyh.js → io-BCtZoXHo.js} +5 -5
  151. package/server/{issue-closed-dvEWKO7Q.js → issue-closed-CiYAa6bX.js} +7 -7
  152. package/server/{issue-lifecycle-3N8XF7lP.js → issue-lifecycle-BETNVVLq.js} +206 -29
  153. package/server/{issue-lifecycle-BI6jAfp8.js → issue-lifecycle-DaKN57sx.js} +1 -1
  154. package/server/{issue-service-singleton-CL6hESX2.js → issue-service-singleton-1Q0ER8Yc.js} +1 -1
  155. package/server/{issue-service-singleton-BN_2MXp4.js → issue-service-singleton-C_sZ0HjP.js} +124 -11
  156. package/server/issue-title-fallback-B91iD66g.js +120 -0
  157. package/server/{issues-CkvUoAnq.js → issues-RGHQUKhB.js} +2 -2
  158. package/server/{jsonl-parser-CrEb2PWr.js → jsonl-parser-Dfs1dlYE.js} +3 -3
  159. package/server/jsonl-resolver-bFtftCDd.js +324 -0
  160. package/server/{kimi-code-DoMoGqIu.js → kimi-code-BxkDgaj4.js} +1 -1
  161. package/server/{kimi-code-C26gmGxM.js → kimi-code-CNYRA8Dd.js} +14 -12
  162. package/server/{kimi-parser-Dmhy3UlR.js → kimi-parser-OcWwmOqF.js} +2 -2
  163. package/server/{label-cleanup-X2lWfghH.js → label-cleanup-CefxK9tL.js} +3 -3
  164. package/server/{lifecycle-B0rL38D3.js → lifecycle-DDZ7w-BY.js} +6 -6
  165. package/server/{lifecycle-Bg44O-9x.js → lifecycle-DVXyUil2.js} +2 -2
  166. package/server/{lifecycle-io-DQDU0apV.js → lifecycle-io-D1oBiMce.js} +1 -1
  167. package/server/{lifecycle-io-CCBpRv5m.js → lifecycle-io-D7N0vQNj.js} +5 -5
  168. package/server/{linear-client-B0cIkTs4.js → linear-client-DUN7zCeb.js} +3 -3
  169. package/server/{linear-client-6V2E-DSa.js → linear-client-TL32snOy.js} +1 -1
  170. package/server/{linear-mcp-auth-LCo9AWUd.js → linear-mcp-auth-CtRKSHy5.js} +1 -1
  171. package/server/{linear-mcp-auth-Dsu9Io9r.js → linear-mcp-auth-bB0CPyjh.js} +5 -5
  172. package/server/memory-fts-worker.js +1 -1
  173. package/server/{memory-governor-A4O6vI9d.js → memory-governor-Cvv_9K0M.js} +88 -22
  174. package/server/{memory-pressure-patrol-BWlWywmA.js → memory-pressure-patrol-C6DJJQRA.js} +38 -14
  175. package/server/{merge-BGWcBxku.js → merge-DOCR6pHi.js} +1 -1
  176. package/server/{merge-vz80RvSE.js → merge-FTk4LsnM.js} +3 -3
  177. package/server/{merge-agent-GWhmnxFk.js → merge-agent-C-dsN9se.js} +37 -33
  178. package/server/{merge-agent-BRSz26Oh.js → merge-agent-D-4_iQgy.js} +2 -2
  179. package/server/{merge-batch-CFMEtTxv.js → merge-batch-BJjzUUL7.js} +1 -1
  180. package/server/{merge-completeness-CP347umA.js → merge-completeness-BOtBUwTU.js} +4 -4
  181. package/server/{merge-completeness-7ajHAIR-.js → merge-completeness-CoLJxfUY.js} +1 -1
  182. package/server/merge-eligibility-C4rTS97F.js +3 -0
  183. package/server/merge-eligibility-D7wRnJbj.js +51 -0
  184. package/server/merge-ops-Cf02szJ5.js +2 -0
  185. package/server/merge-rebase-Bj7eJAG4.js +2 -0
  186. package/server/{merge-rebase-C5htyEEH.js → merge-rebase-KBw4rdh3.js} +2 -2
  187. package/server/{merge-set-DsGW8fmc.js → merge-set-CVfEM57p.js} +1 -1
  188. package/server/{merge-set-eiE2nC6C.js → merge-set-CyW-xSn4.js} +4 -4
  189. package/server/{merge-sync-CM2-myXu.js → merge-sync-CYGsJy0u.js} +1 -1
  190. package/server/{merge-sync-Ct0-cxMX.js → merge-sync-YLvOPAry.js} +2 -2
  191. package/server/{merge-train-BOu3fN7O.js → merge-train-VxLn8Ms4.js} +4 -4
  192. package/server/{merge-train-deps-LXHGK61n.js → merge-train-deps-D0y4hBB9.js} +4 -4
  193. package/server/{merge-verification-BRp08IzI.js → merge-verification-BfJRNMiD.js} +6 -6
  194. package/server/{merged-docker-cleanup-worker-CwldDjHV.js → merged-docker-cleanup-worker-Bh5fKG_b.js} +4 -4
  195. package/server/{merged-docker-cleanup-worker-C8eGn78a.js → merged-docker-cleanup-worker-Ci9oeFAe.js} +1 -1
  196. package/server/messaging-Dfbhgjd6.js +3 -0
  197. package/server/{multipart-parser-OAuW7824.js → multipart-parser-BYwfKOVU.js} +2 -2
  198. package/server/{no-resume-mode-MWI6pnrK.js → no-resume-mode-DjMQRkId.js} +1 -1
  199. package/server/node_modules/.package-lock.json +24 -24
  200. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/AGENTS.md +14 -0
  201. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/CLAUDE.md +14 -0
  202. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +10 -3
  203. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/package.json +2 -2
  204. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/10_basics.ts +175 -0
  205. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/index.md +6 -0
  206. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/10_basics.ts +3 -1
  207. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/20_testing.ts +100 -0
  208. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/api/Users.ts +30 -14
  209. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/domain/User.ts +15 -6
  210. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +11 -10
  211. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +41 -32
  212. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users.ts +141 -20
  213. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +31 -5
  214. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
  215. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +10 -9
  216. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
  217. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.d.ts.map +1 -1
  218. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js +12 -9
  219. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js.map +1 -1
  220. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js +1 -1
  221. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js.map +1 -1
  222. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js +4 -4
  223. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js.map +1 -1
  224. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.d.ts.map +1 -1
  225. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js +10 -4
  226. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js.map +1 -1
  227. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts +4 -0
  228. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts.map +1 -0
  229. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js +10 -0
  230. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js.map +1 -0
  231. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +7 -7
  232. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +16 -11
  233. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeClusterSocket.ts +15 -12
  234. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocket.ts +1 -1
  235. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocketServer.ts +4 -4
  236. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeStream.ts +10 -4
  237. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/internal/nodeChildProcessSpawner.ts +16 -0
  238. package/server/node_modules/@types/node/README.md +1 -1
  239. package/server/node_modules/@types/node/buffer.buffer.d.ts +5 -5
  240. package/server/node_modules/@types/node/crypto.d.ts +2 -2
  241. package/server/node_modules/@types/node/http.d.ts +16 -0
  242. package/server/node_modules/@types/node/http2.d.ts +10 -2
  243. package/server/node_modules/@types/node/package.json +2 -2
  244. package/server/node_modules/@types/node/process.d.ts +52 -0
  245. package/server/node_modules/@types/node/quic.d.ts +210 -28
  246. package/server/node_modules/@types/node/sqlite.d.ts +6 -2
  247. package/server/node_modules/@types/node/test.d.ts +36 -0
  248. package/server/node_modules/ansi-regex/index.js +3 -2
  249. package/server/node_modules/ansi-regex/package.json +1 -1
  250. package/server/node_modules/effect/node_modules/uuid/README.md +19 -19
  251. package/server/node_modules/effect/node_modules/uuid/dist/v1.js +7 -3
  252. package/server/node_modules/effect/node_modules/uuid/dist/v7.js +5 -2
  253. package/server/node_modules/effect/node_modules/uuid/dist-node/v1.js +7 -3
  254. package/server/node_modules/effect/node_modules/uuid/dist-node/v7.js +5 -2
  255. package/server/node_modules/effect/node_modules/uuid/package.json +4 -3
  256. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  257. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  258. package/server/node_modules/gaxios/package.json +3 -3
  259. package/server/node_modules/msgpackr/dist/index-no-eval.cjs +11 -5
  260. package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
  261. package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
  262. package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
  263. package/server/node_modules/msgpackr/dist/index.js +11 -5
  264. package/server/node_modules/msgpackr/dist/index.js.map +1 -1
  265. package/server/node_modules/msgpackr/dist/index.min.js +1 -1
  266. package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
  267. package/server/node_modules/msgpackr/dist/node.cjs +11 -5
  268. package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
  269. package/server/node_modules/msgpackr/dist/test.js +11 -5
  270. package/server/node_modules/msgpackr/dist/test.js.map +1 -1
  271. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +11 -5
  272. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
  273. package/server/node_modules/msgpackr/package.json +1 -1
  274. package/server/node_modules/msgpackr/unpack.js +11 -5
  275. package/server/node_modules/picomatch/lib/parse.js +10 -1
  276. package/server/node_modules/picomatch/lib/scan.js +30 -18
  277. package/server/node_modules/picomatch/package.json +1 -1
  278. package/server/{orphan-proposed-reconciler-BAE5AZ_e.js → orphan-proposed-reconciler-CnP0K2v3.js} +2 -2
  279. package/server/{orphan-proposed-reconciler-cV3URUqk.js → orphan-proposed-reconciler-nFUlquZt.js} +24 -23
  280. package/server/package-lock.json +25 -25
  281. package/server/package.json +1 -1
  282. package/server/{pan-dir-DDd91kMb.js → pan-dir-B4NfzOf3.js} +5 -5
  283. package/server/{deacon-merge-BOGFEV8_.js → parked-residue-8WbU0y1z.js} +188 -69
  284. package/server/{paths-CRLnDgcI.js → paths-rETQhTF2.js} +2 -2
  285. package/server/{pending-lifecycle-claim-CYgMiDAP.js → pending-lifecycle-claim-yAwDuGS4.js} +2 -2
  286. package/server/{pickup-BjJsSX12.js → pickup-Dle6k9Xt.js} +1 -1
  287. package/server/{pipeline-agent-reader-BLc43dVJ.js → pipeline-agent-reader-CeWhQzXC.js} +5 -5
  288. package/server/{pipeline-membership-BHZp_ShY.js → pipeline-membership-BV4hdkHm.js} +1 -1
  289. package/server/{pipeline-membership-5qlRz5Qg.js → pipeline-membership-C9ykcjsn.js} +1 -1
  290. package/server/{pipeline-membership-gather-CGFY1v-y.js → pipeline-membership-gather-Ba0wJNCR.js} +17 -12
  291. package/server/{pipeline-membership-gather-WhRc1yke.js → pipeline-membership-gather-C9E22B2W.js} +1 -1
  292. package/server/{pipeline-notifier-C4fZ2ito.js → pipeline-notifier-B5DPXvnr.js} +1 -1
  293. package/server/{pipeline-notifier-BmsLWM_2.js → pipeline-notifier-p190L97e.js} +2 -2
  294. package/server/{post-merge-lifecycle-worker-KK1RTKRE.js → post-merge-lifecycle-worker-OQoK8Ckg.js} +3 -3
  295. package/server/{post-merge-state-_Lj3LDLh.js → post-merge-state-DFaf7OI1.js} +4 -4
  296. package/server/prd-locations-F2oLSAhy.js +124 -0
  297. package/server/{project-pipelines-CCkebHOu.js → project-pipelines-CUsa6U59.js} +2 -2
  298. package/server/project-repos-BVdi9-ch.js +3 -0
  299. package/server/{project-repos-B4MK48j4.js → project-repos-CsfvLtmr.js} +29 -3
  300. package/server/project-resource-refresh-queue-BehrH4Ai.js +865 -0
  301. package/server/project-resource-refresh-queue-D2110Guc.js +2 -0
  302. package/server/{projects-DvPEAP18.js → projects-BMuEf14J.js} +1 -1
  303. package/server/{prompts-BiS5I2tZ.js → prompts-CKpDt8Jn.js} +2 -2
  304. package/server/providers-Buv2wmFU.js +3 -0
  305. package/server/{providers-DrfK0Ip8.js → providers-CxPKmyif.js} +7 -7
  306. package/server/public/assets/{chunk-BO2N2NFS-GtVe_o56.js → chunk-BO2N2NFS-DZOQVqV1.js} +4 -4
  307. package/server/public/assets/{diagram-OG6HWLK6-BvhcYYHc.js → diagram-OG6HWLK6-oKeXcbO1.js} +1 -1
  308. package/server/public/assets/{dist-CSmUXazd.js → dist-2qPmeRzT.js} +3 -3
  309. package/server/public/assets/{dist-D0ryefak.js → dist-ClBlE-Nm.js} +1 -1
  310. package/server/public/assets/{ganttDiagram-6RSMTGT7-BXA51DzM.js → ganttDiagram-6RSMTGT7-BwdG9fQv.js} +1 -1
  311. package/server/public/assets/{highlighted-body-OFNGDK62-mlV4EpWt.js → highlighted-body-OFNGDK62-BzGNdskQ.js} +1 -1
  312. package/server/public/assets/index-CdPveU3M.css +1 -0
  313. package/server/public/assets/index-Cg6tdZoY.js +860 -0
  314. package/server/public/assets/{linear-BPE7oswm.js → linear-DpEt1TJb.js} +1 -1
  315. package/server/public/assets/mermaid-GHXKKRXX-6KBD_3T_.js +1 -0
  316. package/server/public/assets/{pieDiagram-4H26LBE5-BguGGV3S.js → pieDiagram-4H26LBE5-9BpM4oRJ.js} +1 -1
  317. package/server/public/assets/{prod-aKDYUrXQ.js → prod-CzJiNNEG.js} +4 -4
  318. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bx3i4B6H.js → quadrantDiagram-W4KKPZXB-BXWVAoZx.js} +1 -1
  319. package/server/public/assets/{sankeyDiagram-5OEKKPKP-B5vuLjA4.js → sankeyDiagram-5OEKKPKP-5oxodGEw.js} +1 -1
  320. package/server/public/assets/{xychartDiagram-2RQKCTM6-HPlpkqsN.js → xychartDiagram-2RQKCTM6-BChDrHxZ.js} +1 -1
  321. package/server/public/index.html +2 -2
  322. package/server/pull-requests-CmlandI7.js +2 -0
  323. package/server/{pull-requests-BcHIsFJv.js → pull-requests-T0OV0Vn4.js} +3 -3
  324. package/server/{rally-B1OMtzch.js → rally-CUqj2oIN.js} +3 -3
  325. package/server/rally-DYIn9R2U.js +3 -0
  326. package/server/{rally-api-ShZ4kvn0.js → rally-api-BFPb2oSq.js} +2 -2
  327. package/server/{rally-api-u_vkr5c_.js → rally-api-BoucQG1u.js} +1 -1
  328. package/server/{rally-client-D6Feq1Ka.js → rally-client-16iObny7.js} +5 -5
  329. package/server/{rally-client-DgZvUZqX.js → rally-client-CsqLjLLa.js} +1 -1
  330. package/server/{reap-terminal-sessions-CRfiXLY0.js → reap-terminal-sessions-BaDSNR-k.js} +2 -2
  331. package/server/{reap-terminal-sessions-D7f3zSE9.js → reap-terminal-sessions-DgEIKMhH.js} +2 -2
  332. package/server/{rebuild-stack-CCwKHZb6.js → rebuild-stack-BcBVFJp3.js} +2 -2
  333. package/server/{rebuild-stack-DKxOnkpE.js → rebuild-stack-CyXMrj6K.js} +7 -7
  334. package/server/reconciler-caYiRnPy.js +657 -0
  335. package/server/{reconstruct-cache-BP8UIKt7.js → reconstruct-cache-3JzPOune.js} +7 -7
  336. package/server/{record-By-wp6pg.js → record-DYOg97Iv.js} +1 -1
  337. package/server/{record-update-D23jPU6b.js → record-update-BPqpBu3O.js} +9 -7
  338. package/server/{record-update-ByGtIlUK.js → record-update-CDPEX7BH.js} +1 -1
  339. package/server/{recovery-trip-C4dTl8DO.js → recovery-trip-CpfW6LCJ.js} +43 -10
  340. package/server/{recovery-trip-qloOYOFz.js → recovery-trip-xqKC07Gy.js} +1 -1
  341. package/server/{release-engine-Crc0Tjx-.js → release-engine-C_OOhCaK.js} +5 -5
  342. package/server/{release-set-DDXwbIK7.js → release-set-DOIDz2vw.js} +3 -3
  343. package/server/{remote-oEMfXlwT.js → remote-BTh-sjpX.js} +3 -3
  344. package/server/{remote-agents-Bgtc2nOO.js → remote-agents-DbbN7vSm.js} +6 -6
  345. package/server/{remote-agents-DQVGZVQ9.js → remote-agents-MuXx2gWm.js} +1 -1
  346. package/server/{remote-completion-DxUJ5HKR.js → remote-completion-LcWCpAm2.js} +13 -13
  347. package/server/{remote-CBpLi4Yy.js → remote-xY0B43Ho.js} +3 -3
  348. package/server/{resolver-CuAULbLs.js → resolver-C2QKOf09.js} +2 -2
  349. package/server/{resolver-C8rooxoz.js → resolver-D4nsxfGo.js} +31 -8
  350. package/server/resume-ByUrJUNX.js +3 -0
  351. package/server/{review-agent-7C2w5CzU.js → review-agent-BRBTm1qE.js} +43 -55
  352. package/server/review-agent-Caodi0PX.js +3 -0
  353. package/server/{review-artifacts-BJeEfm2r.js → review-artifacts-DgaDlbO4.js} +6 -6
  354. package/server/{review-convoy-liveness-DfF9eXjI.js → review-convoy-liveness-BBvyuRLC.js} +20 -11
  355. package/server/{review-run-recovery-ZjuDTNhZ.js → review-run-recovery-DCzWMMvE.js} +1 -1
  356. package/server/{review-run-recovery-7BKt2Es0.js → review-run-recovery-THHMKlXJ.js} +3 -3
  357. package/server/{review-status-CUnjjOUu.js → review-status-Bge_3XTR.js} +1 -1
  358. package/server/{review-status-DBnR5t4z.js → review-status-DpniqzPT.js} +113 -44
  359. package/server/{review-status-emit-Cg4tOb8U.js → review-status-emit-D7sM720S.js} +3 -3
  360. package/server/{review-status-enrichment-D-rQshu6.js → review-status-enrichment-PDI4-faj.js} +3 -3
  361. package/server/{review-status-source-DSn0glLa.js → review-status-source-D2PCWS6E.js} +1 -1
  362. package/server/{review-status-source-Ct912fv_.js → review-status-source-Jq0BXmn3.js} +1 -1
  363. package/server/{review-status-sync-B7V_Gg51.js → review-status-sync-C6ZKTI8f.js} +11 -8
  364. package/server/{review-status-sync-YthpOH_q.js → review-status-sync-CvpHWyvR.js} +1 -1
  365. package/server/{review-verdict-feedback-C-dBon_-.js → review-verdict-feedback-B2ojHFH5.js} +8 -8
  366. package/server/{review-verdict-feedback-DqXTuJk8.js → review-verdict-feedback-tyMoLT2L.js} +1 -1
  367. package/server/{review-verdict-writer-CKaJWp75.js → review-verdict-writer-Cy_1pnIj.js} +7 -7
  368. package/server/{review-verdict-writer-jldSh3Bm.js → review-verdict-writer-DjrJ64eS.js} +1 -1
  369. package/server/{rollup-DZwH4CLs.js → rollup-Cp0KEoOu.js} +1 -1
  370. package/server/{rollup-QCwYcBdP.js → rollup-DU3xBQu2.js} +8 -8
  371. package/server/{scanner-2aHeLC3W.js → scanner-BFKG3Gxv.js} +8 -8
  372. package/server/{search-DwHYaj66.js → search-DhtKwbBC.js} +2 -2
  373. package/server/{secret-redaction-B5G1xZ3k.js → secret-redaction-DLZ-VqHq.js} +1 -1
  374. package/server/{sequence-io-POKWdusG.js → sequence-io-C-Q19Jez.js} +4 -4
  375. package/server/{sequencer-agent-DS00KHVm.js → sequencer-agent-eN2P2lDz.js} +6 -6
  376. package/server/server.js +1499 -1350
  377. package/server/{service-BLb_CyPL.js → service-CThO0Sar.js} +80 -774
  378. package/server/{session-fork-DcTzVwex.js → session-fork-ZYTHtpBh.js} +2 -2
  379. package/server/settings-ByDRfuuE.js +2 -0
  380. package/server/{settings-Clw8UVNs.js → settings-CTywpFw5.js} +2 -2
  381. package/server/{settings-B9-H2K_E.js → settings-nAT-eK56.js} +3 -3
  382. package/server/{shadow-engineering-C6oO_PiR.js → shadow-engineering-BHZKPJhq.js} +3 -3
  383. package/server/{shadow-state-CEGrrECe.js → shadow-state-BTLi4Axs.js} +2 -2
  384. package/server/{shadow-state-e7250VUx.js → shadow-state-CZ_LnPsi.js} +1 -1
  385. package/server/{shadow-utils-xFk2Wusb.js → shadow-utils-CPLlPHdn.js} +2 -2
  386. package/server/{ship-log-7BnQHuKU.js → ship-log-D-CphNZx.js} +1 -1
  387. package/server/{ship-record-CwUX6Afo.js → ship-record-BaBla0l_.js} +7 -7
  388. package/server/{ship-record-BgUPnpT0.js → ship-record-BlvX8-xv.js} +1 -1
  389. package/server/{ship-status-Ce3_3edi.js → ship-status-rQbPQBsF.js} +2 -2
  390. package/server/{smart-compaction-BmfIi3oL.js → smart-compaction-CUXn8mfX.js} +1 -1
  391. package/server/{smart-compaction-Dy0gw1VH.js → smart-compaction-D1CNGdZx.js} +7 -7
  392. package/server/{spawn-planning-session-nH3b4Drz.js → spawn-planning-session-DCmO6COk.js} +19 -19
  393. package/server/{spawn-planning-session-CfhxRJoY.js → spawn-planning-session-DfEWyrVV.js} +2 -2
  394. package/server/{specialist-completion-CC1XJbTx.js → specialist-completion-BMv3K54P.js} +1 -1
  395. package/server/{specialist-context-cHwpcXSh.js → specialist-context-C1-CfYQb.js} +5 -5
  396. package/server/{specialist-handoff-logger-GqnGSYoJ.js → specialist-handoff-logger-BDKoz5Z9.js} +2 -2
  397. package/server/{specialist-logs-5OTnrV91.js → specialist-logs-BJQFkpdG.js} +3 -3
  398. package/server/specialists-CYt1U3Zm.js +4 -0
  399. package/server/{specialists-8LcQi9Np.js → specialists-D6MUU31Q.js} +21 -272
  400. package/server/{specialists-DocAK-7A.js → specialists-DhS79T9v.js} +369 -691
  401. package/server/{specialists-xXcJHAyg.js → specialists-Dx0zRTxX.js} +1 -1
  402. package/server/specialists-registry-BRLCi61y.js +3 -0
  403. package/server/specialists-registry-Bng0OFGH.js +277 -0
  404. package/server/specs-oRGyfz6C.js +3 -0
  405. package/server/{src-C2TAxwki.js → src-C7gGe4KU.js} +6 -6
  406. package/server/{src-DudQNYVw.js → src-CdwN6WY6.js} +344 -7
  407. package/server/{src-DUVvEA8Q.js → src-DMosbuSJ.js} +3 -3
  408. package/server/{stack-health-DKT4ySnA.js → stack-health-BKfNaqMm.js} +3 -3
  409. package/server/{stack-health-CbyiYS9H.js → stack-health-Bz711z1Y.js} +1 -1
  410. package/server/{stale-task-claims-PzFee70R.js → stale-task-claims-DMRLb5R2.js} +5 -5
  411. package/server/{staleness-D8UTEXV5.js → staleness-CxZaIhrn.js} +1 -1
  412. package/server/{staleness-BjOAq9-d.js → staleness-r_dkMyMG.js} +1 -1
  413. package/server/{stall-sweeper-DOyIfeLR.js → stall-sweeper-CBWqSWV2.js} +8 -8
  414. package/server/{state-home-DhAZlk5k.js → state-home-DhsMqg8W.js} +2 -2
  415. package/server/{state-mapping-BVSs84bO.js → state-mapping-D2yC81Vy.js} +1 -1
  416. package/server/{state-migrate-CJKEwpB0.js → state-migrate-C2Ouyd6e.js} +6 -6
  417. package/server/{state-mirror-Do7pag7W.js → state-mirror-BPXciz84.js} +3 -3
  418. package/server/stuck-remediation-DALieAkx.js +2 -0
  419. package/server/stuck-remediation-kta3KN7c.js +774 -0
  420. package/server/{substrate-bug-weights-service-BTNjHBnl.js → substrate-bug-weights-service-D_ICP7TI.js} +3 -3
  421. package/server/{summary-fork-CvB7Oyq9.js → summary-fork-CojrFKb6.js} +2 -2
  422. package/server/{summary-fork-CZ88rhVx.js → summary-fork-DhhaFhxZ.js} +113 -30
  423. package/server/supervisor/{pane-composer-BaLLspSj.js → pane-composer-CoiVkGIt.js} +8 -1
  424. package/server/supervisor/{paths-D6XUcR_g.js → paths-DTGbtcaP.js} +8 -4
  425. package/server/supervisor/pty-supervisor.js +3 -3
  426. package/server/supervisor/{pty-token-DjjHxoCq.js → pty-token-GVqnvU3U.js} +2 -2
  427. package/server/supervisor-DSSWo4M2.js +2 -0
  428. package/server/{supervisor-D4v0WfiQ.js → supervisor-DqH-laVL.js} +4 -4
  429. package/server/{swarm-readiness-D8R-LWX5.js → swarm-readiness-LF8ZF_hc.js} +3 -3
  430. package/server/{synthesis-verdict-N5Z11pg7.js → synthesis-verdict-CGFF8uQI.js} +2 -2
  431. package/server/{synthesis-verdict-B6wvLGcA.js → synthesis-verdict-DSoOFUIV.js} +1 -1
  432. package/server/{system-prerequisites-BbGZ_WHF.js → system-prerequisites-Lsx0jUUV.js} +2 -2
  433. package/server/{teardown-workspace-CYend-KY.js → teardown-workspace-DMwomEG1.js} +16 -16
  434. package/server/{test-agent-queue-BUtWhNcc.js → test-agent-queue-Cu0D6BYe.js} +6 -6
  435. package/server/{test-verdict-BWm3hgDj.js → test-verdict-9mvl7pQn.js} +1 -1
  436. package/server/{test-verdict-BWtRmdiR.js → test-verdict-oNSv1rVr.js} +2 -2
  437. package/server/{tldr-daemon-CneJ24eL.js → tldr-daemon-CRSAkhBx.js} +1 -1
  438. package/server/{tldr-daemon-CMVBT4kT.js → tldr-daemon-McqCk2X7.js} +2 -2
  439. package/server/tmux-CYucGrTl.js +4 -0
  440. package/server/{tmux-BqXzRuaH.js → tmux-wnT_hg-s.js} +91 -19
  441. package/server/{token-CO3INKbh.js → token-BdfZLRg1.js} +2 -2
  442. package/server/{token-util-DyJJyX_B.js → token-util-Crcay9j_.js} +1 -1
  443. package/server/token-util-DfUS3Lpp.js +3 -0
  444. package/server/{tracker-config-DVzhaUxO.js → tracker-config-tfAOWgng.js} +2 -2
  445. package/server/{tracker-utils-xnVJVrrO.js → tracker-utils-Dbg_pVZg.js} +2 -2
  446. package/server/{traefik-connect-A5k54mCv.js → traefik-connect-DoQvQ6oJ.js} +1 -1
  447. package/server/{tunnel-DauSR-rs.js → tunnel-B1MNIgkL.js} +1 -1
  448. package/server/{tunnel-CwOnS-PB.js → tunnel-skW68j9B.js} +3 -3
  449. package/server/{typed-errors-B-gfU2RB.js → typed-errors-CZ3GFBvo.js} +1 -1
  450. package/server/{typed-errors-DzC4zXbI.js → typed-errors-DXqf3RnP.js} +1 -1
  451. package/server/{types-DjpLVpsj.js → types-PW4zkxCM.js} +1 -1
  452. package/server/{types-DbxY2QB6.js → types-pLpbsNto.js} +1 -1
  453. package/server/{uat-failure-feedback-BVqsWlrr.js → uat-failure-feedback-ly8ZwtfC.js} +5 -5
  454. package/server/{uat-promote-verification-DmG097QS.js → uat-promote-verification-BBaMwfdc.js} +5 -5
  455. package/server/{uat-train-DVUNW03P.js → uat-train-BBEiYSep.js} +0 -0
  456. package/server/{uat-train-COSy-vEX.js → uat-train-D7Ran2FB.js} +1 -1
  457. package/server/{validate-Dvv83iBx.js → validate-BYcBcBwg.js} +3 -3
  458. package/server/{validation-DlHafKzu.js → validation-BfG2jW5C.js} +9 -6
  459. package/server/{validation-BdCjzWLN.js → validation-nSrYiYvA.js} +1 -1
  460. package/server/{verification-artifact-CaSbxUVg.js → verification-artifact-Cmhgq4b_.js} +1 -1
  461. package/server/{verification-artifact-0Zku8N-W.js → verification-artifact-DglwaHke.js} +1 -1
  462. package/server/{verification-runner-DwP2fUEF.js → verification-runner-BEq5ZF-h.js} +53 -27
  463. package/server/{verification-runner-C6wdZda2.js → verification-runner-CFjAuv9u.js} +1 -1
  464. package/server/{vtt-parser-luerJpYT.js → vtt-parser-Va--tv27.js} +1 -1
  465. package/server/work-agent-prompt-BnhKNAg7.js +3 -0
  466. package/server/{work-agent-prompt--9AWNYwZ.js → work-agent-prompt-CaD2ue8m.js} +14 -14
  467. package/server/{work-agent-start-BNQO65W7.js → work-agent-start-0nJ-6UeA.js} +2 -2
  468. package/server/{work-agent-start-DkzseQFl.js → work-agent-start-D8NEN5KD.js} +1 -1
  469. package/server/workflows-BtHRlFIm.js +2 -0
  470. package/server/{workflows-BYwR2aIN.js → workflows-C7mxM1qc.js} +114 -41
  471. package/server/{workspace-iTnTycOB.js → workspace-BAhMgMaO.js} +3 -3
  472. package/server/{workspace-B-QJa3Ps.js → workspace-Dbqv9ehn.js} +1 -1
  473. package/server/{workspace-anchor-drift-CHiGg8iu.js → workspace-anchor-drift-B_3kyyxJ.js} +4 -4
  474. package/server/{workspace-anchor-drift-DTt6h2Em.js → workspace-anchor-drift-Bpa3xoni.js} +1 -1
  475. package/server/{workspace-config-D0CavVtz.js → workspace-config-D-bNq2CF.js} +1 -1
  476. package/server/{workspace-manager-5BKPV6SY.js → workspace-manager-BrbX90Rm.js} +1 -1
  477. package/server/{workspace-manager-W1OnbvU5.js → workspace-manager-CM8RCrSc.js} +17 -17
  478. package/server/{workspace-metadata-tbbevEmP.js → workspace-metadata-BEOwJSdK.js} +1 -1
  479. package/server/{workspace-metadata-dJhXvZGQ.js → workspace-metadata-Cu6yfxBS.js} +2 -2
  480. package/server/{workspaces-BlpbOPZ7.js → workspaces-C7LAuZfe.js} +140 -709
  481. package/sync-sources/dev-skills/pan-style-guide/SKILL.md +90 -15
  482. package/sync-sources/hooks/linear-mcp-auth-hook +6 -1
  483. package/sync-sources/rules/agent-message-delivery.md +21 -14
  484. package/sync-sources/rules/handoff-isolate-cwd.md +4 -4
  485. package/sync-sources/rules/pan-handoff-focus-limit.md +14 -5
  486. package/sync-sources/rules/ste-writing.md +17 -0
  487. package/sync-sources/rules/work-agents-via-pan.md +2 -1
  488. package/sync-sources/rules/writing-style.md +3 -2
  489. package/sync-sources/skills/{skill-creator → claude-skill-creator}/SKILL.md +1 -1
  490. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/init_skill.py +1 -1
  491. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/package_skill.py +1 -1
  492. package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +230 -0
  493. package/sync-sources/skills/pan-gauntlet-loop/assets/PROMPT.template.md +92 -0
  494. package/sync-sources/skills/pan-gauntlet-loop/assets/REFERENCE-BAR.template.md +53 -0
  495. package/sync-sources/skills/pan-gauntlet-loop/assets/STYLE.template.md +41 -0
  496. package/sync-sources/skills/pan-gauntlet-loop/assets/gauntlet-index.html +237 -0
  497. package/sync-sources/skills/pan-gauntlet-loop/references/domains.md +106 -0
  498. package/sync-sources/skills/pan-handoff/SKILL.md +24 -6
  499. package/sync-sources/skills/pan-help/SKILL.md +1 -1
  500. package/sync-sources/skills/pan-peer-review/SKILL.md +3 -3
  501. package/sync-sources/skills/pan-restart/SKILL.md +6 -3
  502. package/sync-sources/skills/pan-start/SKILL.md +3 -0
  503. package/sync-sources/skills/pan-swarm/SKILL.md +32 -44
  504. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  505. package/server/activity-logger-BejO16Am.js +0 -3
  506. package/server/agent-state-DH_-Jkua.js +0 -3
  507. package/server/agents-megfmQHM.js +0 -3
  508. package/server/archive-planning-C-H9cM_J.js +0 -2
  509. package/server/build-info-PQlh_Rhb.js +0 -2
  510. package/server/cli-TaZspPHS.js +0 -2
  511. package/server/cliproxy-36ncAXlu.js +0 -3
  512. package/server/context-layers-CF6zHws4.js +0 -4
  513. package/server/conversations-AnGJ5rtX.js +0 -3
  514. package/server/deacon-BEH-IY0v.js +0 -5
  515. package/server/deacon-swarm-BHX-kR1b.js +0 -2
  516. package/server/deacon-swarm-BiLfNm_v.js +0 -1522
  517. package/server/dead-end-trip-BWpDg1Qd.js +0 -2
  518. package/server/delivery-cJM6zRjJ.js +0 -3
  519. package/server/deploy-queue-CmVBZEja.js +0 -2
  520. package/server/dist-VKBfkdi7.js +0 -3
  521. package/server/durable-review-pipeline-DgcVCYDL.js +0 -3
  522. package/server/factory-D4V2wd_V.js +0 -717
  523. package/server/forge-CrP1L3i6.js +0 -2
  524. package/server/hume-1ubD_6O7.js +0 -3
  525. package/server/inspect-agent-CfxERkNt.js +0 -2
  526. package/server/merge-ops-DtHx17Vd.js +0 -2
  527. package/server/merge-rebase-BvB4UuNS.js +0 -2
  528. package/server/project-repos-BJiShUsN.js +0 -3
  529. package/server/providers-CStNGwze.js +0 -3
  530. package/server/public/assets/index-BFEwfmqX.js +0 -860
  531. package/server/public/assets/index-_USwyTAT.css +0 -1
  532. package/server/public/assets/mermaid-GHXKKRXX-Dsln95SK.js +0 -1
  533. package/server/pull-requests-C1Cqp2yo.js +0 -2
  534. package/server/rally-CjayjUIl.js +0 -3
  535. package/server/resume-D7JuMCRQ.js +0 -3
  536. package/server/review-agent-BUNTVJK2.js +0 -2
  537. package/server/settings-DBWB1gsG.js +0 -2
  538. package/server/specialists-D8gsOCwh.js +0 -3
  539. package/server/specs-BqkrRnU9.js +0 -3
  540. package/server/stuck-remediation-Di5JYkoo.js +0 -1164
  541. package/server/stuck-remediation-TNM1VhZb.js +0 -2
  542. package/server/supervisor-DX8VsPnb.js +0 -2
  543. package/server/tmux-CqNapnrr.js +0 -4
  544. package/server/token-util-Bu8bPF9f.js +0 -3
  545. package/server/workflows-Cf4LAnhg.js +0 -2
@@ -1,743 +1,50 @@
1
1
  import { a as __toCommonJS } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fi as init_paths, J as getProjectConfigFromWorkspacePath, On as resolveProjectFromIssueSync, Pi as getOverdeckHome, Y as init_record, fn as init_projects, gi as OVERDECK_HOME, nt as readRecordContinueViewSync, oi as init_errors, p as loadConfigSync, rt as resolveProjectForIssue, si as AGENTS_DIR, t as init_config_yaml, wr as derefWorkhorse } from "./config-yaml-BwOEANMr.js";
3
- import { a as emitActivityEntrySync, c as init_activity_logger } from "./activity-logger-BAVLrkR7.js";
4
- import { D as sql, E as like, S as gte, _ as integer, a as EventBus, b as and, f as init_infra, g as real, h as text, i as DbLive, m as sqliteTable, n as CostArchiveLive, o as EventBusLive, p as init_sqlite_core, r as Db, t as CostArchive, v as init_drizzle_orm, x as eq, y as desc } from "./infra-KTp9KV9u.js";
5
- import { B as sessionExists, S as init_tmux, T as killSession, V as sessionExistsSync, f as exactPaneTarget, r as capturePane } from "./tmux-BqXzRuaH.js";
6
- import { n as init_issues, t as IssueId } from "./issues-CkvUoAnq.js";
7
- import { a as getAllBudgetsSync, i as deleteBudgetSync, n as checkBudgetSync, r as createBudgetSync, s as init_cost } from "./cost-CQKI6OCu.js";
8
- import { $t as spawnAgent, G as init_agents, H as getAgentRuntimeStateSync, Ni as init_ohmypi_parser, O as saveAgentStateSync, Pi as parseOhmypiSessionCostResultSync, Pt as init_context_overflow, W as saveAgentRuntimeState, an as stopAgentSync, f as getAgentState, m as getAgentStateSync, u as getAgentDir, un as listRunningAgentsSync } from "./agent-state-Bb3UUxQm.js";
9
- import { i as parseCodexSessionSync, n as init_codex_parser, r as parseCodexSessionCostEventsSync } from "./behavior-Bitko0mD.js";
10
- import { _ as init_tier_metrics, c as getDailyTrendsSync, d as init_cost_sync, h as deriveTieredAgentCostRole, t as getAgentDailyCostSync } from "./cost-sync-B-ADeXKY.js";
11
- import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-zY75jrRJ.js";
12
- import { E as init_model_validation, O as requireModelOverrideSync } from "./auto-spawn-consent-BDfe4qz0.js";
13
- import { C as setFlywheelGloballyPaused, c as init_control_settings, f as isFlywheelAutoPickupBacklog, l as isCloisterSpawnsPausedSync, v as setCloisterSpawnsPausedSync, y as setDeaconGloballyPaused } from "./control-settings-5k6ixdFW.js";
14
- import { r as isRoleTerminal } from "./review-status-source-Ct912fv_.js";
15
- import { h as readWorkspacePlanSync, s as init_io } from "./io-DfvO2xyh.js";
16
- import { n as checkHookSync, p as init_hooks } from "./hooks-NQ19vvlB.js";
17
- import { a as loadCloisterConfigSync, n as getHealthThresholdsMs, r as init_config } from "./config-DC75T4Mr.js";
18
- import { t as init_reap_terminal_sessions } from "./reap-terminal-sessions-CRfiXLY0.js";
19
- import { i as issue_service_singleton_exports, n as init_issue_service_singleton } from "./issue-service-singleton-BN_2MXp4.js";
20
- import { h as loadReviewStatuses, p as init_review_status, w as setReviewStatusSync } from "./review-status-DBnR5t4z.js";
21
- import { h as init_pickup, r as LEGACY_PARKED_LABELS } from "./pickup-BjJsSX12.js";
22
- import "./flywheel-C7yek87O.js";
23
- import { C as getLastPatrolResult, D as isDeaconRunning, N as runPatrol, R as startDeacon, S as getDeaconStatus, r as assessDeaconPatrolFreshness, x as getDeaconLogs, z as stopDeacon } from "./deacon-TPYssFYt.js";
24
- import { n as renderPrompt, t as init_prompts } from "./prompts-BiS5I2tZ.js";
25
- import { t as getCloisterEventStore } from "./event-store-provider-BKvk2rDj.js";
26
- import { s as getRuntimeForAgent } from "./stuck-remediation-Di5JYkoo.js";
27
- import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-dvEWKO7Q.js";
28
- import { U as getTmuxSessionName, t as init_specialists } from "./specialists-8LcQi9Np.js";
29
- import { n as shouldSkipDispatchAsMerged } from "./merge-verification-BRp08IzI.js";
30
- import { t as recordDeadEndNeedsYou } from "./dead-end-trip-P0IF1O0E.js";
31
- import { o as decideAutonomousWorkDispatch, s as gatherAutonomousWorkDispatchInput } from "./orphan-proposed-reconciler-cV3URUqk.js";
32
- import { r as writeHealthEvent } from "./health-events-DlX_FVAB.js";
33
- import { join } from "node:path";
34
- import { Context, Data, Effect, Layer, Schema } from "effect";
2
+ import { Er as derefWorkhorse, J as getProjectConfigFromWorkspacePath, On as resolveProjectFromIssueSync, Y as init_record, fn as init_projects, li as init_errors, nt as readRecordContinueViewSync, p as loadConfigSync, rt as resolveProjectForIssue, t as init_config_yaml, ui as AGENTS_DIR, yi as OVERDECK_HOME, zi as init_paths } from "./config-yaml-D60AnTIu.js";
3
+ import { l as init_activity_logger, o as emitActivityEntrySync } from "./activity-logger-SlTXYCVf.js";
4
+ import { C as init_tmux, E as killSession, U as sessionExists, W as sessionExistsSync, p as exactPaneTarget, r as capturePane, v as getManagedTmuxSocketName } from "./tmux-wnT_hg-s.js";
5
+ import { C as setFlywheelGloballyPaused, c as init_control_settings, f as isFlywheelAutoPickupBacklog, l as isCloisterSpawnsPausedSync, v as setCloisterSpawnsPausedSync, y as setDeaconGloballyPaused } from "./control-settings-Db0uXgVM.js";
6
+ import { c as getDailyTrendsSync, d as init_cost_sync, t as getAgentDailyCostSync } from "./cost-sync-DfmvLT9L.js";
7
+ import { i as CostWriter, t as CostDoorLive } from "./cost-3FyqKK56.js";
8
+ import { A as saveAgentStateSync, K as saveAgentRuntimeState, W as getAgentRuntimeStateSync, f as getAgentDir, g as getAgentStateSync, m as getAgentState, mn as stopAgentSync, on as spawnAgent, q as init_agents, yn as listRunningAgentsSync, zt as init_context_overflow } from "./agent-state-FABw8neJ.js";
9
+ import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-BeIWG_kT.js";
10
+ import { E as init_model_validation, O as requireModelOverrideSync } from "./auto-spawn-consent-BesWchEi.js";
11
+ import { r as isRoleTerminal } from "./review-status-source-Jq0BXmn3.js";
12
+ import { h as readWorkspacePlanSync, s as init_io } from "./io-BCtZoXHo.js";
13
+ import { n as checkHookSync, p as init_hooks } from "./hooks-DJR1yR9w.js";
14
+ import { a as loadCloisterConfigSync, n as getHealthThresholdsMs, r as init_config } from "./config-_qaa1UXH.js";
15
+ import { t as init_reap_terminal_sessions } from "./reap-terminal-sessions-BaDSNR-k.js";
16
+ import { i as issue_service_singleton_exports, n as init_issue_service_singleton } from "./issue-service-singleton-C_sZ0HjP.js";
17
+ import { h as loadReviewStatuses, p as init_review_status, w as setReviewStatusSync } from "./review-status-DpniqzPT.js";
18
+ import { h as init_pickup, r as LEGACY_PARKED_LABELS } from "./pickup-Dle6k9Xt.js";
19
+ import "./flywheel-DWKd7bMc.js";
20
+ import { C as getLastPatrolResult, D as isDeaconRunning, N as runPatrol, R as startDeacon, S as getDeaconStatus, r as assessDeaconPatrolFreshness, x as getDeaconLogs, z as stopDeacon } from "./deacon-CsisLmPt.js";
21
+ import { n as renderPrompt, t as init_prompts } from "./prompts-CKpDt8Jn.js";
22
+ import { t as getCloisterEventStore } from "./event-store-provider-Bu1Qrg6v.js";
23
+ import { i as getRuntimeForAgent } from "./agent-idle-D-UQ7gDv.js";
24
+ import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-CiYAa6bX.js";
25
+ import { t as init_specialists } from "./specialists-D6MUU31Q.js";
26
+ import { s as getTmuxSessionName } from "./specialists-registry-Bng0OFGH.js";
27
+ import { n as shouldSkipDispatchAsMerged } from "./merge-verification-BfJRNMiD.js";
28
+ import { t as recordDeadEndNeedsYou } from "./dead-end-trip-Bs3hxIn6.js";
29
+ import { o as decideAutonomousWorkDispatch, s as gatherAutonomousWorkDispatchInput } from "./orphan-proposed-reconciler-nFUlquZt.js";
30
+ import { r as writeHealthEvent } from "./health-events-Bk3LjaJ9.js";
31
+ import { Data, Effect } from "effect";
35
32
  import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, statSync, unlinkSync, writeFileSync } from "fs";
36
- import { dirname as dirname$1, join as join$1 } from "path";
37
- import { existsSync as existsSync$1, readdirSync as readdirSync$1 } from "node:fs";
33
+ import { dirname, join } from "path";
38
34
  import { createHash } from "crypto";
39
35
  import { rm } from "fs/promises";
40
36
  import { exec, execFile } from "node:child_process";
41
37
  import { promisify } from "node:util";
42
38
  import { exec as exec$1 } from "child_process";
43
39
  import { promisify as promisify$1 } from "util";
44
- import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
45
- //#region ../../lib/overdeck/cost.ts
40
+ //#region ../../lib/cloister/health.ts
41
+ init_paths();
46
42
  init_errors();
47
43
  init_projects();
48
44
  init_record();
49
45
  init_config_yaml();
50
46
  init_activity_logger();
51
47
  init_tmux();
52
- init_drizzle_orm();
53
- init_sqlite_core();
54
- init_infra();
55
- init_issues();
56
- init_cost();
57
- init_ohmypi_parser();
58
- init_codex_parser();
59
- init_paths();
60
- init_tier_metrics();
61
- function walkJsonl(dir) {
62
- if (!existsSync$1(dir)) return [];
63
- const result = [];
64
- for (const entry of readdirSync$1(dir, { withFileTypes: true })) {
65
- const full = join(dir, entry.name);
66
- if (entry.isDirectory()) result.push(...walkJsonl(full));
67
- else if (entry.name.endsWith(".jsonl")) result.push(full);
68
- }
69
- return result;
70
- }
71
- const costEventsTable = sqliteTable("cost_events", {
72
- id: integer("id").primaryKey({ autoIncrement: true }),
73
- ts: integer("ts", { mode: "timestamp_ms" }).notNull(),
74
- issueId: text("issue_id"),
75
- agentId: text("agent_id"),
76
- sessionId: text("session_id"),
77
- sessionType: text("session_type"),
78
- provider: text("provider"),
79
- model: text("model"),
80
- input: integer("input"),
81
- output: integer("output"),
82
- cacheRead: integer("cache_read"),
83
- cacheWrite: integer("cache_write"),
84
- cost: real("cost"),
85
- requestId: text("request_id"),
86
- sourceFile: text("source_file")
87
- });
88
- const Tokens = Schema.Struct({
89
- input: Schema.Number,
90
- output: Schema.Number,
91
- cacheRead: Schema.Number,
92
- cacheWrite: Schema.Number
93
- });
94
- const CostEvent = Schema.Struct({
95
- ts: Schema.Date,
96
- issueId: Schema.NullOr(IssueId),
97
- agentId: Schema.NullOr(Schema.String),
98
- sessionId: Schema.NullOr(Schema.String),
99
- sessionType: Schema.NullOr(Schema.String),
100
- provider: Schema.NullOr(Schema.String),
101
- model: Schema.NullOr(Schema.String),
102
- input: Schema.Number,
103
- output: Schema.Number,
104
- cacheRead: Schema.Number,
105
- cacheWrite: Schema.Number,
106
- cost: Schema.Number,
107
- requestId: Schema.NullOr(Schema.String),
108
- sourceFile: Schema.NullOr(Schema.String),
109
- warnings: Schema.optional(Schema.Array(Schema.Struct({
110
- type: Schema.String,
111
- provider: Schema.NullOr(Schema.String),
112
- model: Schema.String,
113
- reason: Schema.String
114
- })))
115
- });
116
- const Rollup = Schema.Struct({
117
- key: Schema.String,
118
- role: Schema.optional(Schema.String),
119
- cost: Schema.Number,
120
- tokens: Tokens
121
- });
122
- const Window = Schema.Literals([
123
- "day",
124
- "week",
125
- "month"
126
- ]);
127
- const WindowSummary = Schema.Struct({
128
- project: Schema.NullOr(Schema.String),
129
- window: Window,
130
- totalCost: Schema.Number,
131
- totalTokens: Schema.Number,
132
- entryCount: Schema.Number,
133
- byModel: Schema.Record(Schema.String, Schema.Number)
134
- });
135
- const IssueCost = Schema.Struct({
136
- issueId: IssueId,
137
- totalCost: Schema.Number,
138
- tokens: Tokens,
139
- byModel: Schema.Record(Schema.String, Rollup),
140
- byStage: Schema.Record(Schema.String, Schema.Record(Schema.String, Tokens))
141
- });
142
- const BudgetSpec = Schema.Struct({
143
- name: Schema.String,
144
- type: Schema.Literals([
145
- "daily",
146
- "monthly",
147
- "project",
148
- "issue",
149
- "feature"
150
- ]),
151
- limit: Schema.Number,
152
- currency: Schema.String,
153
- alertThreshold: Schema.Number
154
- });
155
- const Budget = Schema.Struct({
156
- ...BudgetSpec.fields,
157
- id: Schema.String,
158
- spent: Schema.Number,
159
- enabled: Schema.Boolean
160
- });
161
- const BudgetStatus = Schema.Struct({
162
- budget: Budget,
163
- percentUsed: Schema.Number,
164
- remaining: Schema.Number,
165
- alert: Schema.Boolean,
166
- exceeded: Schema.Boolean
167
- });
168
- var CostIngestError = class extends Schema.TaggedErrorClass()("CostIngestError", { reason: Schema.String }) {};
169
- var BudgetNotFound = class extends Schema.TaggedErrorClass()("BudgetNotFound", { id: Schema.String }) {};
170
- function mapBudget(b) {
171
- return {
172
- id: b.id,
173
- name: b.name,
174
- type: b.type,
175
- limit: b.limit,
176
- currency: b.currency,
177
- alertThreshold: b.alertThreshold,
178
- spent: b.spent,
179
- enabled: b.enabled
180
- };
181
- }
182
- function toTokens(r) {
183
- return {
184
- input: r.input ?? 0,
185
- output: r.output ?? 0,
186
- cacheRead: r.cacheRead ?? 0,
187
- cacheWrite: r.cacheWrite ?? 0
188
- };
189
- }
190
- function toRollup(key, r, role) {
191
- return {
192
- key,
193
- ...role ? { role } : {},
194
- cost: r.cost ?? 0,
195
- tokens: toTokens(r)
196
- };
197
- }
198
- function issueIdFromAgentName(agentName) {
199
- const match = agentName.match(/(?:^|-)((?:pan|min|aud|krux|cli)-\d+)(?:-|$)/i);
200
- return match ? match[1].toUpperCase() : null;
201
- }
202
- function inferIssueFromPath(path) {
203
- if (!path) return null;
204
- const match = path.match(/(?:feature[-/])?(pan|min|aud|krux|cli)[-/](\d+)/i);
205
- return match ? `${match[1].toUpperCase()}-${match[2]}` : null;
206
- }
207
- function inferIssueFromPiEncodedRootName(name) {
208
- return inferIssueFromPath(name.replace(/--+/g, "/"));
209
- }
210
- function inferPiProvider(model, provider) {
211
- if (provider) return provider;
212
- const lower = model.toLowerCase();
213
- if (lower.includes("kimi") || lower.startsWith("minimax")) return "custom";
214
- if (lower.includes("claude")) return "anthropic";
215
- if (lower.includes("gpt")) return "openai";
216
- if (lower.includes("gemini")) return "google";
217
- return null;
218
- }
219
- var CostResolver = class extends Context.Service()("overdeck/CostResolver") {};
220
- const CostResolverLive = Layer.effect(CostResolver, Effect.gen(function* () {
221
- const { q } = yield* Db;
222
- const groupBySelect = {
223
- cost: sql`SUM(${costEventsTable.cost})`,
224
- input: sql`SUM(${costEventsTable.input})`,
225
- output: sql`SUM(${costEventsTable.output})`,
226
- cacheRead: sql`SUM(${costEventsTable.cacheRead})`,
227
- cacheWrite: sql`SUM(${costEventsTable.cacheWrite})`
228
- };
229
- const summary = (window, project) => Effect.promise(async () => {
230
- const days = {
231
- day: 1,
232
- week: 7,
233
- month: 30
234
- }[window];
235
- const cutoff = /* @__PURE__ */ new Date(Date.now() - days * 864e5);
236
- const where = project ? and(gte(costEventsTable.ts, cutoff), like(costEventsTable.issueId, `${project}-%`)) : gte(costEventsTable.ts, cutoff);
237
- const [agg] = await q.select({
238
- totalCost: sql`COALESCE(SUM(${costEventsTable.cost}), 0)`,
239
- totalTokens: sql`COALESCE(SUM(COALESCE(${costEventsTable.input},0) + COALESCE(${costEventsTable.output},0) + COALESCE(${costEventsTable.cacheRead},0) + COALESCE(${costEventsTable.cacheWrite},0)), 0)`,
240
- entryCount: sql`COUNT(*)`
241
- }).from(costEventsTable).where(where);
242
- const modelRows = await q.select({
243
- model: costEventsTable.model,
244
- cost: sql`COALESCE(SUM(${costEventsTable.cost}), 0)`
245
- }).from(costEventsTable).where(where).groupBy(costEventsTable.model);
246
- const byModel = {};
247
- for (const r of modelRows) byModel[r.model ?? "unknown"] = r.cost ?? 0;
248
- return {
249
- project: project ?? null,
250
- window,
251
- totalCost: agg?.totalCost ?? 0,
252
- totalTokens: agg?.totalTokens ?? 0,
253
- entryCount: agg?.entryCount ?? 0,
254
- byModel
255
- };
256
- });
257
- const byIssue = () => Effect.promise(async () => {
258
- return (await q.select({
259
- key: costEventsTable.issueId,
260
- ...groupBySelect
261
- }).from(costEventsTable).groupBy(costEventsTable.issueId)).map((r) => toRollup(r.key ?? "unattributed", r));
262
- });
263
- const issueDetail = (id) => Effect.promise(async () => {
264
- const modelRows = await q.select({
265
- model: costEventsTable.model,
266
- ...groupBySelect
267
- }).from(costEventsTable).where(eq(costEventsTable.issueId, id)).groupBy(costEventsTable.model);
268
- const byModel = {};
269
- let totalCost = 0;
270
- let totalInput = 0, totalOutput = 0, totalCacheRead = 0, totalCacheWrite = 0;
271
- for (const r of modelRows) {
272
- const key = r.model ?? "unknown";
273
- const t = toTokens(r);
274
- byModel[key] = {
275
- key,
276
- cost: r.cost ?? 0,
277
- tokens: t
278
- };
279
- totalCost += r.cost ?? 0;
280
- totalInput += t.input;
281
- totalOutput += t.output;
282
- totalCacheRead += t.cacheRead;
283
- totalCacheWrite += t.cacheWrite;
284
- }
285
- const tokens = {
286
- input: totalInput,
287
- output: totalOutput,
288
- cacheRead: totalCacheRead,
289
- cacheWrite: totalCacheWrite
290
- };
291
- const stageRows = await q.select({
292
- stage: costEventsTable.sessionType,
293
- model: costEventsTable.model,
294
- input: sql`SUM(${costEventsTable.input})`,
295
- output: sql`SUM(${costEventsTable.output})`,
296
- cacheRead: sql`SUM(${costEventsTable.cacheRead})`,
297
- cacheWrite: sql`SUM(${costEventsTable.cacheWrite})`
298
- }).from(costEventsTable).where(eq(costEventsTable.issueId, id)).groupBy(costEventsTable.sessionType, costEventsTable.model);
299
- const byStage = {};
300
- for (const r of stageRows) {
301
- const stage = r.stage ?? "unknown";
302
- const model = r.model ?? "unknown";
303
- if (!byStage[stage]) byStage[stage] = {};
304
- byStage[stage][model] = toTokens(r);
305
- }
306
- return {
307
- issueId: id,
308
- totalCost,
309
- tokens,
310
- byModel,
311
- byStage
312
- };
313
- });
314
- const byDay = (days, issue) => Effect.promise(async () => {
315
- const cutoff = /* @__PURE__ */ new Date(Date.now() - days * 864e5);
316
- const dayExpr = sql`DATE(${costEventsTable.ts}, 'unixepoch')`;
317
- const where = issue ? and(gte(costEventsTable.ts, cutoff), eq(costEventsTable.issueId, issue)) : gte(costEventsTable.ts, cutoff);
318
- return (await q.select({
319
- key: dayExpr,
320
- ...groupBySelect
321
- }).from(costEventsTable).where(where).groupBy(dayExpr).orderBy(sql`DATE(${costEventsTable.ts}, 'unixepoch') DESC`)).map((r) => toRollup(r.key ?? "", r));
322
- });
323
- const byModel = (issue) => Effect.promise(async () => {
324
- return (await q.select({
325
- key: costEventsTable.model,
326
- ...groupBySelect
327
- }).from(costEventsTable).where(issue ? eq(costEventsTable.issueId, issue) : void 0).groupBy(costEventsTable.model)).map((r) => toRollup(r.key ?? "unknown", r));
328
- });
329
- const byAgent = (issue) => Effect.promise(async () => {
330
- return (await q.select({
331
- key: costEventsTable.agentId,
332
- ...groupBySelect
333
- }).from(costEventsTable).where(issue ? eq(costEventsTable.issueId, issue) : void 0).groupBy(costEventsTable.agentId)).map((r) => {
334
- const key = r.key ?? "unattributed";
335
- return toRollup(key, r, deriveTieredAgentCostRole(key, issue));
336
- });
337
- });
338
- const byBackgroundSource = (hours) => Effect.promise(async () => {
339
- const cutoff = /* @__PURE__ */ new Date(Date.now() - hours * 36e5);
340
- return (await q.select({
341
- key: costEventsTable.sourceFile,
342
- ...groupBySelect
343
- }).from(costEventsTable).where(and(gte(costEventsTable.ts, cutoff), sql`${costEventsTable.sourceFile} IS NOT NULL`)).groupBy(costEventsTable.sourceFile)).map((r) => toRollup(r.key ?? "unknown", r));
344
- });
345
- const byProject = () => Effect.promise(async () => {
346
- const projExpr = sql`UPPER(SUBSTR(${costEventsTable.issueId}, 1, INSTR(${costEventsTable.issueId}, '-') - 1))`;
347
- return (await q.select({
348
- key: projExpr,
349
- ...groupBySelect
350
- }).from(costEventsTable).where(sql`${costEventsTable.issueId} IS NOT NULL`).groupBy(projExpr)).map((r) => toRollup(r.key ?? "unknown", r));
351
- });
352
- const recent = (limit, since) => Effect.promise(async () => {
353
- return (await q.select().from(costEventsTable).where(since ? gte(costEventsTable.ts, since) : void 0).orderBy(desc(costEventsTable.ts)).limit(limit)).map((r) => ({
354
- ts: r.ts,
355
- issueId: r.issueId ?? null,
356
- agentId: r.agentId ?? null,
357
- sessionId: r.sessionId ?? null,
358
- sessionType: r.sessionType ?? null,
359
- provider: r.provider ?? null,
360
- model: r.model ?? null,
361
- input: r.input ?? 0,
362
- output: r.output ?? 0,
363
- cacheRead: r.cacheRead ?? 0,
364
- cacheWrite: r.cacheWrite ?? 0,
365
- cost: r.cost ?? 0,
366
- requestId: r.requestId ?? null,
367
- sourceFile: r.sourceFile ?? null
368
- }));
369
- });
370
- const listBudgets = () => Effect.sync(() => getAllBudgetsSync().map(mapBudget));
371
- const checkBudget = (id) => Effect.gen(function* () {
372
- const result = yield* Effect.sync(() => checkBudgetSync(id));
373
- if (!result.budget) return yield* Effect.fail(new BudgetNotFound({ id }));
374
- return {
375
- budget: mapBudget(result.budget),
376
- percentUsed: result.percentUsed,
377
- remaining: result.remaining,
378
- alert: result.alert,
379
- exceeded: result.exceeded
380
- };
381
- });
382
- return CostResolver.of({
383
- summary,
384
- byIssue,
385
- issueDetail,
386
- byDay,
387
- byModel,
388
- byAgent,
389
- byBackgroundSource,
390
- byProject,
391
- recent,
392
- listBudgets,
393
- checkBudget
394
- });
395
- }));
396
- var CostWriter = class extends Context.Service()("overdeck/CostWriter") {};
397
- const CostDoorLive = Layer.effect(CostWriter, Effect.gen(function* () {
398
- const { q } = yield* Db;
399
- const archive = yield* CostArchive;
400
- const bus = yield* EventBus;
401
- const checkDuplicate = (e) => Effect.gen(function* () {
402
- if (e.requestId == null && e.sourceFile == null) return false;
403
- const condition = e.requestId != null ? eq(costEventsTable.requestId, e.requestId) : eq(costEventsTable.sourceFile, e.sourceFile);
404
- return (yield* Effect.promise(() => q.select({ id: costEventsTable.id }).from(costEventsTable).where(condition).limit(1))).length > 0;
405
- });
406
- const record = (event, opts) => Effect.gen(function* () {
407
- if (opts?.dryRun) {
408
- if (yield* checkDuplicate(event)) return false;
409
- return true;
410
- }
411
- yield* archive.append(event);
412
- if (yield* checkDuplicate(event)) return false;
413
- yield* Effect.promise(() => q.insert(costEventsTable).values({
414
- ts: event.ts,
415
- issueId: event.issueId,
416
- agentId: event.agentId,
417
- sessionId: event.sessionId,
418
- sessionType: event.sessionType,
419
- provider: event.provider,
420
- model: event.model,
421
- input: event.input,
422
- output: event.output,
423
- cacheRead: event.cacheRead,
424
- cacheWrite: event.cacheWrite,
425
- cost: event.cost,
426
- requestId: event.requestId,
427
- sourceFile: event.sourceFile
428
- }).onConflictDoNothing());
429
- yield* bus.emit({
430
- type: "cost.recorded",
431
- payload: {
432
- issueId: event.issueId,
433
- cost: event.cost
434
- }
435
- });
436
- return true;
437
- });
438
- const reconcile = (opts) => Effect.gen(function* () {
439
- const source = opts?.source ?? "claude";
440
- const empty = {
441
- imported: 0,
442
- skipped: [],
443
- sessionsScanned: 0,
444
- eventsImported: 0,
445
- duplicatesSkipped: 0,
446
- errors: [],
447
- earliestEventTs: null,
448
- latestEventTs: null,
449
- warnings: []
450
- };
451
- if (source !== "ohmypi" && source !== "codex") return empty;
452
- const agentsDir = join(getOverdeckHome(), "agents");
453
- const agentNames = yield* Effect.sync(() => {
454
- if (!existsSync$1(agentsDir)) return [];
455
- return readdirSync$1(agentsDir, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => e.name);
456
- });
457
- let imported = 0;
458
- const skipped = [];
459
- let duplicatesSkipped = 0;
460
- let sessionsScanned = 0;
461
- let earliestEventTs = null;
462
- let latestEventTs = null;
463
- const errors = [];
464
- const warnings = [];
465
- const markSkipped = (file, reason) => {
466
- skipped.push({
467
- file,
468
- reason
469
- });
470
- console.warn(`[cost-reconcile] skipped ${file}: ${reason}`);
471
- };
472
- const markWarning = (warning) => {
473
- warnings.push(warning);
474
- console.warn(`[cost-reconcile] warning ${warning.file}: ${warning.reason} provider=${warning.provider ?? "unknown"} model=${warning.model}`);
475
- };
476
- const noteImportedTimestamp = (ts) => {
477
- const iso = ts.toISOString();
478
- if (earliestEventTs == null || iso < earliestEventTs) earliestEventTs = iso;
479
- if (latestEventTs == null || iso > latestEventTs) latestEventTs = iso;
480
- };
481
- const roots = agentNames.map((agentName) => ({
482
- root: source === "ohmypi" ? join(agentsDir, agentName, "sessions") : join(agentsDir, agentName, "codex-home", "sessions"),
483
- agentName,
484
- issueId: issueIdFromAgentName(agentName),
485
- sessionType: source
486
- }));
487
- if (source === "codex") for (const root of opts?.extraRoots ?? []) roots.push({
488
- root,
489
- agentName: "codex-global",
490
- issueId: null,
491
- sessionType: "codex",
492
- inferIssueFromCwd: true
493
- });
494
- for (const extra of opts?.extraRootSpecs ?? []) {
495
- if (source === "codex" && extra.kind === "codex-global") roots.push({
496
- root: extra.root,
497
- agentName: "codex-global",
498
- issueId: null,
499
- sessionType: "codex",
500
- inferIssueFromCwd: true
501
- });
502
- if (source === "ohmypi" && extra.kind === "ohmypi-global") {
503
- const encodedRoots = yield* Effect.sync(() => {
504
- if (!existsSync$1(extra.root)) return [];
505
- return readdirSync$1(extra.root, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => ({
506
- root: join(extra.root, e.name),
507
- agentName: "pi-global",
508
- issueId: inferIssueFromPiEncodedRootName(e.name) ?? "UNKNOWN",
509
- sessionType: "ohmypi"
510
- }));
511
- });
512
- roots.push(...encodedRoots);
513
- }
514
- if (source === "ohmypi" && extra.kind === "ohmypi-legacy-agents") {
515
- const legacyRoots = yield* Effect.sync(() => {
516
- if (!existsSync$1(extra.root)) return [];
517
- return readdirSync$1(extra.root, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => ({
518
- root: join(extra.root, e.name, "sessions"),
519
- agentName: e.name,
520
- issueId: issueIdFromAgentName(e.name),
521
- sessionType: "ohmypi"
522
- }));
523
- });
524
- roots.push(...legacyRoots);
525
- }
526
- }
527
- for (const root of roots) {
528
- const sessionFiles = yield* Effect.sync(() => walkJsonl(root.root));
529
- for (const sessionFile of sessionFiles) {
530
- sessionsScanned++;
531
- if (source === "ohmypi") {
532
- const parsed = yield* Effect.sync(() => {
533
- try {
534
- return parseOhmypiSessionCostResultSync(sessionFile);
535
- } catch (cause) {
536
- const reason = cause instanceof Error ? cause.message : String(cause);
537
- errors.push(`${sessionFile}: ${reason}`);
538
- return {
539
- ok: false,
540
- reason
541
- };
542
- }
543
- });
544
- if (!parsed.ok) {
545
- markSkipped(sessionFile, parsed.reason ?? "unreadable");
546
- continue;
547
- }
548
- const events = parsed.usageEvents ?? [];
549
- if (events.length === 0) {
550
- markSkipped(sessionFile, "no-usage");
551
- continue;
552
- }
553
- const unpricedWarnings = parsed.unpricedModels ?? [];
554
- if (unpricedWarnings.length) markSkipped(sessionFile, "unpriced-model");
555
- for (const usage of events) {
556
- const derivedWarnings = unpricedWarnings.filter((warning) => warning.model === usage.model && warning.provider === usage.provider).map((warning) => ({
557
- type: "unpriced-model",
558
- ...warning
559
- }));
560
- const eventWarnings = usage.warnings?.length ? usage.warnings : derivedWarnings;
561
- for (const warning of eventWarnings) markWarning({
562
- file: sessionFile,
563
- reason: warning.reason,
564
- provider: warning.provider,
565
- model: warning.model
566
- });
567
- const ts = new Date(usage.timestamp);
568
- if (yield* record({
569
- ts,
570
- issueId: root.issueId,
571
- agentId: root.agentName,
572
- sessionId: usage.sessionId,
573
- sessionType: root.sessionType,
574
- provider: inferPiProvider(usage.model, usage.provider),
575
- model: usage.model,
576
- input: usage.input,
577
- output: usage.output,
578
- cacheRead: usage.cacheRead,
579
- cacheWrite: usage.cacheWrite,
580
- cost: usage.cost,
581
- requestId: usage.requestId,
582
- sourceFile: sessionFile,
583
- warnings: eventWarnings.length > 0 ? eventWarnings : void 0
584
- }, { dryRun: opts?.dryRun })) {
585
- imported++;
586
- noteImportedTimestamp(ts);
587
- } else duplicatesSkipped++;
588
- }
589
- continue;
590
- }
591
- const events = yield* Effect.sync(() => {
592
- try {
593
- return parseCodexSessionCostEventsSync(sessionFile);
594
- } catch (cause) {
595
- errors.push(`${sessionFile}: ${cause instanceof Error ? cause.message : String(cause)}`);
596
- return [];
597
- }
598
- });
599
- if (events.length === 0) {
600
- markSkipped(sessionFile, "no-usage");
601
- continue;
602
- }
603
- if (events.some((event) => event.model === "unknown")) markSkipped(sessionFile, "unknown-model");
604
- const codexSession = root.inferIssueFromCwd ? yield* Effect.sync(() => parseCodexSessionSync(sessionFile)) : null;
605
- const issueId = root.inferIssueFromCwd ? inferIssueFromPath(codexSession?.cwd) ?? "UNKNOWN" : root.issueId;
606
- for (const usage of events) {
607
- const ts = new Date(usage.timestamp);
608
- if (yield* record({
609
- ts,
610
- issueId,
611
- agentId: root.agentName,
612
- sessionId: usage.sessionId,
613
- sessionType: root.sessionType,
614
- provider: usage.provider,
615
- model: usage.model,
616
- input: usage.input,
617
- output: usage.output,
618
- cacheRead: usage.cacheRead,
619
- cacheWrite: usage.cacheWrite,
620
- cost: usage.cost,
621
- requestId: usage.requestId,
622
- sourceFile: sessionFile
623
- }, { dryRun: opts?.dryRun })) {
624
- imported++;
625
- noteImportedTimestamp(ts);
626
- } else duplicatesSkipped++;
627
- }
628
- }
629
- }
630
- return {
631
- imported,
632
- skipped,
633
- sessionsScanned,
634
- eventsImported: imported,
635
- duplicatesSkipped,
636
- errors,
637
- earliestEventTs,
638
- latestEventTs,
639
- warnings
640
- };
641
- });
642
- const rebuild = () => Effect.gen(function* () {
643
- return { events: 0 };
644
- });
645
- const createBudget = (spec) => Effect.gen(function* () {
646
- return mapBudget(yield* Effect.sync(() => createBudgetSync({
647
- ...spec,
648
- enabled: true
649
- })));
650
- });
651
- const deleteBudget = (id) => Effect.gen(function* () {
652
- if (!(yield* Effect.sync(() => deleteBudgetSync(id)))) return yield* Effect.fail(new BudgetNotFound({ id }));
653
- });
654
- return CostWriter.of({
655
- record,
656
- reconcile,
657
- rebuild,
658
- createBudget,
659
- deleteBudget
660
- });
661
- })).pipe(Layer.provide(Layer.mergeAll(DbLive, EventBusLive.pipe(Layer.provide(DbLive)), CostArchiveLive)));
662
- HttpApiGroup.make("costs").add(HttpApiEndpoint.get("summary", "/costs/summary", {
663
- query: {
664
- window: Schema.optional(Window),
665
- project: Schema.optional(Schema.String)
666
- },
667
- success: WindowSummary
668
- })).add(HttpApiEndpoint.get("byIssue", "/costs/by-issue", { success: Schema.Array(Rollup) })).add(HttpApiEndpoint.get("issueDetail", "/costs/issue/:id", {
669
- params: { id: IssueId },
670
- success: IssueCost
671
- })).add(HttpApiEndpoint.get("byDay", "/costs/trends", {
672
- query: {
673
- days: Schema.optional(Schema.NumberFromString),
674
- issueId: Schema.optional(IssueId)
675
- },
676
- success: Schema.Array(Rollup)
677
- })).add(HttpApiEndpoint.get("byModel", "/costs/by-model", {
678
- query: { issueId: Schema.optional(IssueId) },
679
- success: Schema.Array(Rollup)
680
- })).add(HttpApiEndpoint.get("byAgent", "/costs/by-agent", {
681
- query: { issueId: Schema.optional(IssueId) },
682
- success: Schema.Array(Rollup)
683
- })).add(HttpApiEndpoint.get("byBackgroundSource", "/costs/background", {
684
- query: { hours: Schema.optional(Schema.NumberFromString) },
685
- success: Schema.Array(Rollup)
686
- })).add(HttpApiEndpoint.get("byProject", "/costs/by-project", { success: Schema.Array(Rollup) })).add(HttpApiEndpoint.get("recent", "/costs/stream", {
687
- query: {
688
- limit: Schema.optional(Schema.NumberFromString),
689
- since: Schema.optional(Schema.String)
690
- },
691
- success: Schema.Array(CostEvent)
692
- })).add(HttpApiEndpoint.get("listBudgets", "/costs/budget", { success: Schema.Array(Budget) })).add(HttpApiEndpoint.get("checkBudget", "/costs/budget/:id", {
693
- params: { id: Schema.String },
694
- success: BudgetStatus,
695
- error: BudgetNotFound
696
- })).add(HttpApiEndpoint.post("reconcile", "/costs/reconcile", {
697
- payload: Schema.Struct({
698
- source: Schema.optional(Schema.Literals([
699
- "claude",
700
- "ohmypi",
701
- "codex",
702
- "acp",
703
- "wal"
704
- ])),
705
- dryRun: Schema.optional(Schema.Boolean),
706
- extraRoots: Schema.optional(Schema.Array(Schema.String))
707
- }),
708
- success: Schema.Struct({
709
- imported: Schema.Number,
710
- skipped: Schema.Array(Schema.Struct({
711
- file: Schema.String,
712
- reason: Schema.String
713
- })),
714
- sessionsScanned: Schema.Number,
715
- eventsImported: Schema.Number,
716
- duplicatesSkipped: Schema.Number,
717
- errors: Schema.Array(Schema.String),
718
- earliestEventTs: Schema.NullOr(Schema.String),
719
- latestEventTs: Schema.NullOr(Schema.String),
720
- warnings: Schema.Array(Schema.Struct({
721
- file: Schema.String,
722
- reason: Schema.String,
723
- provider: Schema.NullOr(Schema.String),
724
- model: Schema.String
725
- }))
726
- }),
727
- error: CostIngestError
728
- })).add(HttpApiEndpoint.post("rebuild", "/costs/rebuild", {
729
- success: Schema.Struct({ events: Schema.Number }),
730
- error: CostIngestError
731
- })).add(HttpApiEndpoint.post("createBudget", "/costs/budget", {
732
- payload: BudgetSpec,
733
- success: Budget,
734
- error: CostIngestError
735
- })).add(HttpApiEndpoint["delete"]("deleteBudget", "/costs/budget/:id", {
736
- params: { id: Schema.String },
737
- error: BudgetNotFound
738
- }));
739
- //#endregion
740
- //#region ../../lib/cloister/health.ts
741
48
  init_cost_sync();
742
49
  init_control_settings();
743
50
  init_io();
@@ -882,7 +189,7 @@ async function captureFiles(context, workspace, issueId) {
882
189
  const recordView = readRecordContinueViewSync(resolveProjectForIssue(issueId) ?? getProjectConfigFromWorkspacePath(workspace), issueId);
883
190
  if (recordView) context.continueState = recordView;
884
191
  } catch {}
885
- const claudeMd = join$1(workspace, "CLAUDE.md");
192
+ const claudeMd = join(workspace, "CLAUDE.md");
886
193
  if (existsSync(claudeMd)) context.claudeMd = readFileSync(claudeMd, "utf-8");
887
194
  } catch (error) {
888
195
  console.error("Error capturing files:", error);
@@ -1119,9 +426,9 @@ async function performKillAndSpawn(state, options) {
1119
426
  const context = await Effect.runPromise(captureHandoffContext(state, options.targetModel, options.reason));
1120
427
  stopAgentSync(state.id);
1121
428
  const prompt = buildHandoffPrompt(context, options.additionalInstructions);
1122
- const handoffDir = join$1(getAgentDir(state.id), "handoffs");
429
+ const handoffDir = join(getAgentDir(state.id), "handoffs");
1123
430
  mkdirSync(handoffDir, { recursive: true });
1124
- writeFileSync(join$1(handoffDir, `handoff-${Date.now()}.md`), prompt);
431
+ writeFileSync(join(handoffDir, `handoff-${Date.now()}.md`), prompt);
1125
432
  const newState = await spawnAgent({
1126
433
  issueId: state.issueId,
1127
434
  workspace: state.workspace,
@@ -1194,12 +501,11 @@ const performHandoff = (agentId, options) => Effect.tryPromise({
1194
501
  * Monitors agent costs against configured limits and emits alerts.
1195
502
  * Does NOT automatically stop agents - just provides visibility and warnings.
1196
503
  */
1197
- init_paths();
1198
504
  init_config();
1199
505
  /**
1200
506
  * Path to cost data file
1201
507
  */
1202
- const COST_DATA_FILE = join$1(OVERDECK_HOME, "cost-data.json");
508
+ const COST_DATA_FILE = join(OVERDECK_HOME, "cost-data.json");
1203
509
  /**
1204
510
  * Load cost data from file
1205
511
  */
@@ -1234,7 +540,7 @@ function loadCostData() {
1234
540
  */
1235
541
  function saveCostData(data) {
1236
542
  try {
1237
- const dir = dirname$1(COST_DATA_FILE);
543
+ const dir = dirname(COST_DATA_FILE);
1238
544
  if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
1239
545
  const persisted = {
1240
546
  perAgent: Object.fromEntries(data.perAgent),
@@ -1546,7 +852,7 @@ async function activeRoleRunExists(issueId, role, workspacePath) {
1546
852
  if (stateRole === role && state.status === "starting" && !await Effect.runPromise(sessionExists(candidateId))) return isFreshStarting(state);
1547
853
  if (!(stateRole === role && state.status !== "stopped" && state.status !== "error")) return false;
1548
854
  if (workspacePath && state.roleRunHead) try {
1549
- const { formatAnchorShort, snapshotWorkspaceHeadsPromise } = await import("./git-utils-Y0zG25ez.js");
855
+ const { formatAnchorShort, snapshotWorkspaceHeadsPromise } = await import("./git-utils-BAMwn9Nf.js");
1550
856
  const currentHead = await snapshotWorkspaceHeadsPromise(issueId, workspacePath);
1551
857
  if (currentHead && currentHead !== state.roleRunHead) {
1552
858
  console.log(`[cloister] ${issueId}: ${role} session ${candidateId} is stale (ran against ${formatAnchorShort(state.roleRunHead)}, HEAD is now ${formatAnchorShort(currentHead)}) — not active`);
@@ -1599,7 +905,7 @@ async function onIssueStateChangePromise(issueId, newState) {
1599
905
  });
1600
906
  return;
1601
907
  }
1602
- const { getReviewStatusSync } = await import("./review-status-CUnjjOUu.js");
908
+ const { getReviewStatusSync } = await import("./review-status-Bge_3XTR.js");
1603
909
  if (getReviewStatusSync(normalizedIssueId)?.mergeStatus === "merged") {
1604
910
  const message = `${normalizedIssueId}: skipping ${role} dispatch — merge already landed (merge_status='merged' is terminal)`;
1605
911
  console.log(`[cloister] ${message}`);
@@ -1666,7 +972,7 @@ async function onIssueStateChangePromise(issueId, newState) {
1666
972
  return;
1667
973
  }
1668
974
  const branch = `feature/${normalizedIssueId.toLowerCase()}`;
1669
- const { spawnReviewRoleForIssue } = await import("./review-agent-BUNTVJK2.js");
975
+ const { spawnReviewRoleForIssue } = await import("./review-agent-Caodi0PX.js");
1670
976
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
1671
977
  issueId: normalizedIssueId,
1672
978
  workspace,
@@ -1684,7 +990,7 @@ async function onIssueStateChangePromise(issueId, newState) {
1684
990
  }
1685
991
  if (role === "test") {
1686
992
  const branch = `feature/${normalizedIssueId.toLowerCase()}`;
1687
- const { dispatchTestAgentAndNotify } = await import("./test-agent-queue-BUtWhNcc.js");
993
+ const { dispatchTestAgentAndNotify } = await import("./test-agent-queue-Cu0D6BYe.js");
1688
994
  await Effect.runPromise(dispatchTestAgentAndNotify(normalizedIssueId, workspace ?? void 0, branch));
1689
995
  const message = `${normalizedIssueId}: test role dispatched from lifecycle state '${newState}'`;
1690
996
  console.log(`[cloister] ${message}`);
@@ -1696,7 +1002,7 @@ async function onIssueStateChangePromise(issueId, newState) {
1696
1002
  });
1697
1003
  return;
1698
1004
  }
1699
- const { spawnRun } = await import("./agents-megfmQHM.js");
1005
+ const { spawnRun } = await import("./agents-DixZjXWm.js");
1700
1006
  if (role === "plan") {
1701
1007
  const decision = decideAutonomousPlanDispatch(await gatherAutonomousPlanDispatchInput(normalizedIssueId));
1702
1008
  if (!decision.allow) {
@@ -1824,9 +1130,9 @@ async function handleCloisterDomainEventPromise(event) {
1824
1130
  const payload = payloadRecord(event);
1825
1131
  const agentId = typeof payload["agentId"] === "string" ? payload["agentId"] : void 0;
1826
1132
  if (agentId && payload["hookName"] === "PostCompact" && !agentId.startsWith("conv-")) try {
1827
- const { continueCompactedAgentAfterHook } = await import("./compaction-continuation-D5voR1ME.js");
1828
- const { findLastCompactBoundary } = await import("./conversation-service-BxrB5lUT.js");
1829
- const { deliverAgentMessage, getAgentStateSync } = await import("./agents-megfmQHM.js");
1133
+ const { continueCompactedAgentAfterHook } = await import("./compaction-continuation-CVjbdGKt.js");
1134
+ const { findLastCompactBoundary } = await import("./conversation-service-BL-asWPX.js");
1135
+ const { deliverAgentMessage, getAgentStateSync } = await import("./agents-DixZjXWm.js");
1830
1136
  const continued = await continueCompactedAgentAfterHook({
1831
1137
  agentId,
1832
1138
  capturePane: (target) => Effect.runPromise(capturePane(target, 80)),
@@ -1848,34 +1154,34 @@ async function handleCloisterDomainEventPromise(event) {
1848
1154
  return;
1849
1155
  }
1850
1156
  if (event.type === "linear_mcp_auth.healthy") {
1851
- const { processLinearMcpAuthWake } = await import("./linear-mcp-auth-LCo9AWUd.js");
1157
+ const { processLinearMcpAuthWake } = await import("./linear-mcp-auth-CtRKSHy5.js");
1852
1158
  await processLinearMcpAuthWake();
1853
1159
  return;
1854
1160
  }
1855
1161
  if (event.type === "agent.stopped") {
1856
1162
  const agentId = event.payload?.agentId;
1857
1163
  if (agentId) {
1858
- const { handleAgentStoppedEvent, handleAgentStoppedForOrphanReviewerSessions } = await import("./deacon-BEH-IY0v.js");
1859
- const { handleAgentLifecycleEventForIdleStack } = await import("./idle-stack-reaper-CHtCNpvd.js");
1164
+ const { handleAgentStoppedEvent, handleAgentStoppedForOrphanReviewerSessions } = await import("./deacon-e6py3jkM.js");
1165
+ const { handleAgentLifecycleEventForIdleStack } = await import("./idle-stack-reaper-CBelVOE3.js");
1860
1166
  handleAgentLifecycleEventForIdleStack(agentId);
1861
1167
  const slotMatch = /^agent-(.+)-slot-\d+$/.exec(agentId);
1862
1168
  await Promise.all([
1863
1169
  handleAgentStoppedEvent(agentId),
1864
1170
  handleAgentStoppedForOrphanReviewerSessions(agentId),
1865
- slotMatch ? (await import("./deacon-swarm-BHX-kR1b.js")).coordinateSwarmSlots({ issueId: slotMatch[1].toUpperCase() }) : Promise.resolve([])
1171
+ slotMatch ? (await import("./messaging-Dfbhgjd6.js")).messageAgent(`agent-${slotMatch[1].toLowerCase()}`, `[swarm-event] ${agentId} stopped; run pan swarm status ${slotMatch[1].toUpperCase()} --json`, "reactive:swarm-event") : Promise.resolve()
1866
1172
  ]);
1867
1173
  }
1868
1174
  return;
1869
1175
  }
1870
1176
  if (event.type === "agent.started") {
1871
1177
  const agentId = event.payload?.agentId;
1872
- if (agentId) (await import("./idle-stack-reaper-CHtCNpvd.js")).handleAgentLifecycleEventForIdleStack(agentId);
1178
+ if (agentId) (await import("./idle-stack-reaper-CBelVOE3.js")).handleAgentLifecycleEventForIdleStack(agentId);
1873
1179
  return;
1874
1180
  }
1875
1181
  if (event.type === "agent.heartbeat_dead") {
1876
1182
  const agentId = event.payload?.agentId;
1877
1183
  if (agentId) {
1878
- const { handleAgentHeartbeatDeadEvent } = await import("./deacon-BEH-IY0v.js");
1184
+ const { handleAgentHeartbeatDeadEvent } = await import("./deacon-e6py3jkM.js");
1879
1185
  await handleAgentHeartbeatDeadEvent(agentId, "event");
1880
1186
  }
1881
1187
  return;
@@ -1884,7 +1190,7 @@ async function handleCloisterDomainEventPromise(event) {
1884
1190
  const payload = event.payload;
1885
1191
  const issueId = payload?.issueId;
1886
1192
  if (issueId) {
1887
- const { handleReviewCoordinatorDied } = await import("./deacon-BEH-IY0v.js");
1193
+ const { handleReviewCoordinatorDied } = await import("./deacon-e6py3jkM.js");
1888
1194
  await handleReviewCoordinatorDied(issueId, payload?.sessionName ?? "", payload?.reason ?? "");
1889
1195
  }
1890
1196
  return;
@@ -1892,7 +1198,7 @@ async function handleCloisterDomainEventPromise(event) {
1892
1198
  if (event.type === "work.completed") {
1893
1199
  const issueId = event.payload?.issueId;
1894
1200
  if (issueId) {
1895
- const { handleWorkCompleted } = await import("./deacon-BEH-IY0v.js");
1201
+ const { handleWorkCompleted } = await import("./deacon-e6py3jkM.js");
1896
1202
  await handleWorkCompleted(issueId);
1897
1203
  }
1898
1204
  }
@@ -1903,12 +1209,12 @@ async function handleCloisterDomainEventPromise(event) {
1903
1209
  const status = payload?.status?.toLowerCase();
1904
1210
  if (issueId) {
1905
1211
  if (canonicalStatus === "closed" || status === "closed") {
1906
- const { handleIssueStatusChangedClosed } = await import("./closed-issue-reaper-Cl2h9AfT.js");
1212
+ const { handleIssueStatusChangedClosed } = await import("./closed-issue-reaper-TymtZM37.js");
1907
1213
  await handleIssueStatusChangedClosed(issueId);
1908
1214
  return;
1909
1215
  }
1910
1216
  if (canonicalStatus === "todo" || status === "planned" || status === "todo") {
1911
- const { handleOrphanProposedSpec } = await import("./orphan-proposed-reconciler-BAE5AZ_e.js");
1217
+ const { handleOrphanProposedSpec } = await import("./orphan-proposed-reconciler-CnP0K2v3.js");
1912
1218
  await handleOrphanProposedSpec(issueId);
1913
1219
  }
1914
1220
  }
@@ -1955,7 +1261,7 @@ const DEFAULT_FPP_CONFIG = {
1955
1261
  /**
1956
1262
  * Path to violations data file
1957
1263
  */
1958
- const VIOLATIONS_DATA_FILE = join$1(OVERDECK_HOME, "fpp-violations.json");
1264
+ const VIOLATIONS_DATA_FILE = join(OVERDECK_HOME, "fpp-violations.json");
1959
1265
  /**
1960
1266
  * Load violations from file
1961
1267
  */
@@ -1975,7 +1281,7 @@ function loadViolations() {
1975
1281
  */
1976
1282
  function saveViolations(violations) {
1977
1283
  try {
1978
- const dir = dirname$1(VIOLATIONS_DATA_FILE);
1284
+ const dir = dirname(VIOLATIONS_DATA_FILE);
1979
1285
  if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
1980
1286
  const persisted = { violations: Array.from(violations.entries()) };
1981
1287
  const tempFile = `${VIOLATIONS_DATA_FILE}.tmp`;
@@ -2101,12 +1407,12 @@ init_paths();
2101
1407
  /**
2102
1408
  * Handoff log file path
2103
1409
  */
2104
- const HANDOFF_LOG_FILE = join$1(OVERDECK_HOME, "logs", "handoffs.jsonl");
1410
+ const HANDOFF_LOG_FILE = join(OVERDECK_HOME, "logs", "handoffs.jsonl");
2105
1411
  /**
2106
1412
  * Ensure log directory exists
2107
1413
  */
2108
1414
  function ensureLogDir() {
2109
- const logDir = join$1(OVERDECK_HOME, "logs");
1415
+ const logDir = join(OVERDECK_HOME, "logs");
2110
1416
  if (!existsSync(logDir)) mkdirSync(logDir, { recursive: true });
2111
1417
  }
2112
1418
  /**
@@ -2301,7 +1607,7 @@ async function rotateSpecialistSessionPromise(specialistName, workingDir) {
2301
1607
  let memoryFile;
2302
1608
  if (specialistName === "merge-agent" && workingDir) {
2303
1609
  memoryContent = await Effect.runPromise(buildMergeAgentMemory(workingDir));
2304
- memoryFile = join$1(OVERDECK_HOME, `merge-agent-memory-${Date.now()}.md`);
1610
+ memoryFile = join(OVERDECK_HOME, `merge-agent-memory-${Date.now()}.md`);
2305
1611
  writeFileSync(memoryFile, memoryContent);
2306
1612
  console.log(`Built memory file: ${memoryFile}`);
2307
1613
  }
@@ -2606,7 +1912,7 @@ async function performHealthCheck(host) {
2606
1912
  for (const health of needsAttention) {
2607
1913
  const idleAgentState = getAgentStateSync(health.agentId);
2608
1914
  if (idleAgentState?.role === "sequencer") continue;
2609
- const { shouldSkipIdlePokeForAgent } = await import("./stuck-remediation-TNM1VhZb.js");
1915
+ const { shouldSkipIdlePokeForAgent } = await import("./stuck-remediation-DALieAkx.js");
2610
1916
  if (shouldSkipIdlePokeForAgent(idleAgentState)) {
2611
1917
  host.pokeProgress.delete(health.agentId);
2612
1918
  continue;
@@ -2821,8 +2127,8 @@ async function checkCompletionMarkers(host) {
2821
2127
  if (!existsSync(AGENTS_DIR)) return;
2822
2128
  const agentDirs = readdirSync(AGENTS_DIR, { withFileTypes: true }).filter((d) => d.isDirectory() && d.name.startsWith("agent-"));
2823
2129
  for (const dir of agentDirs) {
2824
- const completedFile = join$1(AGENTS_DIR, dir.name, "completed");
2825
- const processedFile = join$1(AGENTS_DIR, dir.name, "completed.processed");
2130
+ const completedFile = join(AGENTS_DIR, dir.name, "completed");
2131
+ const processedFile = join(AGENTS_DIR, dir.name, "completed.processed");
2826
2132
  if (!existsSync(completedFile)) continue;
2827
2133
  if (existsSync(processedFile)) try {
2828
2134
  if (statSync(completedFile).mtimeMs > statSync(processedFile).mtimeMs) {
@@ -2854,7 +2160,7 @@ async function checkCompletionMarkers(host) {
2854
2160
  if (retryCount === Infinity) host.processedCompletions.delete(dir.name);
2855
2161
  else if (retryCount >= 3) continue;
2856
2162
  const issueId = dir.name.replace("agent-", "").toUpperCase();
2857
- const { getReviewStatusSync } = await import("./review-status-CUnjjOUu.js");
2163
+ const { getReviewStatusSync } = await import("./review-status-Bge_3XTR.js");
2858
2164
  const existingReview = getReviewStatusSync(issueId);
2859
2165
  if (existingReview && ["reviewing", "passed"].includes(existingReview.reviewStatus || "")) {
2860
2166
  console.log(`🔔 Cloister: Completion marker for ${issueId} — review already ${existingReview.reviewStatus}, marking processed`);
@@ -2979,7 +2285,7 @@ async function progressFingerprint(_host, agentId) {
2979
2285
  let head = "";
2980
2286
  if (state?.workspace) try {
2981
2287
  if (state.issueId) {
2982
- const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-Y0zG25ez.js");
2288
+ const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-BAMwn9Nf.js");
2983
2289
  head = await snapshotWorkspaceHeadsPromise(state.issueId, state.workspace) ?? "";
2984
2290
  } else {
2985
2291
  const { stdout } = await execAsync("git rev-parse HEAD", {
@@ -2993,7 +2299,7 @@ async function progressFingerprint(_host, agentId) {
2993
2299
  try {
2994
2300
  const { stdout } = await execFileAsync("tmux", [
2995
2301
  "-L",
2996
- "overdeck",
2302
+ getManagedTmuxSocketName(),
2997
2303
  "capture-pane",
2998
2304
  "-t",
2999
2305
  exactPaneTarget(agentId),
@@ -3021,7 +2327,7 @@ async function pokeAgentWithEscalation(host, agentId) {
3021
2327
  ineffective
3022
2328
  });
3023
2329
  if (ineffective >= 4) {
3024
- const { setAgentPausedSync } = await import("./agent-state-DH_-Jkua.js");
2330
+ const { setAgentPausedSync } = await import("./agent-state-BrUPf_7Z.js");
3025
2331
  try {
3026
2332
  setAgentPausedSync(agentId, `needs-you: idle-alive — no observable progress across ${ineffective + 1} pokes (idle-alive escalation)`);
3027
2333
  host.emit({
@@ -3094,7 +2400,7 @@ async function handleAgentCrash(host, agentId) {
3094
2400
  if (skipReason) {
3095
2401
  let recoverUnfinishedOneShot = false;
3096
2402
  if (ONE_SHOT_ROLES.has(agentState.role) && agentState.sessionId && agentState.issueId) try {
3097
- const { getReviewStatusSync } = await import("./review-status-CUnjjOUu.js");
2403
+ const { getReviewStatusSync } = await import("./review-status-Bge_3XTR.js");
3098
2404
  const status = getReviewStatusSync(agentState.issueId);
3099
2405
  recoverUnfinishedOneShot = !(status ? isRoleTerminal(agentState.role, {
3100
2406
  reviewStatus: status.reviewStatus,
@@ -3302,8 +2608,8 @@ init_control_settings();
3302
2608
  init_paths();
3303
2609
  init_tmux();
3304
2610
  init_activity_logger();
3305
- const CLOISTER_STATE_FILE = join$1(OVERDECK_HOME, "cloister.state");
3306
- const LEGACY_SPECIALISTS_DIR = join$1(OVERDECK_HOME, "specialists");
2611
+ const CLOISTER_STATE_FILE = join(OVERDECK_HOME, "cloister.state");
2612
+ const LEGACY_SPECIALISTS_DIR = join(OVERDECK_HOME, "specialists");
3307
2613
  async function cleanupLegacySpecialistsDirectory() {
3308
2614
  await rm(LEGACY_SPECIALISTS_DIR, {
3309
2615
  recursive: true,
@@ -3531,7 +2837,7 @@ var CloisterService = class {
3531
2837
  let clearedSpecialistCount = 0;
3532
2838
  try {
3533
2839
  if (existsSync(AGENTS_DIR)) {
3534
- const { isRunning: isSpecialistRunning } = await import("./specialists-D8gsOCwh.js");
2840
+ const { isRunning: isSpecialistRunning } = await import("./specialists-CYt1U3Zm.js");
3535
2841
  const entries = readdirSync(AGENTS_DIR, { withFileTypes: true });
3536
2842
  for (const entry of entries) {
3537
2843
  if (!entry.isDirectory()) continue;
@@ -3566,8 +2872,8 @@ var CloisterService = class {
3566
2872
  }
3567
2873
  try {
3568
2874
  const reviewStatuses = loadReviewStatuses();
3569
- const { resolveProjectFromIssueSync } = await import("./projects-DvPEAP18.js");
3570
- const { getTmuxSessionName, getAllProjectSpecialistStatuses } = await import("./specialists-D8gsOCwh.js");
2875
+ const { resolveProjectFromIssueSync } = await import("./projects-BMuEf14J.js");
2876
+ const { getTmuxSessionName, getAllProjectSpecialistStatuses } = await import("./specialists-CYt1U3Zm.js");
3571
2877
  const activeReviewIssues = /* @__PURE__ */ new Set();
3572
2878
  try {
3573
2879
  const projSpecs = await getAllProjectSpecialistStatuses();
@@ -3578,7 +2884,7 @@ var CloisterService = class {
3578
2884
  }
3579
2885
  const globalRs = getAgentRuntimeStateSync(getTmuxSessionName("review-agent"));
3580
2886
  if (globalRs?.state === "active" && globalRs.currentIssue) activeReviewIssues.add(globalRs.currentIssue.toUpperCase());
3581
- const { listRunningAgents } = await import("./agents-megfmQHM.js");
2887
+ const { listRunningAgents } = await import("./agents-DixZjXWm.js");
3582
2888
  const agents = await Effect.runPromise(listRunningAgents());
3583
2889
  for (const agent of agents) {
3584
2890
  if (agent.status === "stopped" || agent.status === "error") continue;
@@ -3621,7 +2927,7 @@ var CloisterService = class {
3621
2927
  continue;
3622
2928
  }
3623
2929
  const branch = `feature/${issueId.toLowerCase()}`;
3624
- const { spawnReviewRoleForIssue } = await import("./review-agent-BUNTVJK2.js");
2930
+ const { spawnReviewRoleForIssue } = await import("./review-agent-Caodi0PX.js");
3625
2931
  const dispatchResult = await Effect.runPromise(spawnReviewRoleForIssue({
3626
2932
  issueId,
3627
2933
  workspace,
@@ -3689,7 +2995,7 @@ var CloisterService = class {
3689
2995
  });
3690
2996
  await this.subscribeToDomainEvents();
3691
2997
  try {
3692
- const { processLinearMcpAuthWake } = await import("./linear-mcp-auth-LCo9AWUd.js");
2998
+ const { processLinearMcpAuthWake } = await import("./linear-mcp-auth-CtRKSHy5.js");
3693
2999
  await processLinearMcpAuthWake();
3694
3000
  console.log(" ✓ Reconciled pending Linear MCP auth wakes");
3695
3001
  } catch (error) {
@@ -3716,7 +3022,7 @@ var CloisterService = class {
3716
3022
  console.log(" ✓ Cloister event store provider installed");
3717
3023
  return;
3718
3024
  }
3719
- const { initEventStore } = await import("./event-store-BgEjNsvk.js");
3025
+ const { initEventStore } = await import("./event-store-C50Qt-f1.js");
3720
3026
  const store = await initEventStore();
3721
3027
  this.eventStore = store;
3722
3028
  this.domainEventUnsubscribe = store.subscribe((event) => {
@@ -4064,6 +3370,6 @@ function getCloisterService() {
4064
3370
  return globalService;
4065
3371
  }
4066
3372
  //#endregion
4067
- export { generateHealthSummary as a, CostDoorLive as c, CostWriter as d, performHandoff as i, CostResolver as l, readCloisterStateFile as n, getAgentHealth as o, checkAllTriggers as r, getAgentsNeedingAttention as s, getCloisterService as t, CostResolverLive as u };
3373
+ export { generateHealthSummary as a, performHandoff as i, readCloisterStateFile as n, getAgentHealth as o, checkAllTriggers as r, getAgentsNeedingAttention as s, getCloisterService as t };
4068
3374
 
4069
- //# sourceMappingURL=service-BLb_CyPL.js.map
3375
+ //# sourceMappingURL=service-CThO0Sar.js.map