@overdeck/desktop 0.45.24 → 0.47.0
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 +36 -1
- package/package.json +1 -1
- package/server/{acceptance-criteria-DDCnXF58.js → acceptance-criteria-10Ur5Dne.js} +2 -2
- package/server/activity-logger-CMthG6Vd.js +3 -0
- package/server/{activity-logger-DDlOIAML.js → activity-logger-CyteR4JO.js} +24 -13
- package/server/{advancing-selfheal-BVwW4qRn.js → advancing-selfheal-BNwqxseD.js} +6 -6
- package/server/{agent-gc-CHcnvonI.js → agent-gc-C3h9Or3a.js} +5 -5
- package/server/agent-state-CYXJVG72.js +3 -0
- package/server/agent-state-service-C63p_ftq.js +2 -0
- package/server/{agent-state-service-BsgWxZuB.js → agent-state-service-Ds6OeFvo.js} +15 -9
- package/server/{agents-EbI0zCJl.js → agents-J5mEnekq.js} +23 -16
- package/server/agents-ePFVoZbu.js +3 -0
- package/server/archive-planning-B2XplFzT.js +2 -0
- package/server/{archive-planning-Du25Jtst.js → archive-planning-BwhxeP7C.js} +22 -26
- package/server/{artifact-index-jobs-CbEDfCDu.js → artifact-index-jobs-D1q_vR3V.js} +2 -2
- package/server/{assemble-J2ZZ2C15.js → assemble-Bgwqv-Ro.js} +2 -2
- package/server/auto-spawn-consent-CQ9Bi9q6.js +1141 -0
- package/server/{backlog-auto-trigger-2R2jog7n.js → backlog-auto-trigger-n1lzPgN4.js} +3 -3
- package/server/{behavior-B3exJ42O.js → behavior-td6-xhQk.js} +2 -2
- package/server/boot-reconciled-stop-events-C7gGe3oB.js +44 -0
- package/server/bridge-pool-patrol-CYH2OLb5.js +136 -0
- package/server/{briefing-freshness-D1wzUIWv.js → briefing-freshness-DRqZ8lAz.js} +2 -2
- package/server/{build-info-Ie_D0_BT.js → build-info-7yiEpl6u.js} +5 -3
- package/server/{build-info-CZk_TITh.js → build-info-CpG__c63.js} +1 -1
- package/server/{checkpoint-manager-DwbQoqrC.js → checkpoint-manager-CkKmB0wZ.js} +1 -1
- package/server/{checkpoint-manager-BI1Wxoku.js → checkpoint-manager-DBcyNR8w.js} +2 -2
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-CQB1h765.js → checkpoints-D95apurL.js} +2 -2
- package/server/{checkpoints-BJIs5QIA.js → checkpoints-Wm963lm8.js} +1 -1
- package/server/{claude-hooks-provision-8Ngo8TpT.js → claude-hooks-provision-4RPxNkE8.js} +1 -1
- package/server/{claude-hooks-provision-D8GXF3_s.js → claude-hooks-provision-Bjitl9aI.js} +13 -2
- package/server/{claude-permissions-DNWEVV6z.js → claude-permissions-CpbpvUQ2.js} +2 -2
- package/server/{claude-settings-overlay-DWy-Bb4Y.js → claude-settings-overlay-BzkHYDwR.js} +1 -1
- package/server/{claude-settings-overlay-CEdaqpWI.js → claude-settings-overlay-_H9Yrzab.js} +2 -2
- package/server/cli-CjOCSnfj.js +3 -0
- package/server/{cli-RoOx5DUf.js → cli-Cte9ZFGn.js} +9 -9
- package/server/{cliproxy-C8a1vtTU.js → cliproxy-C5fMJ7rY.js} +2 -2
- package/server/{cliproxy-fHfIeiGd.js → cliproxy-DaAbWMjC.js} +1 -1
- package/server/{close-issue-DoOifFIK.js → close-issue-BPh1ARCF.js} +5 -5
- package/server/{closed-issue-reaper-CktPXo8m.js → closed-issue-reaper-DHRfRMrp.js} +1 -1
- package/server/{closed-issue-reaper-Bk3SU4RC.js → closed-issue-reaper-DoOZqGFK.js} +88 -17
- package/server/{codex-BZXGhUVB.js → codex-BzGDW_d3.js} +36 -7
- package/server/{codex-GcHuUF-k.js → codex-o8FJwzmy.js} +1 -1
- package/server/{codex-parser-CFZ1_1Jl.js → codex-parser-Dt-ycU8L.js} +2 -2
- package/server/compaction-continuation-CvXpbZ4w.js +200 -0
- package/server/{config-CKxYiCmX.js → config-Bi3u1VK7.js} +4 -3
- package/server/{config-BZ0sHTju.js → config-BvLe652W.js} +2 -2
- package/server/{config-DzV30TOm.js → config-CL3Gyvja.js} +1 -1
- package/server/{config-yaml-DySPNmKN.js → config-yaml-CxdwhAIA.js} +276 -14
- package/server/conflict-gate-CX80JYYS.js +3 -0
- package/server/{conflict-gate-BaCVrH-N.js → conflict-gate-E4nt7ZeS.js} +60 -14
- package/server/{context-layers-igZ4FI4_.js → context-layers-C_IIysnm.js} +3 -3
- package/server/{context-layers-BrPmE__h.js → context-layers-DAG83UZt.js} +2 -2
- package/server/{control-settings-BQp7_4uD.js → control-settings-CiqGxXnc.js} +56 -19
- package/server/{conversation-compaction-eQB5CkOe.js → conversation-compaction-BE3CNtHF.js} +1 -1
- package/server/{conversation-compaction-CgrR8YYp.js → conversation-compaction-D6-yLtqt.js} +8 -8
- package/server/{conversation-service-DPJ71F33.js → conversation-service-DBxoYMDl.js} +10 -8
- package/server/conversation-service-D_TS2b1r.js +3 -0
- package/server/{conversations-CAsJF9kh.js → conversations-BKDVpB-3.js} +1 -1
- package/server/{conversations-6AfUfbwc.js → conversations-D0UEdLtk.js} +4 -4
- package/server/{cost-R-m6Yi-W.js → cost-DS1s0DbG.js} +3 -3
- package/server/{cost-B2ddP6wq.js → cost-DpgYmYqR.js} +12 -2
- package/server/{cost-sync-BsN6ER0n.js → cost-sync-tOCCGnEt.js} +3 -3
- package/server/{dag-B1ucnjDU.js → dag-BtkgLeqY.js} +2 -2
- package/server/{dangerous-git-ops-BXqeWVSf.js → dangerous-git-ops-CFLykHWt.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/deacon-BIblC-WX.js +4 -0
- package/server/{deacon-nudge-log-6wVqAaqz.js → deacon-nudge-log-B08gF0mh.js} +3 -3
- package/server/{deacon-CU_cAYSR.js → deacon-pLRLbPvR.js} +3308 -2707
- package/server/deacon-pending-lifecycle-B-Io84AP.js +33 -0
- package/server/deacon-swarm-B1XkIvfr.js +2 -0
- package/server/{deacon-swarm-BXZZ1Z2-.js → deacon-swarm-v5PMun-m.js} +15 -14
- package/server/deacon.js +14 -19
- package/server/dead-end-trip-D8A3msX9.js +13 -0
- package/server/delivery-BX9HR4wQ.js +3 -0
- package/server/{deploy-patrol-AiFoP8dw.js → deploy-patrol-sYgOxLeb.js} +69 -18
- package/server/deploy-queue-VfohaPN_.js +169 -0
- package/server/deploy-queue-gHJBycaF.js +3 -0
- package/server/deploy-window-CFRZ0-kt.js +3 -0
- package/server/{deploy-window-C3F-tihF.js → deploy-window-D4DQb8VP.js} +40 -16
- package/server/{dev-supervisor-bcOWqdQE.js → dev-supervisor-DiOBDM1c.js} +2 -2
- package/server/{devcontainer-renderer-_d6XhyND.js → devcontainer-renderer-BUOIlfgD.js} +3 -3
- package/server/dist-B3YPQa5A.js +3 -0
- package/server/{dist-Cb_0uvpS.js → dist-C3A8B8wM.js} +1 -1
- package/server/{dist-src-BSoS7mkd.js → dist-src-C0adpegX.js} +1 -1
- package/server/{docker-DcMTFTUC.js → docker-BJzlkqYB.js} +2 -2
- package/server/docker-Y3PElJb0.js +3 -0
- package/server/dod-DlNtcH6n.js +91 -0
- package/server/durable-review-pipeline-Cibps-Rg.js +20 -0
- package/server/durable-review-pipeline-DP6bIcOY.js +3 -0
- package/server/{ensure-devcontainer-DNi-ono3.js → ensure-devcontainer-BAofzBPv.js} +4 -4
- package/server/{ensure-devcontainer-BZgOhRo7.js → ensure-devcontainer-DMAbWqtQ.js} +1 -1
- package/server/{esm-shims-OSHAYaS1.js → esm-shims-BeObUkaw.js} +1 -1
- package/server/{event-store-EV2cMiXj.js → event-store-5UKzh9Jf.js} +1 -1
- package/server/{event-store-CQL6NeqB.js → event-store-CrHcVC5_.js} +23 -4
- package/server/{events-DTfAe4My.js → events-BNrvchBg.js} +3 -3
- package/server/{events-BTdrdEq8.js → events-CF8QDbuV.js} +1 -1
- package/server/{factory-CFibJuaw.js → factory-Cmm9Hsho.js} +5 -5
- package/server/{feature-registry-population-DKZFMbFt.js → feature-registry-population-B6HpNWRy.js} +4 -4
- package/server/{feature-registry-storage-BdPuLcBX.js → feature-registry-storage-DJEFx1Pf.js} +2 -2
- package/server/{features-ez2271oH.js → features-D5km80UI.js} +2 -2
- package/server/{feedback-target-CoFDHiM8.js → feedback-target-BJ5ZADsu.js} +1 -1
- package/server/{feedback-target-7mqqwrX6.js → feedback-target-DSxEL6lP.js} +8 -8
- package/server/{feedback-writer-CY5L1lB7.js → feedback-writer-C27Hak8a.js} +5 -5
- package/server/{feedback-writer-D3a22RCd.js → feedback-writer-CoB9Z6aU.js} +1 -1
- package/server/{flywheel-DHrgCphM.js → flywheel-BHx8XuMr.js} +47 -20
- package/server/{flywheel-SVF02Jpq.js → flywheel-DZZdtiOL.js} +1 -1
- package/server/{flywheel-DzGtWnJ1.js → flywheel-f662Q-y2.js} +16 -15
- package/server/flywheel-merge-order-D_xLMbJU.js +462 -0
- package/server/flywheel-merge-order-Dil0LmdN.js +2 -0
- package/server/forge-B5o319qI.js +3 -0
- package/server/forge-BaKGCya6.js +383 -0
- package/server/{from-kNxT0bZC.js → from-B3tZbB55.js} +1 -1
- package/server/fs-lock-Bre3sGoz.js +130 -0
- package/server/{fts-db-CE46vDkZ.js → fts-db-IVc4_M3f.js} +2 -2
- package/server/{fts-operations-CqY6zl-i.js → fts-operations-B9jG8wa3.js} +2 -2
- package/server/{git-utils-CRw2zLPC.js → git-utils-CsvYfJU3.js} +30 -5
- package/server/git-utils-Xg4PFN45.js +3 -0
- package/server/{github-app-ClZ2lk8D.js → github-app-Bmg4R9mv.js} +1 -1
- package/server/{github-app-C3QrAUd0.js → github-app-CmNk0zLU.js} +3 -3
- package/server/{github-client-DfQYVUaw.js → github-client-B6KM9_wA.js} +1 -1
- package/server/{github-client-BnIsSrEN.js → github-client-qazkPrg0.js} +3 -3
- package/server/github-pr-lookup-DAcVeRLK.js +58 -0
- package/server/{harness-binary-DPUi-Pv8.js → harness-binary-BSpiXaLw.js} +2 -2
- package/server/{harness-resolve-3lNZkyT4.js → harness-resolve-BAJu5MX8.js} +4 -4
- package/server/{health-events-BDOHby5Q.js → health-events-2Z6Wa9SM.js} +1 -1
- package/server/{health-events-BBcTYQKU.js → health-events-BwX32k8d.js} +2 -2
- package/server/{hooks-DPVX1rwQ.js → hooks-D1g1jKLI.js} +1 -1
- package/server/{hooks-CKZgXlJb.js → hooks-DbtbimEf.js} +2 -2
- package/server/{hume-Cz8igP9E.js → hume-DXNiu6nQ.js} +2 -2
- package/server/hume-VUCNbTgn.js +3 -0
- package/server/{idle-stack-reaper-CuLF0j2H.js → idle-stack-reaper-CRA1e0jr.js} +1 -1
- package/server/{idle-stack-reaper-DDIRwxUY.js → idle-stack-reaper-Cy-dQzW4.js} +99 -6
- package/server/in-flight-guard-D-sSkADM.js +45 -0
- package/server/{infra-BEqFxlJc.js → infra-BDQDRopn.js} +81 -5
- package/server/{injection-C8aiVJrF.js → injection-6AGnXxlj.js} +7 -7
- package/server/{injection-CPUIqNhI.js → injection-Bl8d_jHZ.js} +1 -1
- package/server/inspect-agent-CUwVmr2h.js +2 -0
- package/server/{inspect-agent-BLuJ1AkT.js → inspect-agent-nXdIptyh.js} +26 -25
- package/server/{internal-token-s0-oKybJ.js → internal-token-DzK385vD.js} +2 -2
- package/server/{internal-token-BrcU6qfe.js → internal-token-Ias7N8Kg.js} +1 -1
- package/server/{io-C9kF1wtJ.js → io-B00PBNku.js} +44 -27
- package/server/{issue-closed-CDJk4pIp.js → issue-closed-BehTG1be.js} +8 -8
- package/server/{issue-lifecycle-ojZAzDBP.js → issue-lifecycle-Birk-ifu.js} +42 -30
- package/server/{issue-lifecycle-B8sZHVHh.js → issue-lifecycle-BqSuQvbn.js} +1 -1
- package/server/{issue-service-singleton-BvJ09SaR.js → issue-service-singleton-B2wXiIlw.js} +1 -1
- package/server/{issue-service-singleton-Yx5DdmVJ.js → issue-service-singleton-C6ZduvuY.js} +10 -10
- package/server/{issues-BMmP_77e.js → issues-DQ5-LatB.js} +2 -2
- package/server/{jsonl-parser-BXSlHwEh.js → jsonl-parser-BDpnGFCl.js} +5 -4
- package/server/{label-cleanup-B0UJwnv5.js → label-cleanup-Dwnky8FG.js} +3 -3
- package/server/{lifecycle-xmBfK2GJ.js → lifecycle-B3s4sM1G.js} +6 -7
- package/server/{lifecycle-yPd___5E.js → lifecycle-B4Xdb4cY.js} +2 -2
- package/server/{lifecycle-io-DPo7x11I.js → lifecycle-io-CzTHEooc.js} +1 -1
- package/server/{lifecycle-io-BREGpnLk.js → lifecycle-io-DCo6s6ks.js} +5 -5
- package/server/{linear-client-BsuUvkdA.js → linear-client-9uq7fhiV.js} +3 -3
- package/server/{linear-client-CTskEeT_.js → linear-client-CnbtHiic.js} +1 -1
- package/server/linear-mcp-auth-BxUOzswy.js +280 -0
- package/server/linear-mcp-auth-D46fBCLf.js +2 -0
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-CefQNAnq.js → merge-DiW9RdSB.js} +13 -11
- package/server/{merge-agent-4WOWlSYA.js → merge-agent-BLUgRsz3.js} +234 -84
- package/server/{merge-agent-CKkgIBPB.js → merge-agent-DQTXZk8z.js} +1 -1
- package/server/{merge-batch-ClFn2T-y.js → merge-batch-Cp_j9BGk.js} +1 -1
- package/server/merge-completeness-B46KqhtY.js +277 -0
- package/server/merge-completeness-BLbB5-6n.js +3 -0
- package/server/merge-ops-1abz6O_P.js +2 -0
- package/server/merge-rebase-CJJVAJuz.js +2 -0
- package/server/{merge-rebase-BfaTyXsw.js → merge-rebase-DIkBjgwq.js} +3 -3
- package/server/{merge-set-DJ8-UErs.js → merge-set-CBgHfwM0.js} +11 -5
- package/server/merge-set-DeUxFsC3.js +3 -0
- package/server/{merge-B1DiziGU.js → merge-sr8Nrnmi.js} +1 -1
- package/server/merge-sync-CpGmk6Ch.js +3 -0
- package/server/{merge-sync-VPV28g0g.js → merge-sync-kr4vqyjM.js} +409 -153
- package/server/{merge-train-CHopycP0.js → merge-train-Dmrcus12.js} +18 -8
- package/server/{merge-train-deps-D1cOZzy2.js → merge-train-deps-D_uGX91G.js} +21 -15
- package/server/merge-verification-NvaAd8CZ.js +220 -0
- package/server/merged-docker-cleanup-worker-DH_hrGPI.js +3 -0
- package/server/merged-docker-cleanup-worker-Y1R06TEl.js +107 -0
- package/server/{multipart-parser-duPAfSBw.js → multipart-parser-R-oC8dQg.js} +2 -2
- package/server/{no-resume-mode-Nw29vaFb.js → no-resume-mode-BgD0JUmM.js} +1 -1
- package/server/node_modules/.package-lock.json +30 -30
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
- package/server/node_modules/@google-cloud/common/package.json +2 -2
- package/server/node_modules/@types/node/README.md +1 -1
- package/server/node_modules/@types/node/crypto.d.ts +1 -1
- package/server/node_modules/@types/node/package.json +2 -2
- package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
- package/server/node_modules/gaxios/package.json +1 -1
- package/server/node_modules/google-auth-library/build/src/auth/googleauth.js +24 -19
- package/server/node_modules/google-auth-library/package.json +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/auth.proto +2 -1
- package/server/node_modules/google-gax/build/protos/google/api/backend.proto +12 -1
- package/server/node_modules/google-gax/build/protos/google/api/billing.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/client.proto +165 -53
- package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1/resources.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/quota_adjuster_settings.proto +7 -3
- package/server/node_modules/google-gax/build/protos/google/api/cloudquotas/v1beta/resources.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/config_change.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/context.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/control.proto +3 -3
- package/server/node_modules/google-gax/build/protos/google/api/distribution.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/documentation.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/endpoint.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/error_reason.proto +186 -1
- package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/checked.proto +31 -3
- package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/eval.proto +8 -9
- package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/explain.proto +1 -2
- package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/syntax.proto +20 -22
- package/server/node_modules/google-gax/build/protos/google/api/expr/v1alpha1/value.proto +2 -3
- package/server/node_modules/google-gax/build/protos/google/api/field_behavior.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/field_info.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/http.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/httpbody.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/label.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/launch_stage.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/log.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/logging.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/metric.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/monitored_resource.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/monitoring.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/policy.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/quota.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/resource.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/routing.proto +8 -4
- package/server/node_modules/google-gax/build/protos/google/api/service.proto +2 -3
- package/server/node_modules/google-gax/build/protos/google/api/source_info.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/system_parameter.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/api/usage.proto +7 -27
- package/server/node_modules/google-gax/build/protos/google/api/visibility.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/longrunning/operations.proto +20 -1
- package/server/node_modules/google-gax/build/protos/google/protobuf/any.proto +52 -108
- package/server/node_modules/google-gax/build/protos/google/protobuf/compiler/ruby/ruby_generated_code.proto +2 -0
- package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_features.proto +21 -1
- package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_file_options.proto +24 -0
- package/server/node_modules/google-gax/build/protos/google/protobuf/cpp_options.proto +15 -0
- package/server/node_modules/google-gax/build/protos/google/protobuf/descriptor.proto +118 -30
- package/server/node_modules/google-gax/build/protos/google/protobuf/field_mask.proto +16 -18
- package/server/node_modules/google-gax/build/protos/google/protobuf/internal_options.proto +8 -1
- package/server/node_modules/google-gax/build/protos/google/protobuf/json/json_enumval_custom_string.proto +26 -0
- package/server/node_modules/google-gax/build/protos/google/protobuf/json_enumvalue_options.proto +29 -0
- package/server/node_modules/google-gax/build/protos/google/protobuf/json_options.proto +14 -0
- package/server/node_modules/google-gax/build/protos/google/protobuf/struct.proto +38 -22
- package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/forced_micro_string.proto +3 -0
- package/server/node_modules/google-gax/build/protos/google/protobuf/test_protos/repeated_field_proxy_import_message.proto +14 -0
- package/server/node_modules/google-gax/build/protos/google/protobuf/timestamp.proto +9 -8
- package/server/node_modules/google-gax/build/protos/google/protobuf/util/json_format_proto3.proto +18 -0
- package/server/node_modules/google-gax/build/protos/google/rpc/code.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/rpc/context/attribute_context.proto +7 -2
- package/server/node_modules/google-gax/build/protos/google/rpc/context/audit_context.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/rpc/error_details.proto +5 -5
- package/server/node_modules/google-gax/build/protos/google/rpc/http.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/rpc/status.proto +1 -2
- package/server/node_modules/google-gax/build/protos/google/type/calendar_period.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/type/color.proto +9 -10
- package/server/node_modules/google-gax/build/protos/google/type/date.proto +11 -9
- package/server/node_modules/google-gax/build/protos/google/type/datetime.proto +17 -17
- package/server/node_modules/google-gax/build/protos/google/type/dayofweek.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/type/decimal.proto +11 -13
- package/server/node_modules/google-gax/build/protos/google/type/expr.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/type/fraction.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/type/interval.proto +1 -2
- package/server/node_modules/google-gax/build/protos/google/type/latlng.proto +4 -5
- package/server/node_modules/google-gax/build/protos/google/type/localized_text.proto +3 -3
- package/server/node_modules/google-gax/build/protos/google/type/money.proto +1 -2
- package/server/node_modules/google-gax/build/protos/google/type/month.proto +1 -1
- package/server/node_modules/google-gax/build/protos/google/type/phone_number.proto +20 -15
- package/server/node_modules/google-gax/build/protos/google/type/postal_address.proto +39 -39
- package/server/node_modules/google-gax/build/protos/google/type/quaternion.proto +4 -4
- package/server/node_modules/google-gax/build/protos/google/type/timeofday.proto +11 -8
- package/server/node_modules/google-gax/package.json +5 -5
- package/server/node_modules/retry-request/package.json +4 -4
- package/server/node_modules/teeny-request/package.json +5 -5
- package/server/node_modules/undici/lib/cache/memory-cache-store.js +54 -9
- package/server/node_modules/undici/lib/cache/sqlite-cache-store.js +7 -1
- package/server/node_modules/undici/lib/core/request.js +12 -1
- package/server/node_modules/undici/lib/dispatcher/client-h1.js +11 -2
- package/server/node_modules/undici/lib/global.js +36 -16
- package/server/node_modules/undici/lib/handler/cache-handler.js +236 -116
- package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +3 -3
- package/server/node_modules/undici/lib/handler/retry-handler.js +24 -0
- package/server/node_modules/undici/lib/interceptor/cache.js +152 -62
- package/server/node_modules/undici/lib/interceptor/decompress.js +5 -2
- package/server/node_modules/undici/lib/util/cache.js +328 -66
- package/server/node_modules/undici/lib/util/date.js +23 -6
- package/server/node_modules/undici/lib/web/cookies/util.js +78 -8
- package/server/node_modules/undici/package.json +1 -1
- package/server/{orphan-proposed-reconciler-BvKkWMJQ.js → orphan-proposed-reconciler-B6vJHxtX.js} +242 -34
- package/server/{orphan-proposed-reconciler-CTSGcK8p.js → orphan-proposed-reconciler-DcgTPPFY.js} +1 -1
- package/server/package-lock.json +31 -31
- package/server/package.json +1 -1
- package/server/{pan-dir-B0c3w0Ya.js → pan-dir-DMzF5wne.js} +25 -11
- package/server/{paths-D-xWGHdh.js → paths-sJBSb7Ul.js} +2 -2
- package/server/pending-lifecycle-claim-DilzGfgk.js +110 -0
- package/server/persistent-logger-H_VjuOu7.js +57 -0
- package/server/{pickup-DUCLWrJY.js → pickup-DWhqzliO.js} +4 -3
- package/server/pipeline-membership-C88VBnhJ.js +3 -0
- package/server/pipeline-membership-D9SBvItj.js +57 -0
- package/server/pipeline-membership-gather-4eR-7Tqy.js +3 -0
- package/server/pipeline-membership-gather-CeVGnNJ2.js +593 -0
- package/server/{pipeline-notifier-BXkJzDC4.js → pipeline-notifier-D0ALV6Nw.js} +2 -2
- package/server/{pipeline-notifier-BJr8gQX6.js → pipeline-notifier-DT6xLFao.js} +1 -1
- package/server/post-merge-lifecycle-worker-8HIeS_J6.js +50 -0
- package/server/{project-pipelines-C0MWUeCU.js → project-pipelines-9SKt2bEc.js} +2 -2
- package/server/{project-repos-B6GycDh9.js → project-repos-B5pIphKg.js} +7 -3
- package/server/project-repos-DPjOdfPa.js +3 -0
- package/server/projects-_n3Zui6K.js +3 -0
- package/server/{prompts-DxzFXuLl.js → prompts-CgzMBvQF.js} +2 -2
- package/server/{providers-u4Ga0jOr.js → providers-BI1mOBQ4.js} +1 -1
- package/server/{providers-qQAwGQDW.js → providers-BJQSnAAp.js} +7 -7
- package/server/public/assets/{chunk-BO2N2NFS-BamJdinX.js → chunk-BO2N2NFS-D_pGACYN.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-DfOB8-w4.js → diagram-OG6HWLK6-BO6fe3hH.js} +1 -1
- package/server/public/assets/{dist-ByIuzMQW.js → dist-5zingMiA.js} +3 -3
- package/server/public/assets/{dist-D7zYSEA6.js → dist-CVxhbI2E.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-EdmRyXL3.js → ganttDiagram-6RSMTGT7-Bgj4A7kp.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-MerOfTX8.js → highlighted-body-OFNGDK62-DNPK7_cm.js} +1 -1
- package/server/public/assets/index-DEpY-D1O.js +807 -0
- package/server/public/assets/index-Ddkcz3WT.css +1 -0
- package/server/public/assets/{linear-BBbArIcK.js → linear-BB0jQT16.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-BzPfaQJ1.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-BKIddiJN.js → pieDiagram-4H26LBE5-DeGIzzpZ.js} +1 -1
- package/server/public/assets/{prod-B8vYiu52.js → prod-XBLvikex.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-D6RtoULk.js → quadrantDiagram-W4KKPZXB-BV9SLeWz.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-CLrCedZX.js → sankeyDiagram-5OEKKPKP-Dwja0gj8.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-hznR8DYl.js → xychartDiagram-2RQKCTM6-DCB4qvfw.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-_lHueOHW.js → pull-requests-7BgLDsIo.js} +19 -10
- package/server/{pull-requests-7N8WKseP.js → pull-requests-Dq0y6IxE.js} +1 -1
- package/server/{queries-CjNIf-Ub.js → queries-C-MUZaIy.js} +824 -192
- package/server/{rally-CyWT_lNO.js → rally-CPysR4T_.js} +3 -3
- package/server/rally-D_VW4bJv.js +3 -0
- package/server/{rally-api-C8e_1JRi.js → rally-api-8Ptlp2os.js} +2 -2
- package/server/{rally-api-ClOSd-Tt.js → rally-api-CgosKdKL.js} +1 -1
- package/server/{rally-client-sgtVqzNU.js → rally-client-CCX0hADj.js} +1 -1
- package/server/{rally-client-lc-nokqr.js → rally-client-iYMHWQD7.js} +5 -5
- package/server/{reap-terminal-sessions-7KeHv1R1.js → reap-terminal-sessions-4Xg9NGA8.js} +2 -2
- package/server/{reap-terminal-sessions-BtHPo6Xc.js → reap-terminal-sessions-Qf-9LVQc.js} +2 -2
- package/server/{rebuild-stack-lwtsW0GO.js → rebuild-stack-CMdgaylx.js} +16 -7
- package/server/{rebuild-stack-CFvcBHsS.js → rebuild-stack-DqcOVmJO.js} +2 -2
- package/server/{reconstruct-cache-C3Ui7ojV.js → reconstruct-cache-CMZJ_Vjq.js} +9 -7
- package/server/record-BTwWhtBb.js +3 -0
- package/server/{record-update-dE1Aw83j.js → record-update-DaOKS7Wb.js} +124 -157
- package/server/record-update-DhI7eySG.js +3 -0
- package/server/{recovery-trip-BvRWfUXM.js → recovery-trip-DDH-02ng.js} +2 -2
- package/server/{release-engine-Cx48W7z8.js → release-engine-B2X9AfFC.js} +5 -5
- package/server/{release-set-CQfuN9-v.js → release-set-G4XKyQ8K.js} +3 -3
- package/server/{remote-C_2hasl7.js → remote-BXarMvqf.js} +3 -3
- package/server/{remote-ChgimyYa.js → remote-CUhyqjXk.js} +3 -3
- package/server/{remote-agents-By1ige5O.js → remote-agents-Bba-MgSA.js} +311 -48
- package/server/{remote-agents-CA3Ihlxj.js → remote-agents-CLZB3Coc.js} +2 -2
- package/server/{remote-completion-fVe9e_3u.js → remote-completion-CwAp79EC.js} +13 -13
- package/server/resume-mOREjlYu.js +3 -0
- package/server/{review-agent-CIGOQYBD.js → review-agent--pOptAEV.js} +65 -50
- package/server/{review-agent-DNboMyW4.js → review-agent-BTCNkq2h.js} +1 -1
- package/server/{review-artifacts-nRDPuMxd.js → review-artifacts-BNmw8dWE.js} +7 -6
- package/server/{review-context-2uj-YQ8J.js → review-context-DFxYOOJW.js} +9 -9
- package/server/{in-flight-guard-CAAkqPLu.js → review-convoy-liveness-BgU_1jJf.js} +3 -44
- package/server/review-status-CGvlA4o_.js +7737 -0
- package/server/review-status-Dma9SFaN.js +3 -0
- package/server/review-status-emit-DURrmGYX.js +50 -0
- package/server/{review-status-enrichment-Dci-ZwEt.js → review-status-enrichment-8NiNXi5W.js} +4 -4
- package/server/review-status-source-BLx_1siH.js +3 -0
- package/server/{review-status-source-CxuEjLGg.js → review-status-source-DIk1JSow.js} +24 -3
- package/server/{review-status-sync-BTOpxtTC.js → review-status-sync-0GxOqeqF.js} +11 -6
- package/server/{review-status-sync-DSDK3OMy.js → review-status-sync-muT-EBp2.js} +1 -1
- package/server/{review-verdict-feedback-CTd4QMBu.js → review-verdict-feedback-HwF6ODFy.js} +1 -1
- package/server/{review-verdict-feedback-CCjVA7Uk.js → review-verdict-feedback-xJNdqBnX.js} +65 -11
- package/server/{rollup-FGsKki9R.js → rollup-BQaol5TX.js} +8 -8
- package/server/{rollup-BKQC7jp4.js → rollup-BR4t_wck.js} +1 -1
- package/server/{scanner-CnqEZeDy.js → scanner-C-D2cFdX.js} +8 -7
- package/server/{sequence-io-D909zgeH.js → sequence-io-Bmf1EZM5.js} +4 -4
- package/server/{sequencer-agent-CzkcK6P5.js → sequencer-agent-CigMyKh2.js} +7 -6
- package/server/server.js +2005 -614
- package/server/{service-CLeAoU6G.js → service-CD0DvFvD.js} +114 -68
- package/server/{session-fork-CHI1XvL9.js → session-fork-B6cQ5eya.js} +2 -2
- package/server/{session-history-BT3IvqhC.js → session-history-3ON_IJjm.js} +7 -55
- package/server/settings-CVmWiJ-r.js +2 -0
- package/server/{settings-C0zgxOGf.js → settings-PilbFZAM.js} +3 -2
- package/server/{settings-BTMvpNFU.js → settings-VN0qOh4U.js} +3 -3
- package/server/{shadow-engineering-BJfgm-hX.js → shadow-engineering-DXvx77oE.js} +3 -3
- package/server/{shadow-state-7a-524T8.js → shadow-state-BBk_zacw.js} +2 -2
- package/server/{shadow-state-DnDyjujH.js → shadow-state-CZBp7pwq.js} +1 -1
- package/server/{shadow-utils-Db3oroFG.js → shadow-utils-DdZ05AJS.js} +2 -2
- package/server/{ship-log-D9MlVzYU.js → ship-log-7kJfjUX2.js} +1 -1
- package/server/{smart-compaction-CV2ukKND.js → smart-compaction-8fA5k5XN.js} +1 -1
- package/server/{smart-compaction-KCYScAU1.js → smart-compaction-ByhL9cRS.js} +8 -7
- package/server/{spawn-planning-session-DKpdFyOC.js → spawn-planning-session-pcF-YeFE.js} +38 -50
- package/server/spawn-planning-session-vLUJoFjy.js +3 -0
- package/server/{specialist-completion-Ky9wCDpb.js → specialist-completion-B07XjWD2.js} +1 -1
- package/server/{specialist-context-Bn3dCGS2.js → specialist-context-DJ-zFyL3.js} +5 -5
- package/server/{specialist-handoff-logger-CMEwYxa2.js → specialist-handoff-logger-aKSxbIgD.js} +2 -2
- package/server/{specialist-logs-C5p8G7tx.js → specialist-logs-Dae-n52_.js} +3 -3
- package/server/{specialists-CC4r-c2s.js → specialists-6PWdtWcg.js} +1177 -311
- package/server/{specialists-DM6bWjsi.js → specialists-Bz-wFT7R.js} +1 -1
- package/server/{specialists-jiuuyVkp.js → specialists-DUiExaxb.js} +18 -18
- package/server/{specialists-CShuVGWT.js → specialists-KR3pKulN.js} +1 -1
- package/server/specs--enInima.js +3 -0
- package/server/src-B948bGVR.js +11452 -0
- package/server/{src-CXmtj0im.js → src-rac0Mepv.js} +6 -6
- package/server/{src-CdmnTM2m.js → src-vHy2-oCv.js} +3 -3
- package/server/{stack-health-Bn3o8FBX.js → stack-health-BikqHSjn.js} +1 -1
- package/server/{stack-health-DxSdG9cW.js → stack-health-DqLTiEu4.js} +7 -5
- package/server/{stale-task-claims-KJKxxiiQ.js → stale-task-claims-Cab_Fo_Z.js} +5 -4
- package/server/{staleness-DPm7ClwA.js → staleness-C-a5rBxF.js} +1 -1
- package/server/{staleness-CT34nwr9.js → staleness-CGTZyp6V.js} +1 -1
- package/server/{state-home-Cn_Qu8IX.js → state-home-722Dkx92.js} +2 -2
- package/server/{state-mapping-BL_-3Yt8.js → state-mapping-CybR81Uf.js} +1 -1
- package/server/{state-migrate-BGg2ZaOt.js → state-migrate-2u8wIpoL.js} +4 -4
- package/server/{stuck-remediation-DYuPRYYw.js → stuck-remediation-CC6q3eqQ.js} +84 -26
- package/server/{stuck-remediation-s9_2qfi6.js → stuck-remediation-r1TJu68G.js} +1 -1
- package/server/{substrate-bug-weights-service-B-FwCs5V.js → substrate-bug-weights-service-CzIyyWFT.js} +3 -3
- package/server/{summary-fork-DpcxN9tf.js → summary-fork-BqgmgPDt.js} +2 -2
- package/server/{summary-fork-D1RAk9rJ.js → summary-fork-Df2WFijM.js} +8 -8
- package/server/supervisor/{injection-budget-Csw5tqfJ.js → injection-budget-Cg_KIb3o.js} +1 -1
- package/server/supervisor/{paths-DehGY2Fj.js → paths-BBOnCYlO.js} +10 -2
- package/server/supervisor/pty-supervisor.js +50 -4
- package/server/supervisor/{pty-token-x-ea28Us.js → pty-token-BbjwEUUM.js} +3 -3
- package/server/supervisor-B4anCCSm.js +2 -0
- package/server/{supervisor-wM4ooB5O.js → supervisor-BxqSpjcN.js} +3 -3
- package/server/{swarm-readiness-DlP_UjHq.js → swarm-readiness-DfFxa9-n.js} +3 -3
- package/server/{system-prerequisites-DUDj1YHf.js → system-prerequisites-ICLSkhhZ.js} +2 -2
- package/server/{teardown-workspace-DeTTImn-.js → teardown-workspace-DRdi_CPa.js} +15 -16
- package/server/{test-agent-queue-MbxX5vqq.js → test-agent-queue-A_-p-i0I.js} +8 -7
- package/server/{test-verdict-gscuksPv.js → test-verdict-BHgTAwIG.js} +1 -1
- package/server/{test-verdict-bWYBtqBg.js → test-verdict-C4i9aqEP.js} +1 -1
- package/server/{tldr-daemon-BYFkts95.js → tldr-daemon-CvWXBhX1.js} +1 -1
- package/server/{tldr-daemon-C-69c3OI.js → tldr-daemon-wvsU6bKv.js} +2 -2
- package/server/{tmux-R7N7y-Mh.js → tmux-CfDHob9M.js} +174 -4
- package/server/{tmux-B6z7h_vZ.js → tmux-Ctk6RV5l.js} +1 -1
- package/server/{token-BK6t8BIT.js → token-DrxwytsZ.js} +2 -2
- package/server/{token-util-DxXu-vd1.js → token-util-B48BlCba.js} +1 -1
- package/server/token-util-D411CAq9.js +3 -0
- package/server/{tracker-config-G6latr8C.js → tracker-config-BcPMElRB.js} +2 -2
- package/server/{tracker-utils-DHv5pSDT.js → tracker-utils-CJ6BHjcD.js} +3 -3
- package/server/{traefik-connect-Df2uXPsQ.js → traefik-connect-DZ6nMYMj.js} +1 -1
- package/server/{tunnel-DGdUkGoZ.js → tunnel-Bp-dRHZz.js} +1 -1
- package/server/{tunnel-CDVKJpRv.js → tunnel-DUbUPElU.js} +3 -3
- package/server/{typed-errors-BHhE85Ul.js → typed-errors-CKeoDdU3.js} +1 -1
- package/server/{typed-errors-2BTMxkZq.js → typed-errors-DyjseiB6.js} +1 -1
- package/server/{types-hraoaQIp.js → types-Cm5ASJbq.js} +1 -1
- package/server/{types-5M0lupud.js → types-Di8wdakq.js} +1 -1
- package/server/uat-promote-verification-CoJuh7XO.js +92 -0
- package/server/uat-train-4Q0k06CQ.js +0 -0
- package/server/uat-train-Dewoatps.js +2 -0
- package/server/{validate-IfDGkaVR.js → validate-B0C8p66t.js} +8 -6
- package/server/{validation-Dw1pzDzr.js → validation-B_kIRfNe.js} +4 -4
- package/server/{validation-CC9OPqJZ.js → validation-hVOwQk8T.js} +1 -1
- package/server/{verification-artifact-B3itKTxu.js → verification-artifact-BxlxTiYK.js} +1 -1
- package/server/{verification-artifact-TVFSz_q1.js → verification-artifact-D70AtckY.js} +1 -1
- package/server/{verification-runner-BW4HOKAz.js → verification-runner-Bc3cJvpC.js} +1 -1
- package/server/{verification-runner-CkgX6EtI.js → verification-runner-KZTz6u72.js} +40 -18
- package/server/{vtt-parser-DYPbKcIJ.js → vtt-parser-CE_i3Bcw.js} +1 -1
- package/server/{work-agent-prompt-Du8Vh2aJ.js → work-agent-prompt-ByrPAzOy.js} +20 -9
- package/server/{workflows-mbQzh6mQ.js → workflows-D0vP1WrK.js} +252 -99
- package/server/workflows-DtDX08ed.js +2 -0
- package/server/{workspace--8tnhDI0.js → workspace-COWvdibH.js} +1 -1
- package/server/{workspace-BPUws1-_.js → workspace-DQkRPLlQ.js} +3 -3
- package/server/workspace-anchor-drift-DXYIAHzr.js +224 -0
- package/server/workspace-anchor-drift-pwz23TI1.js +3 -0
- package/server/{workspace-config-CIVWZOQr.js → workspace-config-BdZM4PvZ.js} +1 -1
- package/server/{workspace-manager-CBhNdzE4.js → workspace-manager-BPgTrG66.js} +157 -118
- package/server/workspace-manager-C1F3XsnS.js +3 -0
- package/server/{workspace-metadata-BzHnwwX4.js → workspace-metadata-CdjzAP8x.js} +1 -1
- package/server/{workspace-metadata-_WygnyoX.js → workspace-metadata-DkO_iTLo.js} +2 -2
- package/server/{workspaces-Do_9J0LQ.js → workspaces-CRBJikLp.js} +749 -299
- package/sync-sources/dev-skills/pan-dashboard-restart/SKILL.md +34 -10
- package/sync-sources/hooks/linear-mcp-auth-hook +97 -0
- package/sync-sources/rules/ask-user-question-self-contained.md +9 -0
- package/sync-sources/skills/pan-close/SKILL.md +5 -3
- package/sync-sources/skills/pan-merge/SKILL.md +7 -5
- package/sync-sources/skills/pan-peer-review/SKILL.md +195 -0
- package/sync-sources/skills/pan-release/SKILL.md +57 -0
- package/sync-sources/skills/pan-reload/SKILL.md +3 -3
- package/sync-sources/skills/pan-restart/SKILL.md +5 -4
- package/sync-sources/skills/pan-review/SKILL.md +7 -1
- package/sync-sources/skills/pan-sync-main/SKILL.md +9 -8
- package/sync-sources/skills/pipeline-status/SKILL.md +10 -1
- package/sync-sources/skills/workspace-add-repo/SKILL.md +16 -1
- package/server/activity-logger-OEUBdfZ8.js +0 -3
- package/server/agent-state-Bc3tzUC8.js +0 -3
- package/server/agent-state-service-D5UGKIJL.js +0 -2
- package/server/agents-wi9NWzs2.js +0 -3
- package/server/archive-planning-BZDgzoEj.js +0 -3
- package/server/cli-B86rejVV.js +0 -3
- package/server/conflict-gate-BhAY7TUd.js +0 -3
- package/server/conversation-service-BLd3MYsG.js +0 -3
- package/server/deacon-kiQrb4ZT.js +0 -4
- package/server/deacon-swarm-C-GwfjJy.js +0 -2
- package/server/deploy-window-DkZraDyj.js +0 -3
- package/server/dist-Bzy0y69j.js +0 -3
- package/server/dod-C6n9RV3G.js +0 -66
- package/server/flywheel-merge-order-UU0tiUld.js +0 -245
- package/server/flywheel-merge-order-UUcsCDb6.js +0 -2
- package/server/forge-CNFnyqps.js +0 -270
- package/server/forge-DXnS_YFH.js +0 -2
- package/server/git-utils-D0_yhCgF.js +0 -3
- package/server/github-pr-lookup-D16NGsSO.js +0 -44
- package/server/hume-ccTf4wTX.js +0 -3
- package/server/inspect-agent-Brtz0URj.js +0 -2
- package/server/label-reconciler-B4iOAjlC.js +0 -113
- package/server/launcher-generator-BBWG_SiS.js +0 -473
- package/server/merge-ops-CR44oU9-.js +0 -2
- package/server/merge-set-bUqbm3yc.js +0 -3
- package/server/merge-sync-BJYeOODr.js +0 -3
- package/server/merge-verification-BkaOqPsw.js +0 -124
- package/server/pipeline-membership-mY3GprlK.js +0 -420
- package/server/project-repos-DXKQsc_m.js +0 -3
- package/server/projects-vjjcmiN8.js +0 -3
- package/server/public/assets/index-CWeMerGO.js +0 -804
- package/server/public/assets/index-CenuJ3Cw.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +0 -1
- package/server/rally-zhhtXuDP.js +0 -3
- package/server/record-CN0pj4_5.js +0 -3
- package/server/record-update-bLJxAXH4.js +0 -3
- package/server/resume-BFv1PGpA.js +0 -3
- package/server/review-status-btEYlaxA.js +0 -3
- package/server/review-status-kZj_KyCk.js +0 -1470
- package/server/settings-66A6uvIA.js +0 -2
- package/server/spawn-planning-session-qUC2VWu3.js +0 -2
- package/server/specs-C8Wsn2XO.js +0 -3
- package/server/src-DtcUOZCq.js +0 -4826
- package/server/supervisor-FTJAIsAK.js +0 -2
- package/server/token-util-DuPuNriz.js +0 -3
- package/server/tracker-utils-B4ylXZQK.js +0 -3
- package/server/uat-train-B05BWkp-.js +0 -2
- package/server/uat-train-DDSrSoV1.js +0 -2152
- package/server/workflows-BQu4RFQ-.js +0 -2
- package/server/workspace-manager-CWT55qeI.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 init_errors, Nr as TrackerError } from "./config-yaml-CxdwhAIA.js";
|
|
3
|
+
import { a as TrackerAuthError, n as init_rally_api, o as init_interface, r as IssueNotFoundError, t as RallyRestApi } from "./rally-api-8Ptlp2os.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-CPysR4T_.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
2
|
+
import { Fr as init_errors, Nr as TrackerError } from "./config-yaml-CxdwhAIA.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-8Ptlp2os.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-iYMHWQD7.js";
|
|
2
2
|
init_rally_client();
|
|
3
3
|
export { RallyClient, RallyClientLive, RallyClientOptionalLive };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { a as init_tracker_config, r as getRallyConfig } from "./tracker-config-
|
|
3
|
-
import { a as RateLimited, c as TrackerNotConfigured, d as init_typed_errors, r as IssueNotFound, s as TrackerApiError } from "./typed-errors-
|
|
2
|
+
import { a as init_tracker_config, r as getRallyConfig } from "./tracker-config-BcPMElRB.js";
|
|
3
|
+
import { a as RateLimited, c as TrackerNotConfigured, d as init_typed_errors, r as IssueNotFound, s as TrackerApiError } from "./typed-errors-DyjseiB6.js";
|
|
4
4
|
import { Context, Effect, Layer } from "effect";
|
|
5
5
|
//#region services/rally-client.ts
|
|
6
6
|
/**
|
|
@@ -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-D_VW4bJv.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-D_VW4bJv.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-iYMHWQD7.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as isRoleTerminal } from "./review-status-source-
|
|
2
|
-
import { i as selectAwaitingTestWorkSessions, o as selectMergedWorkSessions, s as selectNonMergedTerminalAdvancingSessions, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-
|
|
1
|
+
import { r as isRoleTerminal } from "./review-status-source-DIk1JSow.js";
|
|
2
|
+
import { i as selectAwaitingTestWorkSessions, o as selectMergedWorkSessions, s as selectNonMergedTerminalAdvancingSessions, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-Qf-9LVQc.js";
|
|
3
3
|
init_reap_terminal_sessions();
|
|
4
4
|
export { isRoleTerminal, selectAwaitingTestWorkSessions, selectMergedWorkSessions, selectNonMergedTerminalAdvancingSessions };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { n as init_review_status_source, r as isRoleTerminal, t as classifyAdvancingSessionLifecycle } from "./review-status-source-
|
|
2
|
+
import { n as init_review_status_source, r as isRoleTerminal, t as classifyAdvancingSessionLifecycle } from "./review-status-source-DIk1JSow.js";
|
|
3
3
|
//#region ../../lib/cloister/reap-terminal-sessions.ts
|
|
4
4
|
/**
|
|
5
5
|
* Of the alive sessions, the ones belonging to `issueId`'s advancing `role`.
|
|
@@ -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-Qf-9LVQc.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
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-
|
|
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 { Gn as init_projects, ar as resolveProjectFromIssueSync, zn as getProjectSync } from "./config-yaml-CxdwhAIA.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-DqLTiEu4.js";
|
|
4
|
+
import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-BehTG1be.js";
|
|
5
|
+
import { n as reconcileTraefikNetworks, t as init_traefik_connect } from "./traefik-connect-DZ6nMYMj.js";
|
|
6
|
+
import { n as ensureDevcontainerSync, r as init_ensure_devcontainer } from "./ensure-devcontainer-BAofzBPv.js";
|
|
7
7
|
import { dirname, join } from "node:path";
|
|
8
8
|
import { Effect } from "effect";
|
|
9
9
|
import { existsSync, rmSync } from "node:fs";
|
|
@@ -100,10 +100,19 @@ var init_rebuild_stack = __esmMin((() => {
|
|
|
100
100
|
error: `Workspace not found: ${workspacePath}`
|
|
101
101
|
});
|
|
102
102
|
return Effect.gen(function* () {
|
|
103
|
-
|
|
103
|
+
const closed = yield* Effect.promise(() => isIssueClosed(issueId));
|
|
104
|
+
const reviewStatus = closed ? null : yield* Effect.promise(async () => {
|
|
105
|
+
const { resolveCanonicalReviewStatus } = await import("./review-status-source-BLx_1siH.js");
|
|
106
|
+
return resolveCanonicalReviewStatus(issueId);
|
|
107
|
+
});
|
|
108
|
+
if (closed || reviewStatus?.status?.mergeStatus === "merged") return {
|
|
104
109
|
success: false,
|
|
105
110
|
error: "Issue is terminal (closed/merged) — skipping stack rebuild"
|
|
106
111
|
};
|
|
112
|
+
if (!reviewStatus?.available) return {
|
|
113
|
+
success: false,
|
|
114
|
+
error: "Issue terminal status is unavailable — skipping stack rebuild"
|
|
115
|
+
};
|
|
107
116
|
const composeProjectName = composeProjectNameForWorkspace(workspacePath, normalizedIssueId);
|
|
108
117
|
const existingComposeFile = findDevcontainerComposeFile(workspacePath);
|
|
109
118
|
if (existingComposeFile) {
|
|
@@ -175,4 +184,4 @@ var init_rebuild_stack = __esmMin((() => {
|
|
|
175
184
|
//#endregion
|
|
176
185
|
export { rebuildWorkspaceStack as n, removeStaleIssueContainers as r, init_rebuild_stack as t };
|
|
177
186
|
|
|
178
|
-
//# sourceMappingURL=rebuild-stack-
|
|
187
|
+
//# sourceMappingURL=rebuild-stack-CMdgaylx.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./stack-health-
|
|
2
|
-
import { n as rebuildWorkspaceStack, t as init_rebuild_stack } from "./rebuild-stack-
|
|
1
|
+
import "./stack-health-DqLTiEu4.js";
|
|
2
|
+
import { n as rebuildWorkspaceStack, t as init_rebuild_stack } from "./rebuild-stack-CMdgaylx.js";
|
|
3
3
|
init_rebuild_stack();
|
|
4
4
|
export { rebuildWorkspaceStack };
|
|
@@ -1,8 +1,9 @@
|
|
|
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 { b as init_agents$1, i as listRunningAgents } from "./queries-
|
|
5
|
-
import { a as
|
|
2
|
+
import { Gn as init_projects, Lt as readIssueRecord, Pt as init_record, Vt as resolveProjectForIssue, Yn as listProjectsSync } from "./config-yaml-CxdwhAIA.js";
|
|
3
|
+
import { c as listAllAgentsSync, o as init_agents, r as backfillAgentsSync } from "./agents-J5mEnekq.js";
|
|
4
|
+
import { b as init_agents$1, i as listRunningAgents } from "./queries-C-MUZaIy.js";
|
|
5
|
+
import { a as gatherProjectLensSignals, o as gatherProjectLensSignalsForProjects, s as init_pipeline_membership_gather } from "./pipeline-membership-gather-CeVGnNJ2.js";
|
|
6
|
+
import { n as init_pipeline_membership, r as resolvePipelineMembership } from "./pipeline-membership-D9SBvItj.js";
|
|
6
7
|
import { Effect } from "effect";
|
|
7
8
|
//#region ../../lib/reconstruct/enumerate-in-flight.ts
|
|
8
9
|
async function enumerateInFlightIssuesFromSources(projects, gather = gatherProjectLensSignals) {
|
|
@@ -138,7 +139,7 @@ async function loadInFlightIssueIds(projects) {
|
|
|
138
139
|
return enumerateInFlightIssuesFromSources(projects);
|
|
139
140
|
}
|
|
140
141
|
async function fetchPrState(issueId) {
|
|
141
|
-
const { fetchIssuePullRequest } = await import("./pull-requests-
|
|
142
|
+
const { fetchIssuePullRequest } = await import("./pull-requests-Dq0y6IxE.js");
|
|
142
143
|
const result = await fetchIssuePullRequest(issueId);
|
|
143
144
|
if (!result.pr) return {
|
|
144
145
|
hasPr: false,
|
|
@@ -157,7 +158,7 @@ async function fetchPrState(issueId) {
|
|
|
157
158
|
*/
|
|
158
159
|
async function reconstructCache(_db, opts) {
|
|
159
160
|
const verbose = opts?.verbose ?? false;
|
|
160
|
-
const { processed: agentsRebuilt } = backfillAgentsSync({
|
|
161
|
+
const { processed: agentsRebuilt, markedStoppedIds = [] } = backfillAgentsSync({
|
|
161
162
|
verbose,
|
|
162
163
|
listLiveSessions: opts?.listLiveSessions
|
|
163
164
|
});
|
|
@@ -248,6 +249,7 @@ async function reconstructCache(_db, opts) {
|
|
|
248
249
|
return {
|
|
249
250
|
issuesEnumerated: inFlight.size,
|
|
250
251
|
agentsRebuilt,
|
|
252
|
+
markedStoppedIds,
|
|
251
253
|
phaseCounts,
|
|
252
254
|
agentRuntimeById,
|
|
253
255
|
agentsById,
|
|
@@ -269,4 +271,4 @@ __esmMin((() => {
|
|
|
269
271
|
}))();
|
|
270
272
|
export { reconstructCache, reconstructCacheAuto };
|
|
271
273
|
|
|
272
|
-
//# sourceMappingURL=reconstruct-cache-
|
|
274
|
+
//# sourceMappingURL=reconstruct-cache-CMZJ_Vjq.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { $t as writeRecordResumePointSync, At as getIssueRecordPath, Bt as readRecordContinueViewSync, Ct as buildOwnUri, Dt as ensureIssueRecord, Et as clearRecordFeedbackSync, Ft as markRecordPipelineClosedOutSync, Gt as writeCloseOutDodGateSync, Ht as writeAgentHarnessModel, It as queueIssueRecordCommit, Jt as writeRecordDecisions, Kt as writeIssueRecordForWorkspaceSync, Lt as readIssueRecord, Mt as getIssueWorkspacePath, Nt as getProjectConfigFromWorkspacePath, Ot as ensureIssueRecordSync, Pt as init_record, Qt as writeRecordResumePoint, Rt as readIssueRecordForWorkspaceSync, St as appendSessionEntrySync, Tt as clearIssueOwner, Ut as writeAgentHarnessModelSync, Vt as resolveProjectForIssue, Wt as writeCloseOutDodGate, Xt as writeRecordHazards, Yt as writeRecordDecisionsSync, Zt as writeRecordHazardsSync, _t as RECORD_DIRNAME, an as writeStatusOverridesSync, bt as appendFeedbackEntrySync, en as writeRecordScopeDriftSync, in as writeStatusOverrideSync, jt as getIssueRecordPathForWorkspace, kt as getIssueRecordBasePath, nn as writeRecordTieredExecutionOverrideSync, qt as writeIssueRecordSync, rn as writeStatusOverride, tn as writeRecordTieredExecutionOverride, vt as RECORD_SCHEMA_VERSION, wt as claimIssueOwner, xt as appendSessionEntry, yt as appendFeedbackEntry, zt as readIssueRecordSync } from "./config-yaml-CxdwhAIA.js";
|
|
2
|
+
init_record();
|
|
3
|
+
export { RECORD_DIRNAME, RECORD_SCHEMA_VERSION, appendFeedbackEntry, appendFeedbackEntrySync, appendSessionEntry, appendSessionEntrySync, buildOwnUri, claimIssueOwner, clearIssueOwner, clearRecordFeedbackSync, ensureIssueRecord, ensureIssueRecordSync, getIssueRecordBasePath, getIssueRecordPath, getIssueRecordPathForWorkspace, getIssueWorkspacePath, getProjectConfigFromWorkspacePath, markRecordPipelineClosedOutSync, queueIssueRecordCommit, readIssueRecord, readIssueRecordForWorkspaceSync, readIssueRecordSync, readRecordContinueViewSync, resolveProjectForIssue, writeAgentHarnessModel, writeAgentHarnessModelSync, writeCloseOutDodGate, writeCloseOutDodGateSync, writeIssueRecordForWorkspaceSync, writeIssueRecordSync, writeRecordDecisions, writeRecordDecisionsSync, writeRecordHazards, writeRecordHazardsSync, writeRecordResumePoint, writeRecordResumePointSync, writeRecordScopeDriftSync, writeRecordTieredExecutionOverride, writeRecordTieredExecutionOverrideSync, writeStatusOverride, writeStatusOverrideSync, writeStatusOverridesSync };
|
|
@@ -1,151 +1,80 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { At as
|
|
3
|
-
import {
|
|
2
|
+
import { At as getIssueRecordPath, Cn as resolveStateReadHomeSync, It as queueIssueRecordCommit, Nt as getProjectConfigFromWorkspacePath, Ot as ensureIssueRecordSync, Pt as init_record, Sn as init_state_read_home, Vt as resolveProjectForIssue, cn as flushAutoCommits, ln as init_auto_commit, qt as writeIssueRecordSync, xn as STATE_BRANCH, zt as readIssueRecordSync } from "./config-yaml-CxdwhAIA.js";
|
|
3
|
+
import { a as withRecordFsLock, n as init_fs_lock } from "./fs-lock-Bre3sGoz.js";
|
|
4
|
+
import { relative } from "node:path";
|
|
4
5
|
import { Effect } from "effect";
|
|
5
6
|
import { hostname } from "node:os";
|
|
6
|
-
import { mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
|
|
7
7
|
import { execFile } from "node:child_process";
|
|
8
8
|
import { promisify } from "node:util";
|
|
9
|
-
//#region ../../lib/pan-dir/
|
|
10
|
-
/**
|
|
11
|
-
function
|
|
12
|
-
|
|
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
|
-
}
|
|
9
|
+
//#region ../../lib/pan-dir/record-update.ts
|
|
10
|
+
/** The single locked read-modify-write door for per-issue records. */
|
|
11
|
+
function recordDurabilityBudgetMs() {
|
|
12
|
+
const parsed = Number(process.env.OVERDECK_RECORD_DURABILITY_BUDGET_MS);
|
|
13
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_RECORD_DURABILITY_BUDGET_MS;
|
|
46
14
|
}
|
|
47
|
-
async function
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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));
|
|
15
|
+
async function withRecordDurabilityDeadline(issueId, promise, deadlineMs, budgetMs, onTimeout) {
|
|
16
|
+
const remaining = deadlineMs - Date.now();
|
|
17
|
+
if (remaining <= 0) {
|
|
18
|
+
await onTimeout?.().catch(() => void 0);
|
|
19
|
+
throw new RecordDurabilityTimeoutError(issueId, budgetMs);
|
|
90
20
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
21
|
+
return await new Promise((resolve, reject) => {
|
|
22
|
+
let settled = false;
|
|
23
|
+
let timingOut = false;
|
|
24
|
+
const timer = setTimeout(() => {
|
|
25
|
+
timingOut = true;
|
|
26
|
+
(onTimeout?.() ?? Promise.resolve()).catch(() => void 0).finally(() => {
|
|
27
|
+
settled = true;
|
|
28
|
+
reject(new RecordDurabilityTimeoutError(issueId, budgetMs));
|
|
29
|
+
});
|
|
30
|
+
}, remaining);
|
|
31
|
+
timer.unref?.();
|
|
32
|
+
promise.then((value) => {
|
|
33
|
+
if (settled || timingOut) return;
|
|
34
|
+
settled = true;
|
|
35
|
+
clearTimeout(timer);
|
|
36
|
+
resolve(value);
|
|
37
|
+
}, (error) => {
|
|
38
|
+
if (settled || timingOut) return;
|
|
39
|
+
settled = true;
|
|
40
|
+
clearTimeout(timer);
|
|
41
|
+
reject(error);
|
|
42
|
+
});
|
|
97
43
|
});
|
|
98
44
|
}
|
|
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
45
|
function updateIssueRecordForWorkspace(workspacePath, issueId, mutator, options = {}) {
|
|
135
46
|
return updateIssueRecord(resolveProjectForIssue(issueId) ?? getProjectConfigFromWorkspacePath(workspacePath), issueId, mutator, options);
|
|
136
47
|
}
|
|
137
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Clear the terminal close-out marker so a reopened issue re-enters the pipeline (sync).
|
|
50
|
+
* Ordinary status writes deliberately preserve closedOut (projectPipeline in records.ts),
|
|
51
|
+
* so reopen needs this explicit inverse of markRecordPipelineClosedOutSync in record.ts
|
|
52
|
+
* (MIN-850, 2026-07-24).
|
|
53
|
+
*/
|
|
54
|
+
function clearRecordPipelineClosedOutSync(project, issueId) {
|
|
55
|
+
const record = ensureIssueRecordSync(project, issueId);
|
|
56
|
+
if (!record.pipeline.closedOut && !record.pipeline.closedOutAt) return;
|
|
57
|
+
record.pipeline.closedOut = void 0;
|
|
58
|
+
record.pipeline.closedOutAt = void 0;
|
|
59
|
+
record.pipeline.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
60
|
+
queueIssueRecordCommit(project, issueId, writeIssueRecordSync(project, issueId, record));
|
|
61
|
+
}
|
|
62
|
+
async function git(gitRoot, args, options = {}) {
|
|
138
63
|
return (await execFileAsync("git", args, {
|
|
139
64
|
cwd: gitRoot,
|
|
140
65
|
encoding: "utf8",
|
|
141
|
-
timeout: 3e4,
|
|
66
|
+
timeout: options.timeoutMs ?? 3e4,
|
|
142
67
|
maxBuffer: 16 * 1024 * 1024,
|
|
143
68
|
env: {
|
|
144
69
|
...process.env,
|
|
145
70
|
HUSKY: "0"
|
|
146
|
-
}
|
|
71
|
+
},
|
|
72
|
+
...options.signal ? { signal: options.signal } : {}
|
|
147
73
|
})).stdout.trim();
|
|
148
74
|
}
|
|
75
|
+
function throwIfDurabilityAborted(signal) {
|
|
76
|
+
if (signal?.aborted) throw new Error("Record durability operation aborted at the deadline");
|
|
77
|
+
}
|
|
149
78
|
function gitFailureMessage(error) {
|
|
150
79
|
if (error && typeof error === "object") {
|
|
151
80
|
const failure = error;
|
|
@@ -156,18 +85,21 @@ function gitFailureMessage(error) {
|
|
|
156
85
|
function isRemoteRefRaceError(message) {
|
|
157
86
|
return /non-fast-forward|fetch first|stale info|cannot lock ref.*expected|failed to update ref/i.test(message);
|
|
158
87
|
}
|
|
159
|
-
async function abortRebase(gitRoot) {
|
|
88
|
+
async function abortRebase(gitRoot, options = {}) {
|
|
160
89
|
try {
|
|
161
|
-
await git(gitRoot, ["rebase", "--abort"]
|
|
90
|
+
await git(gitRoot, ["rebase", "--abort"], {
|
|
91
|
+
timeoutMs: 5e3,
|
|
92
|
+
...options
|
|
93
|
+
});
|
|
162
94
|
} catch {}
|
|
163
95
|
}
|
|
164
|
-
async function replayConflictedRecord(project, issueId, mutator, gitRoot, recordPath) {
|
|
96
|
+
async function replayConflictedRecord(project, issueId, mutator, gitRoot, recordPath, signal) {
|
|
165
97
|
const relativeRecordPath = relative(gitRoot, recordPath).replace(/\\/g, "/");
|
|
166
98
|
const conflicts = (await git(gitRoot, [
|
|
167
99
|
"diff",
|
|
168
100
|
"--name-only",
|
|
169
101
|
"--diff-filter=U"
|
|
170
|
-
])).split("\n").map((path) => path.trim()).filter(Boolean);
|
|
102
|
+
], { signal })).split("\n").map((path) => path.trim()).filter(Boolean);
|
|
171
103
|
if (conflicts.length !== 1 || conflicts[0] !== relativeRecordPath) throw new Error(`state rebase conflicted outside ${relativeRecordPath}: ${conflicts.join(", ") || "unknown conflict"}`);
|
|
172
104
|
await git(gitRoot, [
|
|
173
105
|
"restore",
|
|
@@ -175,43 +107,49 @@ async function replayConflictedRecord(project, issueId, mutator, gitRoot, record
|
|
|
175
107
|
"--worktree",
|
|
176
108
|
"--",
|
|
177
109
|
relativeRecordPath
|
|
178
|
-
]);
|
|
110
|
+
], { signal });
|
|
179
111
|
const remoteRecord = readIssueRecordSync(project, issueId);
|
|
180
112
|
if (!remoteRecord) throw new Error(`Remote ${issueId} state record is unreadable`);
|
|
181
|
-
|
|
113
|
+
const result = await mutator(remoteRecord);
|
|
114
|
+
throwIfDurabilityAborted(signal);
|
|
115
|
+
writeIssueRecordSync(project, issueId, result ?? remoteRecord);
|
|
182
116
|
await git(gitRoot, [
|
|
183
117
|
"add",
|
|
184
118
|
"--",
|
|
185
119
|
relativeRecordPath
|
|
186
|
-
]);
|
|
120
|
+
], { signal });
|
|
121
|
+
throwIfDurabilityAborted(signal);
|
|
187
122
|
await git(gitRoot, [
|
|
188
123
|
"-c",
|
|
189
124
|
"core.editor=true",
|
|
190
125
|
"rebase",
|
|
191
126
|
"--continue"
|
|
192
|
-
]);
|
|
127
|
+
], { signal });
|
|
193
128
|
}
|
|
194
|
-
async function restoreRetryableRecord(project, issueId, original, recordPath) {
|
|
129
|
+
async function restoreRetryableRecord(project, issueId, original, recordPath, signal) {
|
|
195
130
|
const stateHome = resolveStateReadHomeSync(project);
|
|
196
131
|
const gitRoot = stateHome.root;
|
|
197
132
|
const relativeRecordPath = relative(gitRoot, recordPath).replace(/\\/g, "/");
|
|
198
|
-
await abortRebase(gitRoot);
|
|
133
|
+
await abortRebase(gitRoot, { signal });
|
|
199
134
|
let restored = structuredClone(original);
|
|
200
|
-
const branch = stateHome.migrated ? STATE_BRANCH : await git(gitRoot, ["branch", "--show-current"]);
|
|
135
|
+
const branch = stateHome.migrated ? STATE_BRANCH : await git(gitRoot, ["branch", "--show-current"], { signal });
|
|
201
136
|
try {
|
|
202
137
|
await git(gitRoot, [
|
|
203
138
|
"fetch",
|
|
204
139
|
"origin",
|
|
205
140
|
branch
|
|
206
|
-
]);
|
|
207
|
-
restored = JSON.parse(await git(gitRoot, ["show", `origin/${branch}:${relativeRecordPath}`]));
|
|
208
|
-
} catch {
|
|
141
|
+
], { signal });
|
|
142
|
+
restored = JSON.parse(await git(gitRoot, ["show", `origin/${branch}:${relativeRecordPath}`], { signal }));
|
|
143
|
+
} catch (fetchError) {
|
|
144
|
+
throwIfDurabilityAborted(signal);
|
|
145
|
+
}
|
|
146
|
+
throwIfDurabilityAborted(signal);
|
|
209
147
|
writeIssueRecordSync(project, issueId, restored);
|
|
210
148
|
await git(gitRoot, [
|
|
211
149
|
"add",
|
|
212
150
|
"--",
|
|
213
151
|
relativeRecordPath
|
|
214
|
-
]);
|
|
152
|
+
], { signal });
|
|
215
153
|
try {
|
|
216
154
|
await git(gitRoot, [
|
|
217
155
|
"diff",
|
|
@@ -219,32 +157,36 @@ async function restoreRetryableRecord(project, issueId, original, recordPath) {
|
|
|
219
157
|
"--quiet",
|
|
220
158
|
"--",
|
|
221
159
|
relativeRecordPath
|
|
222
|
-
]);
|
|
160
|
+
], { signal });
|
|
223
161
|
return;
|
|
224
|
-
} catch {
|
|
162
|
+
} catch (diffError) {
|
|
163
|
+
throwIfDurabilityAborted(signal);
|
|
164
|
+
}
|
|
225
165
|
await git(gitRoot, [
|
|
226
166
|
"commit",
|
|
227
167
|
"-m",
|
|
228
168
|
`chore(records): restore ${issueId} after failed state push`,
|
|
229
169
|
"--",
|
|
230
170
|
relativeRecordPath
|
|
231
|
-
]);
|
|
171
|
+
], { signal });
|
|
232
172
|
}
|
|
233
|
-
async function reconcileStatePush(project, issueId, mutator, recordPath) {
|
|
173
|
+
async function reconcileStatePush(project, issueId, mutator, recordPath, signal) {
|
|
234
174
|
const gitRoot = resolveStateReadHomeSync(project).root;
|
|
235
175
|
for (let attempt = 0; attempt < MAX_STATE_PUSH_RECONCILIATIONS; attempt += 1) {
|
|
176
|
+
throwIfDurabilityAborted(signal);
|
|
236
177
|
await git(gitRoot, [
|
|
237
178
|
"fetch",
|
|
238
179
|
"origin",
|
|
239
180
|
STATE_BRANCH
|
|
240
|
-
]);
|
|
181
|
+
], { signal });
|
|
241
182
|
try {
|
|
242
|
-
await git(gitRoot, ["rebase", `origin/${STATE_BRANCH}`]);
|
|
183
|
+
await git(gitRoot, ["rebase", `origin/${STATE_BRANCH}`], { signal });
|
|
243
184
|
} catch (error) {
|
|
185
|
+
throwIfDurabilityAborted(signal);
|
|
244
186
|
try {
|
|
245
|
-
await replayConflictedRecord(project, issueId, mutator, gitRoot, recordPath);
|
|
187
|
+
await replayConflictedRecord(project, issueId, mutator, gitRoot, recordPath, signal);
|
|
246
188
|
} catch (replayError) {
|
|
247
|
-
await abortRebase(gitRoot);
|
|
189
|
+
await abortRebase(gitRoot, { signal });
|
|
248
190
|
throw new Error(`Failed to reconcile ${issueId} state after push race: ${gitFailureMessage(replayError)}`, { cause: error });
|
|
249
191
|
}
|
|
250
192
|
}
|
|
@@ -253,11 +195,12 @@ async function reconcileStatePush(project, issueId, mutator, recordPath) {
|
|
|
253
195
|
"push",
|
|
254
196
|
"origin",
|
|
255
197
|
STATE_BRANCH
|
|
256
|
-
]);
|
|
198
|
+
], { signal });
|
|
257
199
|
const record = readIssueRecordSync(project, issueId);
|
|
258
200
|
if (!record) throw new Error(`Reconciled ${issueId} state record is unreadable`);
|
|
259
201
|
return record;
|
|
260
202
|
} catch (error) {
|
|
203
|
+
throwIfDurabilityAborted(signal);
|
|
261
204
|
const message = gitFailureMessage(error);
|
|
262
205
|
if (!isRemoteRefRaceError(message)) throw new Error(`Failed to push reconciled ${issueId} state: ${message}`, { cause: error });
|
|
263
206
|
}
|
|
@@ -276,26 +219,43 @@ async function updateIssueRecord(project, issueId, mutator, options = {}) {
|
|
|
276
219
|
const next = await mutator(current) ?? current;
|
|
277
220
|
const path = writeIssueRecordSync(project, normalizedIssueId, next);
|
|
278
221
|
if (options.autoCommit === false) return readIssueRecordSync(project, normalizedIssueId) ?? next;
|
|
222
|
+
const budgetMs = recordDurabilityBudgetMs();
|
|
223
|
+
const deadlineMs = Date.now() + budgetMs;
|
|
279
224
|
try {
|
|
280
225
|
const commitRoot = queueIssueRecordCommit(project, normalizedIssueId, path);
|
|
281
|
-
const flushed = await Effect.runPromise(flushAutoCommits(commitRoot));
|
|
226
|
+
const flushed = await withRecordDurabilityDeadline(normalizedIssueId, Effect.runPromise(flushAutoCommits(commitRoot)), deadlineMs, budgetMs);
|
|
282
227
|
if (flushed.pushed === false) {
|
|
283
|
-
if (resolveStateReadHomeSync(project).migrated && isRemoteRefRaceError(flushed.reason ?? ""))
|
|
228
|
+
if (resolveStateReadHomeSync(project).migrated && isRemoteRefRaceError(flushed.reason ?? "")) {
|
|
229
|
+
const reconcileAbort = new AbortController();
|
|
230
|
+
const reconcilePromise = reconcileStatePush(project, normalizedIssueId, mutator, path, reconcileAbort.signal);
|
|
231
|
+
return await withRecordDurabilityDeadline(normalizedIssueId, reconcilePromise, deadlineMs, budgetMs, async () => {
|
|
232
|
+
reconcileAbort.abort();
|
|
233
|
+
await reconcilePromise.catch(() => void 0);
|
|
234
|
+
await abortRebase(resolveStateReadHomeSync(project).root);
|
|
235
|
+
});
|
|
236
|
+
}
|
|
284
237
|
throw new Error(`Failed to push ${normalizedIssueId} state: ${flushed.reason ?? "unknown push failure"}`);
|
|
285
238
|
}
|
|
286
239
|
if (!flushed.committed && !["no diff", "no pending"].includes(flushed.reason ?? "")) throw new Error(`Failed to commit ${normalizedIssueId} state: ${flushed.reason ?? "unknown commit failure"}`);
|
|
287
240
|
return readIssueRecordSync(project, normalizedIssueId) ?? next;
|
|
288
241
|
} catch (error) {
|
|
242
|
+
if (error instanceof RecordDurabilityTimeoutError) throw error;
|
|
289
243
|
try {
|
|
290
|
-
|
|
244
|
+
const restoreAbort = new AbortController();
|
|
245
|
+
const restorePromise = restoreRetryableRecord(project, normalizedIssueId, original, path, restoreAbort.signal);
|
|
246
|
+
await withRecordDurabilityDeadline(normalizedIssueId, restorePromise, deadlineMs, budgetMs, async () => {
|
|
247
|
+
restoreAbort.abort();
|
|
248
|
+
await restorePromise.catch(() => void 0);
|
|
249
|
+
});
|
|
291
250
|
} catch (restoreError) {
|
|
251
|
+
if (restoreError instanceof RecordDurabilityTimeoutError) throw restoreError;
|
|
292
252
|
throw new Error(`Failed to persist ${normalizedIssueId} state and restore retryability: ${gitFailureMessage(restoreError)}`, { cause: error });
|
|
293
253
|
}
|
|
294
254
|
throw error;
|
|
295
255
|
}
|
|
296
256
|
});
|
|
297
257
|
}
|
|
298
|
-
var execFileAsync, MAX_STATE_PUSH_RECONCILIATIONS;
|
|
258
|
+
var execFileAsync, MAX_STATE_PUSH_RECONCILIATIONS, DEFAULT_RECORD_DURABILITY_BUDGET_MS, RecordDurabilityTimeoutError;
|
|
299
259
|
var init_record_update = __esmMin((() => {
|
|
300
260
|
init_state_read_home();
|
|
301
261
|
init_auto_commit();
|
|
@@ -303,8 +263,15 @@ var init_record_update = __esmMin((() => {
|
|
|
303
263
|
init_record();
|
|
304
264
|
execFileAsync = promisify(execFile);
|
|
305
265
|
MAX_STATE_PUSH_RECONCILIATIONS = 3;
|
|
266
|
+
DEFAULT_RECORD_DURABILITY_BUDGET_MS = 3e4;
|
|
267
|
+
RecordDurabilityTimeoutError = class extends Error {
|
|
268
|
+
constructor(issueId, budgetMs) {
|
|
269
|
+
super(`Durability wait for ${issueId} state exceeded ${budgetMs}ms; releasing the record lock. The mutation remains in the local record and the flush continues in the background; callers with a fallback (e.g. the review-verdict fallback and drain) reconcile through it, other writers must retry the write.`);
|
|
270
|
+
this.name = "RecordDurabilityTimeoutError";
|
|
271
|
+
}
|
|
272
|
+
};
|
|
306
273
|
}));
|
|
307
274
|
//#endregion
|
|
308
|
-
export {
|
|
275
|
+
export { updateIssueRecordForWorkspace as a, updateIssueRecord as i, clearRecordPipelineClosedOutSync as n, init_record_update as r, RecordDurabilityTimeoutError as t };
|
|
309
276
|
|
|
310
|
-
//# sourceMappingURL=record-update-
|
|
277
|
+
//# sourceMappingURL=record-update-DaOKS7Wb.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as updateIssueRecordForWorkspace, r as init_record_update } from "./record-update-DaOKS7Wb.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-DDH-02ng.js.map
|