@overdeck/desktop 0.45.21 → 0.45.23

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 (387) hide show
  1. package/package.json +1 -1
  2. package/server/{acceptance-criteria-CJIFA8Vg.js → acceptance-criteria-DOA0KgXx.js} +5 -5
  3. package/server/{advancing-selfheal-CPOBO5ZS.js → advancing-selfheal-BBu6DSNm.js} +6 -6
  4. package/server/{agent-gc-D6PUckBB.js → agent-gc-BV1q_2EV.js} +4 -4
  5. package/server/agent-state-Bg0lhqwj.js +3 -0
  6. package/server/{agent-state-service-DHwemt96.js → agent-state-service-CnzFKSAQ.js} +1 -1
  7. package/server/{agent-state-service-6MFQqnFy.js → agent-state-service-HoK8U4jW.js} +5 -5
  8. package/server/{agents-DbrHWunF.js → agents-B4Bjbkfv.js} +4 -4
  9. package/server/agents-FlIgQ3ql.js +3 -0
  10. package/server/{archive-planning-BOnwJq8M.js → archive-planning-DYrYojxl.js} +31 -7
  11. package/server/{archive-planning-MPpvQJL4.js → archive-planning-zkJb3BeM.js} +1 -1
  12. package/server/{artifact-index-jobs-BOoySTKD.js → artifact-index-jobs-C-xy7Z5v.js} +2 -2
  13. package/server/{backlog-auto-trigger-BUaFI44J.js → backlog-auto-trigger-GtG71X8H.js} +3 -3
  14. package/server/{behavior-Dg-D8eBG.js → behavior-B_-4EKF3.js} +2 -2
  15. package/server/{briefing-freshness-OouGbJ7d.js → briefing-freshness-DWdW7vUm.js} +2 -2
  16. package/server/{build-info-27NlbKhV.js → build-info-BT096lEl.js} +3 -3
  17. package/server/{build-info-Cv6CI7Gu.js → build-info-DgTqZkL5.js} +1 -1
  18. package/server/{checkpoint-manager-C7mFCY_E.js → checkpoint-manager-B7Bt29J0.js} +1 -1
  19. package/server/{checkpoint-manager-D64fCC4p.js → checkpoint-manager-DDqcGyu8.js} +2 -2
  20. package/server/checkpoint-worker.js +1 -1
  21. package/server/{checkpoints-Vh-J15ge.js → checkpoints-C-AXLfYT.js} +2 -2
  22. package/server/{checkpoints-DwZqT2qQ.js → checkpoints-CpgCjAlN.js} +1 -1
  23. package/server/{claude-hooks-provision-CS5W_dhI.js → claude-hooks-provision-C8wdRnN1.js} +1 -1
  24. package/server/{claude-hooks-provision-BVLGfHrv.js → claude-hooks-provision-but-_qGY.js} +2 -2
  25. package/server/{claude-permissions-C2OrLYKL.js → claude-permissions-H_5wHQZQ.js} +2 -2
  26. package/server/{claude-settings-overlay-DWXjafJh.js → claude-settings-overlay-BTENVmYf.js} +1 -1
  27. package/server/{claude-settings-overlay-DX-fMFpC.js → claude-settings-overlay-CbSz0Dvb.js} +2 -2
  28. package/server/cli-BsVIHwzC.js +3 -0
  29. package/server/{cli-mvpEOb3w.js → cli-vBeXbPrq.js} +9 -9
  30. package/server/{cliproxy-Dvsr4ZkW.js → cliproxy-Bgb2XCqi.js} +2 -2
  31. package/server/{cliproxy-7g1nObvB.js → cliproxy-DW0V86F8.js} +1 -1
  32. package/server/{close-issue-8F6uawYj.js → close-issue-Dn_4c4G8.js} +5 -5
  33. package/server/{closed-issue-reaper-BhV-r-tC.js → closed-issue-reaper-CWpY2uBw.js} +1 -1
  34. package/server/{closed-issue-reaper-BaYQYF6w.js → closed-issue-reaper-hANY_ehE.js} +9 -9
  35. package/server/codex-Dg7Is5yb.js +3 -0
  36. package/server/{codex-D_UBEOwL.js → codex-TmSi-yTv.js} +30 -8
  37. package/server/{codex-parser-BTzlOZiV.js → codex-parser-C4gSH-IR.js} +2 -2
  38. package/server/{config-CrduXs4a.js → config-CCvjQf27.js} +2 -2
  39. package/server/{config-nAB_F-Gp.js → config-DUIhMN_T.js} +1 -1
  40. package/server/{config-G1TOMJZA.js → config-DjLOdbgT.js} +2 -2
  41. package/server/{config-yaml-Ciyp2mYe.js → config-yaml-DvyMuOle.js} +177 -211
  42. package/server/{conflict-gate-BKalpcjL.js → conflict-gate-BSJkNTdp.js} +1 -1
  43. package/server/{conflict-gate-BLUNMs1i.js → conflict-gate-CmrYpa47.js} +3 -3
  44. package/server/{context-layers-YNpf6Q_I.js → context-layers-B3Nt58jl.js} +2 -2
  45. package/server/{context-layers-Cg9ZgVfx.js → context-layers-ZYFcWiyc.js} +3 -3
  46. package/server/{control-settings-D_79A6gp.js → control-settings-aP1ANIlI.js} +4 -4
  47. package/server/{conversation-compaction-DiuZbIUB.js → conversation-compaction-CNbTLB86.js} +8 -8
  48. package/server/{conversation-compaction-CMIeWW4_.js → conversation-compaction-DiG5zWQq.js} +1 -1
  49. package/server/{conversation-service-DQybSPUK.js → conversation-service-Du-MTNpJ.js} +6 -6
  50. package/server/{conversation-service-CWk8mEym.js → conversation-service-Up7FEzIC.js} +1 -1
  51. package/server/{conversations-BJ-t3BRm.js → conversations-6mPANqvL.js} +1 -1
  52. package/server/{conversations-BUgGvqVL.js → conversations-DbOs1e9Q.js} +4 -4
  53. package/server/{cost-jJ2cgDcG.js → cost-CW4WSe72.js} +3 -3
  54. package/server/{cost-Drm7qeD5.js → cost-Ca0YTWDw.js} +18 -2
  55. package/server/{cost-sync-DzHP6zaR.js → cost-sync-C0VdGme1.js} +3 -3
  56. package/server/{dag-DIji6O2b.js → dag-CdOjJVDT.js} +9 -9
  57. package/server/{dangerous-git-ops-BebB-61h.js → dangerous-git-ops-CT-IypG3.js} +1 -1
  58. package/server/dashboard-db-worker.js +7 -7
  59. package/server/{deacon-pleYrvIm.js → deacon-DYSEJb48.js} +3 -3
  60. package/server/{deacon-nudge-log-C5VCKtyi.js → deacon-nudge-log-Bjg8U4Y9.js} +3 -3
  61. package/server/{deacon-1s7bM5zn.js → deacon-pRnyD5w9.js} +1133 -474
  62. package/server/deacon-swarm-9jRLS5Ke.js +2 -0
  63. package/server/{deacon-swarm-DmA3rJ7k.js → deacon-swarm-DftYRDo8.js} +17 -17
  64. package/server/deacon.js +8 -8
  65. package/server/{deploy-patrol-DmM6F-yw.js → deploy-patrol-Bjsho_ha.js} +136 -19
  66. package/server/{deploy-window-ClLq1RYf.js → deploy-window-CM6W1-c6.js} +1 -1
  67. package/server/{deploy-window-jw4S_Y-c.js → deploy-window-DeP_OIRk.js} +77 -10
  68. package/server/{dev-supervisor-Do2Stz49.js → dev-supervisor-BpMoHlkR.js} +2 -2
  69. package/server/{devcontainer-renderer-D8ylupco.js → devcontainer-renderer-CtUgrVKW.js} +3 -3
  70. package/server/dist-Bd3vn0Hw.js +3 -0
  71. package/server/{dist-yfR7G1BL.js → dist-DyRx4cI7.js} +1 -1
  72. package/server/{docker-ClwPQaba.js → docker-BK7HIcBj.js} +2 -2
  73. package/server/{dod-BLphkhjs.js → dod-BrSfUHm0.js} +1 -1
  74. package/server/{ensure-devcontainer-BA3bICoY.js → ensure-devcontainer-DRqaAkBR.js} +1 -1
  75. package/server/{ensure-devcontainer-CFpQatOc.js → ensure-devcontainer-DseivYEy.js} +4 -4
  76. package/server/{esm-shims-BZw-fTQ6.js → esm-shims-CbI3BVkl.js} +1 -1
  77. package/server/{event-store-DABarGNz.js → event-store-Cr5PQwFC.js} +1 -1
  78. package/server/{event-store-BVnON3vf.js → event-store-tdiY5eDZ.js} +3 -3
  79. package/server/{events-CmERlnwn.js → events-CC1dgUpx.js} +3 -3
  80. package/server/{events-LGeUehYW.js → events-CvvGK6LT.js} +1 -1
  81. package/server/{factory-CQNprtHe.js → factory-CynerjXO.js} +50 -13
  82. package/server/{feature-registry-population-D9Z3tYSa.js → feature-registry-population-B0pmAz0a.js} +4 -4
  83. package/server/{feature-registry-storage-BWymOgXE.js → feature-registry-storage-_wUBRD3J.js} +2 -2
  84. package/server/{features--fOza5g5.js → features-Dhxz-wLc.js} +2 -2
  85. package/server/{feedback-target-Dqik2WTe.js → feedback-target-CPS15Vte.js} +7 -7
  86. package/server/{feedback-target-Dn9vfPpz.js → feedback-target-iygZwmMc.js} +1 -1
  87. package/server/{feedback-writer-Wlq5-qgS.js → feedback-writer-C9b6ccN1.js} +6 -5
  88. package/server/{feedback-writer-DDQNV8uc.js → feedback-writer-qmiMbqTZ.js} +1 -1
  89. package/server/{flywheel-Q-38YhZG.js → flywheel-DMCUzDWg.js} +1 -1
  90. package/server/{flywheel-1Wd8WDlh.js → flywheel-DSSpWmqF.js} +13 -13
  91. package/server/{flywheel-DPUc8r3V.js → flywheel-DcBkQvgE.js} +14 -14
  92. package/server/{flywheel-merge-order-CeBuX0EJ.js → flywheel-merge-order-C-6zRLvM.js} +1 -1
  93. package/server/{flywheel-merge-order-4SqOXFAr.js → flywheel-merge-order-DxbQKE1d.js} +8 -8
  94. package/server/forge-B-ZWyTRm.js +2 -0
  95. package/server/{forge-DBbDpiYc.js → forge-Ch9gCFod.js} +2 -2
  96. package/server/{from-hh6vTBGl.js → from-CJ_aH5jD.js} +1 -1
  97. package/server/{fts-db-6ponMie2.js → fts-db-CKgg0VKg.js} +2 -2
  98. package/server/{fts-operations-KIRK165y.js → fts-operations-BrL_VTRr.js} +2 -2
  99. package/server/git-utils-BVa07a4a.js +198 -0
  100. package/server/{git-utils-DmF5xkj8.js → git-utils-Dry_Ka_D.js} +1 -1
  101. package/server/{github-app-B3yfECo8.js → github-app-CMBdIFBQ.js} +11 -3
  102. package/server/{github-app-CeSVFL6C.js → github-app-CPfoFAdV.js} +1 -1
  103. package/server/{github-client-Dslipypz.js → github-client--XVlDpwM.js} +2 -2
  104. package/server/{github-client-4A6FgA8O.js → github-client-B4QsdE-X.js} +1 -1
  105. package/server/{github-pr-lookup-DBP0YHMr.js → github-pr-lookup-BRbDW-qk.js} +2 -2
  106. package/server/harness-binary-CVio2m-u.js +106 -0
  107. package/server/{harness-resolve-BGpO-OVM.js → harness-resolve-qHJBhy3Z.js} +9 -15
  108. package/server/{health-events-CZGZ5I-A.js → health-events-C9B8y1Hm.js} +2 -2
  109. package/server/{health-events-CnwV_SSz.js → health-events-CpfvuVmm.js} +1 -1
  110. package/server/{hooks-CoNscX84.js → hooks-DUXw8A0-.js} +2 -2
  111. package/server/{hooks-DvX33gY_.js → hooks-ltecuFqZ.js} +1 -1
  112. package/server/{hume-DSJt5eA_.js → hume-BEq0bUDg.js} +2 -2
  113. package/server/hume-B_DbflNM.js +3 -0
  114. package/server/{idle-stack-reaper-5DVRoY6P.js → idle-stack-reaper-D7w9t3fE.js} +1 -1
  115. package/server/{idle-stack-reaper-BfL8HqYy.js → idle-stack-reaper-w1ISSlhs.js} +2 -2
  116. package/server/{in-flight-guard-tVGiI5ee.js → in-flight-guard-aQ1IxeI3.js} +2 -2
  117. package/server/{infra-DN2wSxle.js → infra-CzaSOgul.js} +4 -4
  118. package/server/{injection-DtlT8Akv.js → injection-DZ0PfYa4.js} +7 -7
  119. package/server/{injection-DK9zh_HL.js → injection-oNZeoDhL.js} +1 -1
  120. package/server/{inspect-agent-DKByUS_F.js → inspect-agent-DJKLWcVT.js} +15 -11
  121. package/server/inspect-agent-ch-F-5Ci.js +2 -0
  122. package/server/{internal-token-DhfFiwW7.js → internal-token-Bb4XeV2x.js} +2 -2
  123. package/server/{internal-token-7bYL5v6K.js → internal-token-DXdfprGr.js} +1 -1
  124. package/server/{io-BiM-7Zsx.js → io-B3_AHDfr.js} +160 -184
  125. package/server/{issue-closed-Dfw3QDyZ.js → issue-closed-zhdvQicO.js} +7 -7
  126. package/server/{issue-lifecycle-B7HZWnTA.js → issue-lifecycle-CreaCkjW.js} +22 -22
  127. package/server/{issue-lifecycle-ytsEdDlK.js → issue-lifecycle-Dy4vd0Oa.js} +1 -1
  128. package/server/{issue-service-singleton-CPESc4Or.js → issue-service-singleton-B5ushCvE.js} +8 -8
  129. package/server/{issue-service-singleton-D5EB5eYr.js → issue-service-singleton-DabvBWUp.js} +1 -1
  130. package/server/{issues-XYtFMxrH.js → issues-B6ToV6x1.js} +2 -2
  131. package/server/{jsonl-parser-DJV2eZUP.js → jsonl-parser-Dhflo1SH.js} +3 -3
  132. package/server/{label-cleanup-CJ4m8iRU.js → label-cleanup-BKPJm4Hv.js} +3 -3
  133. package/server/{label-reconciler-CNf3Ylm3.js → label-reconciler-DdWbHEBu.js} +4 -4
  134. package/server/{launcher-generator-5DJRiovn.js → launcher-generator-CHVm7bGT.js} +10 -9
  135. package/server/{layers-cZx7ibtV.js → layers-DzxSTGNA.js} +2 -2
  136. package/server/lifecycle-DfeyBDwA.js +121 -0
  137. package/server/lifecycle-io-Bsnr2K4F.js +3 -0
  138. package/server/{lifecycle-io-DMurK4oM.js → lifecycle-io-D8iNBcux.js} +37 -37
  139. package/server/{lifecycle-CE7619Xw.js → lifecycle-sycO16hj.js} +6 -6
  140. package/server/{linear-client-BLyN-NiP.js → linear-client-D4zqMnX7.js} +2 -2
  141. package/server/{linear-client-Bj1l4FOA.js → linear-client-DqhDQO9k.js} +1 -1
  142. package/server/memory-fts-worker.js +1 -1
  143. package/server/{merge-hSC2BENe.js → merge-C_ZEhbqI.js} +3 -3
  144. package/server/{merge-CwX2_AWm.js → merge-DK23JEdS.js} +1 -1
  145. package/server/{merge-agent-CnORPiri.js → merge-agent-BQM3a8z5.js} +1 -1
  146. package/server/{merge-agent-DnBsms_V.js → merge-agent-XrB80vfT.js} +369 -213
  147. package/server/{merge-batch-C2w2U2eK.js → merge-batch-Bwoyr8Je.js} +1 -1
  148. package/server/{merge-blockers-DhRgh76x.js → merge-blockers-BsFjGrQ8.js} +2 -2
  149. package/server/merge-ops-DlB1IM0Y.js +2 -0
  150. package/server/{merge-rebase-CE-ZyOMY.js → merge-rebase-C1KIVr0s.js} +2 -2
  151. package/server/{merge-set-D7YNU1ZB.js → merge-set-DLz0MkGT.js} +3 -3
  152. package/server/{merge-set-DHkzPCJU.js → merge-set-DnSYdBEp.js} +1 -1
  153. package/server/{merge-sync-De1FYva5.js → merge-sync-DZ9dojJn.js} +2 -2
  154. package/server/{merge-sync-CpGA9Kg7.js → merge-sync-SSv3E-pl.js} +1 -1
  155. package/server/{merge-train-SvkRJZ-k.js → merge-train-DxDfBTjr.js} +3 -3
  156. package/server/{merge-train-deps-CECJTElu.js → merge-train-deps-CyYQUksx.js} +4 -4
  157. package/server/{merge-verification-B3meGcXF.js → merge-verification-CSizH3HY.js} +4 -4
  158. package/server/{multipart-parser-ByTMgYV5.js → multipart-parser-Dt8YPN5S.js} +2 -2
  159. package/server/{no-resume-mode-BnInAFKs.js → no-resume-mode-Cx3K0hHi.js} +11 -8
  160. package/server/node_modules/.package-lock.json +5 -5
  161. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +3 -3
  162. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
  163. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +2 -2
  164. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
  165. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +5 -5
  166. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +6 -8
  167. package/server/{orphan-proposed-reconciler-CAfuWTA1.js → orphan-proposed-reconciler-BTkDrl4R.js} +1 -1
  168. package/server/{orphan-proposed-reconciler-AxAGUouN.js → orphan-proposed-reconciler-neK8dHQk.js} +23 -14
  169. package/server/package-lock.json +6 -6
  170. package/server/package.json +1 -1
  171. package/server/{pan-dir-Rw17YjT1.js → pan-dir-DeVUgwA7.js} +78 -58
  172. package/server/{paths-FP8v3lTz.js → paths-_zEts6wc.js} +2 -2
  173. package/server/{pickup-xi3KTLaJ.js → pickup-Dd0Znxxy.js} +2 -2
  174. package/server/{pipeline-membership-BtKMNY7v.js → pipeline-membership-0HaEGDlH.js} +190 -68
  175. package/server/{pipeline-notifier-dQ-U4NSb.js → pipeline-notifier-6iCJplFZ.js} +1 -1
  176. package/server/{pipeline-notifier-BM2HLF7B.js → pipeline-notifier-D0ykk59O.js} +2 -2
  177. package/server/{project-pipelines-B59NfN44.js → project-pipelines-2sK1apsO.js} +2 -2
  178. package/server/projects-9SkRpES9.js +3 -0
  179. package/server/{prompts-CbqaVjbe.js → prompts-Dp4Tpk39.js} +2 -2
  180. package/server/providers-DKkBXhxU.js +3 -0
  181. package/server/{providers-d3pwXGVE.js → providers-DV7ec8l7.js} +7 -7
  182. package/server/public/assets/{chunk-BO2N2NFS-BxYSL7J-.js → chunk-BO2N2NFS-CltymLRg.js} +4 -4
  183. package/server/public/assets/{diagram-OG6HWLK6-C_F9Q2as.js → diagram-OG6HWLK6-D2f6pjgA.js} +1 -1
  184. package/server/public/assets/{dist-DQNg4CiF.js → dist-BWR4qFiV.js} +1 -1
  185. package/server/public/assets/{dist-CLSlc6cV.js → dist-DEmlBBNQ.js} +3 -3
  186. package/server/public/assets/{ganttDiagram-6RSMTGT7-Cq0my-0C.js → ganttDiagram-6RSMTGT7-DnfiViPK.js} +1 -1
  187. package/server/public/assets/{highlighted-body-OFNGDK62-eZC03dGh.js → highlighted-body-OFNGDK62-B8Wrmj9H.js} +1 -1
  188. package/server/public/assets/index-CUr1xv8w.css +1 -0
  189. package/server/public/assets/{index-SLYGA8AQ.js → index-CsSuZQBI.js} +148 -145
  190. package/server/public/assets/{linear-6Fi3qnGg.js → linear-C9zFQpkX.js} +1 -1
  191. package/server/public/assets/mermaid-GHXKKRXX-BUAB8hqt.js +1 -0
  192. package/server/public/assets/{pieDiagram-4H26LBE5-Dpmc6xsv.js → pieDiagram-4H26LBE5-lR8H7Yjd.js} +1 -1
  193. package/server/public/assets/{prod-ojHllFvN.js → prod-B1jCQihw.js} +4 -4
  194. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Ulr9gON5.js → quadrantDiagram-W4KKPZXB-CVQ2guem.js} +1 -1
  195. package/server/public/assets/{sankeyDiagram-5OEKKPKP-CwdHGXfL.js → sankeyDiagram-5OEKKPKP-eD1RB4gm.js} +1 -1
  196. package/server/public/assets/{xychartDiagram-2RQKCTM6-r-bEDzJh.js → xychartDiagram-2RQKCTM6-ChEC6dQn.js} +1 -1
  197. package/server/public/index.html +54 -10
  198. package/server/{pull-requests-D3N6HQzI.js → pull-requests--Ib2jTgy.js} +1 -1
  199. package/server/{pull-requests-CjjPj7v6.js → pull-requests-CXIhdCYD.js} +13 -11
  200. package/server/{queries-B5hl7lMQ.js → queries-6d7Cdtm7.js} +723 -110
  201. package/server/{rally-Dp0Gb1DN.js → rally-B708-nZn.js} +3 -3
  202. package/server/{rally-api-DGaFz5L5.js → rally-api-nY0ZANw3.js} +2 -2
  203. package/server/{rally-api-CKr0O4DJ.js → rally-api-yjQ0TfHd.js} +1 -1
  204. package/server/{rally-client-SVbjGvqj.js → rally-client-B1EJhfV0.js} +4 -4
  205. package/server/{rally-client-Cqf6EX_r.js → rally-client-CULK2XAY.js} +1 -1
  206. package/server/rally-njs_mJrt.js +3 -0
  207. package/server/reap-terminal-sessions-MWnqdLCJ.js +4 -0
  208. package/server/{reap-terminal-sessions-CjqRAGw7.js → reap-terminal-sessions-N3BTkmX_.js} +11 -28
  209. package/server/{rebuild-stack-DHqCLvLX.js → rebuild-stack-Dp4eLkt4.js} +6 -6
  210. package/server/{rebuild-stack-DjdpALr1.js → rebuild-stack-kA7XngID.js} +1 -1
  211. package/server/{reconstruct-cache-BqrCQt0o.js → reconstruct-cache-uWbZfjms.js} +6 -6
  212. package/server/record-t6V-3Dcj.js +3 -0
  213. package/server/{record-update-BlB8mpKO.js → record-update-DACtKh6_.js} +1 -1
  214. package/server/record-update-Dq0t2uBG.js +310 -0
  215. package/server/{recovery-trip-l1Hsi37x.js → recovery-trip-BJtIQuag.js} +2 -2
  216. package/server/{release-engine-CSI4K6Oj.js → release-engine-DZpmGGzb.js} +5 -5
  217. package/server/{release-set-BywwggrE.js → release-set-hnXd_kga.js} +3 -3
  218. package/server/{remote-DYziAkiZ.js → remote-4tiENDaI.js} +3 -3
  219. package/server/{remote-cnoeuDWn.js → remote-Br-ZWVIP.js} +3 -3
  220. package/server/{remote-agents-BNORDWAX.js → remote-agents-CRCg1L4H.js} +1 -1
  221. package/server/{remote-agents-CZ2rc8I0.js → remote-agents-nmty1mLu.js} +6 -6
  222. package/server/{remote-completion-W67FNQ-A.js → remote-completion-BbWNd10K.js} +13 -13
  223. package/server/resume-CcKqnTvE.js +3 -0
  224. package/server/{review-agent-CSswH985.js → review-agent-DJRO8EG8.js} +1 -1
  225. package/server/{review-agent-CqSqSHkU.js → review-agent-sKkE1FEL.js} +23 -23
  226. package/server/{review-artifacts-BBgnd5df.js → review-artifacts-BLbSC4ke.js} +5 -5
  227. package/server/{review-context-Ctp9BdNJ.js → review-context-BgX3lcCx.js} +9 -9
  228. package/server/{review-status-CCgPVK1h.js → review-status-A7quS5KJ.js} +56 -39
  229. package/server/review-status-C6n6-9f_.js +3 -0
  230. package/server/{review-status-enrichment-DtDRGpst.js → review-status-enrichment-tbOn_A_u.js} +3 -3
  231. package/server/review-status-source-CxuEjLGg.js +39 -0
  232. package/server/{review-status-sync-jnLgd04F.js → review-status-sync-BhSQ0d0l.js} +2 -2
  233. package/server/{review-status-sync-C792ksoJ.js → review-status-sync-To3-iS-N.js} +1 -1
  234. package/server/{review-verdict-feedback-D5lW0o3k.js → review-verdict-feedback-C1Kg8n7t.js} +1 -1
  235. package/server/{review-verdict-feedback-CMsIpTpy.js → review-verdict-feedback-CTRNtzXO.js} +7 -7
  236. package/server/{rollup-B3kQmNpl.js → rollup-B53Y81xK.js} +1 -1
  237. package/server/{rollup-CLj_AK9f.js → rollup-WA0VD-Rr.js} +8 -8
  238. package/server/{scanner-C4NeC4FE.js → scanner-D2743cp8.js} +11 -7
  239. package/server/{sequence-io-Ce-6grIY.js → sequence-io-Cg0zYj_E.js} +4 -4
  240. package/server/{sequencer-agent-Bpz0yGmG.js → sequencer-agent-BGY8gjg-.js} +5 -5
  241. package/server/server.js +1348 -963
  242. package/server/{service-CqAY8Kmk.js → service-DCpB_SGd.js} +154 -51
  243. package/server/{session-fork-uNo4rMRA.js → session-fork-BQ8_6H32.js} +2 -2
  244. package/server/{session-history-DUehL3KN.js → session-history-CVZDpS3c.js} +4 -4
  245. package/server/{settings-DP2OYLXL.js → settings-BZ5m1UCl.js} +3 -3
  246. package/server/settings-D0OSwos5.js +2 -0
  247. package/server/{settings-D9grjmaP.js → settings-ylxwqwQG.js} +2 -2
  248. package/server/{shadow-engineering-Bi_oIMtF.js → shadow-engineering-BlxG6Xye.js} +3 -3
  249. package/server/{shadow-state-CDxEuPlE.js → shadow-state-C2_epgx2.js} +1 -1
  250. package/server/{shadow-state-a_ztFBJe.js → shadow-state-Dh-HzF2J.js} +2 -2
  251. package/server/{shadow-utils-CyOg6_Xq.js → shadow-utils-4bvjn9b3.js} +2 -2
  252. package/server/{ship-log-DDcueaIR.js → ship-log-ClSMIzZX.js} +1 -1
  253. package/server/{smart-compaction-C1_VVLEd.js → smart-compaction-CHIxLr_d.js} +1 -1
  254. package/server/{smart-compaction--Oj65Uov.js → smart-compaction-r4pHQBIr.js} +7 -7
  255. package/server/{spawn-planning-session-AiUSsBnH.js → spawn-planning-session-DWAorh2B.js} +25 -20
  256. package/server/{spawn-planning-session-LFtK2QCE.js → spawn-planning-session-KC_UduxD.js} +1 -1
  257. package/server/{specialist-completion-qOgqdqXH.js → specialist-completion-BXhav38U.js} +1 -1
  258. package/server/{specialist-context-gjj8Z4Ii.js → specialist-context-DtrYvGJ-.js} +5 -5
  259. package/server/{specialist-handoff-logger-BsBNvVZv.js → specialist-handoff-logger-C45ouoZ6.js} +2 -2
  260. package/server/{specialist-logs-CSLtvPx6.js → specialist-logs-DJ3RzKxW.js} +3 -3
  261. package/server/{specialists-D0VBf8g_.js → specialists-D5fRZXmN.js} +1 -1
  262. package/server/specialists-DVj0hvaL.js +3 -0
  263. package/server/{specialists-CYRwELzc.js → specialists-DyFeedjn.js} +66 -76
  264. package/server/{specialists-DAegTvRt.js → specialists-JVO00bs7.js} +374 -220
  265. package/server/specs-nN45DG2X.js +3 -0
  266. package/server/{src-OLoJhUiJ.js → src-CG9mCkP6.js} +6 -6
  267. package/server/{src-BqTcrfO_.js → src-CMTQGyCK.js} +3 -3
  268. package/server/{src-Dpq1yFIl.js → src-U7_kTPEE.js} +338 -4
  269. package/server/{stack-health-I713ELld.js → stack-health-Df0YEZKa.js} +1 -1
  270. package/server/{stack-health-DV_f-lK0.js → stack-health-puygdaMd.js} +2 -2
  271. package/server/{stale-task-claims-CQSKZVq0.js → stale-task-claims-BbFwCTb0.js} +4 -4
  272. package/server/{staleness-BbsGxmF2.js → staleness-Bpy41ngS.js} +15 -3
  273. package/server/{staleness-zGp4P1hd.js → staleness-Cbl_w4Bw.js} +1 -1
  274. package/server/{state-home-DixkE-up.js → state-home-CIGjwNfJ.js} +119 -54
  275. package/server/state-migrate-Dkzaxvny.js +487 -0
  276. package/server/{stuck-remediation-BWkK_O7A.js → stuck-remediation-CzEov_fq.js} +27 -21
  277. package/server/{stuck-remediation-CTPRC2S5.js → stuck-remediation-sY_MHHgQ.js} +1 -1
  278. package/server/{substrate-bug-weights-service-DXd0ID83.js → substrate-bug-weights-service-BH66lhm7.js} +3 -3
  279. package/server/{summary-fork-CdLn8Chr.js → summary-fork-D8bXjCr7.js} +2 -2
  280. package/server/{summary-fork-f3DpgjXh.js → summary-fork-DHhJIsAL.js} +8 -8
  281. package/server/{supervisor-Ch8CDuoF.js → supervisor-BO-Zk_h-.js} +3 -3
  282. package/server/supervisor-BPy-o1A8.js +2 -0
  283. package/server/{swarm-readiness-C9P2iPap.js → swarm-readiness-CQ_fwUWF.js} +4 -4
  284. package/server/{system-prerequisites-DkoQBn1q.js → system-prerequisites-Bza0ffAh.js} +24 -44
  285. package/server/{teardown-workspace-D-5yMyit.js → teardown-workspace-CEgauF4U.js} +15 -15
  286. package/server/{test-agent-queue-BwpUpu-o.js → test-agent-queue-DXDt0Xa-.js} +7 -7
  287. package/server/{test-verdict-BRiSu7eW.js → test-verdict-CmUBK5cT.js} +1 -1
  288. package/server/{test-verdict-BQ1yx7d4.js → test-verdict-DFjjIHR5.js} +1 -1
  289. package/server/{tldr-daemon-DjxP5g6Y.js → tldr-daemon-BDtLOIlO.js} +2 -2
  290. package/server/{tldr-daemon-BJA7TkqS.js → tldr-daemon-DL566HbH.js} +1 -1
  291. package/server/tmux-DoThH6aj.js +3 -0
  292. package/server/{tmux-y1blSxks.js → tmux-ftABRAmc.js} +76 -44
  293. package/server/{token-LUrbM9sU.js → token-CsOhvw42.js} +2 -2
  294. package/server/{token-util-BZaDAQ8S.js → token-util-CTmczIfW.js} +1 -1
  295. package/server/token-util-DrHg8abn.js +3 -0
  296. package/server/{tracker-config-DSFZBdXP.js → tracker-config-B4itFzDo.js} +2 -2
  297. package/server/{tracker-utils-WtP_V-yn.js → tracker-utils-BePq_oj-.js} +1 -1
  298. package/server/{tracker-utils-DiceZN3a.js → tracker-utils-tnxxqROg.js} +2 -2
  299. package/server/{traefik-connect-BXqfOP4-.js → traefik-connect-m73vGebA.js} +1 -1
  300. package/server/{tunnel-DTng1rfQ.js → tunnel-B2vxjx_b.js} +3 -3
  301. package/server/{tunnel-WcJImbAC.js → tunnel-Cgj-IGIl.js} +1 -1
  302. package/server/{types-BjaZ1oqH.js → types-BBNjPcqU.js} +1 -1
  303. package/server/{types-DqeBMmJN.js → types-hraoaQIp.js} +1 -1
  304. package/server/{uat-train-BpLnp7Cx.js → uat-train-CuEn0t9M.js} +28 -28
  305. package/server/{uat-train-Wismge7h.js → uat-train-cKfM-_WW.js} +1 -1
  306. package/server/{validation-BA4e5EGm.js → validation-B5JxoPUS.js} +259 -9
  307. package/server/{validation-CUWamZ4X.js → validation-CIi6pnI2.js} +1 -1
  308. package/server/{verification-artifact-Dr_0g9nb.js → verification-artifact-BcnIbigL.js} +1 -1
  309. package/server/{verification-artifact-CrbI4tJE.js → verification-artifact-C-lIHfUa.js} +1 -1
  310. package/server/{verification-runner-gAzh3cVD.js → verification-runner-Br0S_Ous.js} +103 -37
  311. package/server/{verification-runner-Dcksl_P-.js → verification-runner-CDj4lD4t.js} +1 -1
  312. package/server/{vtt-parser-3VZKsmSm.js → vtt-parser-DKpNNW5i.js} +1 -1
  313. package/server/{work-agent-prompt-ULdcANl5.js → work-agent-prompt-Yb2bd3Fq.js} +16 -15
  314. package/server/{workflows-B8ROFlfw.js → workflows-C9WmILql.js} +39 -77
  315. package/server/workflows-D90rMOya.js +2 -0
  316. package/server/{workspace-DhTDA8nB.js → workspace-BVl4rihN.js} +3 -3
  317. package/server/{workspace-DSjUJaJN.js → workspace-DuUdndHe.js} +1 -1
  318. package/server/{workspace-config-BAAsAv-o.js → workspace-config-cEGcO6UT.js} +1 -1
  319. package/server/{workspace-manager-CcujONCR.js → workspace-manager-ZTdJAy9M.js} +1 -1
  320. package/server/{workspace-manager-DsN52IMG.js → workspace-manager-hLUv3ADC.js} +23 -16
  321. package/server/{workspace-metadata-DIL5_U4c.js → workspace-metadata-CskwzzhL.js} +2 -2
  322. package/server/{workspace-metadata-CftOpNLs.js → workspace-metadata-DNpMixRq.js} +1 -1
  323. package/server/{workspaces-Dmlh1YXm.js → workspaces-hWvy9eKs.js} +276 -110
  324. package/sync-sources/agents/pan-inspect-agent.md +1 -1
  325. package/sync-sources/agents/pan-merge-agent.md +1 -1
  326. package/sync-sources/agents/pan-planning-agent.md +4 -4
  327. package/sync-sources/agents/pan-work-agent.md +1 -1
  328. package/sync-sources/dev-skills/pan-commit/SKILL.md +1 -1
  329. package/sync-sources/dev-skills/test-specialist-workflow/SKILL.md +1 -1
  330. package/sync-sources/hooks/record-cost-event.js +363 -71
  331. package/sync-sources/hooks/session-start-hook +7 -0
  332. package/sync-sources/hooks/work-agent-stop-hook +1 -1
  333. package/sync-sources/rules/per-bead-durability.md +1 -1
  334. package/sync-sources/rules/prd-authoring.md +1 -1
  335. package/sync-sources/skills/feature-work/SKILL.md +1 -1
  336. package/sync-sources/skills/pan/SKILL.md +2 -2
  337. package/sync-sources/skills/pan-admin-config/SKILL.md +1 -0
  338. package/sync-sources/skills/pan-approve/SKILL.md +1 -1
  339. package/sync-sources/skills/pan-close/SKILL.md +1 -1
  340. package/sync-sources/skills/pan-doctor/SKILL.md +1 -1
  341. package/sync-sources/skills/pan-new-project/SKILL.md +9 -11
  342. package/sync-sources/skills/pan-oversee/SKILL.md +5 -5
  343. package/sync-sources/skills/pan-plan/SKILL.md +6 -6
  344. package/sync-sources/skills/pan-quickstart/SKILL.md +1 -1
  345. package/sync-sources/skills/pan-recap/SKILL.md +2 -2
  346. package/sync-sources/skills/pan-review/SKILL.md +1 -1
  347. package/sync-sources/skills/pan-start/SKILL.md +26 -3
  348. package/sync-sources/skills/pan-swarm/SKILL.md +1 -1
  349. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  350. package/sync-sources/skills/pan-task/SKILL.md +2 -2
  351. package/sync-sources/skills/pan-wipe/SKILL.md +2 -2
  352. package/sync-sources/skills/pipeline-list/SKILL.md +1 -1
  353. package/sync-sources/skills/pipeline-status/SKILL.md +2 -2
  354. package/sync-sources/skills/plan/SKILL.md +11 -11
  355. package/sync-sources/skills/write-vbrief/SKILL.md +7 -282
  356. package/sync-sources/skills/write-xbrief/SKILL.md +295 -0
  357. package/sync-sources/templates/claude-md/sections/warnings.md +1 -1
  358. package/server/agent-state-BV_6RHnO.js +0 -3
  359. package/server/agents-Czz6R57Z.js +0 -3
  360. package/server/cli-ChErG518.js +0 -3
  361. package/server/codex-BBeZ8c3s.js +0 -3
  362. package/server/deacon-swarm-uudlSCLM.js +0 -2
  363. package/server/dist-BEDL2alY.js +0 -3
  364. package/server/forge-DbhJyH6u.js +0 -2
  365. package/server/git-utils-Bkxzr1Xf.js +0 -129
  366. package/server/hume-BrA1tUuk.js +0 -3
  367. package/server/inspect-agent-CyXNo9fM.js +0 -2
  368. package/server/lifecycle-io-CUpsxG0p.js +0 -3
  369. package/server/merge-ops-BpTtuO8x.js +0 -2
  370. package/server/projects-IRHJIPYC.js +0 -3
  371. package/server/providers-BqCdTryq.js +0 -3
  372. package/server/public/assets/index-C6NLz_1S.css +0 -1
  373. package/server/public/assets/mermaid-GHXKKRXX-BNwFoQsf.js +0 -1
  374. package/server/rally-DGimSRBQ.js +0 -3
  375. package/server/reap-terminal-sessions-C1mfzoZo.js +0 -3
  376. package/server/record-update-RviRDSNs.js +0 -168
  377. package/server/record-us0YECMO.js +0 -3
  378. package/server/resume-OyN3dEXE.js +0 -3
  379. package/server/review-status-DXeqFpk5.js +0 -3
  380. package/server/settings-BaPXXJsT.js +0 -2
  381. package/server/specialists-C6WkeKFK.js +0 -3
  382. package/server/specs-BsNcum0h.js +0 -3
  383. package/server/state-migrate-_zJJ6XKE.js +0 -362
  384. package/server/supervisor-Qy1QecAs.js +0 -2
  385. package/server/tmux-HQLgwo_C.js +0 -3
  386. package/server/token-util-Cg-QnowA.js +0 -3
  387. package/server/workflows-C5c-RPsY.js +0 -2
