@overdeck/desktop 0.45.15 → 0.45.18

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 (372) hide show
  1. package/dist-electron/main.js +149 -158
  2. package/dist-electron/main.js.map +1 -1
  3. package/dist-electron/preload.js +17 -2
  4. package/dist-electron/preload.js.map +1 -1
  5. package/package.json +5 -4
  6. package/server/acceptance-criteria-aQFKQf-J.js +62 -0
  7. package/server/{advancing-selfheal-CSuZ31bB.js → advancing-selfheal-DgwQgm4D.js} +6 -5
  8. package/server/{agent-gc-D_DxfBHR.js → agent-gc-kpzxqT7P.js} +3 -3
  9. package/server/agent-state-C_6TG-Ad.js +3 -0
  10. package/server/{agent-state-service-C_2ZAQRP.js → agent-state-service-BUfovFfB.js} +1 -1
  11. package/server/{agent-state-service-BZkvgQf4.js → agent-state-service-nUD3qfob.js} +9 -52
  12. package/server/agents-BA15AQqo.js +3 -0
  13. package/server/{briefing-freshness-Kh5V8RTh.js → agents-BHBxr8c9.js} +5 -131
  14. package/server/{archive-planning-DkivCk1A.js → archive-planning-CzCW9Ifl.js} +5 -10
  15. package/server/{archive-planning-CTILQRnV.js → archive-planning-D-QsBufn.js} +1 -1
  16. package/server/{artifact-index-jobs-CmsvQ1ey.js → artifact-index-jobs-qqa51B2Z.js} +2 -2
  17. package/server/{backlog-auto-trigger-ueRaT8Dy.js → backlog-auto-trigger-B7Bi0bvY.js} +3 -3
  18. package/server/behavior-CWqNMqE5.js +10 -0
  19. package/server/briefing-freshness-DuxIE1yr.js +131 -0
  20. package/server/{checkpoint-manager-fu9oVsR-.js → checkpoint-manager-DF6hb9Jw.js} +3 -3
  21. package/server/{checkpoint-manager-CAFos8e1.js → checkpoint-manager-DixkLus7.js} +1 -1
  22. package/server/checkpoint-worker.js +1 -1
  23. package/server/{checkpoints-DvhGi8P_.js → checkpoints-B1Z42tJE.js} +1 -1
  24. package/server/{checkpoints-1BqOlS4q.js → checkpoints-BiviJqei.js} +2 -2
  25. package/server/claude-hooks-provision-BeMGi4ty.js +3 -0
  26. package/server/{claude-hooks-provision-s_wdpeVj.js → claude-hooks-provision-Du_PkMsp.js} +132 -114
  27. package/server/{claude-permissions-CaWqysff.js → claude-permissions-BB6agcOZ.js} +2 -2
  28. package/server/{claude-settings-overlay-CcTf0xzG.js → claude-settings-overlay-CAq2oFSK.js} +2 -2
  29. package/server/{claude-settings-overlay-BbA4FbVI.js → claude-settings-overlay-DUWWLd6M.js} +1 -1
  30. package/server/cli-BFgrSWKV.js +3 -0
  31. package/server/{cli-BwCvCUBK.js → cli-C33xPZNm.js} +9 -9
  32. package/server/{cliproxy-C2xC-3vH.js → cliproxy-BQX1TL6N.js} +1 -1
  33. package/server/{cliproxy-BsoNNDAj.js → cliproxy-CGBA1GzA.js} +2 -2
  34. package/server/{close-issue-BleIwP3f.js → close-issue-DNv8npc1.js} +5 -5
  35. package/server/{closed-issue-reaper-BwUUvjEW.js → closed-issue-reaper-DrqgBJlr.js} +1 -1
  36. package/server/{closed-issue-reaper-mC5pujeb.js → closed-issue-reaper-LoMnnjtJ.js} +9 -9
  37. package/server/codex-DxLivxri.js +3 -0
  38. package/server/{behavior-Cpj03N4v.js → codex-parser-DboQnEXN.js} +3 -9
  39. package/server/{codex-DW60_5j2.js → codex-sgWVCGUd.js} +43 -17
  40. package/server/{config-BRNQJXhA.js → config-6MCHOZ2N.js} +1 -1
  41. package/server/{config-ZNnMpIlh.js → config-DfaUXr6r.js} +2 -2
  42. package/server/{config-yaml-Dcz-8uit.js → config-yaml-CqaAyn8y.js} +149 -80
  43. package/server/{conflict-gate-DTje2Ll7.js → conflict-gate-BF_zhcmb.js} +3 -3
  44. package/server/{conflict-gate-DGT8jCLp.js → conflict-gate-BubJprtD.js} +1 -1
  45. package/server/{context-layers-BdUCQ-cl.js → context-layers-BFrxfl0l.js} +17 -3
  46. package/server/{context-layers-ByOWUjUg.js → context-layers-DWL_8HhY.js} +2 -2
  47. package/server/{control-settings-DwkAeooY.js → control-settings-BguNQ1F_.js} +4 -4
  48. package/server/{conversation-compaction-WYQZUVDm.js → conversation-compaction-CRKAf2qP.js} +1 -1
  49. package/server/{conversation-compaction-OTYgd6eg.js → conversation-compaction-DxSXl0pT.js} +8 -8
  50. package/server/{conversation-service-C_kNZPLx.js → conversation-service-DzuY9qoH.js} +1 -1
  51. package/server/{conversation-service-BR1OgvxO.js → conversation-service-mFVFdDQK.js} +6 -5
  52. package/server/{conversations-DG2M8WnT.js → conversations-BX5aD-6F.js} +4 -4
  53. package/server/{conversations-izHvSoAR.js → conversations-BajHQ60c.js} +1 -1
  54. package/server/{cost-DQ2ajr_m.js → cost-BoqD1Pxz.js} +2 -2
  55. package/server/{cost-B2mj17iG.js → cost-DuZ5vlv-.js} +3 -3
  56. package/server/{cost-sync-gTayEuWP.js → cost-sync-BYnmnMkY.js} +3 -3
  57. package/server/{dag-CqTehWpY.js → dag-C6kYyF17.js} +7 -243
  58. package/server/{dangerous-git-ops-DDWQlPC3.js → dangerous-git-ops-q5OPtXMd.js} +1 -1
  59. package/server/dashboard-db-worker.js +6 -6
  60. package/server/{deacon-BqW9HMew.js → deacon-CwCiNuEZ.js} +3 -3
  61. package/server/{deacon-DrKDBeJL.js → deacon-Dru5onpk.js} +258 -167
  62. package/server/{deacon-nudge-log-D1wEK6zF.js → deacon-nudge-log-ilDfxrhK.js} +1 -1
  63. package/server/{deacon-swarm-CO_A7xyd.js → deacon-swarm-BPmBmSoU.js} +298 -72
  64. package/server/deacon-swarm-CKyGJng1.js +2 -0
  65. package/server/deacon.js +14 -7
  66. package/server/{devcontainer-renderer-BQolp_qZ.js → devcontainer-renderer-BqGNCzvN.js} +3 -3
  67. package/server/{dist-Bc32rWJB.js → dist-BwlEiLCU.js} +1 -1
  68. package/server/dist-Bx4KkgYL.js +3 -0
  69. package/server/{dist-src-Byxt1ifL.js → dist-src-BE0Denfs.js} +1 -1
  70. package/server/{docker-s-esqZ__.js → docker-CNjXS72x.js} +2 -2
  71. package/server/{ensure-devcontainer-DA4-jF6R.js → ensure-devcontainer-5e9xOve4.js} +4 -4
  72. package/server/{ensure-devcontainer-pUVaT0h3.js → ensure-devcontainer-C6gyUQdE.js} +1 -1
  73. package/server/{esm-shims-CJHy8CZY.js → esm-shims-Cso7IGBC.js} +1 -1
  74. package/server/{event-store-CcJAhKCl.js → event-store-D9UhQyMS.js} +1 -1
  75. package/server/{event-store-DRte2Rwt.js → event-store-KZnWUKWh.js} +3 -3
  76. package/server/{events-Bej1w_k8.js → events-2eFUPdqz.js} +3 -3
  77. package/server/{events-CtsLScn8.js → events-BYbvqZky.js} +1 -1
  78. package/server/{factory-FN727tWr.js → factory-BtaRsHFC.js} +20 -17
  79. package/server/{feature-registry-population-ie-yBcQC.js → feature-registry-population-Ca2UaV0U.js} +4 -4
  80. package/server/{feature-registry-storage-CkZTFSsn.js → feature-registry-storage-DaP-bQxO.js} +2 -2
  81. package/server/{features-Dtm9ABuz.js → features-DqvaoQoa.js} +2 -2
  82. package/server/{feedback-target-BYtpyt1i.js → feedback-target-BXWdOiYI.js} +9 -7
  83. package/server/{feedback-target-DVJQDiE4.js → feedback-target-BblmMe9P.js} +1 -1
  84. package/server/{feedback-writer-DOUhyIW2.js → feedback-writer-CULeOOY4.js} +1 -1
  85. package/server/{feedback-writer-fdE1BzeL.js → feedback-writer-Dn8o9ZyE.js} +4 -4
  86. package/server/{flywheel-Bi82iiNl.js → flywheel-BUWdcfhq.js} +1 -1
  87. package/server/{flywheel-Bv3wv2S6.js → flywheel-CqkO3cDj.js} +15 -28
  88. package/server/{flywheel-CUErLAyN.js → flywheel-D9r1mw2U.js} +13 -13
  89. package/server/{flywheel-merge-order-DXjeBnJ1.js → flywheel-merge-order-LDzQDwSg.js} +1 -1
  90. package/server/{flywheel-merge-order-BaEN3iyN.js → flywheel-merge-order-VtjUweEb.js} +7 -7
  91. package/server/forge-DJy3Zx4s.js +2 -0
  92. package/server/{forge-ButEdJ31.js → forge-wEollMCi.js} +22 -12
  93. package/server/{from-CbtTxftl.js → from-B2tOYhYV.js} +1 -1
  94. package/server/{fts-db-CBgBLZcL.js → fts-db-Bgzn2RO7.js} +2 -2
  95. package/server/{fts-operations-CI9Xuo_1.js → fts-operations-Bj8yutnR.js} +2 -2
  96. package/server/{git-utils-ClfpP47N.js → git-utils-GxlL0tmt.js} +2 -2
  97. package/server/{git-utils-BCLRWQ-y.js → git-utils-q8jNoBts.js} +1 -1
  98. package/server/{github-app-DRD2woO0.js → github-app-BrYwK_Gb.js} +1 -1
  99. package/server/{github-app-DscZ0_B6.js → github-app-tUbb8Ldr.js} +8 -3
  100. package/server/{github-client-DpiZnxGH.js → github-client-BwBU41jK.js} +3 -3
  101. package/server/{github-client-iFRw8f7e.js → github-client-D6CNsftm.js} +1 -1
  102. package/server/{github-pr-lookup-D-EBexxC.js → github-pr-lookup-BS5PqkJb.js} +2 -2
  103. package/server/{harness-resolve-iMjyNUJ2.js → harness-resolve-Dx8hUsvC.js} +3 -3
  104. package/server/{health-events-CRdxDFN2.js → health-events-2DLp-5Xp.js} +2 -2
  105. package/server/{health-events-B_WsQyYm.js → health-events-B0mj6Iae.js} +1 -1
  106. package/server/{hooks-C1ScyVxP.js → hooks-BDcQJDUe.js} +1 -1
  107. package/server/{hooks-C9b7Vqpw.js → hooks-BS_JrvYP.js} +3 -3
  108. package/server/hume-B4seN95Y.js +3 -0
  109. package/server/{hume-TQ5pvOZ_.js → hume-BRhNKyXQ.js} +2 -2
  110. package/server/{idle-stack-reaper-B1kG7B_X.js → idle-stack-reaper-BCITXNW5.js} +2 -2
  111. package/server/{idle-stack-reaper-iFVOAoJy.js → idle-stack-reaper-C1ymihno.js} +1 -1
  112. package/server/{infra-bpq1MHKU.js → infra-_Kx1m9pm.js} +9 -4
  113. package/server/{injection-BLWfwTVZ.js → injection-Bvhyg_MV.js} +1 -1
  114. package/server/{injection-DJqWld1v.js → injection-CCaYkofq.js} +7 -7
  115. package/server/{inspect-agent-DytCsltn.js → inspect-agent-BqyZ4pCo.js} +35 -67
  116. package/server/inspect-agent-DCJQm9Wu.js +2 -0
  117. package/server/{internal-token-CjlhdufS.js → internal-token-Cl-1IxaE.js} +2 -2
  118. package/server/{internal-token-CCaWaTwE.js → internal-token-D-t28de5.js} +1 -1
  119. package/server/{io-BiQ2Cs3k.js → io-DkC4sFSy.js} +42 -56
  120. package/server/{issue-closed-FApNiOOs.js → issue-closed-Cpl4VDUM.js} +41 -6
  121. package/server/{issue-lifecycle-C-K53ASY.js → issue-lifecycle-CFR8TJ22.js} +22 -37
  122. package/server/{issue-lifecycle-BkFWNjlD.js → issue-lifecycle-YNTy3OT3.js} +1 -1
  123. package/server/{issue-service-singleton-bG1WdSdQ.js → issue-service-singleton-D81mCts_.js} +1 -1
  124. package/server/{issue-service-singleton-CuHGpJJP.js → issue-service-singleton-ldvUUXi3.js} +29 -29
  125. package/server/{issues-CwQMphDH.js → issues-DIEHt9sq.js} +2 -2
  126. package/server/{jsonl-parser-dNIjHgym.js → jsonl-parser-Cd5jIqh7.js} +3 -3
  127. package/server/{label-cleanup-DYvAZknd.js → label-cleanup-Btny6Gyo.js} +3 -3
  128. package/server/{state-home-CRowbXqU.js → launcher-generator-BXLM9f4b.js} +7 -127
  129. package/server/{layers-CD6FysRU.js → layers-gCJlK62m.js} +2 -2
  130. package/server/lifecycle-D7aQUnTO.js +12 -0
  131. package/server/{lifecycle-io-C_Wu0_i-.js → lifecycle-io-DQBF-GHO.js} +1 -1
  132. package/server/{lifecycle-io-CeYxP3cE.js → lifecycle-io-FfPUtz-y.js} +36 -47
  133. package/server/{linear-client-EtVyblVz.js → linear-client-CDH2D6Qy.js} +3 -3
  134. package/server/{linear-client-4qoKnuQu.js → linear-client-WrYrUIAH.js} +1 -1
  135. package/server/memory-fts-worker.js +1 -1
  136. package/server/{merge-7rqkTUm2.js → merge-BsDgUxFz.js} +3 -3
  137. package/server/{merge-brm721Es.js → merge-Dervs4BF.js} +1 -1
  138. package/server/{merge-agent-4Zhlgvqp.js → merge-agent-D6DNhe9j.js} +64 -51
  139. package/server/{merge-agent-36wfYm2u.js → merge-agent-DMQTJMP0.js} +1 -1
  140. package/server/{merge-batch-itfnwdsT.js → merge-batch-Bv6Z5K2H.js} +1 -1
  141. package/server/{merge-blockers-Bto_Oe_o.js → merge-blockers-WWWi6Ur2.js} +2 -2
  142. package/server/merge-ops-h9OCnIVz.js +2 -0
  143. package/server/{merge-rebase-Czfqfe4q.js → merge-rebase-Czth9ggm.js} +2 -2
  144. package/server/{merge-set-BIkGQL9j.js → merge-set-DNc4zBqd.js} +3 -3
  145. package/server/{merge-set-G1RHcu3D.js → merge-set-vuE3MEVt.js} +1 -1
  146. package/server/{merge-sync-B43Dybea.js → merge-sync-B2KSk54U.js} +2 -2
  147. package/server/{merge-sync-DIrmlZUr.js → merge-sync-B9nHdUGx.js} +1 -1
  148. package/server/{merge-train-DGqVuNZV.js → merge-train-DJgr81tF.js} +3 -3
  149. package/server/{merge-train-deps-q15XLnAS.js → merge-train-deps-B2OWS0k9.js} +4 -4
  150. package/server/{merge-verification-Cqfxx6bE.js → merge-verification-BBIXUEqa.js} +4 -4
  151. package/server/{multipart-parser-CiPxxfUH.js → multipart-parser-9DhuAkPd.js} +2 -2
  152. package/server/{no-resume-mode-yrPEQ_pC.js → no-resume-mode-Gh5R_YLF.js} +1 -1
  153. package/server/node_modules/.package-lock.json +11 -11
  154. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  155. package/server/node_modules/toml/README.md +54 -0
  156. package/server/node_modules/toml/index.d.ts +42 -1
  157. package/server/node_modules/toml/index.js +3 -3
  158. package/server/node_modules/toml/lib/compiler.js +35 -3
  159. package/server/node_modules/toml/lib/parser.js +224 -143
  160. package/server/node_modules/toml/package.json +3 -1
  161. package/server/node_modules/ws/lib/receiver.js +15 -32
  162. package/server/node_modules/ws/lib/websocket-server.js +4 -4
  163. package/server/node_modules/ws/lib/websocket.js +4 -4
  164. package/server/node_modules/ws/package.json +5 -1
  165. package/server/{orphan-proposed-reconciler-BWWHn4Lr.js → orphan-proposed-reconciler-B8H41C4a.js} +14 -24
  166. package/server/{orphan-proposed-reconciler-DAD9FJtQ.js → orphan-proposed-reconciler-DbTmT7qy.js} +1 -1
  167. package/server/package-lock.json +12 -12
  168. package/server/package.json +1 -1
  169. package/server/{pan-dir-Bj7Hy8iu.js → pan-dir-BTw4MdSe.js} +4 -4
  170. package/server/{paths-C9DkhIOT.js → paths-Btkc8mzp.js} +2 -2
  171. package/server/{pickup-CKRuGDsB.js → pickup-BtvRBbvI.js} +1 -1
  172. package/server/{pipeline-notifier-BkKbQ8ji.js → pipeline-notifier-3frIvSi3.js} +1 -1
  173. package/server/{pipeline-notifier-CAurUste.js → pipeline-notifier-DTd19f18.js} +2 -2
  174. package/server/{project-pipelines-BRWaGmI4.js → project-pipelines-B95fcAek.js} +2 -2
  175. package/server/projects-Dc9aoVoG.js +3 -0
  176. package/server/{prompts-DfI5qbTW.js → prompts-CIVmjHxn.js} +2 -2
  177. package/server/{providers-D-5txBRc.js → providers-BLLk5IIb.js} +1 -1
  178. package/server/{providers-CWDXoaMA.js → providers-C-yWibCk.js} +7 -7
  179. package/server/public/assets/chunk-BO2N2NFS-DzKZyoKY.js +103 -0
  180. package/server/public/assets/{diagram-OG6HWLK6-Avtvq2qI.js → diagram-OG6HWLK6-Cx8mWUb8.js} +1 -1
  181. package/server/public/assets/{dist-BEHQuasD.js → dist-BqccLhaw.js} +3 -3
  182. package/server/public/assets/{dist-BvmY-qb1.js → dist-rC3nAs_O.js} +1 -1
  183. package/server/public/assets/{ganttDiagram-6RSMTGT7-7KhCd0fH.js → ganttDiagram-6RSMTGT7-DLYPLf5T.js} +1 -1
  184. package/server/public/assets/{highlighted-body-OFNGDK62-iQoBMTf0.js → highlighted-body-OFNGDK62-D4DqixbV.js} +1 -1
  185. package/server/public/assets/index-CPcysUHk.js +796 -0
  186. package/server/public/assets/index-H5M0yhM4.css +1 -0
  187. package/server/public/assets/{linear-CiJHW9g5.js → linear-yqcXkDfj.js} +1 -1
  188. package/server/public/assets/mermaid-GHXKKRXX-CWdZ_heB.js +1 -0
  189. package/server/public/assets/{pieDiagram-4H26LBE5-BOhmvUhW.js → pieDiagram-4H26LBE5-DhraIOaV.js} +1 -1
  190. package/server/public/assets/{prod-DmLBBqat.js → prod-DKUunUdN.js} +4 -4
  191. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Cjku660G.js → quadrantDiagram-W4KKPZXB-DPiRcToa.js} +1 -1
  192. package/server/public/assets/{sankeyDiagram-5OEKKPKP-D52w5oPh.js → sankeyDiagram-5OEKKPKP-3An5HNkZ.js} +1 -1
  193. package/server/public/assets/{xychartDiagram-2RQKCTM6-BTO07_Iv.js → xychartDiagram-2RQKCTM6-lbEOjfqQ.js} +1 -1
  194. package/server/public/index.html +2 -2
  195. package/server/{pull-requests-CKZPWhjD.js → pull-requests-D7AL5woD.js} +1 -1
  196. package/server/{pull-requests-Bmre-Xlz.js → pull-requests-NDDNtqNq.js} +3 -3
  197. package/server/{agents-CsOzAmRg.js → queries-C0LCGG21.js} +743 -399
  198. package/server/{rally-BBd9tQ__.js → rally-4oKvnxLG.js} +3 -3
  199. package/server/rally-DF5a3ioP.js +3 -0
  200. package/server/{rally-api-DxZFObI_.js → rally-api-41tT6ikZ.js} +2 -2
  201. package/server/{rally-api-DDc85HIz.js → rally-api-BsaQ8Vnz.js} +1 -1
  202. package/server/{rally-client-DvvLiAQP.js → rally-client-Bo4hNcCZ.js} +5 -5
  203. package/server/{rally-client-BADHn0m_.js → rally-client-b5PT1x5L.js} +1 -1
  204. package/server/{reap-terminal-sessions-D_xvy-Mk.js → reap-terminal-sessions-BR39qflC.js} +1 -1
  205. package/server/{reap-terminal-sessions-D6JDJsqF.js → reap-terminal-sessions-CFkuquQj.js} +1 -1
  206. package/server/{rebuild-stack-GOsWqXi3.js → rebuild-stack-C7JPUom6.js} +1 -1
  207. package/server/{rebuild-stack-D19i080j.js → rebuild-stack-Ddv6W017.js} +6 -6
  208. package/server/{reconstruct-cache-lQrG4xGg.js → reconstruct-cache-Gqhm---K.js} +6 -6
  209. package/server/record-DLOqfbkI.js +3 -0
  210. package/server/record-update-BltEmPge.js +168 -0
  211. package/server/record-update-CDp7aTaT.js +3 -0
  212. package/server/recovery-trip-Cn7KJVkS.js +44 -0
  213. package/server/{release-engine-DxcMWRuK.js → release-engine-BYzmIBf9.js} +5 -5
  214. package/server/{release-set-BYsgX7o6.js → release-set-7pnxFOWR.js} +3 -3
  215. package/server/{remote-DmeL21dF.js → remote-Cvu4CSDk.js} +3 -3
  216. package/server/{remote-agents-BfQBE6MN.js → remote-agents-C2C6z9tj.js} +6 -33
  217. package/server/{remote-agents-DlvbzO7m.js → remote-agents-DYY5fFpd.js} +1 -1
  218. package/server/{remote-completion-BgkiSQmx.js → remote-completion-2Kb4IDg_.js} +13 -13
  219. package/server/{remote-8W2Yhygw.js → remote-rN0ecjHE.js} +3 -3
  220. package/server/resume-BFLl-yLn.js +3 -0
  221. package/server/{review-agent-D025Wt7w.js → review-agent-BZvk0N5G.js} +31 -23
  222. package/server/{review-agent-Rub0OpZc.js → review-agent-CpSHLzed.js} +1 -1
  223. package/server/{review-artifacts-CX951jTU.js → review-artifacts-PCo53YMn.js} +5 -19
  224. package/server/{review-context-DGGGR_w5.js → review-context-M7QtJlJq.js} +8 -8
  225. package/server/{review-monitor-0_qqMcnS.js → review-monitor-BLC5mTTg.js} +2 -2
  226. package/server/{review-status-Br6lAFGO.js → review-status-77N3PoZr.js} +1 -1
  227. package/server/{review-status-4qqLkRMu.js → review-status-DANr0t-v.js} +33 -59
  228. package/server/{review-status-enrichment-Cr8m3uVL.js → review-status-enrichment-DwOg4UfL.js} +3 -3
  229. package/server/{review-status-sync-D3KUhsdA.js → review-status-sync-Bd08OOFA.js} +1 -1
  230. package/server/{review-status-sync-OC-l1lNt.js → review-status-sync-BjTUJ5fx.js} +2 -2
  231. package/server/{review-verdict-feedback-YOzmsq9G.js → review-verdict-feedback-BsFLjN_6.js} +1 -1
  232. package/server/{review-verdict-feedback-DrWMuRaj.js → review-verdict-feedback-CBf-J_wS.js} +8 -8
  233. package/server/{rollup-CnxbwaLH.js → rollup-Bu0f2EyN.js} +8 -8
  234. package/server/{rollup-DmazRY0j.js → rollup-DTCCdEy4.js} +1 -1
  235. package/server/{scanner-DE1MqAaF.js → scanner-BlZ2vB7j.js} +7 -7
  236. package/server/{sequence-io-C0uoqfGx.js → sequence-io-ylyDtz2J.js} +4 -4
  237. package/server/{sequencer-agent-i-b2u4SJ.js → sequencer-agent-DsWQ-87H.js} +6 -17
  238. package/server/server.js +5670 -6392
  239. package/server/{service-D0_gh2tl.js → service-CLVBC_1Y.js} +116 -90
  240. package/server/{session-fork-DZ12vipL.js → session-fork-DlEIAhRy.js} +2 -2
  241. package/server/session-history-bnOFKMwf.js +168 -0
  242. package/server/settings-CP3GGon2.js +2 -0
  243. package/server/{settings-ByqjPtFO.js → settings-Cqa-8nyj.js} +2 -2
  244. package/server/{settings-DCC4BAqj.js → settings-gJrdLZy2.js} +3 -3
  245. package/server/{shadow-engineering-BhnmtW5m.js → shadow-engineering-fq1YEKV3.js} +3 -3
  246. package/server/{shadow-state-ByXZehsy.js → shadow-state-BqeFAygK.js} +1 -1
  247. package/server/{shadow-state-CKm8xWX9.js → shadow-state-RptE9Cau.js} +2 -2
  248. package/server/shadow-utils-BMWr5tRT.js +39 -0
  249. package/server/{ship-log-DE_0Cv_i.js → ship-log-BRQQi2lU.js} +1 -1
  250. package/server/{smart-compaction-D5Zen3AA.js → smart-compaction-CmoXpjeU.js} +7 -7
  251. package/server/{smart-compaction-h4_ca6Uk.js → smart-compaction-DldUel4B.js} +1 -1
  252. package/server/{spawn-planning-session-Dueit4WX.js → spawn-planning-session-CoS6LTc6.js} +16 -16
  253. package/server/{spawn-planning-session-Bgi7Ub02.js → spawn-planning-session-DT2tSMxo.js} +1 -1
  254. package/server/{specialist-completion-BZ8M-WZ0.js → specialist-completion-pJtESo7m.js} +1 -1
  255. package/server/{specialist-context-BMq83C58.js → specialist-context-CspI4Eog.js} +5 -5
  256. package/server/{specialist-handoff-logger-BxX1YefH.js → specialist-handoff-logger-Duz9RGvk.js} +2 -2
  257. package/server/{specialist-logs-BWZYcJ6P.js → specialist-logs-DtSkPJZK.js} +3 -3
  258. package/server/{specialists-ZkW4Mb7U.js → specialists-CywEMwxk.js} +1 -1
  259. package/server/{specialists-8ZAguXef.js → specialists-D9-dMUtI.js} +1 -1
  260. package/server/{specialists-BudKrjOu.js → specialists-Dax7tqXC.js} +1817 -560
  261. package/server/{specialists-DrPrC9Y9.js → specialists-GF42OOqd.js} +18 -18
  262. package/server/specs-VwcFtEDi.js +3 -0
  263. package/server/{src-DHn4Rd2F.js → src-By3D85Ry.js} +77 -1
  264. package/server/{src-Dv6L03vW.js → src-CqyFg52C.js} +5 -5
  265. package/server/{src-DNUUqkec.js → src-DhxM-eCb.js} +6 -6
  266. package/server/{stack-health-Dclm7_tu.js → stack-health-BsEVrJZ6.js} +1 -1
  267. package/server/{stack-health-DxsTx7II.js → stack-health-C-SnpRHh.js} +2 -2
  268. package/server/stale-task-claims-vTxmRzLi.js +69 -0
  269. package/server/state-home-Bur1y4oH.js +213 -0
  270. package/server/{state-mapping-BvAgFK8n.js → state-mapping-Ci0pkac4.js} +1 -1
  271. package/server/state-migrate-D3VveYfO.js +362 -0
  272. package/server/{stuck-remediation-CFWUP8_I.js → stuck-remediation-B699-p8v.js} +63 -46
  273. package/server/{stuck-remediation-CLHd-lrF.js → stuck-remediation-CaFYYTQW.js} +1 -1
  274. package/server/{summary-fork-CKc01Our.js → summary-fork-BxnF8Xh0.js} +2 -2
  275. package/server/{summary-fork-CtCwBJ2Z.js → summary-fork-COqYpVa3.js} +8 -8
  276. package/server/supervisor/{paths-3R6b989k.js → paths-Bk6hJRH9.js} +4 -3
  277. package/server/supervisor/pty-supervisor.js +2 -2
  278. package/server/supervisor/{pty-token-CScQ32Rj.js → pty-token-BZS5GYdG.js} +2 -2
  279. package/server/supervisor-eWAAmXKu.js +2 -0
  280. package/server/{supervisor-BA5D72Qa.js → supervisor-liMgIPDF.js} +2 -2
  281. package/server/{swarm-readiness-CL5sM9B1.js → swarm-readiness-sXB1vhzo.js} +3 -3
  282. package/server/{system-prerequisites-DmFSXIE5.js → system-prerequisites-Bz6KdkFJ.js} +1 -13
  283. package/server/{teardown-workspace-DWmFJzTw.js → teardown-workspace-DvzqnmUF.js} +14 -71
  284. package/server/{test-agent-queue-DjsQoV5X.js → test-agent-queue-hAU1Ah08.js} +6 -6
  285. package/server/{test-verdict-BSqsQp3G.js → test-verdict-CRsPpByy.js} +1 -1
  286. package/server/{test-verdict-D1AmZ2c0.js → test-verdict-CXMLATGc.js} +1 -1
  287. package/server/{tldr-daemon-C-MGomL8.js → tldr-daemon-Bam7Xhoo.js} +2 -2
  288. package/server/{tldr-daemon-DD9rI5gA.js → tldr-daemon-DhGwd88s.js} +1 -1
  289. package/server/tmux-C-rgxRDA.js +3 -0
  290. package/server/{tmux-C_d-lSIq.js → tmux-U55cNGFG.js} +92 -4
  291. package/server/{token-DfBf1bsd.js → token-Dsa-i36o.js} +2 -2
  292. package/server/{token-util-CROoF5ic.js → token-util-BWNpH96m.js} +1 -1
  293. package/server/token-util-DRt0j2nQ.js +3 -0
  294. package/server/{tracker-config-CNODpd11.js → tracker-config-OkdbaUCm.js} +2 -2
  295. package/server/{tracker-utils-Ch2_5GGf.js → tracker-utils-CghXMF3q.js} +2 -2
  296. package/server/{tracker-utils-B9ZoVA9b.js → tracker-utils-DdzUiPNU.js} +1 -1
  297. package/server/{traefik-connect-BF4x_LUQ.js → traefik-connect-CZYB3dlm.js} +1 -1
  298. package/server/{tunnel-r_5nHAI6.js → tunnel-D1YxesBL.js} +3 -3
  299. package/server/{tunnel-YD80_IHr.js → tunnel-DjlzgTl3.js} +1 -1
  300. package/server/typed-errors-CH4roFIj.js +3 -0
  301. package/server/{typed-errors-BEJhbjJg.js → typed-errors-n_Tnb4Fh.js} +3 -4
  302. package/server/{types-CE1m_daD.js → types-DOjWNv3Z.js} +1 -1
  303. package/server/{types-33JEP4LZ.js → types-DXBMm4mX.js} +1 -1
  304. package/server/{uat-train-DDI00aqD.js → uat-train-CaaWs9Rp.js} +1 -1
  305. package/server/{uat-train-DjkFWXge.js → uat-train-CqN34zFx.js} +24 -25
  306. package/server/{validation-DUTiJnyz.js → validation-4-z2Cw4z.js} +70 -23
  307. package/server/validation-DpTNakM6.js +3 -0
  308. package/server/verification-artifact-DK1xb1zG.js +56 -0
  309. package/server/verification-artifact-JD_edpZ9.js +2 -0
  310. package/server/{verification-runner-inLgeQux.js → verification-runner-BjHN80pJ.js} +338 -58
  311. package/server/verification-runner-ShYu5Ph3.js +2 -0
  312. package/server/{work-agent-prompt-fZljjA1_.js → work-agent-prompt-BiJ43Der.js} +12 -88
  313. package/server/workflows-B4C3lY9E.js +2 -0
  314. package/server/{workflows-oBnJ7Tm0.js → workflows-DkTotz_m.js} +17 -24
  315. package/server/{workspace-CNuW2j41.js → workspace-CuN0ev4Z.js} +3 -3
  316. package/server/{workspace-B2WOW9Hw.js → workspace-DQ4vVivd.js} +1 -1
  317. package/server/{workspace-config-CBgMGhWs.js → workspace-config-C77NKnsV.js} +1 -1
  318. package/server/{workspace-manager-DjUAJCSs.js → workspace-manager-B1mYn0lN.js} +1 -1
  319. package/server/{workspace-manager-CB-R07R3.js → workspace-manager-Beeo2aKF.js} +23 -48
  320. package/server/{workspace-metadata-9Nn5kgRl.js → workspace-metadata-BZC5BmoP.js} +2 -2
  321. package/server/{workspace-metadata-Fd58uUQG.js → workspace-metadata-Cy7_ZACL.js} +1 -1
  322. package/server/{workspaces-BjWXntty.js → workspaces-CGuzW1Ia.js} +191 -153
  323. package/sync-sources/hooks/ask-user-question-hook +7 -1
  324. package/sync-sources/hooks/codex-notify-hook +64 -8
  325. package/sync-sources/hooks/record-cost-event.js +1109 -36
  326. package/sync-sources/hooks/record-cost-event.js.map +1 -1
  327. package/sync-sources/hooks/statusline.sh +2 -2
  328. package/sync-sources/hooks/work-agent-stop-hook +1 -2
  329. package/server/acceptance-criteria-DHZk2ceV.js +0 -33
  330. package/server/agent-runtime-mirror-DrWxopNA.js +0 -37
  331. package/server/agent-state-EP2QFV9n.js +0 -3
  332. package/server/agents-DCvyTXNU.js +0 -3
  333. package/server/auto-commit-QAfsu3Sb.js +0 -3
  334. package/server/bd-process-lock-D3S4T4o-.js +0 -390
  335. package/server/beads-BGGxrkZ5.js +0 -649
  336. package/server/beads-CYsLiyIM.js +0 -2
  337. package/server/beads-query-B1DlJVp9.js +0 -95
  338. package/server/beads-restore-CyygSmmn.js +0 -23
  339. package/server/cli-ClIQwgMI.js +0 -3
  340. package/server/codex-B7DTpwEw.js +0 -3
  341. package/server/compact-beads-CK_hHEnB.js +0 -3
  342. package/server/compact-beads-DKL54y6j.js +0 -94
  343. package/server/deacon-swarm-BY5hKNaU.js +0 -2
  344. package/server/dist-DGTwcZhI.js +0 -3
  345. package/server/export-Dx_qJ3h8.js +0 -87
  346. package/server/forge-XlDgPQWs.js +0 -2
  347. package/server/hume-K1pi8jC4.js +0 -3
  348. package/server/inspect-agent-477VxQim.js +0 -2
  349. package/server/lifecycle-C_73gi-C.js +0 -14
  350. package/server/merge-ops-PzqsW69V.js +0 -2
  351. package/server/projects-KJ94e50I.js +0 -3
  352. package/server/public/assets/chunk-BO2N2NFS-ClukPsZQ.js +0 -103
  353. package/server/public/assets/index-DUFDmvmH.css +0 -1
  354. package/server/public/assets/index-DnTZ2QeN.js +0 -796
  355. package/server/public/assets/mermaid-GHXKKRXX-DZJOwgBG.js +0 -1
  356. package/server/rally-Dc2Wnxw2.js +0 -3
  357. package/server/record-pyB6VA32.js +0 -3
  358. package/server/recovery-trip-Dfh1tNHn.js +0 -98
  359. package/server/resolver-dTpSSzaH.js +0 -158
  360. package/server/resume-DhcIqsTm.js +0 -3
  361. package/server/settings-yydgaqhv.js +0 -2
  362. package/server/specs-DwoAEGrW.js +0 -3
  363. package/server/supervisor-DHjumXlL.js +0 -2
  364. package/server/tmux-x291Gjjb.js +0 -3
  365. package/server/token-util-xNaV-00f.js +0 -3
  366. package/server/tracker-config-DItsdelv.js +0 -3
  367. package/server/typed-errors-DSPn_xWP.js +0 -3
  368. package/server/validation-ict8hnXk.js +0 -3
  369. package/server/verification-runner-ATaLbpr5.js +0 -2
  370. package/server/workflows-tU7KKxQi.js +0 -2
  371. package/server/writer-CQMGzEkw.js +0 -3
  372. package/server/writer-fe1-8iGc.js +0 -251
