@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
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 { a as resolveTrackerTypeSync, i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-DiceZN3a.js";
4
- import { a as init_linear, i as LinearTracker, r as init_factory, t as createTracker } from "./factory-CQNprtHe.js";
5
- import { a as getShadowState, s as init_shadow_state } from "./shadow-state-a_ztFBJe.js";
6
- import { n as init_shadow_utils, t as getLinearApiKey } from "./shadow-utils-CyOg6_Xq.js";
7
- import { f as init_github_app, p as isGitHubAppConfigured, s as getIssueState } from "./github-app-B3yfECo8.js";
2
+ import { Tn as init_projects, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
3
+ import { a as resolveTrackerTypeSync, i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-tnxxqROg.js";
4
+ import { a as init_linear, i as LinearTracker, r as init_factory, t as createTracker } from "./factory-CynerjXO.js";
5
+ import { f as init_github_app, p as isGitHubAppConfigured, s as getIssueState } from "./github-app-CMBdIFBQ.js";
6
+ import { a as getShadowState, s as init_shadow_state } from "./shadow-state-Dh-HzF2J.js";
7
+ import { n as init_shadow_utils, t as getLinearApiKey } from "./shadow-utils-4bvjn9b3.js";
8
8
  import { Effect } from "effect";
9
9
  import { execFile } from "child_process";
10
10
  import { promisify } from "util";
@@ -112,4 +112,4 @@ var init_issue_closed = __esmMin((() => {
112
112
  //#endregion
113
113
  export { init_issue_closed as n, isIssueClosed as r, clearIssueClosedCache as t };
114
114
 
115
- //# sourceMappingURL=issue-closed-Dfw3QDyZ.js.map
115
+ //# sourceMappingURL=issue-closed-zhdvQicO.js.map
@@ -1,18 +1,18 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
2
  import { a as init_activity_logger, t as emitActivityDetailedSync } from "./activity-logger-DDlOIAML.js";
3
- import { a as init_event_store, i as initEventStore } from "./event-store-BVnON3vf.js";
4
- import { d as getMaxTurnDiffSummariesPerAgent, f as isTerminalTurnDiffSummaryStatus, l as INITIAL_READ_MODEL_STATE, p as trimTurnDiffSummaries, t as init_src, u as applyEvent } from "./src-Dpq1yFIl.js";
5
- import { D as init_agent_state_sync, O as listOverdeckAgentStatesSync } from "./review-status-CCgPVK1h.js";
6
- import { o as init_agents, t as AgentsResolver } from "./agents-DbrHWunF.js";
7
- import { f as resolveStatusFile, i as init_paths } from "./paths-FP8v3lTz.js";
8
- import { a as resolveSessionContextBriefingPath, r as init_briefing_freshness } from "./briefing-freshness-OouGbJ7d.js";
9
- import { n as listFeatureRegistryEntries, t as init_feature_registry_storage } from "./feature-registry-storage-BWymOgXE.js";
10
- import { h as listCheckpoints, m as init_checkpoint_manager, s as diffCheckpointFiles, t as captureCheckpoint } from "./checkpoint-manager-D64fCC4p.js";
11
- import { i as init_linear_client, r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-BLyN-NiP.js";
12
- import { i as init_github_client, r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client-Dslipypz.js";
13
- import { i as init_rally_client, r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-SVbjGvqj.js";
14
- import { a as resolveTrackerTypeSync, i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-DiceZN3a.js";
15
- import { n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-CPESc4Or.js";
3
+ import { a as init_event_store, i as initEventStore } from "./event-store-tdiY5eDZ.js";
4
+ import { d as applyEvent, f as getMaxTurnDiffSummariesPerAgent, m as trimTurnDiffSummaries, p as isTerminalTurnDiffSummaryStatus, t as init_src, u as INITIAL_READ_MODEL_STATE } from "./src-U7_kTPEE.js";
5
+ import { D as listOverdeckAgentStatesSync, E as init_agent_state_sync } from "./review-status-A7quS5KJ.js";
6
+ import { o as init_agents, t as AgentsResolver } from "./agents-B4Bjbkfv.js";
7
+ import { f as resolveStatusFile, i as init_paths } from "./paths-_zEts6wc.js";
8
+ import { a as resolveSessionContextBriefingPath, r as init_briefing_freshness } from "./briefing-freshness-DWdW7vUm.js";
9
+ import { n as listFeatureRegistryEntries, t as init_feature_registry_storage } from "./feature-registry-storage-_wUBRD3J.js";
10
+ import { h as listCheckpoints, m as init_checkpoint_manager, s as diffCheckpointFiles, t as captureCheckpoint } from "./checkpoint-manager-DDqcGyu8.js";
11
+ import { i as init_linear_client, r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-D4zqMnX7.js";
12
+ import { i as init_github_client, r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client--XVlDpwM.js";
13
+ import { i as init_rally_client, r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-B1EJhfV0.js";
14
+ import { a as resolveTrackerTypeSync, i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-tnxxqROg.js";
15
+ import { n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-B5ushCvE.js";
16
16
  import { dirname } from "node:path";
17
17
  import { Context, Effect, Layer, Option, Queue, Stream } from "effect";
18
18
  import { basename as basename$1, dirname as dirname$1, join as join$1, resolve as resolve$1 } from "path";
@@ -293,7 +293,7 @@ var init_read_model = __esmMin((() => {
293
293
  };
294
294
  const getSnapshot = Effect.gen(function* () {
295
295
  try {
296
- const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-D5EB5eYr.js"));
296
+ const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-DabvBWUp.js"));
297
297
  const currentIssues = cleanIssues(getSharedIssueService().getIssues());
298
298
  if (currentIssues.length > 0 || state.issuesRaw.length === 0) state = {
299
299
  ...state,
@@ -318,13 +318,13 @@ var init_read_model = __esmMin((() => {
318
318
  const getAgentIdBySessionId = (sessionId) => Effect.sync(() => state.agentIdBySessionId[sessionId] ?? null);
319
319
  const agentsResolver = yield* AgentsResolver;
320
320
  yield* Effect.gen(function* () {
321
- const { reconstructCacheAuto } = yield* Effect.promise(() => import("./reconstruct-cache-BqrCQt0o.js"));
321
+ const { reconstructCacheAuto } = yield* Effect.promise(() => import("./reconstruct-cache-uWbZfjms.js"));
322
322
  const [overdeckAgents, result] = yield* Effect.all([agentsResolver.list({}), Effect.promise(() => reconstructCacheAuto())]);
323
323
  const agentsById = Object.fromEntries(overdeckAgents.map((a) => [a.id, agentSnapshotFromOverdeck(a)]));
324
324
  let sequence = 0;
325
325
  let recentActivity = [];
326
326
  try {
327
- const { getEventStore } = yield* Effect.promise(() => import("./event-store-DABarGNz.js"));
327
+ const { getEventStore } = yield* Effect.promise(() => import("./event-store-Cr5PQwFC.js"));
328
328
  const eventStore = getEventStore();
329
329
  sequence = eventStore.getLatestSequence();
330
330
  recentActivity = activityEntriesFromStoredEvents(eventStore.queryByType("activity.entry", MAX_SNAPSHOT_ACTIVITY_ENTRIES));
@@ -340,7 +340,7 @@ var init_read_model = __esmMin((() => {
340
340
  console.log(`[ReadModel] Bootstrapped from local database: ${Object.keys(agentsById).length} agents, ${Object.keys(result.reviewStatusByIssueId).length} review statuses, ${result.issuesEnumerated} in-flight issue(s), seq=${sequence}`);
341
341
  (async () => {
342
342
  try {
343
- const { listCheckpoints, diffCheckpointFiles, getCheckpointTimestamp, deleteLegacyCheckpointRefs } = await import("./checkpoint-manager-C7mFCY_E.js");
343
+ const { listCheckpoints, diffCheckpointFiles, getCheckpointTimestamp, deleteLegacyCheckpointRefs } = await import("./checkpoint-manager-B7Bt29J0.js");
344
344
  const agents = Object.values(state.agentsById);
345
345
  const firstAgentWithWorkspace = agents.find((a) => a.workspace);
346
346
  if (firstAgentWithWorkspace?.workspace) {
@@ -397,7 +397,7 @@ var init_read_model = __esmMin((() => {
397
397
  }
398
398
  })();
399
399
  try {
400
- const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-D5EB5eYr.js"));
400
+ const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-DabvBWUp.js"));
401
401
  const issueService = getSharedIssueService();
402
402
  const mergeT0 = performance.now();
403
403
  const currentIssues = cleanIssues(issueService.getIssues());
@@ -421,7 +421,7 @@ var init_read_model = __esmMin((() => {
421
421
  issuesRaw: cleaned
422
422
  };
423
423
  try {
424
- if (!_cachedEventStore) import("./event-store-DABarGNz.js").then(({ getEventStore }) => {
424
+ if (!_cachedEventStore) import("./event-store-Cr5PQwFC.js").then(({ getEventStore }) => {
425
425
  _cachedEventStore = getEventStore();
426
426
  try {
427
427
  _cachedEventStore.emitOnly({
@@ -437,7 +437,7 @@ var init_read_model = __esmMin((() => {
437
437
  payload: { issues: cleaned }
438
438
  });
439
439
  } catch {}
440
- import("./backlog-auto-trigger-BUaFI44J.js").then(({ triggerDebouncedIncrementalPass }) => {
440
+ import("./backlog-auto-trigger-GtG71X8H.js").then(({ triggerDebouncedIncrementalPass }) => {
441
441
  triggerDebouncedIncrementalPass(process.cwd());
442
442
  }).catch(() => {});
443
443
  });
@@ -476,7 +476,7 @@ async function assembleLiveBriefingMarkdown(input = {}) {
476
476
  "",
477
477
  "- Persistent memory across sessions through observations, status updates, and rollups.",
478
478
  "- Situational awareness from the live dashboard read model.",
479
- "- Issue-scoped workspaces, beads, vBRIEF plans, and role handoffs for autonomous work.",
479
+ "- Issue-scoped workspaces, beads, xBRIEF plans, and role handoffs for autonomous work.",
480
480
  "- Cross-workspace reach through `pan memory search --all-workspaces` when sibling context is relevant.",
481
481
  "- Searchable feature ownership through the Knowledge Registry.",
482
482
  "",
@@ -1388,4 +1388,4 @@ var init_issue_lifecycle = __esmMin((() => {
1388
1388
  //#endregion
1389
1389
  export { init_queue_position as _, EventStoreService as a, ReadModelService as c, init_read_model as d, toAgentResolution as f, findPositionInQueueSync as g, computeQueuePositionFromStatusSync as h, init_issue_lifecycle as i, ReadModelServiceLive as l, toRole as m, IssueLifecycleLive as n, EventStoreServiceLive as o, toAgentStatus as p, IssueLifecycleWithClientLive as r, init_domain_services as s, IssueLifecycle as t, getClosedIssueIdsForReadSource as u };
1390
1390
 
1391
- //# sourceMappingURL=issue-lifecycle-B7HZWnTA.js.map
1391
+ //# sourceMappingURL=issue-lifecycle-CreaCkjW.js.map
@@ -1,3 +1,3 @@
1
- import { i as init_issue_lifecycle, n as IssueLifecycleLive, r as IssueLifecycleWithClientLive, t as IssueLifecycle } from "./issue-lifecycle-B7HZWnTA.js";
1
+ import { i as init_issue_lifecycle, n as IssueLifecycleLive, r as IssueLifecycleWithClientLive, t as IssueLifecycle } from "./issue-lifecycle-CreaCkjW.js";
2
2
  init_issue_lifecycle();
3
3
  export { IssueLifecycle, IssueLifecycleLive, IssueLifecycleWithClientLive };
@@ -1,11 +1,11 @@
1
1
  import { n as __esmMin, r as __exportAll } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { $n as resolveProjectFromIssueSync, f as loadConfigSync, t as init_config_yaml, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
2
+ import { Tn as init_projects, f as loadConfigSync, t as init_config_yaml, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
3
3
  import { n as openDatabase, t as init_driver } from "./driver-CKVGi51s.js";
4
- import { c as init_review_status, d as loadReviewStatusesForIssues } from "./review-status-CCgPVK1h.js";
5
- import { a as init_tracker_config, n as getLinearApiKey, o as validateRallyConfig, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-DSFZBdXP.js";
4
+ import { f as loadReviewStatusesForIssues, l as init_review_status } from "./review-status-A7quS5KJ.js";
5
+ import { a as init_tracker_config, n as getLinearApiKey, o as validateRallyConfig, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-B4itFzDo.js";
6
6
  import { n as init_dist_src, t as Octokit } from "./dist-src-BSoS7mkd.js";
7
7
  import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-BL_-3Yt8.js";
8
- import { o as init_io, p as readWorkspacePlan, r as findPlan } from "./io-BiM-7Zsx.js";
8
+ import { o as init_io, p as readWorkspacePlan, r as findPlan } from "./io-B3_AHDfr.js";
9
9
  import { Effect } from "effect";
10
10
  import { existsSync } from "fs";
11
11
  import { join } from "path";
@@ -865,7 +865,7 @@ var init_issue_data_service = __esmMin((() => {
865
865
  async ensureShadowStateLoaded() {
866
866
  if (this.shadowStateModule) return;
867
867
  try {
868
- this.shadowStateModule = await import("./shadow-state-CDxEuPlE.js");
868
+ this.shadowStateModule = await import("./shadow-state-C2_epgx2.js");
869
869
  await this.refreshShadowStatesCache();
870
870
  } catch {}
871
871
  }
@@ -1408,8 +1408,8 @@ var init_issue_data_service = __esmMin((() => {
1408
1408
  }
1409
1409
  if (!this.cache.isStale("rally", "issues") && this.trackers.rally.lastFetchedIssues.length > 0) return;
1410
1410
  try {
1411
- const { RallyTracker } = await import("./rally-DGimSRBQ.js");
1412
- const { findProjectsByRallyProject } = await import("./projects-IRHJIPYC.js");
1411
+ const { RallyTracker } = await import("./rally-njs_mJrt.js");
1412
+ const { findProjectsByRallyProject } = await import("./projects-9SkRpES9.js");
1413
1413
  const rallyProjects = findProjectsByRallyProject();
1414
1414
  let allFormatted = [];
1415
1415
  if (rallyProjects.length > 0) {
@@ -1504,4 +1504,4 @@ var init_issue_service_singleton = __esmMin((() => {
1504
1504
  //#endregion
1505
1505
  export { CacheService as a, startSharedIssueService as i, init_issue_service_singleton as n, init_cache_service as o, issue_service_singleton_exports as r, parseIntegerHeader as s, getSharedIssueService as t };
1506
1506
 
1507
- //# sourceMappingURL=issue-service-singleton-CPESc4Or.js.map
1507
+ //# sourceMappingURL=issue-service-singleton-B5ushCvE.js.map
@@ -1,3 +1,3 @@
1
- import { i as startSharedIssueService, n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-CPESc4Or.js";
1
+ import { i as startSharedIssueService, n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-B5ushCvE.js";
2
2
  init_issue_service_singleton();
3
3
  export { getSharedIssueService, startSharedIssueService };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { _ as integer, a as EventBus, c as Records, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-DN2wSxle.js";
2
+ import { _ as integer, a as EventBus, c as Records, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-CzaSOgul.js";
3
3
  import { Context, Effect, Layer, Schema } from "effect";
4
4
  import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
5
5
  //#region ../../lib/overdeck/issues.ts
@@ -350,4 +350,4 @@ var init_issues = __esmMin((() => {
350
350
  //#endregion
351
351
  export { init_issues as n, IssueId as t };
352
352
 
353
- //# sourceMappingURL=issues-XYtFMxrH.js.map
353
+ //# sourceMappingURL=issues-B6ToV6x1.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Or as init_errors, qr as encodeClaudeProjectDir, ti as init_paths } from "./config-yaml-Ciyp2mYe.js";
3
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-Drm7qeD5.js";
2
+ import { Nr as encodeClaudeProjectDir, Vr as init_paths, mr as init_errors } from "./config-yaml-DvyMuOle.js";
3
+ import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-Ca0YTWDw.js";
4
4
  import "effect";
5
5
  import { existsSync, readFileSync, readdirSync, statSync } from "fs";
6
6
  import { basename, join } from "path";
@@ -242,4 +242,4 @@ var init_jsonl_parser = __esmMin((() => {
242
242
  //#endregion
243
243
  export { init_jsonl_parser as a, getSessionFilesSync as i, getAllSessionFilesSync as n, normalizeModelName as o, getProjectDirsSync as r, parseClaudeSessionSync as s, getActiveSessionModelSync as t };
244
244
 
245
- //# sourceMappingURL=jsonl-parser-DJV2eZUP.js.map
245
+ //# sourceMappingURL=jsonl-parser-Dhflo1SH.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { cr as extractPrefixSync, lr as init_issue_id, sr as extractNumberSync } from "./config-yaml-Ciyp2mYe.js";
3
- import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed, t as getLinearApiKey } from "./types-BjaZ1oqH.js";
2
+ import { Jn as extractPrefixSync, Yn as init_issue_id, qn as extractNumberSync } from "./config-yaml-DvyMuOle.js";
3
+ import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed, t as getLinearApiKey } from "./types-BBNjPcqU.js";
4
4
  import { Effect } from "effect";
5
5
  import { exec } from "child_process";
6
6
  import { promisify } from "util";
@@ -106,4 +106,4 @@ __esmMin((() => {
106
106
  }))();
107
107
  export { cleanupMergedLabels };
108
108
 
109
- //# sourceMappingURL=label-cleanup-CJ4m8iRU.js.map
109
+ //# sourceMappingURL=label-cleanup-BKPJm4Hv.js.map
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { An as getIssuePrefix, At as init_record, Pt as readIssueRecordForWorkspaceSync, Un as listProjectsSync, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
3
- import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-DiceZN3a.js";
4
- import { a as RELEASED_LABEL, i as READY_LABEL, n as OBJECTION_LABEL, o as VETOED_LABEL, p as init_pickup, r as PARKED_LABEL, t as BLOCKS_MAIN_LABEL } from "./pickup-xi3KTLaJ.js";
2
+ import { Mt as readIssueRecordForWorkspaceSync, Ot as init_record, Tn as init_projects, gn as getIssuePrefix, kn as listProjectsSync } from "./config-yaml-DvyMuOle.js";
3
+ import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-tnxxqROg.js";
4
+ import { a as READY_LABEL, i as PARKED_LABEL, m as init_pickup, o as RELEASED_LABEL, r as OBJECTION_LABEL, s as VETOED_LABEL, t as BLOCKS_MAIN_LABEL } from "./pickup-Dd0Znxxy.js";
5
5
  import { exec } from "node:child_process";
6
6
  import { promisify } from "node:util";
7
7
  //#region ../../lib/backlog/label-ops.ts
@@ -110,4 +110,4 @@ var init_label_reconciler = __esmMin((() => {
110
110
  //#endregion
111
111
  export { applyIssueObjectionLabel as a, applyIssueReleasedLabel as c, removeIssueBlocksMainLabel as d, removeIssueObjectionLabel as f, removeIssueVetoedLabel as g, removeIssueReleasedLabel as h, applyIssueBlocksMainLabel as i, applyIssueVetoedLabel as l, removeIssueReadyLabel as m, init_label_reconciler as n, applyIssueParkedLabel as o, removeIssueParkedLabel as p, reconcilePipelineLabelsPatrol as r, applyIssueReadyLabel as s, STALE_PIPELINE_LABELS as t, init_label_ops as u };
112
112
 
113
- //# sourceMappingURL=label-reconciler-CNf3Ylm3.js.map
113
+ //# sourceMappingURL=label-reconciler-DdWbHEBu.js.map
@@ -1,9 +1,9 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { B as init_providers, H as qualifyPiModel, ri as packageRoot, ti as init_paths } from "./config-yaml-Ciyp2mYe.js";
3
- import { G as getUiThemeSync, K as init_ui_theme, W as colorFgBgForTheme } from "./tmux-y1blSxks.js";
4
- import { a as getHarnessBehavior } from "./src-Dpq1yFIl.js";
5
- import { t as init_behavior } from "./behavior-Dg-D8eBG.js";
6
- import { d as toCodexSandboxValue, l as init_codex } from "./codex-D_UBEOwL.js";
2
+ import { H as init_providers, Ur as packageRoot, Vr as init_paths, W as qualifyPiModel } from "./config-yaml-DvyMuOle.js";
3
+ import { J as init_ui_theme, K as colorFgBgForTheme, q as getUiThemeSync } from "./tmux-ftABRAmc.js";
4
+ import { o as getHarnessBehavior } from "./src-U7_kTPEE.js";
5
+ import { t as init_behavior } from "./behavior-B_-4EKF3.js";
6
+ import { f as toCodexSandboxValue, l as init_codex } from "./codex-TmSi-yTv.js";
7
7
  import { dirname, join } from "node:path";
8
8
  import { Data } from "effect";
9
9
  //#region ../../lib/model-validation.ts
@@ -12,7 +12,7 @@ function normalizeModelOverrideSync(value) {
12
12
  if (typeof value !== "string") throw new Error("model must be a string.");
13
13
  const trimmed = value.trim();
14
14
  if (trimmed.length === 0) return void 0;
15
- if (!MODEL_ID_PATTERN.test(trimmed)) throw new Error("model must match [A-Za-z0-9._:/@-]{1,128} with no whitespace or shell metacharacters.");
15
+ if (!MODEL_ID_PATTERN.test(trimmed)) throw new Error("model must match [A-Za-z0-9._:/@-] plus square brackets, with 1-128 characters and no whitespace or shell metacharacters.");
16
16
  return trimmed;
17
17
  }
18
18
  function requireModelOverrideSync(value) {
@@ -25,7 +25,7 @@ function shellQuoteModelIdSync(model) {
25
25
  }
26
26
  var MODEL_ID_PATTERN;
27
27
  var init_model_validation = __esmMin((() => {
28
- MODEL_ID_PATTERN = /^[A-Za-z0-9](?:[A-Za-z0-9._:/@-]{0,127})$/;
28
+ MODEL_ID_PATTERN = /^[A-Za-z0-9](?:[A-Za-z0-9._:/@-]|\[|\]){0,127}$/;
29
29
  Data.TaggedError("ModelValidationError");
30
30
  }));
31
31
  //#endregion
@@ -369,10 +369,11 @@ var init_launcher_generator = __esmMin((() => {
369
369
  "GEMINI_API_KEY",
370
370
  "API_TIMEOUT_MS",
371
371
  "CLAUDE_CODE_API_KEY_HELPER_TTL_MS",
372
- "CLAUDE_CODE_AUTO_COMPACT_WINDOW"
372
+ "CLAUDE_CODE_AUTO_COMPACT_WINDOW",
373
+ "CLAUDE_CODE_MAX_CONTEXT_TOKENS"
373
374
  ];
374
375
  }));
375
376
  //#endregion
376
377
  export { requireModelOverrideSync as a, normalizeModelOverrideSync as i, init_launcher_generator as n, shellQuoteModelIdSync as o, init_model_validation as r, generateLauncherScriptSync as t };
377
378
 
378
- //# sourceMappingURL=launcher-generator-5DJRiovn.js.map
379
+ //# sourceMappingURL=launcher-generator-CHVm7bGT.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { ei as getOverdeckHome, ti as init_paths } from "./config-yaml-Ciyp2mYe.js";
2
+ import { Br as getOverdeckHome, Vr as init_paths } from "./config-yaml-DvyMuOle.js";
3
3
  import { existsSync, mkdirSync, writeFileSync } from "fs";
4
4
  import { join } from "path";
5
5
  //#region ../../lib/context-layers/layers.ts
@@ -90,4 +90,4 @@ This file is committed to the repo; \`workspace.md\` is not.
90
90
  //#endregion
91
91
  export { globalContextFile as a, legacyWorkspaceContextFile as c, projectContextFile as d, resolveProjectContextFile as f, workspaceContextFile as h, globalContextDir as i, piGlobalContextFile as l, workspaceContextDir as m, codexGlobalContextFile as n, init_layers as o, resolveWorkspaceContextFile as p, ensureProjectLayer as r, legacyProjectContextFile as s, PROJECT_STARTER as t, projectContextDir as u };
92
92
 
93
- //# sourceMappingURL=layers-cZx7ibtV.js.map
93
+ //# sourceMappingURL=layers-DzxSTGNA.js.map
@@ -0,0 +1,121 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { mr as init_errors } from "./config-yaml-DvyMuOle.js";
3
+ import "effect";
4
+ import { mkdirSync } from "fs";
5
+ import { join } from "path";
6
+ import "fs/promises";
7
+ //#region ../../lib/xbrief/lifecycle.ts
8
+ /**
9
+ * xBRIEF Lifecycle Foundation
10
+ *
11
+ * Canonical xBRIEF documents live in `specs/` on `overdeck-state`, with
12
+ * lifecycle represented by `plan.status`. The `./vbrief/` directory helpers
13
+ * below remain only for legacy lifecycle compatibility:
14
+ *
15
+ * ./vbrief/proposed/
16
+ * ./vbrief/active/
17
+ * ./vbrief/completed/
18
+ * ./vbrief/cancelled/
19
+ *
20
+ * Canonical filenames are issue-keyed: `YYYY-MM-DD-<ISSUE-ID>-<slug>.xbrief.json`,
21
+ * where the date is the immutable creation date. Readers also accept the legacy
22
+ * `.vbrief.json` extension.
23
+ */
24
+ /**
25
+ * Slugify an arbitrary string for use in an xBRIEF filename. Lowercases,
26
+ * replaces non-alphanumeric runs with single dashes, trims leading/trailing
27
+ * dashes, and collapses repeats.
28
+ */
29
+ function slugify(input) {
30
+ return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").replace(/-+/g, "-") || "plan";
31
+ }
32
+ /**
33
+ * Format a JS Date (or ISO string / YYYY-MM-DD) as YYYY-MM-DD in UTC.
34
+ */
35
+ function formatDate(value) {
36
+ const d = typeof value === "string" ? new Date(value) : value;
37
+ if (Number.isNaN(d.getTime())) throw new Error(`Invalid date: ${String(value)}`);
38
+ return `${d.getUTCFullYear().toString().padStart(4, "0")}-${(d.getUTCMonth() + 1).toString().padStart(2, "0")}-${d.getUTCDate().toString().padStart(2, "0")}`;
39
+ }
40
+ /**
41
+ * Generate the canonical xBRIEF filename for an issue.
42
+ *
43
+ * Format: `YYYY-MM-DD-<ISSUE-ID>-<slug>.xbrief.json`
44
+ * Example: `2026-05-03-PAN-946-xbrief-lifecycle.xbrief.json`
45
+ *
46
+ * @param issueId - Issue identifier in the form `PREFIX-NUMBER` (e.g. `PAN-946`).
47
+ * Normalized to uppercase in the filename — issue IDs are
48
+ * uppercase by convention, and case-preservation let a
49
+ * lowercased caller produce a duplicate, case-colliding
50
+ * spec file (PAN-1050).
51
+ * @param slug - Free-form slug (will be normalized via slugify).
52
+ * @param createdDate - Date or ISO string used for the YYYY-MM-DD prefix.
53
+ * Defaults to "now". Always interpreted in UTC so filenames
54
+ * are stable across timezones.
55
+ */
56
+ function generateXBriefFilename(issueId, slug, createdDate = /* @__PURE__ */ new Date()) {
57
+ if (!/^[A-Za-z][A-Za-z0-9]*-\d+$/.test(issueId)) throw new Error(`Invalid issue ID for xBRIEF filename: ${issueId} (expected e.g. PAN-946)`);
58
+ const canonicalIssueId = issueId.toUpperCase();
59
+ return `${formatDate(createdDate)}-${canonicalIssueId}-${slugify(slug)}${XBRIEF_FILENAME_SUFFIX}`;
60
+ }
61
+ /** Return whether a filename uses a supported xBRIEF document extension. */
62
+ function isXBriefFilename(filename) {
63
+ return XBRIEF_FILENAME_SUFFIXES.some((suffix) => filename.endsWith(suffix));
64
+ }
65
+ /**
66
+ * Parse a canonical xBRIEF filename back into its parts. Both the canonical
67
+ * `.xbrief.json` and legacy `.vbrief.json` extensions are accepted. Returns
68
+ * null if the filename doesn't match the convention so callers can ignore
69
+ * stray files.
70
+ */
71
+ function parseXBriefFilename(filename) {
72
+ if (!isXBriefFilename(filename)) return null;
73
+ const suffix = XBRIEF_FILENAME_SUFFIXES.find((candidate) => filename.endsWith(candidate));
74
+ if (!suffix) return null;
75
+ const match = filename.slice(0, -suffix.length).match(FILENAME_STEM_RE);
76
+ if (!match) return null;
77
+ return {
78
+ date: match[1],
79
+ issueId: match[2],
80
+ slug: match[3]
81
+ };
82
+ }
83
+ /**
84
+ * Resolve the absolute path of a specific lifecycle directory under a project's
85
+ * xBRIEF root. Pure path math — does not check existence or create dirs.
86
+ *
87
+ * @param legacyRootDirname - Override the default "vbrief" dirname (from projects.yaml `vbrief_dir`).
88
+ */
89
+ function resolveXBriefDir(projectRoot, lifecycleDir, legacyRootDirname) {
90
+ return join(projectRoot, legacyRootDirname || "vbrief", lifecycleDir);
91
+ }
92
+ /**
93
+ * Ensure the xBRIEF lifecycle directories exist under the given project root.
94
+ * Returns the absolute path to the xBRIEF root. Idempotent.
95
+ *
96
+ * @param legacyRootDirname - Override the default "vbrief" dirname (from projects.yaml `vbrief_dir`).
97
+ */
98
+ function ensureXBriefDirsSync(projectRoot, legacyRootDirname) {
99
+ const root = join(projectRoot, legacyRootDirname || "vbrief");
100
+ mkdirSync(root, { recursive: true });
101
+ for (const dir of LEGACY_VBRIEF_LIFECYCLE_DIRS) mkdirSync(join(root, dir), { recursive: true });
102
+ return root;
103
+ }
104
+ var LEGACY_VBRIEF_LIFECYCLE_DIRS, XBRIEF_FILENAME_SUFFIX, LEGACY_VBRIEF_FILENAME_SUFFIX, XBRIEF_FILENAME_SUFFIXES, FILENAME_STEM_RE;
105
+ var init_lifecycle = __esmMin((() => {
106
+ init_errors();
107
+ LEGACY_VBRIEF_LIFECYCLE_DIRS = [
108
+ "proposed",
109
+ "active",
110
+ "completed",
111
+ "cancelled"
112
+ ];
113
+ XBRIEF_FILENAME_SUFFIX = ".xbrief.json";
114
+ LEGACY_VBRIEF_FILENAME_SUFFIX = ".vbrief.json";
115
+ XBRIEF_FILENAME_SUFFIXES = [XBRIEF_FILENAME_SUFFIX, LEGACY_VBRIEF_FILENAME_SUFFIX];
116
+ FILENAME_STEM_RE = /^(\d{4}-\d{2}-\d{2})-([A-Za-z][A-Za-z0-9]*-\d+)-([a-z0-9-]+)$/;
117
+ }));
118
+ //#endregion
119
+ export { generateXBriefFilename as a, parseXBriefFilename as c, ensureXBriefDirsSync as i, resolveXBriefDir as l, LEGACY_VBRIEF_LIFECYCLE_DIRS as n, init_lifecycle as o, XBRIEF_FILENAME_SUFFIX as r, isXBriefFilename as s, LEGACY_VBRIEF_FILENAME_SUFFIX as t, slugify as u };
120
+
121
+ //# sourceMappingURL=lifecycle-DfeyBDwA.js.map
@@ -0,0 +1,3 @@
1
+ import { a as init_lifecycle_io, s as transitionXBriefOnMain } from "./lifecycle-io-D8iNBcux.js";
2
+ init_lifecycle_io();
3
+ export { transitionXBriefOnMain };
@@ -1,18 +1,18 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { At as init_record, It as readRecordContinueViewSync, Or as init_errors, St as clearRecordFeedbackSync, an as init_auto_commit, gt as appendFeedbackEntrySync, in as flushAutoCommits, on as queueAutoCommit, vr as FsError, vt as appendSessionEntrySync } from "./config-yaml-Ciyp2mYe.js";
3
- import { A as init_vbrief_index, C as init_specs, F as generateVBriefFilename, I as init_lifecycle, L as parseVBriefFilename, N as VBRIEF_LIFECYCLE_DIRS, P as ensureVBriefDirsSync, R as resolveVBriefDir, S as getProjectPanPaths, d as readPlanSync, g as serializeVBriefDocument, j as invalidateVBriefIndex, l as normalizeVBriefEnvelope, o as init_io, z as slugify } from "./io-BiM-7Zsx.js";
4
- import { t as init_pan_dir } from "./pan-dir-Rw17YjT1.js";
2
+ import { Ht as flushAutoCommits, Ot as init_record, Pt as readRecordContinueViewSync, Ut as init_auto_commit, Wt as queueAutoCommit, _t as appendFeedbackEntrySync, bt as clearRecordFeedbackSync, ir as FsError, mr as init_errors, yt as appendSessionEntrySync } from "./config-yaml-DvyMuOle.js";
3
+ import { a as generateXBriefFilename, c as parseXBriefFilename, i as ensureXBriefDirsSync, l as resolveXBriefDir, n as LEGACY_VBRIEF_LIFECYCLE_DIRS, o as init_lifecycle, u as slugify } from "./lifecycle-DfeyBDwA.js";
4
+ import { A as init_xbrief_index, C as init_specs, S as getProjectPanPaths, d as readPlanSync, g as serializeXBriefDocument, j as invalidateXBriefIndex, l as normalizeXBriefEnvelope, o as init_io } from "./io-B3_AHDfr.js";
5
+ import { t as init_pan_dir } from "./pan-dir-DeVUgwA7.js";
5
6
  import { Effect } from "effect";
6
7
  import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, unlinkSync, writeFileSync } from "fs";
7
8
  import { basename, join } from "path";
8
- //#region ../../lib/vbrief/lifecycle-io.ts
9
+ //#region ../../lib/xbrief/lifecycle-io.ts
9
10
  /**
10
- * vBRIEF Lifecycle IO
11
+ * xBRIEF Lifecycle IO
11
12
  *
12
- * PAN-967 finished the migration: `.pan/specs/` is the canonical store for scope
13
- * specs and `.pan/continues/` is the canonical store for project-side continue
14
- * files. Legacy `vbrief/<lifecycle>/` directories remain as read-only fallback
15
- * for legacy spec files only (no continue files — those are at `.pan/continues/`).
13
+ * Canonical scope specs and project-side continue files live in `specs/` and
14
+ * `continues/` on `overdeck-state`. Legacy `vbrief/<lifecycle>/` directories
15
+ * remain a read-only fallback for legacy spec files.
16
16
  */
17
17
  function readSpecFileSync(path) {
18
18
  if (!existsSync(path)) return null;
@@ -24,7 +24,7 @@ function readSpecFileSync(path) {
24
24
  }
25
25
  let parsed;
26
26
  try {
27
- parsed = normalizeVBriefEnvelope(JSON.parse(raw));
27
+ parsed = normalizeXBriefEnvelope(JSON.parse(raw));
28
28
  } catch {
29
29
  return null;
30
30
  }
@@ -40,9 +40,9 @@ function updateSpecStatusSync(projectRoot, issueId, newStatus) {
40
40
  status: newStatus
41
41
  };
42
42
  const tmp = `${existing.path}.tmp`;
43
- writeFileSync(tmp, serializeVBriefDocument(nextDocument), "utf-8");
43
+ writeFileSync(tmp, serializeXBriefDocument(nextDocument), "utf-8");
44
44
  renameSync(tmp, existing.path);
45
- invalidateVBriefIndex(projectRoot);
45
+ invalidateXBriefIndex(projectRoot);
46
46
  return {
47
47
  ...existing,
48
48
  status: newStatus,
@@ -56,13 +56,13 @@ function writeSpecForIssueSync(projectRoot, doc, status, filename) {
56
56
  ...doc,
57
57
  status
58
58
  };
59
- const nextFilename = filename ?? generateVBriefFilename(doc.plan.id, doc.plan.title);
59
+ const nextFilename = filename ?? generateXBriefFilename(doc.plan.id, doc.plan.title);
60
60
  const path = join(specsDir, nextFilename);
61
61
  const tmp = `${path}.tmp`;
62
- writeFileSync(tmp, serializeVBriefDocument(specDocument), "utf-8");
62
+ writeFileSync(tmp, serializeXBriefDocument(specDocument), "utf-8");
63
63
  renameSync(tmp, path);
64
- invalidateVBriefIndex(projectRoot);
65
- const parts = parseVBriefFilename(nextFilename);
64
+ invalidateXBriefIndex(projectRoot);
65
+ const parts = parseXBriefFilename(nextFilename);
66
66
  return {
67
67
  path,
68
68
  filename: nextFilename,
@@ -85,7 +85,7 @@ function findSpecByIssueSync(projectRoot, issueId) {
85
85
  }
86
86
  filenames.sort();
87
87
  for (const filename of filenames) {
88
- const parts = parseVBriefFilename(filename);
88
+ const parts = parseXBriefFilename(filename);
89
89
  if (!parts) continue;
90
90
  if (parts.issueId.toUpperCase() !== upperIssueId) continue;
91
91
  const path = join(specsDir, filename);
@@ -117,9 +117,9 @@ function specEntryToFound(entry) {
117
117
  date: entry.date
118
118
  };
119
119
  }
120
- function findLegacyVBriefByIssue(projectRoot, issueId) {
121
- for (const lifecycleDir of VBRIEF_LIFECYCLE_DIRS) {
122
- const dirPath = resolveVBriefDir(projectRoot, lifecycleDir);
120
+ function findLegacyXBriefByIssue(projectRoot, issueId) {
121
+ for (const lifecycleDir of LEGACY_VBRIEF_LIFECYCLE_DIRS) {
122
+ const dirPath = resolveXBriefDir(projectRoot, lifecycleDir);
123
123
  if (!existsSync(dirPath)) continue;
124
124
  let entries;
125
125
  try {
@@ -128,7 +128,7 @@ function findLegacyVBriefByIssue(projectRoot, issueId) {
128
128
  continue;
129
129
  }
130
130
  for (const entry of entries) {
131
- const parts = parseVBriefFilename(entry);
131
+ const parts = parseXBriefFilename(entry);
132
132
  if (!parts || parts.issueId !== issueId) continue;
133
133
  const path = join(dirPath, entry);
134
134
  try {
@@ -145,10 +145,10 @@ function findLegacyVBriefByIssue(projectRoot, issueId) {
145
145
  }
146
146
  return null;
147
147
  }
148
- function findVBriefByIssueSync(projectRoot, issueId) {
148
+ function findXBriefByIssueSync(projectRoot, issueId) {
149
149
  const spec = findSpecByIssueSync(projectRoot, issueId);
150
150
  if (spec) return specEntryToFound(spec);
151
- return findLegacyVBriefByIssue(projectRoot, issueId);
151
+ return findLegacyXBriefByIssue(projectRoot, issueId);
152
152
  }
153
153
  function ensurePanSpecForIssue(projectRoot, found) {
154
154
  const existingSpec = findSpecByIssueSync(projectRoot, found.issueId);
@@ -171,15 +171,15 @@ function updatePlanStatus(filePath, newStatus) {
171
171
  doc.plan.status = newStatus;
172
172
  doc.plan.sequence = (doc.plan.sequence ?? 0) + 1;
173
173
  doc.plan.updated = now;
174
- doc.vBRIEFInfo.updated = now;
174
+ doc.xBRIEFInfo.updated = now;
175
175
  const tmp = filePath + ".tmp";
176
- writeFileSync(tmp, serializeVBriefDocument(doc), "utf-8");
176
+ writeFileSync(tmp, serializeXBriefDocument(doc), "utf-8");
177
177
  renameSync(tmp, filePath);
178
178
  }
179
- async function transitionVBriefOnMainPromise(projectRoot, issueId, targetDir, newStatus, commitMessage) {
180
- const found = findVBriefByIssueSync(projectRoot, issueId);
181
- if (!found) throw new Error(`No vBRIEF found for issue ${issueId} under ${projectRoot}`);
182
- ensureVBriefDirsSync(projectRoot);
179
+ async function transitionXBriefOnMainPromise(projectRoot, issueId, targetDir, newStatus, commitMessage) {
180
+ const found = findXBriefByIssueSync(projectRoot, issueId);
181
+ if (!found) throw new Error(`No xBRIEF found for issue ${issueId} under ${projectRoot}`);
182
+ ensureXBriefDirsSync(projectRoot);
183
183
  const ensured = ensurePanSpecForIssue(projectRoot, found);
184
184
  const ensuredSpec = ensured.found;
185
185
  const needsMove = ensuredSpec.lifecycleDir !== targetDir;
@@ -205,7 +205,7 @@ async function transitionVBriefOnMainPromise(projectRoot, issueId, targetDir, ne
205
205
  committed = flushed.committed;
206
206
  if (flushed.pushed === false) throw new Error(flushed.reason ?? `Spec transition for ${issueId} was committed but not pushed`);
207
207
  }
208
- if (changed) invalidateVBriefIndex(projectRoot);
208
+ if (changed) invalidateXBriefIndex(projectRoot);
209
209
  return {
210
210
  fromDir: found.lifecycleDir,
211
211
  toDir: targetDir,
@@ -242,26 +242,26 @@ function clearFeedbackForIssue(projectRoot, issueId) {
242
242
  path: projectRoot
243
243
  }, issueId);
244
244
  }
245
- var transitionVBriefOnMain;
245
+ var transitionXBriefOnMain;
246
246
  var init_lifecycle_io = __esmMin((() => {
247
247
  init_pan_dir();
248
248
  init_lifecycle();
249
249
  init_io();
250
- init_vbrief_index();
250
+ init_xbrief_index();
251
251
  init_specs();
252
252
  init_record();
253
253
  init_errors();
254
254
  init_auto_commit();
255
- transitionVBriefOnMain = (projectRoot, issueId, targetDir, newStatus, commitMessage) => Effect.tryPromise({
256
- try: () => transitionVBriefOnMainPromise(projectRoot, issueId, targetDir, newStatus, commitMessage),
255
+ transitionXBriefOnMain = (projectRoot, issueId, targetDir, newStatus, commitMessage) => Effect.tryPromise({
256
+ try: () => transitionXBriefOnMainPromise(projectRoot, issueId, targetDir, newStatus, commitMessage),
257
257
  catch: (cause) => new FsError({
258
258
  path: projectRoot,
259
- operation: "transitionVBriefOnMain",
259
+ operation: "transitionXBriefOnMain",
260
260
  cause
261
261
  })
262
262
  });
263
263
  }));
264
264
  //#endregion
265
- export { init_lifecycle_io as a, updatePlanStatus as c, findVBriefByIssueSync as i, appendFeedbackEntryForIssue as n, readContinueStateForIssue as o, clearFeedbackForIssue as r, transitionVBriefOnMain as s, appendContinueSessionEntryForIssue as t };
265
+ export { init_lifecycle_io as a, updatePlanStatus as c, findXBriefByIssueSync as i, appendFeedbackEntryForIssue as n, readContinueStateForIssue as o, clearFeedbackForIssue as r, transitionXBriefOnMain as s, appendContinueSessionEntryForIssue as t };
266
266
 
267
- //# sourceMappingURL=lifecycle-io-DMurK4oM.js.map
267
+ //# sourceMappingURL=lifecycle-io-D8iNBcux.js.map