@overdeck/desktop 0.45.13 → 0.45.16

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 (336) hide show
  1. package/package.json +1 -1
  2. package/server/{acceptance-criteria-CfujPRrz.js → acceptance-criteria-BZ_nQS1f.js} +2 -2
  3. package/server/{advancing-selfheal-Bn5QiLtn.js → advancing-selfheal-DJYAvGv-.js} +6 -5
  4. package/server/{agent-gc-Cl9Nm0Zu.js → agent-gc-D0wDIeV1.js} +3 -3
  5. package/server/{agent-state-C6Rm6FPR.js → agent-state-lGvgPP4m.js} +1 -1
  6. package/server/{agent-state-service-U8feBf8t.js → agent-state-service-CZrayD_G.js} +1 -1
  7. package/server/{agent-state-service-JhFzYCP_.js → agent-state-service-DFslS5go.js} +9 -52
  8. package/server/{agents-DqQa4Dq_.js → agents-B9GwfCyp.js} +155 -153
  9. package/server/{agents-CxbuBjID.js → agents-CEcaxSkR.js} +1 -1
  10. package/server/{archive-planning-CPitEZo4.js → archive-planning-CbghE9-o.js} +5 -5
  11. package/server/{archive-planning-DmpT1_14.js → archive-planning-CoyIbgGK.js} +1 -1
  12. package/server/{artifact-index-jobs-sMnNtPhy.js → artifact-index-jobs-CcSrUoSE.js} +2 -2
  13. package/server/auto-commit-IW-eik_b.js +3 -0
  14. package/server/{backlog-auto-trigger-Cf9C8fwD.js → backlog-auto-trigger-BfgDsII0.js} +3 -3
  15. package/server/{bd-process-lock-D1aJxeYv.js → bd-process-lock-XAXAet9O.js} +32 -11
  16. package/server/{beads-CivpXztb.js → beads-B1u04n3o.js} +1 -1
  17. package/server/{beads-DRoj6-e1.js → beads-BeSMEjGT.js} +96 -196
  18. package/server/{beads-query-tOsAYP5h.js → beads-query-Dl4FhT8J.js} +24 -99
  19. package/server/beads-restore-BUItPOjI.js +23 -0
  20. package/server/behavior-BTpYbAv4.js +10 -0
  21. package/server/{briefing-freshness-BL3Q6p7R.js → briefing-freshness-DESTCWo-.js} +4 -4
  22. package/server/{checkpoint-manager-DCxjQvP_.js → checkpoint-manager-BwFdegJF.js} +2 -2
  23. package/server/{checkpoint-manager-j5URlFY7.js → checkpoint-manager-DWSXooZV.js} +1 -1
  24. package/server/checkpoint-worker.js +1 -1
  25. package/server/{checkpoints-BoX1H2Hf.js → checkpoints-BtUonbs3.js} +2 -2
  26. package/server/{checkpoints-Bu_M_Q9W.js → checkpoints-fjadfOKF.js} +1 -1
  27. package/server/{claude-hooks-provision-D-jGXmu1.js → claude-hooks-provision-DAtxutOs.js} +132 -114
  28. package/server/claude-hooks-provision-DiK62u0k.js +3 -0
  29. package/server/{claude-permissions-DxIjkOVl.js → claude-permissions-CThLgf8d.js} +2 -2
  30. package/server/{claude-settings-overlay-BPDS6GfE.js → claude-settings-overlay-BF9MPIwx.js} +2 -2
  31. package/server/{claude-settings-overlay-5b9X2S0C.js → claude-settings-overlay-Dx_Uqcmv.js} +1 -1
  32. package/server/{cli-s7bPWy-E.js → cli-ByKIIMfT.js} +9 -9
  33. package/server/cli-D9cUTbBr.js +3 -0
  34. package/server/{cliproxy-BituqWtR.js → cliproxy-B4c1BUvs.js} +2 -2
  35. package/server/{cliproxy-D3sHB0sI.js → cliproxy-C_GuT5DU.js} +1 -1
  36. package/server/{close-issue-CrBE7voz.js → close-issue-BOuLKr6e.js} +5 -5
  37. package/server/{closed-issue-reaper-BRQBc7Xa.js → closed-issue-reaper-CksfuiFD.js} +1 -1
  38. package/server/{closed-issue-reaper-DX9mYUji.js → closed-issue-reaper-DCAYzNXW.js} +102 -30
  39. package/server/{codex-Bi1ITSOo.js → codex-BYPz6ZdF.js} +1 -1
  40. package/server/{codex-CO0HrK3j.js → codex-BbqIRZjd.js} +6 -5
  41. package/server/{behavior-D3d2mVyD.js → codex-parser-mFYZh8vR.js} +3 -9
  42. package/server/{compact-beads-DUkCUFxA.js → compact-beads-CyJtoXJi.js} +15 -8
  43. package/server/{compact-beads-CrA8-k10.js → compact-beads-N00E4EVa.js} +1 -1
  44. package/server/{config-DsCxzjXK.js → config-DVLdmnMJ.js} +2 -2
  45. package/server/{config-B4_d7z7z.js → config-Dj6N8EP9.js} +1 -1
  46. package/server/{config-yaml-C_djSurJ.js → config-yaml-cNOZcEww.js} +118 -23
  47. package/server/{conflict-gate-D47Kl78u.js → conflict-gate-BMKm_5DV.js} +3 -3
  48. package/server/{conflict-gate-CpOn9KC-.js → conflict-gate-CuXUv-bP.js} +1 -1
  49. package/server/{context-layers-CHl3Nroz.js → context-layers-CeAwSYNt.js} +2 -2
  50. package/server/{context-layers-BNhUBTkf.js → context-layers-c0JqYHcS.js} +3 -3
  51. package/server/{control-settings-KyYNXZLv.js → control-settings-D4EFsRBd.js} +4 -4
  52. package/server/{conversation-compaction-D3aS5PnS.js → conversation-compaction-BCggyih4.js} +8 -8
  53. package/server/{conversation-compaction-D4Wed1BJ.js → conversation-compaction-kHVfVRg3.js} +1 -1
  54. package/server/{conversation-service-CFZIjs-M.js → conversation-service-B8LFQQm1.js} +6 -5
  55. package/server/{conversation-service-DcDB5usR.js → conversation-service-BTzObqGi.js} +1 -1
  56. package/server/{conversations-BSOU5qnu.js → conversations-B-lcHv-5.js} +4 -4
  57. package/server/{conversations-BbDPrz89.js → conversations-BM7zlXjr.js} +1 -1
  58. package/server/{cost-BE_ulOrw.js → cost-BcpRQ-7o.js} +3 -3
  59. package/server/{cost-CaiG63FG.js → cost-D9kPIY_5.js} +2 -2
  60. package/server/{cost-sync-D6AX8jv-.js → cost-sync-DF6odxK9.js} +3 -3
  61. package/server/{dag-BQFtXOuJ.js → dag-DKI3sOmX.js} +3 -3
  62. package/server/{dangerous-git-ops-04Ba-Qu3.js → dangerous-git-ops-Bn18PEcN.js} +1 -1
  63. package/server/dashboard-db-worker.js +6 -6
  64. package/server/{deacon-Bz-6Wjmn.js → deacon-DONuopff.js} +3 -3
  65. package/server/{deacon-2EvA9Ci3.js → deacon-DdARMjZq.js} +188 -1601
  66. package/server/{deacon-swarm-DYYOzHRH.js → deacon-swarm-BNGkmYR_.js} +12 -105
  67. package/server/deacon-swarm-CvdFekIO.js +2 -0
  68. package/server/deacon.js +7 -7
  69. package/server/{devcontainer-renderer-Dx0C7VWJ.js → devcontainer-renderer-C-34Sxyz.js} +3 -3
  70. package/server/{dist-ya66D9ze.js → dist-BMXvKiZP.js} +1 -1
  71. package/server/dist-BNwrgsUO.js +3 -0
  72. package/server/{dist-src-Byxt1ifL.js → dist-src-BgGUblXg.js} +1 -1
  73. package/server/{docker-D2TbXDO6.js → docker-apZ9pBYw.js} +67 -28
  74. package/server/{ensure-devcontainer-BTiMfFp5.js → ensure-devcontainer-Bqi1EF1P.js} +4 -4
  75. package/server/{ensure-devcontainer-BIShzs3M.js → ensure-devcontainer-Dq3KoOIl.js} +1 -1
  76. package/server/{esm-shims-DiV9jHa_.js → esm-shims-BEjvINX3.js} +1 -1
  77. package/server/{event-store-C02Gprug.js → event-store-CqDgfbAs.js} +1 -1
  78. package/server/{event-store-C71x6h0i.js → event-store-D89fMfXS.js} +3 -3
  79. package/server/{events-BFDuPV6n.js → events-S_C0pvl6.js} +3 -3
  80. package/server/{events-D2gP2-Yv.js → events-rIGncmP1.js} +1 -1
  81. package/server/export-BJHSVwKP.js +87 -0
  82. package/server/{factory-ByfbrCab.js → factory-DV18m0rc.js} +5 -5
  83. package/server/{feature-registry-population-CSH66UO8.js → feature-registry-population-CqZSnqQi.js} +4 -4
  84. package/server/{feature-registry-storage-DW7dUefc.js → feature-registry-storage-BeXmNBwK.js} +2 -2
  85. package/server/{features-x_aLR7U9.js → features-u5XeMaOK.js} +2 -2
  86. package/server/{feedback-target-BFo9fScH.js → feedback-target-CwyWf0Dg.js} +6 -6
  87. package/server/{feedback-target-C4VMPTZu.js → feedback-target-DDG1PWl3.js} +1 -1
  88. package/server/{feedback-writer-DCyd75yJ.js → feedback-writer-BsJiw5aT.js} +1 -1
  89. package/server/{feedback-writer-B9ZqnnX3.js → feedback-writer-D20HSXre.js} +4 -4
  90. package/server/{flywheel-DwQCoZQG.js → flywheel-9Y1X7IM-.js} +13 -13
  91. package/server/{flywheel-D9NKvWqb.js → flywheel-Dczmgchd.js} +23 -15
  92. package/server/{flywheel-DB48X7Nn.js → flywheel-RCnHAgc4.js} +1 -1
  93. package/server/{flywheel-merge-order-DrjmFXg4.js → flywheel-merge-order-CtCYsFJP.js} +7 -7
  94. package/server/{flywheel-merge-order-f1bi5XIf.js → flywheel-merge-order-DEtEd3aK.js} +1 -1
  95. package/server/forge-8y6aEPTB.js +2 -0
  96. package/server/{forge-C-SoKy8U.js → forge-DFDThFil.js} +2 -2
  97. package/server/{from-fu7ZumnY.js → from-NSJypkI8.js} +1 -1
  98. package/server/{fts-db-CL-YzSRG.js → fts-db-C5A_TTOM.js} +2 -2
  99. package/server/{fts-operations-Bylu5NjM.js → fts-operations-DvCSimfU.js} +2 -2
  100. package/server/{git-utils-Ym380hJZ.js → git-utils-C0neHvQx.js} +1 -1
  101. package/server/{git-utils-C8koBs8j.js → git-utils-Dr0L7mFk.js} +2 -2
  102. package/server/{github-app-DIr70YLg.js → github-app-Bwt9lK4A.js} +1 -1
  103. package/server/{github-app-DhycHVLF.js → github-app-u9-SX7Gc.js} +2 -2
  104. package/server/{github-client-7gkcXcBS.js → github-client-Btyy3uan.js} +3 -3
  105. package/server/{github-client-Ji9lUTNF.js → github-client-Do3k-N1W.js} +1 -1
  106. package/server/{github-pr-lookup-rt7T9FwA.js → github-pr-lookup-DOF1U2WW.js} +2 -2
  107. package/server/{harness-resolve-CvGXUnAF.js → harness-resolve-C6g2R0Cd.js} +3 -3
  108. package/server/{health-events-D4E1DLN-.js → health-events-B4u-2a9m.js} +2 -2
  109. package/server/{health-events-DDfkoO5a.js → health-events-Bos3sk5g.js} +1 -1
  110. package/server/{hooks-D_6pAbuJ.js → hooks-BCoOjL_R.js} +2 -2
  111. package/server/{hooks-DvdnCVv6.js → hooks-uEr8WTx_.js} +1 -1
  112. package/server/{hume-DkVOs1Qi.js → hume-BqxYKbUf.js} +2 -2
  113. package/server/hume-CerGi2RH.js +3 -0
  114. package/server/{idle-stack-reaper-cDRXDpgE.js → idle-stack-reaper-DbZ8ukMd.js} +2 -2
  115. package/server/{idle-stack-reaper-DNbV9-fj.js → idle-stack-reaper-H0W6XtHh.js} +1 -1
  116. package/server/{infra-Clew3DpF.js → infra-Ba9mS6e6.js} +3 -3
  117. package/server/{injection-QCIHOpk6.js → injection-C1DKXeIZ.js} +1 -1
  118. package/server/{injection-ql0Nddcn.js → injection-yrMBxzVq.js} +7 -7
  119. package/server/{inspect-agent-DY18KEx4.js → inspect-agent-B-mnb4uh.js} +9 -9
  120. package/server/inspect-agent-CWkeAB7J.js +2 -0
  121. package/server/{internal-token-C90jBp-y.js → internal-token-BPYEaXFh.js} +1 -1
  122. package/server/{internal-token-BeXjPLKy.js → internal-token-BtqSbKTx.js} +2 -2
  123. package/server/{io-CbAFXQge.js → io-VEGSAqsd.js} +15 -22
  124. package/server/{issue-closed-BYC2TCk-.js → issue-closed-BxcePXL-.js} +4 -4
  125. package/server/{issue-lifecycle-BoJa6qIt.js → issue-lifecycle--8MRxrG1.js} +22 -22
  126. package/server/{issue-lifecycle-CLHbj8RS.js → issue-lifecycle-CdMUauyb.js} +1 -1
  127. package/server/{issue-service-singleton-BS9NENuR.js → issue-service-singleton-CkTUI-eu.js} +10 -10
  128. package/server/{issue-service-singleton-3g_CCY-1.js → issue-service-singleton-MZsDhAob.js} +1 -1
  129. package/server/{issues-BPcqPqfV.js → issues-CBAsuoAO.js} +2 -2
  130. package/server/jsonl-parser-BUW5_sSK.js +245 -0
  131. package/server/{label-cleanup-CwiCSZrb.js → label-cleanup-htK6fBRU.js} +3 -3
  132. package/server/{layers-OHHLphl0.js → layers-jjL16At6.js} +2 -2
  133. package/server/{lifecycle-B8IdvUbt.js → lifecycle-Ck2UR27D.js} +7 -7
  134. package/server/{lifecycle-io-BMCH1Bxg.js → lifecycle-io-DXv8Utct.js} +1 -1
  135. package/server/{lifecycle-io-C73m5e6R.js → lifecycle-io-IehcRt2v.js} +36 -47
  136. package/server/{linear-client-BMxgycoy.js → linear-client-By7hjwuN.js} +1 -1
  137. package/server/{linear-client-CgQlM4aT.js → linear-client-D9cSQfvD.js} +3 -3
  138. package/server/memory-fts-worker.js +1 -1
  139. package/server/{merge-BRkVaIx-.js → merge-BLcEZNXz.js} +1 -1
  140. package/server/{merge-B7Oi-g6k.js → merge-BN8FGJ2q.js} +3 -3
  141. package/server/{merge-agent-DNFFsiEm.js → merge-agent-B3u2szOL.js} +29 -29
  142. package/server/{merge-agent-Bwm34MZ5.js → merge-agent-ejC7Wos8.js} +1 -1
  143. package/server/{merge-batch-BpYXUaqJ.js → merge-batch-DyqlgYGp.js} +1 -1
  144. package/server/{merge-blockers-DIOZmqdK.js → merge-blockers-cq-aS2KG.js} +2 -2
  145. package/server/merge-ops-CFkQtXEj.js +2 -0
  146. package/server/{merge-rebase-C8WH39MB.js → merge-rebase-Dl7yIxtV.js} +2 -2
  147. package/server/{merge-set-CsEE2CyQ.js → merge-set-CZ9Nbay0.js} +3 -3
  148. package/server/{merge-set-DOsBTBQc.js → merge-set-Dy0D0r3i.js} +1 -1
  149. package/server/{merge-sync-CcLM2vwW.js → merge-sync-CG9kDCdT.js} +1 -1
  150. package/server/{merge-sync-C2B322Ot.js → merge-sync-D7jWLgCC.js} +2 -2
  151. package/server/{merge-train-BIm7-7cy.js → merge-train-CH33XJOH.js} +3 -3
  152. package/server/{merge-train-deps-DG1oQ2DT.js → merge-train-deps-JoVdGnOg.js} +4 -4
  153. package/server/{merge-verification-BAbjxEd5.js → merge-verification-D4wTChdX.js} +4 -4
  154. package/server/{multipart-parser-jKtKAXtl.js → multipart-parser-Csn8U-K9.js} +2 -2
  155. package/server/{no-resume-mode-yrPEQ_pC.js → no-resume-mode-Gh5R_YLF.js} +1 -1
  156. package/server/node_modules/.package-lock.json +1 -1
  157. package/server/{orphan-proposed-reconciler-BqVGaOIj.js → orphan-proposed-reconciler-BIcNu4tl.js} +1 -1
  158. package/server/{orphan-proposed-reconciler-zHrwJ3xr.js → orphan-proposed-reconciler-DI_IS1p_.js} +15 -39
  159. package/server/package-lock.json +2 -2
  160. package/server/package.json +1 -1
  161. package/server/{pan-dir-BlNrLzW7.js → pan-dir-CQIfKG8c.js} +4 -4
  162. package/server/{paths-CiVeo4N_.js → paths-Blj6A9AJ.js} +2 -2
  163. package/server/{pickup-KLRUhThD.js → pickup-BtvRBbvI.js} +1 -1
  164. package/server/{pipeline-notifier-nkWCe042.js → pipeline-notifier-BH4PAi-w.js} +1 -1
  165. package/server/{pipeline-notifier-DBF6dHxH.js → pipeline-notifier-D_WYtEwl.js} +2 -2
  166. package/server/project-pipelines-jMTitpeO.js +162 -0
  167. package/server/projects-CrBE6IhN.js +3 -0
  168. package/server/{prompts-CXbQvevY.js → prompts-B3njaImU.js} +2 -2
  169. package/server/{providers-CUdAb5Qu.js → providers-BbEyFhPX.js} +7 -7
  170. package/server/providers-DnPxkHoG.js +3 -0
  171. package/server/public/assets/chunk-BO2N2NFS-3qh9TUJi.js +103 -0
  172. package/server/public/assets/{diagram-OG6HWLK6-NACO1xW5.js → diagram-OG6HWLK6-D8UVTPj7.js} +1 -1
  173. package/server/public/assets/{dist-DQD-ZjQY.js → dist-BvLLn1YC.js} +3 -3
  174. package/server/public/assets/{dist-D1FjqGgm.js → dist-CyubL7Wj.js} +1 -1
  175. package/server/public/assets/{ganttDiagram-6RSMTGT7-CEMAKgmE.js → ganttDiagram-6RSMTGT7-BI4E1LbQ.js} +1 -1
  176. package/server/public/assets/{highlighted-body-OFNGDK62-D5lC7FW8.js → highlighted-body-OFNGDK62-D_bapWkF.js} +1 -1
  177. package/server/public/assets/index-BAZxZ-8I.js +796 -0
  178. package/server/public/assets/index-FBG3JBfq.css +1 -0
  179. package/server/public/assets/{linear-DDHAMRPB.js → linear-CEdobObr.js} +1 -1
  180. package/server/public/assets/mermaid-GHXKKRXX-BYP8MI37.js +1 -0
  181. package/server/public/assets/{pieDiagram-4H26LBE5-DwBdeKBb.js → pieDiagram-4H26LBE5-DT79L01f.js} +1 -1
  182. package/server/public/assets/{prod-DAZt0c4G.js → prod-CR_K2DFV.js} +4 -4
  183. package/server/public/assets/{quadrantDiagram-W4KKPZXB-CNDLp-_m.js → quadrantDiagram-W4KKPZXB-BEkKXXrL.js} +1 -1
  184. package/server/public/assets/{sankeyDiagram-5OEKKPKP-oIUL_uO1.js → sankeyDiagram-5OEKKPKP-BxSCqn-j.js} +1 -1
  185. package/server/public/assets/{xychartDiagram-2RQKCTM6-B-IM6Cck.js → xychartDiagram-2RQKCTM6-DicwJGG_.js} +1 -1
  186. package/server/public/index.html +2 -2
  187. package/server/{pull-requests-DZ-V7_LB.js → pull-requests-43LPDfM8.js} +1 -1
  188. package/server/{pull-requests-kTRl7cWC.js → pull-requests-DyUkQl4W.js} +3 -3
  189. package/server/{rally-xCTZ-UcI.js → rally-BtWjybOa.js} +3 -3
  190. package/server/{rally-api-jOk4vit_.js → rally-api-B-YA_oXx.js} +1 -1
  191. package/server/{rally-api-DpZo3WwF.js → rally-api-B-osULNL.js} +2 -2
  192. package/server/{rally-client-BQjm3aaq.js → rally-client-CzFymP7P.js} +1 -1
  193. package/server/{rally-client-CoWZeVEj.js → rally-client-sErNQBO0.js} +5 -5
  194. package/server/rally-oggyp4cs.js +3 -0
  195. package/server/{reap-terminal-sessions-CAmURC2h.js → reap-terminal-sessions-2s-fvilz.js} +1 -1
  196. package/server/{reap-terminal-sessions-BwJb2DLJ.js → reap-terminal-sessions-DnDQ7pf9.js} +1 -1
  197. package/server/{rebuild-stack-BZ7j27xY.js → rebuild-stack-CoU-HqZj.js} +6 -6
  198. package/server/{rebuild-stack-r-cxcr26.js → rebuild-stack-nGD_nPZo.js} +1 -1
  199. package/server/{reconstruct-cache-13EkMg_i.js → reconstruct-cache-Wj8GrYB0.js} +6 -6
  200. package/server/record-lEYK__LD.js +3 -0
  201. package/server/recovery-trip-BT7nb9OV.js +98 -0
  202. package/server/{release-engine-YLTnEO_K.js → release-engine-CBLQXDlH.js} +5 -5
  203. package/server/{release-set-DwvT_Opu.js → release-set-BNiqi7hy.js} +3 -3
  204. package/server/{remote-B062S1Kc.js → remote-DW_TWQnr.js} +3 -3
  205. package/server/{remote-9u9WL0NJ.js → remote-DcO9An_f.js} +3 -3
  206. package/server/{remote-agents-BBTg-vLT.js → remote-agents-C4cyxHQS.js} +6 -6
  207. package/server/{remote-agents-B4eWgwNd.js → remote-agents-Cv-U-_V8.js} +1 -1
  208. package/server/{remote-completion-B0rmBnbL.js → remote-completion-PhXGGFQy.js} +13 -13
  209. package/server/resolver-C7dLn8OK.js +158 -0
  210. package/server/resume-BYZBIab-.js +3 -0
  211. package/server/{review-agent-tfR5RDzG.js → review-agent-Dn-yn7Zj.js} +23 -23
  212. package/server/{review-agent-Bf9XjLnl.js → review-agent-u5q3ip7H.js} +1 -1
  213. package/server/{review-artifacts-D0_IE6DQ.js → review-artifacts-D4T04aYI.js} +6 -6
  214. package/server/{review-context-CXO5ml5D.js → review-context-Rc0VDLG_.js} +8 -8
  215. package/server/{review-monitor-DfFUSx0J.js → review-monitor-BC--miCO.js} +2 -2
  216. package/server/{review-status-B0Axo-Ma.js → review-status-CG0iDuWa.js} +1 -1
  217. package/server/{review-status-BcfwcAcO.js → review-status-Dc1l4dVz.js} +18 -18
  218. package/server/{review-status-enrichment-Cp5kFTGl.js → review-status-enrichment-C1a1OG_1.js} +3 -3
  219. package/server/{review-status-sync-CEFty1pW.js → review-status-sync-CAr-hfnJ.js} +2 -2
  220. package/server/{review-status-sync-Bc0c_u12.js → review-status-sync-CfSixhhX.js} +1 -1
  221. package/server/{review-verdict-feedback-BOKRLLDf.js → review-verdict-feedback-CVDbIDBe.js} +7 -7
  222. package/server/{review-verdict-feedback-BnGtT0vN.js → review-verdict-feedback-D2Q960wX.js} +1 -1
  223. package/server/{rollup-BVqFuiS9.js → rollup-CakjztPl.js} +1 -1
  224. package/server/{rollup-C22QDVxh.js → rollup-DctoIu-A.js} +8 -8
  225. package/server/{scanner-BLCnuXqY.js → scanner-BTM1jc_u.js} +7 -7
  226. package/server/{sequence-io-BozlUb6f.js → sequence-io-pnoIDGv4.js} +4 -4
  227. package/server/{sequencer-agent-BEDEHfd2.js → sequencer-agent-9Soi-WL-.js} +10 -6
  228. package/server/server.js +1239 -1836
  229. package/server/{service-C8jKYZ0w.js → service-DfTVoqJg.js} +1668 -1408
  230. package/server/{session-fork-BDGksK4e.js → session-fork-C4jAFHj8.js} +2 -2
  231. package/server/session-history-DanhhiCw.js +168 -0
  232. package/server/{settings-CSLhh6qR.js → settings-Cuc12oP_.js} +2 -2
  233. package/server/settings-Cy7SCFO9.js +2 -0
  234. package/server/{settings-DrRQCren.js → settings-DfT3f86D.js} +3 -3
  235. package/server/{shadow-engineering-BMcBN-Of.js → shadow-engineering-bKuKTCn-.js} +3 -3
  236. package/server/{shadow-state-CHqWHD3T.js → shadow-state-CVHpRWlb.js} +1 -1
  237. package/server/{shadow-state-B4ayC7nx.js → shadow-state-DJz6_pb_.js} +2 -2
  238. package/server/{ship-log-CDVmOlZP.js → ship-log-CwqPFfqx.js} +1 -1
  239. package/server/{smart-compaction-V9DBrGcr.js → smart-compaction-B4KlpZGN.js} +1 -1
  240. package/server/{smart-compaction-C-F5sP9P.js → smart-compaction-CiWfGfRZ.js} +7 -7
  241. package/server/{spawn-planning-session-dSpOU0lP.js → spawn-planning-session-CU-DwyDl.js} +15 -15
  242. package/server/{spawn-planning-session-Bz4_JES2.js → spawn-planning-session-D5N3RuLG.js} +1 -1
  243. package/server/{specialist-completion-Coz3eTSr.js → specialist-completion-CJcv-NXH.js} +1 -1
  244. package/server/{specialist-context-fmb03vXQ.js → specialist-context-B2HlbNxS.js} +5 -5
  245. package/server/{specialist-handoff-logger-B9HK_lRu.js → specialist-handoff-logger-CQyF1ygu.js} +2 -2
  246. package/server/{specialist-logs-B24R2B9Y.js → specialist-logs-CdcUpfjj.js} +3 -3
  247. package/server/{specialists-CL7E8yUg.js → specialists-CFgw_0Q6.js} +1657 -113
  248. package/server/{specialists-BGNZ0_ZW.js → specialists-CwzFdapR.js} +20 -256
  249. package/server/{specialists-B6f5-5nG.js → specialists-D7AcFi1u.js} +1 -1
  250. package/server/{specialists-Chvvwf5z.js → specialists-k22_Btaq.js} +1 -1
  251. package/server/specs-RzcDgozr.js +3 -0
  252. package/server/{src-DGAEtABV.js → src-B4TTzNSr.js} +84 -2
  253. package/server/{src-BVxZuHMg.js → src-BvpMg4EB.js} +3 -3
  254. package/server/{src-D-VXCC9C.js → src-D4YUZrwR.js} +6 -6
  255. package/server/{stack-health-C-le5erA.js → stack-health-CSgcYcr8.js} +2 -2
  256. package/server/{stack-health-BKbTTOT2.js → stack-health-DVN7zRnL.js} +1 -1
  257. package/server/{state-home-CoyWsECg.js → state-home-CEvD_v5F.js} +6 -6
  258. package/server/{state-mapping-BvAgFK8n.js → state-mapping-C13UaCL7.js} +1 -1
  259. package/server/stuck-remediation-CxsyxwFO.js +1513 -0
  260. package/server/stuck-remediation-nTIvhGOR.js +2 -0
  261. package/server/{summary-fork-BF_0vxrq.js → summary-fork-CnRMPCYd.js} +2 -2
  262. package/server/{summary-fork-BlE30Q-I.js → summary-fork-gKSoFAnK.js} +8 -8
  263. package/server/{supervisor-BSeML_p0.js → supervisor-CZMs8s0M.js} +2 -2
  264. package/server/supervisor-CfX192ma.js +2 -0
  265. package/server/{swarm-readiness-CQ4sjrXc.js → swarm-readiness-h6-pwY8w.js} +3 -3
  266. package/server/{system-prerequisites-DnmLYOnU.js → system-prerequisites-DZZTi2G6.js} +1 -1
  267. package/server/{teardown-workspace-CpcjDrZ4.js → teardown-workspace-B4D-oCVg.js} +37 -68
  268. package/server/{test-agent-queue-Bq298zZl.js → test-agent-queue-CnuYku4B.js} +6 -6
  269. package/server/{test-verdict-CCDd25uN.js → test-verdict-CRsPpByy.js} +1 -1
  270. package/server/{test-verdict-Bm4uv_AA.js → test-verdict-CXMLATGc.js} +1 -1
  271. package/server/{tldr-daemon-Rn1Zue0P.js → tldr-daemon-CgZQ3jmZ.js} +1 -1
  272. package/server/{tldr-daemon-CaSUXd9r.js → tldr-daemon-CuA8hz21.js} +2 -2
  273. package/server/{tmux-CbcrkUx5.js → tmux-By8E_Yv_.js} +1 -1
  274. package/server/{tmux-BVc-NeKM.js → tmux-C3g9VFcg.js} +2 -2
  275. package/server/{token-D2OC_9ms.js → token-g_sJ19g3.js} +2 -2
  276. package/server/token-util-C9u4An3K.js +3 -0
  277. package/server/{token-util-CROoF5ic.js → token-util-DiwnnbJo.js} +1 -1
  278. package/server/{tracker-config-EsBoOWEy.js → tracker-config-BzfVj41Z.js} +1 -1
  279. package/server/{tracker-config-C1Y_2CIo.js → tracker-config-dQxC15vH.js} +2 -2
  280. package/server/{tracker-utils-lph9C3Pw.js → tracker-utils--z8FLSWn.js} +2 -2
  281. package/server/{tracker-utils-DSb9cfrF.js → tracker-utils-DkKyRT0H.js} +1 -1
  282. package/server/{traefik-connect-5EP1WS_Z.js → traefik-connect-CZYB3dlm.js} +1 -1
  283. package/server/{tunnel-BFBCeo97.js → tunnel-BpWZs0Jy.js} +3 -3
  284. package/server/{tunnel-DDe-ATFF.js → tunnel-CN2px87h.js} +1 -1
  285. package/server/{typed-errors-DSPn_xWP.js → typed-errors-CrN1AByg.js} +1 -1
  286. package/server/{typed-errors-BEJhbjJg.js → typed-errors-sLpGfegz.js} +1 -1
  287. package/server/{types-CE1m_daD.js → types-BLS_Zbmd.js} +1 -1
  288. package/server/{types-B5u3NxMl.js → types-tlXf80x3.js} +1 -1
  289. package/server/{uat-train-DtKHHy1U.js → uat-train-BRo6DM7p.js} +24 -24
  290. package/server/{uat-train-8T24rPzc.js → uat-train-utGVmqdm.js} +1 -1
  291. package/server/{validation-lyudzPvD.js → validation-CsPVsoA0.js} +4 -4
  292. package/server/{validation-COOXwNXU.js → validation-Dq_wwcw3.js} +1 -1
  293. package/server/{verification-runner-DO0nYTJx.js → verification-runner-CMT5WRMS.js} +12 -12
  294. package/server/{verification-runner-Dd1FX8Qk.js → verification-runner-D0Uh-9jc.js} +1 -1
  295. package/server/{vtt-parser-C57tEF7-.js → vtt-parser-C_XPlifj.js} +1 -1
  296. package/server/{work-agent-prompt-B2F3ZwKm.js → work-agent-prompt-ZTAb2Hyf.js} +12 -12
  297. package/server/workflows-BLwxUMP7.js +2 -0
  298. package/server/{workflows-Clz_AFwR.js → workflows-CXRwhw_o.js} +14 -14
  299. package/server/{workspace-D0rCFemz.js → workspace-9UEsKuiP.js} +1 -1
  300. package/server/{workspace-CY_2-Ddv.js → workspace-CNfuj1-5.js} +3 -3
  301. package/server/{workspace-config-DA8U97k9.js → workspace-config-ChWOECy0.js} +1 -1
  302. package/server/{workspace-manager-BIfpzqdU.js → workspace-manager-BO-6k3sP.js} +1 -1
  303. package/server/{workspace-manager-D6NgGkiF.js → workspace-manager-D8AByFIT.js} +13 -13
  304. package/server/{workspace-metadata-C8yn8kAH.js → workspace-metadata-CvC268MN.js} +2 -2
  305. package/server/{workspace-metadata-DfgR40YU.js → workspace-metadata-DZiJtnuF.js} +1 -1
  306. package/server/{workspaces-DOeHyKmA.js → workspaces-D-uIoqbg.js} +104 -122
  307. package/server/writer-BUweuRPx.js +3 -0
  308. package/server/writer-CrP2xuBn.js +251 -0
  309. package/sync-sources/hooks/ask-user-question-hook +7 -1
  310. package/sync-sources/hooks/record-cost-event.js +4 -3
  311. package/sync-sources/hooks/record-cost-event.js.map +1 -1
  312. package/server/agent-runtime-mirror-DrWxopNA.js +0 -37
  313. package/server/auto-commit-wZ9X7Isd.js +0 -3
  314. package/server/bd-mutex-BItGvLQ8.js +0 -35
  315. package/server/beads-restore-CMbDSB5R.js +0 -60
  316. package/server/cli-CqgiSAU8.js +0 -3
  317. package/server/deacon-swarm-B8pgK2a7.js +0 -2
  318. package/server/dist-BYSj075e.js +0 -3
  319. package/server/forge-CUCYK7h_.js +0 -2
  320. package/server/hume-x9voULey.js +0 -3
  321. package/server/inspect-agent-D8UBDgfR.js +0 -2
  322. package/server/merge-ops-B7m-hBEZ.js +0 -2
  323. package/server/projects-BqRMlDOv.js +0 -3
  324. package/server/providers-gZ0cUgQM.js +0 -3
  325. package/server/public/assets/chunk-BO2N2NFS-C-6y8VFI.js +0 -103
  326. package/server/public/assets/index-BDqWyuZQ.js +0 -796
  327. package/server/public/assets/index-CZiADHcL.css +0 -1
  328. package/server/public/assets/mermaid-GHXKKRXX-DRM2ANcR.js +0 -1
  329. package/server/rally-CRteqXe0.js +0 -3
  330. package/server/record-CJsjvRO4.js +0 -3
  331. package/server/resume-R7xkSmLW.js +0 -3
  332. package/server/settings-CSaXtkoA.js +0 -2
  333. package/server/specs-oaaYaA5c.js +0 -3
  334. package/server/supervisor-03Tj_Wra.js +0 -2
  335. package/server/token-util-xNaV-00f.js +0 -3
  336. package/server/workflows-B4fIN8VP.js +0 -2
