@overdeck/desktop 0.45.22 → 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 (375) hide show
  1. package/package.json +1 -1
  2. package/server/{acceptance-criteria-BH7ac_1G.js → acceptance-criteria-DOA0KgXx.js} +5 -5
  3. package/server/{advancing-selfheal-cSvXNZLZ.js → advancing-selfheal-BBu6DSNm.js} +6 -6
  4. package/server/{agent-gc-Dj2gncak.js → agent-gc-BV1q_2EV.js} +4 -4
  5. package/server/agent-state-Bg0lhqwj.js +3 -0
  6. package/server/{agent-state-service-CsQ07Pxe.js → agent-state-service-CnzFKSAQ.js} +1 -1
  7. package/server/{agent-state-service-DistflNn.js → agent-state-service-HoK8U4jW.js} +5 -5
  8. package/server/{agents-DXdHmRTC.js → agents-B4Bjbkfv.js} +4 -4
  9. package/server/agents-FlIgQ3ql.js +3 -0
  10. package/server/{archive-planning-BvDuWNMo.js → archive-planning-DYrYojxl.js} +30 -6
  11. package/server/{archive-planning-Cp_DC1j-.js → archive-planning-zkJb3BeM.js} +1 -1
  12. package/server/{artifact-index-jobs-CDBFL4OU.js → artifact-index-jobs-C-xy7Z5v.js} +2 -2
  13. package/server/{backlog-auto-trigger-DmA1IbYf.js → backlog-auto-trigger-GtG71X8H.js} +3 -3
  14. package/server/{behavior-CGj16clS.js → behavior-B_-4EKF3.js} +2 -2
  15. package/server/{briefing-freshness-C12WgkaB.js → briefing-freshness-DWdW7vUm.js} +2 -2
  16. package/server/{build-info-NU3KbXYw.js → build-info-BT096lEl.js} +3 -3
  17. package/server/{build-info-BRpqQvNd.js → build-info-DgTqZkL5.js} +1 -1
  18. package/server/{checkpoint-manager-rOgT98WY.js → checkpoint-manager-B7Bt29J0.js} +1 -1
  19. package/server/{checkpoint-manager-CTPjAmtH.js → checkpoint-manager-DDqcGyu8.js} +2 -2
  20. package/server/checkpoint-worker.js +1 -1
  21. package/server/{checkpoints-BJum14fs.js → checkpoints-C-AXLfYT.js} +2 -2
  22. package/server/{checkpoints-B5jFNi2G.js → checkpoints-CpgCjAlN.js} +1 -1
  23. package/server/{claude-hooks-provision-BhwWK-TQ.js → claude-hooks-provision-C8wdRnN1.js} +1 -1
  24. package/server/{claude-hooks-provision-D7p5WcKZ.js → claude-hooks-provision-but-_qGY.js} +2 -2
  25. package/server/{claude-permissions-nSFKH78M.js → claude-permissions-H_5wHQZQ.js} +2 -2
  26. package/server/{claude-settings-overlay-DHBwjS1X.js → claude-settings-overlay-BTENVmYf.js} +1 -1
  27. package/server/{claude-settings-overlay-BI_UIke0.js → claude-settings-overlay-CbSz0Dvb.js} +2 -2
  28. package/server/cli-BsVIHwzC.js +3 -0
  29. package/server/{cli-CbKNkFE5.js → cli-vBeXbPrq.js} +9 -9
  30. package/server/{cliproxy-Brf_5MuG.js → cliproxy-Bgb2XCqi.js} +2 -2
  31. package/server/{cliproxy-bONZDBbC.js → cliproxy-DW0V86F8.js} +1 -1
  32. package/server/{close-issue-CxReRxIc.js → close-issue-Dn_4c4G8.js} +5 -5
  33. package/server/{closed-issue-reaper-DXP2Xyv3.js → closed-issue-reaper-CWpY2uBw.js} +1 -1
  34. package/server/{closed-issue-reaper-CQ3kqha7.js → closed-issue-reaper-hANY_ehE.js} +9 -9
  35. package/server/codex-Dg7Is5yb.js +3 -0
  36. package/server/{codex-CbmztVcc.js → codex-TmSi-yTv.js} +27 -8
  37. package/server/{codex-parser-jl8AeAmB.js → codex-parser-C4gSH-IR.js} +2 -2
  38. package/server/{config-q4Gvd8dq.js → config-CCvjQf27.js} +2 -2
  39. package/server/{config-BJKocXKd.js → config-DUIhMN_T.js} +1 -1
  40. package/server/{config-DeTsoZdR.js → config-DjLOdbgT.js} +2 -2
  41. package/server/{config-yaml-ig8Nwtiw.js → config-yaml-DvyMuOle.js} +55 -186
  42. package/server/{conflict-gate-CHU9K1vU.js → conflict-gate-BSJkNTdp.js} +1 -1
  43. package/server/{conflict-gate-CFqPVxEg.js → conflict-gate-CmrYpa47.js} +3 -3
  44. package/server/{context-layers-DlQKkHH2.js → context-layers-B3Nt58jl.js} +2 -2
  45. package/server/{context-layers-15gDOk20.js → context-layers-ZYFcWiyc.js} +3 -3
  46. package/server/{control-settings-D_odMIaC.js → control-settings-aP1ANIlI.js} +4 -4
  47. package/server/{conversation-compaction-B6YSRLda.js → conversation-compaction-CNbTLB86.js} +8 -8
  48. package/server/{conversation-compaction-CN4-5YYt.js → conversation-compaction-DiG5zWQq.js} +1 -1
  49. package/server/{conversation-service-C3avRVEr.js → conversation-service-Du-MTNpJ.js} +6 -6
  50. package/server/{conversation-service-Dq33SYEj.js → conversation-service-Up7FEzIC.js} +1 -1
  51. package/server/{conversations-H9if0bCQ.js → conversations-6mPANqvL.js} +1 -1
  52. package/server/{conversations-bYpM9-kZ.js → conversations-DbOs1e9Q.js} +4 -4
  53. package/server/{cost-wH46-WsJ.js → cost-CW4WSe72.js} +3 -3
  54. package/server/{cost-Codk1pc2.js → cost-Ca0YTWDw.js} +18 -2
  55. package/server/{cost-sync-D_cre6WM.js → cost-sync-C0VdGme1.js} +3 -3
  56. package/server/{dag-CJpgf9A3.js → dag-CdOjJVDT.js} +9 -9
  57. package/server/{dangerous-git-ops-D6AF-Hg_.js → dangerous-git-ops-CT-IypG3.js} +1 -1
  58. package/server/dashboard-db-worker.js +7 -7
  59. package/server/{deacon-B8HbQdqU.js → deacon-DYSEJb48.js} +3 -3
  60. package/server/{deacon-nudge-log-D6K9K-rE.js → deacon-nudge-log-Bjg8U4Y9.js} +3 -3
  61. package/server/{deacon-CkT_kznS.js → deacon-pRnyD5w9.js} +266 -577
  62. package/server/deacon-swarm-9jRLS5Ke.js +2 -0
  63. package/server/{deacon-swarm-BryRr6AO.js → deacon-swarm-DftYRDo8.js} +17 -17
  64. package/server/deacon.js +8 -8
  65. package/server/{deploy-patrol-1IrZxicY.js → deploy-patrol-Bjsho_ha.js} +136 -19
  66. package/server/{deploy-window-7ZYHh7Zp.js → deploy-window-CM6W1-c6.js} +1 -1
  67. package/server/{deploy-window-wDf4UgHt.js → deploy-window-DeP_OIRk.js} +77 -10
  68. package/server/{dev-supervisor-C7p9kEpc.js → dev-supervisor-BpMoHlkR.js} +2 -2
  69. package/server/{devcontainer-renderer-CNmQy0pL.js → devcontainer-renderer-CtUgrVKW.js} +3 -3
  70. package/server/dist-Bd3vn0Hw.js +3 -0
  71. package/server/{dist-D-Ed5yVw.js → dist-DyRx4cI7.js} +1 -1
  72. package/server/{docker-BCZ89M9X.js → docker-BK7HIcBj.js} +2 -2
  73. package/server/{dod-DbJLYcHv.js → dod-BrSfUHm0.js} +1 -1
  74. package/server/{ensure-devcontainer-Cs6W9Yzj.js → ensure-devcontainer-DRqaAkBR.js} +1 -1
  75. package/server/{ensure-devcontainer-V5JWaAva.js → ensure-devcontainer-DseivYEy.js} +4 -4
  76. package/server/{esm-shims-dTeNdq7X.js → esm-shims-CbI3BVkl.js} +1 -1
  77. package/server/{event-store-CpBGsO6_.js → event-store-Cr5PQwFC.js} +1 -1
  78. package/server/{event-store-TnWdydfB.js → event-store-tdiY5eDZ.js} +3 -3
  79. package/server/{events-DSUdR-04.js → events-CC1dgUpx.js} +3 -3
  80. package/server/{events-Dsuv6qyB.js → events-CvvGK6LT.js} +1 -1
  81. package/server/{factory-BMrK4TrE.js → factory-CynerjXO.js} +50 -13
  82. package/server/{feature-registry-population-B-CI9hgE.js → feature-registry-population-B0pmAz0a.js} +4 -4
  83. package/server/{feature-registry-storage-B972ph_A.js → feature-registry-storage-_wUBRD3J.js} +2 -2
  84. package/server/{features-Bc-Bmiye.js → features-Dhxz-wLc.js} +2 -2
  85. package/server/{feedback-target-DZ-iAnAa.js → feedback-target-CPS15Vte.js} +7 -7
  86. package/server/{feedback-target-DS6NUuSs.js → feedback-target-iygZwmMc.js} +1 -1
  87. package/server/{feedback-writer-BXP6g75N.js → feedback-writer-C9b6ccN1.js} +6 -5
  88. package/server/{feedback-writer-Bx5z11mF.js → feedback-writer-qmiMbqTZ.js} +1 -1
  89. package/server/{flywheel-Ctr5uuvo.js → flywheel-DMCUzDWg.js} +1 -1
  90. package/server/{flywheel-COR0mbRI.js → flywheel-DSSpWmqF.js} +13 -13
  91. package/server/{flywheel-6WHU4O7A.js → flywheel-DcBkQvgE.js} +14 -14
  92. package/server/{flywheel-merge-order-CNKAY489.js → flywheel-merge-order-C-6zRLvM.js} +1 -1
  93. package/server/{flywheel-merge-order-CTgHeg-W.js → flywheel-merge-order-DxbQKE1d.js} +8 -8
  94. package/server/forge-B-ZWyTRm.js +2 -0
  95. package/server/{forge-B1S_KZv4.js → forge-Ch9gCFod.js} +2 -2
  96. package/server/{from-DpwQ-sc3.js → from-CJ_aH5jD.js} +1 -1
  97. package/server/{fts-db-DmAcuCkV.js → fts-db-CKgg0VKg.js} +2 -2
  98. package/server/{fts-operations-7d_RkmWp.js → fts-operations-BrL_VTRr.js} +2 -2
  99. package/server/{git-utils-Cc3FHDKd.js → git-utils-BVa07a4a.js} +2 -2
  100. package/server/{git-utils-CsKGnzFA.js → git-utils-Dry_Ka_D.js} +1 -1
  101. package/server/{github-app-CDPtGF7J.js → github-app-CMBdIFBQ.js} +11 -3
  102. package/server/{github-app-CU14oYzP.js → github-app-CPfoFAdV.js} +1 -1
  103. package/server/{github-client-XjTJbBm7.js → github-client--XVlDpwM.js} +2 -2
  104. package/server/{github-client-CwBZZ3t7.js → github-client-B4QsdE-X.js} +1 -1
  105. package/server/{github-pr-lookup-CFGeVhqv.js → github-pr-lookup-BRbDW-qk.js} +2 -2
  106. package/server/{harness-binary-B2CTcD84.js → harness-binary-CVio2m-u.js} +1 -1
  107. package/server/{harness-resolve-D5FVQTmy.js → harness-resolve-qHJBhy3Z.js} +4 -4
  108. package/server/{health-events-DREeevle.js → health-events-C9B8y1Hm.js} +2 -2
  109. package/server/{health-events-C1whmd58.js → health-events-CpfvuVmm.js} +1 -1
  110. package/server/{hooks-yxRsjk-z.js → hooks-DUXw8A0-.js} +2 -2
  111. package/server/{hooks-B-HItBiS.js → hooks-ltecuFqZ.js} +1 -1
  112. package/server/{hume-Dz_OymXE.js → hume-BEq0bUDg.js} +2 -2
  113. package/server/hume-B_DbflNM.js +3 -0
  114. package/server/{idle-stack-reaper-DrCv0OAG.js → idle-stack-reaper-D7w9t3fE.js} +1 -1
  115. package/server/{idle-stack-reaper-Yf34xXxY.js → idle-stack-reaper-w1ISSlhs.js} +2 -2
  116. package/server/{in-flight-guard-BoWm66Kh.js → in-flight-guard-aQ1IxeI3.js} +2 -2
  117. package/server/{infra-D4iNWMA5.js → infra-CzaSOgul.js} +4 -4
  118. package/server/{injection-D7T75Pye.js → injection-DZ0PfYa4.js} +7 -7
  119. package/server/{injection-BVNa4MQW.js → injection-oNZeoDhL.js} +1 -1
  120. package/server/{inspect-agent-BXCgNeZ4.js → inspect-agent-DJKLWcVT.js} +12 -12
  121. package/server/inspect-agent-ch-F-5Ci.js +2 -0
  122. package/server/{internal-token-CXsfxslp.js → internal-token-Bb4XeV2x.js} +2 -2
  123. package/server/{internal-token-C9DdEOKY.js → internal-token-DXdfprGr.js} +1 -1
  124. package/server/{io-DQR9PMgS.js → io-B3_AHDfr.js} +160 -184
  125. package/server/{issue-closed-DtmJM0D0.js → issue-closed-zhdvQicO.js} +7 -7
  126. package/server/{issue-lifecycle-CeyW_HoD.js → issue-lifecycle-CreaCkjW.js} +22 -22
  127. package/server/{issue-lifecycle-8PSS9Anq.js → issue-lifecycle-Dy4vd0Oa.js} +1 -1
  128. package/server/{issue-service-singleton-D_RVYBuL.js → issue-service-singleton-B5ushCvE.js} +8 -8
  129. package/server/{issue-service-singleton-DBZabEl7.js → issue-service-singleton-DabvBWUp.js} +1 -1
  130. package/server/{issues-pDW9VUNz.js → issues-B6ToV6x1.js} +2 -2
  131. package/server/{jsonl-parser-C3HVNR5d.js → jsonl-parser-Dhflo1SH.js} +3 -3
  132. package/server/{label-cleanup-DPwiZlWo.js → label-cleanup-BKPJm4Hv.js} +3 -3
  133. package/server/{label-reconciler-Df1ZduPH.js → label-reconciler-DdWbHEBu.js} +4 -4
  134. package/server/{launcher-generator-COgR2By1.js → launcher-generator-CHVm7bGT.js} +10 -9
  135. package/server/{layers-Cp1To4L8.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-taIb0PoH.js → lifecycle-io-D8iNBcux.js} +37 -37
  139. package/server/{lifecycle-CtPDcZ9u.js → lifecycle-sycO16hj.js} +6 -6
  140. package/server/{linear-client-DsFkIxee.js → linear-client-D4zqMnX7.js} +2 -2
  141. package/server/{linear-client-YwZMDIwQ.js → linear-client-DqhDQO9k.js} +1 -1
  142. package/server/memory-fts-worker.js +1 -1
  143. package/server/{merge-C1t-bspg.js → merge-C_ZEhbqI.js} +3 -3
  144. package/server/{merge-BwsyNRJV.js → merge-DK23JEdS.js} +1 -1
  145. package/server/{merge-agent-B-SnXOoc.js → merge-agent-BQM3a8z5.js} +1 -1
  146. package/server/{merge-agent-DDiIjzk-.js → merge-agent-XrB80vfT.js} +28 -28
  147. package/server/{merge-batch-Byt-QnEl.js → merge-batch-Bwoyr8Je.js} +1 -1
  148. package/server/{merge-blockers-BYjeXrVN.js → merge-blockers-BsFjGrQ8.js} +2 -2
  149. package/server/merge-ops-DlB1IM0Y.js +2 -0
  150. package/server/{merge-rebase-Cm6fXaZN.js → merge-rebase-C1KIVr0s.js} +2 -2
  151. package/server/{merge-set-DiISXcC-.js → merge-set-DLz0MkGT.js} +3 -3
  152. package/server/{merge-set-6LEglm6o.js → merge-set-DnSYdBEp.js} +1 -1
  153. package/server/{merge-sync-Do8_q32h.js → merge-sync-DZ9dojJn.js} +2 -2
  154. package/server/{merge-sync-B95_4in_.js → merge-sync-SSv3E-pl.js} +1 -1
  155. package/server/{merge-train-CKana8EH.js → merge-train-DxDfBTjr.js} +3 -3
  156. package/server/{merge-train-deps-BgmqwIfA.js → merge-train-deps-CyYQUksx.js} +4 -4
  157. package/server/{merge-verification-CqnUzGEK.js → merge-verification-CSizH3HY.js} +4 -4
  158. package/server/{multipart-parser-tdOQDJ3o.js → multipart-parser-Dt8YPN5S.js} +2 -2
  159. package/server/{no-resume-mode-BWOSZjWd.js → no-resume-mode-Cx3K0hHi.js} +11 -8
  160. package/server/node_modules/.package-lock.json +1 -1
  161. package/server/{orphan-proposed-reconciler-DSvsJ5M7.js → orphan-proposed-reconciler-BTkDrl4R.js} +1 -1
  162. package/server/{orphan-proposed-reconciler-xklgvNA7.js → orphan-proposed-reconciler-neK8dHQk.js} +15 -13
  163. package/server/package-lock.json +2 -2
  164. package/server/package.json +1 -1
  165. package/server/{pan-dir-DOcf6ug3.js → pan-dir-DeVUgwA7.js} +78 -58
  166. package/server/{paths-DooHpt9p.js → paths-_zEts6wc.js} +2 -2
  167. package/server/{pickup-CaskQ7j6.js → pickup-Dd0Znxxy.js} +1 -1
  168. package/server/{pipeline-membership-1LGRjo-k.js → pipeline-membership-0HaEGDlH.js} +186 -67
  169. package/server/{pipeline-notifier-CZsrU_nj.js → pipeline-notifier-6iCJplFZ.js} +1 -1
  170. package/server/{pipeline-notifier-B6FVsYF9.js → pipeline-notifier-D0ykk59O.js} +2 -2
  171. package/server/{project-pipelines-CtNG_rvs.js → project-pipelines-2sK1apsO.js} +2 -2
  172. package/server/projects-9SkRpES9.js +3 -0
  173. package/server/{prompts-EvhMeeHG.js → prompts-Dp4Tpk39.js} +2 -2
  174. package/server/{providers-DNSQqy2V.js → providers-DKkBXhxU.js} +1 -1
  175. package/server/{providers-BDDPULlp.js → providers-DV7ec8l7.js} +7 -7
  176. package/server/public/assets/{chunk-BO2N2NFS-sym_ufXe.js → chunk-BO2N2NFS-CltymLRg.js} +4 -4
  177. package/server/public/assets/{diagram-OG6HWLK6-CQJPBNBu.js → diagram-OG6HWLK6-D2f6pjgA.js} +1 -1
  178. package/server/public/assets/{dist-Bio7THQU.js → dist-BWR4qFiV.js} +1 -1
  179. package/server/public/assets/{dist-DukGS2YZ.js → dist-DEmlBBNQ.js} +3 -3
  180. package/server/public/assets/{ganttDiagram-6RSMTGT7-D4lWwte3.js → ganttDiagram-6RSMTGT7-DnfiViPK.js} +1 -1
  181. package/server/public/assets/{highlighted-body-OFNGDK62-CaLboCt5.js → highlighted-body-OFNGDK62-B8Wrmj9H.js} +1 -1
  182. package/server/public/assets/index-CUr1xv8w.css +1 -0
  183. package/server/public/assets/{index-Bwejq-5s.js → index-CsSuZQBI.js} +145 -144
  184. package/server/public/assets/{linear-qUWmMZ-c.js → linear-C9zFQpkX.js} +1 -1
  185. package/server/public/assets/mermaid-GHXKKRXX-BUAB8hqt.js +1 -0
  186. package/server/public/assets/{pieDiagram-4H26LBE5-C4zYulEm.js → pieDiagram-4H26LBE5-lR8H7Yjd.js} +1 -1
  187. package/server/public/assets/{prod-C8VtLuWC.js → prod-B1jCQihw.js} +4 -4
  188. package/server/public/assets/{quadrantDiagram-W4KKPZXB-qP04zyZC.js → quadrantDiagram-W4KKPZXB-CVQ2guem.js} +1 -1
  189. package/server/public/assets/{sankeyDiagram-5OEKKPKP-eMPTX_cG.js → sankeyDiagram-5OEKKPKP-eD1RB4gm.js} +1 -1
  190. package/server/public/assets/{xychartDiagram-2RQKCTM6-Dme1PIt6.js → xychartDiagram-2RQKCTM6-ChEC6dQn.js} +1 -1
  191. package/server/public/index.html +2 -2
  192. package/server/{pull-requests-By_BteaL.js → pull-requests--Ib2jTgy.js} +1 -1
  193. package/server/{pull-requests-8z2N1UOV.js → pull-requests-CXIhdCYD.js} +13 -11
  194. package/server/{queries-ZABd5aXP.js → queries-6d7Cdtm7.js} +693 -104
  195. package/server/{rally-i_goYmiA.js → rally-B708-nZn.js} +3 -3
  196. package/server/{rally-api-DqKqIMNR.js → rally-api-nY0ZANw3.js} +2 -2
  197. package/server/{rally-api-xHazRk0d.js → rally-api-yjQ0TfHd.js} +1 -1
  198. package/server/{rally-client-COYz1vYR.js → rally-client-B1EJhfV0.js} +4 -4
  199. package/server/{rally-client-CGWEHaPd.js → rally-client-CULK2XAY.js} +1 -1
  200. package/server/rally-njs_mJrt.js +3 -0
  201. package/server/{reap-terminal-sessions-CaMkFOIH.js → reap-terminal-sessions-MWnqdLCJ.js} +1 -1
  202. package/server/{reap-terminal-sessions-DG9eiMVz.js → reap-terminal-sessions-N3BTkmX_.js} +1 -1
  203. package/server/{rebuild-stack-JUm0jqYP.js → rebuild-stack-Dp4eLkt4.js} +6 -6
  204. package/server/{rebuild-stack-CKjJAI8L.js → rebuild-stack-kA7XngID.js} +1 -1
  205. package/server/{reconstruct-cache-wU79aCee.js → reconstruct-cache-uWbZfjms.js} +6 -6
  206. package/server/record-t6V-3Dcj.js +3 -0
  207. package/server/{record-update-D3N6WMFR.js → record-update-DACtKh6_.js} +1 -1
  208. package/server/record-update-Dq0t2uBG.js +310 -0
  209. package/server/{recovery-trip-DkzJSej9.js → recovery-trip-BJtIQuag.js} +2 -2
  210. package/server/{release-engine-DMINVN8S.js → release-engine-DZpmGGzb.js} +5 -5
  211. package/server/{release-set-DeUSOEHy.js → release-set-hnXd_kga.js} +3 -3
  212. package/server/{remote-Dr5kGYSZ.js → remote-4tiENDaI.js} +3 -3
  213. package/server/{remote-b-c5bOce.js → remote-Br-ZWVIP.js} +3 -3
  214. package/server/{remote-agents-D6O_zETW.js → remote-agents-CRCg1L4H.js} +1 -1
  215. package/server/{remote-agents-Ct_WOyke.js → remote-agents-nmty1mLu.js} +6 -6
  216. package/server/{remote-completion-Dca3hAaa.js → remote-completion-BbWNd10K.js} +12 -12
  217. package/server/resume-CcKqnTvE.js +3 -0
  218. package/server/{review-agent-CCum8sGe.js → review-agent-DJRO8EG8.js} +1 -1
  219. package/server/{review-agent-CThvgK2r.js → review-agent-sKkE1FEL.js} +22 -22
  220. package/server/{review-artifacts-CXywD0F2.js → review-artifacts-BLbSC4ke.js} +5 -5
  221. package/server/{review-context-OYfKUprb.js → review-context-BgX3lcCx.js} +8 -8
  222. package/server/{review-status-DFRjDFef.js → review-status-A7quS5KJ.js} +54 -21
  223. package/server/review-status-C6n6-9f_.js +3 -0
  224. package/server/{review-status-enrichment-crNAtIpL.js → review-status-enrichment-tbOn_A_u.js} +3 -3
  225. package/server/{review-status-sync-DpAMD_WO.js → review-status-sync-BhSQ0d0l.js} +2 -2
  226. package/server/{review-status-sync-D60PJWNL.js → review-status-sync-To3-iS-N.js} +1 -1
  227. package/server/{review-verdict-feedback-JImjut0z.js → review-verdict-feedback-C1Kg8n7t.js} +1 -1
  228. package/server/{review-verdict-feedback-CpUZl5aE.js → review-verdict-feedback-CTRNtzXO.js} +6 -6
  229. package/server/{rollup-CZ02qgxk.js → rollup-B53Y81xK.js} +1 -1
  230. package/server/{rollup-SyuF09e4.js → rollup-WA0VD-Rr.js} +8 -8
  231. package/server/{scanner-Br0Z5S6R.js → scanner-D2743cp8.js} +11 -7
  232. package/server/{sequence-io-fxU0DlwW.js → sequence-io-Cg0zYj_E.js} +4 -4
  233. package/server/{sequencer-agent-B5YC5XVP.js → sequencer-agent-BGY8gjg-.js} +5 -5
  234. package/server/server.js +941 -752
  235. package/server/{service-Bagb90KZ.js → service-DCpB_SGd.js} +53 -53
  236. package/server/{session-fork-BqQxd-V6.js → session-fork-BQ8_6H32.js} +2 -2
  237. package/server/{session-history-XdS0JKp3.js → session-history-CVZDpS3c.js} +4 -4
  238. package/server/{settings-BNbocWOg.js → settings-BZ5m1UCl.js} +3 -3
  239. package/server/settings-D0OSwos5.js +2 -0
  240. package/server/{settings-uLc6DEYI.js → settings-ylxwqwQG.js} +2 -2
  241. package/server/{shadow-engineering-D4X_s3fA.js → shadow-engineering-BlxG6Xye.js} +2 -2
  242. package/server/{shadow-state-CbvsN3qG.js → shadow-state-C2_epgx2.js} +1 -1
  243. package/server/{shadow-state-C_NkP-sa.js → shadow-state-Dh-HzF2J.js} +2 -2
  244. package/server/{shadow-utils-CYMRPeRT.js → shadow-utils-4bvjn9b3.js} +2 -2
  245. package/server/{ship-log-__QtAFXG.js → ship-log-ClSMIzZX.js} +1 -1
  246. package/server/{smart-compaction-jdMkG1vo.js → smart-compaction-CHIxLr_d.js} +1 -1
  247. package/server/{smart-compaction-CLZOWin1.js → smart-compaction-r4pHQBIr.js} +7 -7
  248. package/server/{spawn-planning-session-D5OXo8pT.js → spawn-planning-session-DWAorh2B.js} +22 -21
  249. package/server/{spawn-planning-session-8D6mE033.js → spawn-planning-session-KC_UduxD.js} +1 -1
  250. package/server/{specialist-completion-CqmduO92.js → specialist-completion-BXhav38U.js} +1 -1
  251. package/server/{specialist-context-CJ-QjFR-.js → specialist-context-DtrYvGJ-.js} +5 -5
  252. package/server/{specialist-handoff-logger-Dnjlwt7g.js → specialist-handoff-logger-C45ouoZ6.js} +2 -2
  253. package/server/{specialist-logs-CQnKzuZs.js → specialist-logs-DJ3RzKxW.js} +3 -3
  254. package/server/{specialists-D0gGXMZx.js → specialists-D5fRZXmN.js} +1 -1
  255. package/server/specialists-DVj0hvaL.js +3 -0
  256. package/server/{specialists-CwZHb5cb.js → specialists-DyFeedjn.js} +66 -76
  257. package/server/{specialists-Bg9v4z3F.js → specialists-JVO00bs7.js} +340 -214
  258. package/server/specs-nN45DG2X.js +3 -0
  259. package/server/{src-BMMoA_ba.js → src-CG9mCkP6.js} +6 -6
  260. package/server/{src-Bqdtd6po.js → src-CMTQGyCK.js} +3 -3
  261. package/server/{src-k039WVYY.js → src-U7_kTPEE.js} +2 -1
  262. package/server/{stack-health-Bd06frFn.js → stack-health-Df0YEZKa.js} +1 -1
  263. package/server/{stack-health-C-ifC7b0.js → stack-health-puygdaMd.js} +2 -2
  264. package/server/{stale-task-claims-L7pJkQFL.js → stale-task-claims-BbFwCTb0.js} +4 -4
  265. package/server/{staleness-BID1BKdr.js → staleness-Bpy41ngS.js} +15 -3
  266. package/server/{staleness-_Tr-GwdA.js → staleness-Cbl_w4Bw.js} +1 -1
  267. package/server/{state-home-CONQvZR0.js → state-home-CIGjwNfJ.js} +96 -44
  268. package/server/{state-migrate-BeBW0KXA.js → state-migrate-Dkzaxvny.js} +12 -3
  269. package/server/{stuck-remediation-CKnIryGT.js → stuck-remediation-CzEov_fq.js} +26 -22
  270. package/server/{stuck-remediation-CsGD5Ksb.js → stuck-remediation-sY_MHHgQ.js} +1 -1
  271. package/server/{substrate-bug-weights-service-CpIZILj9.js → substrate-bug-weights-service-BH66lhm7.js} +3 -3
  272. package/server/{summary-fork-agEMsPSo.js → summary-fork-D8bXjCr7.js} +2 -2
  273. package/server/{summary-fork-bX6ax6X7.js → summary-fork-DHhJIsAL.js} +8 -8
  274. package/server/{supervisor-Ctt4eRYz.js → supervisor-BO-Zk_h-.js} +3 -3
  275. package/server/supervisor-BPy-o1A8.js +2 -0
  276. package/server/{swarm-readiness-DdmJVX7y.js → swarm-readiness-CQ_fwUWF.js} +4 -4
  277. package/server/{system-prerequisites-DSXBvffY.js → system-prerequisites-Bza0ffAh.js} +2 -2
  278. package/server/{teardown-workspace-DDCf5n-a.js → teardown-workspace-CEgauF4U.js} +15 -15
  279. package/server/{test-agent-queue-BJZ9Nfcc.js → test-agent-queue-DXDt0Xa-.js} +7 -7
  280. package/server/{test-verdict-Cp5tljlJ.js → test-verdict-CmUBK5cT.js} +1 -1
  281. package/server/{test-verdict-D_-sXIz_.js → test-verdict-DFjjIHR5.js} +1 -1
  282. package/server/{tldr-daemon-BQFmmFp0.js → tldr-daemon-BDtLOIlO.js} +2 -2
  283. package/server/{tldr-daemon-B8_oT5gx.js → tldr-daemon-DL566HbH.js} +1 -1
  284. package/server/tmux-DoThH6aj.js +3 -0
  285. package/server/{tmux-L5LgvGLp.js → tmux-ftABRAmc.js} +76 -44
  286. package/server/{token-BkQLy4yS.js → token-CsOhvw42.js} +2 -2
  287. package/server/{token-util-DI8sGlmF.js → token-util-CTmczIfW.js} +1 -1
  288. package/server/token-util-DrHg8abn.js +3 -0
  289. package/server/{tracker-config-DdT-nUAM.js → tracker-config-B4itFzDo.js} +2 -2
  290. package/server/{tracker-utils-DV3h1FYG.js → tracker-utils-BePq_oj-.js} +1 -1
  291. package/server/{tracker-utils-CawsPSS2.js → tracker-utils-tnxxqROg.js} +2 -2
  292. package/server/{traefik-connect-C6mJckNs.js → traefik-connect-m73vGebA.js} +1 -1
  293. package/server/{tunnel-IdK1iTHx.js → tunnel-B2vxjx_b.js} +3 -3
  294. package/server/{tunnel-BIFl98rc.js → tunnel-Cgj-IGIl.js} +1 -1
  295. package/server/{types-7-GnJn0t.js → types-BBNjPcqU.js} +1 -1
  296. package/server/{uat-train-j0cPeMSj.js → uat-train-CuEn0t9M.js} +28 -28
  297. package/server/{uat-train-0Ujk8GCv.js → uat-train-cKfM-_WW.js} +1 -1
  298. package/server/{validation-CabEISJT.js → validation-B5JxoPUS.js} +259 -9
  299. package/server/{validation-DcAgXTQp.js → validation-CIi6pnI2.js} +1 -1
  300. package/server/{verification-artifact-BuTA1QbL.js → verification-artifact-BcnIbigL.js} +1 -1
  301. package/server/{verification-artifact-Ck1tefmz.js → verification-artifact-C-lIHfUa.js} +1 -1
  302. package/server/{verification-runner-FiuAZ-H2.js → verification-runner-Br0S_Ous.js} +102 -37
  303. package/server/{verification-runner-DlJezzef.js → verification-runner-CDj4lD4t.js} +1 -1
  304. package/server/{vtt-parser-BnRsYzcz.js → vtt-parser-DKpNNW5i.js} +1 -1
  305. package/server/{work-agent-prompt-DLthEPAq.js → work-agent-prompt-Yb2bd3Fq.js} +13 -13
  306. package/server/{workflows-BZNNYkGC.js → workflows-C9WmILql.js} +39 -77
  307. package/server/workflows-D90rMOya.js +2 -0
  308. package/server/{workspace-D9ppycdg.js → workspace-BVl4rihN.js} +3 -3
  309. package/server/{workspace-3IC-UkAi.js → workspace-DuUdndHe.js} +1 -1
  310. package/server/{workspace-config-Bigl_-Lk.js → workspace-config-cEGcO6UT.js} +1 -1
  311. package/server/{workspace-manager-B1WOfKvB.js → workspace-manager-ZTdJAy9M.js} +1 -1
  312. package/server/{workspace-manager-ClkCIWTe.js → workspace-manager-hLUv3ADC.js} +22 -15
  313. package/server/{workspace-metadata-tiSRIWJP.js → workspace-metadata-CskwzzhL.js} +2 -2
  314. package/server/{workspace-metadata-BE0efUv_.js → workspace-metadata-DNpMixRq.js} +1 -1
  315. package/server/{workspaces-CFPcL0vl.js → workspaces-hWvy9eKs.js} +275 -109
  316. package/sync-sources/agents/pan-inspect-agent.md +1 -1
  317. package/sync-sources/agents/pan-merge-agent.md +1 -1
  318. package/sync-sources/agents/pan-planning-agent.md +4 -4
  319. package/sync-sources/agents/pan-work-agent.md +1 -1
  320. package/sync-sources/dev-skills/pan-commit/SKILL.md +1 -1
  321. package/sync-sources/dev-skills/test-specialist-workflow/SKILL.md +1 -1
  322. package/sync-sources/hooks/record-cost-event.js +363 -71
  323. package/sync-sources/hooks/session-start-hook +7 -0
  324. package/sync-sources/hooks/work-agent-stop-hook +1 -1
  325. package/sync-sources/rules/per-bead-durability.md +1 -1
  326. package/sync-sources/rules/prd-authoring.md +1 -1
  327. package/sync-sources/skills/feature-work/SKILL.md +1 -1
  328. package/sync-sources/skills/pan/SKILL.md +2 -2
  329. package/sync-sources/skills/pan-admin-config/SKILL.md +1 -0
  330. package/sync-sources/skills/pan-approve/SKILL.md +1 -1
  331. package/sync-sources/skills/pan-close/SKILL.md +1 -1
  332. package/sync-sources/skills/pan-doctor/SKILL.md +1 -1
  333. package/sync-sources/skills/pan-new-project/SKILL.md +9 -11
  334. package/sync-sources/skills/pan-oversee/SKILL.md +5 -5
  335. package/sync-sources/skills/pan-plan/SKILL.md +6 -6
  336. package/sync-sources/skills/pan-quickstart/SKILL.md +1 -1
  337. package/sync-sources/skills/pan-recap/SKILL.md +2 -2
  338. package/sync-sources/skills/pan-review/SKILL.md +1 -1
  339. package/sync-sources/skills/pan-start/SKILL.md +3 -3
  340. package/sync-sources/skills/pan-swarm/SKILL.md +1 -1
  341. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  342. package/sync-sources/skills/pan-task/SKILL.md +2 -2
  343. package/sync-sources/skills/pan-wipe/SKILL.md +2 -2
  344. package/sync-sources/skills/pipeline-list/SKILL.md +1 -1
  345. package/sync-sources/skills/pipeline-status/SKILL.md +2 -2
  346. package/sync-sources/skills/plan/SKILL.md +11 -11
  347. package/sync-sources/skills/write-vbrief/SKILL.md +7 -282
  348. package/sync-sources/skills/write-xbrief/SKILL.md +295 -0
  349. package/sync-sources/templates/claude-md/sections/warnings.md +1 -1
  350. package/server/agent-state-Co5Sy2Fw.js +0 -3
  351. package/server/agents-DyHKlq1I.js +0 -3
  352. package/server/cli-BRORS9qY.js +0 -3
  353. package/server/codex-DNyiQDKW.js +0 -3
  354. package/server/deacon-swarm-CV54eNmU.js +0 -2
  355. package/server/dist-j64RzSrQ.js +0 -3
  356. package/server/forge-B0_opi-V.js +0 -2
  357. package/server/hume-BmhvfVbV.js +0 -3
  358. package/server/inspect-agent-Dq0z1k3H.js +0 -2
  359. package/server/lifecycle-io-DmY2qwCn.js +0 -3
  360. package/server/merge-ops-DwWCkSgo.js +0 -2
  361. package/server/projects-BKkwpH6q.js +0 -3
  362. package/server/public/assets/index-Bdc4V9ba.css +0 -1
  363. package/server/public/assets/mermaid-GHXKKRXX-B5v_r7cI.js +0 -1
  364. package/server/rally-OSJXdiHK.js +0 -3
  365. package/server/record-rwK-nKv_.js +0 -3
  366. package/server/record-update-Crz74r-6.js +0 -168
  367. package/server/resume-wZZsWtzz.js +0 -3
  368. package/server/review-status-Bnh-rdkY.js +0 -3
  369. package/server/settings-BlUsVaUc.js +0 -2
  370. package/server/specialists-Dqe6_HE5.js +0 -3
  371. package/server/specs-BhOKBzqk.js +0 -3
  372. package/server/supervisor-COVHrBTg.js +0 -2
  373. package/server/tmux-BAvtac_u.js +0 -3
  374. package/server/token-util-BArZLN6w.js +0 -3
  375. package/server/workflows-C4mR0Reb.js +0 -2
