@overdeck/desktop 0.45.7 → 0.45.8

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 (303) hide show
  1. package/package.json +10 -3
  2. package/server/{acceptance-criteria-DYffaKI9.js → acceptance-criteria-l0DSvFFS.js} +2 -2
  3. package/server/{activity-logger-DO27GsPa.js → activity-logger-DvYvFhwZ.js} +1 -1
  4. package/server/{activity-logger-Dm95Ua07.js → activity-logger-pcbf-e30.js} +3 -2
  5. package/server/{advancing-selfheal-n8tAeFwE.js → advancing-selfheal-CMlGznKv.js} +11 -66
  6. package/server/{agent-gc-CIFaa2vJ.js → agent-gc-BtAzj8QN.js} +3 -3
  7. package/server/{agent-state-service-BqVDA9b8.js → agent-state-service-5ge9xxhx.js} +5 -5
  8. package/server/{agent-state-service-CLifyinO.js → agent-state-service-C1iUF9Ft.js} +1 -1
  9. package/server/agent-state-xk_G8t90.js +3 -0
  10. package/server/{agents-KaEsWZ8D.js → agents-BIggLvi_.js} +1 -1
  11. package/server/{agents-D_x5BSZM.js → agents-DHvsjsuP.js} +129 -61
  12. package/server/{archive-planning-CFxmeFKh.js → archive-planning-B4Qi02bk.js} +1 -1
  13. package/server/{archive-planning-DVUXlRBs.js → archive-planning-zTvWWHG_.js} +4 -4
  14. package/server/{artifact-index-jobs-ChUgzZah.js → artifact-index-jobs-BrByqVkB.js} +2 -2
  15. package/server/{auto-commit-2KiBFh-K.js → auto-commit-DoIPFoEs.js} +1 -1
  16. package/server/{backlog-auto-trigger-DoTEMZMl.js → backlog-auto-trigger-COm_R96V.js} +3 -3
  17. package/server/{bd-mutex-CE6P_MlD.js → bd-mutex-BItGvLQ8.js} +2 -2
  18. package/server/{bd-process-lock-Ch3WNHS9.js → bd-process-lock-CJkoG7hW.js} +2 -2
  19. package/server/{beads-B43pgBIy.js → beads-AmCXEv_E.js} +1 -1
  20. package/server/{beads-BugPvtWp.js → beads-DlZm-vrG.js} +5 -5
  21. package/server/{beads-query-CtqWakL6.js → beads-query-BrVNWoSL.js} +2 -2
  22. package/server/{beads-restore-BqTMSQi-.js → beads-restore-CMbDSB5R.js} +1 -1
  23. package/server/{behavior-vk1sixby.js → behavior-By-2Wipv.js} +3 -3
  24. package/server/{briefing-freshness-B3YxHQ-L.js → briefing-freshness-CXhZdnB8.js} +4 -4
  25. package/server/{checkpoint-manager-CdrwLsQh.js → checkpoint-manager-CPw51H2n.js} +1 -1
  26. package/server/{checkpoint-manager-Dg6cWZz3.js → checkpoint-manager-CfNpHOp4.js} +11 -2
  27. package/server/checkpoint-worker.js +1 -1
  28. package/server/{checkpoints-DDd-0doa.js → checkpoints-BbfH1EIy.js} +2 -2
  29. package/server/{checkpoints-dBCJr0dC.js → checkpoints-BjlBWOA8.js} +1 -1
  30. package/server/{claude-permissions-BpwIcIR7.js → claude-permissions-DrRAs_0F.js} +3 -3
  31. package/server/{claude-settings-overlay-DnraWcz6.js → claude-settings-overlay-BSeS7Ki3.js} +2 -2
  32. package/server/{claude-settings-overlay-xD_Vu420.js → claude-settings-overlay-CEWlIFL-.js} +1 -1
  33. package/server/cli-CJDWXE_Y.js +3 -0
  34. package/server/{cli-BmzYZZKi.js → cli-CvK9xuSS.js} +9 -9
  35. package/server/{cliproxy-DYWdJKZ1.js → cliproxy-BOcmOK6l.js} +1 -1
  36. package/server/{cliproxy-CE2GDY7x.js → cliproxy-J-_1iIXe.js} +2 -2
  37. package/server/{close-issue-CpJd4SOL.js → close-issue-BnpErnD1.js} +5 -5
  38. package/server/{closed-issue-reaper-QpcvCDeE.js → closed-issue-reaper-BLCQwTpF.js} +1 -1
  39. package/server/{closed-issue-reaper-DubXY9Zg.js → closed-issue-reaper-DRqK5k39.js} +10 -10
  40. package/server/{codex-j8aVgRou.js → codex-BUZjrnqH.js} +1 -1
  41. package/server/{codex-B3J1TXo7.js → codex-DcInrhok.js} +5 -5
  42. package/server/{compact-beads-CqhLqG-k.js → compact-beads-RFwdZFPA.js} +4 -4
  43. package/server/{compact-beads-BeilHCdj.js → compact-beads-omhUgj5b.js} +1 -1
  44. package/server/{config-DHU0j_pS.js → config-CzcWQ24p.js} +1 -1
  45. package/server/{config-DkEhJM0h.js → config-oWoKf5jO.js} +4 -4
  46. package/server/{config-yaml-DbdN9Fuq.js → config-yaml-DPAieL_G.js} +3 -2
  47. package/server/{conflict-gate-CgOtMo8i.js → conflict-gate-BhKvrPxn.js} +4 -4
  48. package/server/{conflict-gate-D00zFjeu.js → conflict-gate-JdFuhKuF.js} +1 -1
  49. package/server/{context-layers-BHEjT8Cn.js → context-layers-CTjQwcEQ.js} +3 -3
  50. package/server/{context-layers-0Lgq-SE_.js → context-layers-DxKsseHI.js} +2 -2
  51. package/server/{control-settings-CYv732Gs.js → control-settings-BMqUkXmR.js} +4 -4
  52. package/server/{conversation-compaction-Dbw03b-X.js → conversation-compaction-Ba5aZdrb.js} +1 -1
  53. package/server/{conversation-compaction-DKXvmX50.js → conversation-compaction-C5o_eKEm.js} +8 -8
  54. package/server/{conversation-service-BwKUeEvn.js → conversation-service-DvG8vZSV.js} +5 -5
  55. package/server/{conversation-service-kYYeRp9B.js → conversation-service-WKl-sw58.js} +1 -1
  56. package/server/{conversations-Dwr1jHrO.js → conversations-DL_BAWVk.js} +4 -4
  57. package/server/{conversations-D-uOnA8T.js → conversations-Dcx6LeIh.js} +1 -1
  58. package/server/{cost-DiSDkYe7.js → cost-C2CuA66z.js} +2 -2
  59. package/server/{cost-DNIyZH1X.js → cost-DaOG8sUB.js} +3 -3
  60. package/server/{cost-sync-CfXu-3TF.js → cost-sync-8lkDeL9g.js} +3 -3
  61. package/server/{dag-DZBowTd2.js → dag-jH8ZkewR.js} +3 -3
  62. package/server/{dangerous-git-ops-Pongxg2d.js → dangerous-git-ops-Dcw7PbYo.js} +1 -1
  63. package/server/dashboard-db-worker.js +6 -6
  64. package/server/{deacon-DT0BsVyE.js → deacon-Cv2RMfHs.js} +3 -3
  65. package/server/{deacon-f0yvsG5S.js → deacon-j3qSZ7--.js} +222 -110
  66. package/server/{deacon-nudge-log-Cmcch2Av.js → deacon-nudge-log-CJGA6aSQ.js} +1 -1
  67. package/server/deacon-swarm-D1iAUX-P.js +2 -0
  68. package/server/{deacon-swarm-BBGnhvD2.js → deacon-swarm-DadWNi5J.js} +88 -43
  69. package/server/deacon.js +8 -8
  70. package/server/{devcontainer-renderer-Cpz7XBj0.js → devcontainer-renderer-DUJYYRQB.js} +3 -3
  71. package/server/{dist-DypOkJv9.js → dist-BIC8spJ0.js} +1 -1
  72. package/server/dist-BUplB3Od.js +3 -0
  73. package/server/{docker-DARVx0OZ.js → docker-Q4bphryk.js} +2 -2
  74. package/server/{ensure-devcontainer-Dmdw4BxF.js → ensure-devcontainer-BCB6fHp9.js} +1 -1
  75. package/server/{ensure-devcontainer-BJssuBG6.js → ensure-devcontainer-XLL0vtgV.js} +4 -4
  76. package/server/{esm-shims-Crmvo9Ln.js → esm-shims-DiV9jHa_.js} +1 -1
  77. package/server/{event-store-BeEE8pW5.js → event-store-DIk9wvnS.js} +1 -1
  78. package/server/{event-store-DrfTJZ1_.js → event-store-DTJXZjCl.js} +4 -4
  79. package/server/events-BlzVUyTx.js +3 -0
  80. package/server/{events-BbClwoM-.js → events-DGWZzye2.js} +4 -4
  81. package/server/{factory-DVv9cpG5.js → factory-rG4T40su.js} +4 -4
  82. package/server/{feature-registry-population-C6eVdq4J.js → feature-registry-population-Dwyj9gEM.js} +4 -4
  83. package/server/{feature-registry-storage-ByBosRId.js → feature-registry-storage-CnGyNgAq.js} +2 -2
  84. package/server/{features-EZfSwuqq.js → features-CYY2_Eeh.js} +2 -2
  85. package/server/{feedback-target-DENaINE6.js → feedback-target-C4DaDSZ8.js} +1 -1
  86. package/server/{feedback-target-Dv4VnbQl.js → feedback-target-oE4-Esxl.js} +48 -17
  87. package/server/{feedback-writer-Dxg8qM8i.js → feedback-writer-DMaO0XXa.js} +4 -4
  88. package/server/{feedback-writer-BvHE1I-3.js → feedback-writer-thrdxYpK.js} +1 -1
  89. package/server/{flywheel-Akbd9VNM.js → flywheel-BqDdGvrQ.js} +1 -1
  90. package/server/{flywheel-B4KN9BmW.js → flywheel-ClMjGW_u.js} +11 -11
  91. package/server/{flywheel-ByZyAv3P.js → flywheel-DefHRzY4.js} +13 -13
  92. package/server/{flywheel-merge-order-DPFZbt-w.js → flywheel-merge-order-B6YDSElh.js} +1 -1
  93. package/server/{flywheel-merge-order-BYUPxqgx.js → flywheel-merge-order-CuDcqTRJ.js} +7 -7
  94. package/server/forge-BfP7OJwK.js +2 -0
  95. package/server/{forge-BnTExkbK.js → forge-BixzckB0.js} +2 -2
  96. package/server/{from-B2i_NgIH.js → from-D4xmArTA.js} +1 -1
  97. package/server/{fts-db-dnCj-PD3.js → fts-db-DPtxOAjp.js} +2 -2
  98. package/server/{fts-operations-CAAofsTQ.js → fts-operations-VrGjsT0w.js} +2 -2
  99. package/server/{git-utils-CB3gDSM-.js → git-utils-D_cax3fD.js} +2 -2
  100. package/server/{git-utils-Bk7sJZru.js → git-utils-RAmTwjFB.js} +1 -1
  101. package/server/{github-app-CIhMNI4C.js → github-app-B5PDHMyn.js} +1 -1
  102. package/server/{github-app-BIU8a93o.js → github-app-FMXgo3vK.js} +2 -2
  103. package/server/{github-client-DmZgsnYP.js → github-client-VRiB6N-4.js} +1 -1
  104. package/server/{github-client-zREpj5HA.js → github-client-yjbXaqpR.js} +2 -2
  105. package/server/{github-pr-lookup-CPri6JR1.js → github-pr-lookup-t8X8R0c0.js} +2 -2
  106. package/server/{harness-resolve-TzYAiXzZ.js → harness-resolve-DKeSVsJL.js} +3 -3
  107. package/server/{health-events-CDWk8Oz4.js → health-events-CD6q47ub.js} +1 -1
  108. package/server/{health-events-Dd0FuKrE.js → health-events-DaLX4-0a.js} +2 -2
  109. package/server/{hooks-C6HBXlVm.js → hooks-CmHFSj_Z.js} +2 -2
  110. package/server/{hooks-DRLzoFof.js → hooks-D-cbMUzQ.js} +1 -1
  111. package/server/{hume-Bb91r_2I.js → hume-DkVOs1Qi.js} +2 -2
  112. package/server/hume-x9voULey.js +3 -0
  113. package/server/{idle-stack-reaper-BPHnItVj.js → idle-stack-reaper-DBKQ9SKu.js} +3 -3
  114. package/server/{idle-stack-reaper-D5bwmuwX.js → idle-stack-reaper-DdnERp3G.js} +1 -1
  115. package/server/{infra-CCTzpcuJ.js → infra-CpKlYZA9.js} +3 -3
  116. package/server/{injection-D6L7D_w0.js → injection-CszhePD2.js} +7 -7
  117. package/server/{injection-CBrN8UxB.js → injection-DKzL2Axk.js} +1 -1
  118. package/server/{inspect-agent-CSYyFWqP.js → inspect-agent-BKKc0XnB.js} +9 -9
  119. package/server/inspect-agent-vm88mLYr.js +2 -0
  120. package/server/{internal-token-DWhBqgIk.js → internal-token-CQUx9YLc.js} +2 -2
  121. package/server/{internal-token-DCrCAG_M.js → internal-token-DrGdpLFo.js} +1 -1
  122. package/server/{io-DtAQ_2hp.js → io-Wy8YpFeP.js} +2 -2
  123. package/server/{issue-closed-0Zx72zXf.js → issue-closed-BO84g03t.js} +4 -4
  124. package/server/{issue-lifecycle-ZTt6kP_K.js → issue-lifecycle-DnhQgddB.js} +22 -22
  125. package/server/{issue-lifecycle-CJ7-D4XX.js → issue-lifecycle-nY4esZn8.js} +1 -1
  126. package/server/{issue-service-singleton-DNh4RRI7.js → issue-service-singleton-Bnqv1uaa.js} +1 -1
  127. package/server/{issue-service-singleton-DRE7S-Zg.js → issue-service-singleton-_AquSBTl.js} +8 -8
  128. package/server/{issues-CGc8Aaxm.js → issues-ChNcfHta.js} +2 -2
  129. package/server/{label-cleanup-CNsPlXy6.js → label-cleanup-bVXCGWBM.js} +3 -3
  130. package/server/{layers-CO_VLcSv.js → layers-vdvlpFki.js} +2 -2
  131. package/server/{lifecycle-B_NFvTj9.js → lifecycle-CGKm7doE.js} +7 -7
  132. package/server/{lifecycle-io-D0FftBLy.js → lifecycle-io-CdqPkCyk.js} +1 -1
  133. package/server/{lifecycle-io-WDGwa1vV.js → lifecycle-io-DSrv9xGh.js} +4 -4
  134. package/server/{linear-client-MvjflCXs.js → linear-client-BxKvL6U8.js} +1 -1
  135. package/server/{linear-client-CSgH24Ym.js → linear-client-E0HdXtWs.js} +2 -2
  136. package/server/memory-fts-worker.js +1 -1
  137. package/server/{merge-DltB-RGV.js → merge-D3wEbmUJ.js} +1 -1
  138. package/server/{merge-Ce9DHBXM.js → merge-UlAwCk80.js} +4 -4
  139. package/server/{merge-agent-Rv0bNQNU.js → merge-agent-BcgAYStl.js} +27 -27
  140. package/server/{merge-agent-DRXwKxmb.js → merge-agent-Dh8Y9PDO.js} +1 -1
  141. package/server/{merge-batch-LLp_cXUR.js → merge-batch-BwhGdlh4.js} +1 -1
  142. package/server/{merge-blockers-BqYUtLBd.js → merge-blockers-DwdQNsYD.js} +2 -2
  143. package/server/merge-ops-QdBiQ8XB.js +2 -0
  144. package/server/{merge-rebase-AiSEs4QB.js → merge-rebase-CH12_ufi.js} +2 -2
  145. package/server/{merge-set-CUY9msG9.js → merge-set-TRxJwR-w.js} +3 -3
  146. package/server/{merge-set-CSJoIpKB.js → merge-set-rXK3ehnB.js} +1 -1
  147. package/server/{merge-sync-CAjbJeTp.js → merge-sync-BKLKu9kz.js} +1 -1
  148. package/server/{merge-sync-CuyWzzZK.js → merge-sync-CaLRt2cB.js} +2 -2
  149. package/server/{merge-train-DndZCAiv.js → merge-train-DmxlYbEo.js} +3 -3
  150. package/server/{merge-train-deps-Bsy90Q7t.js → merge-train-deps-DBHsOWt9.js} +4 -4
  151. package/server/{merge-verification-Kvh4WViS.js → merge-verification-DA9rvqsE.js} +4 -4
  152. package/server/{multipart-parser-BWnfyoyz.js → multipart-parser-DtIEUW2B.js} +2 -2
  153. package/server/{no-resume-mode-CKy2bwZL.js → no-resume-mode-yrPEQ_pC.js} +1 -1
  154. package/server/{orphan-proposed-reconciler-Cg5_uVy1.js → orphan-proposed-reconciler-Db8tUhce.js} +10 -10
  155. package/server/{orphan-proposed-reconciler-CjUuBs6J.js → orphan-proposed-reconciler-mXV--tcB.js} +1 -1
  156. package/server/{pan-dir-Cn3NUnxU.js → pan-dir-BgBeeZDX.js} +3 -3
  157. package/server/{paths-Bo-kA9ta.js → paths-TE1GOZDr.js} +2 -2
  158. package/server/{pickup-DRn-XNXS.js → pickup-KLRUhThD.js} +1 -1
  159. package/server/{pipeline-notifier-BbGQtvKM.js → pipeline-notifier-aX_5EqQO.js} +2 -2
  160. package/server/{pipeline-notifier-DQsOtdjZ.js → pipeline-notifier-lwMa--Gz.js} +1 -1
  161. package/server/{projects-CKTA6Klk.js → projects-BNmVxnNt.js} +1 -1
  162. package/server/{prompts-CVncQg4P.js → prompts-CelsUdrx.js} +2 -2
  163. package/server/{providers-uPI9uU7Q.js → providers-4-xOzHQu.js} +7 -7
  164. package/server/{providers-CapuDkKX.js → providers-BOnRq5XK.js} +1 -1
  165. package/server/public/assets/{chunk-BO2N2NFS-CaAvtgHW.js → chunk-BO2N2NFS-jJsbVwoD.js} +4 -4
  166. package/server/public/assets/{diagram-OG6HWLK6-C4flU2X9.js → diagram-OG6HWLK6-Cp1aNi3v.js} +1 -1
  167. package/server/public/assets/{dist-DXAnG2e9.js → dist-B2-Oc7J1.js} +1 -1
  168. package/server/public/assets/{dist-DygIHsen.js → dist-Dbb8vdyE.js} +3 -3
  169. package/server/public/assets/{ganttDiagram-6RSMTGT7-BJY25etK.js → ganttDiagram-6RSMTGT7-rujV2mSn.js} +1 -1
  170. package/server/public/assets/{highlighted-body-OFNGDK62-DIEQLSG_.js → highlighted-body-OFNGDK62-Df3Exbbt.js} +1 -1
  171. package/server/public/assets/{index-BsKNi2y5.js → index-rQPa7qlV.js} +88 -88
  172. package/server/public/assets/{linear-CRa2o9KP.js → linear-Ctp3LAJ5.js} +1 -1
  173. package/server/public/assets/mermaid-GHXKKRXX-BnC2HrDq.js +1 -0
  174. package/server/public/assets/{pieDiagram-4H26LBE5-Cb6OrK_c.js → pieDiagram-4H26LBE5-K-m6VCum.js} +1 -1
  175. package/server/public/assets/{prod-DWpuiL-y.js → prod-jqZ3zqVg.js} +4 -4
  176. package/server/public/assets/{quadrantDiagram-W4KKPZXB-DhZzzcAO.js → quadrantDiagram-W4KKPZXB-DXcFax_1.js} +1 -1
  177. package/server/public/assets/{sankeyDiagram-5OEKKPKP-CVe6lE5A.js → sankeyDiagram-5OEKKPKP-DnD_J_rB.js} +1 -1
  178. package/server/public/assets/{xychartDiagram-2RQKCTM6-zukUz5pI.js → xychartDiagram-2RQKCTM6-Dx25iKVp.js} +1 -1
  179. package/server/public/index.html +1 -1
  180. package/server/{pull-requests-C3csHJsc.js → pull-requests-CH4iBFLl.js} +3 -3
  181. package/server/{pull-requests-MeAgb3Ax.js → pull-requests-DL_4klIb.js} +1 -1
  182. package/server/{rally-nalS21zz.js → rally-D0mKv2t8.js} +3 -3
  183. package/server/rally-DffLLIdl.js +3 -0
  184. package/server/{rally-api-DzQryQi8.js → rally-api-CcCdecF-.js} +1 -1
  185. package/server/{rally-api-DdY4ebu3.js → rally-api-DgAt6FbN.js} +2 -2
  186. package/server/{rally-client-9duSds1_.js → rally-client-DYjtgTOu.js} +4 -4
  187. package/server/{rally-client-B16-bZk9.js → rally-client-X0bEEN2B.js} +1 -1
  188. package/server/reap-terminal-sessions-BwJb2DLJ.js +3 -0
  189. package/server/{reap-terminal-sessions-C6rD1pDT.js → reap-terminal-sessions-CAmURC2h.js} +12 -62
  190. package/server/{rebuild-stack-D9qBmVcM.js → rebuild-stack-BLG3rlWa.js} +6 -6
  191. package/server/{rebuild-stack-DrWMHxoY.js → rebuild-stack-ByFCMqTK.js} +1 -1
  192. package/server/{reconstruct-cache--H2QBooC.js → reconstruct-cache-_tDZ2D72.js} +6 -6
  193. package/server/{record-fn7uPjsl.js → record-DjPikotp.js} +1 -1
  194. package/server/{remote-BEkHf2HO.js → remote-B1Trmr0N.js} +3 -3
  195. package/server/{remote-Dl6Hn0zz.js → remote-TN0cV8k-.js} +3 -3
  196. package/server/{remote-agents-DNdP4sew.js → remote-agents-CmbIKw7E.js} +5 -5
  197. package/server/{remote-agents-OB4zwVHz.js → remote-agents-DNuaAgU6.js} +1 -1
  198. package/server/{remote-completion-BINc1Y8c.js → remote-completion-Bklh6loJ.js} +12 -12
  199. package/server/resume-DnIsmIgC.js +3 -0
  200. package/server/review-agent-DgySDb-G.js +3 -0
  201. package/server/{review-agent-C-A6IgXc.js → review-agent-phzqNqIs.js} +599 -197
  202. package/server/{review-artifacts-DTTdAYsU.js → review-artifacts-BGc69epg.js} +7 -7
  203. package/server/{review-context-De14xPtc.js → review-context-CCq56O_Y.js} +7 -7
  204. package/server/{review-monitor-BNV3kjLq.js → review-monitor-BKG2ubt5.js} +2 -2
  205. package/server/{review-status-DWAsTqfJ.js → review-status-BQjqQXZG.js} +160 -52
  206. package/server/{review-status-mo3tyc8L.js → review-status-bBkqUj5i.js} +1 -1
  207. package/server/{review-status-enrichment-C6sr9wOI.js → review-status-enrichment-CGlcApSn.js} +3 -3
  208. package/server/{review-status-sync-D-p7TQit.js → review-status-sync-BWHnrq-k.js} +3 -3
  209. package/server/{review-status-sync-MvYGQLDD.js → review-status-sync-BxHBVH8s.js} +1 -1
  210. package/server/{review-verdict-feedback-BbIfN5Vg.js → review-verdict-feedback-cZh9Wi9G.js} +1 -1
  211. package/server/{review-verdict-feedback-Cfc-THvz.js → review-verdict-feedback-wqnikhMK.js} +16 -36
  212. package/server/{rollup-DgWlrSBc.js → rollup-BJE-Vc7H.js} +8 -8
  213. package/server/{rollup-CxR6GMTe.js → rollup-DBNy1yFB.js} +1 -1
  214. package/server/{scanner-6OmIn5XE.js → scanner-CUGpdp4i.js} +7 -7
  215. package/server/{sequence-io-CxiPMMKM.js → sequence-io-B2GmilSI.js} +4 -4
  216. package/server/{sequencer-agent--xPlSfR2.js → sequencer-agent-D8pW2aU_.js} +5 -5
  217. package/server/server.js +166 -162
  218. package/server/{service-CXje28KS.js → service-CILd-uOt.js} +46 -45
  219. package/server/session-fork-DDSDVoIK.js +99 -0
  220. package/server/{settings-ChvoXExM.js → settings-CBrei_kx.js} +2 -2
  221. package/server/{settings-DZq_bi-B.js → settings-D2wt4nku.js} +3 -3
  222. package/server/settings-vLoKyghx.js +2 -0
  223. package/server/{shadow-engineering-BHeyD5bL.js → shadow-engineering-Ba1D0QUN.js} +2 -2
  224. package/server/{shadow-state-p3YTxrJ5.js → shadow-state-BOaq8BrD.js} +1 -1
  225. package/server/{shadow-state-3L0eHQNE.js → shadow-state-DTC7AMHc.js} +2 -2
  226. package/server/{ship-log-B2EEH__n.js → ship-log-CMWH3H5-.js} +1 -1
  227. package/server/{smart-compaction-DRXK5_io.js → smart-compaction-Bgp_gwcA.js} +1 -1
  228. package/server/{smart-compaction-DMB4hv07.js → smart-compaction-CrP90OFE.js} +7 -7
  229. package/server/{spawn-planning-session-BZfVvIi3.js → spawn-planning-session-BmJWHSCu.js} +15 -15
  230. package/server/{spawn-planning-session-BBUzeHJQ.js → spawn-planning-session-D15KbPOy.js} +1 -1
  231. package/server/{specialist-completion-BAZHHbmp.js → specialist-completion-BiEXUHfD.js} +1 -1
  232. package/server/{specialist-context-DgdhI7rm.js → specialist-context-CwKkcXL9.js} +5 -5
  233. package/server/{specialist-handoff-logger-CH1nC8fq.js → specialist-handoff-logger-B_2VsWli.js} +2 -2
  234. package/server/{specialist-logs-DynFhFXg.js → specialist-logs-CvDxquV_.js} +3 -3
  235. package/server/{specialists-LJ9MZMCz.js → specialists-BCjcG4uE.js} +1 -1
  236. package/server/{specialists-BUKBHtmQ.js → specialists-BYi0k8CZ.js} +18 -18
  237. package/server/{specialists-e0Jmecc1.js → specialists-D07ybnam.js} +78 -85
  238. package/server/{specialists-CF02f9p2.js → specialists-F2uMO4QS.js} +1 -1
  239. package/server/specs-DeS98l_p.js +3 -0
  240. package/server/{src-CNLON0co.js → src-BswtmojL.js} +6 -6
  241. package/server/{src-DhJeCV1p.js → src-Dp0WHgDZ.js} +3 -3
  242. package/server/{src-AXK4mjue.js → src-fgbU-jJ-.js} +6 -3
  243. package/server/{stack-health-8jZH0Lgk.js → stack-health-BJVh1TCg.js} +3 -3
  244. package/server/{stack-health-CXYHwv5D.js → stack-health-Deel1mSW.js} +1 -1
  245. package/server/{state-home-XkLSsJCD.js → state-home-Bgj7i-C7.js} +8 -7
  246. package/server/{summary-fork-shfA2XOf.js → summary-fork-DedqguZb.js} +2 -2
  247. package/server/{summary-fork-BWa0ECGL.js → summary-fork-EjvOkEPl.js} +12 -91
  248. package/server/{supervisor-owMkHcx8.js → supervisor-0oXvLwyC.js} +3 -3
  249. package/server/supervisor-D1-XwmZ7.js +2 -0
  250. package/server/{swarm-readiness-BACUsKOx.js → swarm-readiness-OBgamRql.js} +3 -3
  251. package/server/{teardown-workspace-CYt_PBaq.js → teardown-workspace-5LCVbjfq.js} +14 -14
  252. package/server/{test-agent-queue-C1s6mB8C.js → test-agent-queue-qfsq6uaC.js} +6 -6
  253. package/server/{test-verdict-CmxX3KEf.js → test-verdict-BkubHtti.js} +1 -1
  254. package/server/{test-verdict-njEv9ZY2.js → test-verdict-D3Il7cBK.js} +1 -1
  255. package/server/{tldr-daemon-CEUflKr2.js → tldr-daemon-CJW_P4On.js} +2 -2
  256. package/server/{tldr-daemon-HIo0dwDB.js → tldr-daemon-CJqGsDFh.js} +1 -1
  257. package/server/tmux-CeDD14p1.js +3 -0
  258. package/server/{tmux-CBYZ5lKF.js → tmux-ePNhMIMU.js} +2 -2
  259. package/server/{token-CiS3w6Ma.js → token-_qujO3JZ.js} +1 -1
  260. package/server/{tracker-config-CVCoeaaL.js → tracker-config-C3hiPVAM.js} +2 -2
  261. package/server/{tracker-config-Bx50plWp.js → tracker-config-Drt_tx4D.js} +1 -1
  262. package/server/{tracker-utils-C2Lg4RoB.js → tracker-utils-D6B8scEw.js} +1 -1
  263. package/server/{tracker-utils-mI4d-vh8.js → tracker-utils-bpWs7Xyx.js} +2 -2
  264. package/server/{traefik-connect-D21-YEyX.js → traefik-connect-5EP1WS_Z.js} +1 -1
  265. package/server/{tunnel-BK4PVyb0.js → tunnel-3Ve8BS4H.js} +3 -3
  266. package/server/{tunnel-CcHkuRIS.js → tunnel-AporWhoi.js} +1 -1
  267. package/server/{types-DoPMvws2.js → types-B5u3NxMl.js} +1 -1
  268. package/server/{uat-train-BLFPxqLx.js → uat-train-C3hWXtip.js} +1 -1
  269. package/server/{uat-train-CQ_E-2ei.js → uat-train-CtNGgXxj.js} +27 -27
  270. package/server/{validation-Dab3bnSN.js → validation-BmUB-26g.js} +4 -4
  271. package/server/{validation-1QnjDMc0.js → validation-CbqP_dze.js} +1 -1
  272. package/server/{verification-runner-BO8TgZWA.js → verification-runner-BPAhPWR7.js} +11 -11
  273. package/server/{verification-runner-UhAAqOio.js → verification-runner-DuZRHjPU.js} +1 -1
  274. package/server/{vtt-parser-D-q5-8il.js → vtt-parser-CKc-smWM.js} +1 -1
  275. package/server/{work-agent-prompt-D_7T1xw5.js → work-agent-prompt-DCdHsm-V.js} +11 -11
  276. package/server/workflows-Cz8OtiB4.js +2 -0
  277. package/server/{workflows-CB5SWd0B.js → workflows-H-COJ84X.js} +14 -14
  278. package/server/{workspace-C4Avf_Tp.js → workspace-4ZufqeMe.js} +3 -3
  279. package/server/{workspace--XWYPbn1.js → workspace-DYv9kBg6.js} +1 -1
  280. package/server/{workspace-config-BwJB-bLH.js → workspace-config-DA8U97k9.js} +1 -1
  281. package/server/{workspace-manager-_6zbrhNF.js → workspace-manager-B3PqQQSM.js} +1 -1
  282. package/server/{workspace-manager-BE3OznLY.js → workspace-manager-CEWK-OXd.js} +12 -12
  283. package/server/{workspace-metadata-BCgODi1j.js → workspace-metadata-1eu1RvAT.js} +2 -2
  284. package/server/{workspace-metadata-wKPgY8PN.js → workspace-metadata-C0I-nIDL.js} +1 -1
  285. package/server/{workspaces-DpMiZ9BP.js → workspaces-CRU9_vRn.js} +154 -106
  286. package/server/agent-state-DTZCqWx5.js +0 -3
  287. package/server/cli-wyiCmp7b.js +0 -3
  288. package/server/deacon-swarm-jDiQ0kKk.js +0 -2
  289. package/server/dist-CnkaBMG-.js +0 -3
  290. package/server/forge-D2QLGWK9.js +0 -2
  291. package/server/hume-sCsuupWb.js +0 -3
  292. package/server/inspect-agent-DnspoIls.js +0 -2
  293. package/server/merge-ops-B6xc_Irj.js +0 -2
  294. package/server/public/assets/mermaid-GHXKKRXX-uIkd-n0c.js +0 -1
  295. package/server/rally-BJiyvz3w.js +0 -3
  296. package/server/reap-terminal-sessions-mW7SPDtP.js +0 -2
  297. package/server/resume-Pur3Z2e8.js +0 -3
  298. package/server/review-agent-BRSSFv7e.js +0 -3
  299. package/server/settings-D0XXIUQ0.js +0 -2
  300. package/server/specs-COn3zZ2Q.js +0 -3
  301. package/server/supervisor-DwGIhpXk.js +0 -2
  302. package/server/tmux-DNmHGMEv.js +0 -3
  303. package/server/workflows-Plo_VxeO.js +0 -2