@@ -1,26 +1,26 @@
1
- import { Ar as OVERDECK_HOME, Ft as readRecordContinueViewSync, It as resolveProjectForIssue, Kn as resolveProjectFromIssueSync, Kr as getOverdeckHome, Ot as getProjectConfigFromWorkspacePath, Pn as init_projects, br as init_errors, kt as init_record, qr as init_paths, xr as AGENTS_DIR } from "./config-yaml-Dcz-8uit.js";
1
+ import { Cr as AGENTS_DIR, Fn as init_projects, Ft as readRecordContinueViewSync, It as resolveProjectForIssue, Jr as getOverdeckHome, Mr as OVERDECK_HOME, Ot as getProjectConfigFromWorkspacePath, Sr as init_errors, Yr as init_paths, kt as init_record, qn as resolveProjectFromIssueSync } from "./config-yaml-CqaAyn8y.js";
2
2
  import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-pcbf-e30.js";
3
- 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-bpq1MHKU.js";
4
- import { L as sessionExists, R as sessionExistsSync, d as exactPaneTarget, w as killSession, x as init_tmux } from "./tmux-C_d-lSIq.js";
5
- import { c as init_review_status, u as loadReviewStatuses, y as setReviewStatusSync } from "./review-status-4qqLkRMu.js";
6
- import { n as init_issues, t as IssueId } from "./issues-CwQMphDH.js";
7
- import { a as getAllBudgetsSync, i as deleteBudgetSync, n as checkBudgetSync, r as createBudgetSync, s as init_cost } from "./cost-DQ2ajr_m.js";
8
- import { An as getAgentDir, D as init_context_overflow, Jn as saveAgentStateSync, Mn as getAgentState, Pn as getAgentStateSync, Q as listRunningAgentsSync, Sr as parseOhmypiSessionCostResultSync, U as spawnAgent, _t as init_config, gr as getAgentRuntimeStateSync, gt as getHealthThresholdsMs, k as isContextOverflowTail, q as stopAgentSync, t as init_agents, vr as saveAgentRuntimeState, xr as init_ohmypi_parser, yt as loadCloisterConfigSync } from "./agents-CsOzAmRg.js";
9
- import { i as parseCodexSessionSync, n as init_codex_parser, r as parseCodexSessionCostEventsSync } from "./behavior-Cpj03N4v.js";
10
- import { _ as init_tier_metrics, c as getDailyTrendsSync, d as init_cost_sync, h as deriveTieredAgentCostRole, t as getAgentDailyCostSync } from "./cost-sync-gTayEuWP.js";
11
- import { c as requireModelOverrideSync, o as init_model_validation } from "./state-home-CRowbXqU.js";
12
- import { _ as setDeaconGloballyPaused, c as isCloisterSpawnsPausedSync, g as setCloisterSpawnsPausedSync, s as init_control_settings, x as setFlywheelGloballyPaused } from "./control-settings-DwkAeooY.js";
13
- import { n as init_resolver, t as createBeadsResolver } from "./resolver-dTpSSzaH.js";
14
- import { n as checkHookSync, p as init_hooks } from "./hooks-C9b7Vqpw.js";
15
- import { r as isRoleTerminal, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-D6JDJsqF.js";
16
- import { o as getRuntimeForAgent } from "./stuck-remediation-CFWUP8_I.js";
17
- import "./flywheel-Bv3wv2S6.js";
18
- import { C as getLastPatrolResult, D as isDeaconRunning, N as runPatrol, R as startDeacon, S as getDeaconStatus, n as assessDeaconPatrolFreshness, x as getDeaconLogs, z as stopDeacon } from "./deacon-DrKDBeJL.js";
19
- import { n as renderPrompt, t as init_prompts } from "./prompts-DfI5qbTW.js";
20
- import { O as init_specialists, T as getTmuxSessionName } from "./specialists-DrPrC9Y9.js";
21
- import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-FApNiOOs.js";
22
- import { n as shouldSkipDispatchAsMerged, t as init_merge_verification } from "./merge-verification-Cqfxx6bE.js";
23
- import { r as writeHealthEvent } from "./health-events-CRdxDFN2.js";
3
+ 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-_Kx1m9pm.js";
4
+ import { R as sessionExists, S as init_tmux, T as killSession, f as exactPaneTarget, z as sessionExistsSync } from "./tmux-U55cNGFG.js";
5
+ import { c as init_review_status, u as loadReviewStatuses, y as setReviewStatusSync } from "./review-status-DANr0t-v.js";
6
+ import { n as init_issues, t as IssueId } from "./issues-DIEHt9sq.js";
7
+ import { a as getAllBudgetsSync, i as deleteBudgetSync, n as checkBudgetSync, r as createBudgetSync, s as init_cost } from "./cost-BoqD1Pxz.js";
8
+ import { $ as stopAgentSync, Cr as init_ohmypi_parser, F as isContextOverflowTail, Fn as getAgentStateSync, N as init_context_overflow, Nn as getAgentState, Y as spawnAgent, Yn as saveAgentStateSync, _t as init_config, a as listRunningAgentsSync, gr as saveAgentRuntimeState, gt as getHealthThresholdsMs, jn as getAgentDir, mr as getAgentRuntimeStateSync, s as init_agents, wr as parseOhmypiSessionCostResultSync, yt as loadCloisterConfigSync } from "./queries-C0LCGG21.js";
9
+ import { n as parseCodexSessionCostEventsSync, r as parseCodexSessionSync, t as init_codex_parser } from "./codex-parser-DboQnEXN.js";
10
+ import { _ as init_tier_metrics, c as getDailyTrendsSync, d as init_cost_sync, h as deriveTieredAgentCostRole, t as getAgentDailyCostSync } from "./cost-sync-BYnmnMkY.js";
11
+ import { m as readWorkspacePlanSync, o as init_io } from "./io-DkC4sFSy.js";
12
+ import { a as requireModelOverrideSync, r as init_model_validation } from "./launcher-generator-BXLM9f4b.js";
13
+ import { _ as setDeaconGloballyPaused, c as isCloisterSpawnsPausedSync, g as setCloisterSpawnsPausedSync, s as init_control_settings, x as setFlywheelGloballyPaused } from "./control-settings-BguNQ1F_.js";
14
+ import { n as checkHookSync, p as init_hooks } from "./hooks-BS_JrvYP.js";
15
+ import { r as isRoleTerminal, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-CFkuquQj.js";
16
+ import { o as getRuntimeForAgent } from "./stuck-remediation-B699-p8v.js";
17
+ import "./flywheel-CqkO3cDj.js";
18
+ import { C as getLastPatrolResult, D as isDeaconRunning, N as runPatrol, R as startDeacon, S as getDeaconStatus, n as assessDeaconPatrolFreshness, x as getDeaconLogs, z as stopDeacon } from "./deacon-Dru5onpk.js";
19
+ import { n as renderPrompt, t as init_prompts } from "./prompts-CIVmjHxn.js";
20
+ import { O as init_specialists, T as getTmuxSessionName } from "./specialists-GF42OOqd.js";
21
+ import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-Cpl4VDUM.js";
22
+ import { n as shouldSkipDispatchAsMerged, t as init_merge_verification } from "./merge-verification-BBIXUEqa.js";
23
+ import { r as writeHealthEvent } from "./health-events-2DLp-5Xp.js";
24
24
  import { join } from "node:path";
25
25
  import { Context, Data, Effect, Layer, Schema } from "effect";
26
26
  import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, statSync, unlinkSync, writeFileSync } from "fs";
@@ -729,6 +729,7 @@ HttpApiGroup.make("costs").add(HttpApiEndpoint.get("summary", "/costs/summary",
729
729
  //#region ../../lib/cloister/health.ts
730
730
  init_cost_sync();
731
731
  init_review_status();
732
+ init_io();
732
733
  init_control_settings();
733
734
  init_hooks();
734
735
  init_agents();
@@ -857,7 +858,7 @@ async function captureHandoffContextPromise(agentState, targetModel, reason) {
857
858
  };
858
859
  await captureFiles(context, agentState.workspace, agentState.issueId);
859
860
  await captureGitState(context, agentState.workspace);
860
- await captureBeadsTasks(context, agentState.issueId);
861
+ captureTasks(context, agentState.workspace);
861
862
  return context;
862
863
  }
863
864
  /**
@@ -900,18 +901,22 @@ async function captureGitState(context, workspace) {
900
901
  }
901
902
  }
902
903
  /**
903
- * Capture beads tasks state
904
+ * Capture merged vBRIEF task state.
904
905
  */
905
- async function captureBeadsTasks(context, issueId) {
906
+ function captureTasks(context, workspace) {
906
907
  try {
907
- const { stdout: output } = await execAsync$3(`bd list --json -l ${issueId.toLowerCase()}`, { encoding: "utf-8" });
908
- const tasks = JSON.parse(output);
909
- context.activeBeadsTasks = tasks.filter((t) => t.status === "in_progress");
910
- context.remainingTasks = tasks.filter((t) => t.status === "open");
911
- context.completedTasks = tasks.filter((t) => t.status === "closed");
908
+ const tasks = (readWorkspacePlanSync(workspace)?.plan.items ?? []).map((item) => ({
909
+ id: item.id,
910
+ title: item.title,
911
+ status: item.status,
912
+ priority: typeof item.priority === "number" ? item.priority : 0
913
+ }));
914
+ context.activeTasks = tasks.filter((task) => task.status === "running");
915
+ context.remainingTasks = tasks.filter((task) => !["completed", "cancelled"].includes(task.status));
916
+ context.completedTasks = tasks.filter((task) => task.status === "completed");
912
917
  } catch (error) {
913
- console.error("Error capturing beads tasks:", error);
914
- context.activeBeadsTasks = [];
918
+ console.error("Error capturing tasks:", error);
919
+ context.activeTasks = [];
915
920
  context.remainingTasks = [];
916
921
  context.completedTasks = [];
917
922
  }
@@ -953,10 +958,10 @@ function serializeHandoffContext(context) {
953
958
  });
954
959
  lines.push("");
955
960
  }
956
- if (context.activeBeadsTasks && context.activeBeadsTasks.length > 0) {
961
+ if (context.activeTasks && context.activeTasks.length > 0) {
957
962
  lines.push("## Active Tasks");
958
963
  lines.push("");
959
- context.activeBeadsTasks.forEach((task) => {
964
+ context.activeTasks.forEach((task) => {
960
965
  lines.push(`- [ ] ${task.title} (${task.id}) - IN PROGRESS`);
961
966
  });
962
967
  lines.push("");
@@ -1256,84 +1261,89 @@ function checkDailyReset() {
1256
1261
  }
1257
1262
  }
1258
1263
  /**
1259
- * Check if any cost limits are being approached or exceeded
1264
+ * Check if any cost limits are being approached or exceeded.
1265
+ *
1266
+ * Opt-in: with no operator-configured `cost_limits` this returns [] without
1267
+ * reading any cost data — there is deliberately no default limit (PAN-2642;
1268
+ * the old invented $10/$25/$100 fallback sat permanently exceeded and
1269
+ * produced pure alert noise, PAN-2319).
1260
1270
  *
1261
1271
  * @param agentId - Agent ID to check
1262
1272
  * @param issueId - Optional issue ID to check
1263
1273
  * @param config - Cost limits configuration
1264
- * @returns Array of alerts (empty if no limits exceeded)
1265
- */
1266
- function checkCostLimits(agentId, issueId, config = loadCloisterConfigSync().cost_limits || {
1267
- per_agent_usd: 10,
1268
- per_issue_usd: 25,
1269
- daily_total_usd: 100,
1270
- alert_threshold: .8
1271
- }) {
1274
+ * @returns Array of alerts (empty if no limits configured or exceeded)
1275
+ */
1276
+ function checkCostLimits(agentId, issueId, config = loadCloisterConfigSync().cost_limits) {
1272
1277
  const alerts = [];
1278
+ if (!config) return alerts;
1279
+ const alertThreshold = config.alert_threshold ?? .8;
1280
+ const perAgentUsd = config.per_agent_usd ?? 0;
1281
+ const perIssueUsd = config.per_issue_usd ?? 0;
1282
+ const dailyTotalUsd = config.daily_total_usd ?? 0;
1273
1283
  const now = (/* @__PURE__ */ new Date()).toISOString();
1274
- if (config.per_agent_usd > 0) {
1284
+ if (perAgentUsd > 0) {
1275
1285
  const agentCost = getAgentDailyCostSync(agentId);
1276
- const agentPercent = agentCost / config.per_agent_usd;
1286
+ const agentPercent = agentCost / perAgentUsd;
1277
1287
  if (agentPercent >= 1) alerts.push({
1278
1288
  type: "per_agent",
1279
1289
  level: "limit_reached",
1280
1290
  agentId,
1281
1291
  currentCost: agentCost,
1282
- limit: config.per_agent_usd,
1292
+ limit: perAgentUsd,
1283
1293
  percentUsed: agentPercent * 100,
1284
1294
  timestamp: now
1285
1295
  });
1286
- else if (agentPercent >= config.alert_threshold) alerts.push({
1296
+ else if (agentPercent >= alertThreshold) alerts.push({
1287
1297
  type: "per_agent",
1288
1298
  level: "warning",
1289
1299
  agentId,
1290
1300
  currentCost: agentCost,
1291
- limit: config.per_agent_usd,
1301
+ limit: perAgentUsd,
1292
1302
  percentUsed: agentPercent * 100,
1293
1303
  timestamp: now
1294
1304
  });
1295
1305
  }
1296
- if (issueId && config.per_issue_usd > 0) {
1306
+ if (issueId && perIssueUsd > 0) {
1297
1307
  const issueCost = getDailyTrendsSync({
1298
1308
  days: 1,
1299
1309
  issueId
1300
1310
  }).reduce((sum, t) => sum + t.totalCost, 0);
1301
- const issuePercent = issueCost / config.per_issue_usd;
1311
+ const issuePercent = issueCost / perIssueUsd;
1302
1312
  if (issuePercent >= 1) alerts.push({
1303
1313
  type: "per_issue",
1304
1314
  level: "limit_reached",
1305
1315
  issueId,
1306
1316
  currentCost: issueCost,
1307
- limit: config.per_issue_usd,
1317
+ limit: perIssueUsd,
1308
1318
  percentUsed: issuePercent * 100,
1309
1319
  timestamp: now
1310
1320
  });
1311
- else if (issuePercent >= config.alert_threshold) alerts.push({
1321
+ else if (issuePercent >= alertThreshold) alerts.push({
1312
1322
  type: "per_issue",
1313
1323
  level: "warning",
1314
1324
  issueId,
1315
1325
  currentCost: issueCost,
1316
- limit: config.per_issue_usd,
1326
+ limit: perIssueUsd,
1317
1327
  percentUsed: issuePercent * 100,
1318
1328
  timestamp: now
1319
1329
  });
1320
1330
  }
1321
- if (config.daily_total_usd > 0) {
1331
+ if (dailyTotalUsd > 0) {
1322
1332
  const dailyTotal = getDailyTrendsSync({ days: 1 }).reduce((sum, t) => sum + t.totalCost, 0);
1323
- const dailyPercent = dailyTotal / config.daily_total_usd;
1333
+ const dailyPercent = dailyTotal / dailyTotalUsd;
1324
1334
  if (dailyPercent >= 1) alerts.push({
1325
1335
  type: "daily_total",
1326
1336
  level: "limit_reached",
1327
1337
  currentCost: dailyTotal,
1328
- limit: config.daily_total_usd,
1338
+ limit: dailyTotalUsd,
1329
1339
  percentUsed: dailyPercent * 100,
1330
1340
  timestamp: now
1331
1341
  });
1332
- else if (dailyPercent >= config.alert_threshold) alerts.push({
1342
+ else if (dailyPercent >= alertThreshold) alerts.push({
1333
1343
  type: "daily_total",
1334
1344
  level: "warning",
1335
1345
  currentCost: dailyTotal,
1336
- limit: config.daily_total_usd,
1346
+ limit: dailyTotalUsd,
1337
1347
  percentUsed: dailyPercent * 100,
1338
1348
  timestamp: now
1339
1349
  });
@@ -1509,7 +1519,7 @@ async function onIssueStateChangePromise(issueId, newState) {
1509
1519
  });
1510
1520
  return;
1511
1521
  }
1512
- const { getReviewStatusSync } = await import("./review-status-Br6lAFGO.js");
1522
+ const { getReviewStatusSync } = await import("./review-status-77N3PoZr.js");
1513
1523
  if (getReviewStatusSync(normalizedIssueId)?.mergeStatus === "merged") {
1514
1524
  const message = `${normalizedIssueId}: skipping ${role} dispatch — merge already landed (merge_status='merged' is terminal)`;
1515
1525
  console.log(`[cloister] ${message}`);
@@ -1576,7 +1586,7 @@ async function onIssueStateChangePromise(issueId, newState) {
1576
1586
  return;
1577
1587
  }
1578
1588
  const branch = `feature/${normalizedIssueId.toLowerCase()}`;
1579
- const { spawnReviewRoleForIssue } = await import("./review-agent-Rub0OpZc.js");
1589
+ const { spawnReviewRoleForIssue } = await import("./review-agent-CpSHLzed.js");
1580
1590
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
1581
1591
  issueId: normalizedIssueId,
1582
1592
  workspace,
@@ -1594,7 +1604,7 @@ async function onIssueStateChangePromise(issueId, newState) {
1594
1604
  }
1595
1605
  if (role === "test") {
1596
1606
  const branch = `feature/${normalizedIssueId.toLowerCase()}`;
1597
- const { dispatchTestAgentAndNotify } = await import("./test-agent-queue-DjsQoV5X.js");
1607
+ const { dispatchTestAgentAndNotify } = await import("./test-agent-queue-hAU1Ah08.js");
1598
1608
  await Effect.runPromise(dispatchTestAgentAndNotify(normalizedIssueId, workspace ?? void 0, branch));
1599
1609
  const message = `${normalizedIssueId}: test role dispatched from lifecycle state '${newState}'`;
1600
1610
  console.log(`[cloister] ${message}`);
@@ -1606,7 +1616,7 @@ async function onIssueStateChangePromise(issueId, newState) {
1606
1616
  });
1607
1617
  return;
1608
1618
  }
1609
- const { spawnRun } = await import("./agents-DCvyTXNU.js");
1619
+ const { spawnRun } = await import("./agents-BA15AQqo.js");
1610
1620
  const message = `${normalizedIssueId}: ${role} role started from lifecycle state '${newState}' as ${(await spawnRun(normalizedIssueId, role, { prompt: buildReactiveRolePrompt(normalizedIssueId, newState, role) })).id}`;
1611
1621
  console.log(`[cloister] ${message}`);
1612
1622
  emitActivityEntrySync({
@@ -1684,27 +1694,27 @@ async function handleCloisterDomainEventPromise(event) {
1684
1694
  if (event.type === "agent.stopped") {
1685
1695
  const agentId = event.payload?.agentId;
1686
1696
  if (agentId) {
1687
- const { handleAgentStoppedEvent, handleAgentStoppedForOrphanReviewerSessions } = await import("./deacon-BqW9HMew.js");
1688
- const { handleAgentLifecycleEventForIdleStack } = await import("./idle-stack-reaper-iFVOAoJy.js");
1697
+ const { handleAgentStoppedEvent, handleAgentStoppedForOrphanReviewerSessions } = await import("./deacon-CwCiNuEZ.js");
1698
+ const { handleAgentLifecycleEventForIdleStack } = await import("./idle-stack-reaper-C1ymihno.js");
1689
1699
  handleAgentLifecycleEventForIdleStack(agentId);
1690
1700
  const slotMatch = /^agent-(.+)-slot-\d+$/.exec(agentId);
1691
1701
  await Promise.all([
1692
1702
  handleAgentStoppedEvent(agentId),
1693
1703
  handleAgentStoppedForOrphanReviewerSessions(agentId),
1694
- slotMatch ? (await import("./deacon-swarm-BY5hKNaU.js")).coordinateSwarmSlots({ issueId: slotMatch[1].toUpperCase() }) : Promise.resolve([])
1704
+ slotMatch ? (await import("./deacon-swarm-CKyGJng1.js")).coordinateSwarmSlots({ issueId: slotMatch[1].toUpperCase() }) : Promise.resolve([])
1695
1705
  ]);
1696
1706
  }
1697
1707
  return;
1698
1708
  }
1699
1709
  if (event.type === "agent.started") {
1700
1710
  const agentId = event.payload?.agentId;
1701
- if (agentId) (await import("./idle-stack-reaper-iFVOAoJy.js")).handleAgentLifecycleEventForIdleStack(agentId);
1711
+ if (agentId) (await import("./idle-stack-reaper-C1ymihno.js")).handleAgentLifecycleEventForIdleStack(agentId);
1702
1712
  return;
1703
1713
  }
1704
1714
  if (event.type === "agent.heartbeat_dead") {
1705
1715
  const agentId = event.payload?.agentId;
1706
1716
  if (agentId) {
1707
- const { handleAgentHeartbeatDeadEvent } = await import("./deacon-BqW9HMew.js");
1717
+ const { handleAgentHeartbeatDeadEvent } = await import("./deacon-CwCiNuEZ.js");
1708
1718
  await handleAgentHeartbeatDeadEvent(agentId, "event");
1709
1719
  }
1710
1720
  return;
@@ -1713,7 +1723,7 @@ async function handleCloisterDomainEventPromise(event) {
1713
1723
  const payload = event.payload;
1714
1724
  const issueId = payload?.issueId;
1715
1725
  if (issueId) {
1716
- const { handleReviewCoordinatorDied } = await import("./deacon-BqW9HMew.js");
1726
+ const { handleReviewCoordinatorDied } = await import("./deacon-CwCiNuEZ.js");
1717
1727
  await handleReviewCoordinatorDied(issueId, payload?.sessionName ?? "", payload?.reason ?? "");
1718
1728
  }
1719
1729
  return;
@@ -1721,7 +1731,7 @@ async function handleCloisterDomainEventPromise(event) {
1721
1731
  if (event.type === "work.completed") {
1722
1732
  const issueId = event.payload?.issueId;
1723
1733
  if (issueId) {
1724
- const { handleWorkCompleted } = await import("./deacon-BqW9HMew.js");
1734
+ const { handleWorkCompleted } = await import("./deacon-CwCiNuEZ.js");
1725
1735
  await handleWorkCompleted(issueId);
1726
1736
  }
1727
1737
  }
@@ -1732,12 +1742,12 @@ async function handleCloisterDomainEventPromise(event) {
1732
1742
  const status = payload?.status?.toLowerCase();
1733
1743
  if (issueId) {
1734
1744
  if (canonicalStatus === "closed" || status === "closed") {
1735
- const { handleIssueStatusChangedClosed } = await import("./closed-issue-reaper-BwUUvjEW.js");
1745
+ const { handleIssueStatusChangedClosed } = await import("./closed-issue-reaper-DrqgBJlr.js");
1736
1746
  await handleIssueStatusChangedClosed(issueId);
1737
1747
  return;
1738
1748
  }
1739
1749
  if (canonicalStatus === "todo" || status === "planned" || status === "todo") {
1740
- const { handleOrphanProposedSpec } = await import("./orphan-proposed-reconciler-DAD9FJtQ.js");
1750
+ const { handleOrphanProposedSpec } = await import("./orphan-proposed-reconciler-DbTmT7qy.js");
1741
1751
  await handleOrphanProposedSpec(issueId);
1742
1752
  }
1743
1753
  }
@@ -2193,7 +2203,7 @@ function checkAndRotateIfNeeded(specialistName, workingDir) {
2193
2203
  //#endregion
2194
2204
  //#region ../../lib/cloister/triggers.ts
2195
2205
  init_config();
2196
- init_resolver();
2206
+ init_io();
2197
2207
  /** Single-flight prevents concurrent dashboard polls from duplicating the canonical read. */
2198
2208
  const taskCompletionInflight = /* @__PURE__ */ new Map();
2199
2209
  /**
@@ -2335,10 +2345,10 @@ async function checkTaskCompletionPromise(issueId, config, workspace) {
2335
2345
  confidence: "high"
2336
2346
  };
2337
2347
  try {
2338
- const result = await createBeadsResolver(workspace).getBeadsForIssue(issueId);
2339
- if (!result.ok) throw result.error;
2340
- if (result.value.filter((task) => task.status === "closed").find((t) => t.title.toLowerCase().includes("implement") || t.labels?.includes("implementation"))) {
2341
- const openTasks = result.value.filter((task) => task.status === "open");
2348
+ const plan = readWorkspacePlanSync(workspace);
2349
+ if (!plan) throw new Error(`No readable plan for ${issueId}`);
2350
+ if (plan.plan.items.filter((task) => task.status === "completed").find((task) => task.title.toLowerCase().includes("implement"))) {
2351
+ const openTasks = plan.plan.items.filter((task) => !["completed", "cancelled"].includes(task.status));
2342
2352
  if (openTasks.length === 0) return {
2343
2353
  triggered: true,
2344
2354
  type: "task_complete",
@@ -2435,7 +2445,7 @@ async function performHealthCheck(host) {
2435
2445
  for (const health of needsAttention) {
2436
2446
  const idleAgentState = getAgentStateSync(health.agentId);
2437
2447
  if (idleAgentState?.role === "sequencer") continue;
2438
- const { shouldSkipIdlePokeForAgent } = await import("./stuck-remediation-CLHd-lrF.js");
2448
+ const { shouldSkipIdlePokeForAgent } = await import("./stuck-remediation-CaFYYTQW.js");
2439
2449
  if (shouldSkipIdlePokeForAgent(idleAgentState)) {
2440
2450
  host.pokeProgress.delete(health.agentId);
2441
2451
  continue;
@@ -2597,23 +2607,35 @@ function checkFPPViolations(host, agentIds) {
2597
2607
  }
2598
2608
  }
2599
2609
  /**
2600
- * Check for cost limit alerts
2610
+ * Check for cost limit alerts.
2611
+ *
2612
+ * Each alert fires once per threshold crossing, not on every sweep — the
2613
+ * un-deduped shape wrote the same "COST LIMIT REACHED" line hundreds of
2614
+ * thousands of times (480k+ lines in one dashboard.log). Keys are cleared
2615
+ * when the alert stops firing so a fresh crossing alerts again.
2601
2616
  */
2602
2617
  function checkCostAlerts(host, agentIds) {
2603
2618
  const config = host.config.cost_limits;
2604
2619
  if (!config) return;
2620
+ const active = host.activeCostAlertKeys;
2621
+ const firing = /* @__PURE__ */ new Set();
2605
2622
  for (const agentId of agentIds) {
2606
2623
  const alerts = checkCostLimits(agentId, agentId.startsWith("agent-") ? agentId.replace(/^agent-/, "") : agentId, config);
2607
2624
  for (const alert of alerts) {
2625
+ const entityLabel = alert.agentId || alert.issueId || "(unattributed)";
2626
+ const key = `${alert.type}:${entityLabel}:${alert.level}`;
2627
+ firing.add(key);
2628
+ if (active.has(key)) continue;
2629
+ active.add(key);
2608
2630
  host.emit({
2609
2631
  type: "cost_alert",
2610
2632
  alert
2611
2633
  });
2612
- const entityLabel = alert.agentId || alert.issueId || "(unattributed)";
2613
2634
  if (alert.level === "limit_reached") console.error(`🔔 COST LIMIT REACHED: ${alert.type} for ${entityLabel} - $${alert.currentCost.toFixed(2)} / $${alert.limit.toFixed(2)}`);
2614
2635
  else console.warn(`🔔 Cost warning: ${alert.type} for ${entityLabel} at ${alert.percentUsed.toFixed(0)}% ($${alert.currentCost.toFixed(2)} / $${alert.limit.toFixed(2)})`);
2615
2636
  }
2616
2637
  }
2638
+ for (const key of active) if (!firing.has(key)) active.delete(key);
2617
2639
  }
2618
2640
  /**
2619
2641
  * Map heartbeat source to database source string
@@ -2670,7 +2692,7 @@ async function checkCompletionMarkers(host) {
2670
2692
  if (retryCount === Infinity) host.processedCompletions.delete(dir.name);
2671
2693
  else if (retryCount >= 3) continue;
2672
2694
  const issueId = dir.name.replace("agent-", "").toUpperCase();
2673
- const { getReviewStatusSync } = await import("./review-status-Br6lAFGO.js");
2695
+ const { getReviewStatusSync } = await import("./review-status-77N3PoZr.js");
2674
2696
  const existingReview = getReviewStatusSync(issueId);
2675
2697
  if (existingReview && ["reviewing", "passed"].includes(existingReview.reviewStatus || "")) {
2676
2698
  console.log(`🔔 Cloister: Completion marker for ${issueId} — review already ${existingReview.reviewStatus}, marking processed`);
@@ -2824,7 +2846,7 @@ async function pokeAgentWithEscalation(host, agentId) {
2824
2846
  ineffective
2825
2847
  });
2826
2848
  if (ineffective >= 4) {
2827
- const { setAgentPausedSync } = await import("./agent-state-EP2QFV9n.js");
2849
+ const { setAgentPausedSync } = await import("./agent-state-C_6TG-Ad.js");
2828
2850
  try {
2829
2851
  setAgentPausedSync(agentId, `needs-you: idle-alive — no observable progress across ${ineffective + 1} pokes (idle-alive escalation)`);
2830
2852
  host.emit({
@@ -2857,7 +2879,7 @@ async function pokeAgentWithEscalation(host, agentId) {
2857
2879
  if (isContextOverflowTail(tail)) {
2858
2880
  pokeMessage = "/compact";
2859
2881
  console.log(`🔔 ${agentId}: overflow tail detected — delivering /compact instead of a poke`);
2860
- } else pokeMessage = "You appear active but have made no observable progress (no new commits, unchanged output) across multiple checks. Do exactly one of: (1) work is done — commit, push, and run pan done; (2) blocked — state the blocker in one sentence and commit what you have as WIP; (3) lost context — re-read your bead (bd show), your latest .pan/feedback/ file, and git status, then resume. Act now.";
2882
+ } else pokeMessage = "You appear active but have made no observable progress (no new commits, unchanged output) across multiple checks. Do exactly one of: (1) work is done — commit, push, and run pan done; (2) blocked — state the blocker in one sentence and commit what you have as WIP; (3) lost context — re-read your vBRIEF item (`pan task show`), your latest .pan/feedback/ file, and git status, then resume. Act now.";
2861
2883
  }
2862
2884
  await Promise.resolve(runtime.sendMessage(agentId, pokeMessage)).catch((sendErr) => {
2863
2885
  console.error(`Failed to send poke to ${agentId}:`, sendErr);
@@ -2915,7 +2937,7 @@ async function handleAgentCrash(host, agentId) {
2915
2937
  if (skipReason) {
2916
2938
  let recoverUnfinishedOneShot = false;
2917
2939
  if (ONE_SHOT_ROLES.has(agentState.role) && agentState.sessionId && agentState.issueId) try {
2918
- const { getReviewStatusSync } = await import("./review-status-Br6lAFGO.js");
2940
+ const { getReviewStatusSync } = await import("./review-status-77N3PoZr.js");
2919
2941
  const status = getReviewStatusSync(agentState.issueId);
2920
2942
  recoverUnfinishedOneShot = !(status ? isRoleTerminal(agentState.role, {
2921
2943
  reviewStatus: status.reviewStatus,
@@ -3185,6 +3207,7 @@ var CloisterService = class {
3185
3207
  healthCheckCount = 0;
3186
3208
  lastPokeTimestamps = /* @__PURE__ */ new Map();
3187
3209
  pokeProgress = /* @__PURE__ */ new Map();
3210
+ activeCostAlertKeys = /* @__PURE__ */ new Set();
3188
3211
  domainEventUnsubscribe = null;
3189
3212
  eventStore = null;
3190
3213
  _statusCache = null;
@@ -3226,6 +3249,9 @@ var CloisterService = class {
3226
3249
  get previousStates() {
3227
3250
  return service.previousStates;
3228
3251
  },
3252
+ get activeCostAlertKeys() {
3253
+ return service.activeCostAlertKeys;
3254
+ },
3229
3255
  handleAgentCrash: (agentId) => service.handleAgentCrash(agentId),
3230
3256
  checkCompletionMarkers: () => service.checkCompletionMarkers(),
3231
3257
  recordHealthEvent: (health) => service.recordHealthEvent(health),
@@ -3347,7 +3373,7 @@ var CloisterService = class {
3347
3373
  let clearedSpecialistCount = 0;
3348
3374
  try {
3349
3375
  if (existsSync(AGENTS_DIR)) {
3350
- const { isRunning: isSpecialistRunning } = await import("./specialists-8ZAguXef.js");
3376
+ const { isRunning: isSpecialistRunning } = await import("./specialists-D9-dMUtI.js");
3351
3377
  const entries = readdirSync(AGENTS_DIR, { withFileTypes: true });
3352
3378
  for (const entry of entries) {
3353
3379
  if (!entry.isDirectory()) continue;
@@ -3382,8 +3408,8 @@ var CloisterService = class {
3382
3408
  }
3383
3409
  try {
3384
3410
  const reviewStatuses = loadReviewStatuses();
3385
- const { resolveProjectFromIssueSync } = await import("./projects-KJ94e50I.js");
3386
- const { getTmuxSessionName, getAllProjectSpecialistStatuses } = await import("./specialists-8ZAguXef.js");
3411
+ const { resolveProjectFromIssueSync } = await import("./projects-Dc9aoVoG.js");
3412
+ const { getTmuxSessionName, getAllProjectSpecialistStatuses } = await import("./specialists-D9-dMUtI.js");
3387
3413
  const activeReviewIssues = /* @__PURE__ */ new Set();
3388
3414
  try {
3389
3415
  const projSpecs = await getAllProjectSpecialistStatuses();
@@ -3394,7 +3420,7 @@ var CloisterService = class {
3394
3420
  }
3395
3421
  const globalRs = getAgentRuntimeStateSync(getTmuxSessionName("review-agent"));
3396
3422
  if (globalRs?.state === "active" && globalRs.currentIssue) activeReviewIssues.add(globalRs.currentIssue.toUpperCase());
3397
- const { listRunningAgents } = await import("./agents-DCvyTXNU.js");
3423
+ const { listRunningAgents } = await import("./agents-BA15AQqo.js");
3398
3424
  const agents = await Effect.runPromise(listRunningAgents());
3399
3425
  for (const agent of agents) {
3400
3426
  if (agent.status === "stopped" || agent.status === "error") continue;
@@ -3437,7 +3463,7 @@ var CloisterService = class {
3437
3463
  continue;
3438
3464
  }
3439
3465
  const branch = `feature/${issueId.toLowerCase()}`;
3440
- const { spawnReviewRoleForIssue } = await import("./review-agent-Rub0OpZc.js");
3466
+ const { spawnReviewRoleForIssue } = await import("./review-agent-CpSHLzed.js");
3441
3467
  const dispatchResult = await Effect.runPromise(spawnReviewRoleForIssue({
3442
3468
  issueId,
3443
3469
  workspace,
@@ -3525,7 +3551,7 @@ var CloisterService = class {
3525
3551
  console.log(" ✓ Cloister event store provider installed");
3526
3552
  return;
3527
3553
  }
3528
- const { initEventStore } = await import("./event-store-CcJAhKCl.js");
3554
+ const { initEventStore } = await import("./event-store-D9UhQyMS.js");
3529
3555
  const store = await initEventStore();
3530
3556
  this.eventStore = store;
3531
3557
  this.domainEventUnsubscribe = store.subscribe((event) => {
@@ -3875,4 +3901,4 @@ function getCloisterService() {
3875
3901
  //#endregion
3876
3902
  export { performHandoff as a, getAgentsNeedingAttention as c, CostResolverLive as d, CostWriter as f, checkAllTriggers as i, CostDoorLive as l, readCloisterStateFile as n, generateHealthSummary as o, setCloisterEventStoreProvider as r, getAgentHealth as s, getCloisterService as t, CostResolver as u };
3877
3903
 
3878
- //# sourceMappingURL=service-D0_gh2tl.js.map
3904
+ //# sourceMappingURL=service-CLVBC_1Y.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { qr as init_paths, zr as encodeClaudeProjectDir } from "./config-yaml-Dcz-8uit.js";
2
+ import { Vr as encodeClaudeProjectDir, Yr as init_paths } from "./config-yaml-CqaAyn8y.js";
3
3
  import { join } from "node:path";
4
4
  import { mkdir, readFile, writeFile } from "node:fs/promises";
5
5
  import { randomUUID } from "node:crypto";
@@ -96,4 +96,4 @@ __esmMin((() => {
96
96
  }))();
97
97
  export { copySessionForFork, reserveForkSession };
98
98
 
99
- //# sourceMappingURL=session-fork-DZ12vipL.js.map
99
+ //# sourceMappingURL=session-fork-DlEIAhRy.js.map