@@ -1,64 +1,11 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { cn as init_auto_commit, jr as init_errors, xr as FsError } from "./config-yaml-ig8Nwtiw.js";
3
- import { c as PAN_SESSIONS_FILENAME, d as WORKSPACE_RUNTIME_DIRNAME, i as PAN_CONTINUE_FILENAME, n as PAN_CONTEXT_FILENAME, p as init_types, s as PAN_FEEDBACK_DIRNAME, t as LEGACY_WORKSPACE_RUNTIME_DIRNAME, u as PAN_SPEC_FILENAME } from "./types-hraoaQIp.js";
4
- import { C as init_specs, S as getProjectPanPaths } from "./io-DQR9PMgS.js";
2
+ import { Ht as flushAutoCommits, Ut as init_auto_commit, Wt as queueAutoCommit, ir as FsError, mr as init_errors } from "./config-yaml-DvyMuOle.js";
3
+ import { p as init_types } from "./types-hraoaQIp.js";
4
+ import { C as init_specs, F as getReadableWorkspacePanPaths, I as getWorkspacePanPaths, L as init_continue, N as ensureWorkspacePanDir, P as getLegacyWorkspacePanPaths, S as getProjectPanPaths, b as ensurePanDirs } from "./io-B3_AHDfr.js";
5
5
  import { Effect, FileSystem } from "effect";
