@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,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Or as init_errors, Sr as LinearApiError, br as GitHubApiError, f as loadConfigSync, t as init_config_yaml } from "./config-yaml-Ciyp2mYe.js";
2
+ import { cr as LinearApiError, f as loadConfigSync, mr as init_errors, or as GitHubApiError, t as init_config_yaml } from "./config-yaml-DvyMuOle.js";
3
3
  import { n as init_dist_src, t as Octokit } from "./dist-src-BSoS7mkd.js";
4
- import { a as TrackerAuthError, i as NotImplementedError, o as init_interface, r as IssueNotFoundError } from "./rally-api-DGaFz5L5.js";
5
- import { n as init_rally, t as RallyTracker } from "./rally-Dp0Gb1DN.js";
4
+ import { a as TrackerAuthError, i as NotImplementedError, o as init_interface, r as IssueNotFoundError } from "./rally-api-nY0ZANw3.js";
5
+ import { n as init_rally, t as RallyTracker } from "./rally-B708-nZn.js";
6
6
  import { Effect } from "effect";
7
7
  import { LinearClient } from "@linear/sdk";
8
8
  //#region ../../lib/tracker/linear.ts
@@ -54,19 +54,38 @@ var init_linear = __esmMin((() => {
54
54
  listIssues(filters) {
55
55
  const team = filters?.team ?? this.defaultTeam;
56
56
  const self = this;
57
- return linearCall("listIssues", () => self.client.issues({
58
- first: filters?.limit ?? 50,
59
- filter: {
57
+ return linearCall("listIssues", async () => {
58
+ const limit = filters?.limit;
59
+ const filter = {
60
60
  team: team ? { key: { eq: team } } : void 0,
61
61
  state: filters?.state ? { type: { eq: self.reverseMapState(filters.state) } } : filters?.includeClosed ? void 0 : { type: { neq: "completed" } },
62
62
  labels: filters?.labels?.length ? { name: { in: filters.labels } } : void 0,
63
63
  assignee: filters?.assignee ? { name: { containsIgnoreCase: filters.assignee } } : void 0
64
- }
65
- })).pipe(Effect.flatMap((result) => linearCall("listIssues:normalize", async () => {
66
- const issues = [];
67
- for (const node of result.nodes) issues.push(await self.normalizeIssue(node));
68
- return issues;
69
- })));
64
+ };
65
+ const query = `query ListIssues($filter: IssueFilter, $first: Int!, $after: String) {
66
+ issues(filter: $filter, first: $first, after: $after) {
67
+ nodes {
68
+ id identifier title description url priority dueDate createdAt updatedAt
69
+ state { type } assignee { name } labels { nodes { name } }
70
+ }
71
+ pageInfo { hasNextPage endCursor }
72
+ }
73
+ }`;
74
+ const nodes = [];
75
+ let after = null;
76
+ do {
77
+ const first = Math.min(limit === void 0 ? 50 : limit - nodes.length, 50);
78
+ const page = (await self.client.client.rawRequest(query, {
79
+ filter,
80
+ first,
81
+ after
82
+ })).data?.issues;
83
+ if (!page?.nodes || !Array.isArray(page.nodes)) throw new Error("Incomplete Linear issues response");
84
+ nodes.push(...page.nodes);
85
+ after = page.pageInfo?.hasNextPage && page.pageInfo.endCursor ? page.pageInfo.endCursor : null;
86
+ } while (after !== null && (limit === void 0 || nodes.length < limit));
87
+ return (limit === void 0 ? nodes : nodes.slice(0, limit)).map((node) => self.normalizeListedIssue(node));
88
+ });
70
89
  }
71
90
  getIssue(id) {
72
91
  const self = this;
@@ -206,6 +225,24 @@ var init_linear = __esmMin((() => {
206
225
  getChildIssues(_parentId) {
207
226
  return Effect.succeed([]);
208
227
  }
228
+ /** Map a raw-GraphQL listed node (relations already inlined) — no lazy SDK loads. */
229
+ normalizeListedIssue(node) {
230
+ return {
231
+ id: node.id,
232
+ ref: node.identifier,
233
+ title: node.title,
234
+ description: node.description ?? "",
235
+ state: this.mapState(node.state?.type ?? "backlog"),
236
+ labels: node.labels?.nodes?.flatMap((label) => label.name ? [label.name] : []) ?? [],
237
+ assignee: node.assignee?.name ?? void 0,
238
+ url: node.url,
239
+ tracker: "linear",
240
+ priority: node.priority ?? void 0,
241
+ dueDate: node.dueDate ?? void 0,
242
+ createdAt: node.createdAt,
243
+ updatedAt: node.updatedAt
244
+ };
245
+ }
209
246
  async normalizeIssue(linearIssue) {
210
247
  const state = await linearIssue.state;
211
248
  const assignee = await linearIssue.assignee;
@@ -682,4 +719,4 @@ var init_factory = __esmMin((() => {
682
719
  //#endregion
683
720
  export { init_linear as a, LinearTracker as i, createTrackerFromConfig as n, init_factory as r, createTracker as t };
684
721
 
685
- //# sourceMappingURL=factory-CQNprtHe.js.map
722
+ //# sourceMappingURL=factory-CynerjXO.js.map
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { t as init_config_yaml } from "./config-yaml-Ciyp2mYe.js";
3
- import { r as updateFeatureRegistryOwnership, t as init_feature_registry_storage } from "./feature-registry-storage-BWymOgXE.js";
4
- import { t as init_providers } from "./providers-d3pwXGVE.js";
2
+ import { t as init_config_yaml } from "./config-yaml-DvyMuOle.js";
3
+ import { r as updateFeatureRegistryOwnership, t as init_feature_registry_storage } from "./feature-registry-storage-_wUBRD3J.js";
4
+ import { t as init_providers } from "./providers-DV7ec8l7.js";
5
5
  import { basename } from "node:path";
6
6
  import { Schema } from "effect";
7
7
  //#region ../../lib/registry/feature-registry-population.ts
@@ -40,4 +40,4 @@ var init_feature_registry_population = __esmMin((() => {
40
40
  //#endregion
41
41
  export { recordFeatureRegistryLifecycle as n, init_feature_registry_population as t };
42
42
 
43
- //# sourceMappingURL=feature-registry-population-D9Z3tYSa.js.map
43
+ //# sourceMappingURL=feature-registry-population-B0pmAz0a.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 { n as openDatabase, t as init_driver } from "./driver-CKVGi51s.js";
4
4
  import { dirname, join } from "node:path";
5
5
  import { mkdirSync } from "node:fs";
@@ -263,4 +263,4 @@ var init_feature_registry_storage = __esmMin((() => {
263
263
  //#endregion
264
264
  export { listFeatureRegistryEntries as n, updateFeatureRegistryOwnership as r, init_feature_registry_storage as t };
265
265
 
266
- //# sourceMappingURL=feature-registry-storage-BWymOgXE.js.map
266
+ //# sourceMappingURL=feature-registry-storage-_wUBRD3J.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { f as loadConfigSync, t as init_config_yaml } from "./config-yaml-Ciyp2mYe.js";
2
+ import { f as loadConfigSync, t as init_config_yaml } from "./config-yaml-DvyMuOle.js";
3
3
  //#region ../../lib/background-ai/features.ts
4
4
  /**
5
5
  * The single gate every background AI caller must consult before invoking a
@@ -18,4 +18,4 @@ var init_features = __esmMin((() => {
18
18
  //#endregion
19
19
  export { isBackgroundFeatureEnabled as n, init_features as t };
20
20
 
21
- //# sourceMappingURL=features--fOza5g5.js.map
21
+ //# sourceMappingURL=features-Dhxz-wLc.js.map
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { $n as resolveProjectFromIssueSync, At as init_record, Ft as readIssueRecordSync, Nn as getProjectSync, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
3
- import { n as updateIssueRecord, t as init_record_update } from "./record-update-RviRDSNs.js";
4
- import { V as sessionExists, j as listSessionNames, w as init_tmux } from "./tmux-y1blSxks.js";
2
+ import { Nt as readIssueRecordSync, Ot as init_record, Tn as init_projects, yn as getProjectSync, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
3
+ import { n as updateIssueRecord, t as init_record_update } from "./record-update-Dq0t2uBG.js";
4
+ import { H as sessionExists, M as listSessionNames, w as init_tmux } from "./tmux-ftABRAmc.js";
5
5
  import { Effect } from "effect";
6
6
  //#region ../../lib/cloister/feedback-target.ts
7
7
  async function isLiveSession(agentId) {
@@ -108,7 +108,7 @@ async function resolveIssueFeedbackTarget(issueId, opts = {}) {
108
108
  */
109
109
  async function resurrectAgentForFeedback(agentId, issueId) {
110
110
  try {
111
- const { getAgentStateSync, clearAgentPausedSync, clearAgentTroubledSync } = await import("./agent-state-BV_6RHnO.js");
111
+ const { getAgentStateSync, clearAgentPausedSync, clearAgentTroubledSync } = await import("./agent-state-Bg0lhqwj.js");
112
112
  const state = getAgentStateSync(agentId);
113
113
  if (!state) return false;
114
114
  if (state.paused === true) {
@@ -124,7 +124,7 @@ async function resurrectAgentForFeedback(agentId, issueId) {
124
124
  console.warn(`[feedback-target] ${agentId} is gated (troubled=${state.troubled === true}, failures=${state.consecutiveFailures ?? 0}) — clearing for one resurrection attempt to deliver ${issueId} feedback; failure tracking re-trips the gate on another crash`);
125
125
  clearAgentTroubledSync(agentId);
126
126
  }
127
- const { resumeAgent } = await import("./resume-OyN3dEXE.js");
127
+ const { resumeAgent } = await import("./resume-CcKqnTvE.js");
128
128
  const result = await resumeAgent(agentId);
129
129
  if (!result.success) {
130
130
  console.warn(`[feedback-target] Failed to resurrect ${agentId} for ${issueId} feedback: ${result.error}`);
@@ -138,7 +138,7 @@ async function resurrectAgentForFeedback(agentId, issueId) {
138
138
  }
139
139
  async function surfaceIssueFeedbackNeedsYou(issueId, reason, details = {}) {
140
140
  try {
141
- const { markWorkspaceStuck } = await import("./review-status-DXeqFpk5.js");
141
+ const { markWorkspaceStuck } = await import("./review-status-C6n6-9f_.js");
142
142
  markWorkspaceStuck(issueId, "feedback_delivery_needs_you", {
143
143
  reason,
144
144
  ...details
@@ -157,4 +157,4 @@ var init_feedback_target = __esmMin((() => {
157
157
  //#endregion
158
158
  export { resolveIssueFeedbackTarget as n, surfaceIssueFeedbackNeedsYou as r, init_feedback_target as t };
159
159
 
160
- //# sourceMappingURL=feedback-target-Dqik2WTe.js.map
160
+ //# sourceMappingURL=feedback-target-CPS15Vte.js.map
@@ -1,3 +1,3 @@
1
- import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-Dqik2WTe.js";
1
+ import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-CPS15Vte.js";
2
2
  init_feedback_target();
3
3
  export { resolveIssueFeedbackTarget, surfaceIssueFeedbackNeedsYou };
@@ -1,14 +1,15 @@
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 clearFeedback, o as readFeedback, s as writeFeedback, t as init_pan_dir, u as getWorkspacePanPaths } from "./pan-dir-Rw17YjT1.js";
4
- import { a as init_lifecycle_io, n as appendFeedbackEntryForIssue, o as readContinueStateForIssue, r as clearFeedbackForIssue, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-DMurK4oM.js";
2
+ import { Tn as init_projects, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
3
+ import { I as getWorkspacePanPaths } from "./io-B3_AHDfr.js";
4
+ import { c as clearFeedback, l as readFeedback, t as init_pan_dir, u as writeFeedback } from "./pan-dir-DeVUgwA7.js";
5
+ import { a as init_lifecycle_io, n as appendFeedbackEntryForIssue, o as readContinueStateForIssue, r as clearFeedbackForIssue, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-D8iNBcux.js";
5
6
  import { Data, Effect } from "effect";
6
7
  import { existsSync } from "fs";
7
8
  import { join } from "path";
8
9
  import { readdir } from "fs/promises";
9
10
  //#region ../../lib/cloister/feedback-writer.ts
10
11
  /**
11
- * Feedback Writer — writes specialist feedback to the scope vBRIEF continue
12
+ * Feedback Writer — writes specialist feedback to the scope xBRIEF continue
12
13
  * file and mirrors it into workspace `.pan/feedback/` for agent consumption.
13
14
  *
14
15
  * All I/O is async (fs/promises) — never execSync.
@@ -148,4 +149,4 @@ var init_feedback_writer = __esmMin((() => {
148
149
  //#endregion
149
150
  export { writeFeedbackFile as a, init_feedback_writer as i, archiveFeedbackFiles as n, clearFeedbackFiles as r, FeedbackWriteError as t };
150
151
 
151
- //# sourceMappingURL=feedback-writer-Wlq5-qgS.js.map
152
+ //# sourceMappingURL=feedback-writer-C9b6ccN1.js.map
@@ -1,3 +1,3 @@
1
- import { a as writeFeedbackFile, i as init_feedback_writer, n as archiveFeedbackFiles, r as clearFeedbackFiles, t as FeedbackWriteError } from "./feedback-writer-Wlq5-qgS.js";
1
+ import { a as writeFeedbackFile, i as init_feedback_writer, n as archiveFeedbackFiles, r as clearFeedbackFiles, t as FeedbackWriteError } from "./feedback-writer-C9b6ccN1.js";
2
2
  init_feedback_writer();
3
3
  export { FeedbackWriteError, archiveFeedbackFiles, clearFeedbackFiles, writeFeedbackFile };
@@ -1,2 +1,2 @@
1
- import { o as pauseFlywheel, s as resumeFlywheel } from "./flywheel-1Wd8WDlh.js";
1
+ import { o as pauseFlywheel, s as resumeFlywheel } from "./flywheel-DSSpWmqF.js";
2
2
  export { pauseFlywheel, resumeFlywheel };
@@ -1,15 +1,15 @@
1
1
  import { a as __toCommonJS } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { En as findProjectByPathSync, Mn as getProjectSwarmHotspots, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
3
- import { _ as FlywheelRunId, t as init_src, v as FlywheelStatus } from "./src-Dpq1yFIl.js";
4
- import { c as init_review_status, s as getReviewStatusSync } from "./review-status-CCgPVK1h.js";
5
- import { a as countAgentsByStatusRole, o as init_agents } from "./agents-DbrHWunF.js";
6
- import { $ as stopAgent, Dn as getAgentDir, Z as spawnRun, s as init_agents$1 } from "./queries-B5hl7lMQ.js";
7
- import { n as init_issue_service_singleton, r as issue_service_singleton_exports } from "./issue-service-singleton-CPESc4Or.js";
8
- import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DhfFiwW7.js";
9
- import { d as isFlywheelAutoPickupBacklog, f as isFlywheelGloballyPaused, i as getFlywheelActiveRunId, p as isFlywheelRequireUatBeforeMerge, s as init_control_settings, x as setFlywheelGloballyPaused, y as setFlywheelActiveRunId } from "./control-settings-D_79A6gp.js";
10
- import { n as parseSequenceMd, t as init_sequence_io } from "./sequence-io-Ce-6grIY.js";
11
- import { a as declaredIssueFootprint, i as computePredictedConflictSignals, s as pickFromSequence } from "./flywheel-merge-order-4SqOXFAr.js";
12
- import { a as init_pipeline_membership_gather, n as resolvePipelineMembership, r as gatherProjectLensSignals, t as init_pipeline_membership } from "./pipeline-membership-BtKMNY7v.js";
2
+ import { Tn as init_projects, fn as findProjectByPathSync, vn as getProjectSwarmHotspots } from "./config-yaml-DvyMuOle.js";
3
+ import { t as init_src, v as FlywheelRunId, y as FlywheelStatus } from "./src-U7_kTPEE.js";
4
+ import { c as getReviewStatusSync, l as init_review_status } from "./review-status-A7quS5KJ.js";
5
+ import { a as countAgentsByStatusRole, o as init_agents } from "./agents-B4Bjbkfv.js";
6
+ import { Bn as getAgentDir, b as init_agents$1, ft as stopAgent, ut as spawnRun } from "./queries-6d7Cdtm7.js";
7
+ import { n as init_issue_service_singleton, r as issue_service_singleton_exports } from "./issue-service-singleton-B5ushCvE.js";
8
+ import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-Bb4XeV2x.js";
9
+ import { d as isFlywheelAutoPickupBacklog, f as isFlywheelGloballyPaused, i as getFlywheelActiveRunId, p as isFlywheelRequireUatBeforeMerge, s as init_control_settings, x as setFlywheelGloballyPaused, y as setFlywheelActiveRunId } from "./control-settings-aP1ANIlI.js";
10
+ import { n as parseSequenceMd, t as init_sequence_io } from "./sequence-io-Cg0zYj_E.js";
11
+ import { a as declaredIssueFootprint, i as computePredictedConflictSignals, s as pickFromSequence } from "./flywheel-merge-order-DxbQKE1d.js";
12
+ import { i as gatherProjectLensSignals, n as init_pipeline_membership, o as init_pipeline_membership_gather, r as resolvePipelineMembership } from "./pipeline-membership-0HaEGDlH.js";
13
13
  import { dirname, join } from "node:path";
14
14
  import { Effect, Schema } from "effect";
15
15
  import { homedir } from "node:os";
@@ -264,7 +264,7 @@ async function abortFlywheelRun(runId, options = {}) {
264
264
  init_sequence_io();
265
265
  /**
266
266
  * Build the {@link ClassifyLookups} the shared pickup module needs from live project
267
- * state: labels (in-memory issue service), planned (readable vBRIEF spec), and
267
+ * state: labels (in-memory issue service), planned (readable xBRIEF spec), and
268
268
  * in-pipeline (review status / live workspace). Shared by the dashboard forecast
269
269
  * route and the Flywheel run-cohort snapshot so both classify issues identically
270
270
  * (PAN-2006 single source of truth). The issue service is lazy-required to avoid a
@@ -519,4 +519,4 @@ async function resumeFlywheel(options = {}) {
519
519
  //#endregion
520
520
  export { writeLatestFlywheelStatus as C, writeFlywheelLaunchMetadata as S, nextFlywheelRunId as _, loadResumeSessionId as a, resolveLiveFlywheelRunId as b, saveResumeSessionId as c, abortFlywheelRun as d, clearFlywheelGate as f, listFlywheelRuns as g, isFlywheelRunId as h, isIssueInResolvedPipeline as i, spawnFlywheelAgent as l, getFlywheelRunDir as m, buildFlywheelResumePrompt as n, pauseFlywheel as o, getFlywheelRunDetail as p, isFlywheelDevcontainerRuntime as r, resumeFlywheel as s, FLYWHEEL_ORCHESTRATOR_AGENT_ID as t, buildClassifyLookups as u, readCurrentLatestFlywheelStatus as v, subscribeLatestFlywheelStatus as x, readFlywheelLaunchMetadata as y };
521
521
 
522
- //# sourceMappingURL=flywheel-1Wd8WDlh.js.map
522
+ //# sourceMappingURL=flywheel-DSSpWmqF.js.map
@@ -1,16 +1,16 @@
1
- import { t as init_config_yaml } from "./config-yaml-Ciyp2mYe.js";
2
- import { V as sessionExists, w as init_tmux } from "./tmux-y1blSxks.js";
3
- import { c as FlywheelStats, t as init_src, v as FlywheelStatus } from "./src-Dpq1yFIl.js";
4
- import { s as init_agents } from "./queries-B5hl7lMQ.js";
5
- import { s as init_internal_token } from "./internal-token-DhfFiwW7.js";
6
- import { i as getFlywheelActiveRunId, s as init_control_settings } from "./control-settings-D_79A6gp.js";
7
- import { t as init_harness_resolve } from "./harness-resolve-BGpO-OVM.js";
8
- import "./substrate-bug-weights-service-DXd0ID83.js";
9
- import { f as clearFlywheelGate, g as listFlywheelRuns, m as getFlywheelRunDir, p as getFlywheelRunDetail } from "./flywheel-1Wd8WDlh.js";
10
- import { f as init_github_app } from "./github-app-B3yfECo8.js";
11
- import { t as init_sequence_io } from "./sequence-io-Ce-6grIY.js";
12
- import { r as computeMergeQueue } from "./flywheel-merge-order-4SqOXFAr.js";
13
- import "./merge-blockers-DhRgh76x.js";
1
+ import { t as init_config_yaml } from "./config-yaml-DvyMuOle.js";
2
+ import { H as sessionExists, w as init_tmux } from "./tmux-ftABRAmc.js";
3
+ import { l as FlywheelStats, t as init_src, y as FlywheelStatus } from "./src-U7_kTPEE.js";
4
+ import { b as init_agents } from "./queries-6d7Cdtm7.js";
5
+ import { s as init_internal_token } from "./internal-token-Bb4XeV2x.js";
6
+ import { i as getFlywheelActiveRunId, s as init_control_settings } from "./control-settings-aP1ANIlI.js";
7
+ import { t as init_harness_resolve } from "./harness-resolve-qHJBhy3Z.js";
8
+ import { f as init_github_app } from "./github-app-CMBdIFBQ.js";
9
+ import "./substrate-bug-weights-service-BH66lhm7.js";
10
+ import { f as clearFlywheelGate, g as listFlywheelRuns, m as getFlywheelRunDir, p as getFlywheelRunDetail } from "./flywheel-DSSpWmqF.js";
11
+ import { t as init_sequence_io } from "./sequence-io-Cg0zYj_E.js";
12
+ import { r as computeMergeQueue } from "./flywheel-merge-order-DxbQKE1d.js";
13
+ import "./merge-blockers-BsFjGrQ8.js";
14
14
  import { join } from "node:path";
15
15
  import { Effect, Schema } from "effect";
16
16
  import "node:os";
@@ -204,4 +204,4 @@ async function flywheelReportCommand(options = {}) {
204
204
  //#endregion
205
205
  export { flywheelReportCommand };
206
206
 
207
- //# sourceMappingURL=flywheel-DPUc8r3V.js.map
207
+ //# sourceMappingURL=flywheel-DcBkQvgE.js.map
@@ -1,2 +1,2 @@
1
- import { c as resolveMergeQueuePrUrl, l as reviewRecordEligibility, r as computeMergeQueue } from "./flywheel-merge-order-4SqOXFAr.js";
1
+ import { c as resolveMergeQueuePrUrl, l as reviewRecordEligibility, r as computeMergeQueue } from "./flywheel-merge-order-DxbQKE1d.js";
2
2
  export { computeMergeQueue, resolveMergeQueuePrUrl, reviewRecordEligibility };
@@ -1,9 +1,9 @@
1
- import { En as findProjectByPathSync, Mn as getProjectSwarmHotspots, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
2
- import { c as init_review_status, p as mergeGateEligibility, s as getReviewStatusSync } from "./review-status-CCgPVK1h.js";
3
- import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-DiceZN3a.js";
4
- import { l as init_dag, r as compileGlob } from "./dag-DIji6O2b.js";
5
- import { n as computeIssueFootprint, r as init_swarm_readiness } from "./swarm-readiness-C9P2iPap.js";
6
- import { m as isAutoPickable, p as init_pickup, s as classifyIssue } from "./pickup-xi3KTLaJ.js";
1
+ import { Tn as init_projects, fn as findProjectByPathSync, vn as getProjectSwarmHotspots } from "./config-yaml-DvyMuOle.js";
2
+ import { c as getReviewStatusSync, l as init_review_status, m as mergeGateEligibility } from "./review-status-A7quS5KJ.js";
3
+ import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-tnxxqROg.js";
4
+ import { l as init_dag, r as compileGlob } from "./dag-CdOjJVDT.js";
5
+ import { n as computeIssueFootprint, r as init_swarm_readiness } from "./swarm-readiness-CQ_fwUWF.js";
6
+ import { c as classifyIssue, h as isAutoPickable, m as init_pickup } from "./pickup-Dd0Znxxy.js";
7
7
  import { Effect } from "effect";
8
8
  import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
9
9
  //#region ../../lib/flywheel-merge-order.ts
@@ -192,7 +192,7 @@ const computeMergeQueue = (items, projectRoot, options = {}) => Effect.gen(funct
192
192
  * - not in-pipeline (active review/work/test)
193
193
  * - no parked labels (`parked`; legacy `needs-design`/`needs-discussion`)
194
194
  * - not in the optional exclusion set (e.g. already running agents)
195
- * - FR-14: must have a vBRIEF spec (ready) or a PRD draft (hasPrd)
195
+ * - FR-14: must have an xBRIEF spec (ready) or a PRD draft (hasPrd)
196
196
  *
197
197
  * Returns null when no eligible issue is found.
198
198
  */
@@ -241,4 +241,4 @@ function pickFromSequence(nodes, opts) {
241
241
  //#endregion
242
242
  export { declaredIssueFootprint as a, resolveMergeQueuePrUrl as c, computePredictedConflictSignals as i, reviewRecordEligibility as l, changedFilesVsMain as n, orderMergeCandidates as o, computeMergeQueue as r, pickFromSequence as s, MERGE_GATE_VERBS as t };
243
243
 
244
- //# sourceMappingURL=flywheel-merge-order-4SqOXFAr.js.map
244
+ //# sourceMappingURL=flywheel-merge-order-DxbQKE1d.js.map
@@ -0,0 +1,2 @@
1
+ import { n as getForgeAdapter } from "./forge-Ch9gCFod.js";
2
+ export { getForgeAdapter };
@@ -1,4 +1,4 @@
1
- import { S as parsePullRequestRef, d as getPullRequestState, f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead, x as mergePullRequestWithApp } from "./github-app-B3yfECo8.js";
1
+ import { S as parsePullRequestRef, d as getPullRequestState, f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead, x as mergePullRequestWithApp } from "./github-app-CMBdIFBQ.js";
2
2
  import { join } from "node:path";
3
3
  import { Data, Effect } from "effect";
4
4
  import { tmpdir } from "node:os";
@@ -267,4 +267,4 @@ function getForgeAdapter(forge) {
267
267
  //#endregion
268
268
  export { getForgeAdapter as n, parseArtifactRef as r, GITHUB_MERGE_TIMEOUT_MS as t };
269
269
 
270
- //# sourceMappingURL=forge-DBbDpiYc.js.map
270
+ //# sourceMappingURL=forge-Ch9gCFod.js.map
@@ -3841,4 +3841,4 @@ var init_from = __esmMin((() => {
3841
3841
  //#endregion
3842
3842
  export { File as a, init_esm_min as i, FormData as n, Blob as o, formDataToBlob as r, init_fetch_blob as s, init_from as t };
3843
3843
 
3844
- //# sourceMappingURL=from-hh6vTBGl.js.map
3844
+ //# sourceMappingURL=from-CJ_aH5jD.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { a as runMemoryFtsTransactionSync, i as runMemoryFtsStatementSync, n as getMemoryFtsDatabaseSync, r as init_fts_operations, t as closeMemoryFtsDatabasesInProcess } from "./fts-operations-KIRK165y.js";
2
+ import { a as runMemoryFtsTransactionSync, i as runMemoryFtsStatementSync, n as getMemoryFtsDatabaseSync, r as init_fts_operations, t as closeMemoryFtsDatabasesInProcess } from "./fts-operations-BrL_VTRr.js";
3
3
  import { Worker } from "node:worker_threads";
4
4
  //#region ../../lib/memory/fts-db.ts
5
5
  async function getMemoryFtsDatabase(projectId) {
@@ -143,4 +143,4 @@ var init_fts_db = __esmMin((() => {
143
143
  //#endregion
144
144
  export { withMemoryFtsDatabase as a, runMemoryFtsTransaction as i, init_fts_db as n, runMemoryFtsStatement as r, closeMemoryFtsDatabases as t };
145
145
 
146
- //# sourceMappingURL=fts-db-6ponMie2.js.map
146
+ //# sourceMappingURL=fts-db-CKgg0VKg.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
2
  import { n as openDatabase, t as init_driver } from "./driver-CKVGi51s.js";
3
- import { i as init_paths, o as resolveFtsDbPath } from "./paths-FP8v3lTz.js";
3
+ import { i as init_paths, o as resolveFtsDbPath } from "./paths-_zEts6wc.js";
4
4
  import { dirname } from "node:path";
5
5
  import { mkdirSync } from "node:fs";
6
6
  //#region ../../lib/memory/fts-operations.ts
@@ -131,4 +131,4 @@ var init_fts_operations = __esmMin((() => {
131
131
  //#endregion
132
132
  export { runMemoryFtsTransactionSync as a, runMemoryFtsStatementSync as i, getMemoryFtsDatabaseSync as n, init_fts_operations as r, closeMemoryFtsDatabasesInProcess as t };
133
133
 
134
- //# sourceMappingURL=fts-operations-KIRK165y.js.map
134
+ //# sourceMappingURL=fts-operations-BrL_VTRr.js.map
@@ -0,0 +1,198 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { ar as GitError, ir as FsError, mr as init_errors } from "./config-yaml-DvyMuOle.js";
3
+ import { Effect } from "effect";
4
+ import { existsSync, readdirSync, unlinkSync } from "fs";
5
+ import { join } from "path";
6
+ import { exec, execFile } from "child_process";
7
+ import { promisify } from "util";
8
+ //#region ../../lib/git-utils.ts
9
+ /**
10
+ * Git utilities for handling common git operations and recovery
11
+ */
12
+ function killProcessTree(child) {
13
+ if (!child?.pid) return;
14
+ try {
15
+ if (process.platform === "win32") child.kill("SIGKILL");
16
+ else process.kill(-child.pid, "SIGKILL");
17
+ } catch {
18
+ try {
19
+ child.kill("SIGKILL");
20
+ } catch {}
21
+ }
22
+ }
23
+ function runProcessProbe(file, args, repoPath, options) {
24
+ const command = `${file} ${args.join(" ")}`;
25
+ if (options.signal?.aborted) return Promise.reject(new ProcessProbeTerminationError(command, "abort", options.processProbeTimeoutMs));
26
+ return new Promise((resolve, reject) => {
27
+ let child;
28
+ let termination;
29
+ const terminate = (kind) => {
30
+ if (termination) return;
31
+ termination = kind;
32
+ killProcessTree(child);
33
+ };
34
+ const timeout = setTimeout(() => terminate("timeout"), options.processProbeTimeoutMs);
35
+ const onAbort = () => terminate("abort");
36
+ options.signal?.addEventListener("abort", onAbort, { once: true });
37
+ child = execFileDetached(file, args, {
38
+ cwd: repoPath,
39
+ encoding: "utf-8",
40
+ detached: process.platform !== "win32"
41
+ }, (error, stdout, stderr) => {
42
+ clearTimeout(timeout);
43
+ options.signal?.removeEventListener("abort", onAbort);
44
+ if (termination) reject(Object.assign(new ProcessProbeTerminationError(command, termination, options.processProbeTimeoutMs), {
45
+ stdout,
46
+ stderr
47
+ }));
48
+ else if (error) reject(Object.assign(error, {
49
+ stdout,
50
+ stderr
51
+ }));
52
+ else resolve(stdout);
53
+ });
54
+ if (options.signal?.aborted) terminate("abort");
55
+ });
56
+ }
57
+ function probeErrorReason(command, error) {
58
+ if (error instanceof ProcessProbeTerminationError) return error.message;
59
+ return `${command} failed: ${error instanceof Error ? error.message : String(error)}`;
60
+ }
61
+ /** Check whether a repository has active Git processes without guessing on probe failure. */
62
+ async function hasRunningGitProcesses(repoPath, options) {
63
+ const probeOptions = {
64
+ signal: options.signal,
65
+ processProbeTimeoutMs: options.processProbeTimeoutMs ?? DEFAULT_PROCESS_PROBE_TIMEOUT_MS
66
+ };
67
+ try {
68
+ return { status: (await runProcessProbe("fuser", [join(repoPath, ".git")], repoPath, probeOptions)).trim() ? "running" : "idle" };
69
+ } catch (error) {
70
+ const code = error?.code;
71
+ if (code === 1) return { status: "idle" };
72
+ if (code !== 127 && code !== "ENOENT") return {
73
+ status: "inconclusive",
74
+ reason: probeErrorReason("fuser", error)
75
+ };
76
+ }
77
+ try {
78
+ return { status: (await runProcessProbe("ps", ["-eo", "args="], repoPath, probeOptions)).split("\n").some((line) => line.includes("git") && line.includes(repoPath)) ? "running" : "idle" };
79
+ } catch (error) {
80
+ return {
81
+ status: "inconclusive",
82
+ reason: probeErrorReason("ps", error)
83
+ };
84
+ }
85
+ }
86
+ /**
87
+ * Find all git lock files in a repository
88
+ */
89
+ function findGitLockFiles(repoPath) {
90
+ const lockFiles = [];
91
+ const indexLock = join(repoPath, ".git", "index.lock");
92
+ if (existsSync(indexLock)) lockFiles.push(indexLock);
93
+ const refsDir = join(repoPath, ".git", "refs");
94
+ if (existsSync(refsDir)) {
95
+ const findLocksRecursive = (dir) => {
96
+ const entries = readdirSync(dir, { withFileTypes: true });
97
+ for (const entry of entries) {
98
+ const fullPath = join(dir, entry.name);
99
+ if (entry.isDirectory()) findLocksRecursive(fullPath);
100
+ else if (entry.name.endsWith(".lock")) lockFiles.push(fullPath);
101
+ }
102
+ };
103
+ try {
104
+ findLocksRecursive(refsDir);
105
+ } catch {}
106
+ }
107
+ return lockFiles;
108
+ }
109
+ async function cleanupStaleLocksPromise(repoPath, options) {
110
+ const result = {
111
+ found: [],
112
+ removed: [],
113
+ errors: []
114
+ };
115
+ const lockFiles = findGitLockFiles(repoPath);
116
+ result.found = lockFiles;
117
+ if (lockFiles.length === 0) return result;
118
+ const processProbe = await hasRunningGitProcesses(repoPath, options);
119
+ if (processProbe.status === "running") {
120
+ result.errors.push({
121
+ file: "N/A",
122
+ error: "Git processes are running - not safe to remove locks"
123
+ });
124
+ return result;
125
+ }
126
+ if (processProbe.status === "inconclusive") {
127
+ result.errors.push({
128
+ file: "N/A",
129
+ error: `Could not verify Git process state: ${processProbe.reason}`
130
+ });
131
+ return result;
132
+ }
133
+ for (const lockFile of lockFiles) try {
134
+ unlinkSync(lockFile);
135
+ result.removed.push(lockFile);
136
+ } catch (error) {
137
+ const msg = error instanceof Error ? error.message : String(error);
138
+ result.errors.push({
139
+ file: lockFile,
140
+ error: msg
141
+ });
142
+ }
143
+ return result;
144
+ }
145
+ async function getWorkspaceGitInfoPromise(workspacePath) {
146
+ try {
147
+ const [headResult, branchResult] = await Promise.all([execAsync("git rev-parse HEAD", { cwd: workspacePath }), execAsync("git rev-parse --abbrev-ref HEAD", { cwd: workspacePath })]);
148
+ return {
149
+ HEAD: headResult.stdout.trim(),
150
+ branch: branchResult.stdout.trim()
151
+ };
152
+ } catch (err) {
153
+ const msg = err instanceof Error ? err.message : String(err);
154
+ throw new Error(`getWorkspaceGitInfo failed for ${workspacePath}: ${msg}`);
155
+ }
156
+ }
157
+ async function hasStaleLocksPromise(repoPath) {
158
+ if (findGitLockFiles(repoPath).length === 0) return false;
159
+ return (await hasRunningGitProcesses(repoPath, {})).status === "idle";
160
+ }
161
+ var execAsync, DEFAULT_PROCESS_PROBE_TIMEOUT_MS, ProcessProbeTerminationError, execFileDetached, cleanupStaleLocks, getWorkspaceGitInfo, hasStaleLocks;
162
+ var init_git_utils = __esmMin((() => {
163
+ init_errors();
164
+ execAsync = promisify(exec);
165
+ DEFAULT_PROCESS_PROBE_TIMEOUT_MS = 3e4;
166
+ ProcessProbeTerminationError = class extends Error {
167
+ constructor(command, kind, budgetMs) {
168
+ super(kind === "abort" ? `${command} was cancelled` : `${command} timed out after ${budgetMs / 1e3}s`);
169
+ this.command = command;
170
+ this.kind = kind;
171
+ this.budgetMs = budgetMs;
172
+ this.name = "ProcessProbeTerminationError";
173
+ }
174
+ };
175
+ execFileDetached = execFile;
176
+ cleanupStaleLocks = (repoPath, options = {}) => Effect.tryPromise({
177
+ try: () => cleanupStaleLocksPromise(repoPath, options),
178
+ catch: (cause) => new FsError({
179
+ path: repoPath,
180
+ operation: "cleanupStaleLocks",
181
+ cause
182
+ })
183
+ });
184
+ getWorkspaceGitInfo = (workspacePath) => Effect.tryPromise({
185
+ try: () => getWorkspaceGitInfoPromise(workspacePath),
186
+ catch: (cause) => new GitError({
187
+ command: ["rev-parse", "HEAD"],
188
+ stderr: cause instanceof Error ? cause.message : String(cause),
189
+ exitCode: -1,
190
+ cause
191
+ })
192
+ });
193
+ hasStaleLocks = (repoPath) => Effect.promise(() => hasStaleLocksPromise(repoPath));
194
+ }));
195
+ //#endregion
196
+ export { init_git_utils as i, getWorkspaceGitInfo as n, hasStaleLocks as r, cleanupStaleLocks as t };
197
+
198
+ //# sourceMappingURL=git-utils-BVa07a4a.js.map
@@ -1,3 +1,3 @@
1
- import { i as init_git_utils, n as getWorkspaceGitInfo, r as hasStaleLocks, t as cleanupStaleLocks } from "./git-utils-Bkxzr1Xf.js";
1
+ import { i as init_git_utils, n as getWorkspaceGitInfo, r as hasStaleLocks, t as cleanupStaleLocks } from "./git-utils-BVa07a4a.js";
2
2
  init_git_utils();
3
3
  export { cleanupStaleLocks, getWorkspaceGitInfo, hasStaleLocks };