@overdeck/desktop 0.45.24 → 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 +32 -0
- package/package.json +1 -1
- package/server/{acceptance-criteria-DDCnXF58.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-BVwW4qRn.js → advancing-selfheal-De1L-Sb4.js} +6 -6
- package/server/{agent-gc-CHcnvonI.js → agent-gc-CBULruzm.js} +5 -5
- package/server/agent-state-VQk8fY9F.js +3 -0
- package/server/{agent-state-service-BsgWxZuB.js → agent-state-service-BlnSkRFA.js} +5 -5
- package/server/{agent-state-service-D5UGKIJL.js → agent-state-service-hZpxIw1E.js} +1 -1
- package/server/agents-BKKkxKgK.js +3 -0
- package/server/{agents-EbI0zCJl.js → agents-C5rWYhb6.js} +4 -4
- package/server/archive-planning-0FJ6Xd3b.js +2 -0
- package/server/{archive-planning-Du25Jtst.js → archive-planning-C0lAbNB_.js} +16 -24
- package/server/{artifact-index-jobs-CbEDfCDu.js → artifact-index-jobs-ug6ZxIP5.js} +2 -2
- package/server/{assemble-J2ZZ2C15.js → assemble-DnffNpOo.js} +2 -2
- package/server/{backlog-auto-trigger-2R2jog7n.js → backlog-auto-trigger-Dh-i9PQf.js} +3 -3
- package/server/{behavior-B3exJ42O.js → behavior-CfIg6pKp.js} +2 -2
- package/server/bridge-pool-patrol-CUFmjVDN.js +136 -0
- package/server/{briefing-freshness-D1wzUIWv.js → briefing-freshness-DHmCSLar.js} +2 -2
- package/server/{build-info-CZk_TITh.js → build-info-BP160gU7.js} +1 -1
- package/server/{build-info-Ie_D0_BT.js → build-info-CuFfxZxp.js} +5 -3
- package/server/{checkpoint-manager-BI1Wxoku.js → checkpoint-manager-DEWD82qK.js} +2 -2
- package/server/{checkpoint-manager-DwbQoqrC.js → checkpoint-manager-Dxh0FYsv.js} +1 -1
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-CQB1h765.js → checkpoints-CZvbtLnr.js} +2 -2
- package/server/{checkpoints-BJIs5QIA.js → checkpoints-DMTgXuLG.js} +1 -1
- package/server/{claude-hooks-provision-8Ngo8TpT.js → claude-hooks-provision-CN-xo-do.js} +1 -1
- package/server/{claude-hooks-provision-D8GXF3_s.js → claude-hooks-provision-fvy4RD2b.js} +13 -2
- package/server/{claude-permissions-DNWEVV6z.js → claude-permissions-CN0cSCPp.js} +2 -2
- package/server/{claude-settings-overlay-CEdaqpWI.js → claude-settings-overlay-CJn35FHQ.js} +2 -2
- package/server/{claude-settings-overlay-DWy-Bb4Y.js → claude-settings-overlay-Dabi9slj.js} +1 -1
- package/server/cli-DmXETsw-.js +3 -0
- package/server/{cli-RoOx5DUf.js → cli-oCWYA1pE.js} +9 -9
- package/server/{cliproxy-C8a1vtTU.js → cliproxy-C8mB3KuB.js} +2 -2
- package/server/{cliproxy-fHfIeiGd.js → cliproxy-PGwTX_o8.js} +1 -1
- package/server/{close-issue-DoOifFIK.js → close-issue-D5MF5GqF.js} +5 -5
- package/server/{closed-issue-reaper-CktPXo8m.js → closed-issue-reaper-CJ24u0Zt.js} +1 -1
- package/server/{closed-issue-reaper-Bk3SU4RC.js → closed-issue-reaper-Cltx86x5.js} +37 -16
- package/server/{codex-GcHuUF-k.js → codex-BdEsUFWh.js} +1 -1
- package/server/{codex-BZXGhUVB.js → codex-Drlf5Xhf.js} +36 -7
- package/server/{codex-parser-CFZ1_1Jl.js → codex-parser-DpB89Vqa.js} +2 -2
- package/server/compaction-continuation-K2AxQX4H.js +200 -0
- package/server/{config-CKxYiCmX.js → config-B2IMcBxx.js} +4 -3
- package/server/{config-DzV30TOm.js → config-DV-grfQc.js} +1 -1
- package/server/{config-BZ0sHTju.js → config-Dr3pW6w6.js} +2 -2
- package/server/{config-yaml-DySPNmKN.js → config-yaml-CmOPzmBb.js} +268 -14
- package/server/{conflict-gate-BaCVrH-N.js → conflict-gate-B9cN3SBi.js} +4 -4
- package/server/{conflict-gate-BhAY7TUd.js → conflict-gate-Dh754uyA.js} +1 -1
- package/server/{context-layers-BrPmE__h.js → context-layers-D6LZo3l1.js} +2 -2
- package/server/{context-layers-igZ4FI4_.js → context-layers-dR5YxHYB.js} +3 -3
- package/server/{control-settings-BQp7_4uD.js → control-settings-C7DUehE1.js} +49 -19
- package/server/{conversation-compaction-CgrR8YYp.js → conversation-compaction-BoqdDXWF.js} +8 -8
- package/server/{conversation-compaction-eQB5CkOe.js → conversation-compaction-Dj4FAKoZ.js} +1 -1
- package/server/{conversation-service-DPJ71F33.js → conversation-service-5aCnq1zR.js} +8 -7
- package/server/conversation-service-BCxl4f8Z.js +3 -0
- package/server/{conversations-6AfUfbwc.js → conversations-BUpYsOZg.js} +4 -4
- package/server/{conversations-CAsJF9kh.js → conversations-C34dyIb9.js} +1 -1
- package/server/{cost-B2ddP6wq.js → cost-Bgcub5kW.js} +12 -2
- package/server/{cost-R-m6Yi-W.js → cost-CvxRrucd.js} +3 -3
- package/server/{cost-sync-BsN6ER0n.js → cost-sync-Dv3LUaNW.js} +3 -3
- package/server/{dag-B1ucnjDU.js → dag-ombYYt4s.js} +2 -2
- package/server/{dangerous-git-ops-BXqeWVSf.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-CU_cAYSR.js → deacon-hi9KLPLT.js} +2933 -2704
- package/server/{deacon-nudge-log-6wVqAaqz.js → deacon-nudge-log-BNBebzeL.js} +3 -3
- package/server/deacon-pending-lifecycle-Cpk0k7Hi.js +33 -0
- package/server/{deacon-swarm-BXZZ1Z2-.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-AiFoP8dw.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-C3F-tihF.js → deploy-window-rpqpWqHA.js} +40 -16
- package/server/{dev-supervisor-bcOWqdQE.js → dev-supervisor-CC46Ig8q.js} +2 -2
- package/server/{devcontainer-renderer-_d6XhyND.js → devcontainer-renderer-68CSCRnu.js} +3 -3
- package/server/{dist-Cb_0uvpS.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-DcMTFTUC.js → docker-Dam7mbIB.js} +2 -2
- package/server/{dod-C6n9RV3G.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-DNi-ono3.js → ensure-devcontainer-B057YA81.js} +4 -4
- package/server/{ensure-devcontainer-BZgOhRo7.js → ensure-devcontainer-C98V8yW-.js} +1 -1
- package/server/{esm-shims-OSHAYaS1.js → esm-shims-Br9BPdkR.js} +1 -1
- package/server/{event-store-EV2cMiXj.js → event-store-ELqkVOn0.js} +1 -1
- package/server/{event-store-CQL6NeqB.js → event-store-zY5MJHgF.js} +23 -4
- package/server/{events-BTdrdEq8.js → events-D6pyqhzM.js} +1 -1
- package/server/{events-DTfAe4My.js → events-D9PR1IC0.js} +3 -3
- package/server/{factory-CFibJuaw.js → factory-CRoOpGsF.js} +5 -5
- package/server/{feature-registry-population-DKZFMbFt.js → feature-registry-population--YUXU999.js} +4 -4
- package/server/{feature-registry-storage-BdPuLcBX.js → feature-registry-storage-BORBTo0y.js} +2 -2
- package/server/{features-ez2271oH.js → features--nFkJY8v.js} +2 -2
- package/server/{feedback-target-CoFDHiM8.js → feedback-target-C0ZzyHvU.js} +1 -1
- package/server/{feedback-target-7mqqwrX6.js → feedback-target-Dt9BsapX.js} +8 -8
- package/server/{feedback-writer-CY5L1lB7.js → feedback-writer-BG0RUZiu.js} +5 -5
- package/server/{feedback-writer-D3a22RCd.js → feedback-writer-D1fm-5Z8.js} +1 -1
- package/server/{flywheel-SVF02Jpq.js → flywheel-BekukH4i.js} +1 -1
- package/server/{flywheel-DHrgCphM.js → flywheel-BiT3odRb.js} +23 -15
- package/server/{flywheel-DzGtWnJ1.js → flywheel-CLVB55Be.js} +16 -15
- 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-kNxT0bZC.js → from-D_4_dk7i.js} +1 -1
- package/server/{fts-db-CE46vDkZ.js → fts-db-BeOomFa-.js} +2 -2
- package/server/{fts-operations-CqY6zl-i.js → fts-operations-BdewJ_g9.js} +2 -2
- package/server/git-utils-CI6cwyyC.js +3 -0
- package/server/{git-utils-CRw2zLPC.js → git-utils-ameCgDdy.js} +30 -5
- package/server/{github-app-C3QrAUd0.js → github-app-CQ1Lo6LA.js} +3 -3
- package/server/{github-app-ClZ2lk8D.js → github-app-DtAsvwzK.js} +1 -1
- package/server/{github-client-BnIsSrEN.js → github-client-BfyDxuRN.js} +2 -2
- package/server/{github-client-DfQYVUaw.js → github-client-Cj0yl_07.js} +1 -1
- package/server/github-pr-lookup-BDq6Wznz.js +58 -0
- package/server/{harness-binary-DPUi-Pv8.js → harness-binary-DqkftwTb.js} +2 -2
- package/server/{harness-resolve-3lNZkyT4.js → harness-resolve-CqMqM1Mb.js} +4 -4
- package/server/{health-events-BBcTYQKU.js → health-events-CazRxJUS.js} +2 -2
- package/server/{health-events-BDOHby5Q.js → health-events-_xfTaOUs.js} +1 -1
- package/server/{hooks-CKZgXlJb.js → hooks-BO3QT1sn.js} +2 -2
- package/server/{hooks-DPVX1rwQ.js → hooks-BnJsxlSq.js} +1 -1
- package/server/{hume-Cz8igP9E.js → hume-CDYJxqx-.js} +2 -2
- package/server/hume-Dq--7rOQ.js +3 -0
- package/server/{idle-stack-reaper-CuLF0j2H.js → idle-stack-reaper-BYqERdkE.js} +1 -1
- package/server/{idle-stack-reaper-DDIRwxUY.js → idle-stack-reaper-CnGx_PO_.js} +99 -6
- package/server/in-flight-guard-Bq3epG58.js +45 -0
- package/server/{infra-BEqFxlJc.js → infra-BjuxvjdS.js} +70 -5
- package/server/{injection-CPUIqNhI.js → injection-DZxlV2al.js} +1 -1
- package/server/{injection-C8aiVJrF.js → injection-UCf8EsjX.js} +7 -7
- package/server/{inspect-agent-BLuJ1AkT.js → inspect-agent-6kylZnrm.js} +26 -25
- package/server/inspect-agent-BVwDrVrz.js +2 -0
- package/server/{internal-token-s0-oKybJ.js → internal-token-DvMTQSOS.js} +2 -2
- package/server/{internal-token-BrcU6qfe.js → internal-token-M9omeXM1.js} +1 -1
- package/server/{io-C9kF1wtJ.js → io-VHvc0Ssp.js} +43 -26
- package/server/{issue-closed-CDJk4pIp.js → issue-closed-B6KJkmHZ.js} +7 -7
- package/server/{issue-lifecycle-B8sZHVHh.js → issue-lifecycle-9gk3fnXN.js} +1 -1
- package/server/{issue-lifecycle-ojZAzDBP.js → issue-lifecycle-C4Zj0WmE.js} +34 -28
- package/server/{issue-service-singleton-Yx5DdmVJ.js → issue-service-singleton-DmCh7EHj.js} +10 -10
- package/server/{issue-service-singleton-BvJ09SaR.js → issue-service-singleton-PMx8F1jr.js} +1 -1
- package/server/{issues-BMmP_77e.js → issues-CgnQ1OGQ.js} +2 -2
- package/server/{jsonl-parser-BXSlHwEh.js → jsonl-parser-DJOH_O-w.js} +5 -4
- package/server/{label-cleanup-B0UJwnv5.js → label-cleanup-Dv7AV_R1.js} +3 -3
- package/server/{label-reconciler-B4iOAjlC.js → label-reconciler--F85rufp.js} +4 -4
- package/server/{lifecycle-yPd___5E.js → lifecycle-CTdOWYMi.js} +2 -2
- package/server/{lifecycle-xmBfK2GJ.js → lifecycle-DDN8ApVY.js} +6 -7
- package/server/{lifecycle-io-BREGpnLk.js → lifecycle-io-D-lGdzK3.js} +5 -5
- package/server/{lifecycle-io-DPo7x11I.js → lifecycle-io-D_zTLvP1.js} +1 -1
- package/server/{linear-client-BsuUvkdA.js → linear-client-BQU36QqE.js} +2 -2
- package/server/{linear-client-CTskEeT_.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-CefQNAnq.js → merge-Bpx4jjht.js} +13 -11
- package/server/{merge-agent-4WOWlSYA.js → merge-agent-DdMVSV2Y.js} +233 -83
- package/server/{merge-agent-CKkgIBPB.js → merge-agent-DrXa1CpW.js} +1 -1
- package/server/{merge-batch-ClFn2T-y.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-B1DiziGU.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-BfaTyXsw.js → merge-rebase-xLnMlw5h.js} +3 -3
- package/server/{merge-set-DJ8-UErs.js → merge-set-DH7ot3yz.js} +11 -5
- package/server/merge-set-DzsOTBg5.js +3 -0
- package/server/{merge-sync-VPV28g0g.js → merge-sync-CQ-LgZ1_.js} +406 -153
- package/server/merge-sync-Ca7F5JnQ.js +3 -0
- package/server/{merge-train-CHopycP0.js → merge-train-DTEMyIu4.js} +18 -8
- package/server/{merge-train-deps-D1cOZzy2.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-duPAfSBw.js → multipart-parser-IMSBfePV.js} +2 -2
- package/server/{no-resume-mode-Nw29vaFb.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/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-CTSGcK8p.js → orphan-proposed-reconciler-CWmOdM9-.js} +1 -1
- package/server/{orphan-proposed-reconciler-BvKkWMJQ.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-B0c3w0Ya.js → pan-dir-ubraCiUg.js} +24 -10
- package/server/{paths-D-xWGHdh.js → paths-cXmOwSbh.js} +2 -2
- package/server/pending-lifecycle-claim-DEteYdS9.js +110 -0
- package/server/{pickup-DUCLWrJY.js → pickup-D8xtG1J2.js} +1 -1
- package/server/pipeline-membership-BGSvkT2M.js +3 -0
- package/server/pipeline-membership-CrAPLYtf.js +57 -0
- package/server/{pipeline-membership-mY3GprlK.js → pipeline-membership-gather-CET40frr.js} +177 -109
- package/server/pipeline-membership-gather-DTfcgxLl.js +3 -0
- package/server/{pipeline-notifier-BXkJzDC4.js → pipeline-notifier-BuQ0e4hF.js} +2 -2
- package/server/{pipeline-notifier-BJr8gQX6.js → pipeline-notifier-ImNXknf0.js} +1 -1
- package/server/post-merge-lifecycle-worker-DbO10pum.js +50 -0
- package/server/{project-pipelines-C0MWUeCU.js → project-pipelines-Bim6bThI.js} +2 -2
- package/server/{project-repos-B6GycDh9.js → project-repos-C0nuoBGv.js} +7 -3
- package/server/project-repos-CRE6Ykow.js +3 -0
- package/server/projects-B03Wr-xc.js +3 -0
- package/server/{prompts-DxzFXuLl.js → prompts-BEx08AIu.js} +2 -2
- package/server/{providers-u4Ga0jOr.js → providers-D7IluJe0.js} +1 -1
- package/server/{providers-qQAwGQDW.js → providers-evXhiQeg.js} +7 -7
- package/server/public/assets/{chunk-BO2N2NFS-BamJdinX.js → chunk-BO2N2NFS-D1s4-Sqp.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-DfOB8-w4.js → diagram-OG6HWLK6-1gdMoSF7.js} +1 -1
- package/server/public/assets/{dist-D7zYSEA6.js → dist-CxAOHbil.js} +1 -1
- package/server/public/assets/{dist-ByIuzMQW.js → dist-DqDRYW6P.js} +3 -3
- package/server/public/assets/{ganttDiagram-6RSMTGT7-EdmRyXL3.js → ganttDiagram-6RSMTGT7-BYex-Ec7.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-MerOfTX8.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-BBbArIcK.js → linear-B4cuEFmO.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-DyDHFXHV.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-BKIddiJN.js → pieDiagram-4H26LBE5-CBHNBIJQ.js} +1 -1
- package/server/public/assets/{prod-B8vYiu52.js → prod-CN2nHBvX.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-D6RtoULk.js → quadrantDiagram-W4KKPZXB-Bom87VOQ.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-CLrCedZX.js → sankeyDiagram-5OEKKPKP-UrBeyLxk.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-hznR8DYl.js → xychartDiagram-2RQKCTM6-DhkbrIxR.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-7N8WKseP.js → pull-requests-Cv7LxzUN.js} +1 -1
- package/server/{pull-requests-_lHueOHW.js → pull-requests-DHWiKxo7.js} +19 -10
- package/server/{queries-CjNIf-Ub.js → queries-DHJm7bTd.js} +631 -110
- package/server/{rally-CyWT_lNO.js → rally-B71M9f4o.js} +3 -3
- package/server/rally-YDjU513q.js +3 -0
- package/server/{rally-api-ClOSd-Tt.js → rally-api-D5uXN08-.js} +1 -1
- package/server/{rally-api-C8e_1JRi.js → rally-api-Dkqmok65.js} +2 -2
- package/server/{rally-client-lc-nokqr.js → rally-client-Bfqm6XI4.js} +4 -4
- package/server/{rally-client-sgtVqzNU.js → rally-client-CxsA6ExK.js} +1 -1
- package/server/{reap-terminal-sessions-7KeHv1R1.js → reap-terminal-sessions-BQ23nriz.js} +2 -2
- package/server/{reap-terminal-sessions-BtHPo6Xc.js → reap-terminal-sessions-CvmwaqKv.js} +2 -2
- package/server/{rebuild-stack-lwtsW0GO.js → rebuild-stack-0EEYReVZ.js} +16 -7
- package/server/{rebuild-stack-CFvcBHsS.js → rebuild-stack-qeRqHZxH.js} +2 -2
- package/server/{reconstruct-cache-C3Ui7ojV.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-dE1Aw83j.js → record-update-Z0QCxmMp.js} +124 -34
- package/server/{recovery-trip-BvRWfUXM.js → recovery-trip-eJe26h-f.js} +2 -2
- package/server/{release-engine-Cx48W7z8.js → release-engine-lPUp-MTd.js} +5 -5
- package/server/{release-set-CQfuN9-v.js → release-set-BwGeyZKX.js} +3 -3
- package/server/{remote-C_2hasl7.js → remote-BCd02Es1.js} +3 -3
- package/server/{remote-ChgimyYa.js → remote-CVGUhXMV.js} +3 -3
- package/server/{remote-agents-CA3Ihlxj.js → remote-agents-C1bssi41.js} +2 -2
- package/server/{remote-agents-By1ige5O.js → remote-agents-C_VxssLU.js} +300 -46
- package/server/{remote-completion-fVe9e_3u.js → remote-completion-DAB0P706.js} +12 -12
- package/server/resume-u9byntrq.js +3 -0
- package/server/{review-agent-DNboMyW4.js → review-agent-CD4RCI0Y.js} +1 -1
- package/server/{review-agent-CIGOQYBD.js → review-agent-CHhI66UP.js} +60 -47
- package/server/{review-artifacts-nRDPuMxd.js → review-artifacts-DSMRIfuJ.js} +7 -6
- package/server/{review-context-2uj-YQ8J.js → review-context-oFuBbiEE.js} +8 -8
- package/server/{in-flight-guard-CAAkqPLu.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-Dci-ZwEt.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-BTOpxtTC.js → review-status-sync-483sujRo.js} +2 -2
- package/server/{review-status-sync-DSDK3OMy.js → review-status-sync-NaWvI9Xf.js} +1 -1
- package/server/review-status-yljtTd-q.js +7521 -0
- package/server/{review-verdict-feedback-CTd4QMBu.js → review-verdict-feedback-BPDn4li_.js} +1 -1
- package/server/{review-verdict-feedback-CCjVA7Uk.js → review-verdict-feedback-CELeUinh.js} +48 -8
- package/server/{rollup-FGsKki9R.js → rollup-DTNvelz9.js} +8 -8
- package/server/{rollup-BKQC7jp4.js → rollup-DYZfq1c4.js} +1 -1
- package/server/{scanner-CnqEZeDy.js → scanner-CV35oSn4.js} +8 -7
- package/server/{sequence-io-D909zgeH.js → sequence-io-DF_8iuhV.js} +4 -4
- package/server/{sequencer-agent-CzkcK6P5.js → sequencer-agent-B2WeCtGi.js} +5 -5
- package/server/server.js +1952 -578
- package/server/{service-CLeAoU6G.js → service-Br9rpBNA.js} +81 -64
- package/server/{session-fork-CHI1XvL9.js → session-fork-D0LY152N.js} +2 -2
- package/server/{session-history-BT3IvqhC.js → session-history-BUyK29eq.js} +4 -4
- package/server/{settings-BTMvpNFU.js → settings-Bse1Pdcj.js} +3 -3
- package/server/settings-CdvIF84R.js +2 -0
- package/server/{settings-C0zgxOGf.js → settings-CvVGqNEs.js} +3 -2
- package/server/{shadow-engineering-BJfgm-hX.js → shadow-engineering-BWLa8ODz.js} +2 -2
- package/server/{shadow-state-7a-524T8.js → shadow-state-B4fpKxOO.js} +2 -2
- package/server/{shadow-state-DnDyjujH.js → shadow-state-FV6PHfEW.js} +1 -1
- package/server/{shadow-utils-Db3oroFG.js → shadow-utils-D7asqxOZ.js} +2 -2
- package/server/{ship-log-D9MlVzYU.js → ship-log-xplJ8t75.js} +1 -1
- package/server/{smart-compaction-CV2ukKND.js → smart-compaction-CPp2Ykf6.js} +1 -1
- package/server/{smart-compaction-KCYScAU1.js → smart-compaction-D3U_79f-.js} +8 -7
- package/server/{spawn-planning-session-qUC2VWu3.js → spawn-planning-session-1nFi3gfk.js} +1 -1
- package/server/{spawn-planning-session-DKpdFyOC.js → spawn-planning-session-DGfZ5B8D.js} +17 -17
- package/server/{specialist-completion-Ky9wCDpb.js → specialist-completion-Br48eiDP.js} +1 -1
- package/server/{specialist-context-Bn3dCGS2.js → specialist-context-cVbGnTa3.js} +5 -5
- package/server/{specialist-handoff-logger-CMEwYxa2.js → specialist-handoff-logger-DK-GTz4s.js} +2 -2
- package/server/{specialist-logs-C5p8G7tx.js → specialist-logs-Cl5-hqT8.js} +3 -3
- package/server/{specialists-CC4r-c2s.js → specialists-CNfYO3G2.js} +975 -227
- package/server/{specialists-jiuuyVkp.js → specialists-Cicieuzu.js} +18 -18
- package/server/{specialists-CShuVGWT.js → specialists-JHsdU3pA.js} +1 -1
- package/server/{specialists-DM6bWjsi.js → specialists-Tdezg_6N.js} +1 -1
- package/server/specs-Bt7WJDoC.js +3 -0
- package/server/src-CRmCHlma.js +11408 -0
- package/server/{src-CXmtj0im.js → src-Ck028hjO.js} +6 -6
- package/server/{src-CdmnTM2m.js → src-UWcGe0Ix.js} +3 -3
- package/server/{stack-health-Bn3o8FBX.js → stack-health-CJLMrLBl.js} +1 -1
- package/server/{stack-health-DxSdG9cW.js → stack-health-DqSqx0zv.js} +7 -5
- package/server/{stale-task-claims-KJKxxiiQ.js → stale-task-claims-CYFOUNlT.js} +4 -4
- package/server/{staleness-CT34nwr9.js → staleness-BQ-0gMYK.js} +1 -1
- package/server/{staleness-DPm7ClwA.js → staleness-D47CUJok.js} +1 -1
- package/server/{state-home-Cn_Qu8IX.js → state-home-BYV7qZTW.js} +2 -2
- package/server/{state-mapping-BL_-3Yt8.js → state-mapping-BVldLhBf.js} +1 -1
- package/server/{state-migrate-BGg2ZaOt.js → state-migrate-CvvBtS0Y.js} +4 -4
- package/server/{stuck-remediation-s9_2qfi6.js → stuck-remediation-Wt0UVvu1.js} +1 -1
- package/server/{stuck-remediation-DYuPRYYw.js → stuck-remediation-mkLC6G_t.js} +79 -22
- package/server/{substrate-bug-weights-service-B-FwCs5V.js → substrate-bug-weights-service-XfLAKnmK.js} +3 -3
- package/server/{summary-fork-DpcxN9tf.js → summary-fork-CD7GOts0.js} +2 -2
- package/server/{summary-fork-D1RAk9rJ.js → summary-fork-xiXBnWG9.js} +8 -8
- package/server/supervisor/{injection-budget-Csw5tqfJ.js → injection-budget-B5SbvDx2.js} +1 -1
- package/server/supervisor/{paths-DehGY2Fj.js → paths-K3noE4N_.js} +1 -1
- package/server/supervisor/pty-supervisor.js +49 -3
- package/server/supervisor/{pty-token-x-ea28Us.js → pty-token-B7lp0ElT.js} +2 -2
- package/server/{supervisor-wM4ooB5O.js → supervisor-DL788vos.js} +3 -3
- package/server/supervisor-UWiQNK-y.js +2 -0
- package/server/{swarm-readiness-DlP_UjHq.js → swarm-readiness-BV14DF5N.js} +3 -3
- package/server/{system-prerequisites-DUDj1YHf.js → system-prerequisites-pdWG6ZQs.js} +2 -2
- package/server/{teardown-workspace-DeTTImn-.js → teardown-workspace-l2F4_zim.js} +15 -16
- package/server/{test-agent-queue-MbxX5vqq.js → test-agent-queue-qakFIIGz.js} +6 -6
- package/server/{test-verdict-bWYBtqBg.js → test-verdict-BJYDggMm.js} +1 -1
- package/server/{test-verdict-gscuksPv.js → test-verdict-Gw-btEfb.js} +1 -1
- package/server/{tldr-daemon-BYFkts95.js → tldr-daemon-BKOYB616.js} +1 -1
- package/server/{tldr-daemon-C-69c3OI.js → tldr-daemon-CBaWkV9k.js} +2 -2
- package/server/{tmux-R7N7y-Mh.js → tmux-B1Wbxz5o.js} +3 -3
- package/server/{tmux-B6z7h_vZ.js → tmux-DQ6jB76i.js} +1 -1
- package/server/{launcher-generator-BBWG_SiS.js → tmux-dedup-DbN6MGzM.js} +428 -9
- package/server/{token-BK6t8BIT.js → token-Cxbk023d.js} +2 -2
- package/server/{token-util-DxXu-vd1.js → token-util-CLq2MmQt.js} +1 -1
- package/server/token-util-zlz9U0ki.js +3 -0
- package/server/{tracker-config-G6latr8C.js → tracker-config-DZ8Zn2nQ.js} +2 -2
- package/server/{tracker-utils-DHv5pSDT.js → tracker-utils-L0FKtjq2.js} +3 -3
- package/server/{traefik-connect-Df2uXPsQ.js → traefik-connect-bNX6jKkb.js} +1 -1
- package/server/{tunnel-CDVKJpRv.js → tunnel-BAm1XgjG.js} +3 -3
- package/server/{tunnel-DGdUkGoZ.js → tunnel-CjSnHdTc.js} +1 -1
- package/server/{types-5M0lupud.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-IfDGkaVR.js → validate-Cxsx5Uz1.js} +8 -6
- package/server/{validation-CC9OPqJZ.js → validation-DEaTZafj.js} +1 -1
- package/server/{validation-Dw1pzDzr.js → validation-VZgJxmqc.js} +4 -4
- package/server/{verification-artifact-B3itKTxu.js → verification-artifact-C85cRTc_.js} +1 -1
- package/server/{verification-artifact-TVFSz_q1.js → verification-artifact-g3yuxQDL.js} +1 -1
- package/server/{verification-runner-BW4HOKAz.js → verification-runner-DlZI8yhw.js} +1 -1
- package/server/{verification-runner-CkgX6EtI.js → verification-runner-KDZIsBj4.js} +40 -18
- package/server/{vtt-parser-DYPbKcIJ.js → vtt-parser-Jr94BF3Y.js} +1 -1
- package/server/{work-agent-prompt-Du8Vh2aJ.js → work-agent-prompt-C-vuP3_J.js} +20 -9
- package/server/workflows-CHrx_hcW.js +2 -0
- package/server/{workflows-mbQzh6mQ.js → workflows-D0oip4eV.js} +161 -78
- package/server/{workspace--8tnhDI0.js → workspace-BqFg__wH.js} +1 -1
- package/server/{workspace-BPUws1-_.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-CIVWZOQr.js → workspace-config-B123aZl-.js} +1 -1
- package/server/workspace-manager-CDTKjjdU.js +3 -0
- package/server/{workspace-manager-CBhNdzE4.js → workspace-manager-CwO-Hek7.js} +156 -117
- package/server/{workspace-metadata-_WygnyoX.js → workspace-metadata-CQv00QwK.js} +2 -2
- package/server/{workspace-metadata-BzHnwwX4.js → workspace-metadata-D4M8BM4W.js} +1 -1
- package/server/{workspaces-Do_9J0LQ.js → workspaces-j1e_6aAT.js} +719 -292
- 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-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-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/agents-wi9NWzs2.js +0 -3
- package/server/archive-planning-BZDgzoEj.js +0 -3
- package/server/cli-B86rejVV.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/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/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/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/specs-C8Wsn2XO.js +0 -3
- package/server/src-DtcUOZCq.js +0 -4826
- package/server/supervisor-FTJAIsAK.js +0 -2
- package/server/token-util-DuPuNriz.js +0 -3
- package/server/tracker-utils-B4ylXZQK.js +0 -3
- package/server/uat-train-B05BWkp-.js +0 -2
- package/server/uat-train-DDSrSoV1.js +0 -2152
- package/server/workflows-BQu4RFQ-.js +0 -2
- package/server/workspace-manager-CWT55qeI.js +0 -3
|
@@ -1,52 +1,54 @@
|
|
|
1
1
|
import { n as __esmMin, o as __toESM } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { B as getProviderEnvSync,
|
|
3
|
-
import {
|
|
4
|
-
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-
|
|
5
|
-
import {
|
|
6
|
-
import { a as init_event_store, i as initEventStore } from "./event-store-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { i as countAgentsByStatus, o as init_agents$1 } from "./agents-
|
|
10
|
-
import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-
|
|
11
|
-
import { o as getPricingSync, s as init_cost } from "./cost-
|
|
12
|
-
import { _ as init_tier_metrics, g as estimateFeedDeliveryTokens, v as recordTierFeedDelivery } from "./cost-sync-
|
|
13
|
-
import { a as persistCurrentSessionId, d as isAgentStateServiceInProcess, i as logLauncherSessionPinned, l as getRuntimeSnapshot, n as createFreshSessionIdentity, o as init_persistent_logger, r as init_session_history, s as logAgentLifecycleSync, u as init_agent_runtime_mirror } from "./session-history-
|
|
14
|
-
import { t as init_behavior } from "./behavior-
|
|
15
|
-
import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-
|
|
16
|
-
import { i as readReviewStatusMap, n as init_review_status_source, r as isRoleTerminal } from "./review-status-source-
|
|
17
|
-
import { m as readWorkspacePlanSync, o as init_io } from "./io-
|
|
18
|
-
import { c as bridgeGeminiAuthToCliproxy, d as getCliproxyAuthDir, g as getCliproxyLogPath, l as decodeJwtPayload$1, p as getCliproxyClientEnv, s as bridgeCodexAuthToCliproxySync, v as init_cliproxy } from "./cliproxy-
|
|
19
|
-
import { L as normalizeHarness, R as reactivateConversationForSpawn, S as getConversationByName, k as init_conversations, y as createConversation } from "./conversations-
|
|
20
|
-
import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population
|
|
21
|
-
import { a as readCavemanVariant, n as init_workspace } from "./workspace-
|
|
22
|
-
import {
|
|
23
|
-
import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-
|
|
24
|
-
import { E as init_layers, I as workspaceContextFile, P as resolveWorkspaceContextFile, c as init_render, i as workspaceContextWithoutProjectLayer, l as renderGlobalLayer, r as init_assemble, u as renderProjectLayer, v as init_harness, y as renderForHarness } from "./assemble-
|
|
25
|
-
import { a as extractThreadIdFromRollout, c as initCodexHome, l as init_codex, o as findLatestRollout } from "./codex-
|
|
26
|
-
import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-
|
|
27
|
-
import { f as init_config, m as loadConfigSync$1 } from "./config-
|
|
28
|
-
import { a as getFlywheelActiveRunIdSync, s as init_control_settings } from "./control-settings-
|
|
29
|
-
import { n as createTrackerFromConfig, r as init_factory, t as createTracker } from "./factory-
|
|
30
|
-
import { a as getWorkspaceStackHealth, s as init_stack_health } from "./stack-health-
|
|
31
|
-
import { i as createActiveSlice, l as init_dag, o as getDispatchableItems, s as groupItemsByWave } from "./dag-
|
|
32
|
-
import { c as generateFixedPointPromptSync, f as initHookSync, n as checkHookSync, p as init_hooks } from "./hooks-
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
import { t as
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
38
|
-
import {
|
|
39
|
-
import {
|
|
40
|
-
import {
|
|
2
|
+
import { B as getProviderEnvSync, C as TIERED_EXECUTION_DIFFICULTIES, Cr as ClaudeCredentialParseError, D as resolveTieredExecutionEnabled, Fr as init_errors, G as setupCredentialFileAuthSync, Gn as init_projects, H as init_providers, In as getIssuePrefix, Ir as AGENTS_DIR, K as ensureOpenAICompatibleProxyRunning, L as clearCredentialFileAuthSync, Mn as findProjectByPathSync, O as resolveTieredExecutionEnabledForIssue, Pt as init_record, R as getBuiltInDefaultHarness, Rn as getProjectSwarmHotspots, Rt as readIssueRecordForWorkspaceSync, S as DEFAULT_TIERED_EXECUTION_CONFIG, Sn as init_state_read_home, T as init_tier_table, Tr as FsError, Ut as writeAgentHarnessModelSync, V as getProviderForModelSync, Vt as resolveProjectForIssue, ar as resolveProjectFromIssueSync, ci as init_paths, di as resolveOhmypiExtensionPath, dt as fmix32, ei as encodeClaudeProjectDir, et as init_roles, f as loadConfigSync, fi as sessionFilePath, ft as fnv1a32, gr as init_issue_id, it as getModelCapabilitySync, l as isClaudeCodeChannelsMcpEnabled, li as isDevMode, lt as resolveModelIdSync, ot as hasModelCapabilitySync, pt as init_percent, q as init_openai_compatible_proxy, si as getOverdeckHome, st as init_model_capabilities, t as init_config_yaml, tt as resolveModel, u as isTldrEnabledSync, ui as packageRoot, ut as CLIPROXY_GPT56_CONTEXT_WINDOW, wn as shouldCommitLegacyWorkspaceArtifacts, xr as require_dist, yr as resolveBareNumericIdSync, zn as getProjectSync, zt as readIssueRecordSync } from "./config-yaml-CmOPzmBb.js";
|
|
3
|
+
import { i as emitActivityTtsSync, o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
|
|
4
|
+
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BjuxvjdS.js";
|
|
5
|
+
import { A as listPaneValues, D as killSession, E as isPaneDead, H as sessionExists, O as killSessionSync, P as listSessionsSync, Q as BLANKED_PROVIDER_ENV, R as sendEscapeKeyAsync, U as sessionExistsSync, V as sendRawKeystroke, W as setOption, a as capturePaneSync, c as createSessionSync, i as capturePane, m as exactPaneTarget, s as createSession, tt as init_child_env, w as init_tmux, z as sendKeys } from "./tmux-B1Wbxz5o.js";
|
|
6
|
+
import { a as init_event_store, i as initEventStore } from "./event-store-zY5MJHgF.js";
|
|
7
|
+
import { o as OHMYPI_BEHAVIOR, s as getHarnessBehavior } from "./src-CRmCHlma.js";
|
|
8
|
+
import { F as init_pipeline_agent_reader, G as saveOverdeckAgentStateSync, H as getOverdeckAgentStateSync, I as registerPipelineTelemetryAgentReader, S as setReviewStatusSync, U as init_agent_state_sync, W as listOverdeckAgentStatesSync, f as init_review_status, u as getReviewStatusSync, v as resetPipelineVerdictsForWorkStartSync } from "./review-status-yljtTd-q.js";
|
|
9
|
+
import { i as countAgentsByStatus, o as init_agents$1 } from "./agents-C5rWYhb6.js";
|
|
10
|
+
import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-DHmCSLar.js";
|
|
11
|
+
import { o as getPricingSync, s as init_cost } from "./cost-Bgcub5kW.js";
|
|
12
|
+
import { _ as init_tier_metrics, g as estimateFeedDeliveryTokens, v as recordTierFeedDelivery } from "./cost-sync-Dv3LUaNW.js";
|
|
13
|
+
import { a as persistCurrentSessionId, d as isAgentStateServiceInProcess, i as logLauncherSessionPinned, l as getRuntimeSnapshot, n as createFreshSessionIdentity, o as init_persistent_logger, r as init_session_history, s as logAgentLifecycleSync, u as init_agent_runtime_mirror } from "./session-history-BUyK29eq.js";
|
|
14
|
+
import { t as init_behavior } from "./behavior-CfIg6pKp.js";
|
|
15
|
+
import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DvMTQSOS.js";
|
|
16
|
+
import { i as readReviewStatusMap, n as init_review_status_source, r as isRoleTerminal } from "./review-status-source-CpvJnvnQ.js";
|
|
17
|
+
import { m as readWorkspacePlanSync, o as init_io } from "./io-VHvc0Ssp.js";
|
|
18
|
+
import { c as bridgeGeminiAuthToCliproxy, d as getCliproxyAuthDir, g as getCliproxyLogPath, l as decodeJwtPayload$1, p as getCliproxyClientEnv, s as bridgeCodexAuthToCliproxySync, v as init_cliproxy } from "./cliproxy-C8mB3KuB.js";
|
|
19
|
+
import { L as normalizeHarness, R as reactivateConversationForSpawn, S as getConversationByName, k as init_conversations, y as createConversation } from "./conversations-BUpYsOZg.js";
|
|
20
|
+
import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population--YUXU999.js";
|
|
21
|
+
import { a as readCavemanVariant, n as init_workspace } from "./workspace-C0fH3aek.js";
|
|
22
|
+
import { _ as shellQuoteModelIdSync, d as generateLauncherScriptSync, f as init_launcher_generator, g as requireModelOverrideSync, h as normalizeModelOverrideSync, i as completeKeyedSubmit, l as init_tmux_dedup, m as init_model_validation, u as sendKeysDedup } from "./tmux-dedup-DbN6MGzM.js";
|
|
23
|
+
import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-CN0cSCPp.js";
|
|
24
|
+
import { E as init_layers, I as workspaceContextFile, P as resolveWorkspaceContextFile, c as init_render, i as workspaceContextWithoutProjectLayer, l as renderGlobalLayer, r as init_assemble, u as renderProjectLayer, v as init_harness, y as renderForHarness } from "./assemble-DnffNpOo.js";
|
|
25
|
+
import { a as extractThreadIdFromRollout, c as initCodexHome, l as init_codex, o as findLatestRollout } from "./codex-Drlf5Xhf.js";
|
|
26
|
+
import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-DqkftwTb.js";
|
|
27
|
+
import { f as init_config, m as loadConfigSync$1 } from "./config-Dr3pW6w6.js";
|
|
28
|
+
import { a as getFlywheelActiveRunIdSync, s as init_control_settings } from "./control-settings-C7DUehE1.js";
|
|
29
|
+
import { n as createTrackerFromConfig, r as init_factory, t as createTracker } from "./factory-CRoOpGsF.js";
|
|
30
|
+
import { a as getWorkspaceStackHealth, s as init_stack_health } from "./stack-health-DqSqx0zv.js";
|
|
31
|
+
import { i as createActiveSlice, l as init_dag, o as getDispatchableItems, s as groupItemsByWave } from "./dag-ombYYt4s.js";
|
|
32
|
+
import { c as generateFixedPointPromptSync, f as initHookSync, n as checkHookSync, p as init_hooks } from "./hooks-BO3QT1sn.js";
|
|
33
|
+
import { a as init_git_utils, c as rehydrateHeadAnchor, l as renderWorkspaceGitShowPromise } from "./git-utils-ameCgDdy.js";
|
|
34
|
+
import { n as init_workspace_anchor_drift, t as evaluateWorkspaceAnchorDrift } from "./workspace-anchor-drift-CZKofakh.js";
|
|
35
|
+
import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-CqMqM1Mb.js";
|
|
36
|
+
import { a as loadCloisterConfigSync, r as init_config$1 } from "./config-B2IMcBxx.js";
|
|
37
|
+
import { t as init_reap_terminal_sessions } from "./reap-terminal-sessions-CvmwaqKv.js";
|
|
38
|
+
import { c as isStateMigrated, o as init_state_home } from "./state-home-BYV7qZTW.js";
|
|
39
|
+
import { n as provisionClaudeHooks, t as init_claude_hooks_provision } from "./claude-hooks-provision-fvy4RD2b.js";
|
|
40
|
+
import { a as init_lifecycle_io, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-D-lGdzK3.js";
|
|
41
|
+
import { r as init_swarm_readiness, t as analyzeSwarmReadiness } from "./swarm-readiness-BV14DF5N.js";
|
|
42
|
+
import { createRequire } from "node:module";
|
|
41
43
|
import { dirname, join, relative } from "node:path";
|
|
42
44
|
import { Data, Duration, Effect, FileSystem } from "effect";
|
|
43
45
|
import { appendFileSync, existsSync, mkdirSync, readFileSync, rmSync, statSync, statfsSync, unlinkSync, writeFileSync } from "fs";
|
|
44
|
-
import { basename as basename$1, dirname as dirname$1, join as join$1, resolve as resolve$1 } from "path";
|
|
46
|
+
import { basename as basename$1, dirname as dirname$1, join as join$1, relative as relative$1, resolve as resolve$1, sep as sep$1 } from "path";
|
|
45
47
|
import { homedir } from "os";
|
|
46
48
|
import { cpus as cpus$1, loadavg as loadavg$1, platform as platform$1, totalmem as totalmem$1 } from "node:os";
|
|
47
49
|
import { chmodSync as chmodSync$1, closeSync as closeSync$1, constants, cpSync, createReadStream as createReadStream$1, existsSync as existsSync$1, mkdirSync as mkdirSync$1, openSync as openSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, renameSync as renameSync$1, rmSync as rmSync$1, statSync as statSync$1, unlinkSync as unlinkSync$1, writeFileSync as writeFileSync$1, writeSync } from "node:fs";
|
|
48
|
-
import { chmod, mkdir, readFile, stat as stat$1, writeFile } from "node:fs/promises";
|
|
49
|
-
import { randomUUID } from "crypto";
|
|
50
|
+
import { chmod, mkdir, readFile, readdir, readlink, stat as stat$1, writeFile } from "node:fs/promises";
|
|
51
|
+
import { createHash, randomUUID } from "crypto";
|
|
50
52
|
import { ChildProcess } from "effect/unstable/process";
|
|
51
53
|
import { mkdir as mkdir$1, open as open$1, readFile as readFile$1, readdir as readdir$1, rename as rename$1, rm as rm$1, stat as stat$2, writeFile as writeFile$1 } from "fs/promises";
|
|
52
54
|
import { platform as platform$2 } from "process";
|
|
@@ -1099,6 +1101,31 @@ var init_identity = __esmMin((() => {
|
|
|
1099
1101
|
SINGLETON_AGENT_IDS = new Set(["flywheel-orchestrator", "sequencer-runner"]);
|
|
1100
1102
|
}));
|
|
1101
1103
|
//#endregion
|
|
1104
|
+
//#region ../../lib/deploy/active-dashboard-bundle.ts
|
|
1105
|
+
function activeDashboardBundleFile() {
|
|
1106
|
+
return join$1(getOverdeckHome(), "active-dashboard-bundle.json");
|
|
1107
|
+
}
|
|
1108
|
+
function isInside(parent, candidate) {
|
|
1109
|
+
const pathFromParent = relative$1(resolve$1(parent), resolve$1(candidate));
|
|
1110
|
+
return pathFromParent === "" || pathFromParent !== ".." && !pathFromParent.startsWith(`..${sep$1}`);
|
|
1111
|
+
}
|
|
1112
|
+
function readActiveDashboardBundleSync() {
|
|
1113
|
+
try {
|
|
1114
|
+
const parsed = JSON.parse(readFileSync(activeDashboardBundleFile(), "utf8"));
|
|
1115
|
+
if (typeof parsed.repoRoot !== "string" || typeof parsed.deployRoot !== "string" || typeof parsed.serverPath !== "string" || !isInside(parsed.deployRoot, parsed.serverPath) || !existsSync(parsed.serverPath)) return null;
|
|
1116
|
+
return {
|
|
1117
|
+
repoRoot: resolve$1(parsed.repoRoot),
|
|
1118
|
+
deployRoot: resolve$1(parsed.deployRoot),
|
|
1119
|
+
serverPath: resolve$1(parsed.serverPath)
|
|
1120
|
+
};
|
|
1121
|
+
} catch {
|
|
1122
|
+
return null;
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
var init_active_dashboard_bundle = __esmMin((() => {
|
|
1126
|
+
init_paths();
|
|
1127
|
+
}));
|
|
1128
|
+
//#endregion
|
|
1102
1129
|
//#region ../../lib/channels/pty-supervisor-locate.ts
|
|
1103
1130
|
/**
|
|
1104
1131
|
* Locate (and if necessary materialize) the PTY supervisor artifact.
|
|
@@ -1125,15 +1152,63 @@ var init_identity = __esmMin((() => {
|
|
|
1125
1152
|
* (content-hash keyed over the whole staged tree, so an app upgrade
|
|
1126
1153
|
* refreshes it even when only non-entry files changed) and the vendored
|
|
1127
1154
|
* packages land under node_modules/ there for normal Node resolution.
|
|
1155
|
+
* 3. <activeBundle.repoRoot>/dist/pty-supervisor.js — the primary checkout a
|
|
1156
|
+
* `pan reload` deployment was built from (PAN-3172).
|
|
1128
1157
|
*
|
|
1129
|
-
*
|
|
1130
|
-
*
|
|
1158
|
+
* A candidate is only accepted when its own bare imports actually resolve from
|
|
1159
|
+
* where it sits. Existence alone is not enough: `pan reload` runs the dashboard
|
|
1160
|
+
* out of ~/.overdeck/deployments/dashboard/.pan-reload-generation-{a,b}, and a
|
|
1161
|
+
* generation whose node_modules cannot resolve @lydell/node-pty produces a
|
|
1162
|
+
* supervisor that dies on ERR_MODULE_NOT_FOUND before it ever binds its socket
|
|
1163
|
+
* — every conversation spawned afterwards then died on a socket timeout with no
|
|
1164
|
+
* hint of the real cause (PAN-3172). Falling through to the primary checkout,
|
|
1165
|
+
* whose node_modules is complete, keeps spawns alive; that copy is the same
|
|
1166
|
+
* build, since activateDashboardDeployment() copies the generation's dist/ into
|
|
1167
|
+
* the primary checkout.
|
|
1168
|
+
*
|
|
1169
|
+
* Missing (or unresolvable) everywhere is a build/packaging defect and throws —
|
|
1170
|
+
* never silently degrade a spawn that the caller expects to be supervised.
|
|
1171
|
+
*/
|
|
1172
|
+
/**
|
|
1173
|
+
* Bare package specifiers the built supervisor imports but cannot resolve from
|
|
1174
|
+
* its own location. Empty means the artifact can start where it sits.
|
|
1175
|
+
*
|
|
1176
|
+
* Only a genuine module-not-found counts. A package that is present but whose
|
|
1177
|
+
* exports refuse the `require` condition still resolves under `import`, so it
|
|
1178
|
+
* must not be reported as missing.
|
|
1131
1179
|
*/
|
|
1180
|
+
function unresolvedSupervisorImports(scriptPath) {
|
|
1181
|
+
const source = readFileSync$1(scriptPath, "utf8");
|
|
1182
|
+
const requireFrom = createRequire(scriptPath);
|
|
1183
|
+
const missing = /* @__PURE__ */ new Set();
|
|
1184
|
+
for (const match of source.matchAll(IMPORT_SOURCE_PATTERN)) {
|
|
1185
|
+
const specifier = match[2];
|
|
1186
|
+
if (!specifier || !PACKAGE_SPECIFIER_PATTERN.test(specifier)) continue;
|
|
1187
|
+
try {
|
|
1188
|
+
requireFrom.resolve(specifier);
|
|
1189
|
+
} catch (error) {
|
|
1190
|
+
const code = error.code;
|
|
1191
|
+
if (code === "MODULE_NOT_FOUND" || code === "ERR_MODULE_NOT_FOUND") missing.add(specifier);
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
return [...missing];
|
|
1195
|
+
}
|
|
1132
1196
|
function resolvePtySupervisorScriptPath() {
|
|
1133
|
-
const
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1197
|
+
const activeBundle = readActiveDashboardBundleSync();
|
|
1198
|
+
const candidates = [
|
|
1199
|
+
join(packageRoot, "dist", "pty-supervisor.js"),
|
|
1200
|
+
join(moduleDir, "supervisor", "pty-supervisor.js"),
|
|
1201
|
+
...activeBundle ? [join(activeBundle.repoRoot, "dist", "pty-supervisor.js")] : []
|
|
1202
|
+
];
|
|
1203
|
+
const rejected = [];
|
|
1204
|
+
for (const candidate of candidates) {
|
|
1205
|
+
if (!existsSync$1(candidate)) continue;
|
|
1206
|
+
const entry = dirname(candidate) === join(moduleDir, "supervisor") ? materializePtySupervisorRuntime(dirname(candidate)) : candidate;
|
|
1207
|
+
const missing = unresolvedSupervisorImports(entry);
|
|
1208
|
+
if (missing.length === 0) return entry;
|
|
1209
|
+
rejected.push(`${entry} cannot resolve ${missing.join(", ")}`);
|
|
1210
|
+
}
|
|
1211
|
+
if (rejected.length > 0) throw new Error(`pty-supervisor cannot start — its dependencies are missing from every built copy: ${rejected.join("; ")}. Reinstall dependencies where the dashboard is running from (\`bun install\`), then rebuild.`);
|
|
1137
1212
|
throw new Error("pty-supervisor build artifact missing — run `npm run build`.");
|
|
1138
1213
|
}
|
|
1139
1214
|
/**
|
|
@@ -1192,10 +1267,13 @@ function materializePtySupervisorRuntime(stagedDir, overdeckHome = getOverdeckHo
|
|
|
1192
1267
|
}
|
|
1193
1268
|
return entry;
|
|
1194
1269
|
}
|
|
1195
|
-
var moduleDir;
|
|
1270
|
+
var moduleDir, IMPORT_SOURCE_PATTERN, PACKAGE_SPECIFIER_PATTERN;
|
|
1196
1271
|
var init_pty_supervisor_locate = __esmMin((() => {
|
|
1272
|
+
init_active_dashboard_bundle();
|
|
1197
1273
|
init_paths();
|
|
1198
1274
|
moduleDir = dirname(fileURLToPath(import.meta.url));
|
|
1275
|
+
IMPORT_SOURCE_PATTERN = /\b(?:from|import)\s*\(?\s*(["'])([^"'\n]+)\1/g;
|
|
1276
|
+
PACKAGE_SPECIFIER_PATTERN = /^(?:@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*(?:\/[^\s]*)?$/;
|
|
1199
1277
|
}));
|
|
1200
1278
|
//#endregion
|
|
1201
1279
|
//#region ../../lib/pty-token.ts
|
|
@@ -1670,6 +1748,33 @@ function decideResumeGate(block, intent, context = {}) {
|
|
|
1670
1748
|
reason: block.reason
|
|
1671
1749
|
};
|
|
1672
1750
|
}
|
|
1751
|
+
if (intent === "merge-preparation") {
|
|
1752
|
+
if (block.gate === "paused") {
|
|
1753
|
+
if (block.yieldedByScheduler === true) return {
|
|
1754
|
+
decision: "proceed",
|
|
1755
|
+
clearYield: true
|
|
1756
|
+
};
|
|
1757
|
+
return {
|
|
1758
|
+
decision: "block",
|
|
1759
|
+
reason: `${block.reason}; run pan unpause before merging`,
|
|
1760
|
+
needsYou: true
|
|
1761
|
+
};
|
|
1762
|
+
}
|
|
1763
|
+
if (block.gate === "troubled") return {
|
|
1764
|
+
decision: "block",
|
|
1765
|
+
reason: `${block.reason}; run pan untroubled after investigating the crash`,
|
|
1766
|
+
needsYou: true
|
|
1767
|
+
};
|
|
1768
|
+
if (block.gate === "stopped-by-user") return {
|
|
1769
|
+
decision: "proceed",
|
|
1770
|
+
clearStoppedByUser: true
|
|
1771
|
+
};
|
|
1772
|
+
return {
|
|
1773
|
+
decision: "proceed",
|
|
1774
|
+
overrideFailureBackoff: true,
|
|
1775
|
+
warning: `Merge preparation overrides ${block.reason}`
|
|
1776
|
+
};
|
|
1777
|
+
}
|
|
1673
1778
|
if (intent === "operator-start") {
|
|
1674
1779
|
if (block.gate === "paused") return {
|
|
1675
1780
|
decision: "block",
|
|
@@ -1748,12 +1853,14 @@ var init_agent_state = __esmMin((() => {
|
|
|
1748
1853
|
init_persistent_logger();
|
|
1749
1854
|
init_feature_registry_population();
|
|
1750
1855
|
init_identity();
|
|
1856
|
+
init_pipeline_agent_reader();
|
|
1751
1857
|
SESSION_EXITED_BEFORE_KICKOFF = "session-exited-before-kickoff";
|
|
1752
1858
|
toAgentFsError = (operation, path, cause) => new FsError({
|
|
1753
1859
|
operation,
|
|
1754
1860
|
path,
|
|
1755
1861
|
cause
|
|
1756
1862
|
});
|
|
1863
|
+
registerPipelineTelemetryAgentReader(getAgentStateSync);
|
|
1757
1864
|
getAgentState = (agentId) => {
|
|
1758
1865
|
return Effect.try({
|
|
1759
1866
|
try: () => getAgentStateSync(agentId),
|
|
@@ -2569,7 +2676,7 @@ var init_provider_env = __esmMin((() => {
|
|
|
2569
2676
|
"NOUS_API_KEY",
|
|
2570
2677
|
"DASHSCOPE_API_KEY"
|
|
2571
2678
|
];
|
|
2572
|
-
GPT_56_CODEX_CLIENT_CONTEXT_WINDOW =
|
|
2679
|
+
GPT_56_CODEX_CLIENT_CONTEXT_WINDOW = CLIPROXY_GPT56_CONTEXT_WINDOW;
|
|
2573
2680
|
GPT_56_MODELS = new Set([
|
|
2574
2681
|
"gpt-5.6-sol",
|
|
2575
2682
|
"gpt-5.6-terra",
|
|
@@ -2883,12 +2990,12 @@ async function claudeSystemPromptFiles(workspace, harness) {
|
|
|
2883
2990
|
}
|
|
2884
2991
|
files.push(await ensureSessionContextBriefingFile());
|
|
2885
2992
|
if (behavior.contextLayerKind === "pi") {
|
|
2886
|
-
const { piGlobalContextFile } = await import("./context-layers-
|
|
2993
|
+
const { piGlobalContextFile } = await import("./context-layers-D6LZo3l1.js");
|
|
2887
2994
|
const globalFile = piGlobalContextFile();
|
|
2888
2995
|
if (existsSync(globalFile)) files.unshift(globalFile);
|
|
2889
2996
|
}
|
|
2890
2997
|
if (behavior.contextLayerKind === "codex") {
|
|
2891
|
-
const { codexGlobalContextFile } = await import("./context-layers-
|
|
2998
|
+
const { codexGlobalContextFile } = await import("./context-layers-D6LZo3l1.js");
|
|
2892
2999
|
const globalFile = codexGlobalContextFile();
|
|
2893
3000
|
if (existsSync(globalFile)) files.unshift(globalFile);
|
|
2894
3001
|
}
|
|
@@ -3183,7 +3290,7 @@ async function injectPiPromptTimeMemory(agentId, prompt) {
|
|
|
3183
3290
|
agentRole: agentState.role ?? "work",
|
|
3184
3291
|
agentHarness: agentState.harness ?? "claude-code"
|
|
3185
3292
|
};
|
|
3186
|
-
const { injectPromptTimeMemory } = await import("./injection-
|
|
3293
|
+
const { injectPromptTimeMemory } = await import("./injection-DZxlV2al.js");
|
|
3187
3294
|
const result = await injectPromptTimeMemory({
|
|
3188
3295
|
prompt,
|
|
3189
3296
|
identity,
|
|
@@ -3217,7 +3324,7 @@ async function injectPiConversationMemory(opts, prompt) {
|
|
|
3217
3324
|
agentRole: "work",
|
|
3218
3325
|
agentHarness: "ohmypi"
|
|
3219
3326
|
};
|
|
3220
|
-
const { injectPromptTimeMemory } = await import("./injection-
|
|
3327
|
+
const { injectPromptTimeMemory } = await import("./injection-DZxlV2al.js");
|
|
3221
3328
|
const result = await injectPromptTimeMemory({
|
|
3222
3329
|
prompt,
|
|
3223
3330
|
identity,
|
|
@@ -3387,7 +3494,7 @@ async function getRoleRuntimeBaseCommand(model, agentName, role, harness = "clau
|
|
|
3387
3494
|
}
|
|
3388
3495
|
const roleInject = definitionPath ? roleSystemPromptInjectionSync(definitionPath, effort) : "";
|
|
3389
3496
|
const nameFlag = ` --name ${agentName}`;
|
|
3390
|
-
const effortFlag = !definitionPath
|
|
3497
|
+
const effortFlag = !definitionPath ? ` --effort ${effort ?? "high"}` : "";
|
|
3391
3498
|
const permissionFlags = ` ${getClaudePermissionFlagsStringSync()}`;
|
|
3392
3499
|
const printFlag = "";
|
|
3393
3500
|
if (provider.name === "openai" && await getProviderAuthMode(validatedModel) === "subscription") return `claude${printFlag}${roleInject}${permissionFlags} --model ${shellQuoteModelIdSync(CLI_PROXY_MODEL_ALIASES[validatedModel] ?? validatedModel)}${effortFlag}${nameFlag}`;
|
|
@@ -3744,7 +3851,7 @@ async function transitionIssueToInReview(issueId, workspacePath) {
|
|
|
3744
3851
|
async function buildAgentLaunchConfig(opts) {
|
|
3745
3852
|
const model = requireModelOverrideSync(opts.model);
|
|
3746
3853
|
try {
|
|
3747
|
-
const { injectOverdeckInfraDeny } = await import("./claude-settings-overlay-
|
|
3854
|
+
const { injectOverdeckInfraDeny } = await import("./claude-settings-overlay-Dabi9slj.js");
|
|
3748
3855
|
await Effect.runPromise(injectOverdeckInfraDeny(opts.workspace));
|
|
3749
3856
|
} catch (err) {
|
|
3750
3857
|
console.warn(`[agents] injectOverdeckInfraDeny failed for ${opts.agentId} (non-fatal): ${err instanceof Error ? err.message : err}`);
|
|
@@ -3832,7 +3939,7 @@ async function retrieveSpawnTimeMemoryContext(input) {
|
|
|
3832
3939
|
agentRole: input.role,
|
|
3833
3940
|
agentHarness: input.harness
|
|
3834
3941
|
};
|
|
3835
|
-
const { injectPromptTimeMemory } = await import("./injection-
|
|
3942
|
+
const { injectPromptTimeMemory } = await import("./injection-DZxlV2al.js");
|
|
3836
3943
|
return (await injectPromptTimeMemory({
|
|
3837
3944
|
prompt: input.prompt,
|
|
3838
3945
|
identity,
|
|
@@ -3923,7 +4030,7 @@ async function assertWorkspaceStackHealthyForSpawn(issueId, role, allowHost = fa
|
|
|
3923
4030
|
record.attempts += 1;
|
|
3924
4031
|
spawnStackRebuildState.set(normalizedIssue, record);
|
|
3925
4032
|
console.log(`[agents] Workspace stack for ${normalizedIssue} unhealthy (${details}) — rebuilding before spawn (attempt ${record.attempts}/${SPAWN_STACK_REBUILD_MAX_ATTEMPTS})`);
|
|
3926
|
-
const { rebuildWorkspaceStack } = await import("./rebuild-stack-
|
|
4033
|
+
const { rebuildWorkspaceStack } = await import("./rebuild-stack-qeRqHZxH.js");
|
|
3927
4034
|
const result = await Effect.runPromise(rebuildWorkspaceStack(issueId, { onProgress: (m) => console.log(`[agents] ${normalizedIssue} stack rebuild: ${m}`) })).catch((err) => ({
|
|
3928
4035
|
success: false,
|
|
3929
4036
|
error: err instanceof Error ? err.message : String(err)
|
|
@@ -4039,6 +4146,64 @@ var init_cv = __esmMin((() => {
|
|
|
4039
4146
|
init_errors();
|
|
4040
4147
|
}));
|
|
4041
4148
|
//#endregion
|
|
4149
|
+
//#region ../../lib/cloister/verdict-preservation.ts
|
|
4150
|
+
/** Decide whether a fresh work-agent session may keep verdicts earned by the current code. */
|
|
4151
|
+
async function shouldPreservePipelineVerdicts(issueId, workspacePath) {
|
|
4152
|
+
try {
|
|
4153
|
+
const status = getReviewStatusSync(issueId);
|
|
4154
|
+
if (!status) return {
|
|
4155
|
+
preserve: false,
|
|
4156
|
+
reason: "no pipeline verdicts are recorded"
|
|
4157
|
+
};
|
|
4158
|
+
if (!status.reviewedAtCommit) return {
|
|
4159
|
+
preserve: false,
|
|
4160
|
+
reason: "the review verdict has no commit anchor"
|
|
4161
|
+
};
|
|
4162
|
+
if (status.reviewStatus !== "passed" && status.reviewStatus !== "skipped") return {
|
|
4163
|
+
preserve: false,
|
|
4164
|
+
reason: `review is ${status.reviewStatus}`
|
|
4165
|
+
};
|
|
4166
|
+
if (status.testStatus !== "passed") return {
|
|
4167
|
+
preserve: false,
|
|
4168
|
+
reason: `tests are ${status.testStatus}`
|
|
4169
|
+
};
|
|
4170
|
+
if (status.verificationStatus !== "passed") return {
|
|
4171
|
+
preserve: false,
|
|
4172
|
+
reason: `verification is ${status.verificationStatus ?? "missing"}`
|
|
4173
|
+
};
|
|
4174
|
+
const verdict = await evaluateWorkspaceAnchorDrift(issueId, workspacePath, rehydrateHeadAnchor(status.reviewedAtCommit));
|
|
4175
|
+
switch (verdict.kind) {
|
|
4176
|
+
case "current": return {
|
|
4177
|
+
preserve: true,
|
|
4178
|
+
reason: "workspace HEAD matches the reviewed commit anchor"
|
|
4179
|
+
};
|
|
4180
|
+
case "benign": return {
|
|
4181
|
+
preserve: true,
|
|
4182
|
+
reason: "workspace HEAD moved without changing the reviewed code",
|
|
4183
|
+
refreshedAnchor: verdict.currentAnchor
|
|
4184
|
+
};
|
|
4185
|
+
case "drifted": return {
|
|
4186
|
+
preserve: false,
|
|
4187
|
+
reason: "workspace code changed after review"
|
|
4188
|
+
};
|
|
4189
|
+
case "unreadable": return {
|
|
4190
|
+
preserve: false,
|
|
4191
|
+
reason: "the current workspace commit anchor is unreadable"
|
|
4192
|
+
};
|
|
4193
|
+
}
|
|
4194
|
+
} catch (error) {
|
|
4195
|
+
return {
|
|
4196
|
+
preserve: false,
|
|
4197
|
+
reason: `verdict preservation check failed: ${error instanceof Error ? error.message : String(error)}`
|
|
4198
|
+
};
|
|
4199
|
+
}
|
|
4200
|
+
}
|
|
4201
|
+
var init_verdict_preservation = __esmMin((() => {
|
|
4202
|
+
init_git_utils();
|
|
4203
|
+
init_review_status();
|
|
4204
|
+
init_workspace_anchor_drift();
|
|
4205
|
+
}));
|
|
4206
|
+
//#endregion
|
|
4042
4207
|
//#region ../../lib/bridge-token.ts
|
|
4043
4208
|
function bridgeTokensDir() {
|
|
4044
4209
|
return join(getOverdeckHome(), "bridge-tokens");
|
|
@@ -4378,7 +4543,7 @@ async function postUnixSocketJson(socketPath, body, timeoutMs, token, tokenHeade
|
|
|
4378
4543
|
});
|
|
4379
4544
|
return;
|
|
4380
4545
|
}
|
|
4381
|
-
finishErr(
|
|
4546
|
+
finishErr(new SocketPostStatusError(status, `socket POST: status ${status}: ${responseBody.slice(0, 100)}`));
|
|
4382
4547
|
});
|
|
4383
4548
|
});
|
|
4384
4549
|
if (timeoutMs !== void 0) {
|
|
@@ -4400,8 +4565,9 @@ async function postUnixSocketJson(socketPath, body, timeoutMs, token, tokenHeade
|
|
|
4400
4565
|
* MCP, then tmux. Explicit socket methods and ACP targets are strict: ACP prompts
|
|
4401
4566
|
* cannot fall back to terminal injection because only session/prompt reaches the agent.
|
|
4402
4567
|
*/
|
|
4403
|
-
async function deliverAgentMessage(agentId, message, caller = "unknown", deliveryMethod) {
|
|
4568
|
+
async function deliverAgentMessage(agentId, message, caller = "unknown", deliveryMethod, opts = {}) {
|
|
4404
4569
|
const normalizedId = normalizeAgentId(agentId);
|
|
4570
|
+
const dedupKey = opts.dedupKey;
|
|
4405
4571
|
let channelsEnabled = false;
|
|
4406
4572
|
let resolvedMethod = deliveryMethod;
|
|
4407
4573
|
let state = null;
|
|
@@ -4414,6 +4580,7 @@ async function deliverAgentMessage(agentId, message, caller = "unknown", deliver
|
|
|
4414
4580
|
}
|
|
4415
4581
|
const isAcpTarget = state?.harness === "acp";
|
|
4416
4582
|
if (isAcpTarget && resolvedMethod !== "auto") throw new Error(`MessageDeliveryFailed: ACP delivery failed for ${normalizedId} (${caller}): ACP requires authenticated host RPC delivery`);
|
|
4583
|
+
if (dedupKey !== void 0) return deliverKeyedAgentMessage(normalizedId, message, caller, resolvedMethod ?? "auto", isAcpTarget, dedupKey);
|
|
4417
4584
|
if (resolvedMethod === "tmux") {
|
|
4418
4585
|
await assertTmuxTargetCanReceive(normalizedId, caller);
|
|
4419
4586
|
await Effect.runPromise(sendKeys(normalizedId, message));
|
|
@@ -4558,6 +4725,83 @@ async function deliverAgentMessage(agentId, message, caller = "unknown", deliver
|
|
|
4558
4725
|
};
|
|
4559
4726
|
}
|
|
4560
4727
|
/**
|
|
4728
|
+
* Keyed delivery cascade (PAN-2997). Only two tiers may carry a keyed
|
|
4729
|
+
* message, because only their crash-independent components enforce the key
|
|
4730
|
+
* across the COMPLETE visible side effect:
|
|
4731
|
+
*
|
|
4732
|
+
* - the PTY supervisor reserves the key synchronously (closing the concurrent
|
|
4733
|
+
* same-key race) and completes it only after its single-request
|
|
4734
|
+
* content-plus-Enter injection succeeds; and
|
|
4735
|
+
* - the tmux fallback keeps two-phase pending/terminal session markers owned
|
|
4736
|
+
* by the tmux server across paste, settle, and submit.
|
|
4737
|
+
*
|
|
4738
|
+
* App-server, ACP, and Channels acknowledge receipt without enforcing the
|
|
4739
|
+
* key, so they are never used for keyed payloads: a dashboard crash after
|
|
4740
|
+
* their side effect but before the caller's acknowledgment would replay the
|
|
4741
|
+
* wake. Explicitly requesting one of them with a key is a loud error, not a
|
|
4742
|
+
* silent downgrade.
|
|
4743
|
+
*/
|
|
4744
|
+
async function deliverKeyedAgentMessage(normalizedId, message, caller, resolvedMethod, isAcpTarget, dedupKey) {
|
|
4745
|
+
if (isAcpTarget) throw new Error(`MessageDeliveryFailed: keyed delivery failed for ${normalizedId} (${caller}): the ACP tier cannot enforce a dedup key`);
|
|
4746
|
+
if (resolvedMethod === "channels") throw new Error(`MessageDeliveryFailed: keyed delivery failed for ${normalizedId} (${caller}): the Channels tier cannot enforce a dedup key`);
|
|
4747
|
+
if (resolvedMethod === "tmux") return deliverKeyedViaTmux(normalizedId, message, caller, dedupKey);
|
|
4748
|
+
let supervisorFailure;
|
|
4749
|
+
const supervisorSocketPath = join$1(overdeckHomeForSockets(), "sockets", `pty-${normalizedId}.sock`);
|
|
4750
|
+
const ptyToken = await readPtyToken(normalizedId);
|
|
4751
|
+
if (!existsSync(supervisorSocketPath)) supervisorFailure = "socket-missing";
|
|
4752
|
+
else if (!ptyToken) supervisorFailure = "pty-token-missing";
|
|
4753
|
+
else try {
|
|
4754
|
+
const supervisorResponse = await postUnixSocketJson(supervisorSocketPath, {
|
|
4755
|
+
content: message,
|
|
4756
|
+
meta: { caller },
|
|
4757
|
+
dedupKey
|
|
4758
|
+
}, supervisorInjectionBudgetMs(message.length) + SUPERVISOR_CLIENT_MARGIN_MS, ptyToken, PTY_TOKEN_HEADER);
|
|
4759
|
+
await appendChannelDeliveryLog(normalizedId, {
|
|
4760
|
+
path: "supervisor",
|
|
4761
|
+
caller
|
|
4762
|
+
});
|
|
4763
|
+
let deduplicated = false;
|
|
4764
|
+
try {
|
|
4765
|
+
deduplicated = JSON.parse(supervisorResponse.body).deduplicated === true;
|
|
4766
|
+
} catch {}
|
|
4767
|
+
return {
|
|
4768
|
+
ok: true,
|
|
4769
|
+
path: "supervisor",
|
|
4770
|
+
deduplicated
|
|
4771
|
+
};
|
|
4772
|
+
} catch (err) {
|
|
4773
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
4774
|
+
if (!(err instanceof SocketPostStatusError)) throw new AmbiguousKeyedDeliveryError(normalizedId, caller, reason);
|
|
4775
|
+
supervisorFailure = `socket-post-failed: ${reason}`;
|
|
4776
|
+
}
|
|
4777
|
+
if (resolvedMethod === "supervisor") throw new Error(`MessageDeliveryFailed: PTY supervisor delivery failed for ${normalizedId} (${caller}): ${supervisorFailure}`);
|
|
4778
|
+
await appendChannelDeliveryLog(normalizedId, {
|
|
4779
|
+
path: "tmux",
|
|
4780
|
+
reason: supervisorFailure,
|
|
4781
|
+
caller
|
|
4782
|
+
});
|
|
4783
|
+
return {
|
|
4784
|
+
...await deliverKeyedViaTmux(normalizedId, message, caller, dedupKey),
|
|
4785
|
+
failure: supervisorFailure
|
|
4786
|
+
};
|
|
4787
|
+
}
|
|
4788
|
+
/**
|
|
4789
|
+
* Keyed tmux delivery: paste under the two-phase marker protocol, then
|
|
4790
|
+
* complete the submit. A replay that finds the pending marker completes the
|
|
4791
|
+
* prior attempt's submission WITHOUT re-pasting; a terminal marker suppresses
|
|
4792
|
+
* the replay entirely.
|
|
4793
|
+
*/
|
|
4794
|
+
async function deliverKeyedViaTmux(normalizedId, message, caller, dedupKey) {
|
|
4795
|
+
await assertTmuxTargetCanReceive(normalizedId, caller);
|
|
4796
|
+
const phase = await sendKeysDedup(normalizedId, message, dedupKey, caller);
|
|
4797
|
+
if (phase !== "deduplicated") await completeKeyedSubmit(normalizedId, dedupKey);
|
|
4798
|
+
return {
|
|
4799
|
+
ok: true,
|
|
4800
|
+
path: "tmux",
|
|
4801
|
+
deduplicated: phase === "deduplicated"
|
|
4802
|
+
};
|
|
4803
|
+
}
|
|
4804
|
+
/**
|
|
4561
4805
|
* PAN-2228: loud failure semantics for the tmux tier. `tmux send-keys` into a
|
|
4562
4806
|
* session whose pane process has EXITED (a remain-on-exit corpse) succeeds at the
|
|
4563
4807
|
* tmux level while the message lands nowhere — the zombie-kickoff failure mode
|
|
@@ -4716,16 +4960,31 @@ async function setAgentDeliveryMethod(agentId, deliveryMethod) {
|
|
|
4716
4960
|
state.deliveryMethod = deliveryMethod;
|
|
4717
4961
|
await Effect.runPromise(saveAgentState(state));
|
|
4718
4962
|
}
|
|
4719
|
-
var RESUME_TRANSCRIPT_CONFIRM_TIMEOUT_MS, RESUME_TRANSCRIPT_CONFIRM_INTERVAL_MS;
|
|
4963
|
+
var SocketPostStatusError, AmbiguousKeyedDeliveryError, RESUME_TRANSCRIPT_CONFIRM_TIMEOUT_MS, RESUME_TRANSCRIPT_CONFIRM_INTERVAL_MS;
|
|
4720
4964
|
var init_delivery = __esmMin((() => {
|
|
4721
4965
|
init_behavior();
|
|
4722
4966
|
init_agents();
|
|
4723
4967
|
init_runtime_state();
|
|
4724
4968
|
init_tmux();
|
|
4969
|
+
init_tmux_dedup();
|
|
4725
4970
|
init_bridge_token();
|
|
4726
4971
|
init_pty_token();
|
|
4727
4972
|
init_injection_budget();
|
|
4728
4973
|
init_transcript_landing();
|
|
4974
|
+
SocketPostStatusError = class extends Error {
|
|
4975
|
+
status;
|
|
4976
|
+
constructor(status, message) {
|
|
4977
|
+
super(message);
|
|
4978
|
+
this.name = "SocketPostStatusError";
|
|
4979
|
+
this.status = status;
|
|
4980
|
+
}
|
|
4981
|
+
};
|
|
4982
|
+
AmbiguousKeyedDeliveryError = class extends Error {
|
|
4983
|
+
constructor(agentId, caller, reason) {
|
|
4984
|
+
super(`MessageDeliveryFailed: ambiguous keyed delivery for ${agentId} (${caller}): ${reason} — the supervisor may have completed the injection; NOT crossing to the tmux tier with the same key`);
|
|
4985
|
+
this.name = "AmbiguousKeyedDeliveryError";
|
|
4986
|
+
}
|
|
4987
|
+
};
|
|
4729
4988
|
RESUME_TRANSCRIPT_CONFIRM_TIMEOUT_MS = 3e3;
|
|
4730
4989
|
RESUME_TRANSCRIPT_CONFIRM_INTERVAL_MS = 100;
|
|
4731
4990
|
}));
|
|
@@ -5224,18 +5483,18 @@ async function spawnRun(issueId, role, options = {}) {
|
|
|
5224
5483
|
let reapWarmIdle = false;
|
|
5225
5484
|
const advancing = role === "review" || role === "test" || role === "ship";
|
|
5226
5485
|
try {
|
|
5227
|
-
const { isPaneDead } = await import("./tmux-
|
|
5486
|
+
const { isPaneDead } = await import("./tmux-DQ6jB76i.js");
|
|
5228
5487
|
if (await Effect.runPromise(isPaneDead(agentId))) reapWarmIdle = true;
|
|
5229
5488
|
else if (advancing) {
|
|
5230
|
-
const { getReviewStatusSync } = await import("./review-status-
|
|
5231
|
-
const { isRoleTerminal } = await import("./reap-terminal-sessions-
|
|
5489
|
+
const { getReviewStatusSync } = await import("./review-status-BZH8h-6W.js");
|
|
5490
|
+
const { isRoleTerminal } = await import("./reap-terminal-sessions-BQ23nriz.js");
|
|
5232
5491
|
const status = getReviewStatusSync(issueId);
|
|
5233
5492
|
reapWarmIdle = !!status && isRoleTerminal(role, status);
|
|
5234
5493
|
}
|
|
5235
5494
|
} catch {}
|
|
5236
5495
|
if (!reapWarmIdle) throw new Error(`Role run ${agentId} already running. Use 'pan tell' to message it.`);
|
|
5237
5496
|
console.log(`[spawn] ${agentId} is warm-idle from the previous cycle — reaping it for the new ${role} dispatch (PAN-2579)`);
|
|
5238
|
-
const { killSession } = await import("./tmux-
|
|
5497
|
+
const { killSession } = await import("./tmux-DQ6jB76i.js");
|
|
5239
5498
|
await Effect.runPromise(killSession(agentId)).catch(() => {});
|
|
5240
5499
|
}
|
|
5241
5500
|
await assertWorkspaceStackHealthyForSpawn(issueId, role, options.allowHost, workspace);
|
|
@@ -5250,7 +5509,7 @@ async function spawnRun(issueId, role, options = {}) {
|
|
|
5250
5509
|
assertCodexNativeAuthForSpawn(resolvedHarness, listAgentStates());
|
|
5251
5510
|
await ensureLifecycleHooksBeforeLaunch(agentId, resolvedHarness);
|
|
5252
5511
|
if (getProviderForModelSync(selectedModel).name === "openai" && await getProviderAuthMode(selectedModel) === "subscription") {
|
|
5253
|
-
const { isCliproxyRunning } = await import("./cliproxy-
|
|
5512
|
+
const { isCliproxyRunning } = await import("./cliproxy-PGwTX_o8.js");
|
|
5254
5513
|
if (!await Effect.runPromise(isCliproxyRunning())) throw new Error("CLIProxyAPI sidecar is not running. GPT subscription role runs route through a local cliproxy process managed by `pan up`. Run `pan up` (or restart the dashboard) before spawning a GPT role run.");
|
|
5255
5514
|
}
|
|
5256
5515
|
const state = {
|
|
@@ -5367,7 +5626,7 @@ async function spawnRun(issueId, role, options = {}) {
|
|
|
5367
5626
|
const claudeCmd = `bash ${launcherScript}`;
|
|
5368
5627
|
console.log(`[claude-invoke] purpose=role-run | role=${role} | model=${state.model} | source=agents.ts:spawnRun | session=${agentId} | command="${claudeCmd}"`);
|
|
5369
5628
|
try {
|
|
5370
|
-
const { preTrustDirectory } = await import("./workspace-manager-
|
|
5629
|
+
const { preTrustDirectory } = await import("./workspace-manager-CDTKjjdU.js");
|
|
5371
5630
|
preTrustDirectory(workspace);
|
|
5372
5631
|
} catch {}
|
|
5373
5632
|
clearReadySignal(agentId);
|
|
@@ -5432,9 +5691,9 @@ async function spawnRun(issueId, role, options = {}) {
|
|
|
5432
5691
|
}
|
|
5433
5692
|
markAgentRunning(state);
|
|
5434
5693
|
try {
|
|
5435
|
-
const {
|
|
5436
|
-
const
|
|
5437
|
-
if (
|
|
5694
|
+
const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-CI6cwyyC.js");
|
|
5695
|
+
const headAnchor = await snapshotWorkspaceHeadsPromise(issueId, workspace);
|
|
5696
|
+
if (headAnchor) state.roleRunHead = headAnchor;
|
|
5438
5697
|
} catch {}
|
|
5439
5698
|
await Effect.runPromise(saveAgentState(state));
|
|
5440
5699
|
if (role !== "review") emitActivityEntrySync({
|
|
@@ -5462,7 +5721,7 @@ async function spawnAgent(options) {
|
|
|
5462
5721
|
});
|
|
5463
5722
|
console.log(`[DEBUG] Selected model: ${selectedModel}`);
|
|
5464
5723
|
if (getProviderForModelSync(selectedModel).name === "openai" && await getProviderAuthMode(selectedModel) === "subscription") {
|
|
5465
|
-
const { isCliproxyRunning } = await import("./cliproxy-
|
|
5724
|
+
const { isCliproxyRunning } = await import("./cliproxy-PGwTX_o8.js");
|
|
5466
5725
|
if (!await Effect.runPromise(isCliproxyRunning())) throw new Error("CLIProxyAPI sidecar is not running. GPT subscription agents route through a local cliproxy process managed by `pan up`. Run `pan up` (or restart the dashboard) before spawning a GPT agent.");
|
|
5467
5726
|
}
|
|
5468
5727
|
const resolvedHarness = await resolveHarness({
|
|
@@ -5492,10 +5751,11 @@ async function spawnAgent(options) {
|
|
|
5492
5751
|
saveAgentStateSync(state);
|
|
5493
5752
|
if (role === "work") {
|
|
5494
5753
|
try {
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
|
|
5498
|
-
|
|
5754
|
+
const preservation = await shouldPreservePipelineVerdicts(options.issueId, options.workspace);
|
|
5755
|
+
if (preservation.preserve) {
|
|
5756
|
+
if (preservation.refreshedAnchor) setReviewStatusSync(options.issueId, { reviewedAtCommit: preservation.refreshedAnchor });
|
|
5757
|
+
console.log(`[spawn] Preserved pipeline verdicts for ${options.issueId} — ${preservation.reason}`);
|
|
5758
|
+
} else if (resetPipelineVerdictsForWorkStartSync(options.issueId)) (await import("./merge-agent-DrXa1CpW.js")).resetPostMergeState(options.issueId);
|
|
5499
5759
|
} catch (err) {
|
|
5500
5760
|
console.warn(`[agents] Could not reset stale pipeline verdicts for ${options.issueId}: ${err instanceof Error ? err.message : String(err)}`);
|
|
5501
5761
|
}
|
|
@@ -5504,7 +5764,7 @@ async function spawnAgent(options) {
|
|
|
5504
5764
|
});
|
|
5505
5765
|
}
|
|
5506
5766
|
if (role === "work") try {
|
|
5507
|
-
const { writeStoryFeatureContext } = await import("./work-agent-prompt-
|
|
5767
|
+
const { writeStoryFeatureContext } = await import("./work-agent-prompt-C-vuP3_J.js");
|
|
5508
5768
|
await writeStoryFeatureContext(options.workspace, options.issueId);
|
|
5509
5769
|
} catch (ctxErr) {
|
|
5510
5770
|
console.warn(`[agents] Could not write story feature context for ${options.issueId}: ${ctxErr.message}`);
|
|
@@ -5551,7 +5811,7 @@ async function spawnAgent(options) {
|
|
|
5551
5811
|
try {
|
|
5552
5812
|
const venvPath = join$1(options.workspace, ".venv");
|
|
5553
5813
|
if (isTldrEnabledSync() && existsSync(venvPath)) {
|
|
5554
|
-
const { getTldrDaemonServiceSync } = await import("./tldr-daemon-
|
|
5814
|
+
const { getTldrDaemonServiceSync } = await import("./tldr-daemon-BKOYB616.js");
|
|
5555
5815
|
const tldrService = getTldrDaemonServiceSync(options.workspace, venvPath);
|
|
5556
5816
|
if (!(await tldrService.getStatus()).running) {
|
|
5557
5817
|
await tldrService.start(true);
|
|
@@ -5592,13 +5852,13 @@ async function spawnAgent(options) {
|
|
|
5592
5852
|
const claudeCmd = `bash ${launcherScript}`;
|
|
5593
5853
|
console.log(`[claude-invoke] purpose=work-agent | model=${state.model} | source=agents.ts:spawnAgent | session=${agentId} | command="${claudeCmd}"`);
|
|
5594
5854
|
try {
|
|
5595
|
-
const { preTrustDirectory } = await import("./workspace-manager-
|
|
5855
|
+
const { preTrustDirectory } = await import("./workspace-manager-CDTKjjdU.js");
|
|
5596
5856
|
preTrustDirectory(options.workspace);
|
|
5597
5857
|
} catch {}
|
|
5598
5858
|
try {
|
|
5599
|
-
const { isGitHubAppConfigured, generateInstallationToken, configureWorkspaceForBot } = await import("./github-app-
|
|
5859
|
+
const { isGitHubAppConfigured, generateInstallationToken, configureWorkspaceForBot } = await import("./github-app-DtAsvwzK.js");
|
|
5600
5860
|
if (isGitHubAppConfigured()) {
|
|
5601
|
-
const { findProjectByPathSync } = await import("./projects-
|
|
5861
|
+
const { findProjectByPathSync } = await import("./projects-B03Wr-xc.js");
|
|
5602
5862
|
const ghRepo = findProjectByPathSync(resolve$1(options.workspace, "..", ".."))?.github_repo;
|
|
5603
5863
|
if (ghRepo) {
|
|
5604
5864
|
const [owner, repo] = ghRepo.split("/");
|
|
@@ -5676,7 +5936,7 @@ async function spawnAgent(options) {
|
|
|
5676
5936
|
const codexHomeForAgent = join$1(homedir(), ".overdeck", "agents", agentId, "codex-home");
|
|
5677
5937
|
(async () => {
|
|
5678
5938
|
try {
|
|
5679
|
-
const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-
|
|
5939
|
+
const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-BdEsUFWh.js");
|
|
5680
5940
|
const rollout = await waitForCodexRollout(codexHomeForAgent, 12e4);
|
|
5681
5941
|
if (rollout) {
|
|
5682
5942
|
const threadId = extractThreadIdFromRollout(rollout);
|
|
@@ -5778,6 +6038,7 @@ var init_spawn = __esmMin((() => {
|
|
|
5778
6038
|
init_launcher_generator();
|
|
5779
6039
|
init_providers();
|
|
5780
6040
|
init_review_status();
|
|
6041
|
+
init_verdict_preservation();
|
|
5781
6042
|
init_harness_resolve();
|
|
5782
6043
|
init_harness_binary();
|
|
5783
6044
|
init_codex_auth();
|
|
@@ -6404,11 +6665,77 @@ function sessionRotationRefused(opts) {
|
|
|
6404
6665
|
}
|
|
6405
6666
|
var init_session_rotation = __esmMin((() => {}));
|
|
6406
6667
|
//#endregion
|
|
6668
|
+
//#region ../../lib/agents/monitor-transport.ts
|
|
6669
|
+
/**
|
|
6670
|
+
* PAN-3015: pull-based monitor transport for Claude Code sessions.
|
|
6671
|
+
*
|
|
6672
|
+
* A `pan monitor` process runs as a background task INSIDE the agent's Claude
|
|
6673
|
+
* Code session. Claude Code surfaces background-command stdout to the model at
|
|
6674
|
+
* the next turn boundary (and wakes an idle session), so a message printed by
|
|
6675
|
+
* the monitor reaches the model without any keystroke injection — no composer
|
|
6676
|
+
* paste, no echo confirmation, no Enter timing.
|
|
6677
|
+
*
|
|
6678
|
+
* This module holds the shared pieces: the presence protocol senders use to
|
|
6679
|
+
* decide the monitor tier is live, the mail-file format, and the drain logic.
|
|
6680
|
+
* The long-running loop lives in `src/cli/commands/monitor.ts`; the delivery
|
|
6681
|
+
* decision lives in `messageAgent` (src/lib/agents/messaging.ts) — mid-session
|
|
6682
|
+
* tells only, never kickoff/resume (no monitor exists before the first turn).
|
|
6683
|
+
* See docs/MONITOR-TRANSPORT.md.
|
|
6684
|
+
*/
|
|
6685
|
+
function monitorPresencePath(agentId) {
|
|
6686
|
+
return join$1(getAgentDir(agentId), "monitor.json");
|
|
6687
|
+
}
|
|
6688
|
+
function isPidAlive(pid) {
|
|
6689
|
+
try {
|
|
6690
|
+
process.kill(pid, 0);
|
|
6691
|
+
return true;
|
|
6692
|
+
} catch {
|
|
6693
|
+
return false;
|
|
6694
|
+
}
|
|
6695
|
+
}
|
|
6696
|
+
/**
|
|
6697
|
+
* A monitor counts as live only with BOTH a fresh heartbeat and a live pid —
|
|
6698
|
+
* a dead monitor must fall through to keystroke transports, not strand the
|
|
6699
|
+
* message unread (it stays durable in mail/ either way).
|
|
6700
|
+
*/
|
|
6701
|
+
function isMonitorLive(agentId, nowMs = Date.now()) {
|
|
6702
|
+
try {
|
|
6703
|
+
const raw = readFileSync(monitorPresencePath(agentId), "utf-8");
|
|
6704
|
+
const presence = JSON.parse(raw);
|
|
6705
|
+
if (typeof presence.pid !== "number" || typeof presence.heartbeatAt !== "string") return false;
|
|
6706
|
+
const beatMs = Date.parse(presence.heartbeatAt);
|
|
6707
|
+
if (!Number.isFinite(beatMs) || nowMs - beatMs > 45e3) return false;
|
|
6708
|
+
return isPidAlive(presence.pid);
|
|
6709
|
+
} catch {
|
|
6710
|
+
return false;
|
|
6711
|
+
}
|
|
6712
|
+
}
|
|
6713
|
+
/**
|
|
6714
|
+
* Mail-file format (PAN-3015 adds the provenance header; the legacy format is
|
|
6715
|
+
* `# Message\n\n<body>` and must keep parsing):
|
|
6716
|
+
*
|
|
6717
|
+
* # Message
|
|
6718
|
+
*
|
|
6719
|
+
* source: pan-tell
|
|
6720
|
+
* date: 2026-07-24T00:00:00.000Z
|
|
6721
|
+
*
|
|
6722
|
+
* <body>
|
|
6723
|
+
*/
|
|
6724
|
+
function formatMailFileContent(body, source, date) {
|
|
6725
|
+
return `# Message\n\nsource: ${source}\ndate: ${date.toISOString()}\n\n${body}\n`;
|
|
6726
|
+
}
|
|
6727
|
+
var init_monitor_transport = __esmMin((() => {
|
|
6728
|
+
init_agent_state();
|
|
6729
|
+
}));
|
|
6730
|
+
//#endregion
|
|
6407
6731
|
//#region ../../lib/agents/messaging.ts
|
|
6408
|
-
function queueAgentMail(agentId, message, pendingTurnEndDelivery = false) {
|
|
6732
|
+
function queueAgentMail(agentId, message, pendingTurnEndDelivery = false, dedupKey, source) {
|
|
6409
6733
|
const mailDir = join$1(getAgentDir(agentId), "mail");
|
|
6410
6734
|
mkdirSync(mailDir, { recursive: true });
|
|
6411
|
-
|
|
6735
|
+
const now = /* @__PURE__ */ new Date();
|
|
6736
|
+
const filename = dedupKey !== void 0 ? `dedup-${createHash("sha256").update(dedupKey).digest("hex").slice(0, 24)}.md` : `${now.toISOString().replace(/[:.]/g, "-")}${pendingTurnEndDelivery ? ".pending" : ""}.md`;
|
|
6737
|
+
const content = source ? formatMailFileContent(message, source, now) : `# Message\n\n${message}\n`;
|
|
6738
|
+
writeFileSync(join$1(mailDir, filename), content);
|
|
6412
6739
|
}
|
|
6413
6740
|
function resolveAgentDeliveryMethod(state) {
|
|
6414
6741
|
if (state?.harness === "acp") return "auto";
|
|
@@ -6435,6 +6762,34 @@ async function appendTellInterventionForUserSource(normalizedId, caller) {
|
|
|
6435
6762
|
source: caller
|
|
6436
6763
|
});
|
|
6437
6764
|
}
|
|
6765
|
+
/** Call the delivery door with the idempotency key only when one is set, so
|
|
6766
|
+
* unkeyed callers keep their exact pre-key call shape. */
|
|
6767
|
+
function deliverWithOptionalKey(normalizedId, message, caller, deliveryMethod, dedupKey) {
|
|
6768
|
+
return dedupKey !== void 0 ? deliverAgentMessage(normalizedId, message, caller, deliveryMethod, { dedupKey }) : deliverAgentMessage(normalizedId, message, caller, deliveryMethod);
|
|
6769
|
+
}
|
|
6770
|
+
/**
|
|
6771
|
+
* Keyed delivery to an agent that must be resumed first (PAN-2997 review
|
|
6772
|
+
* cycle 7). The keyed message NEVER rides the resume kickoff prompt: the
|
|
6773
|
+
* kickoff is delivered by components that cannot enforce the key, so a
|
|
6774
|
+
* dashboard crash after the kickoff but before any post-hoc key bookkeeping
|
|
6775
|
+
* would replay the wake. Instead the agent is resumed with its bare
|
|
6776
|
+
* auto-continue prompt, and the keyed message then goes through the keyed
|
|
6777
|
+
* delivery door, where the crash-independent component — the new session's
|
|
6778
|
+
* supervisor key set or the tmux session's two-phase markers — enforces
|
|
6779
|
+
* at-most-once across the whole replay window.
|
|
6780
|
+
*/
|
|
6781
|
+
async function resumeThenDeliverKeyed(normalizedId, message, caller, agentState, dedupKey) {
|
|
6782
|
+
const { resumeAgent } = await import("./agents-BKKkxKgK.js");
|
|
6783
|
+
const result = await resumeAgent(normalizedId);
|
|
6784
|
+
if (!result.success) throw new Error(`Failed to auto-resume agent: ${result.error}`);
|
|
6785
|
+
const delivery = await deliverAgentMessage(normalizedId, message, `messageAgent:${caller}`, resolveAgentDeliveryMethod(agentState), { dedupKey });
|
|
6786
|
+
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
6787
|
+
return {
|
|
6788
|
+
delivered: delivery.ok,
|
|
6789
|
+
queuedToMail: false,
|
|
6790
|
+
...delivery.deduplicated ? { deduplicated: true } : {}
|
|
6791
|
+
};
|
|
6792
|
+
}
|
|
6438
6793
|
async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
6439
6794
|
const normalizedId = normalizeAgentId(agentId);
|
|
6440
6795
|
const agentState = getAgentStateSync(normalizedId);
|
|
@@ -6455,7 +6810,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6455
6810
|
};
|
|
6456
6811
|
if (agentState?.paused === true) {
|
|
6457
6812
|
const gateBlockReason = getAgentResumeGateBlockReason(agentState)?.reason ?? "agent is paused";
|
|
6458
|
-
queueAgentMail(normalizedId, message);
|
|
6813
|
+
queueAgentMail(normalizedId, message, false, opts.dedupKey);
|
|
6459
6814
|
logAgentLifecycleSync(normalizedId, `messageAgent queued mail without resume: ${gateBlockReason}`);
|
|
6460
6815
|
console.log(`[agents] Queued message for ${normalizedId}; ${gateBlockReason}`);
|
|
6461
6816
|
return {
|
|
@@ -6468,7 +6823,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6468
6823
|
const suspendedGate = decideMessageGate();
|
|
6469
6824
|
if (suspendedGate.decision !== "proceed") {
|
|
6470
6825
|
const gateBlockReason = suspendedGate.reason ?? "agent is gated";
|
|
6471
|
-
queueAgentMail(normalizedId, message);
|
|
6826
|
+
queueAgentMail(normalizedId, message, false, opts.dedupKey);
|
|
6472
6827
|
logAgentLifecycleSync(normalizedId, `messageAgent queued mail without resume: ${gateBlockReason}`);
|
|
6473
6828
|
console.log(`[agents] Queued message for ${normalizedId}; ${gateBlockReason}`);
|
|
6474
6829
|
return {
|
|
@@ -6478,7 +6833,8 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6478
6833
|
};
|
|
6479
6834
|
}
|
|
6480
6835
|
console.log(`[agents] Auto-resuming suspended agent ${normalizedId} to deliver message`);
|
|
6481
|
-
|
|
6836
|
+
if (opts.dedupKey !== void 0) return resumeThenDeliverKeyed(normalizedId, message, caller, agentState, opts.dedupKey);
|
|
6837
|
+
const { resumeAgent } = await import("./agents-BKKkxKgK.js");
|
|
6482
6838
|
const result = await resumeAgent(normalizedId, message);
|
|
6483
6839
|
if (!result.success) throw new Error(`Failed to auto-resume agent: ${result.error}`);
|
|
6484
6840
|
if (result.messageDelivered === false) throw new Error(`Agent resumed but ready signal did not fire — message not delivered. Feedback is in the mail queue.`);
|
|
@@ -6492,7 +6848,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6492
6848
|
const stoppedGate = decideMessageGate();
|
|
6493
6849
|
if (stoppedGate.decision !== "proceed") {
|
|
6494
6850
|
const gateBlockReason = stoppedGate.reason ?? "agent is gated";
|
|
6495
|
-
queueAgentMail(normalizedId, message);
|
|
6851
|
+
queueAgentMail(normalizedId, message, false, opts.dedupKey);
|
|
6496
6852
|
logAgentLifecycleSync(normalizedId, `messageAgent queued mail without resume: ${gateBlockReason}`);
|
|
6497
6853
|
console.log(`[agents] Queued message for ${normalizedId}; ${gateBlockReason}`);
|
|
6498
6854
|
return {
|
|
@@ -6502,9 +6858,10 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6502
6858
|
};
|
|
6503
6859
|
}
|
|
6504
6860
|
console.log(`[agents] Auto-resuming stopped agent ${normalizedId} to deliver feedback (session exists: ${await Effect.runPromise(sessionExists(normalizedId))})`);
|
|
6505
|
-
|
|
6861
|
+
if (opts.dedupKey !== void 0) return resumeThenDeliverKeyed(normalizedId, message, caller, agentState, opts.dedupKey);
|
|
6862
|
+
const { resumeAgent } = await import("./agents-BKKkxKgK.js");
|
|
6506
6863
|
const resumeResult = await resumeAgent(normalizedId, message);
|
|
6507
|
-
queueAgentMail(normalizedId, message);
|
|
6864
|
+
queueAgentMail(normalizedId, message, false);
|
|
6508
6865
|
if (resumeResult.success && resumeResult.messageDelivered !== false) {
|
|
6509
6866
|
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
6510
6867
|
console.log(`[agents] Resumed ${normalizedId} and delivered feedback`);
|
|
@@ -6546,7 +6903,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6546
6903
|
const resumeModel = agentState.model || "claude-sonnet-4-6";
|
|
6547
6904
|
const fallbackHarness = agentState.harness ?? "claude-code";
|
|
6548
6905
|
const harnessLaunch = await prepareHarnessLaunch(fallbackHarness);
|
|
6549
|
-
const { assertWorkspaceStackHealthyForSpawn } = await import("./agents-
|
|
6906
|
+
const { assertWorkspaceStackHealthyForSpawn } = await import("./agents-BKKkxKgK.js");
|
|
6550
6907
|
await assertWorkspaceStackHealthyForSpawn(agentState.issueId || normalizedId.replace(/^agent-/, "").toUpperCase(), resumeRole, agentState.hostOverride === true, agentState.workspace);
|
|
6551
6908
|
const fallbackPiFields = fallbackHarness === "ohmypi" ? await getOhmypiLauncherFields(normalizedId, resumeModel) : {};
|
|
6552
6909
|
const fallbackCodexFields = fallbackHarness === "codex" ? getCodexLauncherFields(normalizedId, resumeModel, agentState.workspace, resumeRole) : {};
|
|
@@ -6610,7 +6967,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6610
6967
|
console.error(`[agents] Fallback-restarted ${normalizedId} but no session id was recorded — feedback in mail queue`);
|
|
6611
6968
|
}
|
|
6612
6969
|
} else {
|
|
6613
|
-
const delivery = await
|
|
6970
|
+
const delivery = await deliverWithOptionalKey(normalizedId, resumeMessage.message, "resumeAgent:resume-prompt", resolveAgentDeliveryMethod(agentState), opts.dedupKey);
|
|
6614
6971
|
delivered = delivery.ok;
|
|
6615
6972
|
if (!delivery.ok) reason = "resume prompt delivery failed";
|
|
6616
6973
|
}
|
|
@@ -6629,12 +6986,26 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6629
6986
|
...reason ? { reason } : {}
|
|
6630
6987
|
};
|
|
6631
6988
|
}
|
|
6632
|
-
const { loadRemoteAgentState, sendToRemoteAgent } = await import("./remote-agents-
|
|
6989
|
+
const { loadRemoteAgentState, sendToRemoteAgent } = await import("./remote-agents-C1bssi41.js");
|
|
6633
6990
|
const remoteState = loadRemoteAgentState(normalizedId);
|
|
6634
6991
|
if (remoteState && remoteState.vmName) {
|
|
6635
6992
|
console.log(`[agents] Sending message to remote agent ${normalizedId} on ${remoteState.vmName}`);
|
|
6993
|
+
if (opts.dedupKey !== void 0) {
|
|
6994
|
+
const { sendToRemoteAgentKeyed } = await import("./remote-agents-C1bssi41.js");
|
|
6995
|
+
const remoteOutcome = await sendToRemoteAgentKeyed(normalizedId, remoteState.vmName, message, opts.dedupKey);
|
|
6996
|
+
queueAgentMail(normalizedId, message, false, opts.dedupKey);
|
|
6997
|
+
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
6998
|
+
return {
|
|
6999
|
+
delivered: true,
|
|
7000
|
+
queuedToMail: true,
|
|
7001
|
+
...remoteOutcome === "deduplicated" ? {
|
|
7002
|
+
reason: "deduplicated",
|
|
7003
|
+
deduplicated: true
|
|
7004
|
+
} : {}
|
|
7005
|
+
};
|
|
7006
|
+
}
|
|
6636
7007
|
await sendToRemoteAgent(normalizedId, remoteState.vmName, message);
|
|
6637
|
-
queueAgentMail(normalizedId, message);
|
|
7008
|
+
queueAgentMail(normalizedId, message, false);
|
|
6638
7009
|
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
6639
7010
|
return {
|
|
6640
7011
|
delivered: true,
|
|
@@ -6642,13 +7013,24 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6642
7013
|
};
|
|
6643
7014
|
}
|
|
6644
7015
|
const expectedHarness = agentState?.harness ?? "claude-code";
|
|
7016
|
+
if (expectedHarness === "claude-code" && opts.dedupKey === void 0 && isMonitorLive(normalizedId)) {
|
|
7017
|
+
queueAgentMail(normalizedId, message, false, opts.dedupKey, caller);
|
|
7018
|
+
logAgentLifecycleSync(normalizedId, `messageAgent delivered via monitor mail (caller: ${caller})`);
|
|
7019
|
+
console.log(`[agents] Delivered message to ${normalizedId} via monitor inbox`);
|
|
7020
|
+
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
7021
|
+
return {
|
|
7022
|
+
delivered: true,
|
|
7023
|
+
queuedToMail: true,
|
|
7024
|
+
reason: "monitor"
|
|
7025
|
+
};
|
|
7026
|
+
}
|
|
6645
7027
|
let appServerState;
|
|
6646
7028
|
try {
|
|
6647
7029
|
appServerState = (await getCodexAppServerStatus(normalizedId)).state;
|
|
6648
7030
|
} catch {}
|
|
6649
7031
|
if (appServerState && appServerState !== "closed" && appServerState !== "error") {
|
|
6650
7032
|
if (!claimCodexIdleTurn(normalizedId)) {
|
|
6651
|
-
queueAgentMail(normalizedId, message, true);
|
|
7033
|
+
queueAgentMail(normalizedId, message, true, opts.dedupKey);
|
|
6652
7034
|
logAgentLifecycleSync(normalizedId, "messageAgent queued mail for codex turn-end delivery: agent busy");
|
|
6653
7035
|
console.log(`[agents] Queued message for ${normalizedId}; codex agent is mid-turn`);
|
|
6654
7036
|
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
@@ -6659,19 +7041,21 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6659
7041
|
};
|
|
6660
7042
|
}
|
|
6661
7043
|
const deliveryMethod = resolveAgentDeliveryMethod(agentState);
|
|
6662
|
-
const delivery = await
|
|
6663
|
-
queueAgentMail(normalizedId, message);
|
|
7044
|
+
const delivery = await deliverWithOptionalKey(normalizedId, message, `messageAgent:${caller}`, deliveryMethod, opts.dedupKey);
|
|
7045
|
+
queueAgentMail(normalizedId, message, false, opts.dedupKey);
|
|
6664
7046
|
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
6665
7047
|
return {
|
|
6666
7048
|
delivered: delivery.ok,
|
|
6667
|
-
queuedToMail: true
|
|
7049
|
+
queuedToMail: true,
|
|
7050
|
+
...delivery.deduplicated ? { deduplicated: true } : {}
|
|
6668
7051
|
};
|
|
6669
7052
|
}
|
|
6670
7053
|
if (!await Effect.runPromise(sessionExists(normalizedId))) throw new Error(`Agent ${normalizedId} not running`);
|
|
6671
7054
|
const panePids = await Effect.runPromise(listPaneValues(normalizedId, "#{pane_pid}"));
|
|
6672
7055
|
if (panePids.length > 0 && !await hasAgentRuntimeInSubtree(panePids[0], expectedHarness)) {
|
|
6673
7056
|
console.warn(`[agents] ${normalizedId} tmux session is a zombie (no ${expectedHarness} runtime) — attempting resume`);
|
|
6674
|
-
|
|
7057
|
+
if (opts.dedupKey !== void 0) return resumeThenDeliverKeyed(normalizedId, message, caller, agentState, opts.dedupKey);
|
|
7058
|
+
const { resumeAgent } = await import("./agents-BKKkxKgK.js");
|
|
6675
7059
|
const resumeResult = await resumeAgent(normalizedId, message);
|
|
6676
7060
|
if (resumeResult.success) {
|
|
6677
7061
|
const delivered = resumeResult.messageDelivered !== false;
|
|
@@ -6685,14 +7069,18 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6685
7069
|
}
|
|
6686
7070
|
if (!await waitForAgentIdle(normalizedId, 5e3)) console.warn(`[agents] ${normalizedId} not at idle prompt after 5s — sending message anyway`);
|
|
6687
7071
|
const deliveryMethod = resolveAgentDeliveryMethod(agentState);
|
|
6688
|
-
const delivery = await
|
|
6689
|
-
queueAgentMail(normalizedId, message);
|
|
7072
|
+
const delivery = await deliverWithOptionalKey(normalizedId, message, `messageAgent:${caller}`, deliveryMethod, opts.dedupKey);
|
|
7073
|
+
if (opts.dedupKey === void 0) queueAgentMail(normalizedId, message, false);
|
|
6690
7074
|
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
6691
7075
|
return {
|
|
6692
7076
|
delivered: delivery.ok,
|
|
6693
|
-
queuedToMail:
|
|
7077
|
+
queuedToMail: opts.dedupKey === void 0,
|
|
7078
|
+
...delivery.deduplicated ? { deduplicated: true } : {}
|
|
6694
7079
|
};
|
|
6695
7080
|
}
|
|
7081
|
+
async function messageAgentWithOutcome(agentId, message, caller = "internal", opts = {}) {
|
|
7082
|
+
return (await messageAgent(agentId, message, caller, opts)).delivered ? "delivered" : "queued";
|
|
7083
|
+
}
|
|
6696
7084
|
var USER_MESSAGE_INTERVENTION_SOURCES;
|
|
6697
7085
|
var init_messaging = __esmMin((() => {
|
|
6698
7086
|
init_activity_logger();
|
|
@@ -6708,6 +7096,7 @@ var init_messaging = __esmMin((() => {
|
|
|
6708
7096
|
init_agent_state();
|
|
6709
7097
|
init_activity();
|
|
6710
7098
|
init_delivery();
|
|
7099
|
+
init_monitor_transport();
|
|
6711
7100
|
init_runtime_state();
|
|
6712
7101
|
init_runtime_command();
|
|
6713
7102
|
init_supervisor_channels();
|
|
@@ -6840,7 +7229,7 @@ async function buildCompactRecoverySeed(agentId) {
|
|
|
6840
7229
|
if (agentState?.workspace && sessionId) {
|
|
6841
7230
|
const sessionFile = sessionFilePath(agentState.workspace, sessionId);
|
|
6842
7231
|
try {
|
|
6843
|
-
const [{ getConversationCompactionSettings }, { generateSmartSummary }] = await Promise.all([import("./conversation-compaction-
|
|
7232
|
+
const [{ getConversationCompactionSettings }, { generateSmartSummary }] = await Promise.all([import("./conversation-compaction-Dj4FAKoZ.js"), import("./smart-compaction-CPp2Ykf6.js")]);
|
|
6844
7233
|
const settings = getConversationCompactionSettings();
|
|
6845
7234
|
summary = (await Effect.runPromise(generateSmartSummary({
|
|
6846
7235
|
jsonlPath: sessionFile,
|
|
@@ -6851,7 +7240,7 @@ async function buildCompactRecoverySeed(agentId) {
|
|
|
6851
7240
|
} catch (err) {
|
|
6852
7241
|
logAgentLifecycleSync(normalizedId, `compact-recovery smart summary failed (${err instanceof Error ? err.message : String(err)}); trying heuristic fallback`);
|
|
6853
7242
|
try {
|
|
6854
|
-
const { generateFallbackSummary } = await import("./summary-fork-
|
|
7243
|
+
const { generateFallbackSummary } = await import("./summary-fork-CD7GOts0.js");
|
|
6855
7244
|
summary = await Effect.runPromise(generateFallbackSummary(sessionFile));
|
|
6856
7245
|
} catch (fallbackErr) {
|
|
6857
7246
|
logAgentLifecycleSync(normalizedId, `compact-recovery fallback summary failed (${fallbackErr instanceof Error ? fallbackErr.message : String(fallbackErr)}); seeding with reseed instructions only`);
|
|
@@ -8606,7 +8995,7 @@ async function command(adapters, executable, args) {
|
|
|
8606
8995
|
return null;
|
|
8607
8996
|
}
|
|
8608
8997
|
}
|
|
8609
|
-
function createDarwinHostHealthCollector(adapters = defaultAdapters$
|
|
8998
|
+
function createDarwinHostHealthCollector(adapters = defaultAdapters$2) {
|
|
8610
8999
|
return {
|
|
8611
9000
|
platform: "darwin",
|
|
8612
9001
|
async sample(previous) {
|
|
@@ -8646,6 +9035,9 @@ function createDarwinHostHealthCollector(adapters = defaultAdapters$1) {
|
|
|
8646
9035
|
committedMemoryBytes: unavailable("macOS does not expose Linux Committed_AS."),
|
|
8647
9036
|
commitLimitBytes: unavailable("macOS does not expose Linux CommitLimit."),
|
|
8648
9037
|
virtualCommitmentPercent: unavailable("macOS virtual commitment is unavailable."),
|
|
9038
|
+
inotifyWatchesUsed: unavailable("inotify is Linux-only."),
|
|
9039
|
+
inotifyWatchesMax: unavailable("inotify is Linux-only."),
|
|
9040
|
+
inotifyWatchesUsedPercent: unavailable("inotify is Linux-only."),
|
|
8649
9041
|
counters: {
|
|
8650
9042
|
cpu: cpuCounters,
|
|
8651
9043
|
swap: vmStat?.swap ?? null
|
|
@@ -8654,7 +9046,7 @@ function createDarwinHostHealthCollector(adapters = defaultAdapters$1) {
|
|
|
8654
9046
|
}
|
|
8655
9047
|
};
|
|
8656
9048
|
}
|
|
8657
|
-
var execFileAsync$2, COMMAND_TIMEOUT_MS, MIB, DARWIN_MEMORY_PRESSURE_DEFAULTS, defaultAdapters$
|
|
9049
|
+
var execFileAsync$2, COMMAND_TIMEOUT_MS, MIB, DARWIN_MEMORY_PRESSURE_DEFAULTS, defaultAdapters$2;
|
|
8658
9050
|
var init_darwin = __esmMin((() => {
|
|
8659
9051
|
init_types();
|
|
8660
9052
|
execFileAsync$2 = promisify(execFile);
|
|
@@ -8666,7 +9058,7 @@ var init_darwin = __esmMin((() => {
|
|
|
8666
9058
|
swapActivityWarningBytesPerMinute: 64 * MIB,
|
|
8667
9059
|
swapActivityCriticalBytesPerMinute: 256 * MIB
|
|
8668
9060
|
});
|
|
8669
|
-
defaultAdapters$
|
|
9061
|
+
defaultAdapters$2 = {
|
|
8670
9062
|
execFile: async (command, args, timeoutMs) => {
|
|
8671
9063
|
const { stdout } = await execFileAsync$2(command, [...args], {
|
|
8672
9064
|
encoding: "utf-8",
|
|
@@ -8681,6 +9073,121 @@ var init_darwin = __esmMin((() => {
|
|
|
8681
9073
|
};
|
|
8682
9074
|
}));
|
|
8683
9075
|
//#endregion
|
|
9076
|
+
//#region ../../lib/system-health/inotify.ts
|
|
9077
|
+
/**
|
|
9078
|
+
* inotify watch/instance accounting for the local user.
|
|
9079
|
+
*
|
|
9080
|
+
* inotify watches are a per-UID kernel budget (fs.inotify.max_user_watches)
|
|
9081
|
+
* shared by every process the user runs — host processes and Docker
|
|
9082
|
+
* containers alike, since containers share the kernel and (in Overdeck's
|
|
9083
|
+
* setups) the same uid. When the budget is exhausted, any program that
|
|
9084
|
+
* tries to add a watch fails with ENOSPC; the classic symptom is a Vite
|
|
9085
|
+
* dev server dying at startup while everything else looks healthy
|
|
9086
|
+
* (PAN-3063, the 2026-07-25 MIN-898 incident).
|
|
9087
|
+
*
|
|
9088
|
+
* The kernel exposes no aggregate usage counter, so the only way to measure
|
|
9089
|
+
* usage is to walk /proc/<pid>/fd for anon_inode:inotify descriptors and sum
|
|
9090
|
+
* the `inotify wd:` lines in the matching fdinfo files. Unprivileged scans
|
|
9091
|
+
* can only read same-uid processes, which conveniently matches the per-UID
|
|
9092
|
+
* scope of the budget itself.
|
|
9093
|
+
*/
|
|
9094
|
+
/** Counts `inotify wd:` entries in a /proc/<pid>/fdinfo/<fd> payload. */
|
|
9095
|
+
function countInotifyWatches(fdinfoContent) {
|
|
9096
|
+
let count = 0;
|
|
9097
|
+
for (const line of fdinfoContent.split("\n")) if (line.startsWith("inotify wd:")) count += 1;
|
|
9098
|
+
return count;
|
|
9099
|
+
}
|
|
9100
|
+
function parseProcLimit(content) {
|
|
9101
|
+
const value = Number(content.trim());
|
|
9102
|
+
return Number.isFinite(value) && value > 0 ? value : null;
|
|
9103
|
+
}
|
|
9104
|
+
async function readLimit(adapters, path) {
|
|
9105
|
+
try {
|
|
9106
|
+
return parseProcLimit(await adapters.readFile(path));
|
|
9107
|
+
} catch {
|
|
9108
|
+
return null;
|
|
9109
|
+
}
|
|
9110
|
+
}
|
|
9111
|
+
async function scanPid(adapters, pid) {
|
|
9112
|
+
let fds;
|
|
9113
|
+
try {
|
|
9114
|
+
fds = await adapters.readdir(`/proc/${pid}/fd`);
|
|
9115
|
+
} catch {
|
|
9116
|
+
return null;
|
|
9117
|
+
}
|
|
9118
|
+
let watches = 0;
|
|
9119
|
+
let instances = 0;
|
|
9120
|
+
for (const fd of fds) {
|
|
9121
|
+
let target;
|
|
9122
|
+
try {
|
|
9123
|
+
target = await adapters.readlink(`/proc/${pid}/fd/${fd}`);
|
|
9124
|
+
} catch {
|
|
9125
|
+
continue;
|
|
9126
|
+
}
|
|
9127
|
+
if (!target.includes("inotify")) continue;
|
|
9128
|
+
instances += 1;
|
|
9129
|
+
try {
|
|
9130
|
+
watches += countInotifyWatches(await adapters.readFile(`/proc/${pid}/fdinfo/${fd}`));
|
|
9131
|
+
} catch {}
|
|
9132
|
+
}
|
|
9133
|
+
if (instances === 0) return null;
|
|
9134
|
+
return {
|
|
9135
|
+
pid,
|
|
9136
|
+
watches,
|
|
9137
|
+
instances
|
|
9138
|
+
};
|
|
9139
|
+
}
|
|
9140
|
+
async function readCommand(adapters, pid) {
|
|
9141
|
+
try {
|
|
9142
|
+
const command = (await adapters.readFile(`/proc/${pid}/cmdline`)).replaceAll("\0", " ").trim();
|
|
9143
|
+
return command.length > 120 ? `${command.slice(0, 117)}…` : command;
|
|
9144
|
+
} catch {
|
|
9145
|
+
return `pid ${pid}`;
|
|
9146
|
+
}
|
|
9147
|
+
}
|
|
9148
|
+
/**
|
|
9149
|
+
* Walks /proc and totals inotify watches and instances held by processes
|
|
9150
|
+
* this user can read. Returns null when /proc is unavailable (non-Linux).
|
|
9151
|
+
*/
|
|
9152
|
+
async function sampleInotify(adapters = defaultAdapters$1) {
|
|
9153
|
+
let procEntries;
|
|
9154
|
+
try {
|
|
9155
|
+
procEntries = await adapters.readdir("/proc");
|
|
9156
|
+
} catch {
|
|
9157
|
+
return null;
|
|
9158
|
+
}
|
|
9159
|
+
const pids = procEntries.filter((entry) => /^\d+$/.test(entry)).map(Number);
|
|
9160
|
+
const scans = [];
|
|
9161
|
+
for (let i = 0; i < pids.length; i += PID_SCAN_CONCURRENCY) {
|
|
9162
|
+
const chunk = pids.slice(i, i + PID_SCAN_CONCURRENCY);
|
|
9163
|
+
const results = await Promise.all(chunk.map((pid) => scanPid(adapters, pid)));
|
|
9164
|
+
for (const result of results) if (result) scans.push(result);
|
|
9165
|
+
}
|
|
9166
|
+
const [watchesMax, instancesMax] = await Promise.all([readLimit(adapters, "/proc/sys/fs/inotify/max_user_watches"), readLimit(adapters, "/proc/sys/fs/inotify/max_user_instances")]);
|
|
9167
|
+
const top = [...scans].sort((a, b) => b.watches - a.watches).slice(0, 5);
|
|
9168
|
+
const topConsumers = await Promise.all(top.map(async (scan) => ({
|
|
9169
|
+
pid: scan.pid,
|
|
9170
|
+
watches: scan.watches,
|
|
9171
|
+
command: await readCommand(adapters, scan.pid)
|
|
9172
|
+
})));
|
|
9173
|
+
return {
|
|
9174
|
+
watchesUsed: scans.reduce((sum, scan) => sum + scan.watches, 0),
|
|
9175
|
+
watchesMax,
|
|
9176
|
+
instancesUsed: scans.reduce((sum, scan) => sum + scan.instances, 0),
|
|
9177
|
+
instancesMax,
|
|
9178
|
+
topConsumers
|
|
9179
|
+
};
|
|
9180
|
+
}
|
|
9181
|
+
var PID_SCAN_CONCURRENCY, defaultAdapters$1;
|
|
9182
|
+
var init_inotify = __esmMin((() => {
|
|
9183
|
+
PID_SCAN_CONCURRENCY = 32;
|
|
9184
|
+
defaultAdapters$1 = {
|
|
9185
|
+
readdir: (path) => readdir(path),
|
|
9186
|
+
readlink: (path) => readlink(path),
|
|
9187
|
+
readFile: (path) => readFile(path, "utf-8")
|
|
9188
|
+
};
|
|
9189
|
+
}));
|
|
9190
|
+
//#endregion
|
|
8684
9191
|
//#region ../../lib/system-health/linux.ts
|
|
8685
9192
|
function parseMemInfo(content) {
|
|
8686
9193
|
const values = /* @__PURE__ */ new Map();
|
|
@@ -8774,10 +9281,16 @@ function percent(part, total) {
|
|
|
8774
9281
|
return Math.round(part / total * 1e3) / 10;
|
|
8775
9282
|
}
|
|
8776
9283
|
function createLinuxHostHealthCollector(adapters = defaultAdapters) {
|
|
9284
|
+
let inotifyCache = null;
|
|
8777
9285
|
return {
|
|
8778
9286
|
platform: "linux",
|
|
8779
9287
|
async sample(previous) {
|
|
8780
9288
|
const sampledAtMs = adapters.now();
|
|
9289
|
+
if (!inotifyCache || sampledAtMs - inotifyCache.atMs >= 6e4) inotifyCache = {
|
|
9290
|
+
atMs: sampledAtMs,
|
|
9291
|
+
sample: await adapters.sampleInotify().catch(() => null)
|
|
9292
|
+
};
|
|
9293
|
+
const inotify = inotifyCache.sample;
|
|
8781
9294
|
const [memInfo, procStat, pressure, vmstat, loadAverage, pageSizeBytes] = await Promise.all([
|
|
8782
9295
|
readParsed(adapters, "/proc/meminfo", parseMemInfo),
|
|
8783
9296
|
readParsed(adapters, "/proc/stat", parseProcStat),
|
|
@@ -8817,6 +9330,9 @@ function createLinuxHostHealthCollector(adapters = defaultAdapters) {
|
|
|
8817
9330
|
committedMemoryBytes: committedMemoryBytes == null ? unavailable("Committed_AS is unavailable.") : available(committedMemoryBytes),
|
|
8818
9331
|
commitLimitBytes: commitLimitBytes == null ? unavailable("CommitLimit is unavailable.") : available(commitLimitBytes),
|
|
8819
9332
|
virtualCommitmentPercent: committedMemoryBytes == null || commitLimitBytes == null ? unavailable("Virtual commitment cannot be derived.") : available(percent(committedMemoryBytes, commitLimitBytes)),
|
|
9333
|
+
inotifyWatchesUsed: inotify == null ? unavailable("inotify usage could not be scanned from /proc.") : available(inotify.watchesUsed),
|
|
9334
|
+
inotifyWatchesMax: inotify?.watchesMax == null ? unavailable("fs.inotify.max_user_watches is unavailable.") : available(inotify.watchesMax),
|
|
9335
|
+
inotifyWatchesUsedPercent: inotify == null || inotify.watchesMax == null ? unavailable("inotify watch utilization cannot be derived.") : available(percent(inotify.watchesUsed, inotify.watchesMax)),
|
|
8820
9336
|
counters: {
|
|
8821
9337
|
cpu: cpuCounters,
|
|
8822
9338
|
swap: swapCounters
|
|
@@ -8827,6 +9343,7 @@ function createLinuxHostHealthCollector(adapters = defaultAdapters) {
|
|
|
8827
9343
|
}
|
|
8828
9344
|
var execFileAsync$1, KB, LINUX_MEMORY_PRESSURE_DEFAULTS, defaultAdapters;
|
|
8829
9345
|
var init_linux = __esmMin((() => {
|
|
9346
|
+
init_inotify();
|
|
8830
9347
|
init_types();
|
|
8831
9348
|
execFileAsync$1 = promisify(execFile);
|
|
8832
9349
|
KB = 1024;
|
|
@@ -8847,7 +9364,8 @@ var init_linux = __esmMin((() => {
|
|
|
8847
9364
|
if (!Number.isFinite(value) || value <= 0) throw new Error("getconf returned an invalid page size");
|
|
8848
9365
|
return value;
|
|
8849
9366
|
},
|
|
8850
|
-
now: () => Date.now()
|
|
9367
|
+
now: () => Date.now(),
|
|
9368
|
+
sampleInotify: () => sampleInotify()
|
|
8851
9369
|
};
|
|
8852
9370
|
}));
|
|
8853
9371
|
//#endregion
|
|
@@ -8902,6 +9420,9 @@ function createUnsupportedCollector(platform = "unsupported") {
|
|
|
8902
9420
|
committedMemoryBytes: signal(),
|
|
8903
9421
|
commitLimitBytes: signal(),
|
|
8904
9422
|
virtualCommitmentPercent: signal(),
|
|
9423
|
+
inotifyWatchesUsed: signal(),
|
|
9424
|
+
inotifyWatchesMax: signal(),
|
|
9425
|
+
inotifyWatchesUsedPercent: signal(),
|
|
8905
9426
|
counters: {
|
|
8906
9427
|
cpu: null,
|
|
8907
9428
|
swap: null
|
|
@@ -9054,7 +9575,7 @@ var init_runtime_census = __esmMin((() => {
|
|
|
9054
9575
|
]);
|
|
9055
9576
|
runtimeCensusService = createRuntimeCensusService({
|
|
9056
9577
|
listPanes: async () => {
|
|
9057
|
-
const { listAllPaneRecords } = await import("./tmux-
|
|
9578
|
+
const { listAllPaneRecords } = await import("./tmux-DQ6jB76i.js");
|
|
9058
9579
|
return Effect.runPromise(listAllPaneRecords());
|
|
9059
9580
|
},
|
|
9060
9581
|
readProcesses: readRuntimeProcessTable
|
|
@@ -9208,6 +9729,6 @@ var init_queries = __esmMin((() => {
|
|
|
9208
9729
|
});
|
|
9209
9730
|
}));
|
|
9210
9731
|
//#endregion
|
|
9211
|
-
export {
|
|
9732
|
+
export { operatorInterventionEvent as $, getAgentDir as $n, providerDefaultHarnessSync as $t, spawnTierSupervisor as A, getProviderExportsForModel as An, isQualifiedAgentId as Ar, AmbiguousKeyedDeliveryError as At, detectCrashedAgents as B, dismissDevChannelsDialog as Bn, init_agent_runtime as Br, init_transcript_landing as Bt, replayCrashedStandingAgent as C, materializeAcpContextFile as Cn, init_agent_record_sync as Cr, resetPatrolDispatchBudget as Ct, init_tier_supervisor as D, buildSpawnEnvForModel as Dn, init_pty_supervisor_locate as Dr, getCachedMemoryVerdict as Dt, deliverCommitForReview as E, buildCavemanExports as En, writePtyToken as Er, workResumeSlotsAvailable as Et, init_tier_escalation as F, init_openai_auth as Fn, getAgentRuntimeState as Fr, deliverResumeMessageWithTranscriptConfirmation as Ft, resumeAgent as G, SESSION_EXITED_BEFORE_KICKOFF as Gn, init_ohmypi_parser as Gr, assertWorkspaceStackHealthyForSpawn as Gt, restartAgent as H, init_supervisor_channels as Hn, checkCodexAuthStatus as Hr, BRIDGE_TOKEN_HEADER as Ht, init_slot_reconcile as I, buildDefaultResumeContinueMessage as In, getAgentRuntimeStateSync as Ir, init_delivery as It, isContextOverflowTail as J, clearAgentPausedSync as Jn, init_spawn_prep as Jt, init_context_overflow as K, __testInternals as Kn, parseOhmypiSessionCostResultSync as Kr, buildAgentLaunchConfig as Kt, listSlotAssignments as L, buildResumeContinueMessage as Ln, init_runtime_state as Lr, resilientDeliveryMethod as Lt, broadcastCommit as M, init_provider_health as Mn, resolveAgentTargetSync as Mr, deliverAgentMessage as Mt, init_tier_feed as N, validateProviderHealth as Nn, waitForAgentIdle as Nr, deliverAgentPermissionDecision as Nt, loadPrdDraft as O, determineModel as On, resolvePtySupervisorScriptPath as Or, init_memory_verdict_cache as Ot, decideEscalation as P, getOpenAIAuthStatus as Pn, waitForReadySignal as Pr, deliverInitialPromptWithRetry as Pt, init_operator_interventions as Q, decideResumeGate as Qn, init_staffing as Qt, reconcileSlotState as R, decideChannelsForWorkAgent as Rn, saveAgentRuntimeState as Rr, setAgentDeliveryMethod as Rt, contextWindowForModel as S, init_context as Sn, writeAgentStateJsonSync as Sr, releaseSwarmSlot as St, shouldReplayCompactAtTierRunBoundary as T, init_claude_auth as Tn, init_pty_token as Tr, tryReserveSwarmSlot as Tt, buildCompactRecoverySeed as U, writeChannelsBridgeMcpConfig as Un, init_codex_auth as Ur, init_bridge_token as Ut, recoverAgent as V, hasCompletionMarkerForAgent as Vn, applyCodexAuthBurnFlag as Vr, probeTranscriptSince as Vt, init_resume as W, GOVERNOR_SLOT_PAUSE_REASON_PREFIX as Wn, paneShowsCodexAuthBurn as Wr, writeBridgeTokenSync as Wt, messageAgent as X, clearAgentTroubledSync as Xn, transitionIssueToInProgress as Xt, init_messaging as Y, clearAgentTroubled as Yn, retrieveSpawnTimeMemoryContext as Yt, messageAgentWithOutcome as Z, clearYieldForResumeSync as Zn, transitionIssueToInReview as Zt, init_linux as _, waitForPromptReady as _n, saveAgentStateSync as _r, describeRunningAgents as _t, listRunningAgentsSync as a, OHMYPI_AGENT_READY_TIMEOUT_SECONDS as an, isAgentPaused as ar, init_activity as at, init_agents as b, init_ohmypi_fifo as bn, setAgentYieldedSync as br, init_concurrency as bt, getRuntimeCensus as c, getAgentRuntimeBaseCommand as cn, markAgentRunning as cr, init_ohmypi as ct, panePidsForSession as d, getProviderAuthMode as dn, markAgentTroubled as dr, spawnRun as dt, resolveImplicitStaffing as en, getAgentResumeGateBlockReason as er, appendActivity as et, refreshRuntimeCensus as f, getRoleRuntimeBaseCommand as fn, recordAgentFailure as fr, init_termination as ft, LINUX_MEMORY_PRESSURE_DEFAULTS as g, waitForAcpHostReady as gn, saveAgentState as gr, countRunningSwarmSlotsForIssue as gt, init_collector as h, roleAgentDefinitionPath as hn, resetAgentFailureCount as hr, countRunningAgents as ht, listRunningAgents as i, resolveTier as in, init_agent_state as ir, getSessionId as it, supervisorAgentId as j, getProviderTmuxFlags as jn, normalizeAgentId as jr, SocketPostStatusError as jt, shouldSupervise as k, getProviderEnvForModel as kn, clearReadySignal as kr, setCachedMemoryVerdict as kt, getRuntimeCensusSnapshot as l, getCodexLauncherFields as ln, markAgentRunningState as lr, init_spawn as lt, createHostHealthCollector as m, injectPiConversationMemory as mn, recordStartupSessionExit as mr, stopAgentSync as mt, init_queries as n, resolveStaffing as nn, getAgentStateFilePath as nr, getLatestSessionId as nt, warnOnBareNumericIssueIds as o, describeOhmypiSpawnFailure as on, isAgentTroubled as or, saveSessionId as ot, runtimeCensusHasHarnessProcess as p, init_runtime_command as pn, recordAgentFailureSync as pr, stopAgent as pt, isContextOverflowError as q, clearAgentPaused as qn, defaultRunWorkspace as qt, listAgentStates as r, init_resolve_tier as rn, getAgentStateSync as rr, getLatestSessionIdSync as rt, descendantPidsForSession as s, getAcpLauncherFields as sn, isRole as sr, createOhmypiRuntimeSync as st, dropLegacyAgentStatesMissingRoleAsync as t, resolveIssueWorkModel as tn, getAgentState as tr, getActivity as tt, init_runtime_census as u, getOhmypiLauncherFields as un, markAgentStoppedState as ur, spawnAgent as ut, DARWIN_MEMORY_PRESSURE_DEFAULTS as v, init_pi_fifo as vn, setAgentPaused as vr, emergencyBrake as vt, replayStandingAgent as w, getClaudeAuthStatus as wn, readAgentHarnessModelRecordSync as wr, tryReserveAdvancingSlot as wt, compactAtTierRunBoundary as x, ohmypiFifoPaths as xn, wipeAgentStateDirs as xr, releaseAdvancingSlot as xt, init_darwin as y, piFifoPaths as yn, setAgentPausedSync as yr, getConcurrencyLimits as yt, autoRecoverAgents as z, decideSupervisorForWorkAgent as zn, getAgentRuntimeSnapshot as zr, captureTranscriptUserRecordSnapshot as zt };
|
|
9212
9733
|
|
|
9213
|
-
//# sourceMappingURL=queries-
|
|
9734
|
+
//# sourceMappingURL=queries-DHJm7bTd.js.map
|