@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
|
@@ -114,16 +114,80 @@ function validateCookiePath (path) {
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
/**
|
|
117
|
-
*
|
|
118
|
-
*
|
|
117
|
+
* <let-dig> ::= <letter> | <digit>
|
|
118
|
+
*
|
|
119
|
+
* <letter> ::= any one of the 52 alphabetic characters A through Z in
|
|
120
|
+
* upper case and a through z in lower case
|
|
121
|
+
*
|
|
122
|
+
* <digit> ::= any one of the ten digits 0 through 9r
|
|
123
|
+
*
|
|
124
|
+
* @see https://www.rfc-editor.org/rfc/rfc1034#section-3.5
|
|
125
|
+
* @param {number} code
|
|
126
|
+
*/
|
|
127
|
+
function isLetterOrDigit (code) {
|
|
128
|
+
return (
|
|
129
|
+
(code >= 0x30 && code <= 0x39) || // 0-9
|
|
130
|
+
(code >= 0x41 && code <= 0x5A) || // A-Z
|
|
131
|
+
(code >= 0x61 && code <= 0x7A) // a-z
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Validates a cookie domain against the "preferred name syntax".
|
|
137
|
+
*
|
|
138
|
+
* <domain> ::= <subdomain> | " "
|
|
139
|
+
* <subdomain> ::= <label> | <subdomain> "." <label>
|
|
140
|
+
* <label> ::= <let-dig> [ [ <ldh-str> ] <let-dig> ]
|
|
141
|
+
* <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
|
|
142
|
+
* <let-dig-hyp> ::= <let-dig> | "-"
|
|
143
|
+
*
|
|
144
|
+
* @see https://www.rfc-editor.org/rfc/rfc1034#section-3.5
|
|
145
|
+
* @see https://www.rfc-editor.org/rfc/rfc1123#section-2.1
|
|
146
|
+
* @see https://www.rfc-editor.org/rfc/rfc1035#section-2.3.4
|
|
119
147
|
* @param {string} domain
|
|
120
148
|
*/
|
|
121
149
|
function validateCookieDomain (domain) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
150
|
+
// <domain> ::= <subdomain> | " "
|
|
151
|
+
if (domain === ' ') {
|
|
152
|
+
return
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (domain.length > 255) {
|
|
156
|
+
throw new Error('Invalid cookie domain')
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
let labelLength = 0
|
|
160
|
+
|
|
161
|
+
for (let i = 0; i < domain.length; ++i) {
|
|
162
|
+
const code = domain.charCodeAt(i)
|
|
163
|
+
|
|
164
|
+
if (code === 0x2E) {
|
|
165
|
+
if (labelLength === 0) {
|
|
166
|
+
throw new Error('Invalid cookie domain')
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (domain.charCodeAt(i - 1) === 0x2D) { // "-"
|
|
170
|
+
throw new Error('Invalid cookie domain')
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
labelLength = 0
|
|
174
|
+
continue
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
if (labelLength === 0 && !isLetterOrDigit(code)) {
|
|
178
|
+
throw new Error('Invalid cookie domain')
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (!isLetterOrDigit(code) && code !== 0x2D) { // "-"
|
|
182
|
+
throw new Error('Invalid cookie domain')
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (++labelLength > 63) {
|
|
186
|
+
throw new Error('Invalid cookie domain')
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
if (labelLength === 0 || domain.charCodeAt(domain.length - 1) === 0x2D) { // "-"
|
|
127
191
|
throw new Error('Invalid cookie domain')
|
|
128
192
|
}
|
|
129
193
|
}
|
|
@@ -266,7 +330,13 @@ function stringify (cookie) {
|
|
|
266
330
|
|
|
267
331
|
const [key, ...value] = part.split('=')
|
|
268
332
|
|
|
269
|
-
|
|
333
|
+
const trimmedKey = key.trim()
|
|
334
|
+
const joinedValue = value.join('=')
|
|
335
|
+
|
|
336
|
+
validateCookieName(trimmedKey)
|
|
337
|
+
validateCookieValue(joinedValue)
|
|
338
|
+
|
|
339
|
+
out.push(`${trimmedKey}=${joinedValue}`)
|
|
270
340
|
}
|
|
271
341
|
|
|
272
342
|
return out.join('; ')
|
package/server/{orphan-proposed-reconciler-BvKkWMJQ.js → orphan-proposed-reconciler-B6vJHxtX.js}
RENAMED
|
@@ -1,37 +1,193 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
1
|
+
import { a as __toCommonJS } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
+
import { Gn as init_projects, Jn as listProjects, ar as resolveProjectFromIssueSync } from "./config-yaml-CxdwhAIA.js";
|
|
3
|
+
import { o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
|
|
4
|
+
import { M as listSessionNames, w as init_tmux } from "./tmux-CfDHob9M.js";
|
|
5
|
+
import { d as getReviewStatusSync, p as init_review_status } from "./review-status-CGvlA4o_.js";
|
|
6
|
+
import { b as init_agents, tr as getAgentState } from "./queries-C-MUZaIy.js";
|
|
7
|
+
import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-CJ6BHjcD.js";
|
|
8
|
+
import { n as init_issue_service_singleton, r as issue_service_singleton_exports } from "./issue-service-singleton-C6ZduvuY.js";
|
|
9
|
+
import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DzK385vD.js";
|
|
10
|
+
import { o as init_lifecycle, s as isXBriefFilename } from "./lifecycle-B4Xdb4cY.js";
|
|
11
|
+
import { S as init_specs, d as readPlanSync, i as findPlanSync, o as init_io, x as findSpecByIssue } from "./io-B00PBNku.js";
|
|
12
|
+
import { a as readAutoSpawnOnFinalizeFlagAsync } from "./auto-spawn-consent-CQ9Bi9q6.js";
|
|
13
|
+
import { c as init_control_settings, f as isFlywheelAutoPickupBacklog } from "./control-settings-CiqGxXnc.js";
|
|
14
|
+
import { i as loadCloisterConfig, r as init_config } from "./config-Bi3u1VK7.js";
|
|
15
|
+
import { f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead } from "./github-app-CmNk0zLU.js";
|
|
16
|
+
import { h as init_pickup, r as LEGACY_PARKED_LABELS } from "./pickup-DWhqzliO.js";
|
|
17
|
+
import { r as activeOrderBookIssues } from "./flywheel-BHx8XuMr.js";
|
|
18
|
+
import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-BehTG1be.js";
|
|
19
|
+
import { t as recordDeadEndNeedsYou } from "./dead-end-trip-D8A3msX9.js";
|
|
20
|
+
import "./spawn-planning-session-pcF-YeFE.js";
|
|
13
21
|
import { Effect } from "effect";
|
|
14
22
|
import { existsSync, readdirSync } from "fs";
|
|
15
23
|
import { join } from "path";
|
|
16
24
|
import { readFile, readdir } from "fs/promises";
|
|
17
25
|
import { exec } from "child_process";
|
|
18
26
|
import { promisify } from "util";
|
|
19
|
-
//#region ../../lib/cloister/
|
|
20
|
-
init_agents();
|
|
27
|
+
//#region ../../lib/cloister/autonomous-work-dispatch.ts
|
|
21
28
|
init_activity_logger();
|
|
29
|
+
init_tmux();
|
|
30
|
+
init_tracker_utils();
|
|
22
31
|
init_internal_token();
|
|
23
|
-
|
|
32
|
+
init_lifecycle();
|
|
24
33
|
init_review_status();
|
|
25
|
-
init_tmux();
|
|
26
34
|
init_io();
|
|
27
|
-
|
|
35
|
+
init_agents();
|
|
28
36
|
init_github_app();
|
|
29
|
-
|
|
37
|
+
init_pickup();
|
|
38
|
+
init_control_settings();
|
|
39
|
+
init_specs();
|
|
40
|
+
init_projects();
|
|
41
|
+
const RELEASE_CONTEXT_CACHE_MS = 5e3;
|
|
42
|
+
let autoPickupCache = null;
|
|
43
|
+
const activeBookCache = /* @__PURE__ */ new Map();
|
|
44
|
+
function getSharedIssues() {
|
|
45
|
+
const { getSharedIssueService } = (init_issue_service_singleton(), __toCommonJS(issue_service_singleton_exports));
|
|
46
|
+
return getSharedIssueService().getIssues();
|
|
47
|
+
}
|
|
48
|
+
async function defaultFindPlannedState(projectRoot, issueId) {
|
|
49
|
+
const entry = await Effect.runPromise(findSpecByIssue(projectRoot, issueId).pipe(Effect.catch(() => Effect.succeed(null))));
|
|
50
|
+
if (!entry) return null;
|
|
51
|
+
return {
|
|
52
|
+
status: entry.status,
|
|
53
|
+
itemCount: Array.isArray(entry.document.plan?.items) ? entry.document.plan.items.length : 0
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function isPlannedState(state) {
|
|
57
|
+
return state !== null && (state.status === "proposed" || state.status === "active") && state.itemCount > 0;
|
|
58
|
+
}
|
|
59
|
+
async function cachedAutoPickup(deps, now) {
|
|
60
|
+
if (deps.isAutoPickupBacklog) return deps.isAutoPickupBacklog();
|
|
61
|
+
if (autoPickupCache && autoPickupCache.expiresAt > now) return autoPickupCache.value;
|
|
62
|
+
const value = isFlywheelAutoPickupBacklog();
|
|
63
|
+
autoPickupCache = {
|
|
64
|
+
value,
|
|
65
|
+
expiresAt: now + RELEASE_CONTEXT_CACHE_MS
|
|
66
|
+
};
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
async function cachedActiveBookIssues(projectRoot, deps, now) {
|
|
70
|
+
if (deps.activeBookIssues) return deps.activeBookIssues(projectRoot);
|
|
71
|
+
const cached = activeBookCache.get(projectRoot);
|
|
72
|
+
if (cached && cached.expiresAt > now) return cached.value;
|
|
73
|
+
const value = await activeOrderBookIssues(projectRoot);
|
|
74
|
+
activeBookCache.set(projectRoot, {
|
|
75
|
+
value,
|
|
76
|
+
expiresAt: now + RELEASE_CONTEXT_CACHE_MS
|
|
77
|
+
});
|
|
78
|
+
return value;
|
|
79
|
+
}
|
|
80
|
+
function emptyInput(labels, planned = false) {
|
|
81
|
+
return {
|
|
82
|
+
labels,
|
|
83
|
+
planned,
|
|
84
|
+
autoPickupBacklog: false,
|
|
85
|
+
activeBookMember: false,
|
|
86
|
+
autoSpawnOnFinalizeConsent: false
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async function gatherAutonomousWorkDispatchInput(issueId, deps = {}) {
|
|
90
|
+
const normalizedIssueId = issueId.trim().toUpperCase();
|
|
91
|
+
let labels = null;
|
|
92
|
+
try {
|
|
93
|
+
const issue = (deps.getIssues ?? getSharedIssues)().find((candidate) => typeof candidate["identifier"] === "string" && candidate["identifier"].toUpperCase() === normalizedIssueId);
|
|
94
|
+
if (issue) labels = (Array.isArray(issue["labels"]) ? issue["labels"] : []).map((label) => typeof label === "string" ? label : label?.name ?? "").filter((label) => Boolean(label));
|
|
95
|
+
} catch {}
|
|
96
|
+
const labelDecision = decideAutonomousWorkDispatch({ ...emptyInput(labels, true) });
|
|
97
|
+
if (!labelDecision.allow && labelDecision.code !== "not-released") return emptyInput(labels);
|
|
98
|
+
let project = null;
|
|
99
|
+
let planned = deps.knownPlanned === true;
|
|
100
|
+
if (!planned) try {
|
|
101
|
+
project = (deps.resolveProject ?? resolveProjectFromIssueSync)(normalizedIssueId);
|
|
102
|
+
planned = Boolean(project && isPlannedState(await (deps.findPlannedState ?? defaultFindPlannedState)(project.projectPath, normalizedIssueId)));
|
|
103
|
+
} catch {
|
|
104
|
+
planned = false;
|
|
105
|
+
}
|
|
106
|
+
if (!planned) return emptyInput(labels);
|
|
107
|
+
if (new Set(labels?.map((label) => label.toLowerCase())).has("released")) return emptyInput(labels, true);
|
|
108
|
+
if (!project) try {
|
|
109
|
+
project = (deps.resolveProject ?? resolveProjectFromIssueSync)(normalizedIssueId);
|
|
110
|
+
} catch {
|
|
111
|
+
project = null;
|
|
112
|
+
}
|
|
113
|
+
const now = (deps.now ?? Date.now)();
|
|
114
|
+
const [autoPickupBacklog, activeIssues, autoSpawnOnFinalizeConsent] = await Promise.all([
|
|
115
|
+
cachedAutoPickup(deps, now).catch(() => false),
|
|
116
|
+
project ? cachedActiveBookIssues(project.projectPath, deps, now).catch(() => /* @__PURE__ */ new Set()) : /* @__PURE__ */ new Set(),
|
|
117
|
+
Promise.resolve((deps.readAutoSpawnConsent ?? readAutoSpawnOnFinalizeFlagAsync)(normalizedIssueId)).catch(() => false)
|
|
118
|
+
]);
|
|
119
|
+
return {
|
|
120
|
+
labels,
|
|
121
|
+
planned: true,
|
|
122
|
+
autoPickupBacklog,
|
|
123
|
+
activeBookMember: activeIssues.has(normalizedIssueId),
|
|
124
|
+
autoSpawnOnFinalizeConsent
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function decideAutonomousWorkDispatch(input) {
|
|
128
|
+
if (input.labels === null) return {
|
|
129
|
+
allow: false,
|
|
130
|
+
code: "labels-unavailable",
|
|
131
|
+
reason: "Autonomous work dispatch was refused because tracker labels are unavailable, so ready, released, parked, vetoed, objection, and epic state cannot be verified. Restore label access or run pan start manually."
|
|
132
|
+
};
|
|
133
|
+
const labels = new Set(input.labels.map((label) => label.toLowerCase()));
|
|
134
|
+
const hasLabel = (label) => labels.has(label);
|
|
135
|
+
if (hasLabel("parked") || LEGACY_PARKED_LABELS.some(hasLabel)) return {
|
|
136
|
+
allow: false,
|
|
137
|
+
code: "parked",
|
|
138
|
+
reason: "Autonomous work dispatch was refused because the issue is parked. Remove the parked label before allowing autonomous work, or run pan start manually."
|
|
139
|
+
};
|
|
140
|
+
if (hasLabel("vetoed")) return {
|
|
141
|
+
allow: false,
|
|
142
|
+
code: "vetoed",
|
|
143
|
+
reason: "Autonomous work dispatch was refused because the issue is vetoed. Remove the veto before allowing autonomous work, or run pan start manually."
|
|
144
|
+
};
|
|
145
|
+
if (hasLabel("objection")) return {
|
|
146
|
+
allow: false,
|
|
147
|
+
code: "objection",
|
|
148
|
+
reason: "Autonomous work dispatch was refused because the issue has an open objection. Resolve the objection before allowing autonomous work, or run pan start manually."
|
|
149
|
+
};
|
|
150
|
+
if (hasLabel("epic")) return {
|
|
151
|
+
allow: false,
|
|
152
|
+
code: "epic",
|
|
153
|
+
reason: "Autonomous work dispatch was refused because the issue is an epic container. Start one of its child issues instead."
|
|
154
|
+
};
|
|
155
|
+
if (!hasLabel("ready")) return {
|
|
156
|
+
allow: false,
|
|
157
|
+
code: "not-ready",
|
|
158
|
+
reason: "Autonomous work dispatch was refused because the issue is not ready. Add the ready label before allowing autonomous work, or run pan start manually."
|
|
159
|
+
};
|
|
160
|
+
if (!input.planned) return {
|
|
161
|
+
allow: false,
|
|
162
|
+
code: "not-planned",
|
|
163
|
+
reason: "Autonomous work dispatch was refused because no active implementation plan with work items is available. Complete planning or run pan start manually."
|
|
164
|
+
};
|
|
165
|
+
const releaseSource = hasLabel("released") ? "released-label" : input.autoPickupBacklog ? "auto-pickup" : input.activeBookMember ? "active-order-book" : input.autoSpawnOnFinalizeConsent ? "planning-consent" : null;
|
|
166
|
+
if (!releaseSource) return {
|
|
167
|
+
allow: false,
|
|
168
|
+
code: "not-released",
|
|
169
|
+
reason: "Autonomous work dispatch was refused because the issue is not released and no release override applies. Add the released label, enable auto-pickup, include the issue in the active order book, or launch planning with auto-start; alternatively, run pan start manually."
|
|
170
|
+
};
|
|
171
|
+
return {
|
|
172
|
+
allow: true,
|
|
173
|
+
releaseSource
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
//#endregion
|
|
177
|
+
//#region ../../lib/cloister/orphan-proposed-reconciler.ts
|
|
178
|
+
/**
|
|
179
|
+
* Reconciles proposed specs only after the shared autonomous-work pickup gate
|
|
180
|
+
* passes; explicit planning auto-start consent is a release source, not a bypass
|
|
181
|
+
* for readiness, tracker-label availability, or blocker labels.
|
|
182
|
+
*/
|
|
183
|
+
init_projects();
|
|
30
184
|
init_config();
|
|
31
185
|
init_issue_closed();
|
|
32
186
|
const DEFAULT_ATTEMPT_INTERVAL_MS = 300 * 1e3;
|
|
187
|
+
const MAX_PICKUP_REFUSAL_REASONS = 512;
|
|
33
188
|
const execAsync = promisify(exec);
|
|
34
189
|
const attemptCooldowns = /* @__PURE__ */ new Map();
|
|
190
|
+
const pickupRefusalReasons = /* @__PURE__ */ new Map();
|
|
35
191
|
const terminalClosedIssueIds = /* @__PURE__ */ new Set();
|
|
36
192
|
let scanInFlight = false;
|
|
37
193
|
function hasReviewPipelinePresence(status) {
|
|
@@ -90,8 +246,17 @@ async function defaultHasOpenPrForBranch(projectPath, issueId) {
|
|
|
90
246
|
const branch = `feature/${issueId.toLowerCase()}`;
|
|
91
247
|
try {
|
|
92
248
|
const resolved = resolveGitHubIssueSync(issueId);
|
|
93
|
-
if (
|
|
94
|
-
|
|
249
|
+
if (!resolved.isGitHub) {
|
|
250
|
+
logReconcilerDiagnostic("open-pr-check-skipped", {
|
|
251
|
+
projectPath,
|
|
252
|
+
issueId,
|
|
253
|
+
branch,
|
|
254
|
+
reason: "non-github-tracker"
|
|
255
|
+
});
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
if (isGitHubAppConfigured()) return (await Effect.runPromise(listPullRequestsForHead(resolved.owner, resolved.repo, branch, "open"))).length > 0;
|
|
259
|
+
const result = await execAsync(`gh pr list --repo ${resolved.owner}/${resolved.repo} --head ${branch} --state open --json number --limit 1`, { cwd: projectPath });
|
|
95
260
|
const stdout = typeof result === "string" ? result : result.stdout;
|
|
96
261
|
const prs = JSON.parse(stdout ?? "[]");
|
|
97
262
|
return Array.isArray(prs) && prs.length > 0;
|
|
@@ -166,7 +331,7 @@ function classifySpawnSkip(status, body) {
|
|
|
166
331
|
if (status === 422 && /already closed|closed issue|cannot start an agent for a closed issue/i.test(error)) return "closed-issue";
|
|
167
332
|
return "spawn-failed";
|
|
168
333
|
}
|
|
169
|
-
async function spawnWorkAgentThroughAgentsEndpoint(issueId, dashboardOrigin = internalDashboardOrigin()) {
|
|
334
|
+
async function spawnWorkAgentThroughAgentsEndpoint(issueId, dashboardOrigin = internalDashboardOrigin(), autoSpawnConsentRequired = false) {
|
|
170
335
|
const internalToken = getInternalTokenSync();
|
|
171
336
|
const response = await fetch(new URL("/api/agents", dashboardOrigin), {
|
|
172
337
|
method: "POST",
|
|
@@ -177,13 +342,16 @@ async function spawnWorkAgentThroughAgentsEndpoint(issueId, dashboardOrigin = in
|
|
|
177
342
|
},
|
|
178
343
|
body: JSON.stringify({
|
|
179
344
|
issueId,
|
|
180
|
-
role: "work"
|
|
345
|
+
role: "work",
|
|
346
|
+
startedBy: "orphan-proposed-reconciler",
|
|
347
|
+
autoSpawnConsentRequired
|
|
181
348
|
})
|
|
182
349
|
});
|
|
183
350
|
const body = await response.json().catch(() => ({}));
|
|
184
351
|
const agentId = typeof body["agentId"] === "string" ? body["agentId"] : `agent-${issueId.toLowerCase()}`;
|
|
185
352
|
if (response.ok && body["success"] !== false) return {
|
|
186
353
|
spawned: true,
|
|
354
|
+
...body["startingContainers"] === true ? { queued: true } : {},
|
|
187
355
|
agentId
|
|
188
356
|
};
|
|
189
357
|
return {
|
|
@@ -208,7 +376,8 @@ async function triggerRebuildAndStart(issueId, dashboardOrigin = internalDashboa
|
|
|
208
376
|
"content-type": "application/json",
|
|
209
377
|
origin: dashboardOrigin,
|
|
210
378
|
...internalToken ? { [INTERNAL_TOKEN_HEADER]: internalToken } : {}
|
|
211
|
-
}
|
|
379
|
+
},
|
|
380
|
+
body: JSON.stringify({ startedBy: "workspace-rebuild-recovery" })
|
|
212
381
|
});
|
|
213
382
|
const body = await response.json().catch(() => ({}));
|
|
214
383
|
if (response.ok && body["success"] !== false) return { triggered: true };
|
|
@@ -246,10 +415,30 @@ function emitReconcilerActivity(level, message, details = {}, issueId = "ALL") {
|
|
|
246
415
|
function logReconcilerDiagnostic(kind, info = {}) {
|
|
247
416
|
console.debug(`[orphan-proposed-reconciler] ${kind}`, info);
|
|
248
417
|
}
|
|
418
|
+
async function recordPickupRefusal(issueId, now, decision) {
|
|
419
|
+
const reason = `pickup-gate:${decision.code}`;
|
|
420
|
+
logReconcilerDiagnostic("spawn-skipped", {
|
|
421
|
+
issueId,
|
|
422
|
+
reason
|
|
423
|
+
});
|
|
424
|
+
attemptCooldowns.set(issueId, now);
|
|
425
|
+
if (pickupRefusalReasons.get(issueId) !== decision.reason) {
|
|
426
|
+
if (!pickupRefusalReasons.has(issueId) && pickupRefusalReasons.size >= MAX_PICKUP_REFUSAL_REASONS) {
|
|
427
|
+
const oldestIssueId = pickupRefusalReasons.keys().next().value;
|
|
428
|
+
if (oldestIssueId) pickupRefusalReasons.delete(oldestIssueId);
|
|
429
|
+
}
|
|
430
|
+
pickupRefusalReasons.set(issueId, decision.reason);
|
|
431
|
+
await recordDeadEndNeedsYou(issueId, "orphan-proposed-pickup-gate", "proposed", decision.reason);
|
|
432
|
+
}
|
|
433
|
+
return [`Skipped orphan proposed spec ${issueId}: ${reason}`];
|
|
434
|
+
}
|
|
435
|
+
async function defaultEvaluatePickupGate(issueId) {
|
|
436
|
+
return decideAutonomousWorkDispatch(await gatherAutonomousWorkDispatchInput(issueId, { knownPlanned: true }));
|
|
437
|
+
}
|
|
249
438
|
/**
|
|
250
|
-
* PAN-1908: reactive orphan-proposed handler. When a spec reaches `proposed
|
|
251
|
-
*
|
|
252
|
-
* without scanning all project specs.
|
|
439
|
+
* PAN-1908: reactive orphan-proposed handler. When a spec reaches `proposed`,
|
|
440
|
+
* the autonomous-work pickup gate allows it, and no work agent is
|
|
441
|
+
* running/starting, spawn a work agent without scanning all project specs.
|
|
253
442
|
*/
|
|
254
443
|
async function handleOrphanProposedSpec(issueId, options = {}) {
|
|
255
444
|
const upperIssueId = issueId.trim().toUpperCase();
|
|
@@ -315,8 +504,20 @@ async function handleOrphanProposedSpec(issueId, options = {}) {
|
|
|
315
504
|
});
|
|
316
505
|
return [];
|
|
317
506
|
}
|
|
507
|
+
let pickupGate;
|
|
508
|
+
try {
|
|
509
|
+
pickupGate = await (options.evaluatePickupGate ?? defaultEvaluatePickupGate)(upperIssueId);
|
|
510
|
+
} catch (error) {
|
|
511
|
+
pickupGate = {
|
|
512
|
+
allow: false,
|
|
513
|
+
code: "labels-unavailable",
|
|
514
|
+
reason: `Autonomous work dispatch was refused because pickup evaluation failed: ${error instanceof Error ? error.message : String(error)}`
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
if (!pickupGate.allow) return recordPickupRefusal(upperIssueId, now, pickupGate);
|
|
518
|
+
pickupRefusalReasons.delete(upperIssueId);
|
|
318
519
|
const agentId = `agent-${issueLower}`;
|
|
319
|
-
const agentState = await Effect.runPromise(getAgentState(agentId).pipe(Effect.catch(() => Effect.succeed(null))));
|
|
520
|
+
const agentState = options.getAgentStateForIssue ? await options.getAgentStateForIssue(agentId) : await Effect.runPromise(getAgentState(agentId).pipe(Effect.catch(() => Effect.succeed(null))));
|
|
320
521
|
if (agentState?.status === "starting" || agentState?.status === "running") {
|
|
321
522
|
logReconcilerDiagnostic("spawn-skipped", {
|
|
322
523
|
issueId: upperIssueId,
|
|
@@ -331,7 +532,7 @@ async function handleOrphanProposedSpec(issueId, options = {}) {
|
|
|
331
532
|
});
|
|
332
533
|
return [];
|
|
333
534
|
}
|
|
334
|
-
if (hasIssueScopedSession(await Effect.runPromise(listSessionNames().pipe(Effect.catch(() => Effect.succeed([])))), agentId)) {
|
|
535
|
+
if (hasIssueScopedSession(options.tmuxSessionNames ?? await Effect.runPromise(listSessionNames().pipe(Effect.catch(() => Effect.succeed([])))), agentId)) {
|
|
335
536
|
logReconcilerDiagnostic("spawn-skipped", {
|
|
336
537
|
issueId: upperIssueId,
|
|
337
538
|
reason: "issue-scoped-session"
|
|
@@ -385,15 +586,17 @@ async function handleOrphanProposedSpec(issueId, options = {}) {
|
|
|
385
586
|
}
|
|
386
587
|
attemptCooldowns.set(upperIssueId, now);
|
|
387
588
|
try {
|
|
388
|
-
const
|
|
589
|
+
const autoSpawnConsentRequired = pickupGate.releaseSource === "planning-consent";
|
|
590
|
+
const spawn = await (options.spawnWorkAgent ?? ((id, required) => spawnWorkAgentThroughAgentsEndpoint(id, options.dashboardOrigin, required)))(upperIssueId, autoSpawnConsentRequired);
|
|
389
591
|
if (spawn.spawned) {
|
|
390
|
-
emitReconcilerActivity("success", `Started work agent for ${upperIssueId} — proposed spec had tasks but no running agent`, {
|
|
592
|
+
emitReconcilerActivity("success", spawn.queued ? `Queued container startup for ${upperIssueId} before work-agent spawn` : `Started work agent for ${upperIssueId} — proposed spec had tasks but no running agent`, {
|
|
391
593
|
issueId: upperIssueId,
|
|
392
594
|
agentId: spawn.agentId,
|
|
595
|
+
queued: spawn.queued === true,
|
|
393
596
|
projectKey,
|
|
394
597
|
projectPath
|
|
395
598
|
}, upperIssueId);
|
|
396
|
-
return [`Spawned work agent for orphan proposed spec ${upperIssueId}`];
|
|
599
|
+
return [spawn.queued ? `Queued container startup for orphan proposed spec ${upperIssueId}` : `Spawned work agent for orphan proposed spec ${upperIssueId}`];
|
|
397
600
|
}
|
|
398
601
|
const reason = spawn.skippedReason ?? "spawn-failed";
|
|
399
602
|
if (reason === "closed-issue") {
|
|
@@ -444,6 +647,8 @@ async function reconcileOrphanProposedSpecs(options = {}) {
|
|
|
444
647
|
try {
|
|
445
648
|
const actions = [];
|
|
446
649
|
const candidates = await findOrphanProposedSpecsForReconciler(options);
|
|
650
|
+
const liveCandidateIds = new Set(candidates.map((candidate) => candidate.issueId));
|
|
651
|
+
for (const issueId of pickupRefusalReasons.keys()) if (!liveCandidateIds.has(issueId)) pickupRefusalReasons.delete(issueId);
|
|
447
652
|
for (const candidate of candidates) {
|
|
448
653
|
let planDoc;
|
|
449
654
|
try {
|
|
@@ -458,6 +663,7 @@ async function reconcileOrphanProposedSpecs(options = {}) {
|
|
|
458
663
|
const result = await handleOrphanProposedSpec(candidate.issueId, {
|
|
459
664
|
spawnWorkAgent: options.spawnWorkAgent,
|
|
460
665
|
hasOpenPrForBranch: options.hasOpenPrForBranch,
|
|
666
|
+
evaluatePickupGate: options.evaluatePickupGate,
|
|
461
667
|
dashboardOrigin: options.dashboardOrigin,
|
|
462
668
|
config: {
|
|
463
669
|
enabled: true,
|
|
@@ -470,7 +676,9 @@ async function reconcileOrphanProposedSpecs(options = {}) {
|
|
|
470
676
|
spec: {
|
|
471
677
|
path: candidate.specPath,
|
|
472
678
|
doc: planDoc
|
|
473
|
-
}
|
|
679
|
+
},
|
|
680
|
+
tmuxSessionNames: options.tmuxSessionNames,
|
|
681
|
+
getAgentStateForIssue: options.getAgentStateForIssue
|
|
474
682
|
});
|
|
475
683
|
actions.push(...result);
|
|
476
684
|
}
|
|
@@ -480,6 +688,6 @@ async function reconcileOrphanProposedSpecs(options = {}) {
|
|
|
480
688
|
}
|
|
481
689
|
}
|
|
482
690
|
//#endregion
|
|
483
|
-
export { spawnWorkAgentThroughAgentsEndpoint as a, reconcileOrphanProposedSpecs as i, handleOrphanProposedSpec as n, triggerRebuildAndStart as o, hasReviewPipelinePresence as r, findOrphanProposedSpecsForReconciler as t };
|
|
691
|
+
export { spawnWorkAgentThroughAgentsEndpoint as a, gatherAutonomousWorkDispatchInput as c, reconcileOrphanProposedSpecs as i, handleOrphanProposedSpec as n, triggerRebuildAndStart as o, hasReviewPipelinePresence as r, decideAutonomousWorkDispatch as s, findOrphanProposedSpecsForReconciler as t };
|
|
484
692
|
|
|
485
|
-
//# sourceMappingURL=orphan-proposed-reconciler-
|
|
693
|
+
//# sourceMappingURL=orphan-proposed-reconciler-B6vJHxtX.js.map
|
package/server/{orphan-proposed-reconciler-CTSGcK8p.js → orphan-proposed-reconciler-DcgTPPFY.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as handleOrphanProposedSpec } from "./orphan-proposed-reconciler-
|
|
1
|
+
import { n as handleOrphanProposedSpec } from "./orphan-proposed-reconciler-B6vJHxtX.js";
|
|
2
2
|
export { handleOrphanProposedSpec };
|
package/server/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@overdeck/desktop-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.47.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@overdeck/desktop-server",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.47.0",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@effect/platform-node": "4.0.0-beta.73",
|
|
12
12
|
"@google-cloud/speech": "7.3.1",
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
"node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared": {
|
|
40
|
-
"version": "4.0.0-beta.
|
|
41
|
-
"resolved": "https://registry.npmjs.org/@effect/platform-node-shared/-/platform-node-shared-4.0.0-beta.
|
|
42
|
-
"integrity": "sha512-
|
|
40
|
+
"version": "4.0.0-beta.102",
|
|
41
|
+
"resolved": "https://registry.npmjs.org/@effect/platform-node-shared/-/platform-node-shared-4.0.0-beta.102.tgz",
|
|
42
|
+
"integrity": "sha512-gVd793I72MrkX4dXo7eYtRKfNj0RW4eMRfVEKEJI16h2+mBDCzQ+gqMrog2hSTHQnaIbvbYShNQ4TVGuRCYZeQ==",
|
|
43
43
|
"license": "MIT",
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@types/ws": "^8.18.1",
|
|
@@ -49,13 +49,13 @@
|
|
|
49
49
|
"node": ">=18.0.0"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"effect": "^4.0.0-beta.
|
|
52
|
+
"effect": "^4.0.0-beta.102"
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
"node_modules/@google-cloud/common": {
|
|
56
|
-
"version": "6.0
|
|
57
|
-
"resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-6.0.
|
|
58
|
-
"integrity": "sha512-
|
|
56
|
+
"version": "6.1.0",
|
|
57
|
+
"resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-6.1.0.tgz",
|
|
58
|
+
"integrity": "sha512-Ohjxjvusr65+SiEVBrilpyn1ir9CM8ZqWjcf7bA8ph1GCunxI6bbwtcl7iGl67A7Lr4Nz7WpNzITNETwggc7pw==",
|
|
59
59
|
"license": "Apache-2.0",
|
|
60
60
|
"dependencies": {
|
|
61
61
|
"@google-cloud/projectify": "^4.0.0",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"arrify": "^2.0.0",
|
|
64
64
|
"duplexify": "^4.1.3",
|
|
65
65
|
"extend": "^3.0.2",
|
|
66
|
-
"google-auth-library": "^10.
|
|
66
|
+
"google-auth-library": "^10.6.2",
|
|
67
67
|
"html-entities": "^2.5.2",
|
|
68
68
|
"retry-request": "^8.0.0",
|
|
69
69
|
"teeny-request": "^10.0.0"
|
|
@@ -446,9 +446,9 @@
|
|
|
446
446
|
}
|
|
447
447
|
},
|
|
448
448
|
"node_modules/@types/node": {
|
|
449
|
-
"version": "26.1.
|
|
450
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.
|
|
451
|
-
"integrity": "sha512-
|
|
449
|
+
"version": "26.1.2",
|
|
450
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.2.tgz",
|
|
451
|
+
"integrity": "sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==",
|
|
452
452
|
"license": "MIT",
|
|
453
453
|
"dependencies": {
|
|
454
454
|
"undici-types": "~8.3.0"
|
|
@@ -1033,9 +1033,9 @@
|
|
|
1033
1033
|
}
|
|
1034
1034
|
},
|
|
1035
1035
|
"node_modules/gaxios": {
|
|
1036
|
-
"version": "7.
|
|
1037
|
-
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.
|
|
1038
|
-
"integrity": "sha512-
|
|
1036
|
+
"version": "7.3.0",
|
|
1037
|
+
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.3.0.tgz",
|
|
1038
|
+
"integrity": "sha512-RB5vLV+vvQeoFPCX4QMK6/hjVkbIamPp1QSUD0CiZcnj12qbpiL+pLbYtgD+oZkWl0tl9z+o2Utp+MpM3QRhBA==",
|
|
1039
1039
|
"license": "Apache-2.0",
|
|
1040
1040
|
"dependencies": {
|
|
1041
1041
|
"extend": "^3.0.2",
|
|
@@ -1091,9 +1091,9 @@
|
|
|
1091
1091
|
}
|
|
1092
1092
|
},
|
|
1093
1093
|
"node_modules/google-auth-library": {
|
|
1094
|
-
"version": "10.9.
|
|
1095
|
-
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.9.
|
|
1096
|
-
"integrity": "sha512-
|
|
1094
|
+
"version": "10.9.1",
|
|
1095
|
+
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.9.1.tgz",
|
|
1096
|
+
"integrity": "sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw==",
|
|
1097
1097
|
"license": "Apache-2.0",
|
|
1098
1098
|
"dependencies": {
|
|
1099
1099
|
"base64-js": "^1.3.0",
|
|
@@ -1108,9 +1108,9 @@
|
|
|
1108
1108
|
}
|
|
1109
1109
|
},
|
|
1110
1110
|
"node_modules/google-gax": {
|
|
1111
|
-
"version": "5.0.
|
|
1112
|
-
"resolved": "https://registry.npmjs.org/google-gax/-/google-gax-5.0.
|
|
1113
|
-
"integrity": "sha512-
|
|
1111
|
+
"version": "5.0.8",
|
|
1112
|
+
"resolved": "https://registry.npmjs.org/google-gax/-/google-gax-5.0.8.tgz",
|
|
1113
|
+
"integrity": "sha512-M4vpZcXQIC1gqIVGQ7eaU3jXQA6zecStyTXu514TYfThlgSurYJOxHZo9fzU6hAgwPWvuEynAVHWyaIk80VeEA==",
|
|
1114
1114
|
"license": "Apache-2.0",
|
|
1115
1115
|
"dependencies": {
|
|
1116
1116
|
"@grpc/grpc-js": "^1.12.6",
|
|
@@ -1646,9 +1646,9 @@
|
|
|
1646
1646
|
}
|
|
1647
1647
|
},
|
|
1648
1648
|
"node_modules/retry-request": {
|
|
1649
|
-
"version": "8.0.
|
|
1650
|
-
"resolved": "https://registry.npmjs.org/retry-request/-/retry-request-8.0.
|
|
1651
|
-
"integrity": "sha512-
|
|
1649
|
+
"version": "8.0.4",
|
|
1650
|
+
"resolved": "https://registry.npmjs.org/retry-request/-/retry-request-8.0.4.tgz",
|
|
1651
|
+
"integrity": "sha512-pI6/7eabUYkZxamkOq0g0uMxKLLGnjzhefY+vL8bVXag5rto4OU2YBTPytWLuHH7aEKD6fn7kJycQfid0Mwnkw==",
|
|
1652
1652
|
"license": "MIT",
|
|
1653
1653
|
"dependencies": {
|
|
1654
1654
|
"extend": "^3.0.2",
|
|
@@ -1938,9 +1938,9 @@
|
|
|
1938
1938
|
"license": "MIT"
|
|
1939
1939
|
},
|
|
1940
1940
|
"node_modules/teeny-request": {
|
|
1941
|
-
"version": "10.1.
|
|
1942
|
-
"resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-10.1.
|
|
1943
|
-
"integrity": "sha512-
|
|
1941
|
+
"version": "10.1.4",
|
|
1942
|
+
"resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-10.1.4.tgz",
|
|
1943
|
+
"integrity": "sha512-R1Cg4Vu0UULeDfHL/kjABLaTW++9yD/B6n2g48y5dJ04hsEaxcfmAqbNDzNsbqAYJyIpZafjklLG9YxRu9uzOg==",
|
|
1944
1944
|
"license": "Apache-2.0",
|
|
1945
1945
|
"dependencies": {
|
|
1946
1946
|
"http-proxy-agent": "^7.0.0",
|
|
@@ -1962,9 +1962,9 @@
|
|
|
1962
1962
|
}
|
|
1963
1963
|
},
|
|
1964
1964
|
"node_modules/undici": {
|
|
1965
|
-
"version": "8.
|
|
1966
|
-
"resolved": "https://registry.npmjs.org/undici/-/undici-8.
|
|
1967
|
-
"integrity": "sha512-
|
|
1965
|
+
"version": "8.9.0",
|
|
1966
|
+
"resolved": "https://registry.npmjs.org/undici/-/undici-8.9.0.tgz",
|
|
1967
|
+
"integrity": "sha512-aWZpUj7XoGonMClx4gdDRfgBjqeA+F473aDmROQQbM9n6PRfK/u1q/a0X4wMTgcHfT8H6fpbt98PFuDUwFg2YA==",
|
|
1968
1968
|
"license": "MIT",
|
|
1969
1969
|
"engines": {
|
|
1970
1970
|
"node": ">=22.19.0"
|