@@ -1,9 +1,9 @@
1
1
  import { n as __esmMin, r as __exportAll } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Lr as encodeClaudeProjectDir, Or as OVERDECK_HOME, Vr as init_paths, vr as init_errors, yr as AGENTS_DIR } from "./config-yaml-DbdN9Fuq.js";
3
- import { E as listPaneValues, L as sessionExists, w as killSession, x as init_tmux } from "./tmux-CBYZ5lKF.js";
4
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-DiSDkYe7.js";
5
- import { a as readCavemanVariant, n as init_workspace } from "./workspace-C4Avf_Tp.js";
6
- import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-TzYAiXzZ.js";
2
+ import { Lr as encodeClaudeProjectDir, Or as OVERDECK_HOME, Vr as init_paths, vr as init_errors, yr as AGENTS_DIR } from "./config-yaml-DPAieL_G.js";
3
+ import { E as listPaneValues, L as sessionExists, w as killSession, x as init_tmux } from "./tmux-ePNhMIMU.js";
4
+ import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-C2CuA66z.js";
5
+ import { a as readCavemanVariant, n as init_workspace } from "./workspace-4ZufqeMe.js";
6
+ import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-DKeSVsJL.js";
7
7
  import { Effect } from "effect";
8
8
  import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "fs";
9
9
  import { basename, join } from "path";