6
6
  import { join } from "path";
7
7
  import { existsSync, readFileSync } from "node:fs";
8
8
  import * as NodeFileSystem from "@effect/platform-node/NodeFileSystem";
9
- //#region ../../lib/pan-dir/continue.ts
10
- function workspacePanPaths(workspacePath) {
11
- const panDir = join(workspacePath, WORKSPACE_RUNTIME_DIRNAME);
12
- return {
13
- panDir,
14
- specPath: join(panDir, PAN_SPEC_FILENAME),
15
- continuePath: join(panDir, PAN_CONTINUE_FILENAME),
16
- sessionsPath: join(panDir, PAN_SESSIONS_FILENAME),
17
- feedbackDir: join(panDir, PAN_FEEDBACK_DIRNAME),
18
- contextPath: join(panDir, PAN_CONTEXT_FILENAME)
19
- };
20
- }
21
- function getWorkspacePanPaths(workspacePath) {
22
- return workspacePanPaths(workspacePath);
23
- }
24
- function getLegacyWorkspacePanPaths(workspacePath) {
25
- const panDir = join(workspacePath, LEGACY_WORKSPACE_RUNTIME_DIRNAME);
26
- return {
27
- panDir,
28
- specPath: join(panDir, PAN_SPEC_FILENAME),
29
- continuePath: join(panDir, PAN_CONTINUE_FILENAME),
30
- sessionsPath: join(panDir, PAN_SESSIONS_FILENAME),
31
- feedbackDir: join(panDir, PAN_FEEDBACK_DIRNAME),
32
- contextPath: join(panDir, PAN_CONTEXT_FILENAME)
33
- };
34
- }
35
- /** Resolve workspace runtime reads to `.overdeck/`, then legacy `.pan/`. */
36
- function getReadableWorkspacePanPaths(workspacePath) {
37
- const canonical = getWorkspacePanPaths(workspacePath);
38
- return existsSync(canonical.panDir) ? canonical : getLegacyWorkspacePanPaths(workspacePath);
39
- }
40
- function ensureWorkspacePanDir(workspacePath) {
41
- return Effect.gen(function* () {
42
- const fs = yield* FileSystem.FileSystem;
43
- const paths = workspacePanPaths(workspacePath);
44
- yield* fs.makeDirectory(paths.panDir, { recursive: true }).pipe(Effect.mapError((cause) => new FsError({
45
- path: paths.panDir,
46
- operation: "makeDirectory",
47
- cause
48
- })));
49
- yield* fs.makeDirectory(paths.feedbackDir, { recursive: true }).pipe(Effect.mapError((cause) => new FsError({
50
- path: paths.feedbackDir,
51
- operation: "makeDirectory",
52
- cause
53
- })));
54
- return paths;
55
- }).pipe(Effect.provide(NodeFileSystem.layer));
56
- }
57
- var init_continue = __esmMin((() => {
58
- init_errors();
59
- init_types();
60
- }));
61
- //#endregion
62
9
  //#region ../../lib/pan-dir/sessions.ts
