@overdeck/desktop 0.45.23 → 0.46.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 +34 -0
- package/package.json +1 -1
- package/server/{acceptance-criteria-DOA0KgXx.js → acceptance-criteria-CCwFGICj.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-BBu6DSNm.js → advancing-selfheal-De1L-Sb4.js} +6 -6
- package/server/{agent-gc-BV1q_2EV.js → agent-gc-CBULruzm.js} +5 -5
- package/server/agent-state-VQk8fY9F.js +3 -0
- package/server/{agent-state-service-HoK8U4jW.js → agent-state-service-BlnSkRFA.js} +5 -5
- package/server/{agent-state-service-CnzFKSAQ.js → agent-state-service-hZpxIw1E.js} +1 -1
- package/server/agents-BKKkxKgK.js +3 -0
- package/server/{agents-B4Bjbkfv.js → agents-C5rWYhb6.js} +4 -4
- package/server/archive-planning-0FJ6Xd3b.js +2 -0
- package/server/{archive-planning-DYrYojxl.js → archive-planning-C0lAbNB_.js} +16 -24
- package/server/{artifact-index-jobs-C-xy7Z5v.js → artifact-index-jobs-ug6ZxIP5.js} +2 -2
- package/server/assemble-DnffNpOo.js +339 -0
- package/server/{backlog-auto-trigger-GtG71X8H.js → backlog-auto-trigger-Dh-i9PQf.js} +3 -3
- package/server/{behavior-B_-4EKF3.js → behavior-CfIg6pKp.js} +2 -2
- package/server/bridge-pool-patrol-CUFmjVDN.js +136 -0
- package/server/{briefing-freshness-DWdW7vUm.js → briefing-freshness-DHmCSLar.js} +2 -2
- package/server/{build-info-DgTqZkL5.js → build-info-BP160gU7.js} +1 -1
- package/server/{build-info-BT096lEl.js → build-info-CuFfxZxp.js} +5 -3
- package/server/{checkpoint-manager-DDqcGyu8.js → checkpoint-manager-DEWD82qK.js} +2 -2
- package/server/{checkpoint-manager-B7Bt29J0.js → checkpoint-manager-Dxh0FYsv.js} +1 -1
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-C-AXLfYT.js → checkpoints-CZvbtLnr.js} +2 -2
- package/server/{checkpoints-CpgCjAlN.js → checkpoints-DMTgXuLG.js} +1 -1
- package/server/{claude-hooks-provision-C8wdRnN1.js → claude-hooks-provision-CN-xo-do.js} +1 -1
- package/server/{claude-hooks-provision-but-_qGY.js → claude-hooks-provision-fvy4RD2b.js} +13 -2
- package/server/{claude-permissions-H_5wHQZQ.js → claude-permissions-CN0cSCPp.js} +2 -2
- package/server/{claude-settings-overlay-CbSz0Dvb.js → claude-settings-overlay-CJn35FHQ.js} +2 -2
- package/server/{claude-settings-overlay-BTENVmYf.js → claude-settings-overlay-Dabi9slj.js} +1 -1
- package/server/cli-DmXETsw-.js +3 -0
- package/server/{cli-vBeXbPrq.js → cli-oCWYA1pE.js} +9 -9
- package/server/{cliproxy-Bgb2XCqi.js → cliproxy-C8mB3KuB.js} +2 -2
- package/server/{cliproxy-DW0V86F8.js → cliproxy-PGwTX_o8.js} +1 -1
- package/server/{close-issue-Dn_4c4G8.js → close-issue-D5MF5GqF.js} +5 -5
- package/server/{closed-issue-reaper-CWpY2uBw.js → closed-issue-reaper-CJ24u0Zt.js} +1 -1
- package/server/{closed-issue-reaper-hANY_ehE.js → closed-issue-reaper-Cltx86x5.js} +37 -16
- package/server/{codex-Dg7Is5yb.js → codex-BdEsUFWh.js} +1 -1
- package/server/{codex-TmSi-yTv.js → codex-Drlf5Xhf.js} +37 -8
- package/server/{codex-parser-C4gSH-IR.js → codex-parser-DpB89Vqa.js} +2 -2
- package/server/compaction-continuation-K2AxQX4H.js +200 -0
- package/server/{config-DjLOdbgT.js → config-B2IMcBxx.js} +4 -3
- package/server/{config-DUIhMN_T.js → config-DV-grfQc.js} +1 -1
- package/server/{config-CCvjQf27.js → config-Dr3pW6w6.js} +2 -2
- package/server/{config-yaml-DvyMuOle.js → config-yaml-CmOPzmBb.js} +290 -22
- package/server/{conflict-gate-CmrYpa47.js → conflict-gate-B9cN3SBi.js} +4 -4
- package/server/{conflict-gate-BSJkNTdp.js → conflict-gate-Dh754uyA.js} +1 -1
- package/server/context-layers-D6LZo3l1.js +4 -0
- package/server/context-layers-dR5YxHYB.js +37 -0
- package/server/{control-settings-aP1ANIlI.js → control-settings-C7DUehE1.js} +49 -19
- package/server/{conversation-compaction-CNbTLB86.js → conversation-compaction-BoqdDXWF.js} +8 -8
- package/server/{conversation-compaction-DiG5zWQq.js → conversation-compaction-Dj4FAKoZ.js} +1 -1
- package/server/{conversation-service-Du-MTNpJ.js → conversation-service-5aCnq1zR.js} +331 -20
- package/server/conversation-service-BCxl4f8Z.js +3 -0
- package/server/{conversations-DbOs1e9Q.js → conversations-BUpYsOZg.js} +5 -5
- package/server/{conversations-6mPANqvL.js → conversations-C34dyIb9.js} +1 -1
- package/server/{cost-Ca0YTWDw.js → cost-Bgcub5kW.js} +12 -2
- package/server/{cost-CW4WSe72.js → cost-CvxRrucd.js} +3 -3
- package/server/{cost-sync-C0VdGme1.js → cost-sync-Dv3LUaNW.js} +3 -3
- package/server/{dag-CdOjJVDT.js → dag-ombYYt4s.js} +2 -2
- package/server/{dangerous-git-ops-CT-IypG3.js → dangerous-git-ops-BcJPC5Rr.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/deacon-DrXqT9LQ.js +4 -0
- package/server/{deacon-pRnyD5w9.js → deacon-hi9KLPLT.js} +2998 -2659
- package/server/{deacon-nudge-log-Bjg8U4Y9.js → deacon-nudge-log-BNBebzeL.js} +3 -3
- package/server/deacon-pending-lifecycle-Cpk0k7Hi.js +33 -0
- package/server/{deacon-swarm-DftYRDo8.js → deacon-swarm-DBxUaO-A.js} +13 -13
- package/server/deacon-swarm-I2JfX5Tg.js +2 -0
- package/server/deacon.js +14 -19
- package/server/dead-end-trip-CQcP70ND.js +13 -0
- package/server/delivery-Da0zEMY4.js +3 -0
- package/server/{deploy-patrol-Bjsho_ha.js → deploy-patrol-Df-Tmaq0.js} +69 -18
- package/server/deploy-queue-9SrhZR63.js +3 -0
- package/server/deploy-queue-UjKGYsDe.js +169 -0
- package/server/deploy-window-jOiPRHL0.js +3 -0
- package/server/{deploy-window-DeP_OIRk.js → deploy-window-rpqpWqHA.js} +40 -16
- package/server/{dev-supervisor-BpMoHlkR.js → dev-supervisor-CC46Ig8q.js} +2 -2
- package/server/{devcontainer-renderer-CtUgrVKW.js → devcontainer-renderer-68CSCRnu.js} +3 -3
- package/server/{dist-DyRx4cI7.js → dist-CJy72uEg.js} +1 -1
- package/server/dist-DSlxIU1H.js +3 -0
- package/server/{dist-src-BSoS7mkd.js → dist-src-Bik83hFi.js} +1 -1
- package/server/docker-BMVTSFL5.js +3 -0
- package/server/{docker-BK7HIcBj.js → docker-Dam7mbIB.js} +2 -2
- package/server/{dod-BrSfUHm0.js → dod-Dar-yheg.js} +8 -4
- package/server/durable-review-pipeline-CGZ5QBxh.js +17 -0
- package/server/durable-review-pipeline-jpgCJZFp.js +3 -0
- package/server/{ensure-devcontainer-DseivYEy.js → ensure-devcontainer-B057YA81.js} +4 -4
- package/server/{ensure-devcontainer-DRqaAkBR.js → ensure-devcontainer-C98V8yW-.js} +1 -1
- package/server/{esm-shims-CbI3BVkl.js → esm-shims-Br9BPdkR.js} +1 -1
- package/server/{event-store-Cr5PQwFC.js → event-store-ELqkVOn0.js} +1 -1
- package/server/{event-store-tdiY5eDZ.js → event-store-zY5MJHgF.js} +23 -4
- package/server/{events-CvvGK6LT.js → events-D6pyqhzM.js} +1 -1
- package/server/{events-CC1dgUpx.js → events-D9PR1IC0.js} +3 -3
- package/server/{factory-CynerjXO.js → factory-CRoOpGsF.js} +5 -5
- package/server/{feature-registry-population-B0pmAz0a.js → feature-registry-population--YUXU999.js} +4 -4
- package/server/{feature-registry-storage-_wUBRD3J.js → feature-registry-storage-BORBTo0y.js} +2 -2
- package/server/{features-Dhxz-wLc.js → features--nFkJY8v.js} +2 -2
- package/server/{feedback-target-iygZwmMc.js → feedback-target-C0ZzyHvU.js} +1 -1
- package/server/{feedback-target-CPS15Vte.js → feedback-target-Dt9BsapX.js} +8 -8
- package/server/{feedback-writer-C9b6ccN1.js → feedback-writer-BG0RUZiu.js} +5 -5
- package/server/{feedback-writer-qmiMbqTZ.js → feedback-writer-D1fm-5Z8.js} +1 -1
- package/server/flywheel-BekukH4i.js +2 -0
- package/server/flywheel-BiT3odRb.js +1092 -0
- package/server/flywheel-CLVB55Be.js +478 -0
- package/server/flywheel-merge-order-BJv1DZz1.js +462 -0
- package/server/flywheel-merge-order-BKw9o6ku.js +2 -0
- package/server/forge-CZbSg6Ds.js +383 -0
- package/server/forge-DK3blQb_.js +3 -0
- package/server/{from-CJ_aH5jD.js → from-D_4_dk7i.js} +1 -1
- package/server/{fts-db-CKgg0VKg.js → fts-db-BeOomFa-.js} +2 -2
- package/server/{fts-operations-BrL_VTRr.js → fts-operations-BdewJ_g9.js} +2 -2
- package/server/git-utils-CI6cwyyC.js +3 -0
- package/server/{git-utils-BVa07a4a.js → git-utils-ameCgDdy.js} +93 -3
- package/server/{github-app-CMBdIFBQ.js → github-app-CQ1Lo6LA.js} +19 -8
- package/server/{github-app-CPfoFAdV.js → github-app-DtAsvwzK.js} +1 -1
- package/server/{github-client--XVlDpwM.js → github-client-BfyDxuRN.js} +2 -2
- package/server/{github-client-B4QsdE-X.js → github-client-Cj0yl_07.js} +1 -1
- package/server/github-pr-lookup-BDq6Wznz.js +58 -0
- package/server/{harness-binary-CVio2m-u.js → harness-binary-DqkftwTb.js} +32 -6
- package/server/{harness-resolve-qHJBhy3Z.js → harness-resolve-CqMqM1Mb.js} +18 -9
- package/server/{health-events-C9B8y1Hm.js → health-events-CazRxJUS.js} +2 -2
- package/server/{health-events-CpfvuVmm.js → health-events-_xfTaOUs.js} +1 -1
- package/server/{hooks-DUXw8A0-.js → hooks-BO3QT1sn.js} +2 -2
- package/server/{hooks-ltecuFqZ.js → hooks-BnJsxlSq.js} +1 -1
- package/server/{hume-BEq0bUDg.js → hume-CDYJxqx-.js} +2 -2
- package/server/hume-Dq--7rOQ.js +3 -0
- package/server/{idle-stack-reaper-D7w9t3fE.js → idle-stack-reaper-BYqERdkE.js} +1 -1
- package/server/{idle-stack-reaper-w1ISSlhs.js → idle-stack-reaper-CnGx_PO_.js} +99 -6
- package/server/in-flight-guard-Bq3epG58.js +45 -0
- package/server/{infra-CzaSOgul.js → infra-BjuxvjdS.js} +80 -5
- package/server/{injection-oNZeoDhL.js → injection-DZxlV2al.js} +1 -1
- package/server/{injection-DZ0PfYa4.js → injection-UCf8EsjX.js} +191 -183
- package/server/{inspect-agent-DJKLWcVT.js → inspect-agent-6kylZnrm.js} +139 -82
- package/server/inspect-agent-BVwDrVrz.js +2 -0
- package/server/{internal-token-Bb4XeV2x.js → internal-token-DvMTQSOS.js} +2 -2
- package/server/{internal-token-DXdfprGr.js → internal-token-M9omeXM1.js} +1 -1
- package/server/{io-B3_AHDfr.js → io-VHvc0Ssp.js} +43 -26
- package/server/{issue-closed-zhdvQicO.js → issue-closed-B6KJkmHZ.js} +7 -7
- package/server/{issue-lifecycle-Dy4vd0Oa.js → issue-lifecycle-9gk3fnXN.js} +1 -1
- package/server/{issue-lifecycle-CreaCkjW.js → issue-lifecycle-C4Zj0WmE.js} +34 -28
- package/server/{issue-service-singleton-B5ushCvE.js → issue-service-singleton-DmCh7EHj.js} +10 -10
- package/server/{issue-service-singleton-DabvBWUp.js → issue-service-singleton-PMx8F1jr.js} +1 -1
- package/server/{issues-B6ToV6x1.js → issues-CgnQ1OGQ.js} +2 -2
- package/server/{jsonl-parser-Dhflo1SH.js → jsonl-parser-DJOH_O-w.js} +5 -4
- package/server/{label-cleanup-BKPJm4Hv.js → label-cleanup-Dv7AV_R1.js} +3 -3
- package/server/{label-reconciler-DdWbHEBu.js → label-reconciler--F85rufp.js} +4 -4
- package/server/{lifecycle-DfeyBDwA.js → lifecycle-CTdOWYMi.js} +2 -2
- package/server/{lifecycle-sycO16hj.js → lifecycle-DDN8ApVY.js} +6 -7
- package/server/{lifecycle-io-D8iNBcux.js → lifecycle-io-D-lGdzK3.js} +5 -5
- package/server/{lifecycle-io-Bsnr2K4F.js → lifecycle-io-D_zTLvP1.js} +1 -1
- package/server/{linear-client-D4zqMnX7.js → linear-client-BQU36QqE.js} +2 -2
- package/server/{linear-client-DqhDQO9k.js → linear-client-CY4O_Tu3.js} +1 -1
- package/server/linear-mcp-auth-BnU4TYfY.js +280 -0
- package/server/linear-mcp-auth-NYBq_oHZ.js +2 -0
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-C_ZEhbqI.js → merge-Bpx4jjht.js} +13 -11
- package/server/{merge-agent-XrB80vfT.js → merge-agent-DdMVSV2Y.js} +233 -83
- package/server/{merge-agent-BQM3a8z5.js → merge-agent-DrXa1CpW.js} +1 -1
- package/server/{merge-batch-Bwoyr8Je.js → merge-batch-C5q1c1GX.js} +1 -1
- package/server/merge-completeness-BMm8tMyZ.js +277 -0
- package/server/merge-completeness-D0ljXbk3.js +3 -0
- package/server/{merge-DK23JEdS.js → merge-idOG--29.js} +1 -1
- package/server/merge-ops-DdpTiEMt.js +2 -0
- package/server/merge-rebase-DGQpYJU3.js +2 -0
- package/server/{merge-rebase-C1KIVr0s.js → merge-rebase-xLnMlw5h.js} +3 -3
- package/server/merge-set-DH7ot3yz.js +89 -0
- package/server/merge-set-DzsOTBg5.js +3 -0
- package/server/{merge-sync-DZ9dojJn.js → merge-sync-CQ-LgZ1_.js} +406 -153
- package/server/merge-sync-Ca7F5JnQ.js +3 -0
- package/server/{merge-train-DxDfBTjr.js → merge-train-DTEMyIu4.js} +18 -8
- package/server/{merge-train-deps-CyYQUksx.js → merge-train-deps-CNPJzepw.js} +4 -4
- package/server/merge-verification-x3JO8Dtz.js +220 -0
- package/server/merged-docker-cleanup-worker-CTpC27Bs.js +107 -0
- package/server/merged-docker-cleanup-worker-Cdi9apm-.js +3 -0
- package/server/{multipart-parser-Dt8YPN5S.js → multipart-parser-IMSBfePV.js} +2 -2
- package/server/{no-resume-mode-Cx3K0hHi.js → no-resume-mode-C5ULAXwO.js} +1 -1
- package/server/node_modules/.package-lock.json +27 -27
- 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/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/README.md +5 -0
- package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
- package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
- package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
- package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
- package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
- package/server/node_modules/undici/docs/docs/index.md +5 -0
- package/server/node_modules/undici/lib/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 +13 -2
- package/server/node_modules/undici/lib/core/util.js +6 -1
- package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
- package/server/node_modules/undici/lib/dispatcher/client-h1.js +42 -8
- package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
- package/server/node_modules/undici/lib/global.js +36 -16
- package/server/node_modules/undici/lib/handler/cache-handler.js +269 -61
- package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +13 -3
- package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
- package/server/node_modules/undici/lib/handler/retry-handler.js +30 -4
- package/server/node_modules/undici/lib/interceptor/cache.js +159 -52
- package/server/node_modules/undici/lib/interceptor/decompress.js +9 -2
- package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
- package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
- package/server/node_modules/undici/lib/util/cache.js +372 -68
- 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/lib/web/fetch/body.js +2 -1
- package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
- package/server/node_modules/undici/package.json +2 -2
- package/server/node_modules/undici/types/client.d.ts +2 -2
- package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
- package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
- package/server/{orphan-proposed-reconciler-BTkDrl4R.js → orphan-proposed-reconciler-CWmOdM9-.js} +1 -1
- package/server/{orphan-proposed-reconciler-neK8dHQk.js → orphan-proposed-reconciler-Dg6U4ADZ.js} +24 -15
- package/server/package-lock.json +28 -28
- package/server/package.json +1 -1
- package/server/{pan-dir-DeVUgwA7.js → pan-dir-ubraCiUg.js} +24 -10
- package/server/{paths-_zEts6wc.js → paths-cXmOwSbh.js} +2 -2
- package/server/pending-lifecycle-claim-DEteYdS9.js +110 -0
- package/server/{pickup-Dd0Znxxy.js → pickup-D8xtG1J2.js} +17 -16
- package/server/pipeline-membership-BGSvkT2M.js +3 -0
- package/server/pipeline-membership-CrAPLYtf.js +57 -0
- package/server/{pipeline-membership-0HaEGDlH.js → pipeline-membership-gather-CET40frr.js} +177 -109
- package/server/pipeline-membership-gather-DTfcgxLl.js +3 -0
- package/server/{pipeline-notifier-D0ykk59O.js → pipeline-notifier-BuQ0e4hF.js} +2 -2
- package/server/{pipeline-notifier-6iCJplFZ.js → pipeline-notifier-ImNXknf0.js} +1 -1
- package/server/post-merge-lifecycle-worker-DbO10pum.js +50 -0
- package/server/{project-pipelines-2sK1apsO.js → project-pipelines-Bim6bThI.js} +2 -2
- package/server/project-repos-C0nuoBGv.js +98 -0
- package/server/project-repos-CRE6Ykow.js +3 -0
- package/server/projects-B03Wr-xc.js +3 -0
- package/server/{prompts-Dp4Tpk39.js → prompts-BEx08AIu.js} +2 -2
- package/server/{providers-DKkBXhxU.js → providers-D7IluJe0.js} +1 -1
- package/server/{providers-DV7ec8l7.js → providers-evXhiQeg.js} +7 -7
- package/server/public/assets/{chunk-BO2N2NFS-CltymLRg.js → chunk-BO2N2NFS-D1s4-Sqp.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-D2f6pjgA.js → diagram-OG6HWLK6-1gdMoSF7.js} +1 -1
- package/server/public/assets/{dist-BWR4qFiV.js → dist-CxAOHbil.js} +1 -1
- package/server/public/assets/{dist-DEmlBBNQ.js → dist-DqDRYW6P.js} +3 -3
- package/server/public/assets/{ganttDiagram-6RSMTGT7-DnfiViPK.js → ganttDiagram-6RSMTGT7-BYex-Ec7.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-B8Wrmj9H.js → highlighted-body-OFNGDK62-DlVkiG0S.js} +1 -1
- package/server/public/assets/index-Cc7cnFC4.css +1 -0
- package/server/public/assets/index-K0hAYCgV.js +807 -0
- package/server/public/assets/{linear-C9zFQpkX.js → linear-B4cuEFmO.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-DyDHFXHV.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-lR8H7Yjd.js → pieDiagram-4H26LBE5-CBHNBIJQ.js} +1 -1
- package/server/public/assets/{prod-B1jCQihw.js → prod-CN2nHBvX.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-CVQ2guem.js → quadrantDiagram-W4KKPZXB-Bom87VOQ.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-eD1RB4gm.js → sankeyDiagram-5OEKKPKP-UrBeyLxk.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-ChEC6dQn.js → xychartDiagram-2RQKCTM6-DhkbrIxR.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests--Ib2jTgy.js → pull-requests-Cv7LxzUN.js} +1 -1
- package/server/{pull-requests-CXIhdCYD.js → pull-requests-DHWiKxo7.js} +19 -10
- package/server/{queries-6d7Cdtm7.js → queries-DHJm7bTd.js} +1134 -203
- package/server/{rally-B708-nZn.js → rally-B71M9f4o.js} +3 -3
- package/server/rally-YDjU513q.js +3 -0
- package/server/{rally-api-yjQ0TfHd.js → rally-api-D5uXN08-.js} +1 -1
- package/server/{rally-api-nY0ZANw3.js → rally-api-Dkqmok65.js} +2 -2
- package/server/{rally-client-B1EJhfV0.js → rally-client-Bfqm6XI4.js} +4 -4
- package/server/{rally-client-CULK2XAY.js → rally-client-CxsA6ExK.js} +1 -1
- package/server/{reap-terminal-sessions-MWnqdLCJ.js → reap-terminal-sessions-BQ23nriz.js} +2 -2
- package/server/{reap-terminal-sessions-N3BTkmX_.js → reap-terminal-sessions-CvmwaqKv.js} +2 -2
- package/server/{rebuild-stack-Dp4eLkt4.js → rebuild-stack-0EEYReVZ.js} +36 -36
- package/server/rebuild-stack-qeRqHZxH.js +4 -0
- package/server/{reconstruct-cache-uWbZfjms.js → reconstruct-cache-BbYFsqLa.js} +7 -6
- package/server/record-CtroO946.js +3 -0
- package/server/record-update-DH6dLJID.js +3 -0
- package/server/{record-update-Dq0t2uBG.js → record-update-Z0QCxmMp.js} +124 -34
- package/server/{recovery-trip-BJtIQuag.js → recovery-trip-eJe26h-f.js} +2 -2
- package/server/{release-engine-DZpmGGzb.js → release-engine-lPUp-MTd.js} +5 -5
- package/server/{release-set-hnXd_kga.js → release-set-BwGeyZKX.js} +3 -3
- package/server/{remote-Br-ZWVIP.js → remote-BCd02Es1.js} +3 -3
- package/server/{remote-4tiENDaI.js → remote-CVGUhXMV.js} +3 -3
- package/server/{remote-agents-CRCg1L4H.js → remote-agents-C1bssi41.js} +2 -2
- package/server/{remote-agents-nmty1mLu.js → remote-agents-C_VxssLU.js} +300 -46
- package/server/{remote-completion-BbWNd10K.js → remote-completion-DAB0P706.js} +12 -12
- package/server/resume-u9byntrq.js +3 -0
- package/server/{review-agent-DJRO8EG8.js → review-agent-CD4RCI0Y.js} +1 -1
- package/server/{review-agent-sKkE1FEL.js → review-agent-CHhI66UP.js} +61 -44
- package/server/{review-artifacts-BLbSC4ke.js → review-artifacts-DSMRIfuJ.js} +7 -6
- package/server/{review-context-BgX3lcCx.js → review-context-oFuBbiEE.js} +69 -25
- package/server/{in-flight-guard-aQ1IxeI3.js → review-convoy-liveness-CpzrcJ5F.js} +3 -44
- package/server/review-status-BZH8h-6W.js +3 -0
- package/server/review-status-emit-CUExtHd5.js +50 -0
- package/server/{review-status-enrichment-tbOn_A_u.js → review-status-enrichment-QV_hQkgS.js} +4 -4
- package/server/{review-status-source-CxuEjLGg.js → review-status-source-CpvJnvnQ.js} +24 -3
- package/server/review-status-source-ylw5QZUR.js +3 -0
- package/server/{review-status-sync-BhSQ0d0l.js → review-status-sync-483sujRo.js} +10 -5
- package/server/{review-status-sync-To3-iS-N.js → review-status-sync-NaWvI9Xf.js} +1 -1
- package/server/review-status-yljtTd-q.js +7521 -0
- package/server/{review-verdict-feedback-C1Kg8n7t.js → review-verdict-feedback-BPDn4li_.js} +1 -1
- package/server/{review-verdict-feedback-CTRNtzXO.js → review-verdict-feedback-CELeUinh.js} +48 -8
- package/server/{rollup-WA0VD-Rr.js → rollup-DTNvelz9.js} +8 -8
- package/server/{rollup-B53Y81xK.js → rollup-DYZfq1c4.js} +1 -1
- package/server/{scanner-D2743cp8.js → scanner-CV35oSn4.js} +42 -14
- package/server/{sequence-io-Cg0zYj_E.js → sequence-io-DF_8iuhV.js} +4 -4
- package/server/{sequencer-agent-BGY8gjg-.js → sequencer-agent-B2WeCtGi.js} +5 -5
- package/server/server.js +3899 -672
- package/server/{service-DCpB_SGd.js → service-Br9rpBNA.js} +83 -65
- package/server/{session-fork-BQ8_6H32.js → session-fork-D0LY152N.js} +2 -2
- package/server/{session-history-CVZDpS3c.js → session-history-BUyK29eq.js} +4 -4
- package/server/{settings-BZ5m1UCl.js → settings-Bse1Pdcj.js} +3 -3
- package/server/settings-CdvIF84R.js +2 -0
- package/server/{settings-ylxwqwQG.js → settings-CvVGqNEs.js} +3 -2
- package/server/{shadow-engineering-BlxG6Xye.js → shadow-engineering-BWLa8ODz.js} +2 -2
- package/server/{shadow-state-Dh-HzF2J.js → shadow-state-B4fpKxOO.js} +2 -2
- package/server/{shadow-state-C2_epgx2.js → shadow-state-FV6PHfEW.js} +1 -1
- package/server/{shadow-utils-4bvjn9b3.js → shadow-utils-D7asqxOZ.js} +2 -2
- package/server/{ship-log-ClSMIzZX.js → ship-log-xplJ8t75.js} +1 -1
- package/server/{smart-compaction-CHIxLr_d.js → smart-compaction-CPp2Ykf6.js} +1 -1
- package/server/{smart-compaction-r4pHQBIr.js → smart-compaction-D3U_79f-.js} +8 -7
- package/server/{spawn-planning-session-KC_UduxD.js → spawn-planning-session-1nFi3gfk.js} +1 -1
- package/server/{spawn-planning-session-DWAorh2B.js → spawn-planning-session-DGfZ5B8D.js} +30 -23
- package/server/{specialist-completion-BXhav38U.js → specialist-completion-Br48eiDP.js} +1 -1
- package/server/{specialist-context-DtrYvGJ-.js → specialist-context-cVbGnTa3.js} +5 -5
- package/server/{specialist-handoff-logger-C45ouoZ6.js → specialist-handoff-logger-DK-GTz4s.js} +2 -2
- package/server/{specialist-logs-DJ3RzKxW.js → specialist-logs-Cl5-hqT8.js} +3 -3
- package/server/{specialists-JVO00bs7.js → specialists-CNfYO3G2.js} +1634 -457
- package/server/{specialists-DyFeedjn.js → specialists-Cicieuzu.js} +21 -19
- package/server/{specialists-D5fRZXmN.js → specialists-JHsdU3pA.js} +1 -1
- package/server/{specialists-DVj0hvaL.js → specialists-Tdezg_6N.js} +1 -1
- package/server/specs-Bt7WJDoC.js +3 -0
- package/server/src-CRmCHlma.js +11408 -0
- package/server/{src-CG9mCkP6.js → src-Ck028hjO.js} +6 -6
- package/server/{src-CMTQGyCK.js → src-UWcGe0Ix.js} +5 -5
- package/server/stack-health-CJLMrLBl.js +3 -0
- package/server/{stack-health-puygdaMd.js → stack-health-DqSqx0zv.js} +68 -12
- package/server/{stale-task-claims-BbFwCTb0.js → stale-task-claims-CYFOUNlT.js} +4 -4
- package/server/{staleness-Cbl_w4Bw.js → staleness-BQ-0gMYK.js} +1 -1
- package/server/{staleness-Bpy41ngS.js → staleness-D47CUJok.js} +1 -1
- package/server/{state-home-CIGjwNfJ.js → state-home-BYV7qZTW.js} +2 -2
- package/server/{state-mapping-BL_-3Yt8.js → state-mapping-BVldLhBf.js} +1 -1
- package/server/{state-migrate-Dkzaxvny.js → state-migrate-CvvBtS0Y.js} +4 -4
- package/server/{stuck-remediation-sY_MHHgQ.js → stuck-remediation-Wt0UVvu1.js} +1 -1
- package/server/{stuck-remediation-CzEov_fq.js → stuck-remediation-mkLC6G_t.js} +360 -26
- package/server/{substrate-bug-weights-service-BH66lhm7.js → substrate-bug-weights-service-XfLAKnmK.js} +3 -3
- package/server/{summary-fork-D8bXjCr7.js → summary-fork-CD7GOts0.js} +2 -2
- package/server/{summary-fork-DHhJIsAL.js → summary-fork-xiXBnWG9.js} +78 -12
- package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-B5SbvDx2.js} +2 -41
- package/server/supervisor/{paths-DehGY2Fj.js → paths-K3noE4N_.js} +1 -1
- package/server/supervisor/pty-supervisor.js +49 -2
- package/server/supervisor/pty-token-B7lp0ElT.js +43 -0
- package/server/{supervisor-BO-Zk_h-.js → supervisor-DL788vos.js} +3 -3
- package/server/supervisor-UWiQNK-y.js +2 -0
- package/server/{swarm-readiness-CQ_fwUWF.js → swarm-readiness-BV14DF5N.js} +3 -3
- package/server/{system-prerequisites-Bza0ffAh.js → system-prerequisites-pdWG6ZQs.js} +56 -29
- package/server/{teardown-workspace-CEgauF4U.js → teardown-workspace-l2F4_zim.js} +15 -16
- package/server/{test-agent-queue-DXDt0Xa-.js → test-agent-queue-qakFIIGz.js} +6 -6
- package/server/{test-verdict-CmUBK5cT.js → test-verdict-BJYDggMm.js} +1 -1
- package/server/{test-verdict-DFjjIHR5.js → test-verdict-Gw-btEfb.js} +1 -1
- package/server/{tldr-daemon-DL566HbH.js → tldr-daemon-BKOYB616.js} +1 -1
- package/server/{tldr-daemon-BDtLOIlO.js → tldr-daemon-CBaWkV9k.js} +2 -2
- package/server/{tmux-ftABRAmc.js → tmux-B1Wbxz5o.js} +3 -3
- package/server/{tmux-DoThH6aj.js → tmux-DQ6jB76i.js} +1 -1
- package/server/tmux-dedup-DbN6MGzM.js +892 -0
- package/server/{token-CsOhvw42.js → token-Cxbk023d.js} +2 -2
- package/server/{token-util-CTmczIfW.js → token-util-CLq2MmQt.js} +1 -1
- package/server/token-util-zlz9U0ki.js +3 -0
- package/server/{tracker-config-B4itFzDo.js → tracker-config-DZ8Zn2nQ.js} +2 -2
- package/server/{tracker-utils-tnxxqROg.js → tracker-utils-L0FKtjq2.js} +3 -3
- package/server/{traefik-connect-m73vGebA.js → traefik-connect-bNX6jKkb.js} +1 -1
- package/server/{tunnel-B2vxjx_b.js → tunnel-BAm1XgjG.js} +3 -3
- package/server/{tunnel-Cgj-IGIl.js → tunnel-CjSnHdTc.js} +1 -1
- package/server/{types-BBNjPcqU.js → types-q67TYYg5.js} +1 -1
- package/server/uat-promote-verification-CKB9ZrKC.js +92 -0
- package/server/uat-train-Cu-4nvbf.js +2 -0
- package/server/uat-train-D5UjcyAa.js +0 -0
- package/server/validate-Cxsx5Uz1.js +179 -0
- package/server/{validation-CIi6pnI2.js → validation-DEaTZafj.js} +1 -1
- package/server/{validation-B5JxoPUS.js → validation-VZgJxmqc.js} +4 -4
- package/server/{verification-artifact-C-lIHfUa.js → verification-artifact-C85cRTc_.js} +1 -1
- package/server/{verification-artifact-BcnIbigL.js → verification-artifact-g3yuxQDL.js} +1 -1
- package/server/{verification-runner-CDj4lD4t.js → verification-runner-DlZI8yhw.js} +1 -1
- package/server/{verification-runner-Br0S_Ous.js → verification-runner-KDZIsBj4.js} +114 -107
- package/server/{vtt-parser-DKpNNW5i.js → vtt-parser-Jr94BF3Y.js} +1 -1
- package/server/{work-agent-prompt-Yb2bd3Fq.js → work-agent-prompt-C-vuP3_J.js} +20 -9
- package/server/workflows-CHrx_hcW.js +2 -0
- package/server/{workflows-C9WmILql.js → workflows-D0oip4eV.js} +161 -78
- package/server/{workspace-DuUdndHe.js → workspace-BqFg__wH.js} +1 -1
- package/server/{workspace-BVl4rihN.js → workspace-C0fH3aek.js} +3 -3
- package/server/workspace-anchor-drift-B4gMRHl4.js +3 -0
- package/server/workspace-anchor-drift-CZKofakh.js +224 -0
- package/server/{workspace-config-cEGcO6UT.js → workspace-config-B123aZl-.js} +1 -1
- package/server/workspace-manager-CDTKjjdU.js +3 -0
- package/server/{workspace-manager-hLUv3ADC.js → workspace-manager-CwO-Hek7.js} +206 -116
- package/server/{workspace-metadata-CskwzzhL.js → workspace-metadata-CQv00QwK.js} +2 -2
- package/server/{workspace-metadata-DNpMixRq.js → workspace-metadata-D4M8BM4W.js} +1 -1
- package/server/{workspaces-hWvy9eKs.js → workspaces-j1e_6aAT.js} +736 -290
- 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/hooks/record-cost-event.js +6 -4
- package/sync-sources/rules/ask-user-question-self-contained.md +9 -0
- package/sync-sources/skills/okf/README.md +11 -3
- package/sync-sources/skills/okf/SKILL.md +12 -1
- package/sync-sources/skills/okf/docs/USAGE.md +15 -0
- package/sync-sources/skills/okf/references/overdeck.md +28 -0
- package/sync-sources/skills/pan-close/SKILL.md +5 -3
- package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
- package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
- package/sync-sources/skills/pan-orders/SKILL.md +33 -0
- package/sync-sources/skills/pan-peer-review/SKILL.md +195 -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-start/SKILL.md +4 -0
- 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/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
- package/server/activity-logger-OEUBdfZ8.js +0 -3
- package/server/agent-state-Bg0lhqwj.js +0 -3
- package/server/agents-FlIgQ3ql.js +0 -3
- package/server/archive-planning-zkJb3BeM.js +0 -3
- package/server/cli-BsVIHwzC.js +0 -3
- package/server/context-layers-B3Nt58jl.js +0 -4
- package/server/context-layers-ZYFcWiyc.js +0 -165
- package/server/conversation-service-Up7FEzIC.js +0 -3
- package/server/deacon-DYSEJb48.js +0 -4
- package/server/deacon-swarm-9jRLS5Ke.js +0 -2
- package/server/deploy-window-CM6W1-c6.js +0 -3
- package/server/dist-Bd3vn0Hw.js +0 -3
- package/server/flywheel-DMCUzDWg.js +0 -2
- package/server/flywheel-DSSpWmqF.js +0 -522
- package/server/flywheel-DcBkQvgE.js +0 -207
- package/server/flywheel-merge-order-C-6zRLvM.js +0 -2
- package/server/flywheel-merge-order-DxbQKE1d.js +0 -244
- package/server/forge-B-ZWyTRm.js +0 -2
- package/server/forge-Ch9gCFod.js +0 -270
- package/server/git-utils-Dry_Ka_D.js +0 -3
- package/server/github-pr-lookup-BRbDW-qk.js +0 -44
- package/server/hume-B_DbflNM.js +0 -3
- package/server/inspect-agent-ch-F-5Ci.js +0 -2
- package/server/launcher-generator-CHVm7bGT.js +0 -379
- package/server/layers-DzxSTGNA.js +0 -93
- package/server/merge-blockers-BsFjGrQ8.js +0 -41
- package/server/merge-ops-DlB1IM0Y.js +0 -2
- package/server/merge-set-DLz0MkGT.js +0 -139
- package/server/merge-set-DnSYdBEp.js +0 -3
- package/server/merge-sync-SSv3E-pl.js +0 -3
- package/server/merge-verification-CSizH3HY.js +0 -124
- package/server/projects-9SkRpES9.js +0 -3
- package/server/public/assets/index-CUr1xv8w.css +0 -1
- package/server/public/assets/index-CsSuZQBI.js +0 -802
- package/server/public/assets/mermaid-GHXKKRXX-BUAB8hqt.js +0 -1
- package/server/rally-njs_mJrt.js +0 -3
- package/server/rebuild-stack-kA7XngID.js +0 -3
- package/server/record-t6V-3Dcj.js +0 -3
- package/server/record-update-DACtKh6_.js +0 -3
- package/server/resume-CcKqnTvE.js +0 -3
- package/server/review-status-A7quS5KJ.js +0 -1454
- package/server/review-status-C6n6-9f_.js +0 -3
- package/server/settings-D0OSwos5.js +0 -2
- package/server/specs-nN45DG2X.js +0 -3
- package/server/src-U7_kTPEE.js +0 -4733
- package/server/stack-health-Df0YEZKa.js +0 -3
- package/server/supervisor-BPy-o1A8.js +0 -2
- package/server/token-util-DrHg8abn.js +0 -3
- package/server/tracker-utils-BePq_oj-.js +0 -3
- package/server/uat-train-CuEn0t9M.js +0 -2152
- package/server/uat-train-cKfM-_WW.js +0 -2
- package/server/workflows-D90rMOya.js +0 -2
- package/server/workspace-manager-ZTdJAy9M.js +0 -3
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pan-peer-review
|
|
3
|
+
description: "Workflow: spawn an independent adversarial reviewer on a different model to verify or refute your own findings. EXPENSIVE — invoke only when the operator explicitly asks for a peer/second-opinion review."
|
|
4
|
+
triggers:
|
|
5
|
+
- peer review my findings
|
|
6
|
+
- get independent feedback
|
|
7
|
+
- second opinion from another model
|
|
8
|
+
- have another model review this
|
|
9
|
+
- adversarial review of my analysis
|
|
10
|
+
allowed-tools:
|
|
11
|
+
- Bash
|
|
12
|
+
- Read
|
|
13
|
+
- Write
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# pan peer-review — independent second opinion from another model
|
|
17
|
+
|
|
18
|
+
Spawn a conversation on a **different model family** to adversarially verify or
|
|
19
|
+
refute an analysis you produced, then read its findings back. Use it when a
|
|
20
|
+
conclusion is expensive to get wrong: a root-cause diagnosis about to become a
|
|
21
|
+
PRD, a refactor plan, a security claim, a "this is safe to merge" call.
|
|
22
|
+
|
|
23
|
+
## ⚠️ Operator-invoked only — never launch this on your own initiative
|
|
24
|
+
|
|
25
|
+
**Do not start a peer review because you think your work would benefit from
|
|
26
|
+
one.** A peer review spawns a second full agent that reads source, burns a
|
|
27
|
+
frontier-model context, and runs for many minutes. That cost is the operator's
|
|
28
|
+
call, not yours.
|
|
29
|
+
|
|
30
|
+
Launch only when the operator explicitly asks — "get a second opinion", "run
|
|
31
|
+
this by another model", "have K3 review it", "peer review this". If you believe
|
|
32
|
+
a review is warranted and they have not asked, say so in one sentence and let
|
|
33
|
+
them decide.
|
|
34
|
+
|
|
35
|
+
Corollary: never chain reviews. One reviewer, one pass. If the reviewer
|
|
36
|
+
disagrees with you, bring the disagreement back to the operator rather than
|
|
37
|
+
spawning a third model to break the tie.
|
|
38
|
+
|
|
39
|
+
## Why a different model, and what "independent" buys you
|
|
40
|
+
|
|
41
|
+
A reviewer on the same model as the author tends to agree — it reconstructs the
|
|
42
|
+
same reasoning from the same priors. The value comes from a different family
|
|
43
|
+
reading the same source: Opus/Fable reviewing GPT work, K3 reviewing Claude
|
|
44
|
+
work, GPT reviewing Claude work.
|
|
45
|
+
|
|
46
|
+
Pick the reviewer by contrast with whoever produced the analysis:
|
|
47
|
+
|
|
48
|
+
| Author | Good reviewer |
|
|
49
|
+
| --- | --- |
|
|
50
|
+
| Claude (Opus/Fable/Sonnet) | `k3` (Kimi), `gpt-5.6-sol` |
|
|
51
|
+
| GPT | `claude-opus-5`, `k3` |
|
|
52
|
+
| Kimi | `claude-opus-5`, `gpt-5.6-sol` |
|
|
53
|
+
|
|
54
|
+
Never pass `--harness`. Harness routing is config-owned and the operator sets it
|
|
55
|
+
deliberately; `--model` is the only routing flag this workflow uses, and only
|
|
56
|
+
because the operator asked for a specific reviewer.
|
|
57
|
+
|
|
58
|
+
Leave reasoning effort alone. It inherits `high`, which is the right tier —
|
|
59
|
+
never raise it to `xhigh`/`max` for a review.
|
|
60
|
+
|
|
61
|
+
## The workflow
|
|
62
|
+
|
|
63
|
+
### 1. Write the brief to a file — never into the focus
|
|
64
|
+
|
|
65
|
+
The `pan handoff` focus is hard-capped at 500 characters. A real review brief is
|
|
66
|
+
thousands. Write it to a file in the reviewer's future cwd and let the focus
|
|
67
|
+
point at it.
|
|
68
|
+
|
|
69
|
+
A brief that produces a useful review has these parts:
|
|
70
|
+
|
|
71
|
+
- **Adversarial framing, stated first.** "Assume each claim may be wrong. A
|
|
72
|
+
claim that survives refutation is worth more than agreement. Do not soften
|
|
73
|
+
findings to be agreeable." Without this you get a politeness echo.
|
|
74
|
+
- **Read-only rules.** No edits to source, no commits, no `pan` commands, no
|
|
75
|
+
POST/DELETE. The reviewer writes exactly one file: its findings.
|
|
76
|
+
- **A glossary** of every term of art before you use it — the reviewer has none
|
|
77
|
+
of your conversation's context.
|
|
78
|
+
- **Absolute paths for evidence outside the worktree** — live workspaces, logs,
|
|
79
|
+
config, API endpoints. The reviewer cannot find them otherwise.
|
|
80
|
+
- **Each claim stated separately**, with the exact file:line it rests on, the
|
|
81
|
+
evidence you used, and the fix you propose.
|
|
82
|
+
- **Per-claim questions that invite refutation** — "does the fix actually
|
|
83
|
+
terminate the loop?", "what is the blast radius?", "would this regress the
|
|
84
|
+
monorepo path?". Generic "please review" produces generic output.
|
|
85
|
+
- **Cross-cutting questions**, including at least one that asks for things you
|
|
86
|
+
did *not* find: "search for every other site with this pattern and report any
|
|
87
|
+
beyond the ones named here."
|
|
88
|
+
- **An explicit output contract** — a verdict vocabulary (CONFIRMED /
|
|
89
|
+
PARTIALLY CONFIRMED / REFUTED / CANNOT VERIFY), where to write findings, and
|
|
90
|
+
a request to also summarize in-conversation.
|
|
91
|
+
|
|
92
|
+
### 2. Create a detached worktree
|
|
93
|
+
|
|
94
|
+
The reviewer needs the source, isolated from your working tree. Spawned agents
|
|
95
|
+
must never get the primary worktree as their cwd.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
git worktree add --detach /home/eltmon/Projects/hoff-<slug> main
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
`--detach` is required: a plain `git worktree add <path> main` fails with
|
|
102
|
+
`fatal: 'main' is already used by worktree at ...` whenever main is checked out
|
|
103
|
+
somewhere, which on a dev machine is always. Detached HEAD is correct here —
|
|
104
|
+
the reviewer never commits.
|
|
105
|
+
|
|
106
|
+
Then write the brief into that worktree.
|
|
107
|
+
|
|
108
|
+
### 3. Launch the handoff
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
pan handoff --model <reviewer-model> --cwd /home/eltmon/Projects/hoff-<slug> self \
|
|
112
|
+
"Read REVIEW-BRIEF.md in your cwd FIRST and follow it exactly. You are an INDEPENDENT ADVERSARIAL reviewer — verify or refute each claim against real source and critique each proposed fix. Read-only. Write findings to FEEDBACK-<model>.md."
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`self` must come before the focus text. Omitting it makes the CLI read your
|
|
116
|
+
focus as a conversation name and fail with `Conversation not found`.
|
|
117
|
+
|
|
118
|
+
**The command can exceed a two-minute tool timeout while the handoff document is
|
|
119
|
+
authored — that is normal and does not mean it failed.** Either run it with
|
|
120
|
+
`run_in_background: true`, or let it time out and verify the spawn afterwards:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
tmux -L overdeck list-sessions | grep conv-
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 4. Correct the frame — the step everyone skips
|
|
127
|
+
|
|
128
|
+
`pan handoff` seeds the new conversation with an **authored handoff document
|
|
129
|
+
describing your session's state and open work**. It does not deliver your focus
|
|
130
|
+
as an instruction. The reviewer therefore wakes up believing it is *you,
|
|
131
|
+
continuing your work* — and if your open-work list said "launch a peer review",
|
|
132
|
+
it will try to launch one, recursively.
|
|
133
|
+
|
|
134
|
+
Check what it actually received before assuming it is reviewing:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
tmux -L overdeck capture-pane -t <conv-id> -p -S -30
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
If it is acting as a continuation rather than as a reviewer, correct it with
|
|
141
|
+
`pan tell` (never raw tmux keystroke injection):
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
pan tell <conv-id> "STOP. You are NOT continuing that conversation's work. You ARE the independent reviewer it wanted to spawn. Read <brief path> and follow it exactly. Read-only. Begin now."
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Budget for this step every time. Treat the handoff document as context the
|
|
148
|
+
reviewer happens to have, and your `pan tell` as the actual task assignment.
|
|
149
|
+
|
|
150
|
+
### 5. Wait on the artifact, not the pane
|
|
151
|
+
|
|
152
|
+
Poll for the findings file rather than watching output scroll:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
until [ -s /home/eltmon/Projects/hoff-<slug>/FEEDBACK-<model>.md ]; do sleep 20; done
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Run that in the background so you can keep working.
|
|
159
|
+
|
|
160
|
+
### 6. Read the findings critically, then report
|
|
161
|
+
|
|
162
|
+
The reviewer is not an oracle. Treat REFUTED verdicts as claims to check, the
|
|
163
|
+
same way you asked it to treat yours — a reviewer that misreads a call site can
|
|
164
|
+
be confidently wrong. Verify anything that would change what you do next.
|
|
165
|
+
|
|
166
|
+
Report back to the operator with: what the reviewer confirmed, what it refuted
|
|
167
|
+
and whether you agree, what it found that you missed, and where you still
|
|
168
|
+
disagree after checking. Never launder its output as consensus.
|
|
169
|
+
|
|
170
|
+
### 7. Clean up
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
git worktree remove /home/eltmon/Projects/hoff-<slug>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Keep the findings file if it is going into an issue or PRD — copy it out before
|
|
177
|
+
removing the worktree.
|
|
178
|
+
|
|
179
|
+
## Failure modes and what they mean
|
|
180
|
+
|
|
181
|
+
| Symptom | Cause | Fix |
|
|
182
|
+
| --- | --- | --- |
|
|
183
|
+
| `fatal: 'main' is already used by worktree at ...` | `git worktree add` without `--detach` | Add `--detach` |
|
|
184
|
+
| `Conversation not found` | Focus text passed without `self` first | `pan handoff ... self "<focus>"` |
|
|
185
|
+
| `Focus is N characters — the limit is 500`, no conversation created | Brief crammed into the focus | Put the brief in a file, point the focus at it |
|
|
186
|
+
| Handoff command times out at 2 minutes | Handoff document authoring is slow | Normal — verify the spawn with `tmux -L overdeck list-sessions` |
|
|
187
|
+
| Reviewer starts doing your open-work list, or tries to spawn its own review | It received the handoff doc, not your focus | `pan tell` it the real task (step 4) |
|
|
188
|
+
| Reviewer agrees with everything | Brief lacked adversarial framing, or reviewer shares the author's model family | Rewrite the framing; pick a different family |
|
|
189
|
+
| `state.json has no issueId` on `pan tell` | Informational — conversations have no issue | Ignore; the message still delivers |
|
|
190
|
+
|
|
191
|
+
## Related
|
|
192
|
+
|
|
193
|
+
- `/pan-handoff` — the underlying command and its full semantics
|
|
194
|
+
- `/pan-code-review` — reviewing a *diff*; this skill reviews an *analysis*
|
|
195
|
+
- `/pan-tell` — the sanctioned way to message a running conversation
|
|
@@ -11,17 +11,17 @@ Use this after code changes that should run in the local Overdeck dashboard.
|
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
13
|
pan reload
|
|
14
|
-
pan reload --force #
|
|
14
|
+
pan reload --force # explicit operator bypass of the deploy-window gate
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
`pan reload` runs `bun install`
|
|
17
|
+
`pan reload` fetches `origin/main`, creates a temporary detached worktree at that commit, and runs `bun install` followed by `npm run build` there — never in the primary working tree. If the primary tree has uncommitted changes or its `HEAD` differs from `origin/main`, the command notes that those changes are excluded and continues with the canonical build. If installation or build fails, it leaves the current dashboard running and exits non-zero; after a successful build, it keeps the detached worktree as the active deployment root and launches its `dist/dashboard/server.js` with its canonical runtime dependencies and workspace packages intact, leaves the primary checkout's `node_modules/` untouched, refreshes the primary `dist/` CLI mirror with a dependency link back to that deployment root, then restarts the dashboard and waits for `http://127.0.0.1:3011/api/health`. Deployments alternate between two fixed generation worktrees. A failure before the new process is left running restores the prior marker and primary `dist/` and removes the failed generation. A health timeout keeps the new deployment active because the dashboard is deliberately left running so a slow boot can finish or a failed boot can be inspected. Retries still reuse one of the two fixed slots, so failures cannot accumulate unbounded dependency trees.
|
|
18
18
|
|
|
19
19
|
`npm run build` already rebuilds the dashboard **server** bundle (via `build-post-cli.mjs` → `build:dashboard:server:bundle`), so `pan reload` picks up server/deacon code changes — you do **not** need a separate `npm run build:dashboard:server`. The `bun install` step runs first so a merge/rebase that added a runtime dependency (e.g. `chokidar`) can't produce a freshly-built server that boot-crashes with `ERR_MODULE_NOT_FOUND`.
|
|
20
20
|
|
|
21
21
|
## Options
|
|
22
22
|
|
|
23
23
|
- `--skip-build` — restart the current bundle without running `bun install` or `npm run build`.
|
|
24
|
-
- `--force` — bypass the deploy-window gate
|
|
24
|
+
- `--force` — explicitly bypass the deploy-window gate. Without it, a refused agent-issued reload queues the deploy, reports its age and distinct verification blockers, and self-fires at the next safe verification boundary. Do not retry-loop or use `--force` to interrupt healthy verification; reserve the bypass for exceptional operator recovery.
|
|
25
25
|
- `--health-timeout <ms>` — set the dashboard health-check budget. The default is `30000`.
|
|
26
26
|
- `--no-deacon` — restart without Cloister/Deacon auto-start.
|
|
27
27
|
|
|
@@ -34,7 +34,7 @@ pan restart --traefik
|
|
|
34
34
|
pan restart --full # nuclear — stops & restarts everything
|
|
35
35
|
|
|
36
36
|
# Explicit force cases
|
|
37
|
-
pan restart --force # bypass the
|
|
37
|
+
pan restart --force # explicit operator bypass of the deploy-window gate
|
|
38
38
|
pan restart --cliproxy --force # redownload the pinned CLIProxy binary
|
|
39
39
|
```
|
|
40
40
|
|
|
@@ -61,9 +61,10 @@ server is a failure, not a successful restart.
|
|
|
61
61
|
- `pan restart --dashboard` NEVER touches CLIProxy, Traefik, or TLDR — that
|
|
62
62
|
scope contract is enforced by tests.
|
|
63
63
|
- Agent-issued dashboard and full restarts consult the deploy-window gate before
|
|
64
|
-
acquiring the restart lock.
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
acquiring the restart lock. A refusal queues the deploy, reports its age and
|
|
65
|
+
distinct verification blockers, and self-fires at the next safe verification
|
|
66
|
+
boundary. Do not retry in a loop or use `--force` to interrupt healthy verification;
|
|
67
|
+
`--force` remains the explicit operator bypass for exceptional recovery.
|
|
67
68
|
- For `--cliproxy`, `--force` has a separate meaning: it redownloads the binary at
|
|
68
69
|
the pinned version before restarting it.
|
|
69
70
|
- If the dashboard restart fails, shared sidecars are left running so recovery
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pan-review
|
|
3
|
-
description: "pan review <subcommand> — manage the code review lifecycle: list pending work,
|
|
3
|
+
description: "pan review <subcommand> — manage the code review lifecycle: list pending work, re-request review, heal status drift, reset/abort/restart review cycles"
|
|
4
4
|
triggers:
|
|
5
5
|
- pan review
|
|
6
6
|
- review pending
|
|
7
7
|
- request review
|
|
8
8
|
- review mode
|
|
9
9
|
- reset review
|
|
10
|
+
- resync review
|
|
10
11
|
- restart review
|
|
11
12
|
- abort review
|
|
12
13
|
- code review lifecycle
|
|
@@ -30,6 +31,7 @@ pan review pending --blocked # List blocked review/test/me
|
|
|
30
31
|
pan review request <id> # Re-request review after fixing feedback
|
|
31
32
|
pan review mode <id> <quick|full> # Set this issue's review mode override
|
|
32
33
|
pan review reset <id> [--session] # Reset review/test/merge cycles (human override)
|
|
34
|
+
pan review resync <id> # Re-emit canonical status to heal dashboard drift
|
|
33
35
|
pan review abort <id> # Kill all running reviewers, leave worker idle
|
|
34
36
|
pan review restart <id> [--model <m>] [--role <r>] # Kill reviewers and dispatch a fresh review pipeline
|
|
35
37
|
```
|
|
@@ -54,6 +56,9 @@ pan review restart <id> [--model <m>] [--role <r>] # Kill reviewers and dispatch
|
|
|
54
56
|
pipeline can be re-dispatched from scratch. Use when the saved state is
|
|
55
57
|
inconsistent or corrupt. `--session` additionally clears the saved Claude
|
|
56
58
|
session for each reviewer so they restart with a clean conversation.
|
|
59
|
+
- **`resync <id>`** — Reads the canonical review status and re-emits it without
|
|
60
|
+
changing any verdict. Use when an issue passed review but is missing from
|
|
61
|
+
Awaiting Merge or its actions are wrongly gated by stale dashboard state.
|
|
57
62
|
- **`abort <id>`** — Kills any currently running reviewer sessions but
|
|
58
63
|
leaves the work agent alone. Use when reviewers are stuck or running
|
|
59
64
|
against the wrong commit and you want to halt without resetting state.
|
|
@@ -77,6 +82,7 @@ pan review restart <id> [--model <m>] [--role <r>] # Kill reviewers and dispatch
|
|
|
77
82
|
| This issue needs the full review convoy | `pan review mode <id> full` |
|
|
78
83
|
| Return an issue to default quick review | `pan review mode <id> quick` |
|
|
79
84
|
| Pipeline state is inconsistent, need a clean slate | `pan review reset <id>` |
|
|
85
|
+
| Issue passed but is missing from Awaiting Merge or actions are wrongly gated | `pan review resync <id>` |
|
|
80
86
|
| Same as above plus reviewer Claude sessions are bad | `pan review reset <id> --session` |
|
|
81
87
|
| Reviewer is hung, just kill it | `pan review abort <id>` |
|
|
82
88
|
| Reviewer crashed, want a fresh convoy with a different model | `pan review restart <id> --model gpt-5.4` |
|
|
@@ -31,6 +31,7 @@ pan start PAN-123 --fresh # Drop the saved session and start a new one (e.g. sw
|
|
|
31
31
|
pan start PAN-123 --harness codex # Explicitly use the Codex harness
|
|
32
32
|
pan start PAN-123 --model gpt-5.6-sol --swarm off --review-mode full
|
|
33
33
|
pan start PAN-123 --review-model gpt-5.6-sol # Pin the convoy review model
|
|
34
|
+
pan start PAN-123 --plan-model k3 --model k3 # Auto-plan AND work on Kimi k3
|
|
34
35
|
pan start PAN-123 --remote --tier durable # Remote Fly.io workspace with persistent volume
|
|
35
36
|
pan start PAN-123 --remote --tier ephemeral # Remote Fly.io workspace that winds down on stale heartbeat
|
|
36
37
|
```
|
|
@@ -63,6 +64,9 @@ Start-time policy flags are persisted on the issue before planning or work begin
|
|
|
63
64
|
sets the durable work-model override used by later respawns, `--swarm` accepts `off`, `auto`,
|
|
64
65
|
or `always`, `--review-mode` accepts `quick`, `full`, or `none`, and `--review-model` pins the
|
|
65
66
|
model used by the review convoy. Omitted flags leave existing and inherited policy untouched.
|
|
67
|
+
When this start also kicks off planning (no plan exists yet), `--plan-model <model>` overrides
|
|
68
|
+
the planning agent's model for that session only — it is a one-shot override, not persisted
|
|
69
|
+
policy, and it never changes the work agent's model (`--model`).
|
|
66
70
|
|
|
67
71
|
If an agent is paused, `pan start <id>` refuses to spawn until you run `pan unpause <id>`.
|
|
68
72
|
Use `--force` only when you intentionally want to clear that pause gate and start anyway.
|
|
@@ -30,12 +30,12 @@ curl -X POST http://localhost:3011/api/issues/PAN-XXX/sync-main
|
|
|
30
30
|
## What It Does
|
|
31
31
|
|
|
32
32
|
1. Checks for uncommitted changes (blocks if any — must commit, explicitly discard, or surface to the operator first; agents never `git stash`)
|
|
33
|
-
2.
|
|
34
|
-
3.
|
|
35
|
-
4.
|
|
36
|
-
5.
|
|
37
|
-
6. If
|
|
38
|
-
7.
|
|
33
|
+
2. Resolves the workspace's required git repos; monorepos produce one repo root
|
|
34
|
+
3. Cleans up stale git locks in each repo
|
|
35
|
+
4. Fetches and merges each repo's configured target branch sequentially in config order
|
|
36
|
+
5. Stops at the first failed or conflicted repo and marks later repos skipped
|
|
37
|
+
6. If clean: reports aggregate commit/file totals plus one result per repo
|
|
38
|
+
7. If conflicts remain: aborts that repo's merge and reports its conflict files
|
|
39
39
|
|
|
40
40
|
## Outcomes
|
|
41
41
|
|
|
@@ -44,14 +44,15 @@ curl -X POST http://localhost:3011/api/issues/PAN-XXX/sync-main
|
|
|
44
44
|
| Already up to date | Main has no new commits since last sync |
|
|
45
45
|
| Success (N commits) | Clean merge or agent-resolved conflicts |
|
|
46
46
|
| Uncommitted changes | Commit or discard workspace changes first |
|
|
47
|
-
| Conflict (unresolvable) |
|
|
47
|
+
| Conflict (unresolvable) | The failing repo's merge is aborted and its conflict files are reported |
|
|
48
|
+
| Per-repo / skipped | Polyrepo output shows each repo's result; repos after the first failure are skipped |
|
|
48
49
|
|
|
49
50
|
## Design Decisions
|
|
50
51
|
|
|
51
52
|
- **Merge, not rebase** — Rebase rewrites SHAs and requires force-push. Merge commits serve as audit markers.
|
|
52
53
|
- **No tests/builds** — Feature branch is WIP. Running tests after sync would fail on pre-existing issues.
|
|
53
54
|
- **No push to remote** — This is a local workspace operation only.
|
|
54
|
-
- **
|
|
55
|
+
- **Sequential polyrepo sync** — Required repos sync in config order. The first failure stops iteration; earlier merges remain, later repos are skipped, and output reports every repo's result.
|
|
55
56
|
|
|
56
57
|
## Examples
|
|
57
58
|
|
|
@@ -86,7 +86,11 @@ don't appear via `/api/issues` filtering.
|
|
|
86
86
|
### 1. Generate the table
|
|
87
87
|
|
|
88
88
|
Run this script. It gets the row universe from `GET /api/pipeline/membership`,
|
|
89
|
-
then joins issue titles, review status, tmux, and agent state as annotations.
|
|
89
|
+
then joins issue titles, review status, tmux, and agent state as annotations. A
|
|
90
|
+
bare array is a successful answer. An HTTP 200 object with
|
|
91
|
+
`status: "unavailable"` is a typed blind spot; show its `projectKey`, `reason`,
|
|
92
|
+
and `message`, then stop instead of deriving membership from another source.
|
|
93
|
+
HTTP 503 means the first snapshot is still loading and may be retried later.
|
|
90
94
|
|
|
91
95
|
```bash
|
|
92
96
|
python3 - <<'PY'
|
|
@@ -100,6 +104,11 @@ issues_data = json.loads(subprocess.check_output(['curl','-s','http://localhost:
|
|
|
100
104
|
membership = json.loads(subprocess.check_output([
|
|
101
105
|
'curl','-s','http://localhost:3011/api/pipeline/membership?project=overdeck'
|
|
102
106
|
]))
|
|
107
|
+
if isinstance(membership, dict) and membership.get('status') == 'unavailable':
|
|
108
|
+
raise SystemExit(
|
|
109
|
+
'PIPELINE MEMBERSHIP UNAVAILABLE: '
|
|
110
|
+
f"{membership.get('projectKey')} — {membership.get('reason')}: {membership.get('message')}"
|
|
111
|
+
)
|
|
103
112
|
issues_by_id = {(i.get('identifier') or '').upper(): i for i in issues_data}
|
|
104
113
|
panissues = []
|
|
105
114
|
for member in membership:
|
|
@@ -14,6 +14,7 @@ Run from the workspace root:
|
|
|
14
14
|
```bash
|
|
15
15
|
pan workspace add-repo <workspace-id> <repo-name> [repo-name...]
|
|
16
16
|
pan workspace add-repo <workspace-id> --group <group-name>
|
|
17
|
+
pan workspace add-repo <workspace-id> --new <git-url>
|
|
17
18
|
```
|
|
18
19
|
|
|
19
20
|
Examples:
|
|
@@ -25,8 +26,11 @@ pan workspace add-repo int-123 int-provider-a int-canonical-to-hs
|
|
|
25
26
|
# Add a named group
|
|
26
27
|
pan workspace add-repo int-123 --group simphony
|
|
27
28
|
|
|
28
|
-
# Add all repos
|
|
29
|
+
# Add all configured repos
|
|
29
30
|
pan workspace add-repo int-123 --group all
|
|
31
|
+
|
|
32
|
+
# Register a repo created as part of this issue
|
|
33
|
+
pan workspace add-repo int-123 --new git@github.com:acme/new-service.git
|
|
30
34
|
```
|
|
31
35
|
|
|
32
36
|
## How to decide which repos you need
|
|
@@ -40,7 +44,18 @@ pan workspace add-repo int-123 --group all
|
|
|
40
44
|
The new repos appear as subdirectories in the workspace with feature branches ready.
|
|
41
45
|
Run git commands inside each repo subdirectory.
|
|
42
46
|
|
|
47
|
+
## New deliverable repositories
|
|
48
|
+
|
|
49
|
+
Run `--new <git-url>` before cloning or committing in a repository created during the issue. Overdeck clones the project-level source repo, creates the issue feature worktree, and registers it so review, inspection, and merge include it.
|
|
50
|
+
|
|
51
|
+
If the repo name inferred from the URL is not suitable, pass the workspace directory name before `--new`:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pan workspace add-repo int-123 service --new git@github.com:acme/new-service.git
|
|
55
|
+
```
|
|
56
|
+
|
|
43
57
|
## Notes
|
|
44
58
|
|
|
59
|
+
- An unknown repo name without `--new` fails instead of silently reporting success
|
|
45
60
|
- Meta repos (symlinked) are readonly — do NOT commit changes to them
|
|
46
61
|
- Use `--dry-run` first to see what would be added without making changes
|
|
@@ -30,6 +30,16 @@ http:
|
|
|
30
30
|
service: overdeck-api
|
|
31
31
|
tls: {}
|
|
32
32
|
|
|
33
|
+
# Origin-isolated OpenKnowledge viewers. The dashboard server derives the
|
|
34
|
+
# project from the hex-encoded host label and proxies every root-relative
|
|
35
|
+
# HTTP/WebSocket path to that project's viewer process.
|
|
36
|
+
overdeck-knowledge-viewer:
|
|
37
|
+
rule: "HostRegexp(`^knowledge-[a-f0-9]+\\.{{TRAEFIK_DOMAIN}}$`)"
|
|
38
|
+
entryPoints:
|
|
39
|
+
- websecure
|
|
40
|
+
service: overdeck-api
|
|
41
|
+
tls: {}
|
|
42
|
+
|
|
33
43
|
# Published HTML artifacts
|
|
34
44
|
overdeck-artifacts:
|
|
35
45
|
rule: "Host(`artifacts.{{TRAEFIK_DOMAIN}}`) && PathPrefix(`/a/`)"
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { Fn as clearAgentPausedSync, Gn as init_agent_state, Ln as clearAgentTroubledSync, Wn as getAgentStateSync, or as setAgentPausedSync } from "./queries-6d7Cdtm7.js";
|
|
2
|
-
init_agent_state();
|
|
3
|
-
export { clearAgentPausedSync, clearAgentTroubledSync, getAgentStateSync, setAgentPausedSync };
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { $ as appendActivity, $n as recordAgentFailure, $t as OHMYPI_AGENT_READY_TIMEOUT_SECONDS, An as writeChannelsBridgeMcpConfig, At as deliverAgentPermissionDecision, B as detectCrashedAgents, Bn as getAgentDir, Bt as assertWorkspaceStackHealthyForSpawn, C as replayCrashedStandingAgent, Cr as getAgentRuntimeStateSync, Dn as decideChannelsForWorkAgent, En as buildDefaultResumeContinueMessage, Fn as clearAgentPausedSync, G as resumeAgent, Gt as transitionIssueToInProgress, H as restartAgent, Hn as getAgentState, In as clearAgentTroubled, Jn as isRole, Kn as isAgentPaused, Kt as transitionIssueToInReview, Ln as clearAgentTroubledSync, Mn as SESSION_EXITED_BEFORE_KICKOFF, Mt as deliverResumeMessageWithTranscriptConfirmation, Nn as __testInternals, Nt as setAgentDeliveryMethod, On as decideSupervisorForWorkAgent, Pn as clearAgentPaused, Qn as markAgentTroubled, Rn as clearYieldForResumeSync, S as contextWindowForModel, Sr as getAgentRuntimeState, T as shouldReplayCompactAtTierRunBoundary, Tr as saveAgentRuntimeState, U as buildCompactRecoverySeed, Un as getAgentStateFilePath, V as recoverAgent, Vt as buildAgentLaunchConfig, Wn as getAgentStateSync, Wt as retrieveSpawnTimeMemoryContext, X as messageAgent, Xn as markAgentRunningState, Zn as markAgentStoppedState, _n as buildSpawnEnvForModel, _r as isQualifiedAgentId, a as listRunningAgentsSync, an as getRoleRuntimeBaseCommand, ar as setAgentPaused, at as saveSessionId, b as init_agents, bn as getProviderExportsForModel, br as waitForAgentIdle, cn as roleAgentDefinitionPath, cr as wipeAgentStateDirs, en as describeOhmypiSpawnFailure, er as recordAgentFailureSync, et as getActivity, ft as stopAgent, gn as buildCavemanExports, gr as clearReadySignal, i as listRunningAgents, in as getProviderAuthMode, ir as saveAgentStateSync, jn as GOVERNOR_SLOT_PAUSE_REASON_PREFIX, jt as deliverInitialPromptWithRetry, kn as dismissDevChannelsDialog, kt as deliverAgentMessage, ln as waitForPromptReady, lr as writeAgentStateJsonSync, lt as spawnAgent, nr as resetAgentFailureCount, nt as getLatestSessionIdSync, o as warnOnBareNumericIssueIds, or as setAgentPausedSync, pt as stopAgentSync, qn as isAgentTroubled, r as listAgentStates, rr as saveAgentState, rt as getSessionId, sn as injectPiConversationMemory, sr as setAgentYieldedSync, t as dropLegacyAgentStatesMissingRoleAsync, tn as getAgentRuntimeBaseCommand, tt as getLatestSessionId, ut as spawnRun, vn as determineModel, vr as normalizeAgentId, w as replayStandingAgent, x as compactAtTierRunBoundary, xn as getProviderTmuxFlags, xr as waitForReadySignal, yn as getProviderEnvForModel, yr as resolveAgentTargetSync, z as autoRecoverAgents } from "./queries-6d7Cdtm7.js";
|
|
2
|
-
init_agents();
|
|
3
|
-
export { GOVERNOR_SLOT_PAUSE_REASON_PREFIX, OHMYPI_AGENT_READY_TIMEOUT_SECONDS, SESSION_EXITED_BEFORE_KICKOFF, __testInternals, appendActivity, assertWorkspaceStackHealthyForSpawn, autoRecoverAgents, buildAgentLaunchConfig, buildCavemanExports, buildCompactRecoverySeed, buildDefaultResumeContinueMessage, buildSpawnEnvForModel, clearAgentPaused, clearAgentPausedSync, clearAgentTroubled, clearAgentTroubledSync, clearReadySignal, clearYieldForResumeSync, compactAtTierRunBoundary, contextWindowForModel, decideChannelsForWorkAgent, decideSupervisorForWorkAgent, deliverAgentMessage, deliverAgentPermissionDecision, deliverInitialPromptWithRetry, deliverResumeMessageWithTranscriptConfirmation, describeOhmypiSpawnFailure, detectCrashedAgents, determineModel, dismissDevChannelsDialog, dropLegacyAgentStatesMissingRoleAsync, getActivity, getAgentDir, getAgentRuntimeBaseCommand, getAgentRuntimeState, getAgentRuntimeStateSync, getAgentState, getAgentStateFilePath, getAgentStateSync, getLatestSessionId, getLatestSessionIdSync, getProviderAuthMode, getProviderEnvForModel, getProviderExportsForModel, getProviderTmuxFlags, getRoleRuntimeBaseCommand, getSessionId, injectPiConversationMemory, isAgentPaused, isAgentTroubled, isQualifiedAgentId, isRole, listAgentStates, listRunningAgents, listRunningAgentsSync, markAgentRunningState, markAgentStoppedState, markAgentTroubled, messageAgent, normalizeAgentId, recordAgentFailure, recordAgentFailureSync, recoverAgent, replayCrashedStandingAgent, replayStandingAgent, resetAgentFailureCount, resolveAgentTargetSync, restartAgent, resumeAgent, retrieveSpawnTimeMemoryContext, roleAgentDefinitionPath, saveAgentRuntimeState, saveAgentState, saveAgentStateSync, saveSessionId, setAgentDeliveryMethod, setAgentPaused, setAgentPausedSync, setAgentYieldedSync, shouldReplayCompactAtTierRunBoundary, spawnAgent, spawnRun, stopAgent, stopAgentSync, transitionIssueToInProgress, transitionIssueToInReview, waitForAgentIdle, waitForPromptReady, waitForReadySignal, warnOnBareNumericIssueIds, wipeAgentStateDirs, writeAgentStateJsonSync, writeChannelsBridgeMcpConfig };
|
package/server/cli-BsVIHwzC.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { Vr as init_paths, mr as init_errors } from "./config-yaml-DvyMuOle.js";
|
|
3
|
-
import { o as init_layers } from "./layers-DzxSTGNA.js";
|
|
4
|
-
import "effect";
|
|
5
|
-
import "fs";
|
|
6
|
-
import "path";
|
|
7
|
-
import "os";
|
|
8
|
-
//#region ../../lib/context-layers/harness.ts
|
|
9
|
-
/**
|
|
10
|
-
* Render a canonical layer body for a single harness.
|
|
11
|
-
*
|
|
12
|
-
* Strips every `{{#harness:*}}` / `{{/harness:*}}` marker and drops the spans
|
|
13
|
-
* that are not covered by the target harness. Runs of 3+ blank lines left by
|
|
14
|
-
* removed spans collapse to a single blank line so output stays tidy.
|
|
15
|
-
*/
|
|
16
|
-
function renderForHarness(content, harness) {
|
|
17
|
-
const target = HARNESS_MARKERS[harness];
|
|
18
|
-
const openCounts = /* @__PURE__ */ new Map();
|
|
19
|
-
let out = "";
|
|
20
|
-
let lastIndex = 0;
|
|
21
|
-
const emit = (text) => {
|
|
22
|
-
let covered = false;
|
|
23
|
-
let anyOpen = false;
|
|
24
|
-
for (const [name, count] of openCounts) if (count > 0) {
|
|
25
|
-
anyOpen = true;
|
|
26
|
-
if (name === target) covered = true;
|
|
27
|
-
}
|
|
28
|
-
if (!anyOpen || covered) out += text;
|
|
29
|
-
};
|
|
30
|
-
MARKER_RE.lastIndex = 0;
|
|
31
|
-
let m;
|
|
32
|
-
while ((m = MARKER_RE.exec(content)) !== null) {
|
|
33
|
-
emit(content.slice(lastIndex, m.index));
|
|
34
|
-
const [, kind, name] = m;
|
|
35
|
-
const delta = kind === "#" ? 1 : -1;
|
|
36
|
-
openCounts.set(name, (openCounts.get(name) ?? 0) + delta);
|
|
37
|
-
lastIndex = m.index + m[0].length;
|
|
38
|
-
}
|
|
39
|
-
emit(content.slice(lastIndex));
|
|
40
|
-
return out.replace(/\n{3,}/g, "\n\n");
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Lint a context-layer template for malformed harness blocks.
|
|
44
|
-
*
|
|
45
|
-
* Errors: an unclosed `{{#harness:x}}` or a stray `{{/harness:x}}` with no
|
|
46
|
-
* matching open. Warnings: a marker naming a harness Overdeck has no
|
|
47
|
-
* adapter for (allowed for forward compatibility, surfaced so typos —
|
|
48
|
-
* `{{#harness:clade}}` — do not pass silently).
|
|
49
|
-
*/
|
|
50
|
-
function validateTemplate(content) {
|
|
51
|
-
const issues = [];
|
|
52
|
-
const openCounts = /* @__PURE__ */ new Map();
|
|
53
|
-
const seen = /* @__PURE__ */ new Set();
|
|
54
|
-
MARKER_RE.lastIndex = 0;
|
|
55
|
-
let m;
|
|
56
|
-
while ((m = MARKER_RE.exec(content)) !== null) {
|
|
57
|
-
const [, kind, name] = m;
|
|
58
|
-
seen.add(name);
|
|
59
|
-
if (kind === "#") openCounts.set(name, (openCounts.get(name) ?? 0) + 1);
|
|
60
|
-
else {
|
|
61
|
-
const next = (openCounts.get(name) ?? 0) - 1;
|
|
62
|
-
openCounts.set(name, next);
|
|
63
|
-
if (next < 0) issues.push({
|
|
64
|
-
severity: "error",
|
|
65
|
-
message: `stray closing marker {{/harness:${name}}} with no matching {{#harness:${name}}}`
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
for (const [name, count] of openCounts) if (count > 0) issues.push({
|
|
70
|
-
severity: "error",
|
|
71
|
-
message: `unclosed block: {{#harness:${name}}} opened ${count} time(s) without a matching {{/harness:${name}}}`
|
|
72
|
-
});
|
|
73
|
-
for (const name of seen) if (!KNOWN_HARNESS_MARKERS.has(name)) issues.push({
|
|
74
|
-
severity: "warning",
|
|
75
|
-
message: `unknown harness "${name}" — Overdeck ships adapters for: ${[...KNOWN_HARNESS_MARKERS].join(", ")}`
|
|
76
|
-
});
|
|
77
|
-
return {
|
|
78
|
-
ok: !issues.some((i) => i.severity === "error"),
|
|
79
|
-
issues
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
var HARNESS_MARKERS, KNOWN_HARNESS_MARKERS, MARKER_RE;
|
|
83
|
-
var init_harness = __esmMin((() => {
|
|
84
|
-
HARNESS_MARKERS = {
|
|
85
|
-
"claude-code": "claude",
|
|
86
|
-
ohmypi: "ohmypi",
|
|
87
|
-
codex: "codex"
|
|
88
|
-
};
|
|
89
|
-
KNOWN_HARNESS_MARKERS = new Set([
|
|
90
|
-
"claude",
|
|
91
|
-
"pi",
|
|
92
|
-
"ohmypi",
|
|
93
|
-
"codex"
|
|
94
|
-
]);
|
|
95
|
-
MARKER_RE = /\{\{([#/])harness:([a-zA-Z0-9_-]+)\}\}/g;
|
|
96
|
-
}));
|
|
97
|
-
//#endregion
|
|
98
|
-
//#region ../../lib/context-layers/rules.ts
|
|
99
|
-
var init_rules = __esmMin((() => {
|
|
100
|
-
init_paths();
|
|
101
|
-
}));
|
|
102
|
-
//#endregion
|
|
103
|
-
//#region ../../lib/context-layers/render.ts
|
|
104
|
-
/** True when `existing` already contains a Overdeck-managed region. */
|
|
105
|
-
function hasManagedRegion(existing) {
|
|
106
|
-
const beginIdx = existing.indexOf(REGION_BEGIN);
|
|
107
|
-
const endIdx = existing.indexOf(REGION_END);
|
|
108
|
-
return beginIdx !== -1 && endIdx !== -1 && endIdx > beginIdx;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Return `existing` with the Overdeck-managed region removed — i.e. only the
|
|
112
|
-
* hand-authored content the user owns, trimmed. When there is no region, the
|
|
113
|
-
* whole (trimmed) file is the user's. Used to decide whether a target file has
|
|
114
|
-
* pre-existing content worth preserving and backing up before first injection.
|
|
115
|
-
*/
|
|
116
|
-
function userContentOutsideRegion(existing) {
|
|
117
|
-
const beginIdx = existing.indexOf(REGION_BEGIN);
|
|
118
|
-
const endIdx = existing.lastIndexOf(REGION_END);
|
|
119
|
-
if (beginIdx !== -1 && endIdx !== -1 && endIdx > beginIdx) return (existing.slice(0, beginIdx) + existing.slice(endIdx + 29)).trim();
|
|
120
|
-
return existing.trim();
|
|
121
|
-
}
|
|
122
|
-
var REGION_BEGIN, REGION_END;
|
|
123
|
-
var init_render = __esmMin((() => {
|
|
124
|
-
init_rules();
|
|
125
|
-
init_layers();
|
|
126
|
-
REGION_BEGIN = "<!-- BEGIN OVERDECK CONTEXT — managed by `pan sync`; edit the layer source, not this region -->";
|
|
127
|
-
REGION_END = "<!-- END OVERDECK CONTEXT -->";
|
|
128
|
-
}));
|
|
129
|
-
//#endregion
|
|
130
|
-
//#region ../../lib/context-layers/assemble.ts
|
|
131
|
-
var init_assemble = __esmMin((() => {
|
|
132
|
-
init_render();
|
|
133
|
-
}));
|
|
134
|
-
//#endregion
|
|
135
|
-
//#region ../../lib/backup.ts
|
|
136
|
-
var init_backup = __esmMin((() => {
|
|
137
|
-
init_paths();
|
|
138
|
-
init_errors();
|
|
139
|
-
}));
|
|
140
|
-
//#endregion
|
|
141
|
-
//#region ../../lib/context-layers/legacy-beads-cleanup.ts
|
|
142
|
-
var init_legacy_beads_cleanup = __esmMin((() => {
|
|
143
|
-
init_backup();
|
|
144
|
-
init_render();
|
|
145
|
-
}));
|
|
146
|
-
//#endregion
|
|
147
|
-
//#region ../../lib/context-layers/migrate.ts
|
|
148
|
-
var init_migrate = __esmMin((() => {
|
|
149
|
-
init_layers();
|
|
150
|
-
}));
|
|
151
|
-
//#endregion
|
|
152
|
-
//#region ../../lib/context-layers/index.ts
|
|
153
|
-
var init_context_layers = __esmMin((() => {
|
|
154
|
-
init_harness();
|
|
155
|
-
init_layers();
|
|
156
|
-
init_rules();
|
|
157
|
-
init_render();
|
|
158
|
-
init_assemble();
|
|
159
|
-
init_legacy_beads_cleanup();
|
|
160
|
-
init_migrate();
|
|
161
|
-
}));
|
|
162
|
-
//#endregion
|
|
163
|
-
export { init_render as a, KNOWN_HARNESS_MARKERS as c, validateTemplate as d, hasManagedRegion as i, init_harness as l, REGION_BEGIN as n, userContentOutsideRegion as o, REGION_END as r, HARNESS_MARKERS as s, init_context_layers as t, renderForHarness as u };
|
|
164
|
-
|
|
165
|
-
//# sourceMappingURL=context-layers-ZYFcWiyc.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import "./config-yaml-DvyMuOle.js";
|
|
2
|
-
import { E as handleAgentStoppedForOrphanReviewerSessions, T as handleAgentStoppedEvent, mt as handleWorkCompleted, pt as handleReviewCoordinatorDied, w as handleAgentHeartbeatDeadEvent } from "./deacon-pRnyD5w9.js";
|
|
3
|
-
import "./deacon-swarm-DftYRDo8.js";
|
|
4
|
-
export { handleAgentHeartbeatDeadEvent, handleAgentStoppedEvent, handleAgentStoppedForOrphanReviewerSessions, handleReviewCoordinatorDied, handleWorkCompleted };
|