@@ -1,10 +1,10 @@
1
- import { $n as resolveProjectFromIssueSync, On as findProjectByTeamSync, wn as extractTeamPrefix, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
2
- import { a as PAN_DIRNAME, i as PAN_CONTINUE_FILENAME } from "./types-DqeBMmJN.js";
3
- import { f as init_config, m as loadConfigSync } from "./config-CrduXs4a.js";
4
- import { t as init_pan_dir } from "./pan-dir-Rw17YjT1.js";
5
- import { r as init_workspace_manager, t as createWorkspace } from "./workspace-manager-DsN52IMG.js";
6
- import { _ as saveRemoteAgentState, f as listActiveRemoteAgentStates, m as loadRemoteAgentState, o as getRemoteAgentOutput, s as init_remote_agents, u as isRemoteAgentRunning, v as sendToRemoteAgent } from "./remote-agents-CZ2rc8I0.js";
7
- import { t as createFlyProviderFromConfig } from "./remote-cnoeuDWn.js";
1
+ import { Tn as init_projects, mn as findProjectByTeamSync, un as extractTeamPrefix, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
2
+ import { a as PAN_DIRNAME, i as PAN_CONTINUE_FILENAME } from "./types-hraoaQIp.js";
3
+ import { f as init_config, m as loadConfigSync } from "./config-CCvjQf27.js";
4
+ import { t as init_pan_dir } from "./pan-dir-DeVUgwA7.js";
5
+ import { r as init_workspace_manager, t as createWorkspace } from "./workspace-manager-hLUv3ADC.js";
6
+ import { _ as saveRemoteAgentState, f as listActiveRemoteAgentStates, m as loadRemoteAgentState, o as getRemoteAgentOutput, s as init_remote_agents, u as isRemoteAgentRunning, v as sendToRemoteAgent } from "./remote-agents-nmty1mLu.js";
7
+ import { t as createFlyProviderFromConfig } from "./remote-Br-ZWVIP.js";
8
8
  import { Effect } from "effect";
9
9
  import { existsSync, mkdirSync, statSync, unlinkSync, writeFileSync } from "fs";
10
10
  import { basename, join } from "path";
@@ -309,7 +309,7 @@ async function reapCompletedRemoteAgents(opts = {}) {
309
309
  } catch {
310
310
  details.push("No continue.json retrieved from VM (skipped)");
311
311
  }
312
- const { getAgentStateSync, saveAgentStateSync } = await import("./agents-Czz6R57Z.js");
312
+ const { getAgentStateSync, saveAgentStateSync } = await import("./agents-FlIgQ3ql.js");
313
313
  const existing = getAgentStateSync(agentId);
314
314
  if (existing) {
315
315
  existing.workspace = existing.workspace || workspacePath;
@@ -327,8 +327,8 @@ async function reapCompletedRemoteAgents(opts = {}) {
327
327
  startedAt: remoteState.startedAt,
328
328
  lastActivity: (/* @__PURE__ */ new Date()).toISOString()
329
329
  });
330
- const { createReviewArtifactsForIssue } = await import("./review-artifacts-BBgnd5df.js");
331
- const { setReviewStatusSync } = await import("./review-status-DXeqFpk5.js");
330
+ const { createReviewArtifactsForIssue } = await import("./review-artifacts-BLbSC4ke.js");
331
+ const { setReviewStatusSync } = await import("./review-status-C6n6-9f_.js");
332
332
  const primaryArtifact = (await Effect.runPromise(createReviewArtifactsForIssue(issueId, workspacePath))).mergeSet?.repos.find((repo) => !!repo.artifactUrl);
333
333
  if (primaryArtifact?.artifactUrl) {
334
334
  setReviewStatusSync(issueId, { prUrl: primaryArtifact.artifactUrl });
@@ -349,7 +349,7 @@ async function reapCompletedRemoteAgents(opts = {}) {
349
349
  try {
350
350
  const fly = createFlyProviderFromConfig(loadConfigSync().remote);
351
351
  if (sessionAlive) {
352
- const { killRemoteAgent } = await import("./remote-agents-BNORDWAX.js");
352
+ const { killRemoteAgent } = await import("./remote-agents-CRCg1L4H.js");
353
353
  await killRemoteAgent(agentId, vmName).catch(() => void 0);
354
354
  }
355
355
  await Effect.runPromise(fly.deleteVm(vmName));
@@ -357,7 +357,7 @@ async function reapCompletedRemoteAgents(opts = {}) {
357
357
  } catch (err) {
358
358
  details.push(`Warning: could not destroy machine: ${err.message}`);
359
359
  }
360
- const { deleteWorkspaceMetadataSync } = await import("./workspace-metadata-CftOpNLs.js");
360
+ const { deleteWorkspaceMetadataSync } = await import("./workspace-metadata-DNpMixRq.js");
361
361
  deleteWorkspaceMetadataSync(issueId);
362
362
  details.push("Removed remote workspace metadata (pipeline is local from here)");
363
363
  saveRemoteAgentState({
@@ -386,4 +386,4 @@ async function reapCompletedRemoteAgents(opts = {}) {
386
386
  //#endregion
387
387
  export { reapCompletedRemoteAgents, refreshClaudeCredentialsForActiveRemoteAgents };
388
388
 
389
- //# sourceMappingURL=remote-completion-W67FNQ-A.js.map
389
+ //# sourceMappingURL=remote-completion-BbWNd10K.js.map
@@ -0,0 +1,3 @@
1
+ import { G as resumeAgent, W as init_resume } from "./queries-6d7Cdtm7.js";
2
+ init_resume();
3
+ export { resumeAgent };
@@ -1,3 +1,3 @@
1
- import { a as isReviewStaleSync, c as purgeReviewAgentsForIssue, d as buildConvoyPrompt, f as handleReviewDiscoveryReady, h as reviewResumeDecision, i as isReviewSessionForIssue, l as resolveReviewMode, m as spawnReviewSubRoleForIssue, n as init_review_agent, o as killAllReviewSessions, p as resolveReReviewScope, r as isExtendedReviewEnabled, s as killAllReviewerSessions, t as PARENT_REVIEW_TIMEOUT_MS, u as spawnReviewRoleForIssue } from "./review-agent-CqSqSHkU.js";
1
+ import { a as isReviewStaleSync, c as purgeReviewAgentsForIssue, d as buildConvoyPrompt, f as handleReviewDiscoveryReady, h as reviewResumeDecision, i as isReviewSessionForIssue, l as resolveReviewMode, m as spawnReviewSubRoleForIssue, n as init_review_agent, o as killAllReviewSessions, p as resolveReReviewScope, r as isExtendedReviewEnabled, s as killAllReviewerSessions, t as PARENT_REVIEW_TIMEOUT_MS, u as spawnReviewRoleForIssue } from "./review-agent-sKkE1FEL.js";
2
2
  init_review_agent();
3
3
  export { PARENT_REVIEW_TIMEOUT_MS, buildConvoyPrompt, handleReviewDiscoveryReady, isExtendedReviewEnabled, isReviewSessionForIssue, isReviewStaleSync, killAllReviewSessions, killAllReviewerSessions, purgeReviewAgentsForIssue, resolveReReviewScope, resolveReviewMode, reviewResumeDecision, spawnReviewRoleForIssue, spawnReviewSubRoleForIssue };
@@ -1,15 +1,15 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { At as init_record, Ft as readIssueRecordSync, Lt as resolveProjectForIssue, Q as resolveModel, ai as sessionFilePath, f as loadConfigSync, kr as AGENTS_DIR, ri as packageRoot, t as init_config_yaml, ti as init_paths } from "./config-yaml-Ciyp2mYe.js";
2
+ import { Ft as resolveProjectForIssue, Gr as sessionFilePath, Nt as readIssueRecordSync, Ot as init_record, Ur as packageRoot, Vr as init_paths, f as loadConfigSync, hr as AGENTS_DIR, t as init_config_yaml, tt as resolveModel } from "./config-yaml-DvyMuOle.js";
3
3
  import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-DDlOIAML.js";
4
- import { D as killSession, E as isPaneDead, j as listSessionNames, w as init_tmux } from "./tmux-y1blSxks.js";
5
- import { c as init_review_status, s as getReviewStatusSync, y as setReviewStatusSync } from "./review-status-CCgPVK1h.js";
6
- import { l as removeAgentSync, o as init_agents, s as listAgentIdsByPrefixSync } from "./agents-DbrHWunF.js";
7
- import { Ft as providerDefaultHarnessSync, Mn as init_agent_state, Pt as init_staffing, jn as getAgentStateSync, s as init_agents$1 } from "./queries-B5hl7lMQ.js";
8
- import { a as PAN_DIRNAME, p as init_types } from "./types-DqeBMmJN.js";
9
- import { a as init_review_convoy_liveness, c as init_review_monitor, i as evaluateReviewConvoyLiveness, n as createPromiseCoalescer, r as init_in_flight_guard, s as REVIEW_SUB_ROLES } from "./in-flight-guard-tVGiI5ee.js";
10
- import { n as shouldSkipDispatchAsMerged, t as init_merge_verification } from "./merge-verification-B3meGcXF.js";
11
- import { n as formatTier1Summary, o as init_review_context, t as buildReviewContext } from "./review-context-Ctp9BdNJ.js";
12
- import { a as resolveConflictGate, i as init_conflict_gate, r as getCachedConflictGateMergeability, t as buildRealConflictGateDeps } from "./conflict-gate-BLUNMs1i.js";
4
+ import { D as killSession, E as isPaneDead, M as listSessionNames, w as init_tmux } from "./tmux-ftABRAmc.js";
5
+ import { b as setReviewStatusSync, c as getReviewStatusSync, l as init_review_status } from "./review-status-A7quS5KJ.js";
6
+ import { l as removeAgentSync, o as init_agents, s as listAgentIdsByPrefixSync } from "./agents-B4Bjbkfv.js";
7
+ import { Gn as init_agent_state, Jt as providerDefaultHarnessSync, Wn as getAgentStateSync, b as init_agents$1, qt as init_staffing } from "./queries-6d7Cdtm7.js";
8
+ import { a as PAN_DIRNAME, p as init_types } from "./types-hraoaQIp.js";
9
+ import { a as init_review_convoy_liveness, c as init_review_monitor, i as evaluateReviewConvoyLiveness, n as createPromiseCoalescer, r as init_in_flight_guard, s as REVIEW_SUB_ROLES } from "./in-flight-guard-aQ1IxeI3.js";
10
+ import { n as shouldSkipDispatchAsMerged, t as init_merge_verification } from "./merge-verification-CSizH3HY.js";
11
+ import { n as formatTier1Summary, o as init_review_context, t as buildReviewContext } from "./review-context-BgX3lcCx.js";
12
+ import { a as resolveConflictGate, i as init_conflict_gate, r as getCachedConflictGateMergeability, t as buildRealConflictGateDeps } from "./conflict-gate-CmrYpa47.js";
13
13
  import { Effect } from "effect";
14
14
  import { existsSync } from "fs";
15
15
  import { dirname, join } from "path";
@@ -151,7 +151,7 @@ async function buildConvoyPromptPromise(opts) {
151
151
  }
152
152
  async function spawnReviewSubRoleForIssuePromise(opts) {
153
153
  try {
154
- const { saveAgentState, spawnRun, getAgentStateSync, getLatestSessionIdSync, resumeAgent, stopAgent } = await import("./agents-Czz6R57Z.js");
154
+ const { saveAgentState, spawnRun, getAgentStateSync, getLatestSessionIdSync, resumeAgent, stopAgent } = await import("./agents-FlIgQ3ql.js");
155
155
  const cfg = loadConfigSync().config;
156
156
  const outputPath = opts.outputPath ?? reviewerAgentOutputPath(opts.workspace, opts.runId, opts.subRole);
157
157
  const synthesisAgentId = opts.synthesisAgentId ?? `agent-${opts.issueId.toLowerCase()}-review`;
@@ -239,7 +239,7 @@ async function spawnReviewSubRoleForIssuePromise(opts) {
239
239
  if (opts.forkedSessionId) run.reviewForkedFromParent = true;
240
240
  await Effect.runPromise(saveAgentState(run));
241
241
  try {
242
- const { notifyPipelineSync } = await import("./pipeline-notifier-dQ-U4NSb.js");
242
+ const { notifyPipelineSync } = await import("./pipeline-notifier-6iCJplFZ.js");
243
243
  notifyPipelineSync({
244
244
  type: "reviewer_started",
245
245
  issueId: opts.issueId,
@@ -270,7 +270,7 @@ async function computeConvoyScope(issueId, workspace) {
270
270
  let carried = [];
271
271
  let scope = "changed";
272
272
  try {
273
- const { getReviewStatusSync } = await import("./review-status-DXeqFpk5.js");
273
+ const { getReviewStatusSync } = await import("./review-status-C6n6-9f_.js");
274
274
  scope = resolveReReviewScope(issueId);
275
275
  const priorVerdicts = getReviewStatusSync(issueId)?.reviewerVerdicts;
276
276
  let changedFiles;
@@ -313,13 +313,13 @@ async function computeConvoyScope(issueId, workspace) {
313
313
  */
314
314
  async function forkParentSessionForReviewer(parentAgentId, workspace) {
315
315
  try {
316
- const { getLatestSessionIdSync } = await import("./agents-Czz6R57Z.js");
316
+ const { getLatestSessionIdSync } = await import("./agents-FlIgQ3ql.js");
317
317
  const parentSessionId = getLatestSessionIdSync(parentAgentId);
318
318
  if (!parentSessionId) return null;
319
319
  const src = sessionFilePath(workspace, parentSessionId);
320
320
  const { existsSync } = await import("fs");
321
321
  if (!existsSync(src)) return null;
322
- const { reserveForkSession, copySessionForFork } = await import("./session-fork-uNo4rMRA.js");
322
+ const { reserveForkSession, copySessionForFork } = await import("./session-fork-BQ8_6H32.js");
323
323
  const reserved = await reserveForkSession(workspace);
324
324
  await copySessionForFork(src, reserved.sessionFile, { fullHistory: true });
325
325
  return reserved.sessionId;
@@ -357,13 +357,13 @@ async function launchConvoyReviewersPromise(params) {
357
357
  }
358
358
  }
359
359
  const cfg = loadConfigSync().config;
360
- const { getAgentStateSync } = await import("./agents-Czz6R57Z.js");
360
+ const { getAgentStateSync } = await import("./agents-FlIgQ3ql.js");
361
361
  const parentState = getAgentStateSync(params.synthesisAgentId);
362
362
  const reviewerResults = await Promise.all(params.inScope.map(async (subRole) => {
363
363
  const outputPath = reviewerAgentOutputPath(params.workspace, params.runId, subRole);
364
364
  let forkedSessionId;
365
365
  if (params.forkFromParent && parentState?.harness === "claude-code" && !params.harness) try {
366
- const { getLatestSessionIdSync } = await import("./agents-Czz6R57Z.js");
366
+ const { getLatestSessionIdSync } = await import("./agents-FlIgQ3ql.js");
367
367
  const reviewerModel = params.model ?? resolveModel("review", subRole, cfg);
368
368
  if (!!!getLatestSessionIdSync(reviewerAgentId(params.issueId, subRole)) && reviewerModel === parentState.model) {
369
369
  forkedSessionId = await forkParentSessionForReviewer(params.synthesisAgentId, params.workspace) ?? void 0;
@@ -384,7 +384,7 @@ async function launchConvoyReviewersPromise(params) {
384
384
  allowHost: params.allowHost ?? false
385
385
  }));
386
386
  if (!result.success) try {
387
- const { messageAgent } = await import("./agents-Czz6R57Z.js");
387
+ const { messageAgent } = await import("./agents-FlIgQ3ql.js");
388
388
  await messageAgent(params.synthesisAgentId, `REVIEWER_FAILED ${subRole} ${result.error ?? result.message}`);
389
389
  } catch (signalErr) {
390
390
  console.warn(`[review-agent] Failed to signal ${subRole} spawn failure to ${params.synthesisAgentId}:`, signalErr);
@@ -411,7 +411,7 @@ async function launchConvoyReviewersPromise(params) {
411
411
  async function handleReviewDiscoveryReady(issueId, opts = {}) {
412
412
  const normalized = issueId.toUpperCase();
413
413
  const parentId = `agent-${normalized.toLowerCase()}-review`;
414
- const { saveAgentState, getAgentStateSync } = await import("./agents-Czz6R57Z.js");
414
+ const { saveAgentState, getAgentStateSync } = await import("./agents-FlIgQ3ql.js");
415
415
  const parent = getAgentStateSync(parentId);
416
416
  if (!parent) return {
417
417
  success: false,
@@ -826,7 +826,7 @@ async function spawnReviewRoleForIssuePromise(opts) {
826
826
  };
827
827
  }
828
828
  try {
829
- const { archiveFeedbackFiles } = await import("./feedback-writer-DDQNV8uc.js");
829
+ const { archiveFeedbackFiles } = await import("./feedback-writer-qmiMbqTZ.js");
830
830
  await Effect.runPromise(archiveFeedbackFiles(opts.workspace));
831
831
  } catch {}
832
832
  try {
@@ -843,7 +843,7 @@ async function spawnReviewRoleForIssuePromise(opts) {
843
843
  };
844
844
  }
845
845
  try {
846
- const { notifyPipelineSync } = await import("./pipeline-notifier-dQ-U4NSb.js");
846
+ const { notifyPipelineSync } = await import("./pipeline-notifier-6iCJplFZ.js");
847
847
  notifyPipelineSync({
848
848
  type: "task_queued",
849
849
  specialist: "review-agent",
@@ -851,7 +851,7 @@ async function spawnReviewRoleForIssuePromise(opts) {
851
851
  });
852
852
  } catch {}
853
853
  try {
854
- const { spawnRun, saveAgentState, getAgentState, getAgentStateSync, getLatestSessionIdSync, resumeAgent, wipeAgentStateDirs } = await import("./agents-Czz6R57Z.js");
854
+ const { spawnRun, saveAgentState, getAgentState, getAgentStateSync, getLatestSessionIdSync, resumeAgent, wipeAgentStateDirs } = await import("./agents-FlIgQ3ql.js");
855
855
  const workAgentState = await Effect.runPromise(getAgentState(`agent-${opts.issueId.toLowerCase()}`));
856
856
  const allowHost = opts.allowHost === true || workAgentState?.hostOverride === true;
857
857
  let headSha = "unknown";
@@ -1225,4 +1225,4 @@ var init_review_agent = __esmMin((() => {
1225
1225
  //#endregion
1226
1226
  export { isReviewStaleSync as a, purgeReviewAgentsForIssue as c, buildConvoyPrompt as d, handleReviewDiscoveryReady as f, reviewResumeDecision as h, isReviewSessionForIssue as i, resolveReviewMode as l, spawnReviewSubRoleForIssue as m, init_review_agent as n, killAllReviewSessions as o, resolveReReviewScope as p, isExtendedReviewEnabled as r, killAllReviewerSessions as s, PARENT_REVIEW_TIMEOUT_MS as t, spawnReviewRoleForIssue as u };
1227
1227
 
1228
- //# sourceMappingURL=review-agent-CqSqSHkU.js.map
1228
+ //# sourceMappingURL=review-agent-sKkE1FEL.js.map
@@ -1,8 +1,8 @@
1
- import { lr as init_issue_id, sr as extractNumberSync } from "./config-yaml-Ciyp2mYe.js";
1
+ import { Yn as init_issue_id, qn as extractNumberSync } from "./config-yaml-DvyMuOle.js";
2
2
  import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-DDlOIAML.js";
3
- import { a as upsertMergeSetSync, i as init_merge_set, n as ensureMergeSetForIssueSync, o as withRepoArtifactUrlSync, s as withRepoStateSync } from "./merge-set-D7YNU1ZB.js";
4
- import { i as findPlanSync, o as init_io } from "./io-BiM-7Zsx.js";
5
- import { n as getForgeAdapter } from "./forge-DBbDpiYc.js";
3
+ import { a as upsertMergeSetSync, i as init_merge_set, n as ensureMergeSetForIssueSync, o as withRepoArtifactUrlSync, s as withRepoStateSync } from "./merge-set-DLz0MkGT.js";
4
+ import { i as findPlanSync, o as init_io } from "./io-B3_AHDfr.js";
5
+ import { n as getForgeAdapter } from "./forge-Ch9gCFod.js";
6
6
  import { join } from "node:path";
7
7
  import { Data, Effect } from "effect";
8
8
  import { existsSync } from "node:fs";
@@ -153,4 +153,4 @@ const createReviewArtifactsForIssue = (issueId, workspacePath) => Effect.tryProm
153
153
  //#endregion
154
154
  export { createReviewArtifactsForIssue };
155
155
 
156
- //# sourceMappingURL=review-artifacts-BBgnd5df.js.map
156
+ //# sourceMappingURL=review-artifacts-BLbSC4ke.js.map
@@ -1,11 +1,11 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Or as init_errors, vr as FsError } from "./config-yaml-Ciyp2mYe.js";
3
- import { a as PAN_DIRNAME, p as init_types } from "./types-DqeBMmJN.js";
4
- import { i as findPlanSync, o as init_io, u as readPlan } from "./io-BiM-7Zsx.js";
5
- import { d as getDevrootPathSync, f as init_config } from "./config-CrduXs4a.js";
6
- import { a as init_lifecycle_io, i as findVBriefByIssueSync } from "./lifecycle-io-DMurK4oM.js";
7
- import { n as init_review_verdict_feedback } from "./review-verdict-feedback-CMsIpTpy.js";
8
- import { n as init_github_pr_lookup, r as lookupPullRequestNumberForBranch } from "./github-pr-lookup-DBP0YHMr.js";
2
+ import { ir as FsError, mr as init_errors } from "./config-yaml-DvyMuOle.js";
3
+ import { a as PAN_DIRNAME, p as init_types } from "./types-hraoaQIp.js";
4
+ import { i as findPlanSync, o as init_io, u as readPlan } from "./io-B3_AHDfr.js";
5
+ import { d as getDevrootPathSync, f as init_config } from "./config-CCvjQf27.js";
6
+ import { a as init_lifecycle_io, i as findXBriefByIssueSync } from "./lifecycle-io-D8iNBcux.js";
7
+ import { n as init_review_verdict_feedback } from "./review-verdict-feedback-CTRNtzXO.js";
8
+ import { n as init_github_pr_lookup, r as lookupPullRequestNumberForBranch } from "./github-pr-lookup-BRbDW-qk.js";
9
9
  import { Effect } from "effect";
10
10
  import { existsSync } from "fs";
11
11
  import { join } from "path";
@@ -444,7 +444,7 @@ async function extractPlanReviewRequirements(workspace, issueId) {
444
444
  nonGoals: [],
445
445
  traces: []
446
446
  };
447
- const found = findVBriefByIssueSync(projectRoot, issueId);
447
+ const found = findXBriefByIssueSync(projectRoot, issueId);
448
448
  if (found) return {
449
449
  acceptanceCriteria: flattenAC(found.document),
450
450
  nonGoals: flattenNonGoals(found.document),
@@ -700,4 +700,4 @@ var init_review_context = __esmMin((() => {
700
700
  //#endregion
701
701
  export { getDiffStat as a, getDiffBase as i, formatTier1Summary as n, init_review_context as o, getChangedFiles as r, buildReviewContext as t };
702
702
 
703
- //# sourceMappingURL=review-context-Ctp9BdNJ.js.map
703
+ //# sourceMappingURL=review-context-BgX3lcCx.js.map
@@ -1,13 +1,15 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { $n as resolveProjectFromIssueSync, At as init_record, Ft as readIssueRecordSync, Nn as getProjectSync, Nt as readIssueRecord, Ot as getIssueWorkspacePath, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
2
+ import { Et as getIssueWorkspacePath, Nt as readIssueRecordSync, Ot as init_record, Tn as init_projects, fn as findProjectByPathSync, jt as readIssueRecord, nn as init_state_read_home, rn as resolveStateReadHomeSync, yn as getProjectSync, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
3
3
  import { a as init_activity_logger, n as emitActivityEntrySync, r as emitActivityTtsSync } from "./activity-logger-DDlOIAML.js";
4
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-DN2wSxle.js";
5
- import { n as updateIssueRecord, t as init_record_update } from "./record-update-RviRDSNs.js";
6
- import { d as init_cost_sync, i as getCostBreakdownByStageAndModelSync, o as getCostForIssueSync } from "./cost-sync-DzHP6zaR.js";
7
- import { r as notifyPipelineSync, t as init_pipeline_notifier } from "./pipeline-notifier-BM2HLF7B.js";
8
- import { c as init_review_status_sync, d as init_review_status_normalize, f as normalizeReviewStatusSync, l as markWorkspaceStuck$1, n as deleteReviewStatus, o as getReviewStatusFromDbSync, r as getAllReviewStatusesFromDb, s as getReviewStatusesFromDb, u as upsertReviewStatusSync } from "./review-status-sync-jnLgd04F.js";
9
- import { a as PAN_DIRNAME, p as init_types, r as PAN_CONTINUES_DIRNAME } from "./types-DqeBMmJN.js";
10
- import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-D7YNU1ZB.js";
4
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CzaSOgul.js";
5
+ import { n as updateIssueRecord, t as init_record_update } from "./record-update-Dq0t2uBG.js";
6
+ import { d as init_cost_sync, i as getCostBreakdownByStageAndModelSync, o as getCostForIssueSync } from "./cost-sync-C0VdGme1.js";
7
+ import { r as notifyPipelineSync, t as init_pipeline_notifier } from "./pipeline-notifier-D0ykk59O.js";
8
+ import { c as init_review_status_sync, d as init_review_status_normalize, f as normalizeReviewStatusSync, l as markWorkspaceStuck$1, n as deleteReviewStatus, o as getReviewStatusFromDbSync, r as getAllReviewStatusesFromDb, s as getReviewStatusesFromDb, t as clearWorkspaceStuck$1, u as upsertReviewStatusSync } from "./review-status-sync-BhSQ0d0l.js";
9
+ import { a as registerReviewStatusMapReader, n as init_review_status_source } from "./review-status-source-CxuEjLGg.js";
10
+ import { a as PAN_DIRNAME, p as init_types, r as PAN_CONTINUES_DIRNAME } from "./types-hraoaQIp.js";
11
+ import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-DLz0MkGT.js";
12
+ import { o as init_lifecycle, r as XBRIEF_FILENAME_SUFFIX, t as LEGACY_VBRIEF_FILENAME_SUFFIX } from "./lifecycle-DfeyBDwA.js";
11
13
  import { dirname, join } from "node:path";
12
14
  import { Data, Effect } from "effect";
13
15
  import { join as join$1 } from "path";
@@ -209,23 +211,6 @@ var init_agent_state_sync = __esmMin((() => {
209
211
  SELECT_AGENT_SQL = `SELECT ${AGENT_COLUMNS_FOR_DB.join(", ")} FROM agents`;
210
212
  }));
211
213
  //#endregion
212
- //#region ../../lib/cloister/review-status-source.ts
213
- function registerReviewStatusMapReader(fn) {
214
- reader = fn;
215
- }
216
- function readReviewStatusMap() {
217
- if (!reader) return null;
218
- try {
219
- return reader();
220
- } catch {
221
- return null;
222
- }
223
- }
224
- var reader;
225
- var init_review_status_source = __esmMin((() => {
226
- reader = null;
227
- }));
228
- //#endregion
229
214
  //#region ../../lib/pan-dir/records.ts
230
215
  /**
231
216
  * PAN-1908 / PAN-1919: per-issue permanent-record builder.
@@ -305,10 +290,21 @@ function projectMerges(issueId) {
305
290
  if (!mergeSet) return [];
306
291
  return mergeSet.repos.map((r) => r.artifactUrl).filter((url) => typeof url === "string" && url.length > 0);
307
292
  }
293
+ function resolveContinuePath(projectRoot, issueId) {
294
+ const stateHome = resolveStateReadHomeSync(findProjectByPathSync(projectRoot) ?? {
295
+ name: projectRoot,
296
+ path: projectRoot
297
+ });
298
+ const basePath = join(stateHome.migrated ? join(stateHome.root, PAN_CONTINUES_DIRNAME) : join(stateHome.root, PAN_DIRNAME, PAN_CONTINUES_DIRNAME), issueId.toLowerCase());
299
+ const canonicalPath = `${basePath}${XBRIEF_FILENAME_SUFFIX}`;
300
+ const legacyPath = `${basePath}${LEGACY_VBRIEF_FILENAME_SUFFIX}`;
301
+ if (existsSync(canonicalPath)) return canonicalPath;
302
+ if (existsSync(legacyPath)) return legacyPath;
303
+ return canonicalPath;
304
+ }
308
305
  async function readLegacyContinueText(projectRoot, issueId) {
309
- const path = join(projectRoot, PAN_DIRNAME, PAN_CONTINUES_DIRNAME, `${issueId.toLowerCase()}.vbrief.json`);
310
306
  try {
311
- return await promises.readFile(path, "utf-8");
307
+ return await promises.readFile(resolveContinuePath(projectRoot, issueId), "utf-8");
312
308
  } catch {
313
309
  return null;
314
310
  }
@@ -423,6 +419,8 @@ var init_records = __esmMin((() => {
423
419
  init_cost_sync();
424
420
  init_merge_set();
425
421
  init_projects();
422
+ init_state_read_home();
423
+ init_lifecycle();
426
424
  init_agent_state_sync();
427
425
  init_record();
428
426
  init_record_update();
@@ -804,7 +802,7 @@ function setReviewStatusSync(issueId, update, existing) {
804
802
  });
805
803
  if (readyForMerge && !status.readyForMerge && updated.prUrl) (async () => {
806
804
  try {
807
- const { isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-CeSVFL6C.js");
805
+ const { isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-CPfoFAdV.js");
808
806
  if (!isGitHubAppConfigured()) return;
809
807
  const prMatch = updated.prUrl.match(/github\.com\/([^/]+)\/([^/]+)\/pull/);
810
808
  if (!prMatch) return;
@@ -1087,7 +1085,7 @@ function resetPipelineVerdictsForWorkStartSync(issueId, options = {}) {
1087
1085
  */
1088
1086
  async function deliverReviewVerdictFeedbackHostSide(issueId, status) {
1089
1087
  try {
1090
- const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-D5lW0o3k.js");
1088
+ const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-C1Kg8n7t.js");
1091
1089
  if ((await Effect.runPromise(deliverReviewVerdictFeedback({
1092
1090
  issueId,
1093
1091
  verdict: status.reviewStatus === "failed" ? "failed" : "blocked",
@@ -1120,7 +1118,7 @@ function maybeAutoDispatchReviewHostSide(issueId, status) {
1120
1118
  }
1121
1119
  async function dispatchReviewHostSide(issueId, prUrl) {
1122
1120
  try {
1123
- const { resolveProjectFromIssueSync } = await import("./projects-IRHJIPYC.js");
1121
+ const { resolveProjectFromIssueSync } = await import("./projects-9SkRpES9.js");
1124
1122
  const resolved = resolveProjectFromIssueSync(issueId);
1125
1123
  if (!resolved) return;
1126
1124
  const { existsSync } = await import("fs");
@@ -1136,7 +1134,7 @@ async function dispatchReviewHostSide(issueId, prUrl) {
1136
1134
  });
1137
1135
  branch = stdout.trim() || branch;
1138
1136
  } catch {}
1139
- const { spawnReviewRoleForIssue } = await import("./review-agent-CSswH985.js");
1137
+ const { spawnReviewRoleForIssue } = await import("./review-agent-DJRO8EG8.js");
1140
1138
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
1141
1139
  issueId,
1142
1140
  workspace,
@@ -1160,13 +1158,13 @@ function maybeRecoverTestVerdictHostSide(issueId, status) {
1160
1158
  }
1161
1159
  async function recoverTestVerdictHostSide(issueId) {
1162
1160
  try {
1163
- const { resolveProjectFromIssueSync } = await import("./projects-IRHJIPYC.js");
1161
+ const { resolveProjectFromIssueSync } = await import("./projects-9SkRpES9.js");
1164
1162
  const resolved = resolveProjectFromIssueSync(issueId);
1165
1163
  if (!resolved) return;
1166
1164
  const { existsSync } = await import("fs");
1167
1165
  const workspace = join$1(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
1168
1166
  if (!existsSync(workspace)) return;
1169
- const { readTestVerdictArtifact } = await import("./test-verdict-BQ1yx7d4.js");
1167
+ const { readTestVerdictArtifact } = await import("./test-verdict-DFjjIHR5.js");
1170
1168
  const artifact = readTestVerdictArtifact(workspace);
1171
1169
  if (!artifact) return;
1172
1170
  setReviewStatusSync(issueId, {
@@ -1180,13 +1178,13 @@ async function recoverTestVerdictHostSide(issueId) {
1180
1178
  }
1181
1179
  async function deliverTestFailureToWorkAgentHostSide(issueId, status) {
1182
1180
  try {
1183
- const { resolveProjectFromIssueSync } = await import("./projects-IRHJIPYC.js");
1181
+ const { resolveProjectFromIssueSync } = await import("./projects-9SkRpES9.js");
1184
1182
  const resolved = resolveProjectFromIssueSync(issueId);
1185
1183
  const workspace = resolved ? join$1(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`) : void 0;
1186
1184
  const notes = status.testNotes;
1187
1185
  let feedbackPath;
1188
1186
  try {
1189
- const { writeFeedbackFile } = await import("./feedback-writer-DDQNV8uc.js");
1187
+ const { writeFeedbackFile } = await import("./feedback-writer-qmiMbqTZ.js");
1190
1188
  const r = await Effect.runPromise(writeFeedbackFile({
1191
1189
  issueId,
1192
1190
  workspacePath: workspace,
@@ -1198,10 +1196,10 @@ async function deliverTestFailureToWorkAgentHostSide(issueId, status) {
1198
1196
  if (r.success) feedbackPath = r.filePath;
1199
1197
  } catch {}
1200
1198
  const message = `SPECIALIST FEEDBACK: test-agent reported FAILED for ${issueId}.\n\n${feedbackPath ? `MUST READ: ${feedbackPath}\n\n` : ""}${notes ? `${notes.slice(0, 400)}\n\n` : ""}Fix the failing tests, commit and push, then re-run pan done ${issueId}. Do NOT stop at the prompt.`;
1201
- const { resolveIssueFeedbackTarget, surfaceIssueFeedbackNeedsYou } = await import("./feedback-target-Dn9vfPpz.js");
1199
+ const { resolveIssueFeedbackTarget, surfaceIssueFeedbackNeedsYou } = await import("./feedback-target-iygZwmMc.js");
1202
1200
  const target = await resolveIssueFeedbackTarget(issueId);
1203
1201
  if ("agentId" in target) {
1204
- const { messageAgent } = await import("./agents-Czz6R57Z.js");
1202
+ const { messageAgent } = await import("./agents-FlIgQ3ql.js");
1205
1203
  await messageAgent(target.agentId, message, "internal", { owesRework: true });
1206
1204
  console.log(`[review-status] delivered test failure to ${target.agentId} for ${issueId} (host-side)`);
1207
1205
  } else await surfaceIssueFeedbackNeedsYou(issueId, target.reason, {
@@ -1359,6 +1357,25 @@ function markWorkspaceStuck(issueId, reason, details) {
1359
1357
  }
1360
1358
  }
1361
1359
  /**
1360
+ * Clear the stuck flag for a workspace.
1361
+ * Called when the human clicks "Unstick" in the dashboard.
1362
+ * Re-enables Deacon patrol for this workspace.
1363
+ */
1364
+ function clearWorkspaceStuck(issueId) {
1365
+ try {
1366
+ clearWorkspaceStuck$1(issueId);
1367
+ console.log(`[review-status] Cleared stuck state for ${issueId}`);
1368
+ const updated = getReviewStatusSync(issueId);
1369
+ if (updated) notifyPipelineSync({
1370
+ type: "status_changed",
1371
+ issueId,
1372
+ status: updated
1373
+ });
1374
+ } catch (err) {
1375
+ console.error(`[review-status] Failed to clear stuck state for ${issueId}:`, err);
1376
+ }
1377
+ }
1378
+ /**
1362
1379
  * Set or clear the operator-requested deacon-ignore flag. When set, Deacon
1363
1380
  * patrol skips the issue entirely on every cycle. Distinct from `stuck`, which
1364
1381
  * is a system-set failure marker that also suppresses patrol.
@@ -1432,6 +1449,6 @@ var init_review_status = __esmMin((() => {
1432
1449
  });
1433
1450
  }));
1434
1451
  //#endregion
1435
- export { stateToOverdeckParamsForDb as A, init_review_status_source as C, init_agent_state_sync as D, getOverdeckAgentStateSync as E, listOverdeckAgentStatesSync as O, needsReviewDispatch as S, AGENT_COLUMNS_FOR_DB as T, setDeaconIgnored as _, fixStuckReadyForMerge as a, verificationSatisfied as b, init_review_status as c, loadReviewStatusesForIssues as d, markWorkspaceStuck as f, setAutoMerge as g, reviewGatesPassedSync as h, fixStuckCommentedReviews as i, saveOverdeckAgentStateSync as k, loadReadyForMergeFlags as l, resetPipelineVerdictsForWorkStartSync as m, clearReviewStatus as n, getReviewStatus as o, mergeGateEligibility as p, clearStuckMergeStatuses as r, getReviewStatusSync as s, ReviewStatusError as t, loadReviewStatuses as u, setReviewStatus as v, readReviewStatusMap as w, init_review_dispatch_decision as x, setReviewStatusSync as y };
1452
+ export { needsReviewDispatch as C, listOverdeckAgentStatesSync as D, init_agent_state_sync as E, saveOverdeckAgentStateSync as O, init_review_dispatch_decision as S, getOverdeckAgentStateSync as T, setAutoMerge as _, fixStuckCommentedReviews as a, setReviewStatusSync as b, getReviewStatusSync as c, loadReviewStatuses as d, loadReviewStatusesForIssues as f, reviewGatesPassedSync as g, resetPipelineVerdictsForWorkStartSync as h, clearWorkspaceStuck as i, stateToOverdeckParamsForDb as k, init_review_status as l, mergeGateEligibility as m, clearReviewStatus as n, fixStuckReadyForMerge as o, markWorkspaceStuck as p, clearStuckMergeStatuses as r, getReviewStatus as s, ReviewStatusError as t, loadReadyForMergeFlags as u, setDeaconIgnored as v, AGENT_COLUMNS_FOR_DB as w, verificationSatisfied as x, setReviewStatus as y };
1436
1453
 
1437
- //# sourceMappingURL=review-status-CCgPVK1h.js.map
1454
+ //# sourceMappingURL=review-status-A7quS5KJ.js.map
@@ -0,0 +1,3 @@
1
+ import { b as setReviewStatusSync, c as getReviewStatusSync, d as loadReviewStatuses, l as init_review_status, m as mergeGateEligibility, n as clearReviewStatus, p as markWorkspaceStuck } from "./review-status-A7quS5KJ.js";
2
+ init_review_status();
3
+ export { clearReviewStatus, getReviewStatusSync, loadReviewStatuses, markWorkspaceStuck, mergeGateEligibility, setReviewStatusSync };
@@ -1,5 +1,5 @@
1
- import { $n as resolveProjectFromIssueSync, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
2
- import { j as listSessionNames, w as init_tmux } from "./tmux-y1blSxks.js";
1
+ import { Tn as init_projects, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
2
+ import { M as listSessionNames, w as init_tmux } from "./tmux-ftABRAmc.js";
3
3
  import { Data, Effect } from "effect";
4
4
  import { existsSync } from "fs";
5
5
  import { join } from "path";
@@ -124,4 +124,4 @@ const enrichReviewStatus = (issueId, status) => Effect.tryPromise({
124
124
  //#endregion
125
125
  export { enrichReviewStatusFromSessions as n, enrichReviewStatus as t };
126
126
 
127
- //# sourceMappingURL=review-status-enrichment-DtDRGpst.js.map
127
+ //# sourceMappingURL=review-status-enrichment-tbOn_A_u.js.map
@@ -0,0 +1,39 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ //#region ../../lib/cloister/review-status-source.ts
3
+ function isRoleTerminal(role, status) {
4
+ switch (role) {
5
+ case "review": return TERMINAL_REVIEW.has(status.reviewStatus ?? "");
6
+ case "test": return TERMINAL_TEST.has(status.testStatus ?? "");
7
+ case "ship": return status.readyForMerge === true || status.mergeStatus === "merged" || status.mergeStatus === "failed";
8
+ }
9
+ }
10
+ function classifyAdvancingSessionLifecycle(role, status, tmuxActive) {
11
+ if (!status || !tmuxActive) return "unknown";
12
+ if (status.mergeStatus === "merged") return "orphaned";
13
+ return isRoleTerminal(role, status) ? "warm" : "active";
14
+ }
15
+ function registerReviewStatusMapReader(fn) {
16
+ reader = fn;
17
+ }
18
+ function readReviewStatusMap() {
19
+ if (!reader) return null;
20
+ try {
21
+ return reader();
22
+ } catch {
23
+ return null;
24
+ }
25
+ }
26
+ var TERMINAL_REVIEW, TERMINAL_TEST, reader;
27
+ var init_review_status_source = __esmMin((() => {
28
+ TERMINAL_REVIEW = new Set([
29
+ "passed",
30
+ "failed",
31
+ "blocked"
32
+ ]);
33
+ TERMINAL_TEST = new Set(["passed", "failed"]);
34
+ reader = null;
35
+ }));
36
+ //#endregion
37
+ export { registerReviewStatusMapReader as a, readReviewStatusMap as i, init_review_status_source as n, isRoleTerminal as r, classifyAdvancingSessionLifecycle as t };
38
+
39
+ //# sourceMappingURL=review-status-source-CxuEjLGg.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-DN2wSxle.js";
2
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CzaSOgul.js";
3
3
  import { Effect } from "effect";
4
4
  //#region ../../lib/review-status-normalize.ts
5
5
  function normalizeReviewStatusSync(status) {
@@ -291,4 +291,4 @@ var init_review_status_sync = __esmMin((() => {
291
291
  //#endregion
292
292
  export { getMergeBlockerReconcileCandidatesSync as a, init_review_status_sync as c, init_review_status_normalize as d, normalizeReviewStatusSync as f, getMergeBlockerReconcileCandidates as i, markWorkspaceStuck as l, deleteReviewStatus as n, getReviewStatusFromDbSync as o, getAllReviewStatusesFromDb as r, getReviewStatusesFromDb as s, clearWorkspaceStuck as t, upsertReviewStatusSync as u };
293
293
 
294
- //# sourceMappingURL=review-status-sync-jnLgd04F.js.map
294
+ //# sourceMappingURL=review-status-sync-BhSQ0d0l.js.map
@@ -1,3 +1,3 @@
1
- import { c as init_review_status_sync, t as clearWorkspaceStuck } from "./review-status-sync-jnLgd04F.js";
1
+ import { c as init_review_status_sync, t as clearWorkspaceStuck } from "./review-status-sync-BhSQ0d0l.js";
2
2
  init_review_status_sync();
3
3
  export { clearWorkspaceStuck };
@@ -1,3 +1,3 @@
1
- import { n as init_review_verdict_feedback, t as deliverReviewVerdictFeedback } from "./review-verdict-feedback-CMsIpTpy.js";
1
+ import { n as init_review_verdict_feedback, t as deliverReviewVerdictFeedback } from "./review-verdict-feedback-CTRNtzXO.js";
2
2
  init_review_verdict_feedback();
3
3
  export { deliverReviewVerdictFeedback };
@@ -1,10 +1,10 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { $n as resolveProjectFromIssueSync, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
3
- import { c as init_review_status, s as getReviewStatusSync } from "./review-status-CCgPVK1h.js";
4
- import { L as messageAgent, s as init_agents } from "./queries-B5hl7lMQ.js";
5
- import { a as PAN_DIRNAME, p as init_types } from "./types-DqeBMmJN.js";
6
- import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-Wlq5-qgS.js";
7
- import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-Dqik2WTe.js";
2
+ import { Tn as init_projects, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
3
+ import { c as getReviewStatusSync, l as init_review_status } from "./review-status-A7quS5KJ.js";
4
+ import { X as messageAgent, b as init_agents } from "./queries-6d7Cdtm7.js";
5
+ import { a as PAN_DIRNAME, p as init_types } from "./types-hraoaQIp.js";
6
+ import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-C9b6ccN1.js";
7
+ import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-CPS15Vte.js";
8
8
  import { join } from "node:path";
9
9
  import { Effect } from "effect";
10
10
  import { existsSync } from "node:fs";
@@ -144,4 +144,4 @@ var init_review_verdict_feedback = __esmMin((() => {
144
144
  //#endregion
145
145
  export { init_review_verdict_feedback as n, postPrComment as r, deliverReviewVerdictFeedback as t };
146
146
 
147
- //# sourceMappingURL=review-verdict-feedback-CMsIpTpy.js.map
147
+ //# sourceMappingURL=review-verdict-feedback-CTRNtzXO.js.map
@@ -1,3 +1,3 @@
1
- import { n as commitStatusRollup, r as init_rollup, s as synthesizeStatusRollup } from "./rollup-CLj_AK9f.js";
1
+ import { n as commitStatusRollup, r as init_rollup, s as synthesizeStatusRollup } from "./rollup-WA0VD-Rr.js";
2
2
  init_rollup();
3
3
  export { commitStatusRollup, synthesizeStatusRollup };
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { S as MemoryStatus, t as init_src } from "./src-Dpq1yFIl.js";
3
- import { a as resolveArchiveDir, f as resolveStatusFile, i as init_paths, l as resolveObservationsFile, n as ensureDir, r as ensureParentDir, u as resolvePendingDir } from "./paths-FP8v3lTz.js";
4
- import { i as init_settings, n as getMemoryRollupPendingThreshold } from "./settings-DP2OYLXL.js";
5
- import { i as updateMemoryHealth, n as extractWithProviderPolicy, r as init_health, t as init_providers } from "./providers-d3pwXGVE.js";
2
+ import { T as MemoryStatus, t as init_src } from "./src-U7_kTPEE.js";
3
+ import { a as resolveArchiveDir, f as resolveStatusFile, i as init_paths, l as resolveObservationsFile, n as ensureDir, r as ensureParentDir, u as resolvePendingDir } from "./paths-_zEts6wc.js";
4
+ import { i as init_settings, n as getMemoryRollupPendingThreshold } from "./settings-BZ5m1UCl.js";
5
+ import { i as updateMemoryHealth, n as extractWithProviderPolicy, r as init_health, t as init_providers } from "./providers-DV7ec8l7.js";
6
6
  import { Result, Schema } from "effect";
7
7
  import { dirname } from "path";
8
8
  import { randomUUID } from "crypto";
@@ -98,8 +98,8 @@ async function enqueueStatusRollupEvent(job) {
98
98
  await configuredStatusRollupProcessor(job);
99
99
  return;
100
100
  }
101
- const { initEventStore } = await import("./event-store-DABarGNz.js");
102
- const { synthesizeStatusRollup, commitStatusRollup } = await import("./rollup-B3kQmNpl.js");
101
+ const { initEventStore } = await import("./event-store-Cr5PQwFC.js");
102
+ const { synthesizeStatusRollup, commitStatusRollup } = await import("./rollup-B53Y81xK.js");
103
103
  await (await initEventStore()).appendAsync({
104
104
  type: "memory.rollup_triggered",
105
105
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -295,7 +295,7 @@ async function clearPendingTurns(projectId, issueId, pendingTurns) {
295
295
  return cleared;
296
296
  }
297
297
  async function emitStatusUpdatedEvent(event) {
298
- const { initEventStore } = await import("./event-store-DABarGNz.js");
298
+ const { initEventStore } = await import("./event-store-Cr5PQwFC.js");
299
299
  await (await initEventStore()).appendAsync({
300
300
  type: "memory.status_updated",
301
301
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -446,4 +446,4 @@ var init_rollup = __esmMin((() => {
446
446
  //#endregion
447
447
  export { readCurrentStatus as a, init_pending as c, readArchivedStatuses as i, maybeTriggerStatusRollup as l, commitStatusRollup as n, readRecentObservations as o, init_rollup as r, synthesizeStatusRollup as s, buildStatusRollupPrompt as t, writePendingTurn as u };
448
448
 
449
- //# sourceMappingURL=rollup-CLj_AK9f.js.map
449
+ //# sourceMappingURL=rollup-WA0VD-Rr.js.map