@@ -325,7 +325,7 @@ function roleForSpecialistModel(specialistType) {
325
325
  return { role: "work" };
326
326
  }
327
327
  async function buildSpecialistBaseCommand(specialistType, model, sessionName) {
328
- const { getAgentRuntimeBaseCommand } = await import("./agents-KaEsWZ8D.js");
328
+ const { getAgentRuntimeBaseCommand } = await import("./agents-BIggLvi_.js");
329
329
  const role = roleForSpecialistModel(specialistType).role;
330
330
  const harness = await resolveHarness({
331
331
  model,
@@ -724,7 +724,7 @@ async function signalSpecialistCompletion(projectKey, specialistType, result, is
724
724
  const resolvedTmuxSession = metadata.tmuxSession ?? getTmuxSessionName(specialistType, projectKey, issueId);
725
725
  updateRunStatus(projectKey, registryKey, result.status);
726
726
  if (metadata.currentRun) try {
727
- const { finalizeRunLogSync } = await import("./specialist-logs-DynFhFXg.js");
727
+ const { finalizeRunLogSync } = await import("./specialist-logs-CvDxquV_.js");
728
728
  finalizeRunLogSync(projectKey, specialistType, metadata.currentRun, {
729
729
  status: result.status,
730
730
  notes: result.notes
@@ -734,7 +734,7 @@ async function signalSpecialistCompletion(projectKey, specialistType, result, is
734
734
  }
735
735
  setCurrentRun(projectKey, registryKey, null);
736
736
  updateRunMetadata(projectKey, registryKey, { currentActivity: null });
737
- import("./agents-KaEsWZ8D.js").then(({ saveAgentRuntimeState }) => {
737
+ import("./agents-BIggLvi_.js").then(({ saveAgentRuntimeState }) => {
738
738
  saveAgentRuntimeState(resolvedTmuxSession, {
739
739
  state: "idle",
740
740
  lastActivity: (/* @__PURE__ */ new Date()).toISOString(),
@@ -765,7 +765,7 @@ async function terminateSpecialist(projectKey, specialistType, issueId) {
765
765
  console.error(`[specialist] Failed to kill tmux session ${tmuxSession}:`, error);
766
766
  }
767
767
  if (metadata.currentRun) {
768
- const { finalizeRunLogSync } = await import("./specialist-logs-DynFhFXg.js");
768
+ const { finalizeRunLogSync } = await import("./specialist-logs-CvDxquV_.js");
769
769
  try {
770
770
  finalizeRunLogSync(projectKey, specialistType, metadata.currentRun, {
771
771
  status: metadata.lastRunStatus || "incomplete",
@@ -779,12 +779,12 @@ async function terminateSpecialist(projectKey, specialistType, issueId) {
779
779
  updateRunMetadata(projectKey, registryKey, { currentActivity: null });
780
780
  const key = `${projectKey}-${specialistType}`;
781
781
  gracePeriodStates.delete(key);
782
- const { saveAgentRuntimeState } = await import("./agents-KaEsWZ8D.js");
782
+ const { saveAgentRuntimeState } = await import("./agents-BIggLvi_.js");
783
783
  saveAgentRuntimeState(tmuxSession, {
784
784
  state: "suspended",
785
785
  lastActivity: (/* @__PURE__ */ new Date()).toISOString()
786
786
  });
787
- const { scheduleDigestGeneration } = await import("./specialist-context-DgdhI7rm.js");
787
+ const { scheduleDigestGeneration } = await import("./specialist-context-CwKkcXL9.js");
788
788
  scheduleDigestGeneration(projectKey, specialistType);
789
789
  scheduleLogCleanup(projectKey, specialistType);
790
790
  }
@@ -797,8 +797,8 @@ async function terminateSpecialist(projectKey, specialistType, issueId) {
797
797
  function scheduleLogCleanup(projectKey, specialistType) {
798
798
  Promise.resolve().then(async () => {
799
799
  try {
800
- const { cleanupOldLogsSync } = await import("./specialist-logs-DynFhFXg.js");
801
- const { getSpecialistRetention } = await import("./projects-CKTA6Klk.js");
800
+ const { cleanupOldLogsSync } = await import("./specialist-logs-CvDxquV_.js");
801
+ const { getSpecialistRetention } = await import("./projects-BNmVxnNt.js");
802
802
  const retention = getSpecialistRetention(projectKey);
803
803
  const deleted = cleanupOldLogsSync(projectKey, specialistType, {
804
804
  maxDays: retention.max_days,
@@ -952,7 +952,7 @@ function listSpecialistsForProject(projectKey) {
952
952
  */
953
953
  async function getAllProjectSpecialistStatuses() {
954
954
  const registry = loadRegistry();
955
- const { getAgentRuntimeStateSync } = await import("./agents-KaEsWZ8D.js");
955
+ const { getAgentRuntimeStateSync } = await import("./agents-BIggLvi_.js");
956
956
  const results = [];
957
957
  for (const [projectKey, specialists] of Object.entries(registry.projects)) for (const [registryKey, metadata] of Object.entries(specialists)) {
958
958
  const { specialistType, issueId, role } = parseSpecialistRegistryKey(registryKey);
@@ -1089,7 +1089,7 @@ async function getSpecialistStatus(name, projectKey) {
1089
1089
  const sessionId = readRecordedClaudeSessionId(getTmuxSessionName(name, projectKey));
1090
1090
  const running = await isRunning(name, projectKey);
1091
1091
  const contextTokens = countContextTokens(name);
1092
- const { getAgentRuntimeStateSync } = await import("./agents-KaEsWZ8D.js");
1092
+ const { getAgentRuntimeStateSync } = await import("./agents-BIggLvi_.js");
1093
1093
  const runtimeState = getAgentRuntimeStateSync(getTmuxSessionName(name, projectKey));
1094
1094
  let state;
1095
1095
  if (runtimeState) switch (runtimeState.state) {
@@ -1169,7 +1169,7 @@ async function sendFeedbackToAgent(feedback) {
1169
1169
  }
1170
1170
  const agentSession = `agent-${toIssueId.toLowerCase()}`;
1171
1171
  const feedbackMessage = formatFeedbackForAgent(fullFeedback);
1172
- const { writeFeedbackFile } = await import("./feedback-writer-BvHE1I-3.js");
1172
+ const { writeFeedbackFile } = await import("./feedback-writer-thrdxYpK.js");
1173
1173
  const specialist = {
1174
1174
  "review-agent": "review-agent",
1175
1175
  "test-agent": "test-agent",
@@ -1188,7 +1188,7 @@ async function sendFeedbackToAgent(feedback) {
1188
1188
  return false;
1189
1189
  }
1190
1190
  try {
1191
- const { messageAgent } = await import("./agents-KaEsWZ8D.js");
1191
+ const { messageAgent } = await import("./agents-BIggLvi_.js");
1192
1192
  await messageAgent(agentSession, `SPECIALIST FEEDBACK: ${fromSpecialist} reported ${feedback.feedbackType.toUpperCase()} for ${toIssueId}.\n\nMUST READ: ${fileResult.filePath}\n\nUse your Read tool to open this file, read every line, then address the feedback and continue working. Do NOT stop at the prompt.`);
1193
1193
  console.log(`[specialist] Sent feedback from ${fromSpecialist} to ${agentSession} (file: ${fileResult.filePath})`);
1194
1194
  return true;
@@ -1307,4 +1307,4 @@ var init_specialists = __esmMin((() => {
1307
1307
  //#endregion
1308
1308
  export { updateRunMetadata as $, isEnabled as A, pauseGracePeriod as B, getSpecialistState as C, initSpecialistsDirectory as D, incrementProjectRunCount as E, listSpecialistsForProject as F, sendFeedbackToAgent as G, recordWake as H, loadRegistry as I, specialists_exports as J, setCurrentRun as K, makeSpecialistRegistryKey as L, isProjectSpecialistActivelyRunning as M, isRunning as N, init_specialists as O, listProjectsWithSpecialists as P, updateProjectSpecialistMetadata as Q, parseReviewerSessionName as R, getSpecialistMetadata as S, getTmuxSessionName as T, resumeGracePeriod as U, pruneSpecialistRegistryEntriesForIssue as V, saveRegistry as W, terminateSpecialist as X, startGracePeriod as Y, updateContextTokens as Z, getPendingFeedback as _, disableSpecialist as a, init_jsonl_parser as at, getReviewerSessionName as b, exitGracePeriod as c, getAllProjectSpecialistStatuses as d, updateRunStatus as et, getAllSpecialistStatus as f, getGracePeriodState as g, getFeedbackStats as h, countContextTokens as i, getSessionFilesSync as it, isInitialized as j, initializeEnabledSpecialists as k, findActiveRegistryKey as l, getEnabledSpecialists as m, buildSpecialistBaseCommand as n, getActiveSessionModelSync as nt, enableSpecialist as o, normalizeModelName as ot, getAllSpecialists as p, signalSpecialistCompletion as q, buildSpecialistCavemanExports as r, getProjectDirsSync as rt, ensureProjectSpecialistDir as s, parseClaudeSessionSync as st, REVIEWER_ROLES as t, updateSpecialistMetadata as tt, findSessionFile as u, getProjectSpecialistDir as v, getSpecialistStatus as w, getRunMetadata as x, getProjectSpecialistMetadata as y, parseSpecialistRegistryKey as z };
1309
1309
 
1310
- //# sourceMappingURL=specialists-BUKBHtmQ.js.map
1310
+ //# sourceMappingURL=specialists-BYi0k8CZ.js.map
@@ -1,34 +1,34 @@
1
1
  import { a as __toCommonJS } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { $n as extractPrefixSync, Br as getOverdeckHome, C as resolveTieredExecutionEnabled, Dn as getProjectSync, E as canUseHarnessSync, Gn as resolveProjectFromIssueSync, Lr as encodeClaudeProjectDir, Nn as init_projects, O as init_harness_policy, S as init_tier_table, Vr as init_paths, X as resolveModel, cr as FsError, er as init_issue_id, f as loadConfigSync, fn as init_state_read_home, mn as shouldCommitLegacyWorkspaceArtifacts, nr as parseIssueIdSync, t as init_config_yaml, vr as init_errors, w as resolveTieredExecutionEnabledForIssue } from "./config-yaml-DbdN9Fuq.js";
3
- import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-Dm95Ua07.js";
4
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CCTzpcuJ.js";
5
- import { K as buildChildEnvWithoutTmuxSync, L as sessionExists, R as sessionExistsSync, i as capturePane, k as listSessions, q as init_child_env, w as killSession, x as init_tmux } from "./tmux-CBYZ5lKF.js";
6
- import { a as init_event_store, n as getEventStore } from "./event-store-DrfTJZ1_.js";
7
- import { C as normalizeChannelReplyPayload, a as getHarnessBehavior, b as DomainEvent, t as init_src } from "./src-AXK4mjue.js";
8
- import { A as stateToOverdeckParamsForDb, D as init_agent_state_sync, T as AGENT_COLUMNS_FOR_DB, c as init_review_status, s as getReviewStatusSync, u as loadReviewStatuses, y as setReviewStatusSync } from "./review-status-DWAsTqfJ.js";
9
- import { a as EventStoreService, c as ReadModelService, d as init_read_model, i as init_issue_lifecycle, s as init_domain_services, t as IssueLifecycle, u as getClosedIssueIdsForReadSource } from "./issue-lifecycle-ZTt6kP_K.js";
10
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-DiSDkYe7.js";
11
- import { $n as writeAgentStateJsonSync, An as getAgentDir, Bt as resolveStaffing, C as restartAgent, Ct as deliverAgentPermissionDecision, E as resumeAgent, En as clearAgentTroubled, Et as setAgentDeliveryMethod, F as getActivity, I as getLatestSessionId, Jn as saveAgentStateSync, Jt as getProviderAuthMode, K as stopAgent, L as getLatestSessionIdSync, Lt as transitionIssueToInProgress, M as init_operator_interventions, Mn as getAgentState, N as operatorInterventionEvent, Pn as getAgentStateSync, Qn as wipeAgentStateDirs, R as getSessionId, S as recoverAgent, St as deliverAgentMessage, Vn as markAgentStoppedState, X as listAgentStates, Yn as setAgentPaused, Z as listRunningAgents, _t as init_config, cn as determineModel, er as init_persistent_logger, fn as init_provider_health, g as init_tier_escalation, gr as saveAgentRuntimeState, h as decideEscalation, j as messageAgent, lr as normalizeAgentId, mr as getAgentRuntimeStateSync, pn as validateProviderHealth, pr as getAgentRuntimeState, qn as saveAgentState, t as init_agents, tr as logAgentLifecycleSync, wn as clearAgentPaused, yt as loadCloisterConfigSync, z as saveSessionId, zt as init_staffing } from "./agents-D_x5BSZM.js";
12
- import { t as init_behavior } from "./behavior-vk1sixby.js";
13
- import { a as performHandoff, i as checkAllTriggers, s as getAgentHealth, t as getCloisterService } from "./service-CXje28KS.js";
14
- import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-CVCoeaaL.js";
15
- import { n as init_issue_service_singleton, r as issue_service_singleton_exports } from "./issue-service-singleton-DRE7S-Zg.js";
2
+ import { $n as extractPrefixSync, Br as getOverdeckHome, C as resolveTieredExecutionEnabled, Dn as getProjectSync, E as canUseHarnessSync, Gn as resolveProjectFromIssueSync, Lr as encodeClaudeProjectDir, Nn as init_projects, O as init_harness_policy, S as init_tier_table, Vr as init_paths, X as resolveModel, cr as FsError, er as init_issue_id, f as loadConfigSync, fn as init_state_read_home, mn as shouldCommitLegacyWorkspaceArtifacts, nr as parseIssueIdSync, t as init_config_yaml, vr as init_errors, w as resolveTieredExecutionEnabledForIssue } from "./config-yaml-DPAieL_G.js";
3
+ import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-pcbf-e30.js";
4
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CpKlYZA9.js";
5
+ import { K as buildChildEnvWithoutTmuxSync, L as sessionExists, R as sessionExistsSync, i as capturePane, k as listSessions, q as init_child_env, w as killSession, x as init_tmux } from "./tmux-ePNhMIMU.js";
6
+ import { a as init_event_store, n as getEventStore } from "./event-store-DTJXZjCl.js";
7
+ import { C as normalizeChannelReplyPayload, a as getHarnessBehavior, b as DomainEvent, t as init_src } from "./src-fgbU-jJ-.js";
8
+ import { D as AGENT_COLUMNS_FOR_DB, M as stateToOverdeckParamsForDb, c as init_review_status, k as init_agent_state_sync, s as getReviewStatusSync, u as loadReviewStatuses, y as setReviewStatusSync } from "./review-status-BQjqQXZG.js";
9
+ import { a as EventStoreService, c as ReadModelService, d as init_read_model, i as init_issue_lifecycle, s as init_domain_services, t as IssueLifecycle, u as getClosedIssueIdsForReadSource } from "./issue-lifecycle-DnhQgddB.js";
10
+ import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-C2CuA66z.js";
11
+ import { $n as writeAgentStateJsonSync, An as getAgentDir, Bt as resolveStaffing, C as restartAgent, Ct as deliverAgentPermissionDecision, E as resumeAgent, En as clearAgentTroubled, Et as setAgentDeliveryMethod, F as getActivity, I as getLatestSessionId, Jn as saveAgentStateSync, Jt as getProviderAuthMode, K as stopAgent, L as getLatestSessionIdSync, Lt as transitionIssueToInProgress, M as init_operator_interventions, Mn as getAgentState, N as operatorInterventionEvent, Pn as getAgentStateSync, Qn as wipeAgentStateDirs, R as getSessionId, S as recoverAgent, St as deliverAgentMessage, Vn as markAgentStoppedState, X as listAgentStates, Yn as setAgentPaused, Z as listRunningAgents, _t as init_config, cn as determineModel, er as init_persistent_logger, fn as init_provider_health, g as init_tier_escalation, gr as saveAgentRuntimeState, h as decideEscalation, j as messageAgent, lr as normalizeAgentId, mr as getAgentRuntimeStateSync, pn as validateProviderHealth, pr as getAgentRuntimeState, qn as saveAgentState, t as init_agents, tr as logAgentLifecycleSync, wn as clearAgentPaused, yt as loadCloisterConfigSync, z as saveSessionId, zt as init_staffing } from "./agents-DHvsjsuP.js";
12
+ import { t as init_behavior } from "./behavior-By-2Wipv.js";
13
+ import { a as performHandoff, i as checkAllTriggers, s as getAgentHealth, t as getCloisterService } from "./service-CILd-uOt.js";
14
+ import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-C3hiPVAM.js";
15
+ import { n as init_issue_service_singleton, r as issue_service_singleton_exports } from "./issue-service-singleton-_AquSBTl.js";
16
16
  import { a as PAN_DIRNAME, i as PAN_CONTINUE_FILENAME, p as init_types } from "./types-CE1m_daD.js";
17
- import { I as generateVBriefFilename, L as init_lifecycle, f as readTierOverrides, g as serializeVBriefDocument, h as recordTierPromotion, m as readWorkspacePlanSync, o as init_io, r as findPlan, u as readPlan } from "./io-DtAQ_2hp.js";
18
- import { d as getCliproxyAuthDir, g as getCliproxyLogPath, l as decodeJwtPayload, v as init_cliproxy } from "./cliproxy-CE2GDY7x.js";
19
- import { _ as init_codex_conversation_parser, c as parseEntireConversation, d as init_pi_conversation_parser, g as parseOhmypiConversationMessages, m as init_ohmypi_conversation_parser, p as parsePiConversationMessages, t as init_conversation_service, v as parseCodexConversationMessages } from "./conversation-service-BwKUeEvn.js";
20
- import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population-C6eVdq4J.js";
21
- import { c as requireModelOverrideSync, n as init_state_home, o as init_model_validation, r as isStateMigrated, s as normalizeModelOverrideSync } from "./state-home-XkLSsJCD.js";
22
- import { a as init_stack_health, i as getWorkspaceStackHealth } from "./stack-health-8jZH0Lgk.js";
23
- import { s as getDispatchableItems, u as init_dag } from "./dag-DZBowTd2.js";
24
- import { i as queryBeadById, r as init_beads_query } from "./beads-query-CtqWakL6.js";
25
- import { a as init_lifecycle_io, c as updatePlanStatus, s as transitionVBriefOnMain } from "./lifecycle-io-WDGwa1vV.js";
26
- import { Lt as getRuntimeForAgent, Q as createInFlightGuard, Qt as getAgentWorkspace$1, Rt as classifyMemoryPressure, Ut as getResourceConfig, Wt as getSystemHealthSnapshot, Xt as getAgentJsonlPath$1, Zt as getAgentPendingQuestions$1, nn as normalizeAwaitingInputPrompt, qt as computeAgentEnrichment } from "./deacon-f0yvsG5S.js";
27
- import { o as stopWorkspaceDocker, r as init_workspace_manager } from "./workspace-manager-BE3OznLY.js";
28
- import { at as init_jsonl_parser, ot as normalizeModelName } from "./specialists-BUKBHtmQ.js";
29
- import { t as withBdMutex } from "./bd-mutex-CE6P_MlD.js";
30
- import { a as loadWorkspaceMetadataSync } from "./workspace-metadata-BCgODi1j.js";
31
- import { c as syncBeadStatusToVBrief } from "./beads-BugPvtWp.js";
17
+ import { I as generateVBriefFilename, L as init_lifecycle, f as readTierOverrides, g as serializeVBriefDocument, h as recordTierPromotion, m as readWorkspacePlanSync, o as init_io, r as findPlan, u as readPlan } from "./io-Wy8YpFeP.js";
18
+ import { d as getCliproxyAuthDir, g as getCliproxyLogPath, l as decodeJwtPayload, v as init_cliproxy } from "./cliproxy-J-_1iIXe.js";
19
+ import { _ as init_codex_conversation_parser, c as parseEntireConversation, d as init_pi_conversation_parser, g as parseOhmypiConversationMessages, m as init_ohmypi_conversation_parser, p as parsePiConversationMessages, t as init_conversation_service, v as parseCodexConversationMessages } from "./conversation-service-DvG8vZSV.js";
20
+ import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population-Dwyj9gEM.js";
21
+ import { c as requireModelOverrideSync, n as init_state_home, o as init_model_validation, r as isStateMigrated, s as normalizeModelOverrideSync } from "./state-home-Bgj7i-C7.js";
22
+ import { a as init_stack_health, i as getWorkspaceStackHealth } from "./stack-health-BJVh1TCg.js";
23
+ import { s as getDispatchableItems, u as init_dag } from "./dag-jH8ZkewR.js";
24
+ import { i as queryBeadById, r as init_beads_query } from "./beads-query-BrVNWoSL.js";
25
+ import { a as init_lifecycle_io, c as updatePlanStatus, s as transitionVBriefOnMain } from "./lifecycle-io-DSrv9xGh.js";
26
+ import { Lt as getRuntimeForAgent, Q as createInFlightGuard, Qt as getAgentWorkspace$1, Rt as classifyMemoryPressure, Ut as getResourceConfig, Wt as getSystemHealthSnapshot, Xt as getAgentJsonlPath$1, Zt as getAgentPendingQuestions$1, nn as normalizeAwaitingInputPrompt, qt as computeAgentEnrichment } from "./deacon-j3qSZ7--.js";
27
+ import { o as stopWorkspaceDocker, r as init_workspace_manager } from "./workspace-manager-CEWK-OXd.js";
28
+ import { at as init_jsonl_parser, ot as normalizeModelName } from "./specialists-BYi0k8CZ.js";
29
+ import { t as withBdMutex } from "./bd-mutex-BItGvLQ8.js";
30
+ import { a as loadWorkspaceMetadataSync } from "./workspace-metadata-1eu1RvAT.js";
31
+ import { c as syncBeadStatusToVBrief } from "./beads-DlZm-vrG.js";
32
32
  import { Cause, Data, Effect, Layer, Option, Schema, Stream } from "effect";
33
33
  import { join } from "path";
34
34
  import { homedir } from "node:os";
@@ -629,7 +629,7 @@ async function resolveCodexRolloutPath(agentId, opts = {}) {
629
629
  const agentDir = join$1(opts.agentsDirOverride ?? join$1(getOverdeckHome(), "agents"), agentId);
630
630
  const codexHome = join$1(agentDir, "codex-home");
631
631
  if (!await pathExists$1(codexHome)) return null;
632
- const { findRolloutPath, findLatestRollout } = await import("./codex-j8aVgRou.js");
632
+ const { findRolloutPath, findLatestRollout } = await import("./codex-BUZjrnqH.js");
633
633
  const threadId = (await readOptional(join$1(agentDir, "codex-thread-id")))?.trim();
634
634
  if (threadId) {
635
635
  const rollout = findRolloutPath(codexHome, threadId);
@@ -1720,7 +1720,7 @@ const getAgentOutputRoute = HttpRouter.add("GET", "/api/agents/:id/output", http
1720
1720
  } catch {}
1721
1721
  let stdout;
1722
1722
  if (isRemote && vmName) {
1723
- const { getRemoteAgentOutput } = await import("./remote-agents-OB4zwVHz.js");
1723
+ const { getRemoteAgentOutput } = await import("./remote-agents-DNuaAgU6.js");
1724
1724
  stdout = await getRemoteAgentOutput(id, vmName, parseInt(String(lines), 10) || 100);
1725
1725
  } else stdout = await Effect.runPromise(capturePane(id, parseInt(String(lines), 10) || 100));
1726
1726
  if (!stdout || stdout.trim() === "" || stdout.trim() === "Session not found") {
@@ -2134,7 +2134,7 @@ const postInternalAgentPermissionRequestRoute = HttpRouter.add("POST", "/api/int
2134
2134
  error: "missing agent id"
2135
2135
  }, { status: 400 });
2136
2136
  const request = yield* HttpServerRequest.HttpServerRequest;
2137
- const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-DCrCAG_M.js"));
2137
+ const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-DrGdpLFo.js"));
2138
2138
  const expected = getInternalTokenSync();
2139
2139
  if (!expected) return jsonResponse({
2140
2140
  ok: false,
@@ -2401,7 +2401,7 @@ const getAgentHealthHistoryRoute = HttpRouter.add("GET", "/api/agents/:id/health
2401
2401
  const request = yield* HttpServerRequest.HttpServerRequest;
2402
2402
  const urlOpt = HttpServerRequest.toURL(request);
2403
2403
  const hours = Option.isSome(urlOpt) ? urlOpt.value.searchParams.get("hours") ?? "24" : "24";
2404
- const { getHealthHistory } = yield* Effect.promise(() => import("./health-events-CDWk8Oz4.js"));
2404
+ const { getHealthHistory } = yield* Effect.promise(() => import("./health-events-CD6q47ub.js"));
2405
2405
  const endTime = /* @__PURE__ */ new Date();
2406
2406
  const startTime = /* @__PURE__ */ new Date(endTime.getTime() - parseInt(hours) * 60 * 60 * 1e3);
2407
2407
  const events = getHealthHistory(id, startTime.toISOString(), endTime.toISOString());
@@ -2442,7 +2442,7 @@ function emitAgentRuntimeEvent(id, body, timestamp) {
2442
2442
  detail: String(decoded.failure)
2443
2443
  }, { status: 400 })
2444
2444
  };
2445
- const { AgentStateService } = yield* Effect.promise(() => import("./agent-state-service-CLifyinO.js"));
2445
+ const { AgentStateService } = yield* Effect.promise(() => import("./agent-state-service-C1iUF9Ft.js"));
2446
2446
  yield* (yield* AgentStateService).emit(decoded.success);
2447
2447
  return {
2448
2448
  ok: true,
@@ -2524,7 +2524,7 @@ const getAgentRuntimeRoute = HttpRouter.add("GET", "/api/agents/:id/runtime", ht
2524
2524
  success: false,
2525
2525
  error: "missing agent id"
2526
2526
  }, { status: 400 });
2527
- const { AgentStateService } = yield* Effect.promise(() => import("./agent-state-service-CLifyinO.js"));
2527
+ const { AgentStateService } = yield* Effect.promise(() => import("./agent-state-service-C1iUF9Ft.js"));
2528
2528
  const snapshot = yield* (yield* AgentStateService).get(id);
2529
2529
  if (!snapshot) return jsonResponse({
2530
2530
  success: false,
@@ -2635,8 +2635,8 @@ function createAgentStopHandler(lifecycleEvent) {
2635
2635
  yield* stopAgent(id);
2636
2636
  if (stateBeforeStop?.issueId) yield* Effect.promise(async () => {
2637
2637
  try {
2638
- const { resolveProjectFromIssueSync } = await import("./projects-CKTA6Klk.js");
2639
- const { findWorkspacePath } = await import("./archive-planning-CFxmeFKh.js");
2638
+ const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
2639
+ const { findWorkspacePath } = await import("./archive-planning-B4Qi02bk.js");
2640
2640
  const issueLower = stateBeforeStop.issueId.toLowerCase();
2641
2641
  const workspacePath = findWorkspacePath(resolveProjectFromIssueSync(stateBeforeStop.issueId)?.projectPath ?? process.cwd(), issueLower);
2642
2642
  if (workspacePath) {
@@ -3715,15 +3715,15 @@ init_agents();
3715
3715
  function handleRemoteAgentSpawn(input) {
3716
3716
  return Effect.gen(function* () {
3717
3717
  const { issueId, workspacePath, workspaceMetadata, spawnModel, projectPath, spawnGuardrails, lifecycle } = input;
3718
- const { spawnRemoteAgent, checkRemoteSpendCap } = yield* Effect.promise(() => import("./remote-agents-OB4zwVHz.js"));
3719
- const { createFlyProviderFromConfig } = yield* Effect.promise(() => import("./remote-BEkHf2HO.js"));
3720
- const { loadConfigSync: loadPanConfig } = yield* Effect.promise(() => import("./config-DHU0j_pS.js"));
3718
+ const { spawnRemoteAgent, checkRemoteSpendCap } = yield* Effect.promise(() => import("./remote-agents-DNuaAgU6.js"));
3719
+ const { createFlyProviderFromConfig } = yield* Effect.promise(() => import("./remote-B1Trmr0N.js"));
3720
+ const { loadConfigSync: loadPanConfig } = yield* Effect.promise(() => import("./config-CzcWQ24p.js"));
3721
3721
  const panConfig = loadPanConfig();
3722
3722
  const spendCap = checkRemoteSpendCap(panConfig);
3723
3723
  if (!spendCap.allowed) return jsonResponse({ error: spendCap.message }, { status: 429 });
3724
3724
  const fly = createFlyProviderFromConfig(panConfig.remote);
3725
3725
  yield* Effect.promise(() => fly.syncAllCredentials(workspaceMetadata.vmName));
3726
- const { buildWorkAgentPrompt, getTrackerContext } = yield* Effect.promise(() => import("./work-agent-prompt-D_7T1xw5.js"));
3726
+ const { buildWorkAgentPrompt, getTrackerContext } = yield* Effect.promise(() => import("./work-agent-prompt-DCdHsm-V.js"));
3727
3727
  const trackerContext = yield* Effect.promise(() => getTrackerContext(issueId, workspacePath));
3728
3728
  const agentPrompt = yield* Effect.promise(() => buildWorkAgentPrompt({
3729
3729
  issueId,
@@ -4252,7 +4252,7 @@ const postAgentsRoute = HttpRouter.add("POST", "/api/agents", httpHandler(Effect
4252
4252
  if (!hasBeads) {
4253
4253
  console.log(`[agents] No beads for ${issueId} — attempting auto-recovery via createBeadsFromVBrief`);
4254
4254
  try {
4255
- const { createBeadsFromVBrief } = yield* Effect.promise(() => import("./beads-B43pgBIy.js"));
4255
+ const { createBeadsFromVBrief } = yield* Effect.promise(() => import("./beads-AmCXEv_E.js"));
4256
4256
  const recovery = yield* createBeadsFromVBrief(workspacePath);
4257
4257
  beadCount = recovery.created.length;
4258
4258
  hasBeads = recovery.created.length > 0 && (planItemCount === null || recovery.created.length === planItemCount);
@@ -4442,7 +4442,7 @@ const postAgentsRoute = HttpRouter.add("POST", "/api/agents", httpHandler(Effect
4442
4442
  console.warn(`[start-agent] Failed to set plan.status=running (non-fatal): ${planStatusErr?.message ?? planStatusErr}`);
4443
4443
  }
4444
4444
  try {
4445
- const { appendSessionEntry, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = yield* Effect.promise(() => import("./record-fn7uPjsl.js"));
4445
+ const { appendSessionEntry, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = yield* Effect.promise(() => import("./record-DjPikotp.js"));
4446
4446
  const recordProject = resolveProjectForIssue(issueId) ?? getProjectConfigFromWorkspacePath(workspacePath);
4447
4447
  yield* Effect.promise(() => appendSessionEntry(recordProject, issueId, {
4448
4448
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -4860,10 +4860,10 @@ const _serverManagedMerges = /* @__PURE__ */ new Set();
4860
4860
  function firePostMergeLifecycle(issueId, options) {
4861
4861
  const started = postMergeGuard.run(issueId, async () => {
4862
4862
  const projectPath = getProjectPathForIssue(extractPrefixSync(issueId) ?? issueId.split("-")[0]);
4863
- const { postMergeLifecycle } = await import("./merge-agent-DRXwKxmb.js");
4863
+ const { postMergeLifecycle } = await import("./merge-agent-Dh8Y9PDO.js");
4864
4864
  await postMergeLifecycle(issueId, projectPath, options?.sourceBranch, options?.verifiedMergedRef ? { verifiedMergedRef: options.verifiedMergedRef } : void 0);
4865
4865
  console.log(`[merge] post-merge lifecycle completed for ${issueId}`);
4866
- const { runMergeTrainReconcile } = await import("./merge-train-DndZCAiv.js");
4866
+ const { runMergeTrainReconcile } = await import("./merge-train-DmxlYbEo.js");
4867
4867
  const outcomes = await runMergeTrainReconcile(issueId);
4868
4868
  if (outcomes.length > 0) console.log(`[merge-train] reconciled ${outcomes.length} sibling(s) after ${issueId}: ` + outcomes.map((o) => `${o.issueId}=${o.result}`).join(", "));
4869
4869
  }, (err) => console.error(`[merge] post-merge lifecycle failed for ${issueId}:`, err));
@@ -4884,15 +4884,15 @@ init_io();
4884
4884
  init_domain_services();
4885
4885
  init_tmux();
4886
4886
  const getSpecialistsRoute = HttpRouter.add("GET", "/api/specialists", httpHandler(Effect.gen(function* () {
4887
- const { getAllSpecialistStatus, getAllProjectSpecialistStatuses } = yield* Effect.promise(() => import("./specialists-CF02f9p2.js"));
4887
+ const { getAllSpecialistStatus, getAllProjectSpecialistStatuses } = yield* Effect.promise(() => import("./specialists-F2uMO4QS.js"));
4888
4888
  return jsonResponse({
4889
4889
  specialists: yield* Effect.promise(() => getAllSpecialistStatus()),
4890
4890
  projects: yield* Effect.promise(() => getAllProjectSpecialistStatuses())
4891
4891
  });
4892
4892
  })));
4893
4893
  const postSpecialistsResetAllRoute = HttpRouter.add("POST", "/api/specialists/reset-all", httpHandler(Effect.gen(function* () {
4894
- const { getAllSpecialists, isRunning, getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-CF02f9p2.js"));
4895
- const { clearHookSync } = yield* Effect.promise(() => import("./hooks-DRLzoFof.js"));
4894
+ const { getAllSpecialists, isRunning, getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-F2uMO4QS.js"));
4895
+ const { clearHookSync } = yield* Effect.promise(() => import("./hooks-D-cbMUzQ.js"));
4896
4896
  const specialists = getAllSpecialists();
4897
4897
  const results = [];
4898
4898
  for (const specialist of specialists) {
@@ -4942,7 +4942,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
4942
4942
  const normalizedIssueId = issueId.toUpperCase();
4943
4943
  console.log(`[specialists/done] ${specialist} signaling ${status} for ${normalizedIssueId}`);
4944
4944
  if (specialist === "merge") {
4945
- const { reportSpecialistCompletion } = yield* Effect.promise(() => import("./specialist-completion-BAZHHbmp.js"));
4945
+ const { reportSpecialistCompletion } = yield* Effect.promise(() => import("./specialist-completion-BiEXUHfD.js"));
4946
4946
  if (yield* reportSpecialistCompletion(normalizedIssueId, {
4947
4947
  status,
4948
4948
  notes
@@ -4989,7 +4989,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
4989
4989
  if (specialist === "inspect" && status === "failed") yield* Effect.promise(() => reportTieredInspectFailureEscalation(normalizedIssueId, notes));
4990
4990
  yield* Effect.promise(async () => {
4991
4991
  try {
4992
- const { getTmuxSessionName, updateRunMetadata, makeSpecialistRegistryKey } = await import("./specialists-CF02f9p2.js");
4992
+ const { getTmuxSessionName, updateRunMetadata, makeSpecialistRegistryKey } = await import("./specialists-F2uMO4QS.js");
4993
4993
  const projectKey = resolveProjectFromIssueSync(normalizedIssueId)?.projectKey;
4994
4994
  const tmuxSession = projectKey ? getTmuxSessionName(`${specialist}-agent`, projectKey, normalizedIssueId) : getTmuxSessionName(`${specialist}-agent`);
4995
4995
  saveAgentRuntimeState(tmuxSession, {
@@ -4997,14 +4997,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
4997
4997
  lastActivity: (/* @__PURE__ */ new Date()).toISOString()
4998
4998
  });
4999
4999
  console.log(`[specialists/done] Set ${tmuxSession} to idle`);
5000
- const { KEEP_SPECIALIST_SESSIONS_ALIVE } = await import("./reap-terminal-sessions-mW7SPDtP.js");
5001
- if (KEEP_SPECIALIST_SESSIONS_ALIVE) console.log(`[specialists/done] PAN-2007 keep-alive: verdict recorded, leaving ${tmuxSession} running`);
5002
- else try {
5003
- await Effect.runPromise(killSession(tmuxSession));
5004
- console.log(`[specialists/done] Killed specialist session ${tmuxSession}`);
5005
- } catch (err) {
5006
- console.log(`[specialists/done] Session ${tmuxSession} already gone or failed to kill: ${err instanceof Error ? err.message : String(err)}`);
5007
- }
5000
+ console.log(`[specialists/done] Warm lifecycle: verdict recorded, leaving ${tmuxSession} running (PAN-2579)`);
5008
5001
  if (projectKey) {
5009
5002
  const registryKey = makeSpecialistRegistryKey(`${specialist}-agent`, normalizedIssueId);
5010
5003
  updateRunMetadata(projectKey, registryKey, {
@@ -5015,7 +5008,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
5015
5008
  });
5016
5009
  console.log(`[specialists/done] Cleared registry lock for ${registryKey} (${projectKey})`);
5017
5010
  }
5018
- const { updateSpecialistHandoffStatus } = await import("./specialist-handoff-logger-CH1nC8fq.js");
5011
+ const { updateSpecialistHandoffStatus } = await import("./specialist-handoff-logger-B_2VsWli.js");
5019
5012
  if (await Effect.runPromise(updateSpecialistHandoffStatus(normalizedIssueId, `${specialist}-agent`, status === "passed" ? "completed" : "failed", status === "passed" ? "success" : "failure"))) console.log(`[specialists/done] Updated handoff log: ${specialist}-agent ${normalizedIssueId} → ${status}`);
5020
5013
  } catch (err) {
5021
5014
  console.error(`[specialists/done] Error managing specialist state:`, err);
@@ -5027,7 +5020,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
5027
5020
  if (project) {
5028
5021
  const workspacePath = join$1(project.projectPath, "workspaces", `feature-${normalizedIssueId.toLowerCase()}`);
5029
5022
  if (existsSync(workspacePath)) {
5030
- const { getWorkspaceGitInfo } = await import("./git-utils-Bk7sJZru.js");
5023
+ const { getWorkspaceGitInfo } = await import("./git-utils-RAmTwjFB.js");
5031
5024
  const { HEAD } = await Effect.runPromise(getWorkspaceGitInfo(workspacePath));
5032
5025
  setReviewStatusSync(normalizedIssueId, { reviewedAtCommit: HEAD });
5033
5026
  console.log(`[specialists/done] Snapshotted reviewedAtCommit=${HEAD.substring(0, 8)} for ${normalizedIssueId}`);
@@ -5039,7 +5032,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
5039
5032
  });
5040
5033
  if (specialist === "inspect" && status === "passed") yield* Effect.promise(async () => {
5041
5034
  try {
5042
- const { onInspectComplete } = await import("./inspect-agent-DnspoIls.js");
5035
+ const { onInspectComplete } = await import("./inspect-agent-vm88mLYr.js");
5043
5036
  const beadId = (notes?.match(/[Bb]ead\s+(\S+)/))?.[1] || "unknown";
5044
5037
  const project = resolveProjectFromIssueSync(normalizedIssueId);
5045
5038
  if (project) {
@@ -5084,7 +5077,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
5084
5077
  if (project) {
5085
5078
  if (existsSync(join$1(project.projectPath, "workspaces", `feature-${normalizedIssueId.toLowerCase()}`))) {
5086
5079
  setReviewStatusSync(normalizedIssueId, { testStatus: "passed" });
5087
- const { initEventStore } = await import("./event-store-BeEE8pW5.js");
5080
+ const { initEventStore } = await import("./event-store-DIk9wvnS.js");
5088
5081
  await (await initEventStore()).appendAsync({
5089
5082
  type: "test.passed",
5090
5083
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -5137,8 +5130,8 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
5137
5130
  if (notes?.toLowerCase().includes("conflict")) yield* Effect.promise(async () => {
5138
5131
  try {
5139
5132
  const workAgentId = `agent-${normalizedIssueId.toLowerCase()}`;
5140
- const { sessionExists } = await import("./tmux-DNmHGMEv.js");
5141
- const { messageAgent, spawnAgent, getAgentStateSync } = await import("./agents-KaEsWZ8D.js");
5133
+ const { sessionExists } = await import("./tmux-CeDD14p1.js");
5134
+ const { messageAgent, spawnAgent, getAgentStateSync } = await import("./agents-BIggLvi_.js");
5142
5135
  if (await Effect.runPromise(sessionExists(workAgentId))) {
5143
5136
  await messageAgent(workAgentId, `MERGE CONFLICT: The merge-agent could not rebase your branch onto main due to conflicts. Please fix this now:\n\n1. git fetch origin main\n2. git rebase origin/main\n3. Resolve any conflicts (git add <file> && git rebase --continue)\n4. git push --force-with-lease\n5. Resubmit: curl -s -X POST http://localhost:3011/api/review/${normalizedIssueId}/request -H "Content-Type: application/json" -d "{}"\n\nConflict details: ${notes}`);
5144
5137
  console.log(`[specialists/done] Sent rebase instructions to ${workAgentId}`);
@@ -5152,7 +5145,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
5152
5145
  try {
5153
5146
  const project = resolveProjectFromIssueSync(normalizedIssueId);
5154
5147
  const workspacePath = project ? join$1(project.projectPath, "workspaces", `feature-${normalizedIssueId.toLowerCase()}`) : void 0;
5155
- const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-BbIfN5Vg.js");
5148
+ const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-cZh9Wi9G.js");
5156
5149
  const result = await Effect.runPromise(deliverReviewVerdictFeedback({
5157
5150
  issueId: normalizedIssueId,
5158
5151
  verdict: status === "failed" ? "failed" : "blocked",
@@ -5193,7 +5186,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
5193
5186
  });
5194
5187
  })));
5195
5188
  const postSpecialistsLogsCleanupAllRoute = HttpRouter.add("POST", "/api/specialists/logs/cleanup-all", httpHandler(Effect.gen(function* () {
5196
- const { cleanupAllLogsSync } = yield* Effect.promise(() => import("./specialist-logs-DynFhFXg.js"));
5189
+ const { cleanupAllLogsSync } = yield* Effect.promise(() => import("./specialist-logs-CvDxquV_.js"));
5197
5190
  const results = cleanupAllLogsSync();
5198
5191
  return jsonResponse({
5199
5192
  success: true,
@@ -5203,7 +5196,7 @@ const postSpecialistsLogsCleanupAllRoute = HttpRouter.add("POST", "/api/speciali
5203
5196
  });
5204
5197
  })));
5205
5198
  const getSpecialistsProjectsRoute = HttpRouter.add("GET", "/api/specialists/projects", httpHandler(Effect.gen(function* () {
5206
- const { getAllProjectSpecialistStatuses } = yield* Effect.promise(() => import("./specialists-CF02f9p2.js"));
5199
+ const { getAllProjectSpecialistStatuses } = yield* Effect.promise(() => import("./specialists-F2uMO4QS.js"));
5207
5200
  return jsonResponse(yield* Effect.promise(() => getAllProjectSpecialistStatuses()));
5208
5201
  })));
5209
5202
  const postSpecialistWakeRoute = HttpRouter.add("POST", "/api/specialists/:name/wake", httpHandler(Effect.gen(function* () {
@@ -5247,7 +5240,7 @@ const postSpecialistReportStatusRoute = HttpRouter.add("POST", "/api/specialists
5247
5240
  "blocked",
5248
5241
  "failed"
5249
5242
  ].includes(status)) {
5250
- const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-CF02f9p2.js"));
5243
+ const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-F2uMO4QS.js"));
5251
5244
  saveAgentRuntimeState(getTmuxSessionName(name), {
5252
5245
  state: "idle",
5253
5246
  lastActivity: (/* @__PURE__ */ new Date()).toISOString()
@@ -5368,7 +5361,7 @@ const postProjectSpecialistKillRoute = HttpRouter.add("POST", "/api/specialists/
5368
5361
  const issueId = params["issueId"];
5369
5362
  const type = params["type"];
5370
5363
  if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
5371
- const { getTmuxSessionName, makeSpecialistRegistryKey, getRunMetadata } = yield* Effect.promise(() => import("./specialists-CF02f9p2.js"));
5364
+ const { getTmuxSessionName, makeSpecialistRegistryKey, getRunMetadata } = yield* Effect.promise(() => import("./specialists-F2uMO4QS.js"));
5372
5365
  const tmuxSession = getRunMetadata(project, makeSpecialistRegistryKey(type, issueId)).tmuxSession ?? getTmuxSessionName(type, project, issueId);
5373
5366
  yield* Effect.promise(() => Effect.runPromise(killSession(tmuxSession)).catch(() => {}));
5374
5367
  saveAgentRuntimeState(tmuxSession, {
@@ -5395,7 +5388,7 @@ const getProjectSpecialistRunsRoute = HttpRouter.add("GET", "/api/specialists/:p
5395
5388
  if (limitParam) limit = parseInt(limitParam, 10);
5396
5389
  if (offsetParam) offset = parseInt(offsetParam, 10);
5397
5390
  }
5398
- const { listRunLogsSync } = yield* Effect.promise(() => import("./specialist-logs-DynFhFXg.js"));
5391
+ const { listRunLogsSync } = yield* Effect.promise(() => import("./specialist-logs-CvDxquV_.js"));
5399
5392
  return jsonResponse(listRunLogsSync(project, type, {
5400
5393
  limit,
5401
5394
  offset
@@ -5406,7 +5399,7 @@ const getProjectSpecialistRunStreamRoute = HttpRouter.add("GET", "/api/specialis
5406
5399
  const project = params["project"];
5407
5400
  const type = params["type"];
5408
5401
  const runId = params["runId"];
5409
- const { getRunLogPath, isRunLogActive } = yield* Effect.promise(() => import("./specialist-logs-DynFhFXg.js"));
5402
+ const { getRunLogPath, isRunLogActive } = yield* Effect.promise(() => import("./specialist-logs-CvDxquV_.js"));
5410
5403
  const logPath = getRunLogPath(project, type, runId);
5411
5404
  if (!existsSync(logPath)) return jsonResponse({ error: "Run log not found" }, { status: 404 });
5412
5405
  const encoder = new TextEncoder();
@@ -5465,7 +5458,7 @@ const getProjectSpecialistRunRoute = HttpRouter.add("GET", "/api/specialists/:pr
5465
5458
  const project = params["project"];
5466
5459
  const type = params["type"];
5467
5460
  const runId = params["runId"];
5468
- const { getRunLogSync, parseLogMetadata } = yield* Effect.promise(() => import("./specialist-logs-DynFhFXg.js"));
5461
+ const { getRunLogSync, parseLogMetadata } = yield* Effect.promise(() => import("./specialist-logs-CvDxquV_.js"));
5469
5462
  const content = getRunLogSync(project, type, runId);
5470
5463
  if (!content) return jsonResponse({ error: "Run log not found" }, { status: 404 });
5471
5464
  return jsonResponse({
@@ -5479,7 +5472,7 @@ const postProjectSpecialistRunTerminateRoute = HttpRouter.add("POST", "/api/spec
5479
5472
  const project = params["project"];
5480
5473
  const type = params["type"];
5481
5474
  if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
5482
- const { terminateSpecialist } = yield* Effect.promise(() => import("./specialists-CF02f9p2.js"));
5475
+ const { terminateSpecialist } = yield* Effect.promise(() => import("./specialists-F2uMO4QS.js"));
5483
5476
  yield* Effect.promise(() => terminateSpecialist(project, type));
5484
5477
  return jsonResponse({
5485
5478
  success: true,
@@ -5491,7 +5484,7 @@ const postProjectSpecialistGracePauseRoute = HttpRouter.add("POST", "/api/specia
5491
5484
  const project = params["project"];
5492
5485
  const type = params["type"];
5493
5486
  if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
5494
- const { pauseGracePeriod } = yield* Effect.promise(() => import("./specialists-CF02f9p2.js"));
5487
+ const { pauseGracePeriod } = yield* Effect.promise(() => import("./specialists-F2uMO4QS.js"));
5495
5488
  if (pauseGracePeriod(project, type)) return jsonResponse({
5496
5489
  success: true,
5497
5490
  message: "Grace period paused"
@@ -5503,7 +5496,7 @@ const postProjectSpecialistGraceResumeRoute = HttpRouter.add("POST", "/api/speci
5503
5496
  const project = params["project"];
5504
5497
  const type = params["type"];
5505
5498
  if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
5506
- const { resumeGracePeriod } = yield* Effect.promise(() => import("./specialists-CF02f9p2.js"));
5499
+ const { resumeGracePeriod } = yield* Effect.promise(() => import("./specialists-F2uMO4QS.js"));
5507
5500
  if (resumeGracePeriod(project, type)) return jsonResponse({
5508
5501
  success: true,
5509
5502
  message: "Grace period resumed"
@@ -5515,7 +5508,7 @@ const postProjectSpecialistGraceExitRoute = HttpRouter.add("POST", "/api/special
5515
5508
  const project = params["project"];
5516
5509
  const type = params["type"];
5517
5510
  if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
5518
- const { exitGracePeriod } = yield* Effect.promise(() => import("./specialists-CF02f9p2.js"));
5511
+ const { exitGracePeriod } = yield* Effect.promise(() => import("./specialists-F2uMO4QS.js"));
5519
5512
  exitGracePeriod(project, type);
5520
5513
  return jsonResponse({
5521
5514
  success: true,
@@ -5527,7 +5520,7 @@ const getProjectSpecialistGraceRoute = HttpRouter.add("GET", "/api/specialists/:
5527
5520
  const project = params["project"];
5528
5521
  const type = params["type"];
5529
5522
  if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
5530
- const { getGracePeriodState } = yield* Effect.promise(() => import("./specialists-CF02f9p2.js"));
5523
+ const { getGracePeriodState } = yield* Effect.promise(() => import("./specialists-F2uMO4QS.js"));
5531
5524
  const state = getGracePeriodState(project, type);
5532
5525
  if (state) return jsonResponse(state);
5533
5526
  else return jsonResponse({ error: "No active grace period" }, { status: 404 });
@@ -5536,7 +5529,7 @@ const getProjectSpecialistContextRoute = HttpRouter.add("GET", "/api/specialists
5536
5529
  const params = yield* HttpRouter.params;
5537
5530
  const project = params["project"];
5538
5531
  const type = params["type"];
5539
- const { loadContextDigest } = yield* Effect.promise(() => import("./specialist-context-DgdhI7rm.js"));
5532
+ const { loadContextDigest } = yield* Effect.promise(() => import("./specialist-context-CwKkcXL9.js"));
5540
5533
  const digest = loadContextDigest(project, type);
5541
5534
  if (digest) return jsonResponse({ digest });
5542
5535
  else return jsonResponse({ error: "No context digest found" }, { status: 404 });
@@ -5545,7 +5538,7 @@ const postProjectSpecialistContextRegenerateRoute = HttpRouter.add("POST", "/api
5545
5538
  const params = yield* HttpRouter.params;
5546
5539
  const project = params["project"];
5547
5540
  const type = params["type"];
5548
- const { regenerateContextDigest } = yield* Effect.promise(() => import("./specialist-context-DgdhI7rm.js"));
5541
+ const { regenerateContextDigest } = yield* Effect.promise(() => import("./specialist-context-CwKkcXL9.js"));
5549
5542
  const digest = yield* Effect.promise(() => regenerateContextDigest(project, type));
5550
5543
  if (digest) return jsonResponse({
5551
5544
  digest,
@@ -5564,7 +5557,7 @@ const postProjectSpecialistCompleteRoute = HttpRouter.add("POST", "/api/speciali
5564
5557
  "blocked"
5565
5558
  ].includes(status)) return jsonResponse({ error: "Valid status (passed/failed/blocked) is required" }, { status: 400 });
5566
5559
  if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
5567
- const { signalSpecialistCompletion } = yield* Effect.promise(() => import("./specialists-CF02f9p2.js"));
5560
+ const { signalSpecialistCompletion } = yield* Effect.promise(() => import("./specialists-F2uMO4QS.js"));
5568
5561
  signalSpecialistCompletion(project, type, {
5569
5562
  status,
5570
5563
  notes
@@ -5598,8 +5591,8 @@ const postProjectSpecialistLogsCleanupRoute = HttpRouter.add("POST", "/api/speci
5598
5591
  const params = yield* HttpRouter.params;
5599
5592
  const project = params["project"];
5600
5593
  const type = params["type"];
5601
- const { cleanupOldLogsSync } = yield* Effect.promise(() => import("./specialist-logs-DynFhFXg.js"));
5602
- const { getSpecialistRetention } = yield* Effect.promise(() => import("./projects-CKTA6Klk.js"));
5594
+ const { cleanupOldLogsSync } = yield* Effect.promise(() => import("./specialist-logs-CvDxquV_.js"));
5595
+ const { getSpecialistRetention } = yield* Effect.promise(() => import("./projects-BNmVxnNt.js"));
5603
5596
  const retention = getSpecialistRetention(project);
5604
5597
  const deleted = cleanupOldLogsSync(project, type, {
5605
5598
  maxDays: retention.max_days,
@@ -5620,7 +5613,7 @@ const postProjectReviewRestartRoute = HttpRouter.add("POST", "/api/specialists/:
5620
5613
  const project = params["project"];
5621
5614
  const issueId = params["issueId"];
5622
5615
  const { model, harness } = yield* readJsonBody;
5623
- const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-BRSSFv7e.js"));
5616
+ const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-DgySDb-G.js"));
5624
5617
  const killResult = yield* killAllReviewerSessions(project, issueId);
5625
5618
  const projectConfig = resolveProjectFromIssueSync(issueId);
5626
5619
  if (!projectConfig) return jsonResponse({ error: `Cannot resolve project for ${issueId}` }, { status: 404 });
@@ -5634,7 +5627,7 @@ const postProjectReviewRestartRoute = HttpRouter.add("POST", "/api/specialists/:
5634
5627
  }));
5635
5628
  branch = stdout.trim() || "unknown";
5636
5629
  } catch {}
5637
- const { spawnReviewRoleForIssue } = yield* Effect.promise(() => import("./review-agent-BRSSFv7e.js"));
5630
+ const { spawnReviewRoleForIssue } = yield* Effect.promise(() => import("./review-agent-DgySDb-G.js"));
5638
5631
  const prUrl = getReviewStatusSync(issueId)?.prUrl;
5639
5632
  const result = yield* spawnReviewRoleForIssue({
5640
5633
  issueId,
@@ -5785,4 +5778,4 @@ const specialistsRouteLayer = Layer.mergeAll(specialistsLegacyRouteLayer, specia
5785
5778
  //#endregion
5786
5779
  export { validateOrigin as C, jsonResponse as D, httpHandler as E, jsonStringResponse as O, normalizeOrigin as S, checkCodexAuthStatus as T, resolveJsonlPath as _, agentsRouteLayer as a, getTrustedOrigins as b, evaluateSpawnGuardrails as c, resolveConversationGitInfo as d, getWorkAgentLifecycleStateSync as f, resolveCodexRolloutPath as g, resolveClaudeSessionId as h, validateSpecialistAutoCompleteMetadata as i, invalidateAgentsCache as l, resolveAgentHarness as m, _serverManagedMerges as n, saveAgentStateAndEmitEvent as o, readLauncherPinnedSessionId as p, firePostMergeLifecycle as r, saveAgentStateAndEmitEventProgram as s, specialistsRouteLayer as t, resolveAgentGitInfo as u, resolvePiSessionPath as v, validateOriginHeaders as w, isTrustedOriginForHost as x, getHeaderFromMap as y };
5787
5780
 
5788
- //# sourceMappingURL=specialists-e0Jmecc1.js.map
5781
+ //# sourceMappingURL=specialists-D07ybnam.js.map
@@ -1,3 +1,3 @@
1
- import { $ as updateRunMetadata, A as isEnabled, B as pauseGracePeriod, C as getSpecialistState, D as initSpecialistsDirectory, E as incrementProjectRunCount, F as listSpecialistsForProject, G as sendFeedbackToAgent, H as recordWake, I as loadRegistry, K as setCurrentRun, L as makeSpecialistRegistryKey, M as isProjectSpecialistActivelyRunning, N as isRunning, O as init_specialists, P as listProjectsWithSpecialists, Q as updateProjectSpecialistMetadata, R as parseReviewerSessionName, S as getSpecialistMetadata, T as getTmuxSessionName, U as resumeGracePeriod, V as pruneSpecialistRegistryEntriesForIssue, W as saveRegistry, X as terminateSpecialist, Y as startGracePeriod, Z as updateContextTokens, _ as getPendingFeedback, a as disableSpecialist, b as getReviewerSessionName, c as exitGracePeriod, d as getAllProjectSpecialistStatuses, et as updateRunStatus, f as getAllSpecialistStatus, g as getGracePeriodState, h as getFeedbackStats, i as countContextTokens, j as isInitialized, k as initializeEnabledSpecialists, l as findActiveRegistryKey, m as getEnabledSpecialists, n as buildSpecialistBaseCommand, o as enableSpecialist, p as getAllSpecialists, q as signalSpecialistCompletion, r as buildSpecialistCavemanExports, s as ensureProjectSpecialistDir, t as REVIEWER_ROLES, tt as updateSpecialistMetadata, u as findSessionFile, v as getProjectSpecialistDir, w as getSpecialistStatus, x as getRunMetadata, y as getProjectSpecialistMetadata, z as parseSpecialistRegistryKey } from "./specialists-BUKBHtmQ.js";
1
+ import { $ as updateRunMetadata, A as isEnabled, B as pauseGracePeriod, C as getSpecialistState, D as initSpecialistsDirectory, E as incrementProjectRunCount, F as listSpecialistsForProject, G as sendFeedbackToAgent, H as recordWake, I as loadRegistry, K as setCurrentRun, L as makeSpecialistRegistryKey, M as isProjectSpecialistActivelyRunning, N as isRunning, O as init_specialists, P as listProjectsWithSpecialists, Q as updateProjectSpecialistMetadata, R as parseReviewerSessionName, S as getSpecialistMetadata, T as getTmuxSessionName, U as resumeGracePeriod, V as pruneSpecialistRegistryEntriesForIssue, W as saveRegistry, X as terminateSpecialist, Y as startGracePeriod, Z as updateContextTokens, _ as getPendingFeedback, a as disableSpecialist, b as getReviewerSessionName, c as exitGracePeriod, d as getAllProjectSpecialistStatuses, et as updateRunStatus, f as getAllSpecialistStatus, g as getGracePeriodState, h as getFeedbackStats, i as countContextTokens, j as isInitialized, k as initializeEnabledSpecialists, l as findActiveRegistryKey, m as getEnabledSpecialists, n as buildSpecialistBaseCommand, o as enableSpecialist, p as getAllSpecialists, q as signalSpecialistCompletion, r as buildSpecialistCavemanExports, s as ensureProjectSpecialistDir, t as REVIEWER_ROLES, tt as updateSpecialistMetadata, u as findSessionFile, v as getProjectSpecialistDir, w as getSpecialistStatus, x as getRunMetadata, y as getProjectSpecialistMetadata, z as parseSpecialistRegistryKey } from "./specialists-BYi0k8CZ.js";
2
2
  init_specialists();
3
3
  export { REVIEWER_ROLES, buildSpecialistBaseCommand, buildSpecialistCavemanExports, countContextTokens, disableSpecialist, enableSpecialist, ensureProjectSpecialistDir, exitGracePeriod, findActiveRegistryKey, findSessionFile, getAllProjectSpecialistStatuses, getAllSpecialistStatus, getAllSpecialists, getEnabledSpecialists, getFeedbackStats, getGracePeriodState, getPendingFeedback, getProjectSpecialistDir, getProjectSpecialistMetadata, getReviewerSessionName, getRunMetadata, getSpecialistMetadata, getSpecialistState, getSpecialistStatus, getTmuxSessionName, incrementProjectRunCount, initSpecialistsDirectory, initializeEnabledSpecialists, isEnabled, isInitialized, isProjectSpecialistActivelyRunning, isRunning, listProjectsWithSpecialists, listSpecialistsForProject, loadRegistry, makeSpecialistRegistryKey, parseReviewerSessionName, parseSpecialistRegistryKey, pauseGracePeriod, pruneSpecialistRegistryEntriesForIssue, recordWake, resumeGracePeriod, saveRegistry, sendFeedbackToAgent, setCurrentRun, signalSpecialistCompletion, startGracePeriod, terminateSpecialist, updateContextTokens, updateProjectSpecialistMetadata, updateRunMetadata, updateRunStatus, updateSpecialistMetadata };
@@ -0,0 +1,3 @@
1
+ import { C as findSpecByIssue, T as init_specs } from "./io-Wy8YpFeP.js";
2
+ init_specs();
3
+ export { findSpecByIssue };