@overdeck/desktop 0.45.13 → 0.45.15
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.
- package/package.json +1 -1
- package/server/{acceptance-criteria-CfujPRrz.js → acceptance-criteria-DHZk2ceV.js} +2 -2
- package/server/{advancing-selfheal-Bn5QiLtn.js → advancing-selfheal-CSuZ31bB.js} +5 -5
- package/server/{agent-gc-Cl9Nm0Zu.js → agent-gc-D_DxfBHR.js} +3 -3
- package/server/{agent-state-C6Rm6FPR.js → agent-state-EP2QFV9n.js} +1 -1
- package/server/{agent-state-service-JhFzYCP_.js → agent-state-service-BZkvgQf4.js} +5 -5
- package/server/{agent-state-service-U8feBf8t.js → agent-state-service-C_2ZAQRP.js} +1 -1
- package/server/{agents-DqQa4Dq_.js → agents-CsOzAmRg.js} +117 -74
- package/server/{agents-CxbuBjID.js → agents-DCvyTXNU.js} +1 -1
- package/server/{archive-planning-DmpT1_14.js → archive-planning-CTILQRnV.js} +1 -1
- package/server/{archive-planning-CPitEZo4.js → archive-planning-DkivCk1A.js} +4 -4
- package/server/{artifact-index-jobs-sMnNtPhy.js → artifact-index-jobs-CmsvQ1ey.js} +2 -2
- package/server/auto-commit-QAfsu3Sb.js +3 -0
- package/server/{backlog-auto-trigger-Cf9C8fwD.js → backlog-auto-trigger-ueRaT8Dy.js} +2 -2
- package/server/{bd-process-lock-D1aJxeYv.js → bd-process-lock-D3S4T4o-.js} +32 -11
- package/server/{beads-DRoj6-e1.js → beads-BGGxrkZ5.js} +96 -196
- package/server/{beads-CivpXztb.js → beads-CYsLiyIM.js} +1 -1
- package/server/{beads-query-tOsAYP5h.js → beads-query-B1DlJVp9.js} +24 -99
- package/server/beads-restore-CyygSmmn.js +23 -0
- package/server/{behavior-D3d2mVyD.js → behavior-Cpj03N4v.js} +3 -3
- package/server/{briefing-freshness-BL3Q6p7R.js → briefing-freshness-Kh5V8RTh.js} +4 -4
- package/server/{checkpoint-manager-j5URlFY7.js → checkpoint-manager-CAFos8e1.js} +1 -1
- package/server/{checkpoint-manager-DCxjQvP_.js → checkpoint-manager-fu9oVsR-.js} +2 -2
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-BoX1H2Hf.js → checkpoints-1BqOlS4q.js} +2 -2
- package/server/{checkpoints-Bu_M_Q9W.js → checkpoints-DvhGi8P_.js} +1 -1
- package/server/{claude-hooks-provision-D-jGXmu1.js → claude-hooks-provision-s_wdpeVj.js} +2 -2
- package/server/{claude-permissions-DxIjkOVl.js → claude-permissions-CaWqysff.js} +2 -2
- package/server/{claude-settings-overlay-5b9X2S0C.js → claude-settings-overlay-BbA4FbVI.js} +1 -1
- package/server/{claude-settings-overlay-BPDS6GfE.js → claude-settings-overlay-CcTf0xzG.js} +2 -2
- package/server/{cli-s7bPWy-E.js → cli-BwCvCUBK.js} +9 -9
- package/server/cli-ClIQwgMI.js +3 -0
- package/server/{cliproxy-BituqWtR.js → cliproxy-BsoNNDAj.js} +2 -2
- package/server/{cliproxy-D3sHB0sI.js → cliproxy-C2xC-3vH.js} +1 -1
- package/server/{close-issue-CrBE7voz.js → close-issue-BleIwP3f.js} +5 -5
- package/server/{closed-issue-reaper-BRQBc7Xa.js → closed-issue-reaper-BwUUvjEW.js} +1 -1
- package/server/{closed-issue-reaper-DX9mYUji.js → closed-issue-reaper-mC5pujeb.js} +102 -30
- package/server/{codex-Bi1ITSOo.js → codex-B7DTpwEw.js} +1 -1
- package/server/{codex-CO0HrK3j.js → codex-DW60_5j2.js} +5 -5
- package/server/{compact-beads-CrA8-k10.js → compact-beads-CK_hHEnB.js} +1 -1
- package/server/{compact-beads-DUkCUFxA.js → compact-beads-DKL54y6j.js} +15 -8
- package/server/{config-B4_d7z7z.js → config-BRNQJXhA.js} +1 -1
- package/server/{config-DsCxzjXK.js → config-ZNnMpIlh.js} +2 -2
- package/server/{config-yaml-C_djSurJ.js → config-yaml-Dcz-8uit.js} +29 -3
- package/server/{conflict-gate-CpOn9KC-.js → conflict-gate-DGT8jCLp.js} +1 -1
- package/server/{conflict-gate-D47Kl78u.js → conflict-gate-DTje2Ll7.js} +3 -3
- package/server/{context-layers-BNhUBTkf.js → context-layers-BdUCQ-cl.js} +3 -3
- package/server/{context-layers-CHl3Nroz.js → context-layers-ByOWUjUg.js} +2 -2
- package/server/{control-settings-KyYNXZLv.js → control-settings-DwkAeooY.js} +4 -4
- package/server/{conversation-compaction-D3aS5PnS.js → conversation-compaction-OTYgd6eg.js} +8 -8
- package/server/{conversation-compaction-D4Wed1BJ.js → conversation-compaction-WYQZUVDm.js} +1 -1
- package/server/{conversation-service-CFZIjs-M.js → conversation-service-BR1OgvxO.js} +5 -5
- package/server/{conversation-service-DcDB5usR.js → conversation-service-C_kNZPLx.js} +1 -1
- package/server/{conversations-BSOU5qnu.js → conversations-DG2M8WnT.js} +4 -4
- package/server/{conversations-BbDPrz89.js → conversations-izHvSoAR.js} +1 -1
- package/server/{cost-BE_ulOrw.js → cost-B2mj17iG.js} +3 -3
- package/server/{cost-CaiG63FG.js → cost-DQ2ajr_m.js} +2 -2
- package/server/{cost-sync-D6AX8jv-.js → cost-sync-gTayEuWP.js} +3 -3
- package/server/{dag-BQFtXOuJ.js → dag-CqTehWpY.js} +3 -3
- package/server/{dangerous-git-ops-04Ba-Qu3.js → dangerous-git-ops-DDWQlPC3.js} +1 -1
- package/server/dashboard-db-worker.js +6 -6
- package/server/{deacon-Bz-6Wjmn.js → deacon-BqW9HMew.js} +3 -3
- package/server/{deacon-2EvA9Ci3.js → deacon-DrKDBeJL.js} +161 -1594
- package/server/{deacon-nudge-log-B-naf89q.js → deacon-nudge-log-D1wEK6zF.js} +1 -1
- package/server/deacon-swarm-BY5hKNaU.js +2 -0
- package/server/{deacon-swarm-DYYOzHRH.js → deacon-swarm-CO_A7xyd.js} +12 -105
- package/server/deacon.js +7 -7
- package/server/{devcontainer-renderer-Dx0C7VWJ.js → devcontainer-renderer-BQolp_qZ.js} +3 -3
- package/server/{dist-ya66D9ze.js → dist-Bc32rWJB.js} +1 -1
- package/server/dist-DGTwcZhI.js +3 -0
- package/server/{docker-D2TbXDO6.js → docker-s-esqZ__.js} +67 -28
- package/server/{ensure-devcontainer-BTiMfFp5.js → ensure-devcontainer-DA4-jF6R.js} +4 -4
- package/server/{ensure-devcontainer-BIShzs3M.js → ensure-devcontainer-pUVaT0h3.js} +1 -1
- package/server/{esm-shims-DiV9jHa_.js → esm-shims-CJHy8CZY.js} +1 -1
- package/server/{event-store-C02Gprug.js → event-store-CcJAhKCl.js} +1 -1
- package/server/{event-store-C71x6h0i.js → event-store-DRte2Rwt.js} +3 -3
- package/server/{events-BFDuPV6n.js → events-Bej1w_k8.js} +3 -3
- package/server/{events-D2gP2-Yv.js → events-CtsLScn8.js} +1 -1
- package/server/export-Dx_qJ3h8.js +87 -0
- package/server/{factory-ByfbrCab.js → factory-FN727tWr.js} +4 -4
- package/server/{feature-registry-population-CSH66UO8.js → feature-registry-population-ie-yBcQC.js} +4 -4
- package/server/{feature-registry-storage-DW7dUefc.js → feature-registry-storage-CkZTFSsn.js} +2 -2
- package/server/{features-x_aLR7U9.js → features-Dtm9ABuz.js} +2 -2
- package/server/{feedback-target-BFo9fScH.js → feedback-target-BYtpyt1i.js} +6 -6
- package/server/{feedback-target-C4VMPTZu.js → feedback-target-DVJQDiE4.js} +1 -1
- package/server/{feedback-writer-DCyd75yJ.js → feedback-writer-DOUhyIW2.js} +1 -1
- package/server/{feedback-writer-B9ZqnnX3.js → feedback-writer-fdE1BzeL.js} +4 -4
- package/server/{flywheel-DB48X7Nn.js → flywheel-Bi82iiNl.js} +1 -1
- package/server/{flywheel-D9NKvWqb.js → flywheel-Bv3wv2S6.js} +23 -15
- package/server/{flywheel-DwQCoZQG.js → flywheel-CUErLAyN.js} +13 -13
- package/server/{flywheel-merge-order-DrjmFXg4.js → flywheel-merge-order-BaEN3iyN.js} +7 -7
- package/server/{flywheel-merge-order-f1bi5XIf.js → flywheel-merge-order-DXjeBnJ1.js} +1 -1
- package/server/{forge-C-SoKy8U.js → forge-ButEdJ31.js} +2 -2
- package/server/forge-XlDgPQWs.js +2 -0
- package/server/{from-fu7ZumnY.js → from-CbtTxftl.js} +1 -1
- package/server/{fts-db-CL-YzSRG.js → fts-db-CBgBLZcL.js} +2 -2
- package/server/{fts-operations-Bylu5NjM.js → fts-operations-CI9Xuo_1.js} +2 -2
- package/server/{git-utils-Ym380hJZ.js → git-utils-BCLRWQ-y.js} +1 -1
- package/server/{git-utils-C8koBs8j.js → git-utils-ClfpP47N.js} +2 -2
- package/server/{github-app-DIr70YLg.js → github-app-DRD2woO0.js} +1 -1
- package/server/{github-app-DhycHVLF.js → github-app-DscZ0_B6.js} +2 -2
- package/server/{github-client-7gkcXcBS.js → github-client-DpiZnxGH.js} +2 -2
- package/server/{github-client-Ji9lUTNF.js → github-client-iFRw8f7e.js} +1 -1
- package/server/{github-pr-lookup-rt7T9FwA.js → github-pr-lookup-D-EBexxC.js} +2 -2
- package/server/{harness-resolve-CvGXUnAF.js → harness-resolve-iMjyNUJ2.js} +3 -3
- package/server/{health-events-DDfkoO5a.js → health-events-B_WsQyYm.js} +1 -1
- package/server/{health-events-D4E1DLN-.js → health-events-CRdxDFN2.js} +2 -2
- package/server/{hooks-DvdnCVv6.js → hooks-C1ScyVxP.js} +1 -1
- package/server/{hooks-D_6pAbuJ.js → hooks-C9b7Vqpw.js} +2 -2
- package/server/hume-K1pi8jC4.js +3 -0
- package/server/{hume-DkVOs1Qi.js → hume-TQ5pvOZ_.js} +2 -2
- package/server/{idle-stack-reaper-cDRXDpgE.js → idle-stack-reaper-B1kG7B_X.js} +2 -2
- package/server/{idle-stack-reaper-DNbV9-fj.js → idle-stack-reaper-iFVOAoJy.js} +1 -1
- package/server/{infra-Clew3DpF.js → infra-bpq1MHKU.js} +3 -3
- package/server/{injection-QCIHOpk6.js → injection-BLWfwTVZ.js} +1 -1
- package/server/{injection-ql0Nddcn.js → injection-DJqWld1v.js} +7 -7
- package/server/inspect-agent-477VxQim.js +2 -0
- package/server/{inspect-agent-DY18KEx4.js → inspect-agent-DytCsltn.js} +9 -9
- package/server/{internal-token-C90jBp-y.js → internal-token-CCaWaTwE.js} +1 -1
- package/server/{internal-token-BeXjPLKy.js → internal-token-CjlhdufS.js} +2 -2
- package/server/{io-CbAFXQge.js → io-BiQ2Cs3k.js} +2 -2
- package/server/{issue-closed-BYC2TCk-.js → issue-closed-FApNiOOs.js} +4 -4
- package/server/{issue-lifecycle-CLHbj8RS.js → issue-lifecycle-BkFWNjlD.js} +1 -1
- package/server/{issue-lifecycle-BoJa6qIt.js → issue-lifecycle-C-K53ASY.js} +21 -21
- package/server/{issue-service-singleton-BS9NENuR.js → issue-service-singleton-CuHGpJJP.js} +8 -8
- package/server/{issue-service-singleton-3g_CCY-1.js → issue-service-singleton-bG1WdSdQ.js} +1 -1
- package/server/{issues-BPcqPqfV.js → issues-CwQMphDH.js} +2 -2
- package/server/jsonl-parser-dNIjHgym.js +245 -0
- package/server/{label-cleanup-CwiCSZrb.js → label-cleanup-DYvAZknd.js} +3 -3
- package/server/{layers-OHHLphl0.js → layers-CD6FysRU.js} +2 -2
- package/server/{lifecycle-B8IdvUbt.js → lifecycle-C_73gi-C.js} +7 -7
- package/server/{lifecycle-io-BMCH1Bxg.js → lifecycle-io-C_Wu0_i-.js} +1 -1
- package/server/{lifecycle-io-C73m5e6R.js → lifecycle-io-CeYxP3cE.js} +4 -4
- package/server/{linear-client-BMxgycoy.js → linear-client-4qoKnuQu.js} +1 -1
- package/server/{linear-client-CgQlM4aT.js → linear-client-EtVyblVz.js} +2 -2
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-B7Oi-g6k.js → merge-7rqkTUm2.js} +3 -3
- package/server/{merge-agent-Bwm34MZ5.js → merge-agent-36wfYm2u.js} +1 -1
- package/server/{merge-agent-DNFFsiEm.js → merge-agent-4Zhlgvqp.js} +28 -28
- package/server/{merge-batch-BpYXUaqJ.js → merge-batch-itfnwdsT.js} +1 -1
- package/server/{merge-blockers-DIOZmqdK.js → merge-blockers-Bto_Oe_o.js} +2 -2
- package/server/{merge-BRkVaIx-.js → merge-brm721Es.js} +1 -1
- package/server/merge-ops-PzqsW69V.js +2 -0
- package/server/{merge-rebase-C8WH39MB.js → merge-rebase-Czfqfe4q.js} +2 -2
- package/server/{merge-set-CsEE2CyQ.js → merge-set-BIkGQL9j.js} +3 -3
- package/server/{merge-set-DOsBTBQc.js → merge-set-G1RHcu3D.js} +1 -1
- package/server/{merge-sync-C2B322Ot.js → merge-sync-B43Dybea.js} +2 -2
- package/server/{merge-sync-CcLM2vwW.js → merge-sync-DIrmlZUr.js} +1 -1
- package/server/{merge-train-BIm7-7cy.js → merge-train-DGqVuNZV.js} +3 -3
- package/server/{merge-train-deps-DG1oQ2DT.js → merge-train-deps-q15XLnAS.js} +4 -4
- package/server/{merge-verification-BAbjxEd5.js → merge-verification-Cqfxx6bE.js} +4 -4
- package/server/{multipart-parser-jKtKAXtl.js → multipart-parser-CiPxxfUH.js} +2 -2
- package/server/node_modules/.package-lock.json +1 -1
- package/server/{orphan-proposed-reconciler-zHrwJ3xr.js → orphan-proposed-reconciler-BWWHn4Lr.js} +15 -39
- package/server/{orphan-proposed-reconciler-BqVGaOIj.js → orphan-proposed-reconciler-DAD9FJtQ.js} +1 -1
- package/server/package-lock.json +2 -2
- package/server/package.json +1 -1
- package/server/{pan-dir-BlNrLzW7.js → pan-dir-Bj7Hy8iu.js} +3 -3
- package/server/{paths-CiVeo4N_.js → paths-C9DkhIOT.js} +2 -2
- package/server/{pickup-KLRUhThD.js → pickup-CKRuGDsB.js} +1 -1
- package/server/{pipeline-notifier-nkWCe042.js → pipeline-notifier-BkKbQ8ji.js} +1 -1
- package/server/{pipeline-notifier-DBF6dHxH.js → pipeline-notifier-CAurUste.js} +2 -2
- package/server/project-pipelines-BRWaGmI4.js +162 -0
- package/server/projects-KJ94e50I.js +3 -0
- package/server/{prompts-CXbQvevY.js → prompts-DfI5qbTW.js} +2 -2
- package/server/{providers-CUdAb5Qu.js → providers-CWDXoaMA.js} +7 -7
- package/server/providers-D-5txBRc.js +3 -0
- package/server/public/assets/{chunk-BO2N2NFS-C-6y8VFI.js → chunk-BO2N2NFS-ClukPsZQ.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-NACO1xW5.js → diagram-OG6HWLK6-Avtvq2qI.js} +1 -1
- package/server/public/assets/{dist-DQD-ZjQY.js → dist-BEHQuasD.js} +3 -3
- package/server/public/assets/{dist-D1FjqGgm.js → dist-BvmY-qb1.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-CEMAKgmE.js → ganttDiagram-6RSMTGT7-7KhCd0fH.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-D5lC7FW8.js → highlighted-body-OFNGDK62-iQoBMTf0.js} +1 -1
- package/server/public/assets/index-DUFDmvmH.css +1 -0
- package/server/public/assets/{index-BDqWyuZQ.js → index-DnTZ2QeN.js} +132 -132
- package/server/public/assets/{linear-DDHAMRPB.js → linear-CiJHW9g5.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-DZJOwgBG.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-DwBdeKBb.js → pieDiagram-4H26LBE5-BOhmvUhW.js} +1 -1
- package/server/public/assets/{prod-DAZt0c4G.js → prod-DmLBBqat.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-CNDLp-_m.js → quadrantDiagram-W4KKPZXB-Cjku660G.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-oIUL_uO1.js → sankeyDiagram-5OEKKPKP-D52w5oPh.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-B-IM6Cck.js → xychartDiagram-2RQKCTM6-BTO07_Iv.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-kTRl7cWC.js → pull-requests-Bmre-Xlz.js} +3 -3
- package/server/{pull-requests-DZ-V7_LB.js → pull-requests-CKZPWhjD.js} +1 -1
- package/server/{rally-xCTZ-UcI.js → rally-BBd9tQ__.js} +3 -3
- package/server/rally-Dc2Wnxw2.js +3 -0
- package/server/{rally-api-jOk4vit_.js → rally-api-DDc85HIz.js} +1 -1
- package/server/{rally-api-DpZo3WwF.js → rally-api-DxZFObI_.js} +2 -2
- package/server/{rally-client-BQjm3aaq.js → rally-client-BADHn0m_.js} +1 -1
- package/server/{rally-client-CoWZeVEj.js → rally-client-DvvLiAQP.js} +4 -4
- package/server/{reap-terminal-sessions-CAmURC2h.js → reap-terminal-sessions-D6JDJsqF.js} +1 -1
- package/server/{reap-terminal-sessions-BwJb2DLJ.js → reap-terminal-sessions-D_xvy-Mk.js} +1 -1
- package/server/{rebuild-stack-BZ7j27xY.js → rebuild-stack-D19i080j.js} +6 -6
- package/server/{rebuild-stack-r-cxcr26.js → rebuild-stack-GOsWqXi3.js} +1 -1
- package/server/{reconstruct-cache-13EkMg_i.js → reconstruct-cache-lQrG4xGg.js} +6 -6
- package/server/record-pyB6VA32.js +3 -0
- package/server/recovery-trip-Dfh1tNHn.js +98 -0
- package/server/{release-engine-YLTnEO_K.js → release-engine-DxcMWRuK.js} +5 -5
- package/server/{release-set-DwvT_Opu.js → release-set-BYsgX7o6.js} +3 -3
- package/server/{remote-9u9WL0NJ.js → remote-8W2Yhygw.js} +3 -3
- package/server/{remote-B062S1Kc.js → remote-DmeL21dF.js} +3 -3
- package/server/{remote-agents-BBTg-vLT.js → remote-agents-BfQBE6MN.js} +5 -5
- package/server/{remote-agents-B4eWgwNd.js → remote-agents-DlvbzO7m.js} +1 -1
- package/server/{remote-completion-B0rmBnbL.js → remote-completion-BgkiSQmx.js} +12 -12
- package/server/resolver-dTpSSzaH.js +158 -0
- package/server/resume-DhcIqsTm.js +3 -0
- package/server/{review-agent-tfR5RDzG.js → review-agent-D025Wt7w.js} +22 -22
- package/server/{review-agent-Bf9XjLnl.js → review-agent-Rub0OpZc.js} +1 -1
- package/server/{review-artifacts-D0_IE6DQ.js → review-artifacts-CX951jTU.js} +6 -6
- package/server/{review-context-CXO5ml5D.js → review-context-DGGGR_w5.js} +7 -7
- package/server/{review-monitor-DfFUSx0J.js → review-monitor-0_qqMcnS.js} +2 -2
- package/server/{review-status-BcfwcAcO.js → review-status-4qqLkRMu.js} +17 -17
- package/server/{review-status-B0Axo-Ma.js → review-status-Br6lAFGO.js} +1 -1
- package/server/{review-status-enrichment-Cp5kFTGl.js → review-status-enrichment-Cr8m3uVL.js} +3 -3
- package/server/{review-status-sync-Bc0c_u12.js → review-status-sync-D3KUhsdA.js} +1 -1
- package/server/{review-status-sync-CEFty1pW.js → review-status-sync-OC-l1lNt.js} +2 -2
- package/server/{review-verdict-feedback-BOKRLLDf.js → review-verdict-feedback-DrWMuRaj.js} +6 -6
- package/server/{review-verdict-feedback-BnGtT0vN.js → review-verdict-feedback-YOzmsq9G.js} +1 -1
- package/server/{rollup-C22QDVxh.js → rollup-CnxbwaLH.js} +8 -8
- package/server/{rollup-BVqFuiS9.js → rollup-DmazRY0j.js} +1 -1
- package/server/{scanner-BLCnuXqY.js → scanner-DE1MqAaF.js} +7 -7
- package/server/{sequence-io-BozlUb6f.js → sequence-io-C0uoqfGx.js} +4 -4
- package/server/{sequencer-agent-BEDEHfd2.js → sequencer-agent-i-b2u4SJ.js} +10 -6
- package/server/server.js +1020 -293
- package/server/{service-C8jKYZ0w.js → service-D0_gh2tl.js} +1668 -1408
- package/server/{session-fork-BDGksK4e.js → session-fork-DZ12vipL.js} +2 -2
- package/server/{settings-CSLhh6qR.js → settings-ByqjPtFO.js} +2 -2
- package/server/{settings-DrRQCren.js → settings-DCC4BAqj.js} +3 -3
- package/server/settings-yydgaqhv.js +2 -0
- package/server/{shadow-engineering-BMcBN-Of.js → shadow-engineering-BhnmtW5m.js} +2 -2
- package/server/{shadow-state-CHqWHD3T.js → shadow-state-ByXZehsy.js} +1 -1
- package/server/{shadow-state-B4ayC7nx.js → shadow-state-CKm8xWX9.js} +2 -2
- package/server/{ship-log-CDVmOlZP.js → ship-log-DE_0Cv_i.js} +1 -1
- package/server/{smart-compaction-C-F5sP9P.js → smart-compaction-D5Zen3AA.js} +7 -7
- package/server/{smart-compaction-V9DBrGcr.js → smart-compaction-h4_ca6Uk.js} +1 -1
- package/server/{spawn-planning-session-Bz4_JES2.js → spawn-planning-session-Bgi7Ub02.js} +1 -1
- package/server/{spawn-planning-session-dSpOU0lP.js → spawn-planning-session-Dueit4WX.js} +15 -15
- package/server/{specialist-completion-Coz3eTSr.js → specialist-completion-BZ8M-WZ0.js} +1 -1
- package/server/{specialist-context-fmb03vXQ.js → specialist-context-BMq83C58.js} +5 -5
- package/server/{specialist-handoff-logger-B9HK_lRu.js → specialist-handoff-logger-BxX1YefH.js} +2 -2
- package/server/{specialist-logs-B24R2B9Y.js → specialist-logs-BWZYcJ6P.js} +3 -3
- package/server/{specialists-Chvvwf5z.js → specialists-8ZAguXef.js} +1 -1
- package/server/{specialists-CL7E8yUg.js → specialists-BudKrjOu.js} +76 -76
- package/server/{specialists-BGNZ0_ZW.js → specialists-DrPrC9Y9.js} +20 -256
- package/server/{specialists-B6f5-5nG.js → specialists-ZkW4Mb7U.js} +1 -1
- package/server/specs-DwoAEGrW.js +3 -0
- package/server/{src-DGAEtABV.js → src-DHn4Rd2F.js} +13 -2
- package/server/{src-D-VXCC9C.js → src-DNUUqkec.js} +6 -6
- package/server/{src-BVxZuHMg.js → src-Dv6L03vW.js} +3 -3
- package/server/{stack-health-BKbTTOT2.js → stack-health-Dclm7_tu.js} +1 -1
- package/server/{stack-health-C-le5erA.js → stack-health-DxsTx7II.js} +2 -2
- package/server/{state-home-CoyWsECg.js → state-home-CRowbXqU.js} +6 -6
- package/server/stuck-remediation-CFWUP8_I.js +1491 -0
- package/server/stuck-remediation-CLHd-lrF.js +2 -0
- package/server/{summary-fork-BF_0vxrq.js → summary-fork-CKc01Our.js} +2 -2
- package/server/{summary-fork-BlE30Q-I.js → summary-fork-CtCwBJ2Z.js} +8 -8
- package/server/{supervisor-BSeML_p0.js → supervisor-BA5D72Qa.js} +2 -2
- package/server/supervisor-DHjumXlL.js +2 -0
- package/server/{swarm-readiness-CQ4sjrXc.js → swarm-readiness-CL5sM9B1.js} +3 -3
- package/server/{system-prerequisites-DnmLYOnU.js → system-prerequisites-DmFSXIE5.js} +1 -1
- package/server/{teardown-workspace-CpcjDrZ4.js → teardown-workspace-DWmFJzTw.js} +37 -68
- package/server/{test-agent-queue-Bq298zZl.js → test-agent-queue-DjsQoV5X.js} +6 -6
- package/server/{test-verdict-CCDd25uN.js → test-verdict-BSqsQp3G.js} +1 -1
- package/server/{test-verdict-Bm4uv_AA.js → test-verdict-D1AmZ2c0.js} +1 -1
- package/server/{tldr-daemon-CaSUXd9r.js → tldr-daemon-C-MGomL8.js} +2 -2
- package/server/{tldr-daemon-Rn1Zue0P.js → tldr-daemon-DD9rI5gA.js} +1 -1
- package/server/{tmux-BVc-NeKM.js → tmux-C_d-lSIq.js} +2 -2
- package/server/{tmux-CbcrkUx5.js → tmux-x291Gjjb.js} +1 -1
- package/server/{token-D2OC_9ms.js → token-DfBf1bsd.js} +1 -1
- package/server/{tracker-config-C1Y_2CIo.js → tracker-config-CNODpd11.js} +2 -2
- package/server/{tracker-config-EsBoOWEy.js → tracker-config-DItsdelv.js} +1 -1
- package/server/{tracker-utils-DSb9cfrF.js → tracker-utils-B9ZoVA9b.js} +1 -1
- package/server/{tracker-utils-lph9C3Pw.js → tracker-utils-Ch2_5GGf.js} +2 -2
- package/server/{traefik-connect-5EP1WS_Z.js → traefik-connect-BF4x_LUQ.js} +1 -1
- package/server/{tunnel-DDe-ATFF.js → tunnel-YD80_IHr.js} +1 -1
- package/server/{tunnel-BFBCeo97.js → tunnel-r_5nHAI6.js} +3 -3
- package/server/{types-B5u3NxMl.js → types-33JEP4LZ.js} +1 -1
- package/server/{uat-train-8T24rPzc.js → uat-train-DDI00aqD.js} +1 -1
- package/server/{uat-train-DtKHHy1U.js → uat-train-DjkFWXge.js} +25 -25
- package/server/{validation-lyudzPvD.js → validation-DUTiJnyz.js} +4 -4
- package/server/{validation-COOXwNXU.js → validation-ict8hnXk.js} +1 -1
- package/server/{verification-runner-Dd1FX8Qk.js → verification-runner-ATaLbpr5.js} +1 -1
- package/server/{verification-runner-DO0nYTJx.js → verification-runner-inLgeQux.js} +12 -12
- package/server/{vtt-parser-C57tEF7-.js → vtt-parser-QnRfcjiU.js} +1 -1
- package/server/{work-agent-prompt-B2F3ZwKm.js → work-agent-prompt-fZljjA1_.js} +12 -12
- package/server/{workflows-Clz_AFwR.js → workflows-oBnJ7Tm0.js} +14 -14
- package/server/workflows-tU7KKxQi.js +2 -0
- package/server/{workspace-D0rCFemz.js → workspace-B2WOW9Hw.js} +1 -1
- package/server/{workspace-CY_2-Ddv.js → workspace-CNuW2j41.js} +3 -3
- package/server/{workspace-config-DA8U97k9.js → workspace-config-CBgMGhWs.js} +1 -1
- package/server/{workspace-manager-D6NgGkiF.js → workspace-manager-CB-R07R3.js} +12 -12
- package/server/{workspace-manager-BIfpzqdU.js → workspace-manager-DjUAJCSs.js} +1 -1
- package/server/{workspace-metadata-C8yn8kAH.js → workspace-metadata-9Nn5kgRl.js} +2 -2
- package/server/{workspace-metadata-DfgR40YU.js → workspace-metadata-Fd58uUQG.js} +1 -1
- package/server/{workspaces-DOeHyKmA.js → workspaces-BjWXntty.js} +94 -120
- package/server/writer-CQMGzEkw.js +3 -0
- package/server/writer-fe1-8iGc.js +251 -0
- package/sync-sources/hooks/record-cost-event.js +2 -1
- package/sync-sources/hooks/record-cost-event.js.map +1 -1
- package/server/auto-commit-wZ9X7Isd.js +0 -3
- package/server/bd-mutex-BItGvLQ8.js +0 -35
- package/server/beads-restore-CMbDSB5R.js +0 -60
- package/server/cli-CqgiSAU8.js +0 -3
- package/server/deacon-swarm-B8pgK2a7.js +0 -2
- package/server/dist-BYSj075e.js +0 -3
- package/server/forge-CUCYK7h_.js +0 -2
- package/server/hume-x9voULey.js +0 -3
- package/server/inspect-agent-D8UBDgfR.js +0 -2
- package/server/merge-ops-B7m-hBEZ.js +0 -2
- package/server/projects-BqRMlDOv.js +0 -3
- package/server/providers-gZ0cUgQM.js +0 -3
- package/server/public/assets/index-CZiADHcL.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-DRM2ANcR.js +0 -1
- package/server/rally-CRteqXe0.js +0 -3
- package/server/record-CJsjvRO4.js +0 -3
- package/server/resume-R7xkSmLW.js +0 -3
- package/server/settings-CSaXtkoA.js +0 -2
- package/server/specs-oaaYaA5c.js +0 -3
- package/server/supervisor-03Tj_Wra.js +0 -2
- package/server/workflows-B4fIN8VP.js +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
2
|
+
import { Fr as PROJECT_PRDS_SUBDIR, Mr as PROJECT_PRDS_ACTIVE_SUBDIR, Nr as PROJECT_PRDS_COMPLETED_SUBDIR, Pr as PROJECT_PRDS_PLANNED_SUBDIR, Sr as ARCHIVES_DIR, jr as PROJECT_DOCS_SUBDIR, qr as init_paths } from "./config-yaml-Dcz-8uit.js";
|
|
3
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-
|
|
5
|
-
import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-
|
|
4
|
+
import { t as init_pan_dir } from "./pan-dir-Bj7Hy8iu.js";
|
|
5
|
+
import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-33JEP4LZ.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-
|
|
274
|
+
//# sourceMappingURL=archive-planning-DkivCk1A.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Kr as getOverdeckHome, qr as init_paths } from "./config-yaml-Dcz-8uit.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-
|
|
211
|
+
//# sourceMappingURL=artifact-index-jobs-CmsvQ1ey.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
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-
|
|
3
|
+
import { a as spawnSequencerAgent, i as init_sequencer_agent } from "./sequencer-agent-i-b2u4SJ.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-
|
|
40
|
+
//# sourceMappingURL=backlog-auto-trigger-ueRaT8Dy.js.map
|
|
@@ -1,9 +1,28 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
2
|
+
import { Kr as getOverdeckHome, Pn as init_projects, mn as resolveStateReadHomeSync, pn as init_state_read_home, qr as init_paths, xn as findProjectByPathSync } from "./config-yaml-Dcz-8uit.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
|
|
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 (
|
|
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
|
-
|
|
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,
|
|
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-
|
|
390
|
+
//# sourceMappingURL=bd-process-lock-D3S4T4o-.js.map
|
|
@@ -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-
|
|
2
|
-
import {
|
|
3
|
-
import { n as
|
|
4
|
-
import {
|
|
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-BiQ2Cs3k.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-D3S4T4o-.js";
|
|
3
|
+
import { n as init_resolver, t as createBeadsResolver } from "./resolver-dTpSSzaH.js";
|
|
4
|
+
import { t as init_beads_restore } from "./beads-restore-CyygSmmn.js";
|
|
5
|
+
import { n as init_writer, r as runMutationBatch, t as formatMutationBatchFailure } from "./writer-fe1-8iGc.js";
|
|
6
|
+
import { n as init_acceptance_criteria, t as extractACFromDocument } from "./acceptance-criteria-DHZk2ceV.js";
|
|
5
7
|
import { Data, Effect } from "effect";
|
|
6
8
|
import { chmodSync, existsSync, mkdirSync, writeFileSync } from "fs";
|
|
7
|
-
import {
|
|
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
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
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}`, () =>
|
|
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(
|
|
263
|
+
async function deleteBead(client, id) {
|
|
267
264
|
try {
|
|
268
|
-
await
|
|
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
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
365
|
-
|
|
366
|
-
|
|
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 (
|
|
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 (
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
612
|
-
|
|
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
|
-
|
|
621
|
-
|
|
622
|
-
|
|
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
|
|
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-
|
|
649
|
+
//# sourceMappingURL=beads-BGGxrkZ5.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-
|
|
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-BGGxrkZ5.js";
|
|
2
2
|
export { BeadsOperationError, clearBeadsForIssue, createBeadsFromVBrief, getVBriefACStatus, getVBriefACStatusSync, resolveBdTimeout, retryBd, syncBeadStatusToVBrief };
|