@@ -1,3 +1,3 @@
1
- import { $ as warnOnBareNumericIssueIds, $n as writeAgentStateJsonSync, $t as waitForPromptReady, An as getAgentDir, Bn as markAgentRunningState, C as restartAgent, Cn as __testInternals, Ct as deliverAgentPermissionDecision, Dn as clearAgentTroubledSync, E as resumeAgent, En as clearAgentTroubled, Et as setAgentDeliveryMethod, F as getActivity, Gt as getAgentRuntimeBaseCommand, Hn as markAgentTroubled, I as getLatestSessionId, In as isAgentPaused, It as retrieveSpawnTimeMemoryContext, J as dropLegacyAgentStatesMissingRoleAsync, Jn as saveAgentStateSync, Jt as getProviderAuthMode, K as stopAgent, Kn as resetAgentFailureCount, L as getLatestSessionIdSync, Ln as isAgentTroubled, Lt as transitionIssueToInProgress, Mn as getAgentState, Mt as assertWorkspaceStackHealthyForSpawn, Nn as getAgentStateFilePath, Nt as buildAgentLaunchConfig, On as clearYieldForResumeSync, P as appendActivity, Pn as getAgentStateSync, Q as listRunningAgentsSync, Qn as wipeAgentStateDirs, Qt as roleAgentDefinitionPath, R as getSessionId, Rn as isRole, Rt as transitionIssueToInReview, S as recoverAgent, Sn as SESSION_EXITED_BEFORE_KICKOFF, St as deliverAgentMessage, Tn as clearAgentPausedSync, Tt as deliverResumeMessageWithTranscriptConfirmation, U as spawnAgent, Un as recordAgentFailure, Ut as OHMYPI_AGENT_READY_TIMEOUT_SECONDS, Vn as markAgentStoppedState, W as spawnRun, Wn as recordAgentFailureSync, Wt as describeOhmypiSpawnFailure, X as listAgentStates, Xn as setAgentPausedSync, Yn as setAgentPaused, Yt as getRoleRuntimeBaseCommand, Z as listRunningAgents, Zn as setAgentYieldedSync, Zt as injectPiConversationMemory, _n as decideChannelsForWorkAgent, a as replayStandingAgent, b as autoRecoverAgents, bn as writeChannelsBridgeMcpConfig, cn as determineModel, dn as getProviderTmuxFlags, dr as normalizeAgentId, fr as resolveAgentTargetSync, gn as buildDefaultResumeContinueMessage, gr as getAgentRuntimeStateSync, hr as getAgentRuntimeState, i as replayCrashedStandingAgent, j as messageAgent, ln as getProviderEnvForModel, lr as clearReadySignal, mr as waitForReadySignal, n as compactAtTierRunBoundary, o as shouldReplayCompactAtTierRunBoundary, on as buildCavemanExports, pr as waitForAgentIdle, q as stopAgentSync, qn as saveAgentState, r as contextWindowForModel, sn as buildSpawnEnvForModel, t as init_agents, un as getProviderExportsForModel, ur as isQualifiedAgentId, vn as decideSupervisorForWorkAgent, vr as saveAgentRuntimeState, w as buildCompactRecoverySeed, wn as clearAgentPaused, wt as deliverInitialPromptWithRetry, x as detectCrashedAgents, xn as GOVERNOR_SLOT_PAUSE_REASON_PREFIX, yn as dismissDevChannelsDialog, z as saveSessionId } from "./agents-DqQa4Dq_.js";
1
+ import { $ as warnOnBareNumericIssueIds, $n as writeAgentStateJsonSync, $t as waitForPromptReady, An as getAgentDir, Bn as markAgentRunningState, C as restartAgent, Cn as __testInternals, Ct as deliverAgentPermissionDecision, Dn as clearAgentTroubledSync, E as resumeAgent, En as clearAgentTroubled, Et as setAgentDeliveryMethod, F as getActivity, Gt as getAgentRuntimeBaseCommand, Hn as markAgentTroubled, I as getLatestSessionId, In as isAgentPaused, It as retrieveSpawnTimeMemoryContext, J as dropLegacyAgentStatesMissingRoleAsync, Jn as saveAgentStateSync, Jt as getProviderAuthMode, K as stopAgent, Kn as resetAgentFailureCount, L as getLatestSessionIdSync, Ln as isAgentTroubled, Lt as transitionIssueToInProgress, Mn as getAgentState, Mt as assertWorkspaceStackHealthyForSpawn, Nn as getAgentStateFilePath, Nt as buildAgentLaunchConfig, On as clearYieldForResumeSync, P as appendActivity, Pn as getAgentStateSync, Q as listRunningAgentsSync, Qn as wipeAgentStateDirs, Qt as roleAgentDefinitionPath, R as getSessionId, Rn as isRole, Rt as transitionIssueToInReview, S as recoverAgent, Sn as SESSION_EXITED_BEFORE_KICKOFF, St as deliverAgentMessage, Tn as clearAgentPausedSync, Tt as deliverResumeMessageWithTranscriptConfirmation, U as spawnAgent, Un as recordAgentFailure, Ut as OHMYPI_AGENT_READY_TIMEOUT_SECONDS, Vn as markAgentStoppedState, W as spawnRun, Wn as recordAgentFailureSync, Wt as describeOhmypiSpawnFailure, X as listAgentStates, Xn as setAgentPausedSync, Yn as setAgentPaused, Yt as getRoleRuntimeBaseCommand, Z as listRunningAgents, Zn as setAgentYieldedSync, Zt as injectPiConversationMemory, _n as decideChannelsForWorkAgent, a as replayStandingAgent, b as autoRecoverAgents, bn as writeChannelsBridgeMcpConfig, cn as determineModel, cr as normalizeAgentId, dn as getProviderTmuxFlags, dr as waitForReadySignal, fr as getAgentRuntimeState, gn as buildDefaultResumeContinueMessage, hr as saveAgentRuntimeState, i as replayCrashedStandingAgent, j as messageAgent, ln as getProviderEnvForModel, lr as resolveAgentTargetSync, n as compactAtTierRunBoundary, o as shouldReplayCompactAtTierRunBoundary, on as buildCavemanExports, or as clearReadySignal, pr as getAgentRuntimeStateSync, q as stopAgentSync, qn as saveAgentState, r as contextWindowForModel, sn as buildSpawnEnvForModel, sr as isQualifiedAgentId, t as init_agents, un as getProviderExportsForModel, ur as waitForAgentIdle, vn as decideSupervisorForWorkAgent, w as buildCompactRecoverySeed, wn as clearAgentPaused, wt as deliverInitialPromptWithRetry, x as detectCrashedAgents, xn as GOVERNOR_SLOT_PAUSE_REASON_PREFIX, yn as dismissDevChannelsDialog, z as saveSessionId } from "./agents-B9GwfCyp.js";
2
2
  init_agents();
