@overdeck/desktop 0.45.22 → 0.45.24
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/drizzle/overdeck/0000_overdeck_init.sql +2 -0
- package/package.json +1 -1
- package/server/{acceptance-criteria-BH7ac_1G.js → acceptance-criteria-DDCnXF58.js} +5 -5
- package/server/{advancing-selfheal-cSvXNZLZ.js → advancing-selfheal-BVwW4qRn.js} +6 -6
- package/server/{agent-gc-Dj2gncak.js → agent-gc-CHcnvonI.js} +4 -4
- package/server/agent-state-Bc3tzUC8.js +3 -0
- package/server/{agent-state-service-DistflNn.js → agent-state-service-BsgWxZuB.js} +5 -5
- package/server/{agent-state-service-CsQ07Pxe.js → agent-state-service-D5UGKIJL.js} +1 -1
- package/server/{agents-DXdHmRTC.js → agents-EbI0zCJl.js} +4 -4
- package/server/agents-wi9NWzs2.js +3 -0
- package/server/{archive-planning-Cp_DC1j-.js → archive-planning-BZDgzoEj.js} +1 -1
- package/server/{archive-planning-BvDuWNMo.js → archive-planning-Du25Jtst.js} +30 -6
- package/server/{artifact-index-jobs-CDBFL4OU.js → artifact-index-jobs-CbEDfCDu.js} +2 -2
- package/server/assemble-J2ZZ2C15.js +339 -0
- package/server/{backlog-auto-trigger-DmA1IbYf.js → backlog-auto-trigger-2R2jog7n.js} +3 -3
- package/server/{behavior-CGj16clS.js → behavior-B3exJ42O.js} +2 -2
- package/server/{briefing-freshness-C12WgkaB.js → briefing-freshness-D1wzUIWv.js} +2 -2
- package/server/{build-info-BRpqQvNd.js → build-info-CZk_TITh.js} +1 -1
- package/server/{build-info-NU3KbXYw.js → build-info-Ie_D0_BT.js} +3 -3
- package/server/{checkpoint-manager-CTPjAmtH.js → checkpoint-manager-BI1Wxoku.js} +2 -2
- package/server/{checkpoint-manager-rOgT98WY.js → checkpoint-manager-DwbQoqrC.js} +1 -1
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-B5jFNi2G.js → checkpoints-BJIs5QIA.js} +1 -1
- package/server/{checkpoints-BJum14fs.js → checkpoints-CQB1h765.js} +2 -2
- package/server/{claude-hooks-provision-BhwWK-TQ.js → claude-hooks-provision-8Ngo8TpT.js} +1 -1
- package/server/{claude-hooks-provision-D7p5WcKZ.js → claude-hooks-provision-D8GXF3_s.js} +2 -2
- package/server/{claude-permissions-nSFKH78M.js → claude-permissions-DNWEVV6z.js} +2 -2
- package/server/{claude-settings-overlay-BI_UIke0.js → claude-settings-overlay-CEdaqpWI.js} +2 -2
- package/server/{claude-settings-overlay-DHBwjS1X.js → claude-settings-overlay-DWy-Bb4Y.js} +1 -1
- package/server/cli-B86rejVV.js +3 -0
- package/server/{cli-CbKNkFE5.js → cli-RoOx5DUf.js} +9 -9
- package/server/{cliproxy-Brf_5MuG.js → cliproxy-C8a1vtTU.js} +2 -2
- package/server/{cliproxy-bONZDBbC.js → cliproxy-fHfIeiGd.js} +1 -1
- package/server/{close-issue-CxReRxIc.js → close-issue-DoOifFIK.js} +5 -5
- package/server/{closed-issue-reaper-CQ3kqha7.js → closed-issue-reaper-Bk3SU4RC.js} +9 -9
- package/server/{closed-issue-reaper-DXP2Xyv3.js → closed-issue-reaper-CktPXo8m.js} +1 -1
- package/server/{codex-CbmztVcc.js → codex-BZXGhUVB.js} +27 -8
- package/server/codex-GcHuUF-k.js +3 -0
- package/server/{codex-parser-jl8AeAmB.js → codex-parser-CFZ1_1Jl.js} +2 -2
- package/server/{config-q4Gvd8dq.js → config-BZ0sHTju.js} +2 -2
- package/server/{config-DeTsoZdR.js → config-CKxYiCmX.js} +2 -2
- package/server/{config-BJKocXKd.js → config-DzV30TOm.js} +1 -1
- package/server/{config-yaml-ig8Nwtiw.js → config-yaml-DySPNmKN.js} +77 -194
- package/server/{conflict-gate-CFqPVxEg.js → conflict-gate-BaCVrH-N.js} +3 -3
- package/server/{conflict-gate-CHU9K1vU.js → conflict-gate-BhAY7TUd.js} +1 -1
- package/server/context-layers-BrPmE__h.js +4 -0
- package/server/context-layers-igZ4FI4_.js +37 -0
- package/server/{control-settings-D_odMIaC.js → control-settings-BQp7_4uD.js} +4 -4
- package/server/{conversation-compaction-B6YSRLda.js → conversation-compaction-CgrR8YYp.js} +8 -8
- package/server/{conversation-compaction-CN4-5YYt.js → conversation-compaction-eQB5CkOe.js} +1 -1
- package/server/{conversation-service-Dq33SYEj.js → conversation-service-BLd3MYsG.js} +1 -1
- package/server/{conversation-service-C3avRVEr.js → conversation-service-DPJ71F33.js} +329 -19
- package/server/{conversations-bYpM9-kZ.js → conversations-6AfUfbwc.js} +5 -5
- package/server/{conversations-H9if0bCQ.js → conversations-CAsJF9kh.js} +1 -1
- package/server/{cost-Codk1pc2.js → cost-B2ddP6wq.js} +18 -2
- package/server/{cost-wH46-WsJ.js → cost-R-m6Yi-W.js} +3 -3
- package/server/{cost-sync-D_cre6WM.js → cost-sync-BsN6ER0n.js} +3 -3
- package/server/{dag-CJpgf9A3.js → dag-B1ucnjDU.js} +9 -9
- package/server/{dangerous-git-ops-D6AF-Hg_.js → dangerous-git-ops-BXqeWVSf.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-CkT_kznS.js → deacon-CU_cAYSR.js} +406 -607
- package/server/{deacon-B8HbQdqU.js → deacon-kiQrb4ZT.js} +3 -3
- package/server/{deacon-nudge-log-D6K9K-rE.js → deacon-nudge-log-6wVqAaqz.js} +3 -3
- package/server/{deacon-swarm-BryRr6AO.js → deacon-swarm-BXZZ1Z2-.js} +17 -17
- package/server/deacon-swarm-C-GwfjJy.js +2 -0
- package/server/deacon.js +8 -8
- package/server/{deploy-patrol-1IrZxicY.js → deploy-patrol-AiFoP8dw.js} +136 -19
- package/server/{deploy-window-wDf4UgHt.js → deploy-window-C3F-tihF.js} +77 -10
- package/server/{deploy-window-7ZYHh7Zp.js → deploy-window-DkZraDyj.js} +1 -1
- package/server/{dev-supervisor-C7p9kEpc.js → dev-supervisor-bcOWqdQE.js} +2 -2
- package/server/{devcontainer-renderer-CNmQy0pL.js → devcontainer-renderer-_d6XhyND.js} +3 -3
- package/server/dist-Bzy0y69j.js +3 -0
- package/server/{dist-D-Ed5yVw.js → dist-Cb_0uvpS.js} +1 -1
- package/server/{docker-BCZ89M9X.js → docker-DcMTFTUC.js} +2 -2
- package/server/{dod-DbJLYcHv.js → dod-C6n9RV3G.js} +1 -1
- package/server/{ensure-devcontainer-Cs6W9Yzj.js → ensure-devcontainer-BZgOhRo7.js} +1 -1
- package/server/{ensure-devcontainer-V5JWaAva.js → ensure-devcontainer-DNi-ono3.js} +4 -4
- package/server/{esm-shims-dTeNdq7X.js → esm-shims-OSHAYaS1.js} +1 -1
- package/server/{event-store-TnWdydfB.js → event-store-CQL6NeqB.js} +3 -3
- package/server/{event-store-CpBGsO6_.js → event-store-EV2cMiXj.js} +1 -1
- package/server/{events-Dsuv6qyB.js → events-BTdrdEq8.js} +1 -1
- package/server/{events-DSUdR-04.js → events-DTfAe4My.js} +3 -3
- package/server/{factory-BMrK4TrE.js → factory-CFibJuaw.js} +50 -13
- package/server/{feature-registry-population-B-CI9hgE.js → feature-registry-population-DKZFMbFt.js} +4 -4
- package/server/{feature-registry-storage-B972ph_A.js → feature-registry-storage-BdPuLcBX.js} +2 -2
- package/server/{features-Bc-Bmiye.js → features-ez2271oH.js} +2 -2
- package/server/{feedback-target-DZ-iAnAa.js → feedback-target-7mqqwrX6.js} +7 -7
- package/server/{feedback-target-DS6NUuSs.js → feedback-target-CoFDHiM8.js} +1 -1
- package/server/{feedback-writer-BXP6g75N.js → feedback-writer-CY5L1lB7.js} +6 -5
- package/server/{feedback-writer-Bx5z11mF.js → feedback-writer-D3a22RCd.js} +1 -1
- package/server/flywheel-DHrgCphM.js +1084 -0
- package/server/flywheel-DzGtWnJ1.js +477 -0
- package/server/flywheel-SVF02Jpq.js +2 -0
- package/server/{flywheel-merge-order-CTgHeg-W.js → flywheel-merge-order-UU0tiUld.js} +10 -9
- package/server/{flywheel-merge-order-CNKAY489.js → flywheel-merge-order-UUcsCDb6.js} +1 -1
- package/server/{forge-B1S_KZv4.js → forge-CNFnyqps.js} +2 -2
- package/server/forge-DXnS_YFH.js +2 -0
- package/server/{from-DpwQ-sc3.js → from-kNxT0bZC.js} +1 -1
- package/server/{fts-db-DmAcuCkV.js → fts-db-CE46vDkZ.js} +2 -2
- package/server/{fts-operations-7d_RkmWp.js → fts-operations-CqY6zl-i.js} +2 -2
- package/server/{git-utils-Cc3FHDKd.js → git-utils-CRw2zLPC.js} +68 -3
- package/server/git-utils-D0_yhCgF.js +3 -0
- package/server/{github-app-CDPtGF7J.js → github-app-C3QrAUd0.js} +27 -8
- package/server/{github-app-CU14oYzP.js → github-app-ClZ2lk8D.js} +1 -1
- package/server/{github-client-XjTJbBm7.js → github-client-BnIsSrEN.js} +2 -2
- package/server/{github-client-CwBZZ3t7.js → github-client-DfQYVUaw.js} +1 -1
- package/server/{github-pr-lookup-CFGeVhqv.js → github-pr-lookup-D16NGsSO.js} +2 -2
- package/server/{harness-binary-B2CTcD84.js → harness-binary-DPUi-Pv8.js} +32 -6
- package/server/{harness-resolve-D5FVQTmy.js → harness-resolve-3lNZkyT4.js} +18 -9
- package/server/{health-events-DREeevle.js → health-events-BBcTYQKU.js} +2 -2
- package/server/{health-events-C1whmd58.js → health-events-BDOHby5Q.js} +1 -1
- package/server/{hooks-yxRsjk-z.js → hooks-CKZgXlJb.js} +2 -2
- package/server/{hooks-B-HItBiS.js → hooks-DPVX1rwQ.js} +1 -1
- package/server/{hume-Dz_OymXE.js → hume-Cz8igP9E.js} +2 -2
- package/server/hume-ccTf4wTX.js +3 -0
- package/server/{idle-stack-reaper-DrCv0OAG.js → idle-stack-reaper-CuLF0j2H.js} +1 -1
- package/server/{idle-stack-reaper-Yf34xXxY.js → idle-stack-reaper-DDIRwxUY.js} +2 -2
- package/server/{in-flight-guard-BoWm66Kh.js → in-flight-guard-CAAkqPLu.js} +2 -2
- package/server/{infra-D4iNWMA5.js → infra-BEqFxlJc.js} +14 -4
- package/server/{injection-D7T75Pye.js → injection-C8aiVJrF.js} +191 -183
- package/server/{injection-BVNa4MQW.js → injection-CPUIqNhI.js} +1 -1
- package/server/{inspect-agent-BXCgNeZ4.js → inspect-agent-BLuJ1AkT.js} +137 -81
- package/server/inspect-agent-Brtz0URj.js +2 -0
- package/server/{internal-token-C9DdEOKY.js → internal-token-BrcU6qfe.js} +1 -1
- package/server/{internal-token-CXsfxslp.js → internal-token-s0-oKybJ.js} +2 -2
- package/server/{io-DQR9PMgS.js → io-C9kF1wtJ.js} +160 -184
- package/server/{issue-closed-DtmJM0D0.js → issue-closed-CDJk4pIp.js} +7 -7
- package/server/{issue-lifecycle-8PSS9Anq.js → issue-lifecycle-B8sZHVHh.js} +1 -1
- package/server/{issue-lifecycle-CeyW_HoD.js → issue-lifecycle-ojZAzDBP.js} +22 -22
- package/server/{issue-service-singleton-DBZabEl7.js → issue-service-singleton-BvJ09SaR.js} +1 -1
- package/server/{issue-service-singleton-D_RVYBuL.js → issue-service-singleton-Yx5DdmVJ.js} +8 -8
- package/server/{issues-pDW9VUNz.js → issues-BMmP_77e.js} +2 -2
- package/server/{jsonl-parser-C3HVNR5d.js → jsonl-parser-BXSlHwEh.js} +3 -3
- package/server/{label-cleanup-DPwiZlWo.js → label-cleanup-B0UJwnv5.js} +3 -3
- package/server/{label-reconciler-Df1ZduPH.js → label-reconciler-B4iOAjlC.js} +4 -4
- package/server/{launcher-generator-COgR2By1.js → launcher-generator-BBWG_SiS.js} +105 -10
- package/server/{lifecycle-io-taIb0PoH.js → lifecycle-io-BREGpnLk.js} +37 -37
- package/server/lifecycle-io-DPo7x11I.js +3 -0
- package/server/{lifecycle-CtPDcZ9u.js → lifecycle-xmBfK2GJ.js} +6 -6
- package/server/lifecycle-yPd___5E.js +121 -0
- package/server/{linear-client-DsFkIxee.js → linear-client-BsuUvkdA.js} +2 -2
- package/server/{linear-client-YwZMDIwQ.js → linear-client-CTskEeT_.js} +1 -1
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-BwsyNRJV.js → merge-B1DiziGU.js} +1 -1
- package/server/{merge-C1t-bspg.js → merge-CefQNAnq.js} +3 -3
- package/server/{merge-agent-DDiIjzk-.js → merge-agent-4WOWlSYA.js} +28 -28
- package/server/{merge-agent-B-SnXOoc.js → merge-agent-CKkgIBPB.js} +1 -1
- package/server/{merge-batch-Byt-QnEl.js → merge-batch-ClFn2T-y.js} +1 -1
- package/server/merge-ops-CR44oU9-.js +2 -0
- package/server/{merge-rebase-Cm6fXaZN.js → merge-rebase-BfaTyXsw.js} +2 -2
- package/server/merge-set-DJ8-UErs.js +83 -0
- package/server/{merge-set-6LEglm6o.js → merge-set-bUqbm3yc.js} +1 -1
- package/server/{merge-sync-B95_4in_.js → merge-sync-BJYeOODr.js} +1 -1
- package/server/{merge-sync-Do8_q32h.js → merge-sync-VPV28g0g.js} +2 -2
- package/server/{merge-train-CKana8EH.js → merge-train-CHopycP0.js} +3 -3
- package/server/{merge-train-deps-BgmqwIfA.js → merge-train-deps-D1cOZzy2.js} +4 -4
- package/server/{merge-verification-CqnUzGEK.js → merge-verification-BkaOqPsw.js} +4 -4
- package/server/{multipart-parser-tdOQDJ3o.js → multipart-parser-duPAfSBw.js} +2 -2
- package/server/{no-resume-mode-BWOSZjWd.js → no-resume-mode-Nw29vaFb.js} +11 -8
- package/server/node_modules/.package-lock.json +8 -8
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
- package/server/node_modules/undici/README.md +5 -0
- package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
- package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
- package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
- package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
- package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
- package/server/node_modules/undici/docs/docs/index.md +5 -0
- package/server/node_modules/undici/lib/core/request.js +1 -1
- package/server/node_modules/undici/lib/core/util.js +6 -1
- package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
- package/server/node_modules/undici/lib/dispatcher/client-h1.js +31 -6
- package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
- package/server/node_modules/undici/lib/handler/cache-handler.js +93 -5
- package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
- package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
- package/server/node_modules/undici/lib/handler/retry-handler.js +6 -4
- package/server/node_modules/undici/lib/interceptor/cache.js +21 -4
- package/server/node_modules/undici/lib/interceptor/decompress.js +4 -0
- package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
- package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
- package/server/node_modules/undici/lib/util/cache.js +49 -7
- package/server/node_modules/undici/lib/web/fetch/body.js +2 -1
- package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
- package/server/node_modules/undici/package.json +2 -2
- package/server/node_modules/undici/types/client.d.ts +2 -2
- package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
- package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
- package/server/{orphan-proposed-reconciler-xklgvNA7.js → orphan-proposed-reconciler-BvKkWMJQ.js} +15 -13
- package/server/{orphan-proposed-reconciler-DSvsJ5M7.js → orphan-proposed-reconciler-CTSGcK8p.js} +1 -1
- package/server/package-lock.json +9 -9
- package/server/package.json +1 -1
- package/server/{pan-dir-DOcf6ug3.js → pan-dir-B0c3w0Ya.js} +78 -58
- package/server/{paths-DooHpt9p.js → paths-D-xWGHdh.js} +2 -2
- package/server/{pickup-CaskQ7j6.js → pickup-DUCLWrJY.js} +17 -16
- package/server/{pipeline-membership-1LGRjo-k.js → pipeline-membership-mY3GprlK.js} +186 -67
- package/server/{pipeline-notifier-CZsrU_nj.js → pipeline-notifier-BJr8gQX6.js} +1 -1
- package/server/{pipeline-notifier-B6FVsYF9.js → pipeline-notifier-BXkJzDC4.js} +2 -2
- package/server/{project-pipelines-CtNG_rvs.js → project-pipelines-C0MWUeCU.js} +2 -2
- package/server/project-repos-B6GycDh9.js +94 -0
- package/server/project-repos-DXKQsc_m.js +3 -0
- package/server/projects-vjjcmiN8.js +3 -0
- package/server/{prompts-EvhMeeHG.js → prompts-DxzFXuLl.js} +2 -2
- package/server/{providers-BDDPULlp.js → providers-qQAwGQDW.js} +7 -7
- package/server/{providers-DNSQqy2V.js → providers-u4Ga0jOr.js} +1 -1
- package/server/public/assets/{chunk-BO2N2NFS-sym_ufXe.js → chunk-BO2N2NFS-BamJdinX.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-CQJPBNBu.js → diagram-OG6HWLK6-DfOB8-w4.js} +1 -1
- package/server/public/assets/{dist-DukGS2YZ.js → dist-ByIuzMQW.js} +3 -3
- package/server/public/assets/{dist-Bio7THQU.js → dist-D7zYSEA6.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-D4lWwte3.js → ganttDiagram-6RSMTGT7-EdmRyXL3.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-CaLboCt5.js → highlighted-body-OFNGDK62-MerOfTX8.js} +1 -1
- package/server/public/assets/{index-Bwejq-5s.js → index-CWeMerGO.js} +147 -144
- package/server/public/assets/index-CenuJ3Cw.css +1 -0
- package/server/public/assets/{linear-qUWmMZ-c.js → linear-BBbArIcK.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-C4zYulEm.js → pieDiagram-4H26LBE5-BKIddiJN.js} +1 -1
- package/server/public/assets/{prod-C8VtLuWC.js → prod-B8vYiu52.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-qP04zyZC.js → quadrantDiagram-W4KKPZXB-D6RtoULk.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-eMPTX_cG.js → sankeyDiagram-5OEKKPKP-CLrCedZX.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-Dme1PIt6.js → xychartDiagram-2RQKCTM6-hznR8DYl.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-By_BteaL.js → pull-requests-7N8WKseP.js} +1 -1
- package/server/{pull-requests-8z2N1UOV.js → pull-requests-_lHueOHW.js} +13 -11
- package/server/{queries-ZABd5aXP.js → queries-CjNIf-Ub.js} +1200 -201
- package/server/{rally-i_goYmiA.js → rally-CyWT_lNO.js} +3 -3
- package/server/{rally-api-DqKqIMNR.js → rally-api-C8e_1JRi.js} +2 -2
- package/server/{rally-api-xHazRk0d.js → rally-api-ClOSd-Tt.js} +1 -1
- package/server/{rally-client-COYz1vYR.js → rally-client-lc-nokqr.js} +4 -4
- package/server/{rally-client-CGWEHaPd.js → rally-client-sgtVqzNU.js} +1 -1
- package/server/rally-zhhtXuDP.js +3 -0
- package/server/{reap-terminal-sessions-CaMkFOIH.js → reap-terminal-sessions-7KeHv1R1.js} +1 -1
- package/server/{reap-terminal-sessions-DG9eiMVz.js → reap-terminal-sessions-BtHPo6Xc.js} +1 -1
- package/server/rebuild-stack-CFvcBHsS.js +4 -0
- package/server/{rebuild-stack-JUm0jqYP.js → rebuild-stack-lwtsW0GO.js} +26 -35
- package/server/{reconstruct-cache-wU79aCee.js → reconstruct-cache-C3Ui7ojV.js} +6 -6
- package/server/record-CN0pj4_5.js +3 -0
- package/server/{record-update-D3N6WMFR.js → record-update-bLJxAXH4.js} +1 -1
- package/server/record-update-dE1Aw83j.js +310 -0
- package/server/{recovery-trip-DkzJSej9.js → recovery-trip-BvRWfUXM.js} +2 -2
- package/server/{release-engine-DMINVN8S.js → release-engine-Cx48W7z8.js} +5 -5
- package/server/{release-set-DeUSOEHy.js → release-set-CQfuN9-v.js} +3 -3
- package/server/{remote-b-c5bOce.js → remote-C_2hasl7.js} +3 -3
- package/server/{remote-Dr5kGYSZ.js → remote-ChgimyYa.js} +3 -3
- package/server/{remote-agents-Ct_WOyke.js → remote-agents-By1ige5O.js} +6 -6
- package/server/{remote-agents-D6O_zETW.js → remote-agents-CA3Ihlxj.js} +1 -1
- package/server/{remote-completion-Dca3hAaa.js → remote-completion-fVe9e_3u.js} +12 -12
- package/server/resume-BFv1PGpA.js +3 -0
- package/server/{review-agent-CThvgK2r.js → review-agent-CIGOQYBD.js} +29 -25
- package/server/{review-agent-CCum8sGe.js → review-agent-DNboMyW4.js} +1 -1
- package/server/{review-artifacts-CXywD0F2.js → review-artifacts-nRDPuMxd.js} +5 -5
- package/server/{review-context-OYfKUprb.js → review-context-2uj-YQ8J.js} +70 -26
- package/server/review-status-btEYlaxA.js +3 -0
- package/server/{review-status-enrichment-crNAtIpL.js → review-status-enrichment-Dci-ZwEt.js} +3 -3
- package/server/{review-status-DFRjDFef.js → review-status-kZj_KyCk.js} +77 -28
- package/server/{review-status-sync-DpAMD_WO.js → review-status-sync-BTOpxtTC.js} +10 -5
- package/server/{review-status-sync-D60PJWNL.js → review-status-sync-DSDK3OMy.js} +1 -1
- package/server/{review-verdict-feedback-CpUZl5aE.js → review-verdict-feedback-CCjVA7Uk.js} +6 -6
- package/server/{review-verdict-feedback-JImjut0z.js → review-verdict-feedback-CTd4QMBu.js} +1 -1
- package/server/{rollup-CZ02qgxk.js → rollup-BKQC7jp4.js} +1 -1
- package/server/{rollup-SyuF09e4.js → rollup-FGsKki9R.js} +8 -8
- package/server/{scanner-Br0Z5S6R.js → scanner-CnqEZeDy.js} +45 -14
- package/server/{sequence-io-fxU0DlwW.js → sequence-io-D909zgeH.js} +4 -4
- package/server/{sequencer-agent-B5YC5XVP.js → sequencer-agent-CzkcK6P5.js} +5 -5
- package/server/server.js +2961 -919
- package/server/{service-Bagb90KZ.js → service-CLeAoU6G.js} +55 -54
- package/server/{session-fork-BqQxd-V6.js → session-fork-CHI1XvL9.js} +2 -2
- package/server/{session-history-XdS0JKp3.js → session-history-BT3IvqhC.js} +4 -4
- package/server/settings-66A6uvIA.js +2 -0
- package/server/{settings-BNbocWOg.js → settings-BTMvpNFU.js} +3 -3
- package/server/{settings-uLc6DEYI.js → settings-C0zgxOGf.js} +2 -2
- package/server/{shadow-engineering-D4X_s3fA.js → shadow-engineering-BJfgm-hX.js} +2 -2
- package/server/{shadow-state-C_NkP-sa.js → shadow-state-7a-524T8.js} +2 -2
- package/server/{shadow-state-CbvsN3qG.js → shadow-state-DnDyjujH.js} +1 -1
- package/server/{shadow-utils-CYMRPeRT.js → shadow-utils-Db3oroFG.js} +2 -2
- package/server/{ship-log-__QtAFXG.js → ship-log-D9MlVzYU.js} +1 -1
- package/server/{smart-compaction-jdMkG1vo.js → smart-compaction-CV2ukKND.js} +1 -1
- package/server/{smart-compaction-CLZOWin1.js → smart-compaction-KCYScAU1.js} +7 -7
- package/server/{spawn-planning-session-D5OXo8pT.js → spawn-planning-session-DKpdFyOC.js} +35 -27
- package/server/{spawn-planning-session-8D6mE033.js → spawn-planning-session-qUC2VWu3.js} +1 -1
- package/server/{specialist-completion-CqmduO92.js → specialist-completion-Ky9wCDpb.js} +1 -1
- package/server/{specialist-context-CJ-QjFR-.js → specialist-context-Bn3dCGS2.js} +5 -5
- package/server/{specialist-handoff-logger-Dnjlwt7g.js → specialist-handoff-logger-CMEwYxa2.js} +2 -2
- package/server/{specialist-logs-CQnKzuZs.js → specialist-logs-C5p8G7tx.js} +3 -3
- package/server/{specialists-Bg9v4z3F.js → specialists-CC4r-c2s.js} +1015 -460
- package/server/{specialists-D0gGXMZx.js → specialists-CShuVGWT.js} +1 -1
- package/server/specialists-DM6bWjsi.js +3 -0
- package/server/{specialists-CwZHb5cb.js → specialists-jiuuyVkp.js} +66 -74
- package/server/specs-C8Wsn2XO.js +3 -0
- package/server/{src-BMMoA_ba.js → src-CXmtj0im.js} +6 -6
- package/server/{src-Bqdtd6po.js → src-CdmnTM2m.js} +5 -5
- package/server/{src-k039WVYY.js → src-DtcUOZCq.js} +112 -18
- package/server/stack-health-Bn3o8FBX.js +3 -0
- package/server/{stack-health-C-ifC7b0.js → stack-health-DxSdG9cW.js} +63 -9
- package/server/{stale-task-claims-L7pJkQFL.js → stale-task-claims-KJKxxiiQ.js} +4 -4
- package/server/{staleness-_Tr-GwdA.js → staleness-CT34nwr9.js} +1 -1
- package/server/{staleness-BID1BKdr.js → staleness-DPm7ClwA.js} +15 -3
- package/server/{state-home-CONQvZR0.js → state-home-Cn_Qu8IX.js} +96 -44
- package/server/{state-migrate-BeBW0KXA.js → state-migrate-BGg2ZaOt.js} +12 -3
- package/server/{stuck-remediation-CKnIryGT.js → stuck-remediation-DYuPRYYw.js} +307 -26
- package/server/{stuck-remediation-CsGD5Ksb.js → stuck-remediation-s9_2qfi6.js} +1 -1
- package/server/{substrate-bug-weights-service-CpIZILj9.js → substrate-bug-weights-service-B-FwCs5V.js} +3 -3
- package/server/{summary-fork-bX6ax6X7.js → summary-fork-D1RAk9rJ.js} +78 -12
- package/server/{summary-fork-agEMsPSo.js → summary-fork-DpcxN9tf.js} +2 -2
- package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-Csw5tqfJ.js} +2 -41
- package/server/supervisor/pty-supervisor.js +2 -1
- package/server/supervisor/pty-token-x-ea28Us.js +43 -0
- package/server/supervisor-FTJAIsAK.js +2 -0
- package/server/{supervisor-Ctt4eRYz.js → supervisor-wM4ooB5O.js} +3 -3
- package/server/{swarm-readiness-DdmJVX7y.js → swarm-readiness-DlP_UjHq.js} +4 -4
- package/server/{system-prerequisites-DSXBvffY.js → system-prerequisites-DUDj1YHf.js} +56 -29
- package/server/{teardown-workspace-DDCf5n-a.js → teardown-workspace-DeTTImn-.js} +15 -15
- package/server/{test-agent-queue-BJZ9Nfcc.js → test-agent-queue-MbxX5vqq.js} +7 -7
- package/server/{test-verdict-Cp5tljlJ.js → test-verdict-bWYBtqBg.js} +1 -1
- package/server/{test-verdict-D_-sXIz_.js → test-verdict-gscuksPv.js} +1 -1
- package/server/{tldr-daemon-B8_oT5gx.js → tldr-daemon-BYFkts95.js} +1 -1
- package/server/{tldr-daemon-BQFmmFp0.js → tldr-daemon-C-69c3OI.js} +2 -2
- package/server/tmux-B6z7h_vZ.js +3 -0
- package/server/{tmux-L5LgvGLp.js → tmux-R7N7y-Mh.js} +76 -44
- package/server/{token-BkQLy4yS.js → token-BK6t8BIT.js} +2 -2
- package/server/token-util-DuPuNriz.js +3 -0
- package/server/{token-util-DI8sGlmF.js → token-util-DxXu-vd1.js} +1 -1
- package/server/{tracker-config-DdT-nUAM.js → tracker-config-G6latr8C.js} +2 -2
- package/server/{tracker-utils-DV3h1FYG.js → tracker-utils-B4ylXZQK.js} +1 -1
- package/server/{tracker-utils-CawsPSS2.js → tracker-utils-DHv5pSDT.js} +2 -2
- package/server/{traefik-connect-C6mJckNs.js → traefik-connect-Df2uXPsQ.js} +1 -1
- package/server/{tunnel-IdK1iTHx.js → tunnel-CDVKJpRv.js} +3 -3
- package/server/{tunnel-BIFl98rc.js → tunnel-DGdUkGoZ.js} +1 -1
- package/server/{types-7-GnJn0t.js → types-5M0lupud.js} +1 -1
- package/server/{uat-train-0Ujk8GCv.js → uat-train-B05BWkp-.js} +1 -1
- package/server/{uat-train-j0cPeMSj.js → uat-train-DDSrSoV1.js} +28 -28
- package/server/validate-IfDGkaVR.js +177 -0
- package/server/{validation-DcAgXTQp.js → validation-CC9OPqJZ.js} +1 -1
- package/server/{validation-CabEISJT.js → validation-Dw1pzDzr.js} +259 -9
- package/server/{verification-artifact-Ck1tefmz.js → verification-artifact-B3itKTxu.js} +1 -1
- package/server/{verification-artifact-BuTA1QbL.js → verification-artifact-TVFSz_q1.js} +1 -1
- package/server/{verification-runner-DlJezzef.js → verification-runner-BW4HOKAz.js} +1 -1
- package/server/{verification-runner-FiuAZ-H2.js → verification-runner-CkgX6EtI.js} +174 -124
- package/server/{vtt-parser-BnRsYzcz.js → vtt-parser-DYPbKcIJ.js} +1 -1
- package/server/{work-agent-prompt-DLthEPAq.js → work-agent-prompt-Du8Vh2aJ.js} +13 -13
- package/server/workflows-BQu4RFQ-.js +2 -0
- package/server/{workflows-BZNNYkGC.js → workflows-mbQzh6mQ.js} +39 -77
- package/server/{workspace-3IC-UkAi.js → workspace--8tnhDI0.js} +1 -1
- package/server/{workspace-D9ppycdg.js → workspace-BPUws1-_.js} +3 -3
- package/server/{workspace-config-Bigl_-Lk.js → workspace-config-CIVWZOQr.js} +1 -1
- package/server/{workspace-manager-ClkCIWTe.js → workspace-manager-CBhNdzE4.js} +76 -18
- package/server/workspace-manager-CWT55qeI.js +3 -0
- package/server/{workspace-metadata-BE0efUv_.js → workspace-metadata-BzHnwwX4.js} +1 -1
- package/server/{workspace-metadata-tiSRIWJP.js → workspace-metadata-_WygnyoX.js} +2 -2
- package/server/{workspaces-CFPcL0vl.js → workspaces-Do_9J0LQ.js} +309 -124
- package/sync-sources/agents/pan-inspect-agent.md +1 -1
- package/sync-sources/agents/pan-merge-agent.md +1 -1
- package/sync-sources/agents/pan-planning-agent.md +4 -4
- package/sync-sources/agents/pan-work-agent.md +1 -1
- package/sync-sources/dev-skills/pan-commit/SKILL.md +1 -1
- package/sync-sources/dev-skills/test-specialist-workflow/SKILL.md +1 -1
- package/sync-sources/hooks/record-cost-event.js +369 -75
- package/sync-sources/hooks/session-start-hook +7 -0
- package/sync-sources/hooks/work-agent-stop-hook +1 -1
- package/sync-sources/rules/per-bead-durability.md +1 -1
- package/sync-sources/rules/prd-authoring.md +1 -1
- package/sync-sources/skills/feature-work/SKILL.md +1 -1
- package/sync-sources/skills/okf/README.md +11 -3
- package/sync-sources/skills/okf/SKILL.md +12 -1
- package/sync-sources/skills/okf/docs/USAGE.md +15 -0
- package/sync-sources/skills/okf/references/overdeck.md +28 -0
- package/sync-sources/skills/pan/SKILL.md +2 -2
- package/sync-sources/skills/pan-admin-config/SKILL.md +1 -0
- package/sync-sources/skills/pan-approve/SKILL.md +1 -1
- package/sync-sources/skills/pan-close/SKILL.md +1 -1
- package/sync-sources/skills/pan-doctor/SKILL.md +1 -1
- package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
- package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
- package/sync-sources/skills/pan-new-project/SKILL.md +9 -11
- package/sync-sources/skills/pan-orders/SKILL.md +33 -0
- package/sync-sources/skills/pan-oversee/SKILL.md +5 -5
- package/sync-sources/skills/pan-plan/SKILL.md +6 -6
- package/sync-sources/skills/pan-quickstart/SKILL.md +1 -1
- package/sync-sources/skills/pan-recap/SKILL.md +2 -2
- package/sync-sources/skills/pan-review/SKILL.md +1 -1
- package/sync-sources/skills/pan-start/SKILL.md +7 -3
- package/sync-sources/skills/pan-swarm/SKILL.md +1 -1
- package/sync-sources/skills/pan-sync/SKILL.md +1 -1
- package/sync-sources/skills/pan-task/SKILL.md +2 -2
- package/sync-sources/skills/pan-wipe/SKILL.md +2 -2
- package/sync-sources/skills/pipeline-list/SKILL.md +1 -1
- package/sync-sources/skills/pipeline-status/SKILL.md +2 -2
- package/sync-sources/skills/plan/SKILL.md +11 -11
- package/sync-sources/skills/write-vbrief/SKILL.md +7 -282
- package/sync-sources/skills/write-xbrief/SKILL.md +295 -0
- package/sync-sources/templates/claude-md/sections/warnings.md +1 -1
- package/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
- package/server/agent-state-Co5Sy2Fw.js +0 -3
- package/server/agents-DyHKlq1I.js +0 -3
- package/server/cli-BRORS9qY.js +0 -3
- package/server/codex-DNyiQDKW.js +0 -3
- package/server/context-layers-15gDOk20.js +0 -165
- package/server/context-layers-DlQKkHH2.js +0 -4
- package/server/deacon-swarm-CV54eNmU.js +0 -2
- package/server/dist-j64RzSrQ.js +0 -3
- package/server/flywheel-6WHU4O7A.js +0 -207
- package/server/flywheel-COR0mbRI.js +0 -522
- package/server/flywheel-Ctr5uuvo.js +0 -2
- package/server/forge-B0_opi-V.js +0 -2
- package/server/git-utils-CsKGnzFA.js +0 -3
- package/server/hume-BmhvfVbV.js +0 -3
- package/server/inspect-agent-Dq0z1k3H.js +0 -2
- package/server/layers-Cp1To4L8.js +0 -93
- package/server/lifecycle-io-DmY2qwCn.js +0 -3
- package/server/merge-blockers-BYjeXrVN.js +0 -41
- package/server/merge-ops-DwWCkSgo.js +0 -2
- package/server/merge-set-DiISXcC-.js +0 -139
- package/server/projects-BKkwpH6q.js +0 -3
- package/server/public/assets/index-Bdc4V9ba.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-B5v_r7cI.js +0 -1
- package/server/rally-OSJXdiHK.js +0 -3
- package/server/rebuild-stack-CKjJAI8L.js +0 -3
- package/server/record-rwK-nKv_.js +0 -3
- package/server/record-update-Crz74r-6.js +0 -168
- package/server/resume-wZZsWtzz.js +0 -3
- package/server/review-status-Bnh-rdkY.js +0 -3
- package/server/settings-BlUsVaUc.js +0 -2
- package/server/specialists-Dqe6_HE5.js +0 -3
- package/server/specs-BhOKBzqk.js +0 -3
- package/server/stack-health-Bd06frFn.js +0 -3
- package/server/supervisor-COVHrBTg.js +0 -2
- package/server/tmux-BAvtac_u.js +0 -3
- package/server/token-util-BArZLN6w.js +0 -3
- package/server/workflows-C4mR0Reb.js +0 -2
- package/server/workspace-manager-B1WOfKvB.js +0 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
3
|
-
import { a as TrackerAuthError, n as init_rally_api, o as init_interface, r as IssueNotFoundError, t as RallyRestApi } from "./rally-api-
|
|
2
|
+
import { fr as TrackerError, mr as init_errors } from "./config-yaml-DySPNmKN.js";
|
|
3
|
+
import { a as TrackerAuthError, n as init_rally_api, o as init_interface, r as IssueNotFoundError, t as RallyRestApi } from "./rally-api-C8e_1JRi.js";
|
|
4
4
|
import { Effect } from "effect";
|
|
5
5
|
//#region ../../lib/tracker/rally.ts
|
|
6
6
|
/**
|
|
@@ -504,4 +504,4 @@ var init_rally = __esmMin((() => {
|
|
|
504
504
|
//#endregion
|
|
505
505
|
export { init_rally as n, RallyTracker as t };
|
|
506
506
|
|
|
507
|
-
//# sourceMappingURL=rally-
|
|
507
|
+
//# sourceMappingURL=rally-CyWT_lNO.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
2
|
+
import { fr as TrackerError, mr as init_errors } from "./config-yaml-DySPNmKN.js";
|
|
3
3
|
import { Data, Effect } from "effect";
|
|
4
4
|
//#region ../../lib/tracker/interface.ts
|
|
5
5
|
/**
|
|
@@ -162,4 +162,4 @@ var init_rally_api = __esmMin((() => {
|
|
|
162
162
|
//#endregion
|
|
163
163
|
export { TrackerAuthError as a, NotImplementedError as i, init_rally_api as n, init_interface as o, IssueNotFoundError as r, RallyRestApi as t };
|
|
164
164
|
|
|
165
|
-
//# sourceMappingURL=rally-api-
|
|
165
|
+
//# sourceMappingURL=rally-api-C8e_1JRi.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { a as init_tracker_config, r as getRallyConfig } from "./tracker-config-
|
|
2
|
+
import { a as init_tracker_config, r as getRallyConfig } from "./tracker-config-G6latr8C.js";
|
|
3
3
|
import { a as RateLimited, c as TrackerNotConfigured, d as init_typed_errors, r as IssueNotFound, s as TrackerApiError } from "./typed-errors-2BTMxkZq.js";
|
|
4
4
|
import { Context, Effect, Layer } from "effect";
|
|
5
5
|
//#region services/rally-client.ts
|
|
@@ -46,7 +46,7 @@ function makeRallyClientImpl(config) {
|
|
|
46
46
|
let tracker = null;
|
|
47
47
|
async function getTracker() {
|
|
48
48
|
if (!tracker) {
|
|
49
|
-
const { RallyTracker } = await import("./rally-
|
|
49
|
+
const { RallyTracker } = await import("./rally-zhhtXuDP.js");
|
|
50
50
|
tracker = new RallyTracker({
|
|
51
51
|
apiKey: config.apiKey,
|
|
52
52
|
server: config.server,
|
|
@@ -106,7 +106,7 @@ var init_rally_client = __esmMin((() => {
|
|
|
106
106
|
RallyClientLive = Layer.effect(RallyClient, Effect.gen(function* () {
|
|
107
107
|
const config = getRallyConfig();
|
|
108
108
|
if (!config) return yield* Effect.fail(new TrackerNotConfigured({ tracker: "rally" }));
|
|
109
|
-
const { RallyTracker } = yield* Effect.promise(() => import("./rally-
|
|
109
|
+
const { RallyTracker } = yield* Effect.promise(() => import("./rally-zhhtXuDP.js"));
|
|
110
110
|
const tracker = new RallyTracker({
|
|
111
111
|
apiKey: config.apiKey,
|
|
112
112
|
server: config.server,
|
|
@@ -158,4 +158,4 @@ var init_rally_client = __esmMin((() => {
|
|
|
158
158
|
//#endregion
|
|
159
159
|
export { init_rally_client as i, RallyClientLive as n, RallyClientOptionalLive as r, RallyClient as t };
|
|
160
160
|
|
|
161
|
-
//# sourceMappingURL=rally-client-
|
|
161
|
+
//# sourceMappingURL=rally-client-lc-nokqr.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { i as init_rally_client, n as RallyClientLive, r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-
|
|
1
|
+
import { i as init_rally_client, n as RallyClientLive, r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-lc-nokqr.js";
|
|
2
2
|
init_rally_client();
|
|
3
3
|
export { RallyClient, RallyClientLive, RallyClientOptionalLive };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { r as isRoleTerminal } from "./review-status-source-CxuEjLGg.js";
|
|
2
|
-
import { i as selectAwaitingTestWorkSessions, o as selectMergedWorkSessions, s as selectNonMergedTerminalAdvancingSessions, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-
|
|
2
|
+
import { i as selectAwaitingTestWorkSessions, o as selectMergedWorkSessions, s as selectNonMergedTerminalAdvancingSessions, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-BtHPo6Xc.js";
|
|
3
3
|
init_reap_terminal_sessions();
|
|
4
4
|
export { isRoleTerminal, selectAwaitingTestWorkSessions, selectMergedWorkSessions, selectNonMergedTerminalAdvancingSessions };
|
|
@@ -128,4 +128,4 @@ var init_reap_terminal_sessions = __esmMin((() => {
|
|
|
128
128
|
//#endregion
|
|
129
129
|
export { selectMergedAdvancingSessions as a, sessionsToReapForRole as c, selectAwaitingTestWorkSessions as i, isAwaitingTestReapable as n, selectMergedWorkSessions as o, isWorkReapable as r, selectNonMergedTerminalAdvancingSessions as s, init_reap_terminal_sessions as t };
|
|
130
130
|
|
|
131
|
-
//# sourceMappingURL=reap-terminal-sessions-
|
|
131
|
+
//# sourceMappingURL=reap-terminal-sessions-BtHPo6Xc.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-
|
|
5
|
-
import { n as reconcileTraefikNetworks, t as init_traefik_connect } from "./traefik-connect-
|
|
6
|
-
import { n as ensureDevcontainerSync, r as init_ensure_devcontainer } from "./ensure-devcontainer-
|
|
2
|
+
import { Tn as init_projects, yn as getProjectSync, zn as resolveProjectFromIssueSync } from "./config-yaml-DySPNmKN.js";
|
|
3
|
+
import { d as init_docker_stats, f as recordDockerContainerLifecycleSnapshot, n as collectDockerContainerLifecycleSnapshot, o as hasIssueToken, r as composeProjectNameForWorkspace, s as init_stack_health } from "./stack-health-DxSdG9cW.js";
|
|
4
|
+
import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-CDJk4pIp.js";
|
|
5
|
+
import { n as reconcileTraefikNetworks, t as init_traefik_connect } from "./traefik-connect-Df2uXPsQ.js";
|
|
6
|
+
import { n as ensureDevcontainerSync, r as init_ensure_devcontainer } from "./ensure-devcontainer-DNi-ono3.js";
|
|
7
7
|
import { dirname, join } from "node:path";
|
|
8
8
|
import { Effect } from "effect";
|
|
9
|
-
import { existsSync,
|
|
9
|
+
import { existsSync, rmSync } from "node:fs";
|
|
10
10
|
import { execFile } from "node:child_process";
|
|
11
11
|
import { promisify } from "node:util";
|
|
12
12
|
//#region ../../lib/workspace/rebuild-stack.ts
|
|
@@ -27,32 +27,6 @@ import { promisify } from "node:util";
|
|
|
27
27
|
* the result, not the error channel, to preserve the existing API contract
|
|
28
28
|
* where callers branch on `success`).
|
|
29
29
|
*/
|
|
30
|
-
function declaredComposeProjectName(content, featureFolder) {
|
|
31
|
-
const templatedMatch = content.match(/COMPOSE_PROJECT_NAME="([^$"]*)\$\{FEATURE_FOLDER\}"/);
|
|
32
|
-
if (templatedMatch) return `${templatedMatch[1]}${featureFolder}`;
|
|
33
|
-
return content.match(/COMPOSE_PROJECT_NAME="([^"]+)"/)?.[1] ?? null;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Derive the canonical `COMPOSE_PROJECT_NAME` for a workspace, refusing the
|
|
37
|
-
* rebuild if the workspace declares a name that does not match — a mismatch
|
|
38
|
-
* means `docker compose down` would target the wrong stack.
|
|
39
|
-
*/
|
|
40
|
-
function composeProjectNameForWorkspace(workspacePath, issueId) {
|
|
41
|
-
const featureFolder = `feature-${issueId.toLowerCase()}`;
|
|
42
|
-
const fallback = `overdeck-${featureFolder}`;
|
|
43
|
-
for (const devPath of [join(workspacePath, ".devcontainer", "dev"), join(workspacePath, "dev")]) {
|
|
44
|
-
if (!existsSync(devPath)) continue;
|
|
45
|
-
try {
|
|
46
|
-
const declared = declaredComposeProjectName(readFileSync(devPath, "utf-8"), featureFolder);
|
|
47
|
-
if (!declared) continue;
|
|
48
|
-
if (!declared.endsWith(featureFolder)) throw new Error(`Refusing workspace rebuild: ${devPath} declares COMPOSE_PROJECT_NAME=${declared}, expected a name ending in ${featureFolder}`);
|
|
49
|
-
return declared;
|
|
50
|
-
} catch (err) {
|
|
51
|
-
if (err?.message?.startsWith("Refusing workspace rebuild:")) throw err;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return fallback;
|
|
55
|
-
}
|
|
56
30
|
function findDevcontainerComposeFile(workspacePath) {
|
|
57
31
|
const devcontainerDir = join(workspacePath, ".devcontainer");
|
|
58
32
|
for (const file of COMPOSE_FILES) {
|
|
@@ -61,7 +35,7 @@ function findDevcontainerComposeFile(workspacePath) {
|
|
|
61
35
|
}
|
|
62
36
|
return null;
|
|
63
37
|
}
|
|
64
|
-
var execFileAsync, COMPOSE_FILES, dockerCompose, EXTERNAL_WORKSPACE_NETWORK, ensureExternalNetwork, rebuildWorkspaceStack;
|
|
38
|
+
var execFileAsync, COMPOSE_FILES, dockerCompose, EXTERNAL_WORKSPACE_NETWORK, ensureExternalNetwork, removeStaleIssueContainers, rebuildWorkspaceStack;
|
|
65
39
|
var init_rebuild_stack = __esmMin((() => {
|
|
66
40
|
init_docker_stats();
|
|
67
41
|
init_projects();
|
|
@@ -92,6 +66,21 @@ var init_rebuild_stack = __esmMin((() => {
|
|
|
92
66
|
"create",
|
|
93
67
|
EXTERNAL_WORKSPACE_NETWORK
|
|
94
68
|
], { timeout: 3e4 }).then(() => void 0).catch(() => void 0));
|
|
69
|
+
removeStaleIssueContainers = (issueId, composeProjectName) => Effect.promise(async () => {
|
|
70
|
+
const containers = await Effect.runPromise(collectDockerContainerLifecycleSnapshot());
|
|
71
|
+
let removed = 0;
|
|
72
|
+
for (const container of containers) {
|
|
73
|
+
if (container.composeProject === composeProjectName) continue;
|
|
74
|
+
if (!hasIssueToken(container.name, issueId)) continue;
|
|
75
|
+
if (container.state?.toLowerCase() === "running" || /^up\b/i.test(container.status)) continue;
|
|
76
|
+
if (await execFileAsync("docker", [
|
|
77
|
+
"rm",
|
|
78
|
+
"-f",
|
|
79
|
+
container.id
|
|
80
|
+
], { timeout: 3e4 }).then(() => true).catch(() => false)) removed += 1;
|
|
81
|
+
}
|
|
82
|
+
return removed;
|
|
83
|
+
});
|
|
95
84
|
rebuildWorkspaceStack = (issueId, options = {}) => {
|
|
96
85
|
const progress = options.onProgress ?? (() => {});
|
|
97
86
|
const normalizedIssueId = issueId.toLowerCase();
|
|
@@ -163,6 +152,8 @@ var init_rebuild_stack = __esmMin((() => {
|
|
|
163
152
|
"--build"
|
|
164
153
|
], dirname(composeFile));
|
|
165
154
|
recordDockerContainerLifecycleSnapshot(yield* collectDockerContainerLifecycleSnapshot());
|
|
155
|
+
progress("Removing stale containers from previous stack projects...");
|
|
156
|
+
yield* removeStaleIssueContainers(normalizedIssueId, composeProjectName);
|
|
166
157
|
progress("Connecting traefik to workspace network...");
|
|
167
158
|
yield* Effect.promise(() => reconcileTraefikNetworks());
|
|
168
159
|
return {
|
|
@@ -182,6 +173,6 @@ var init_rebuild_stack = __esmMin((() => {
|
|
|
182
173
|
};
|
|
183
174
|
}));
|
|
184
175
|
//#endregion
|
|
185
|
-
export {
|
|
176
|
+
export { rebuildWorkspaceStack as n, removeStaleIssueContainers as r, init_rebuild_stack as t };
|
|
186
177
|
|
|
187
|
-
//# sourceMappingURL=rebuild-stack-
|
|
178
|
+
//# sourceMappingURL=rebuild-stack-lwtsW0GO.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
3
|
-
import { c as listAllAgentsSync, o as init_agents, r as backfillAgentsSync } from "./agents-
|
|
4
|
-
import {
|
|
5
|
-
import { a as gatherProjectLensSignalsForProjects, i as gatherProjectLensSignals, n as init_pipeline_membership, o as init_pipeline_membership_gather, r as resolvePipelineMembership } from "./pipeline-membership-
|
|
2
|
+
import { Ft as resolveProjectForIssue, Ot as init_record, Tn as init_projects, jt as readIssueRecord, kn as listProjectsSync } from "./config-yaml-DySPNmKN.js";
|
|
3
|
+
import { c as listAllAgentsSync, o as init_agents, r as backfillAgentsSync } from "./agents-EbI0zCJl.js";
|
|
4
|
+
import { b as init_agents$1, i as listRunningAgents } from "./queries-CjNIf-Ub.js";
|
|
5
|
+
import { a as gatherProjectLensSignalsForProjects, i as gatherProjectLensSignals, n as init_pipeline_membership, o as init_pipeline_membership_gather, r as resolvePipelineMembership } from "./pipeline-membership-mY3GprlK.js";
|
|
6
6
|
import { Effect } from "effect";
|
|
7
7
|
//#region ../../lib/reconstruct/enumerate-in-flight.ts
|
|
8
8
|
async function enumerateInFlightIssuesFromSources(projects, gather = gatherProjectLensSignals) {
|
|
@@ -138,7 +138,7 @@ async function loadInFlightIssueIds(projects) {
|
|
|
138
138
|
return enumerateInFlightIssuesFromSources(projects);
|
|
139
139
|
}
|
|
140
140
|
async function fetchPrState(issueId) {
|
|
141
|
-
const { fetchIssuePullRequest } = await import("./pull-requests-
|
|
141
|
+
const { fetchIssuePullRequest } = await import("./pull-requests-7N8WKseP.js");
|
|
142
142
|
const result = await fetchIssuePullRequest(issueId);
|
|
143
143
|
if (!result.pr) return {
|
|
144
144
|
hasPr: false,
|
|
@@ -269,4 +269,4 @@ __esmMin((() => {
|
|
|
269
269
|
}))();
|
|
270
270
|
export { reconstructCache, reconstructCacheAuto };
|
|
271
271
|
|
|
272
|
-
//# sourceMappingURL=reconstruct-cache-
|
|
272
|
+
//# sourceMappingURL=reconstruct-cache-C3Ui7ojV.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Dt as getProjectConfigFromWorkspacePath, Ft as resolveProjectForIssue, Nt as readIssueRecordSync, Ot as init_record, Pt as readRecordContinueViewSync, vt as appendSessionEntry, zt as writeRecordTieredExecutionOverride } from "./config-yaml-DySPNmKN.js";
|
|
2
|
+
init_record();
|
|
3
|
+
export { appendSessionEntry, getProjectConfigFromWorkspacePath, readIssueRecordSync, readRecordContinueViewSync, resolveProjectForIssue, writeRecordTieredExecutionOverride };
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
+
import { At as queueIssueRecordCommit, Br as getOverdeckHome, Dt as getProjectConfigFromWorkspacePath, Ft as resolveProjectForIssue, Ht as flushAutoCommits, Nt as readIssueRecordSync, Ot as init_record, Rt as writeIssueRecordSync, St as ensureIssueRecordSync, Tn as init_projects, Ut as init_auto_commit, Vr as init_paths, kn as listProjectsSync, nn as init_state_read_home, rn as resolveStateReadHomeSync, tn as STATE_BRANCH, wt as getIssueRecordPath } from "./config-yaml-DySPNmKN.js";
|
|
3
|
+
import { dirname, join, relative } from "node:path";
|
|
4
|
+
import { Effect } from "effect";
|
|
5
|
+
import { hostname } from "node:os";
|
|
6
|
+
import { mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
|
|
7
|
+
import { execFile } from "node:child_process";
|
|
8
|
+
import { promisify } from "node:util";
|
|
9
|
+
//#region ../../lib/pan-dir/fs-lock.ts
|
|
10
|
+
/** Cross-process per-issue record locking (PAN-2648 CD-2). */
|
|
11
|
+
function safeSegment(value) {
|
|
12
|
+
return value.trim().toLowerCase().replace(/[^a-z0-9._-]+/g, "-");
|
|
13
|
+
}
|
|
14
|
+
function recordLockPath(project, issueId) {
|
|
15
|
+
const configuredKey = listProjectsSync().find(({ config }) => config.path === project.path)?.key;
|
|
16
|
+
const projectKey = safeSegment(configuredKey ?? project.name ?? project.path) || "unknown-project";
|
|
17
|
+
return join(getOverdeckHome(), "locks", "records", projectKey, `${issueId.toUpperCase()}.lock`);
|
|
18
|
+
}
|
|
19
|
+
function isPidDead(pid) {
|
|
20
|
+
if (!pid || pid <= 0 || pid === process.pid) return false;
|
|
21
|
+
try {
|
|
22
|
+
process.kill(pid, 0);
|
|
23
|
+
return false;
|
|
24
|
+
} catch (error) {
|
|
25
|
+
return error.code === "ESRCH";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function sweepRecordTmpFiles(recordPath) {
|
|
29
|
+
try {
|
|
30
|
+
const dir = dirname(recordPath);
|
|
31
|
+
const base = recordPath.slice(dir.length + 1);
|
|
32
|
+
const entries = await readdir(dir);
|
|
33
|
+
await Promise.all(entries.filter((entry) => entry.startsWith(`${base}.`) && entry.endsWith(".tmp")).map((entry) => rm(join(dir, entry), { force: true })));
|
|
34
|
+
} catch {}
|
|
35
|
+
}
|
|
36
|
+
async function readOwner(lockPath) {
|
|
37
|
+
try {
|
|
38
|
+
const owner = JSON.parse(await readFile(join(lockPath, "owner.json"), "utf8"));
|
|
39
|
+
return {
|
|
40
|
+
description: `${owner.writerId ?? "unknown writer"} pid=${owner.pid ?? "unknown"} acquiredAt=${owner.acquiredAt ?? "unknown"}`,
|
|
41
|
+
pid: owner.pid
|
|
42
|
+
};
|
|
43
|
+
} catch {
|
|
44
|
+
return { description: "unknown writer" };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async function acquireRecordLock(lockPath, options) {
|
|
48
|
+
await mkdir(dirname(lockPath), {
|
|
49
|
+
recursive: true,
|
|
50
|
+
mode: 448
|
|
51
|
+
});
|
|
52
|
+
const delays = options.retryDelaysMs ?? RECORD_LOCK_RETRY_DELAYS_MS;
|
|
53
|
+
let lastOwner = "unknown writer";
|
|
54
|
+
for (let attempt = 0; attempt <= delays.length; attempt += 1) {
|
|
55
|
+
try {
|
|
56
|
+
await mkdir(lockPath, { mode: 448 });
|
|
57
|
+
const owner = {
|
|
58
|
+
writerId: options.writerId,
|
|
59
|
+
pid: process.pid,
|
|
60
|
+
acquiredAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
61
|
+
};
|
|
62
|
+
try {
|
|
63
|
+
await writeFile(join(lockPath, "owner.json"), JSON.stringify(owner, null, 2), "utf8");
|
|
64
|
+
} catch (error) {
|
|
65
|
+
try {
|
|
66
|
+
await rm(lockPath, {
|
|
67
|
+
recursive: true,
|
|
68
|
+
force: true
|
|
69
|
+
});
|
|
70
|
+
} catch {}
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
await sweepRecordTmpFiles(options.recordPath);
|
|
74
|
+
return owner;
|
|
75
|
+
} catch (error) {
|
|
76
|
+
if (error.code !== "EEXIST") throw error;
|
|
77
|
+
const owner = await readOwner(lockPath);
|
|
78
|
+
lastOwner = owner.description;
|
|
79
|
+
if (isPidDead(owner.pid)) {
|
|
80
|
+
await rm(lockPath, {
|
|
81
|
+
recursive: true,
|
|
82
|
+
force: true
|
|
83
|
+
});
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const delay = delays[attempt];
|
|
88
|
+
if (delay === void 0) break;
|
|
89
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
90
|
+
}
|
|
91
|
+
throw new RecordLockError(lockPath, lastOwner);
|
|
92
|
+
}
|
|
93
|
+
async function releaseRecordLock(lockPath) {
|
|
94
|
+
await rm(lockPath, {
|
|
95
|
+
recursive: true,
|
|
96
|
+
force: true
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
async function withRecordFsLock(project, issueId, options, operation) {
|
|
100
|
+
const lockPath = recordLockPath(project, issueId);
|
|
101
|
+
await acquireRecordLock(lockPath, options);
|
|
102
|
+
try {
|
|
103
|
+
return await operation();
|
|
104
|
+
} finally {
|
|
105
|
+
await releaseRecordLock(lockPath);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
var RECORD_LOCK_RETRY_DELAYS_MS, RecordLockError;
|
|
109
|
+
var init_fs_lock = __esmMin((() => {
|
|
110
|
+
init_paths();
|
|
111
|
+
init_projects();
|
|
112
|
+
RECORD_LOCK_RETRY_DELAYS_MS = [
|
|
113
|
+
5,
|
|
114
|
+
10,
|
|
115
|
+
20,
|
|
116
|
+
40,
|
|
117
|
+
80,
|
|
118
|
+
160,
|
|
119
|
+
320,
|
|
120
|
+
360
|
|
121
|
+
];
|
|
122
|
+
RecordLockError = class extends Error {
|
|
123
|
+
constructor(lockPath, owner) {
|
|
124
|
+
super(`The per-issue record lock at ${lockPath} is held by ${owner}. Retry the command after that writer finishes.`);
|
|
125
|
+
this.lockPath = lockPath;
|
|
126
|
+
this.owner = owner;
|
|
127
|
+
this.name = "RecordLockError";
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}));
|
|
131
|
+
//#endregion
|
|
132
|
+
//#region ../../lib/pan-dir/record-update.ts
|
|
133
|
+
/** The single locked read-modify-write door for per-issue records. */
|
|
134
|
+
function updateIssueRecordForWorkspace(workspacePath, issueId, mutator, options = {}) {
|
|
135
|
+
return updateIssueRecord(resolveProjectForIssue(issueId) ?? getProjectConfigFromWorkspacePath(workspacePath), issueId, mutator, options);
|
|
136
|
+
}
|
|
137
|
+
async function git(gitRoot, args) {
|
|
138
|
+
return (await execFileAsync("git", args, {
|
|
139
|
+
cwd: gitRoot,
|
|
140
|
+
encoding: "utf8",
|
|
141
|
+
timeout: 3e4,
|
|
142
|
+
maxBuffer: 16 * 1024 * 1024,
|
|
143
|
+
env: {
|
|
144
|
+
...process.env,
|
|
145
|
+
HUSKY: "0"
|
|
146
|
+
}
|
|
147
|
+
})).stdout.trim();
|
|
148
|
+
}
|
|
149
|
+
function gitFailureMessage(error) {
|
|
150
|
+
if (error && typeof error === "object") {
|
|
151
|
+
const failure = error;
|
|
152
|
+
return failure.stderr?.trim() || failure.stdout?.trim() || failure.message;
|
|
153
|
+
}
|
|
154
|
+
return String(error);
|
|
155
|
+
}
|
|
156
|
+
function isRemoteRefRaceError(message) {
|
|
157
|
+
return /non-fast-forward|fetch first|stale info|cannot lock ref.*expected|failed to update ref/i.test(message);
|
|
158
|
+
}
|
|
159
|
+
async function abortRebase(gitRoot) {
|
|
160
|
+
try {
|
|
161
|
+
await git(gitRoot, ["rebase", "--abort"]);
|
|
162
|
+
} catch {}
|
|
163
|
+
}
|
|
164
|
+
async function replayConflictedRecord(project, issueId, mutator, gitRoot, recordPath) {
|
|
165
|
+
const relativeRecordPath = relative(gitRoot, recordPath).replace(/\\/g, "/");
|
|
166
|
+
const conflicts = (await git(gitRoot, [
|
|
167
|
+
"diff",
|
|
168
|
+
"--name-only",
|
|
169
|
+
"--diff-filter=U"
|
|
170
|
+
])).split("\n").map((path) => path.trim()).filter(Boolean);
|
|
171
|
+
if (conflicts.length !== 1 || conflicts[0] !== relativeRecordPath) throw new Error(`state rebase conflicted outside ${relativeRecordPath}: ${conflicts.join(", ") || "unknown conflict"}`);
|
|
172
|
+
await git(gitRoot, [
|
|
173
|
+
"restore",
|
|
174
|
+
`--source=origin/${STATE_BRANCH}`,
|
|
175
|
+
"--worktree",
|
|
176
|
+
"--",
|
|
177
|
+
relativeRecordPath
|
|
178
|
+
]);
|
|
179
|
+
const remoteRecord = readIssueRecordSync(project, issueId);
|
|
180
|
+
if (!remoteRecord) throw new Error(`Remote ${issueId} state record is unreadable`);
|
|
181
|
+
writeIssueRecordSync(project, issueId, await mutator(remoteRecord) ?? remoteRecord);
|
|
182
|
+
await git(gitRoot, [
|
|
183
|
+
"add",
|
|
184
|
+
"--",
|
|
185
|
+
relativeRecordPath
|
|
186
|
+
]);
|
|
187
|
+
await git(gitRoot, [
|
|
188
|
+
"-c",
|
|
189
|
+
"core.editor=true",
|
|
190
|
+
"rebase",
|
|
191
|
+
"--continue"
|
|
192
|
+
]);
|
|
193
|
+
}
|
|
194
|
+
async function restoreRetryableRecord(project, issueId, original, recordPath) {
|
|
195
|
+
const stateHome = resolveStateReadHomeSync(project);
|
|
196
|
+
const gitRoot = stateHome.root;
|
|
197
|
+
const relativeRecordPath = relative(gitRoot, recordPath).replace(/\\/g, "/");
|
|
198
|
+
await abortRebase(gitRoot);
|
|
199
|
+
let restored = structuredClone(original);
|
|
200
|
+
const branch = stateHome.migrated ? STATE_BRANCH : await git(gitRoot, ["branch", "--show-current"]);
|
|
201
|
+
try {
|
|
202
|
+
await git(gitRoot, [
|
|
203
|
+
"fetch",
|
|
204
|
+
"origin",
|
|
205
|
+
branch
|
|
206
|
+
]);
|
|
207
|
+
restored = JSON.parse(await git(gitRoot, ["show", `origin/${branch}:${relativeRecordPath}`]));
|
|
208
|
+
} catch {}
|
|
209
|
+
writeIssueRecordSync(project, issueId, restored);
|
|
210
|
+
await git(gitRoot, [
|
|
211
|
+
"add",
|
|
212
|
+
"--",
|
|
213
|
+
relativeRecordPath
|
|
214
|
+
]);
|
|
215
|
+
try {
|
|
216
|
+
await git(gitRoot, [
|
|
217
|
+
"diff",
|
|
218
|
+
"--cached",
|
|
219
|
+
"--quiet",
|
|
220
|
+
"--",
|
|
221
|
+
relativeRecordPath
|
|
222
|
+
]);
|
|
223
|
+
return;
|
|
224
|
+
} catch {}
|
|
225
|
+
await git(gitRoot, [
|
|
226
|
+
"commit",
|
|
227
|
+
"-m",
|
|
228
|
+
`chore(records): restore ${issueId} after failed state push`,
|
|
229
|
+
"--",
|
|
230
|
+
relativeRecordPath
|
|
231
|
+
]);
|
|
232
|
+
}
|
|
233
|
+
async function reconcileStatePush(project, issueId, mutator, recordPath) {
|
|
234
|
+
const gitRoot = resolveStateReadHomeSync(project).root;
|
|
235
|
+
for (let attempt = 0; attempt < MAX_STATE_PUSH_RECONCILIATIONS; attempt += 1) {
|
|
236
|
+
await git(gitRoot, [
|
|
237
|
+
"fetch",
|
|
238
|
+
"origin",
|
|
239
|
+
STATE_BRANCH
|
|
240
|
+
]);
|
|
241
|
+
try {
|
|
242
|
+
await git(gitRoot, ["rebase", `origin/${STATE_BRANCH}`]);
|
|
243
|
+
} catch (error) {
|
|
244
|
+
try {
|
|
245
|
+
await replayConflictedRecord(project, issueId, mutator, gitRoot, recordPath);
|
|
246
|
+
} catch (replayError) {
|
|
247
|
+
await abortRebase(gitRoot);
|
|
248
|
+
throw new Error(`Failed to reconcile ${issueId} state after push race: ${gitFailureMessage(replayError)}`, { cause: error });
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
try {
|
|
252
|
+
await git(gitRoot, [
|
|
253
|
+
"push",
|
|
254
|
+
"origin",
|
|
255
|
+
STATE_BRANCH
|
|
256
|
+
]);
|
|
257
|
+
const record = readIssueRecordSync(project, issueId);
|
|
258
|
+
if (!record) throw new Error(`Reconciled ${issueId} state record is unreadable`);
|
|
259
|
+
return record;
|
|
260
|
+
} catch (error) {
|
|
261
|
+
const message = gitFailureMessage(error);
|
|
262
|
+
if (!isRemoteRefRaceError(message)) throw new Error(`Failed to push reconciled ${issueId} state: ${message}`, { cause: error });
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
throw new Error(`Failed to push ${issueId} state after ${MAX_STATE_PUSH_RECONCILIATIONS} reconciliation attempts`);
|
|
266
|
+
}
|
|
267
|
+
async function updateIssueRecord(project, issueId, mutator, options = {}) {
|
|
268
|
+
const normalizedIssueId = issueId.toUpperCase();
|
|
269
|
+
const recordPath = getIssueRecordPath(project, normalizedIssueId);
|
|
270
|
+
return withRecordFsLock(project, normalizedIssueId, {
|
|
271
|
+
writerId: options.writerId ?? process.env.OVERDECK_AGENT_ID ?? `process-${process.pid}@${hostname()}`,
|
|
272
|
+
recordPath
|
|
273
|
+
}, async () => {
|
|
274
|
+
const current = readIssueRecordSync(project, normalizedIssueId) ?? ensureIssueRecordSync(project, normalizedIssueId);
|
|
275
|
+
const original = structuredClone(current);
|
|
276
|
+
const next = await mutator(current) ?? current;
|
|
277
|
+
const path = writeIssueRecordSync(project, normalizedIssueId, next);
|
|
278
|
+
if (options.autoCommit === false) return readIssueRecordSync(project, normalizedIssueId) ?? next;
|
|
279
|
+
try {
|
|
280
|
+
const commitRoot = queueIssueRecordCommit(project, normalizedIssueId, path);
|
|
281
|
+
const flushed = await Effect.runPromise(flushAutoCommits(commitRoot));
|
|
282
|
+
if (flushed.pushed === false) {
|
|
283
|
+
if (resolveStateReadHomeSync(project).migrated && isRemoteRefRaceError(flushed.reason ?? "")) return await reconcileStatePush(project, normalizedIssueId, mutator, path);
|
|
284
|
+
throw new Error(`Failed to push ${normalizedIssueId} state: ${flushed.reason ?? "unknown push failure"}`);
|
|
285
|
+
}
|
|
286
|
+
if (!flushed.committed && !["no diff", "no pending"].includes(flushed.reason ?? "")) throw new Error(`Failed to commit ${normalizedIssueId} state: ${flushed.reason ?? "unknown commit failure"}`);
|
|
287
|
+
return readIssueRecordSync(project, normalizedIssueId) ?? next;
|
|
288
|
+
} catch (error) {
|
|
289
|
+
try {
|
|
290
|
+
await restoreRetryableRecord(project, normalizedIssueId, original, path);
|
|
291
|
+
} catch (restoreError) {
|
|
292
|
+
throw new Error(`Failed to persist ${normalizedIssueId} state and restore retryability: ${gitFailureMessage(restoreError)}`, { cause: error });
|
|
293
|
+
}
|
|
294
|
+
throw error;
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
var execFileAsync, MAX_STATE_PUSH_RECONCILIATIONS;
|
|
299
|
+
var init_record_update = __esmMin((() => {
|
|
300
|
+
init_state_read_home();
|
|
301
|
+
init_auto_commit();
|
|
302
|
+
init_fs_lock();
|
|
303
|
+
init_record();
|
|
304
|
+
execFileAsync = promisify(execFile);
|
|
305
|
+
MAX_STATE_PUSH_RECONCILIATIONS = 3;
|
|
306
|
+
}));
|
|
307
|
+
//#endregion
|
|
308
|
+
export { isPidDead as a, init_fs_lock as i, updateIssueRecord as n, updateIssueRecordForWorkspace as r, init_record_update as t };
|
|
309
|
+
|
|
310
|
+
//# sourceMappingURL=record-update-dE1Aw83j.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as updateIssueRecordForWorkspace, t as init_record_update } from "./record-update-
|
|
1
|
+
import { r as updateIssueRecordForWorkspace, t as init_record_update } from "./record-update-dE1Aw83j.js";
|
|
2
2
|
//#region ../../lib/cloister/recovery-trip.ts
|
|
3
3
|
init_record_update();
|
|
4
4
|
async function recordRecoveryFailure(workspacePath, issue, recoveryPath, obligationGeneration, threshold = 25, now = /* @__PURE__ */ new Date()) {
|
|
@@ -41,4 +41,4 @@ async function recordRecoveryFailure(workspacePath, issue, recoveryPath, obligat
|
|
|
41
41
|
//#endregion
|
|
42
42
|
export { recordRecoveryFailure as t };
|
|
43
43
|
|
|
44
|
-
//# sourceMappingURL=recovery-trip-
|
|
44
|
+
//# sourceMappingURL=recovery-trip-BvRWfUXM.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-
|
|
5
|
-
import { i as withComponentStateSync, n as init_release_set, r as upsertReleaseSetSync } from "./release-set-
|
|
2
|
+
import { Tn as init_projects, fn as findProjectByPathSync, yn as getProjectSync } from "./config-yaml-DySPNmKN.js";
|
|
3
|
+
import { b as setReviewStatusSync, l as init_review_status } from "./review-status-kZj_KyCk.js";
|
|
4
|
+
import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-DJ8-UErs.js";
|
|
5
|
+
import { i as withComponentStateSync, n as init_release_set, r as upsertReleaseSetSync } from "./release-set-CQfuN9-v.js";
|
|
6
6
|
import { exec } from "node:child_process";
|
|
7
7
|
import { promisify } from "node:util";
|
|
8
8
|
//#region ../../lib/release/release-plan.ts
|
|
@@ -303,4 +303,4 @@ __esmMin((() => {
|
|
|
303
303
|
}))();
|
|
304
304
|
export { runRelease };
|
|
305
305
|
|
|
306
|
-
//# sourceMappingURL=release-engine-
|
|
306
|
+
//# sourceMappingURL=release-engine-Cx48W7z8.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
3
|
-
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-
|
|
2
|
+
import { $n as resolveIssueIdSync, Yn as init_issue_id } from "./config-yaml-DySPNmKN.js";
|
|
3
|
+
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BEqFxlJc.js";
|
|
4
4
|
import "effect";
|
|
5
5
|
//#region ../../lib/overdeck/release-sync.ts
|
|
6
6
|
function isoFromMillis(value) {
|
|
@@ -122,4 +122,4 @@ var init_release_set = __esmMin((() => {
|
|
|
122
122
|
//#endregion
|
|
123
123
|
export { withComponentStateSync as i, init_release_set as n, upsertReleaseSetSync as r, getReleaseSetSync as t };
|
|
124
124
|
|
|
125
|
-
//# sourceMappingURL=release-set-
|
|
125
|
+
//# sourceMappingURL=release-set-CQfuN9-v.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "./workspace-metadata-
|
|
2
|
-
import { C as init_fly_provider, S as createFlyProvider, s as init_remote_agents } from "./remote-agents-
|
|
1
|
+
import "./workspace-metadata-_WygnyoX.js";
|
|
2
|
+
import { C as init_fly_provider, S as createFlyProvider, s as init_remote_agents } from "./remote-agents-By1ige5O.js";
|
|
3
3
|
import { Effect } from "effect";
|
|
4
4
|
//#region ../../lib/remote/index.ts
|
|
5
5
|
init_fly_provider();
|
|
@@ -52,4 +52,4 @@ function createFlyProviderFromConfig(remoteConfig, tierOverride) {
|
|
|
52
52
|
//#endregion
|
|
53
53
|
export { getRemoteProvider as n, isRemoteAvailable as r, createFlyProviderFromConfig as t };
|
|
54
54
|
|
|
55
|
-
//# sourceMappingURL=remote-
|
|
55
|
+
//# sourceMappingURL=remote-C_2hasl7.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync, n as deleteWorkspaceMetadataSync, o as saveWorkspaceMetadataSync, r as findRemoteWorkspaceMetadataSync, t as WORKSPACES_DIR } from "./workspace-metadata-
|
|
2
|
-
import { S as createFlyProvider, d as killRemoteAgent, g as refreshHostHeartbeatForEphemeralVms, h as pollRemoteAgentStatus, m as loadRemoteAgentState, o as getRemoteAgentOutput, p as listRemoteAgents, r as checkRemoteSpendCap, u as isRemoteAgentRunning, v as sendToRemoteAgent, x as FlyProvider, y as spawnRemoteAgent } from "./remote-agents-
|
|
3
|
-
import { n as getRemoteProvider, r as isRemoteAvailable, t as createFlyProviderFromConfig } from "./remote-
|
|
1
|
+
import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync, n as deleteWorkspaceMetadataSync, o as saveWorkspaceMetadataSync, r as findRemoteWorkspaceMetadataSync, t as WORKSPACES_DIR } from "./workspace-metadata-_WygnyoX.js";
|
|
2
|
+
import { S as createFlyProvider, d as killRemoteAgent, g as refreshHostHeartbeatForEphemeralVms, h as pollRemoteAgentStatus, m as loadRemoteAgentState, o as getRemoteAgentOutput, p as listRemoteAgents, r as checkRemoteSpendCap, u as isRemoteAgentRunning, v as sendToRemoteAgent, x as FlyProvider, y as spawnRemoteAgent } from "./remote-agents-By1ige5O.js";
|
|
3
|
+
import { n as getRemoteProvider, r as isRemoteAvailable, t as createFlyProviderFromConfig } from "./remote-C_2hasl7.js";
|
|
4
4
|
export { FlyProvider, WORKSPACES_DIR, checkRemoteSpendCap, createFlyProvider, createFlyProviderFromConfig, deleteWorkspaceMetadataSync, findRemoteWorkspaceMetadataSync, getRemoteAgentOutput, getRemoteProvider, isRemoteAgentRunning, isRemoteAvailable, killRemoteAgent, listRemoteAgents, listWorkspaceMetadataSync, loadRemoteAgentState, loadWorkspaceMetadataSync, pollRemoteAgentStatus, refreshHostHeartbeatForEphemeralVms, saveWorkspaceMetadataSync, sendToRemoteAgent, spawnRemoteAgent };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { n as __esmMin, o as __toESM } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
3
|
-
import { w as init_tmux, y as getManagedTmuxSocketName } from "./tmux-
|
|
4
|
-
import { n as init_launcher_generator, t as generateLauncherScriptSync } from "./launcher-generator-
|
|
5
|
-
import { a as init_claude_permissions, i as getClaudePermissionFlagsSync, n as buildClaudeUserSettingsSync, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-
|
|
6
|
-
import { c as isStateMigrated, o as init_state_home } from "./state-home-
|
|
2
|
+
import { Ft as resolveProjectForIssue, Ot as init_record, er as require_dist, mr as init_errors } from "./config-yaml-DySPNmKN.js";
|
|
3
|
+
import { w as init_tmux, y as getManagedTmuxSocketName } from "./tmux-R7N7y-Mh.js";
|
|
4
|
+
import { n as init_launcher_generator, t as generateLauncherScriptSync } from "./launcher-generator-BBWG_SiS.js";
|
|
5
|
+
import { a as init_claude_permissions, i as getClaudePermissionFlagsSync, n as buildClaudeUserSettingsSync, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-DNWEVV6z.js";
|
|
6
|
+
import { c as isStateMigrated, o as init_state_home } from "./state-home-Cn_Qu8IX.js";
|
|
7
7
|
import { Data, Effect, Stream } from "effect";
|
|
8
8
|
import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
|
|
9
9
|
import { join } from "path";
|
|
@@ -1232,4 +1232,4 @@ var init_remote_agents = __esmMin((() => {
|
|
|
1232
1232
|
//#endregion
|
|
1233
1233
|
export { init_fly_provider as C, createFlyProvider as S, saveRemoteAgentState as _, generatePushDaemonScript as a, writeRemoteFile as b, installEphemeralWatchdog as c, killRemoteAgent as d, listActiveRemoteAgentStates as f, refreshHostHeartbeatForEphemeralVms as g, pollRemoteAgentStatus as h, generateEphemeralWatchdogScript as i, installPushDaemon as l, loadRemoteAgentState as m, checkRemoteDurabilityPreflight as n, getRemoteAgentOutput as o, listRemoteAgents as p, checkRemoteSpendCap as r, init_remote_agents as s, assertFlyRemoteStateSupported as t, isRemoteAgentRunning as u, sendToRemoteAgent as v, FlyProvider as x, spawnRemoteAgent as y };
|
|
1234
1234
|
|
|
1235
|
-
//# sourceMappingURL=remote-agents-
|
|
1235
|
+
//# sourceMappingURL=remote-agents-By1ige5O.js.map
|