63
10
  var init_sessions = __esmMin((() => {
64
11
  init_errors();
@@ -144,6 +91,33 @@ function getDraftsDir(projectRoot) {
144
91
  function getDraftPath(projectRoot, filename) {
145
92
  return join(getDraftsDir(projectRoot), filename);
146
93
  }
94
+ function getIssueDraftPath(projectRoot, issueId) {
95
+ return getDraftPath(projectRoot, `${issueId.toUpperCase()}.md`);
96
+ }
97
+ function writeIssueDraft(projectRoot, issueId, content) {
98
+ return Effect.gen(function* () {
99
+ const fs = yield* FileSystem.FileSystem;
100
+ yield* ensurePanDirs(projectRoot);
101
+ const path = getIssueDraftPath(projectRoot, issueId);
102
+ yield* fs.writeFileString(path, content).pipe(Effect.mapError((cause) => new FsError({
103
+ path,
104
+ operation: "writeFileString",
105
+ cause
106
+ })));
107
+ queueAutoCommit({
108
+ projectRoot,
109
+ paths: [path],
110
+ subject: `chore(state): update PRD draft for ${issueId.toUpperCase()}`
111
+ });
112
+ const flushed = yield* flushAutoCommits(projectRoot);
113
+ if (flushed.errored || flushed.pushed === false) return yield* Effect.fail(new FsError({
114
+ path,
115
+ operation: "pushDraft",
116
+ cause: new Error(flushed.reason ?? "PRD draft commit was not pushed")
117
+ }));
118
+ return path;
119
+ }).pipe(Effect.provide(NodeFileSystem.layer));
120
+ }
147
121
  /**
148
122
  * Sync PRD-first gate predicate (PAN-2234). The surrounding module uses the
149
123
  * Effect FileSystem for read/write/list paths; this predicate is deliberately a
@@ -200,6 +174,52 @@ function checkPrdGateSync(args) {
200
174
  searched
201
175
  };
202
176
  }
177
+ /**
178
+ * Promote a workspace-authored PRD draft to the canonical drafts/ location on
179
+ * the state plane. Planning agents author the PRD at
180
+ * `<workspace>/.pan/drafts/<ISSUE>.md`; the PRD-first gate accepts it there,
181
+ * but the workspace is disposable — without this promotion the PRD is lost on
182
+ * workspace teardown and invisible at the canonical location (the PAN-2858
183
+ * defect). Runs at complete-planning, after the PRD gate.
184
+ *
185
+ * No-loss rule: an existing canonical draft is never overwritten — the
186
+ * canonical copy may carry operator edits the workspace copy predates.
187
+ */
188
+ function promoteWorkspacePrdDraft(args) {
189
+ return Effect.suspend(() => {
190
+ const { projectRoot, workspacePath, issueId } = args;
191
+ const upperFile = `${issueId.toUpperCase()}.md`;
192
+ const lowerFile = `${issueId.toLowerCase()}.md`;
193
+ const draftsDir = getDraftsDir(projectRoot);
194
+ for (const canonical of [join(draftsDir, upperFile), join(draftsDir, lowerFile)]) if (existsSync(canonical)) return Effect.succeed({
195
+ promoted: false,
196
+ reason: "canonical-exists",
197
+ path: canonical
198
+ });
199
+ const wsDrafts = join(workspacePath, ".pan", "drafts");
200
+ const source = [join(wsDrafts, upperFile), join(wsDrafts, lowerFile)].find((p) => existsSync(p));
201
+ if (!source) return Effect.succeed({
202
+ promoted: false,
203
+ reason: "no-workspace-draft"
204
+ });
205
+ let content;
206
+ try {
207
+ content = readFileSync(source, "utf-8");
208
+ } catch (cause) {
209
+ return Effect.fail(new FsError({
210
+ path: source,
211
+ operation: "readFileString",
212
+ cause
213
+ }));
214
+ }
215
+ return writeIssueDraft(projectRoot, issueId, content).pipe(Effect.map((path) => ({
216
+ promoted: true,
217
+ reason: "promoted",
218
+ path,
219
+ source
220
+ })));
221
+ });
222
+ }
203
223
  var init_drafts = __esmMin((() => {
204
224
  init_errors();
205
225
  init_auto_commit();
@@ -255,6 +275,6 @@ var init_pan_dir = __esmMin((() => {
255
275
  init_context();
256
276
  }));
257
277
  //#endregion
258
- export { clearFeedback as a, ensureWorkspacePanDir as c, checkPrdGateSync as i, getReadableWorkspacePanPaths as l, readWorkspaceContext as n, readFeedback as o, writeWorkspaceContext as r, writeFeedback as s, init_pan_dir as t, getWorkspacePanPaths as u };
278
+ export { getDraftPath as a, clearFeedback as c, checkPrdGateSync as i, readFeedback as l, readWorkspaceContext as n, getIssueDraftPath as o, writeWorkspaceContext as r, promoteWorkspacePrdDraft as s, init_pan_dir as t, writeFeedback as u };
259
279
 
260
- //# sourceMappingURL=pan-dir-DOcf6ug3.js.map
280
+ //# sourceMappingURL=pan-dir-DeVUgwA7.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { ii as init_paths$1, ri as getOverdeckHome } from "./config-yaml-ig8Nwtiw.js";
2
+ import { Br as getOverdeckHome, Vr as init_paths$1 } from "./config-yaml-DvyMuOle.js";
3
3
  import { dirname, isAbsolute, join, relative, resolve } from "path";
4
4
  import { mkdir } from "fs/promises";
5
5
  //#region ../../lib/memory/paths.ts
@@ -62,4 +62,4 @@ var init_paths = __esmMin((() => {
62
62
  //#endregion
63
63
  export { resolveArchiveDir as a, resolveMemoryRoot as c, resolveRagRunsFile as d, resolveStatusFile as f, init_paths as i, resolveObservationsFile as l, ensureDir as n, resolveFtsDbPath as o, resolveSummariesDir as p, ensureParentDir as r, resolveIssueMemoryRoot as s, assertMemorySafeSegment as t, resolvePendingDir as u };
64
64
 
65
- //# sourceMappingURL=paths-DooHpt9p.js.map
65
+ //# sourceMappingURL=paths-_zEts6wc.js.map
@@ -185,4 +185,4 @@ var init_pickup = __esmMin((() => {
185
185
  //#endregion
186
186
  export { selectNeedsPlanning as _, READY_LABEL as a, classifyIssue as c, computeLanes as d, computeStats as f, normalizeGate as g, isAutoPickable as h, PARKED_LABEL as i, computeCohort as l, init_pickup as m, LEGACY_PARKED_LABELS as n, RELEASED_LABEL as o, computeWaves as p, OBJECTION_LABEL as r, VETOED_LABEL as s, BLOCKS_MAIN_LABEL as t, computeEpicGroups as u };
187
187
 
188
- //# sourceMappingURL=pickup-CaskQ7j6.js.map
188
+ //# sourceMappingURL=pickup-Dd0Znxxy.js.map
@@ -1,8 +1,11 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Hn as init_projects, Nn as getIssuePrefix } from "./config-yaml-ig8Nwtiw.js";
3
- import { C as init_specs, w as listSpecs } from "./io-DQR9PMgS.js";
4
- import { O as createSettledTtlPromiseCache, _ as listOpenIssuesWithLabelsPromise, f as init_github_app, h as listIssuesWithAnyLabelPromise, j as withConcurrencyLimitPromise, k as init_concurrency } from "./github-app-CDPtGF7J.js";
5
- import { n as init_label_reconciler, t as STALE_PIPELINE_LABELS } from "./label-reconciler-Df1ZduPH.js";
2
+ import { Tn as init_projects, gn as getIssuePrefix } from "./config-yaml-DvyMuOle.js";
3
+ import { C as init_specs, w as listSpecs } from "./io-B3_AHDfr.js";
4
+ import { f as init_config, m as loadConfigSync } from "./config-CCvjQf27.js";
5
+ import { r as init_factory, t as createTracker } from "./factory-CynerjXO.js";
6
+ import { O as createSettledTtlPromiseCache, _ as listOpenIssuesWithLabelsPromise, f as init_github_app, h as listIssuesWithAnyLabelPromise, j as withConcurrencyLimitPromise, k as init_concurrency } from "./github-app-CMBdIFBQ.js";
7
+ import { n as init_label_reconciler, t as STALE_PIPELINE_LABELS } from "./label-reconciler-DdWbHEBu.js";
8
+ import { join } from "node:path";
6
9
  import { Effect } from "effect";
7
10
  import { execFile } from "node:child_process";
8
11
  import { promisify } from "node:util";
@@ -42,17 +45,26 @@ function listOpenPullRequestsSnapshot(owner, repo) {
42
45
  }))));
43
46
  }
44
47
  async function runGitHubGraphql(query) {
45
- const { stdout } = await execFileAsync("gh", [
46
- "api",
47
- "graphql",
48
- "-f",
49
- `query=${query}`
50
- ], {
51
- encoding: "utf-8",
52
- timeout: 3e4,
53
- maxBuffer: 4 * 1024 * 1024
54
- });
55
- return stdout;
48
+ try {
49
+ const { stdout } = await execFileAsync("gh", [
50
+ "api",
51
+ "graphql",
52
+ "-f",
53
+ `query=${query}`
54
+ ], {
55
+ encoding: "utf-8",
56
+ timeout: 3e4,
57
+ maxBuffer: 4 * 1024 * 1024
58
+ });
59
+ return stdout;
60
+ } catch (error) {
61
+ const stdout = error.stdout;
62
+ if (typeof stdout === "string" && stdout.length > 0) try {
63
+ const parsed = JSON.parse(stdout);
64
+ if (parsed.data !== void 0 && parsed.data !== null) return stdout;
65
+ } catch {}
66
+ throw error;
67
+ }
56
68
  }
57
69
  async function listMergedPullRequestHeadsBatched(owner, repo, heads, runGraphql = runGitHubGraphql) {
58
70
  if (heads.length === 0) return [];
@@ -76,9 +88,8 @@ async function listIssueStatesBatched(owner, repo, numbers, runGraphql = runGitH
76
88
  for (const numberChunk of chunksOf(numbers)) {
77
89
  const fields = numberChunk.map((number, index) => `i${index}: issue(number: ${number}) { state }`);
78
90
  const query = `query { repository(owner: ${JSON.stringify(owner)}, name: ${JSON.stringify(repo)}) { ${fields.join(" ")} } }`;
79
- const response = JSON.parse(await runGraphql(query));
80
- const repository = response.data?.repository;
81
- if (response.errors?.length || !repository) throw new Error("Incomplete issue-state GraphQL response");
91
+ const repository = JSON.parse(await runGraphql(query)).data?.repository;
92
+ if (!repository) throw new Error("Incomplete issue-state GraphQL response");
82
93
  for (let index = 0; index < numberChunk.length; index++) {
83
94
  const alias = `i${index}`;
84
95
  if (!Object.prototype.hasOwnProperty.call(repository, alias)) throw new Error(`Missing issue-state alias ${alias}`);
@@ -95,44 +106,111 @@ async function listIssueStatesBatched(owner, repo, numbers, runGraphql = runGitH
95
106
  }
96
107
  return states;
97
108
  }
109
+ function resolveProjectTrackerType(project) {
110
+ if (project.tracker) return project.tracker;
111
+ if (project.rally_project) return "rally";
112
+ if (project.github_repo) return "github";
113
+ if (getIssuePrefix(project)) return "linear";
114
+ if (project.gitlab_repo) return "gitlab";
115
+ throw new Error(`Cannot resolve tracker for ${project.name}`);
116
+ }
117
+ async function listProjectTrackerIssues(project) {
118
+ const issuePrefix = getIssuePrefix(project)?.toUpperCase();
119
+ if (!issuePrefix) throw new Error(`Missing issue_prefix for project ${project.name}`);
120
+ const trackerType = resolveProjectTrackerType(project);
121
+ const trackerConfig = loadConfigSync().trackers[trackerType];
122
+ const tracker = createTracker({
123
+ type: trackerType,
124
+ apiKeyEnv: trackerConfig && "api_key_env" in trackerConfig ? trackerConfig.api_key_env : void 0,
125
+ tokenEnv: trackerConfig && "token_env" in trackerConfig ? trackerConfig.token_env : void 0,
126
+ team: issuePrefix,
127
+ owner: project.github_repo?.split("/")[0],
128
+ repo: project.github_repo?.split("/")[1],
129
+ projectId: project.gitlab_repo,
130
+ server: trackerType === "rally" && trackerConfig && "server" in trackerConfig ? trackerConfig.server : void 0,
131
+ workspace: trackerType === "rally" && trackerConfig && "workspace" in trackerConfig ? trackerConfig.workspace : void 0,
132
+ project: project.rally_project
133
+ });
134
+ return (await Effect.runPromise(tracker.listIssues({
135
+ team: issuePrefix,
136
+ includeClosed: true
137
+ }))).flatMap((issue) => {
138
+ const issueId = issue.ref.toUpperCase();
139
+ if (!issueId.startsWith(`${issuePrefix}-`)) return [];
140
+ return [{
141
+ issueId,
142
+ state: issue.state === "closed" ? "closed" : "open",
143
+ labels: issue.labels
144
+ }];
145
+ });
146
+ }
98
147
  function issueNumber(issueId) {
99
148
  const match = issueId.match(/-(\d+)$/);
100
149
  if (!match) throw new Error(`Cannot derive GitHub issue number from ${issueId}`);
101
150
  return Number(match[1]);
102
151
  }
103
152
  function issueIdFromRef(ref, issuePrefix) {
104
- if (!/(?:^|\/)feature\//.test(ref)) return null;
153
+ if (!/(?:^|\/)(?:feature|strike)\//.test(ref)) return null;
105
154
  const issueId = parseIssueIdFromTextSync(ref);
106
155
  return issueId?.startsWith(`${issuePrefix}-`) ? issueId : null;
107
156
  }
108
- /** Gather all durable pipeline lenses for one GitHub-backed project in batches. */
157
+ function projectRepositories(project) {
158
+ if (!project.workspace?.repos?.length) return [{
159
+ path: project.path,
160
+ defaultBranch: project.workspace?.default_branch ?? "main"
161
+ }];
162
+ return project.workspace.repos.map((repo) => ({
163
+ path: join(project.path, repo.path),
164
+ defaultBranch: repo.default_branch ?? project.workspace?.default_branch ?? "main"
165
+ }));
166
+ }
167
+ /** Gather all durable pipeline lenses for one project in batches. */
109
168
  async function gatherProjectLensSignals(project, deps = defaultDeps) {
110
- if (!project.github_repo) return [];
111
- const [owner, repo] = project.github_repo.split("/");
112
- if (!owner || !repo) throw new Error(`Invalid github_repo for ${project.name}: ${project.github_repo}`);
113
169
  const issuePrefix = getIssuePrefix(project)?.toUpperCase();
114
- if (!issuePrefix) throw new Error(`Missing issue_prefix for GitHub project ${project.name}`);
115
- const [openIssues, phaseLabeledIssues, openPrs, branchRefs, unmergedRefs, specIssueIds] = await Promise.all([
116
- deps.listOpenIssues(owner, repo),
117
- deps.listPhaseLabeledIssues(owner, repo),
118
- deps.listOpenPullRequests(owner, repo),
119
- deps.run("git", [
120
- "for-each-ref",
121
- "--format=%(refname:short)",
122
- "refs/heads/feature/*",
123
- "refs/remotes/origin/feature/*"
124
- ], project.path),
125
- deps.run("git", [
126
- "for-each-ref",
127
- "--no-merged=main",
128
- "--format=%(refname:short)",
129
- "refs/heads/feature/*",
130
- "refs/remotes/origin/feature/*"
131
- ], project.path),
170
+ if (!issuePrefix) throw new Error(`Missing issue_prefix for project ${project.name}`);
171
+ const githubRepository = project.github_repo?.split("/");
172
+ const owner = githubRepository?.[0];
173
+ const repo = githubRepository?.[1];
174
+ if (project.github_repo && (!owner || !repo)) throw new Error(`Invalid github_repo for ${project.name}: ${project.github_repo}`);
175
+ const branchSnapshots = projectRepositories(project).map(async (repository) => {
176
+ const [refs, unmergedRefs, firstParentShas] = await Promise.all([
177
+ deps.run("git", [
178
+ "for-each-ref",
179
+ "--format=%(objectname) %(refname:short)",
180
+ "refs/heads/feature/*",
181
+ "refs/remotes/origin/feature/*",
182
+ "refs/heads/strike/*",
183
+ "refs/remotes/origin/strike/*"
184
+ ], repository.path),
185
+ deps.run("git", [
186
+ "for-each-ref",
187
+ `--no-merged=${repository.defaultBranch}`,
188
+ "--format=%(refname:short)",
189
+ "refs/heads/feature/*",
190
+ "refs/remotes/origin/feature/*",
191
+ "refs/heads/strike/*",
192
+ "refs/remotes/origin/strike/*"
193
+ ], repository.path),
194
+ deps.run("git", [
195
+ "rev-list",
196
+ "--first-parent",
197
+ repository.defaultBranch
198
+ ], repository.path)
199
+ ]);
200
+ return {
201
+ refs,
202
+ unmergedRefs,
203
+ firstParentShas
204
+ };
205
+ });
206
+ const [trackerIssues, openIssues, phaseLabeledIssues, openPrs, branches, specIssueIds] = await Promise.all([
207
+ project.github_repo ? Promise.resolve([]) : deps.listTrackerIssues(project),
208
+ owner && repo ? deps.listOpenIssues(owner, repo) : Promise.resolve([]),
209
+ owner && repo ? deps.listPhaseLabeledIssues(owner, repo) : Promise.resolve([]),
210
+ owner && repo ? deps.listOpenPullRequests(owner, repo) : Promise.resolve([]),
211
+ Promise.all(branchSnapshots),
132
212
  deps.listSpecIssueIds(project.path)
133
213
  ]);
134
- const refs = branchRefs.split("\n").map((ref) => ref.trim()).filter(Boolean);
135
- const unmerged = new Set(unmergedRefs.split("\n").map((ref) => ref.trim()).filter(Boolean));
136
214
  const candidates = /* @__PURE__ */ new Set();
137
215
  const labelsByIssue = /* @__PURE__ */ new Map();
138
216
  const knownStateByIssue = /* @__PURE__ */ new Map();
@@ -141,7 +219,15 @@ async function gatherProjectLensSignals(project, deps = defaultDeps) {
141
219
  const headRefsByIssue = /* @__PURE__ */ new Map();
142
220
  const branchIssues = /* @__PURE__ */ new Set();
143
221
  const unmergedBranchIssues = /* @__PURE__ */ new Set();
222
+ const mergedBranchWorkIssues = /* @__PURE__ */ new Set();
144
223
  const specIssues = new Set(specIssueIds.map((id) => id.toUpperCase()).filter((id) => id.startsWith(`${issuePrefix}-`)));
224
+ for (const issue of trackerIssues) {
225
+ const id = issue.issueId.toUpperCase();
226
+ if (!id.startsWith(`${issuePrefix}-`)) continue;
227
+ labelsByIssue.set(id, issue.labels);
228
+ knownStateByIssue.set(id, issue.state);
229
+ if (issue.state === "open" || STALE_PIPELINE_LABELS.some((label) => issue.labels.includes(label))) candidates.add(id);
230
+ }
145
231
  for (const issue of openIssues) {
146
232
  const id = `${issuePrefix}-${issue.number}`;
147
233
  candidates.add(id);
@@ -155,7 +241,7 @@ async function gatherProjectLensSignals(project, deps = defaultDeps) {
155
241
  knownStateByIssue.set(id, issue.state);
156
242
  }
157
243
  for (const pr of openPrs) {
158
- if (pr.headRepoFullName.toLowerCase() !== `${owner}/${repo}`.toLowerCase()) continue;
244
+ if (!owner || !repo || pr.headRepoFullName.toLowerCase() !== `${owner}/${repo}`.toLowerCase()) continue;
159
245
  const id = issueIdFromRef(pr.headRefName, issuePrefix);
160
246
  if (id) {
161
247
  candidates.add(id);
@@ -163,34 +249,61 @@ async function gatherProjectLensSignals(project, deps = defaultDeps) {
163
249
  headRefsByIssue.set(id, new Set([...headRefsByIssue.get(id) ?? [], pr.headRefName]));
164
250
  }
165
251
  }
166
- for (const ref of refs) {
167
- const id = issueIdFromRef(ref, issuePrefix);
168
- if (id) {
169
- candidates.add(id);
170
- branchIssues.add(id);
171
- const headRef = ref.replace(/^origin\//, "");
172
- headRefsByIssue.set(id, new Set([...headRefsByIssue.get(id) ?? [], headRef]));
173
- if (unmerged.has(ref)) unmergedBranchIssues.add(id);
252
+ for (const snapshot of branches) {
253
+ const refLines = snapshot.refs.split("\n").map((line) => line.trim()).filter(Boolean);
254
+ const unmerged = new Set(snapshot.unmergedRefs.split("\n").map((ref) => ref.trim()).filter(Boolean));
255
+ const firstParentShas = new Set(snapshot.firstParentShas.split("\n").map((sha) => sha.trim()).filter(Boolean));
256
+ for (const line of refLines) {
257
+ const spaceIdx = line.indexOf(" ");
258
+ const tipSha = spaceIdx === -1 ? null : line.slice(0, spaceIdx);
259
+ const ref = spaceIdx === -1 ? line : line.slice(spaceIdx + 1);
260
+ const id = issueIdFromRef(ref, issuePrefix);
261
+ if (id) {
262
+ candidates.add(id);
263
+ branchIssues.add(id);
264
+ const headRef = ref.replace(/^origin\//, "");
265
+ headRefsByIssue.set(id, new Set([...headRefsByIssue.get(id) ?? [], headRef]));
266
+ if (unmerged.has(ref)) unmergedBranchIssues.add(id);
267
+ else if (tipSha && !firstParentShas.has(tipSha)) mergedBranchWorkIssues.add(id);
268
+ }
174
269
  }
175
270
  }
176
271
  for (const id of specIssues) candidates.add(id);
177
- const candidateHeads = [...new Set([...candidates].flatMap((id) => [...headRefsByIssue.get(id) ?? new Set([`feature/${id.toLowerCase()}`])]))];
178
- const mergedHeads = new Set(await deps.listMergedPullRequestHeads(owner, repo, candidateHeads));
179
- for (const [id, heads] of headRefsByIssue) if ([...heads].some((head) => mergedHeads.has(head))) mergedPrIssues.add(id);
180
- for (const id of candidates) if (!headRefsByIssue.has(id) && mergedHeads.has(`feature/${id.toLowerCase()}`)) mergedPrIssues.add(id);
181
- const unknownIssueIds = [...candidates].filter((id) => !knownStateByIssue.has(id));
182
- const issueStates = await deps.listIssueStates(owner, repo, unknownIssueIds.map(issueNumber));
183
- const stateByNumber = new Map(issueStates.map((entry) => [entry.number, entry.state]));
184
- const issueOpen = new Map([...candidates].map((id) => [id, knownStateByIssue.get(id) === "open" || stateByNumber.get(issueNumber(id)) === "open"]));
272
+ if (owner && repo) {
273
+ const unknownIssueIds = [...candidates].filter((id) => !knownStateByIssue.has(id));
274
+ const issueStateCandidates = unknownIssueIds.filter((id) => openPrIssues.has(id) || branchIssues.has(id));
275
+ const issueStateCandidateSet = new Set(issueStateCandidates);
276
+ for (const id of unknownIssueIds) if (!issueStateCandidateSet.has(id)) candidates.delete(id);
277
+ const issueStates = issueStateCandidates.length > 0 ? await deps.listIssueStates(owner, repo, issueStateCandidates.map(issueNumber)) : [];
278
+ const stateByNumber = new Map(issueStates.map((entry) => [entry.number, entry.state]));
279
+ for (const id of issueStateCandidates) {
280
+ const state = stateByNumber.get(issueNumber(id));
281
+ if (state) knownStateByIssue.set(id, state);
282
+ else candidates.delete(id);
283
+ }
284
+ const openCandidates = [...candidates].filter((id) => knownStateByIssue.get(id) === "open");
285
+ const candidateHeads = [...new Set(openCandidates.flatMap((id) => [
286
+ ...headRefsByIssue.get(id) ?? [],
287
+ `feature/${id.toLowerCase()}`,
288
+ `strike/${id.toLowerCase()}`
289
+ ]))];
290
+ const mergedHeads = new Set(await deps.listMergedPullRequestHeads(owner, repo, candidateHeads));
291
+ for (const id of openCandidates) if ([
292
+ ...headRefsByIssue.get(id) ?? [],
293
+ `feature/${id.toLowerCase()}`,
294
+ `strike/${id.toLowerCase()}`
295
+ ].some((head) => mergedHeads.has(head))) mergedPrIssues.add(id);
296
+ }
185
297
  return [...candidates].sort().map((id) => ({
186
298
  issueId: id,
187
- issueOpen: issueOpen.get(id) ?? false,
299
+ issueOpen: knownStateByIssue.get(id) === "open",
188
300
  hasOpenPr: openPrIssues.has(id),
189
301
  hasMergedPr: mergedPrIssues.has(id),
190
302
  hasConventionBranch: branchIssues.has(id),
191
303
  branchUnmerged: unmergedBranchIssues.has(id),
304
+ hasMergedBranchWork: mergedBranchWorkIssues.has(id),
192
305
  phaseLabel: STALE_PIPELINE_LABELS.find((label) => labelsByIssue.get(id)?.includes(label)) ?? null,
193
- hasVbriefSpec: specIssues.has(id),
306
+ hasXbriefSpec: specIssues.has(id),
194
307
  explicitlyReady: labelsByIssue.get(id)?.includes("ready") ?? false
195
308
  }));
196
309
  }
@@ -221,9 +334,11 @@ var init_pipeline_membership_gather = __esmMin((() => {
221
334
  init_github_app();
222
335
  init_concurrency();
223
336
  init_label_reconciler();
337
+ init_config();
224
338
  init_specs();
225
339
  init_projects();
226
340
  init_resource_utils();
341
+ init_factory();
227
342
  execFileAsync = promisify(execFile);
228
343
  GRAPHQL_ALIAS_CHUNK_SIZE = 50;
229
344
  cachedOpenPullRequests = createSettledTtlPromiseCache(3e4);
@@ -233,6 +348,7 @@ var init_pipeline_membership_gather = __esmMin((() => {
233
348
  listOpenPullRequests: listOpenPullRequestsSnapshot,
234
349
  listMergedPullRequestHeads: listMergedPullRequestHeadsBatched,
235
350
  listIssueStates: listIssueStatesBatched,
351
+ listTrackerIssues: listProjectTrackerIssues,
236
352
  listSpecIssueIds: async (projectPath) => (await Effect.runPromise(listSpecs(projectPath))).map((entry) => entry.issueId),
237
353
  run: async (command, args, cwd) => {
238
354
  const { stdout } = await execFileAsync(command, args, {
@@ -285,17 +401,20 @@ function resolvePipelineMembership(s) {
285
401
  }
286
402
  if (s.hasOpenPr) return result("in_flight", "open issue with an open PR — active work");
287
403
  if (s.hasMergedPr) return result("post_merge_limbo", "open issue with a merged PR — merged but never closed out; run close-out");
288
- if (branchLive) return result("planned_backlog", "open issue with an unmerged feature branch but no PR — needs a PR or disposition");
289
- if (s.hasConventionBranch) return result("post_merge_limbo", "open issue whose branch is already in main but with no merged PR — landed via a non-PR path; run close-out");
290
- if (s.hasVbriefSpec) return result("planned_backlog", PLANNED_BACKLOG_SPEC_ONLY_REASON);
404
+ if (branchLive) return result("planned_backlog", "open issue with an unmerged convention branch (feature/ or strike/) but no PR — needs a PR or disposition");
405
+ if (s.hasConventionBranch) {
406
+ if (s.hasMergedBranchWork) return result("post_merge_limbo", "open issue whose branch work is contained in main but with no merged PR — landed via a non-PR path; run close-out");
407
+ return result("planned_backlog", "open issue with a convention branch but no unique commits — created, work not yet landed; needs work or disposition");
408
+ }
409
+ if (s.hasXbriefSpec) return result("planned_backlog", PLANNED_BACKLOG_SPEC_ONLY_REASON);
291
410
  if (s.explicitlyReady) return result("planned_backlog", "open issue carries the explicit ready label — ready to start");
292
411
  return result("clean_terminal", "open issue with no branch and no PR — backlog, never started");
293
412
  }
294
413
  var PLANNED_BACKLOG_SPEC_ONLY_REASON;
295
414
  var init_pipeline_membership = __esmMin((() => {
296
- PLANNED_BACKLOG_SPEC_ONLY_REASON = "open issue with a vBRIEF spec but no branch/PR — planned work whose plan encodes code paths that age; needs starting or re-planning";
415
+ PLANNED_BACKLOG_SPEC_ONLY_REASON = "open issue with an xBRIEF spec but no branch/PR — planned work whose plan encodes code paths that age; needs starting or re-planning";
297
416
  }));
298
417
  //#endregion
299
418
  export { gatherProjectLensSignalsForProjects as a, init_resource_utils as c, gatherProjectLensSignals as i, parseIssueIdFromTextSync as l, init_pipeline_membership as n, init_pipeline_membership_gather as o, resolvePipelineMembership as r, listOpenPullRequestsSnapshot as s, PLANNED_BACKLOG_SPEC_ONLY_REASON as t };
300
419
 
301
- //# sourceMappingURL=pipeline-membership-1LGRjo-k.js.map
420
+ //# sourceMappingURL=pipeline-membership-0HaEGDlH.js.map
@@ -1,3 +1,3 @@
1
- import { a as setPipelineHandlerSync, i as setPipelineHandler, n as notifyPipeline, r as notifyPipelineSync, t as init_pipeline_notifier } from "./pipeline-notifier-B6FVsYF9.js";
1
+ import { a as setPipelineHandlerSync, i as setPipelineHandler, n as notifyPipeline, r as notifyPipelineSync, t as init_pipeline_notifier } from "./pipeline-notifier-D0ykk59O.js";
2
2
  init_pipeline_notifier();
3
3
  export { notifyPipeline, notifyPipelineSync, setPipelineHandler, setPipelineHandlerSync };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-CXsfxslp.js";
2
+ import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-Bb4XeV2x.js";
3
3
  import { Effect } from "effect";
4
4
  //#region ../../lib/pipeline-notifier.ts
5
5
  /**
@@ -60,4 +60,4 @@ var init_pipeline_notifier = __esmMin((() => {
60
60
  //#endregion
61
61
  export { setPipelineHandlerSync as a, setPipelineHandler as i, notifyPipeline as n, notifyPipelineSync as r, init_pipeline_notifier as t };
62
62
 
63
- //# sourceMappingURL=pipeline-notifier-B6FVsYF9.js.map
63
+ //# sourceMappingURL=pipeline-notifier-D0ykk59O.js.map
@@ -1,4 +1,4 @@
1
- import { Hn as init_projects, Kn as listProjectsSync } from "./config-yaml-ig8Nwtiw.js";
1
+ import { Tn as init_projects, kn as listProjectsSync } from "./config-yaml-DvyMuOle.js";
2
2
  import { join } from "node:path";
3
3
  import { existsSync, readFileSync } from "node:fs";
4
4
  import { execFile } from "node:child_process";
@@ -159,4 +159,4 @@ async function fetchProjectReleaseStatus(projectKey, deps = {}) {
159
159
  //#endregion
160
160
  export { fetchProjectReleaseStatus };
161
161
 
162
- //# sourceMappingURL=project-pipelines-CtNG_rvs.js.map
162
+ //# sourceMappingURL=project-pipelines-2sK1apsO.js.map
@@ -0,0 +1,3 @@
1
+ import { An as loadProjectsConfig, Bn as resolveProjectPath, Cn as hasProjects, Dn as initializeProjectsConfigSync, En as initializeProjectsConfig, Fn as renameProject, Gn as unregisterProject, Hn as saveProjectsConfigSync, In as renameProjectSync, Kn as unregisterProjectSync, Ln as resolveInfraRepo, Nn as registerProject, On as listProjects, Pn as registerProjectSync, Rn as resolveProjectFromIssue, Sn as getSpecialistRetention, Tn as init_projects, Un as setProjectAutoMergeDefaultSync, Vn as saveProjectsConfig, Wn as setProjectSwarmPolicySync, _n as getProject, bn as getSpecialistConfig, cn as ProjectRenameError, dn as findProjectByPath, fn as findProjectByPathSync, gn as getIssuePrefix, hn as findProjectsByRallyProject, jn as loadProjectsConfigSync, kn as listProjectsSync, ln as createDefaultProjectsConfig, mn as findProjectByTeamSync, pn as findProjectByTeam, sn as PROJECTS_CONFIG_FILE, un as extractTeamPrefix, vn as getProjectSwarmHotspots, wn as hasProjectsSync, xn as getSpecialistPromptOverride, yn as getProjectSync, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
2
+ init_projects();
3
+ export { PROJECTS_CONFIG_FILE, ProjectRenameError, createDefaultProjectsConfig, extractTeamPrefix, findProjectByPath, findProjectByPathSync, findProjectByTeam, findProjectByTeamSync, findProjectsByRallyProject, getIssuePrefix, getProject, getProjectSwarmHotspots, getProjectSync, getSpecialistConfig, getSpecialistPromptOverride, getSpecialistRetention, hasProjects, hasProjectsSync, initializeProjectsConfig, initializeProjectsConfigSync, listProjects, listProjectsSync, loadProjectsConfig, loadProjectsConfigSync, registerProject, registerProjectSync, renameProject, renameProjectSync, resolveInfraRepo, resolveProjectFromIssue, resolveProjectFromIssueSync, resolveProjectPath, saveProjectsConfig, saveProjectsConfigSync, setProjectAutoMergeDefaultSync, setProjectSwarmPolicySync, unregisterProject, unregisterProjectSync };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { h as jsYaml, m as init_js_yaml } from "./config-yaml-ig8Nwtiw.js";
2
+ import { h as jsYaml, m as init_js_yaml } from "./config-yaml-DvyMuOle.js";
3
3
  import { Data, Effect } from "effect";
4
4
  import { existsSync, readFileSync } from "fs";
5
5
  import { dirname, join } from "path";
@@ -669,4 +669,4 @@ var init_prompts = __esmMin((() => {
669
669
  //#endregion
670
670
  export { renderPrompt as n, init_prompts as t };
671
671
 
672
- //# sourceMappingURL=prompts-EvhMeeHG.js.map
672
+ //# sourceMappingURL=prompts-Dp4Tpk39.js.map
@@ -1,3 +1,3 @@
1
- import { B as getProviderEnvSync, H as init_providers, V as getProviderForModelSync } from "./config-yaml-ig8Nwtiw.js";
1
+ import { B as getProviderEnvSync, H as init_providers, V as getProviderForModelSync } from "./config-yaml-DvyMuOle.js";
2
2
  init_providers();
3
3
  export { getProviderEnvSync, getProviderForModelSync };
@@ -1,9 +1,9 @@
1
1
  import { n as __esmMin, t as __commonJSMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { i as init_paths, r as ensureParentDir, s as resolveIssueMemoryRoot } from "./paths-DooHpt9p.js";
3
- import { o as getPricingSync, s as init_cost } from "./cost-Codk1pc2.js";
4
- import { d as init_cost_sync, f as insertCostEventSync, m as queryMemoryExtractionCostUsdSync } from "./cost-sync-D_cre6WM.js";
5
- import { n as CLIPROXY_BASE_URL, t as CLIPROXY_AUTH_TOKEN, v as init_cliproxy$1 } from "./cliproxy-Brf_5MuG.js";
6
- import { i as init_settings, s as loadMemorySettings } from "./settings-BNbocWOg.js";
2
+ import { i as init_paths, r as ensureParentDir, s as resolveIssueMemoryRoot } from "./paths-_zEts6wc.js";
3
+ import { o as getPricingSync, s as init_cost } from "./cost-Ca0YTWDw.js";
4
+ import { d as init_cost_sync, f as insertCostEventSync, m as queryMemoryExtractionCostUsdSync } from "./cost-sync-C0VdGme1.js";
5
+ import { n as CLIPROXY_BASE_URL, t as CLIPROXY_AUTH_TOKEN, v as init_cliproxy$1 } from "./cliproxy-Bgb2XCqi.js";
6
+ import { i as init_settings, s as loadMemorySettings } from "./settings-BZ5m1UCl.js";
7
7
  import { join } from "path";
8
8
  import { randomUUID } from "crypto";
9
9
  import { readFile, writeFile } from "fs/promises";
@@ -8125,7 +8125,7 @@ async function readMemoryHealth(path) {
8125
8125
  };
8126
8126
  }
8127
8127
  async function emitMemoryHealthChanged(payload, timestamp) {
8128
- const { initEventStore } = await import("./event-store-CpBGsO6_.js");
8128
+ const { initEventStore } = await import("./event-store-Cr5PQwFC.js");
8129
8129
  await (await initEventStore()).appendAsync({
8130
8130
  type: "memory.health_changed",
8131
8131
  timestamp,
@@ -8232,4 +8232,4 @@ var init_providers = __esmMin((() => {
8232
8232
  //#endregion
8233
8233
  export { updateMemoryHealth as i, extractWithProviderPolicy as n, init_health as r, init_providers as t };
8234
8234
 
8235
- //# sourceMappingURL=providers-BDDPULlp.js.map
8235
+ //# sourceMappingURL=providers-DV7ec8l7.js.map