3
3
  export { GOVERNOR_SLOT_PAUSE_REASON_PREFIX, OHMYPI_AGENT_READY_TIMEOUT_SECONDS, SESSION_EXITED_BEFORE_KICKOFF, __testInternals, appendActivity, assertWorkspaceStackHealthyForSpawn, autoRecoverAgents, buildAgentLaunchConfig, buildCavemanExports, buildCompactRecoverySeed, buildDefaultResumeContinueMessage, buildSpawnEnvForModel, clearAgentPaused, clearAgentPausedSync, clearAgentTroubled, clearAgentTroubledSync, clearReadySignal, clearYieldForResumeSync, compactAtTierRunBoundary, contextWindowForModel, decideChannelsForWorkAgent, decideSupervisorForWorkAgent, deliverAgentMessage, deliverAgentPermissionDecision, deliverInitialPromptWithRetry, deliverResumeMessageWithTranscriptConfirmation, describeOhmypiSpawnFailure, detectCrashedAgents, determineModel, dismissDevChannelsDialog, dropLegacyAgentStatesMissingRoleAsync, getActivity, getAgentDir, getAgentRuntimeBaseCommand, getAgentRuntimeState, getAgentRuntimeStateSync, getAgentState, getAgentStateFilePath, getAgentStateSync, getLatestSessionId, getLatestSessionIdSync, getProviderAuthMode, getProviderEnvForModel, getProviderExportsForModel, getProviderTmuxFlags, getRoleRuntimeBaseCommand, getSessionId, injectPiConversationMemory, isAgentPaused, isAgentTroubled, isQualifiedAgentId, isRole, listAgentStates, listRunningAgents, listRunningAgentsSync, markAgentRunningState, markAgentStoppedState, markAgentTroubled, messageAgent, normalizeAgentId, recordAgentFailure, recordAgentFailureSync, recoverAgent, replayCrashedStandingAgent, replayStandingAgent, resetAgentFailureCount, resolveAgentTargetSync, restartAgent, resumeAgent, retrieveSpawnTimeMemoryContext, roleAgentDefinitionPath, saveAgentRuntimeState, saveAgentState, saveAgentStateSync, saveSessionId, setAgentDeliveryMethod, setAgentPaused, setAgentPausedSync, setAgentYieldedSync, shouldReplayCompactAtTierRunBoundary, spawnAgent, spawnRun, stopAgent, stopAgentSync, transitionIssueToInProgress, transitionIssueToInReview, waitForAgentIdle, waitForPromptReady, waitForReadySignal, warnOnBareNumericIssueIds, wipeAgentStateDirs, writeAgentStateJsonSync, writeChannelsBridgeMcpConfig };
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Ar as PROJECT_DOCS_SUBDIR, Hr as init_paths, Mr as PROJECT_PRDS_COMPLETED_SUBDIR, Nr as PROJECT_PRDS_PLANNED_SUBDIR, Pr as PROJECT_PRDS_SUBDIR, jr as PROJECT_PRDS_ACTIVE_SUBDIR, xr as ARCHIVES_DIR } from "./config-yaml-C_djSurJ.js";
3
- import { a as PAN_DIRNAME, c as PAN_SESSIONS_FILENAME, i as PAN_CONTINUE_FILENAME, n as PAN_CONTEXT_FILENAME, s as PAN_FEEDBACK_DIRNAME, u as PAN_SPEC_FILENAME } from "./types-CE1m_daD.js";
4
- import { t as init_pan_dir } from "./pan-dir-BlNrLzW7.js";
5
- import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-B5u3NxMl.js";
2
+ import { Cr as ARCHIVES_DIR, Fr as PROJECT_PRDS_PLANNED_SUBDIR, Ir as PROJECT_PRDS_SUBDIR, Jr as init_paths, Mr as PROJECT_DOCS_SUBDIR, Nr as PROJECT_PRDS_ACTIVE_SUBDIR, Pr as PROJECT_PRDS_COMPLETED_SUBDIR } from "./config-yaml-cNOZcEww.js";
3
+ import { a as PAN_DIRNAME, c as PAN_SESSIONS_FILENAME, i as PAN_CONTINUE_FILENAME, n as PAN_CONTEXT_FILENAME, s as PAN_FEEDBACK_DIRNAME, u as PAN_SPEC_FILENAME } from "./types-BLS_Zbmd.js";
4
+ import { t as init_pan_dir } from "./pan-dir-CQIfKG8c.js";
5
+ import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-tlXf80x3.js";
6
6
  import { Effect } from "effect";
7
7
  import { existsSync, readdirSync } from "fs";
8
8
  import { dirname, join } from "path";
@@ -271,4 +271,4 @@ var init_archive_planning = __esmMin((() => {
271
271
  //#endregion
272
272
  export { inferBranchFromWorkspace as a, findPrdAtStatusSync as c, findWorkspacePath as i, init_prd_locations as l, archiveWorkspaceArtifacts as n, init_archive_planning as o, findAllWorkspacePaths as r, movePrd as s, archivePlanning as t };
273
273
 
274
- //# sourceMappingURL=archive-planning-CPitEZo4.js.map
274
+ //# sourceMappingURL=archive-planning-CbghE9-o.js.map
@@ -1,3 +1,3 @@
1
- import { i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-CPitEZo4.js";
1
+ import { i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-CbghE9-o.js";
2
2
  init_archive_planning();
3
3
  export { findWorkspacePath };
@@ -1,4 +1,4 @@
1
- import { Hr as init_paths, Vr as getOverdeckHome } from "./config-yaml-C_djSurJ.js";
1
+ import { Jr as init_paths, qr as getOverdeckHome } from "./config-yaml-cNOZcEww.js";
2
2
  import { n as openDatabase, t as init_driver } from "./driver-D-HBOQa_.js";
3
3
  import { dirname, join } from "node:path";
4
4
  import { mkdirSync } from "node:fs";
@@ -208,4 +208,4 @@ function unshareArtifactBySlugJob(slug) {
208
208
  //#endregion
209
209
  export { getArtifactBySlugJob, listArtifactsForWorkspaceOrIssueJob, unshareArtifactBySlugJob };
210
210
 
211
- //# sourceMappingURL=artifact-index-jobs-sMnNtPhy.js.map
211
+ //# sourceMappingURL=artifact-index-jobs-CcSrUoSE.js.map
@@ -0,0 +1,3 @@
1
+ import { in as init_auto_commit, on as queueBeadsAutoCommit, rn as flushAutoCommits } from "./config-yaml-cNOZcEww.js";
2
+ init_auto_commit();
3
+ export { flushAutoCommits, queueBeadsAutoCommit };
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { r as isNoResumeValueEnabled, t as init_no_resume_mode } from "./no-resume-mode-yrPEQ_pC.js";
3
- import { a as spawnSequencerAgent, i as init_sequencer_agent } from "./sequencer-agent-BEDEHfd2.js";
2
+ import { r as isNoResumeValueEnabled, t as init_no_resume_mode } from "./no-resume-mode-Gh5R_YLF.js";
3
+ import { a as spawnSequencerAgent, i as init_sequencer_agent } from "./sequencer-agent-9Soi-WL-.js";
4
4
  //#region ../../lib/backlog/backlog-auto-trigger.ts
5
5
  /**
6
6
  * PAN-2396: --no-resume is the operator's full-quiescence escape hatch —
@@ -37,4 +37,4 @@ __esmMin((() => {
37
37
  }))();
38
38
  export { triggerDebouncedIncrementalPass };
39
39
 
40
- //# sourceMappingURL=backlog-auto-trigger-Cf9C8fwD.js.map
40
+ //# sourceMappingURL=backlog-auto-trigger-BfgDsII0.js.map
@@ -1,9 +1,28 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Hr as init_paths, Vr as getOverdeckHome } from "./config-yaml-C_djSurJ.js";
2
+ import { Fn as init_projects, Jr as init_paths, Sn as findProjectByPathSync, hn as resolveStateReadHomeSync, mn as init_state_read_home, qr as getOverdeckHome } from "./config-yaml-cNOZcEww.js";
3
3
  import { dirname, isAbsolute, join, resolve } from "node:path";
4
4
  import { Data } from "effect";
5
+ import "node:fs";
5
6
  import { mkdir, open, readFile, realpath, unlink } from "node:fs/promises";
6
7
  import { createHash } from "node:crypto";
8
+ import { AsyncLocalStorage } from "node:async_hooks";
9
+ //#region ../../lib/beads/home.ts
10
+ function resolveCanonicalBeadsHome(workspacePath = process.cwd(), project) {
11
+ let resolvedProject = project;
12
+ if (resolvedProject === void 0) try {
13
+ resolvedProject = findProjectByPathSync(workspacePath);
14
+ } catch {
15
+ resolvedProject = null;
16
+ }
17
+ if (!resolvedProject) return null;
18
+ const stateHome = resolveStateReadHomeSync(resolvedProject);
19
+ return resolve(stateHome.migrated ? stateHome.root : resolvedProject.path, ".beads");
20
+ }
21
+ var init_home = __esmMin((() => {
22
+ init_projects();
23
+ init_state_read_home();
24
+ }));
25
+ //#endregion
7
26
  //#region ../../lib/bd-process-lock.ts
8
27
  function isRecord(value) {
9
28
  return typeof value === "object" && value !== null;
@@ -68,6 +87,8 @@ async function realpathIfExists(path) {
68
87
  }
69
88
  }
70
89
  async function resolveSharedBeadsDir(workspacePath = process.cwd()) {
90
+ const canonical = resolveCanonicalBeadsHome(workspacePath);
91
+ if (canonical) return realpathIfExists(canonical);
71
92
  const beadsDir = resolve(workspacePath, ".beads");
72
93
  const redirectPath = join(beadsDir, "redirect");
73
94
  try {
@@ -113,9 +134,6 @@ async function readHolderFromPath(path) {
113
134
  const state = await readLockFileState(path);
114
135
  return state.kind === "valid" ? state.holder : null;
115
136
  }
116
- async function readBdProcessLockHolder(options = {}) {
117
- return readHolderFromPath(options.lockPath ?? await bdProcessLockPath(options.workspacePath));
118
- }
119
137
  function isProcessAlive(pid) {
120
138
  try {
121
139
  process.kill(pid, 0);
@@ -145,8 +163,8 @@ async function unlinkIfExists(path) {
145
163
  function matchesHolder(actual, expected) {
146
164
  return actual?.pid === expected.pid && actual.ts === expected.ts && actual.caller === expected.caller;
147
165
  }
148
- function isLockHeldByCurrentProcess(path) {
149
- return heldBdProcessLocks.has(path);
166
+ function isLockHeldByCurrentExecution(path) {
167
+ return bdLockExecution.getStore()?.has(path) === true && heldBdProcessLocks.has(path);
150
168
  }
151
169
  async function acquireStaleBreaker(path, caller, options) {
152
170
  const breakerPath = `${path}.break`;
@@ -200,7 +218,7 @@ async function acquireBdProcessLock(caller, options = {}) {
200
218
  const now = options.now ?? Date.now;
201
219
  const deadline = now() + acquisitionTimeoutMs;
202
220
  await mkdir(dirname(path), { recursive: true });
203
- if (isLockHeldByCurrentProcess(path)) {
221
+ if (isLockHeldByCurrentExecution(path)) {
204
222
  const held = heldBdProcessLocks.get(path);
205
223
  held.count += 1;
206
224
  let released = false;
@@ -286,7 +304,8 @@ async function acquireBdProcessLock(caller, options = {}) {
286
304
  async function withBdProcessLock(caller, fn, options = {}) {
287
305
  const handle = await acquireBdProcessLock(caller, options);
288
306
  try {
289
- return await fn();
307
+ const inherited = bdLockExecution.getStore() ?? /* @__PURE__ */ new Set();
308
+ return await bdLockExecution.run(new Set([...inherited, handle.path]), fn);
290
309
  } finally {
291
310
  await handle.release();
292
311
  }
@@ -333,9 +352,10 @@ async function runBdWithRetry(caller, fn, options = {}) {
333
352
  });
334
353
  throw lastError;
335
354
  }
336
- var TRANSIENT_BD_ERRNO_CODES, TRANSIENT_BD_LOCK_PATTERNS, DEFAULT_STALE_LOCK_MS, DEFAULT_ACQUIRE_TIMEOUT_MS, DEFAULT_ACQUIRE_POLL_MS, DEFAULT_RETRY_ATTEMPTS, DEFAULT_RETRY_INITIAL_DELAY_MS, DEFAULT_RETRY_MAX_DELAY_MS, BdProcessLockError, BdTransientFailure, heldBdProcessLocks;
355
+ var TRANSIENT_BD_ERRNO_CODES, TRANSIENT_BD_LOCK_PATTERNS, DEFAULT_STALE_LOCK_MS, DEFAULT_ACQUIRE_TIMEOUT_MS, DEFAULT_ACQUIRE_POLL_MS, DEFAULT_RETRY_ATTEMPTS, DEFAULT_RETRY_INITIAL_DELAY_MS, DEFAULT_RETRY_MAX_DELAY_MS, BdProcessLockError, BdTransientFailure, heldBdProcessLocks, bdLockExecution;
337
356
  var init_bd_process_lock = __esmMin((() => {
338
357
  init_paths();
358
+ init_home();
339
359
  TRANSIENT_BD_ERRNO_CODES = new Set([
340
360
  "EAGAIN",
341
361
  "EBUSY",
@@ -362,8 +382,9 @@ var init_bd_process_lock = __esmMin((() => {
362
382
  BdProcessLockError = class extends Data.TaggedError("BdProcessLockError") {};
363
383
  BdTransientFailure = class extends Data.TaggedError("BdTransientFailure") {};
364
384
  heldBdProcessLocks = /* @__PURE__ */ new Map();
385
+ bdLockExecution = new AsyncLocalStorage();
365
386
  }));
366
387
  //#endregion
367
- export { withBdProcessLock as a, runBdWithRetry as i, init_bd_process_lock as n, readBdProcessLockHolder as r, BdTransientFailure as t };
388
+ export { withBdProcessLock as a, runBdWithRetry as i, init_bd_process_lock as n, init_home as o, resolveSharedBeadsDir as r, resolveCanonicalBeadsHome as s, BdTransientFailure as t };
368
389
 
369
- //# sourceMappingURL=bd-process-lock-D1aJxeYv.js.map
390
+ //# sourceMappingURL=bd-process-lock-XAXAet9O.js.map
@@ -1,2 +1,2 @@
1
- import { a as getVBriefACStatusSync, c as syncBeadStatusToVBrief, i as getVBriefACStatus, n as clearBeadsForIssue, o as resolveBdTimeout, r as createBeadsFromVBrief, s as retryBd, t as BeadsOperationError } from "./beads-DRoj6-e1.js";
1
+ import { a as getVBriefACStatusSync, c as syncBeadStatusToVBrief, i as getVBriefACStatus, n as clearBeadsForIssue, o as resolveBdTimeout, r as createBeadsFromVBrief, s as retryBd, t as BeadsOperationError } from "./beads-BeSMEjGT.js";
2
2
  export { BeadsOperationError, clearBeadsForIssue, createBeadsFromVBrief, getVBriefACStatus, getVBriefACStatusSync, resolveBdTimeout, retryBd, syncBeadStatusToVBrief };
@@ -1,13 +1,44 @@
1
- import { _ as updateItemStatus, b as init_types, d as readPlanSync, m as readWorkspacePlanSync, o as init_io, v as updateSubItemStatus, x as subItemsOf } from "./io-CbAFXQge.js";
2
- import { a as withBdProcessLock, i as runBdWithRetry, n as init_bd_process_lock, t as BdTransientFailure } from "./bd-process-lock-D1aJxeYv.js";
3
- import { n as withBdMutexPromise } from "./bd-mutex-BItGvLQ8.js";
4
- import { n as init_acceptance_criteria, t as extractACFromDocument } from "./acceptance-criteria-CfujPRrz.js";
1
+ import { _ as updateItemStatus, b as init_types, d as readPlanSync, m as readWorkspacePlanSync, o as init_io, v as updateSubItemStatus, x as subItemsOf } from "./io-VEGSAqsd.js";
2
+ import { i as runBdWithRetry, n as init_bd_process_lock, o as init_home, s as resolveCanonicalBeadsHome, t as BdTransientFailure } from "./bd-process-lock-XAXAet9O.js";
3
+ import { n as init_resolver, t as createBeadsResolver } from "./resolver-C7dLn8OK.js";
4
+ import { t as init_beads_restore } from "./beads-restore-BUItPOjI.js";
5
+ import { n as init_writer, r as runMutationBatch, t as formatMutationBatchFailure } from "./writer-CrP2xuBn.js";
6
+ import { n as init_acceptance_criteria, t as extractACFromDocument } from "./acceptance-criteria-BZ_nQS1f.js";
5
7
  import { Data, Effect } from "effect";
6
8
  import { chmodSync, existsSync, mkdirSync, writeFileSync } from "fs";
7
- import { basename, join, resolve } from "path";
8
- import { readFile } from "node:fs/promises";
9
+ import { join } from "path";
9
10
  import { execFile } from "child_process";
10
11
  import { promisify } from "util";
12
+ //#region ../../lib/bd-mutex.ts
13
+ /**
14
+ * Global mutex for bd (beads) CLI commands.
15
+ *
16
+ * Embedded Dolt uses file-based locking — only one process can hold the
17
+ * database lock at a time. When the dashboard spawns concurrent `bd` commands
18
+ * (e.g. planning-state queries for every kanban card), each process blocks
19
+ * waiting for the lock, creating a cascade of hundreds of hung processes.
20
+ *
21
+ * This mutex serializes all bd operations so only one runs at a time,
22
+ * preventing lock contention and process pile-up.
23
+ */
24
+ init_beads_restore();
25
+ let pending = Promise.resolve();
26
+ async function withBdMutexPromise(fn) {
27
+ const result = pending.then(fn, fn);
28
+ pending = result.then(() => {}, () => {});
29
+ return result;
30
+ }
31
+ /**
32
+ * Effect-native variant of withBdMutex over a thunk that returns a no-context
33
+ * Effect. Serializes against all other bd-mutex callers via the Promise queue.
34
+ * The wrapped Effect must be no-context (R = never) since it is launched from
35
+ * inside a tryPromise — Layers cannot be threaded through the global mutex.
36
+ */
37
+ const withBdMutex = (fn) => Effect.tryPromise({
38
+ try: () => withBdMutexPromise(() => Effect.runPromise(fn())),
39
+ catch: (e) => e
40
+ });
41
+ //#endregion
11
42
  //#region ../../lib/vbrief/beads.ts
12
43
  /**
13
44
  * createBeadsFromVBrief
@@ -20,17 +51,10 @@ init_bd_process_lock();
20
51
  init_io();
21
52
  init_acceptance_criteria();
22
53
  init_types();
54
+ init_resolver();
55
+ init_writer();
56
+ init_home();
23
57
  const execFileAsync = promisify(execFile);
24
- /**
25
- * Derive a consistent project-level bead prefix from a workspace path.
26
- * Workspaces live at <projectRoot>/workspaces/feature-<id>/, so the project
27
- * root is two levels up. We use the repo directory name as the prefix.
28
- * This prevents each issue from getting a different prefix (e.g. pan-569,
29
- * pan-821) which breaks cross-issue bead scoping.
30
- */
31
- function deriveProjectPrefix(workspacePath) {
32
- return basename(resolve(workspacePath, "..", "..")).toLowerCase().replace(/[^a-z0-9-]/g, "-");
33
- }
34
58
  function normalizeClearBeadsOptions(value = {}) {
35
59
  if (typeof value === "number") return { timeoutMs: value };
36
60
  return {
@@ -89,27 +113,9 @@ function beadIdsFromList(beads) {
89
113
  return beads.map((bead) => bead?.id).filter((id) => id !== void 0 && id !== null && String(id).length > 0).map((id) => String(id));
90
114
  }
91
115
  async function listBeadsForIssue(workspacePath, issueLabel, options = {}) {
92
- const { timeoutMs = BD_TIMEOUT_FLOOR_MS, ...retryOptions } = normalizeClearBeadsOptions(options);
93
- return runBdWithRetry(`list beads for ${issueLabel}`, async () => {
94
- const { stdout } = await execFileAsync("bd", [
95
- "list",
96
- "--json",
97
- "-l",
98
- issueLabel,
99
- "--status",
100
- "all",
101
- "--limit",
102
- "0"
103
- ], {
104
- encoding: "utf-8",
105
- cwd: workspacePath,
106
- timeout: timeoutMs
107
- });
108
- return parseBdList(stdout);
109
- }, {
110
- ...retryOptions,
111
- workspacePath
112
- });
116
+ const result = await createBeadsResolver(workspacePath, { retry: normalizeClearBeadsOptions(options) }).getBeadsForIssue(issueLabel);
117
+ if (!result.ok) throw result.error;
118
+ return result.value;
113
119
  }
114
120
  /**
115
121
  * After a bd create timeout or empty-stdout, recover the bead ID by exact-title
@@ -180,7 +186,7 @@ async function retryBd(fn, options = {}) {
180
186
  * causes success:false so finalize exits non-zero rather than silently shipping
181
187
  * a corrupt DAG.
182
188
  */
183
- async function verifyAndRepairDependencyEdges(workspacePath, planEdges, beadIds, timeoutMs, retryOptions = {}) {
189
+ async function verifyAndRepairDependencyEdges(client, workspacePath, planEdges, beadIds, timeoutMs, retryOptions = {}) {
184
190
  const blockEdges = planEdges.filter((edge) => edge.type === "blocks");
185
191
  if (blockEdges.length === 0 || beadIds.size === 0) return {
186
192
  success: true,
@@ -189,20 +195,15 @@ async function verifyAndRepairDependencyEdges(workspacePath, planEdges, beadIds,
189
195
  const createdBeadIds = Array.from(new Set(beadIds.values()));
190
196
  let actualDeps;
191
197
  try {
192
- const { stdout } = await runBdWithRetry(`dep list for ${createdBeadIds.length} beads`, () => execFileAsync("bd", [
198
+ actualDeps = parseBdList(await runBdWithRetry(`dep list for ${createdBeadIds.length} beads`, () => client.run([
193
199
  "dep",
194
200
  "list",
195
201
  ...createdBeadIds,
196
202
  "--json"
197
- ], {
198
- encoding: "utf-8",
199
- cwd: workspacePath,
200
- timeout: timeoutMs
201
- }), {
203
+ ]), {
202
204
  ...retryOptions,
203
205
  workspacePath
204
- });
205
- actualDeps = parseBdList(stdout);
206
+ }));
206
207
  } catch (error) {
207
208
  return {
208
209
  success: false,
@@ -229,16 +230,12 @@ async function verifyAndRepairDependencyEdges(workspacePath, planEdges, beadIds,
229
230
  });
230
231
  }
231
232
  for (const repair of missingRepairs) try {
232
- await runBdWithRetry(`dep add ${repair.beadTo} ${repair.beadFrom}`, () => execFileAsync("bd", [
233
+ await runBdWithRetry(`dep add ${repair.beadTo} ${repair.beadFrom}`, () => client.mutate([
233
234
  "dep",
234
235
  "add",
235
236
  repair.beadTo,
236
237
  repair.beadFrom
237
- ], {
238
- encoding: "utf-8",
239
- cwd: workspacePath,
240
- timeout: timeoutMs
241
- }), {
238
+ ]), {
242
239
  ...retryOptions,
243
240
  workspacePath
244
241
  });
@@ -263,17 +260,13 @@ async function verifyAndRepairDependencyEdges(workspacePath, planEdges, beadIds,
263
260
  * a delete can time out client-side while committing server-side; a retry then
264
261
  * sees the bead as already gone. Catching that case makes deletion idempotent.
265
262
  */
266
- async function deleteBead(workspacePath, id, timeoutMs) {
263
+ async function deleteBead(client, id) {
267
264
  try {
268
- await execFileAsync("bd", [
265
+ await client.mutate([
269
266
  "delete",
270
267
  id,
271
268
  "--force"
272
- ], {
273
- encoding: "utf-8",
274
- cwd: workspacePath,
275
- timeout: timeoutMs
276
- });
269
+ ]);
277
270
  } catch (error) {
278
271
  if (execFileErrorMessage(error).toLowerCase().includes("not found")) return;
279
272
  throw error;
@@ -281,7 +274,17 @@ async function deleteBead(workspacePath, id, timeoutMs) {
281
274
  }
282
275
  async function clearBeadsForIssue(workspacePath, issueLabel, timeoutMsOrOptions = {}) {
283
276
  const options = normalizeClearBeadsOptions(timeoutMsOrOptions);
284
- const { timeoutMs = BD_TIMEOUT_FLOOR_MS } = options;
277
+ const batch = await runMutationBatch({
278
+ project: { workspacePath },
279
+ reason: `clear beads for ${issueLabel}`,
280
+ lockOptions: options
281
+ }, (client) => clearBeadsForIssueWithClient(client, workspacePath, issueLabel, options));
282
+ return batch.ok ? batch.value : {
283
+ cleared: 0,
284
+ errors: [formatMutationBatchFailure(batch)]
285
+ };
286
+ }
287
+ async function clearBeadsForIssueWithClient(client, workspacePath, issueLabel, options) {
285
288
  let existingBeads;
286
289
  try {
287
290
  existingBeads = await listBeadsForIssue(workspacePath, issueLabel, options);
@@ -295,7 +298,7 @@ async function clearBeadsForIssue(workspacePath, issueLabel, timeoutMsOrOptions
295
298
  const errors = [];
296
299
  let cleared = 0;
297
300
  for (const id of beadIdsFromList(existingBeads)) try {
298
- await runBdWithRetry(`delete bead ${id} for ${issueLabel}`, () => deleteBead(workspacePath, id, timeoutMs), {
301
+ await runBdWithRetry(`delete bead ${id} for ${issueLabel}`, () => deleteBead(client, id), {
299
302
  ...options,
300
303
  workspacePath
301
304
  });
@@ -341,7 +344,11 @@ function resolveInspectionMetadata(policy, item) {
341
344
  }
342
345
  async function createBeadsFromVBriefPromise(workspacePath, options = {}) {
343
346
  const { planPath, lockOptions, ...retryOptions } = options;
344
- return withBdProcessLock("create beads from vBRIEF", async () => withBdMutexPromise(async () => {
347
+ const batch = await runMutationBatch({
348
+ project: { workspacePath },
349
+ reason: "create beads from vBRIEF",
350
+ lockOptions
351
+ }, async (bd) => withBdMutexPromise(async () => {
345
352
  const created = [];
346
353
  const errors = [];
347
354
  const beadIds = /* @__PURE__ */ new Map();
@@ -361,48 +368,9 @@ async function createBeadsFromVBriefPromise(workspacePath, options = {}) {
361
368
  const beadsDir = join(workspacePath, ".beads");
362
369
  const redirectPath = join(beadsDir, "redirect");
363
370
  if (!existsSync(redirectPath)) {
364
- if (existsSync(join(resolve(workspacePath, "..", ".."), ".beads"))) {
365
- mkdirSync(beadsDir, { recursive: true });
366
- chmodSync(beadsDir, 448);
367
- writeFileSync(redirectPath, "../../.beads", "utf-8");
368
- console.log(`[beads] Created redirect to main repo .beads/ in ${workspacePath}`);
369
- } else if (!existsSync(beadsDir)) {
370
- const prefix = deriveProjectPrefix(workspacePath);
371
- try {
372
- await execFileAsync("bd", [
373
- "init",
374
- "--prefix",
375
- prefix
376
- ], {
377
- encoding: "utf-8",
378
- cwd: workspacePath,
379
- timeout: BD_TIMEOUT_FLOOR_MS
380
- });
381
- await execFileAsync("git", [
382
- "config",
383
- "beads.role",
384
- "contributor"
385
- ], { cwd: workspacePath }).catch(() => {});
386
- await execFileAsync("bd", [
387
- "config",
388
- "set",
389
- "export.git-add",
390
- "false"
391
- ], {
392
- encoding: "utf-8",
393
- cwd: workspacePath,
394
- timeout: BD_TIMEOUT_FLOOR_MS
395
- }).catch(() => {});
396
- console.log(`[beads] Initialized beads database in ${workspacePath} (prefix: ${prefix})`);
397
- } catch (initErr) {
398
- return {
399
- success: false,
400
- created: [],
401
- errors: [`Failed to initialize beads: ${initErr.message}`],
402
- beadIds
403
- };
404
- }
405
- }
371
+ mkdirSync(beadsDir, { recursive: true });
372
+ chmodSync(beadsDir, 448);
373
+ writeFileSync(redirectPath, resolveCanonicalBeadsHome(workspacePath) ?? "../../.beads", "utf8");
406
374
  }
407
375
  const doc = planPath ? readPlanSync(planPath) : readWorkspacePlanSync(workspacePath);
408
376
  if (!doc) return {
@@ -416,86 +384,34 @@ async function createBeadsFromVBriefPromise(workspacePath, options = {}) {
416
384
  const inspectionPolicy = doc.vBRIEFInfo.inspectionPolicy ?? "auto";
417
385
  const bdTimeoutMs = await resolveBdTimeout(workspacePath);
418
386
  const issueLabel = plan.id.toLowerCase();
419
- const redirectExists = existsSync(redirectPath);
420
387
  try {
421
388
  await retryBd(() => execFileAsync("bd", ["ping", "--json"], {
422
389
  encoding: "utf-8",
423
390
  cwd: workspacePath,
424
391
  timeout: bdTimeoutMs
425
392
  }), { sleep: retryOptions.sleep });
426
- } catch (connectErr) {
427
- const firstLine = String(connectErr?.message ?? connectErr?.stderr ?? "").split("\n")[0] || "unknown connectivity error";
428
- const mainBeadsDir = join(resolve(workspacePath, "..", ".."), ".beads");
429
- console.warn(`[beads] bd ping failed (${firstLine}); running bd doctor --fix before retry`);
393
+ } catch (connectError) {
430
394
  try {
431
395
  await execFileAsync("bd", ["doctor", "--fix"], {
432
396
  encoding: "utf-8",
433
397
  cwd: workspacePath,
434
398
  timeout: bdTimeoutMs
435
399
  });
436
- } catch (doctorErr) {
437
- const doctorFirstLine = String(doctorErr?.message ?? doctorErr?.stderr ?? "").split("\n")[0] || "unknown doctor error";
438
- console.warn(`[beads] bd doctor --fix failed: ${doctorFirstLine}`);
439
- }
440
- try {
441
400
  await retryBd(() => execFileAsync("bd", ["ping", "--json"], {
442
401
  encoding: "utf-8",
443
402
  cwd: workspacePath,
444
403
  timeout: bdTimeoutMs
445
404
  }), { sleep: retryOptions.sleep });
446
- } catch (retryErr) {
447
- if (!redirectExists && !existsSync(mainBeadsDir)) {
448
- const prefix = deriveProjectPrefix(workspacePath);
449
- console.log(`[beads] No redirect and no main beads — bd init --prefix ${prefix}`);
450
- try {
451
- await execFileAsync("bd", [
452
- "init",
453
- "--prefix",
454
- prefix
455
- ], {
456
- encoding: "utf-8",
457
- cwd: workspacePath,
458
- timeout: bdTimeoutMs
459
- });
460
- await execFileAsync("git", [
461
- "config",
462
- "beads.role",
463
- "contributor"
464
- ], { cwd: workspacePath }).catch(() => {});
465
- await execFileAsync("bd", [
466
- "config",
467
- "set",
468
- "export.git-add",
469
- "false"
470
- ], {
471
- encoding: "utf-8",
472
- cwd: workspacePath,
473
- timeout: bdTimeoutMs
474
- }).catch(() => {});
475
- console.log(`[beads] bd init succeeded for prefix ${prefix}`);
476
- } catch (initErr) {
477
- const detail = `database init failed: ${String(initErr?.message ?? initErr?.stderr ?? "").split("\n")[0]}`;
478
- console.warn(`[beads] ${detail}`);
479
- return {
480
- success: false,
481
- created: [],
482
- errors: [detail],
483
- beadIds
484
- };
485
- }
486
- } else {
487
- const detail = `beads probe failed after recovery (${String(retryErr?.message ?? retryErr?.stderr ?? "").split("\n")[0] || "unknown connectivity error"})`;
488
- console.warn(`[beads] ${detail}`);
489
- return {
490
- success: false,
491
- created: [],
492
- errors: [detail],
493
- beadIds
494
- };
495
- }
405
+ } catch (retryError) {
406
+ return {
407
+ success: false,
408
+ created: [],
409
+ errors: [`beads probe failed after recovery (${execFileErrorMessage(retryError ?? connectError).split("\n")[0]})`],
410
+ beadIds
411
+ };
496
412
  }
497
413
  }
498
- const clearResult = await clearBeadsForIssue(workspacePath, issueLabel, {
414
+ const clearResult = await clearBeadsForIssueWithClient(bd, workspacePath, issueLabel, {
499
415
  ...retryOptions,
500
416
  timeoutMs: bdTimeoutMs
501
417
  });
@@ -572,12 +488,7 @@ async function createBeadsFromVBriefPromise(workspacePath, options = {}) {
572
488
  let capturedBeadId = null;
573
489
  let createFailureMessage = null;
574
490
  try {
575
- const { stdout } = await execFileAsync("bd", args, {
576
- encoding: "utf-8",
577
- cwd: workspacePath,
578
- timeout: bdTimeoutMs
579
- });
580
- capturedBeadId = stdout.trim() || null;
491
+ capturedBeadId = (await bd.mutate(args)).trim() || null;
581
492
  if (!capturedBeadId) createFailureMessage = `Created "${item.title}" but could not capture bead ID`;
582
493
  } catch (error) {
583
494
  const timedOut = error?.killed === true || /ETIMEDOUT/i.test(String(error?.code ?? ""));
@@ -599,7 +510,7 @@ async function createBeadsFromVBriefPromise(workspacePath, options = {}) {
599
510
  } else errors.push(createFailureMessage ?? `Failed to create "${item.title}"`);
600
511
  }
601
512
  }
602
- const edgeVerification = await verifyAndRepairDependencyEdges(workspacePath, planEdges, beadIds, bdTimeoutMs, retryOptions);
513
+ const edgeVerification = await verifyAndRepairDependencyEdges(bd, workspacePath, planEdges, beadIds, bdTimeoutMs, retryOptions);
603
514
  errors.push(...edgeVerification.errors);
604
515
  return {
605
516
  success: errors.length === 0,
@@ -607,40 +518,29 @@ async function createBeadsFromVBriefPromise(workspacePath, options = {}) {
607
518
  errors,
608
519
  beadIds
609
520
  };
610
- }), {
611
- workspacePath,
612
- ...lockOptions
613
- });
521
+ }));
522
+ return batch.ok ? batch.value : {
523
+ success: false,
524
+ created: [],
525
+ errors: [formatMutationBatchFailure(batch)],
526
+ beadIds: /* @__PURE__ */ new Map()
527
+ };
614
528
  }
615
529
  /**
616
530
  * Syncs a bead's status to the corresponding vBRIEF item.
617
531
  * Returns the vBRIEF item ID that was updated, or null if no match was found.
618
532
  * Callers must provide knownTitle (from bd list/show output).
619
533
  */
620
- /** Read a bead title from .beads/issues.jsonl by bead ID. */
621
- async function readBeadTitleFromJsonl(beadId, workspacePath) {
622
- try {
623
- const jsonlPath = join(workspacePath, ".beads", "issues.jsonl");
624
- if (!existsSync(jsonlPath)) return null;
625
- const raw = await readFile(jsonlPath, "utf-8");
626
- for (const line of raw.split("\n")) {
627
- if (!line.trim()) continue;
628
- try {
629
- const entry = JSON.parse(line);
630
- if (entry.id === beadId && typeof entry.title === "string") return entry.title;
631
- } catch {}
632
- }
633
- return null;
634
- } catch {
635
- return null;
636
- }
534
+ async function readBeadTitle(beadId, workspacePath) {
535
+ const result = await createBeadsResolver(workspacePath).getBeadById(beadId);
536
+ return result.ok ? result.value?.title ?? null : null;
637
537
  }
638
538
  async function syncBeadStatusToVBriefPromise(beadId, workspacePath, status = "completed", knownTitle) {
639
539
  try {
640
540
  const doc = readWorkspacePlanSync(workspacePath);
641
541
  if (!doc) return null;
642
542
  let beadTitle = knownTitle ?? null;
643
- if (!beadTitle) beadTitle = await readBeadTitleFromJsonl(beadId, workspacePath);
543
+ if (!beadTitle) beadTitle = await readBeadTitle(beadId, workspacePath);
644
544
  if (!beadTitle) return null;
645
545
  const planId = doc.plan.id;
646
546
  const prefix = `${planId}: `;
@@ -744,6 +644,6 @@ const getVBriefACStatus = (workspacePath) => Effect.try({
744
644
  })
745
645
  });
746
646
  //#endregion
747
- export { getVBriefACStatusSync as a, syncBeadStatusToVBrief as c, getVBriefACStatus as i, clearBeadsForIssue as n, resolveBdTimeout as o, createBeadsFromVBrief as r, retryBd as s, BeadsOperationError as t };
647
+ export { getVBriefACStatusSync as a, syncBeadStatusToVBrief as c, getVBriefACStatus as i, withBdMutex as l, clearBeadsForIssue as n, resolveBdTimeout as o, createBeadsFromVBrief as r, retryBd as s, BeadsOperationError as t };
748
648
 
749
- //# sourceMappingURL=beads-DRoj6-e1.js.map
649
+ //# sourceMappingURL=beads-BeSMEjGT.js.map