@humwick/server 0.0.0-stage → 0.130.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/CLA.md +66 -0
- package/CONTRIBUTING.md +144 -0
- package/LICENSE +167 -0
- package/README.md +511 -2
- package/SECURITY.md +67 -0
- package/THIRD_PARTY_NOTICES.md +144 -0
- package/bundled/prompts/README.md +10 -0
- package/bundled/prompts/context.advisory.compact.md +1 -0
- package/bundled/prompts/context.advisory.warn.md +1 -0
- package/bundled/prompts/continuation.envelope.md +18 -0
- package/bundled/prompts/manifest.json +838 -0
- package/bundled/prompts/memory.capture.boundary.post.md +1 -0
- package/bundled/prompts/memory.capture.boundary.pre.md +1 -0
- package/bundled/prompts/memory.charter.md +3 -0
- package/bundled/prompts/memory.native-off.md +0 -0
- package/bundled/prompts/notify.agent.exited.md +1 -0
- package/bundled/prompts/notify.agent.never-ready.md +1 -0
- package/bundled/prompts/notify.agent.ready.md +1 -0
- package/bundled/prompts/notify.automation.budget-warning.md +1 -0
- package/bundled/prompts/notify.land.failure.md +1 -0
- package/bundled/prompts/notify.land.steward-taken.coordinator.md +1 -0
- package/bundled/prompts/notify.land.steward-taken.md +1 -0
- package/bundled/prompts/notify.land.success.md +1 -0
- package/bundled/prompts/notify.routing.policy-changed.md +2 -0
- package/bundled/prompts/notify.spawn.failed.md +1 -0
- package/bundled/prompts/notify.spawn.queued.md +1 -0
- package/bundled/prompts/notify.spawn.recovered.md +1 -0
- package/bundled/prompts/notify.spawn.unconfirmed.md +1 -0
- package/bundled/prompts/profile.coordinator.charter.md +17 -0
- package/bundled/prompts/profile.debugger.system.md +12 -0
- package/bundled/prompts/profile.device-qa.system.md +10 -0
- package/bundled/prompts/profile.image-gen.append.0.md +2 -0
- package/bundled/prompts/profile.image-gen.system.md +4 -0
- package/bundled/prompts/profile.ops-assistant.brief.md +4 -0
- package/bundled/prompts/profile.probe.system.md +5 -0
- package/bundled/prompts/profile.qa.system.md +10 -0
- package/bundled/prompts/profile.sec-ops.system.md +14 -0
- package/bundled/prompts/profile.social-media.system.md +7 -0
- package/bundled/prompts/profile.software-design.system.md +26 -0
- package/bundled/prompts/profile.sub-coordinator.charter.md +2 -0
- package/bundled/prompts/profile.worker-gui.system.md +7 -0
- package/bundled/prompts/profile.worker.system.md +2 -0
- package/bundled/prompts/relay.agent-core.delivery.md +13 -0
- package/bundled/prompts/relay.agent-core.engineering.md +13 -0
- package/bundled/prompts/relay.agent-core.md +22 -0
- package/bundled/prompts/relay.context.claude.md +1 -0
- package/bundled/prompts/relay.context.claude.readonly.md +3 -0
- package/bundled/prompts/relay.context.codex.md +1 -0
- package/bundled/prompts/relay.context.opencode.md +1 -0
- package/bundled/prompts/relay.manual.claude.md +8 -0
- package/bundled/prompts/relay.search.fff.md +1 -0
- package/bundled/prompts/relay.temp-dir.md +1 -0
- package/bundled/prompts/relay.web.brave.md +1 -0
- package/bundled/prompts/relay.web.fetch.md +1 -0
- package/bundled/prompts/skill.device-lane.md +20 -0
- package/bundled/prompts/skill.security-code-review.md +10 -0
- package/bundled/prompts/skill.security-hardening.md +10 -0
- package/bundled/prompts/skill.security-host-audit.md +11 -0
- package/bundled/prompts/spawn.primer.md +6 -0
- package/bundled/prompts/spawn.reportup.child.md +3 -0
- package/bundled/prompts/spawn.reportup.coordinator.md +2 -0
- package/bundled/prompts/spawn.reportup.workflow-step.md +4 -0
- package/bundled/prompts/spawn.validation.delivery.md +1 -0
- package/bundled/prompts/spawn.validation.iterate.generic.md +1 -0
- package/bundled/prompts/spawn.validation.iterate.imperative.md +1 -0
- package/bundled/prompts/spawn.validation.landgates.header.md +1 -0
- package/bundled/prompts/steward.merge-stall.md +1 -0
- package/bundled/prompts/steward.prompt.md +20 -0
- package/bundled/prompts/steward.wake.md +1 -0
- package/bundled/prompts/task.claim.instruction.md +1 -0
- package/bundled/prompts/task.hydration.md +23 -0
- package/bundled/prompts/user.response.brief.md +1 -0
- package/bundled/prompts/user.response.normal.md +1 -0
- package/bundled/prompts/user.style.neutral.md +1 -0
- package/bundled/prompts/user.style.warm.md +1 -0
- package/bundled/prompts/workspace.deps.command.md +1 -0
- package/bundled/prompts/workspace.deps.none.md +1 -0
- package/bundled/prompts/workspace.deps.symlink.md +1 -0
- package/bundled/prompts/workspace.lifecycle.md +4 -0
- package/bundled/prompts/workspace.mcp.instructions.md +7 -0
- package/bundled/prompts/workspace.phase.abandoned.headline.md +1 -0
- package/bundled/prompts/workspace.phase.abandoned.hint.md +1 -0
- package/bundled/prompts/workspace.phase.active.headline.md +1 -0
- package/bundled/prompts/workspace.phase.active.hint.md +1 -0
- package/bundled/prompts/workspace.phase.conflict.headline.md +1 -0
- package/bundled/prompts/workspace.phase.conflict.hint.md +1 -0
- package/bundled/prompts/workspace.phase.merge-planned.headline.md +1 -0
- package/bundled/prompts/workspace.phase.merge-planned.hint.md +1 -0
- package/bundled/prompts/workspace.phase.merged.headline.md +1 -0
- package/bundled/prompts/workspace.phase.merged.hint.md +1 -0
- package/bundled/prompts/workspace.phase.ready.headline.md +1 -0
- package/bundled/prompts/workspace.phase.ready.hint.md +1 -0
- package/bundled/prompts/workspace.ready.contract.md +6 -0
- package/bundled/prompts/workspace.symlinks.md +1 -0
- package/bundled/roles/builder.md +18 -0
- package/bundled/roles/design-reviewer.md +13 -0
- package/bundled/roles/designer.md +11 -0
- package/bundled/roles/plan-auditor.md +29 -0
- package/bundled/roles/reviewer.md +36 -0
- package/bundled/roles/slice-qa.md +13 -0
- package/bundled/roles/verifier.md +13 -0
- package/bundled/skills/agent-browser/SKILL.md +72 -0
- package/bundled/skills/test-audit/SKILL.md +75 -0
- package/bundled/workflows/build-review.yaml +8 -0
- package/bundled/workflows/design-review.yaml +60 -0
- package/bundled/workflows/plan-conformance.yaml +5 -0
- package/bundled/workflows/slice-proof.yaml +85 -0
- package/bundled/workflows/verify-deployed.yaml +140 -0
- package/docs/guides/sub-coordinators.md +114 -0
- package/docs/guides/tools-administration.md +83 -0
- package/docs/guides/tools-agents.md +137 -0
- package/docs/guides/tools-coordination.md +228 -0
- package/docs/guides/tools-execution.md +48 -0
- package/docs/guides/tools-issues.md +69 -0
- package/docs/guides/tools-memory.md +150 -0
- package/docs/guides/tools-messages.md +192 -0
- package/docs/guides/tools-operations.md +133 -0
- package/docs/guides/tools-tasks.md +235 -0
- package/docs/guides/workflows.md +324 -0
- package/docs/license-faq.md +37 -0
- package/docs/openapi.json +18531 -0
- package/examples/integrations/github-issue.ts +48 -0
- package/examples/integrations/ops-alert.sh +27 -0
- package/examples/integrations/prometheus-alertmanager.ts +55 -0
- package/examples/integrations/support-ticket.sh +28 -0
- package/node_modules/@humwick/kernel/LICENSE +167 -0
- package/node_modules/@humwick/kernel/async-entity-persistence.ts +344 -0
- package/node_modules/@humwick/kernel/async-event-log.ts +107 -0
- package/node_modules/@humwick/kernel/automations.pilot.ts +147 -0
- package/node_modules/@humwick/kernel/config.ts +111 -0
- package/node_modules/@humwick/kernel/contract.ts +572 -0
- package/node_modules/@humwick/kernel/control-authz.ts +281 -0
- package/node_modules/@humwick/kernel/control.ts +645 -0
- package/node_modules/@humwick/kernel/effects.ts +493 -0
- package/node_modules/@humwick/kernel/event-log.ts +319 -0
- package/node_modules/@humwick/kernel/http-transport.ts +384 -0
- package/node_modules/@humwick/kernel/identity-grammar.ts +20 -0
- package/node_modules/@humwick/kernel/identity.ts +248 -0
- package/node_modules/@humwick/kernel/index.ts +28 -0
- package/node_modules/@humwick/kernel/kernel-persistence.ts +181 -0
- package/node_modules/@humwick/kernel/landing-incident.ts +306 -0
- package/node_modules/@humwick/kernel/landing.ts +953 -0
- package/node_modules/@humwick/kernel/manifest-validation.ts +460 -0
- package/node_modules/@humwick/kernel/mcp-transport.ts +109 -0
- package/node_modules/@humwick/kernel/message-authority-chaos-worker.ts +200 -0
- package/node_modules/@humwick/kernel/message-authority.ts +281 -0
- package/node_modules/@humwick/kernel/module-host.ts +722 -0
- package/node_modules/@humwick/kernel/openapi-init.ts +14 -0
- package/node_modules/@humwick/kernel/package.json +47 -0
- package/node_modules/@humwick/kernel/persistence-schema.ts +248 -0
- package/node_modules/@humwick/kernel/persistence.ts +510 -0
- package/node_modules/@humwick/kernel/registry.ts +60 -0
- package/node_modules/@humwick/kernel/sqlite-kernel-persistence.ts +499 -0
- package/node_modules/@humwick/kernel/sqlite-module-host.ts +87 -0
- package/node_modules/@humwick/kernel/timers-chaos-worker.ts +186 -0
- package/node_modules/@humwick/kernel/timers.pilot.ts +1411 -0
- package/node_modules/@humwick/kernel/workflow-activation.ts +25 -0
- package/node_modules/@humwick/kernel/workflow-backstop.ts +40 -0
- package/node_modules/@humwick/kernel/workflow-cancel-tree.ts +20 -0
- package/node_modules/@humwick/kernel/workflow-chaos-worker.ts +213 -0
- package/node_modules/@humwick/kernel/workflow-composition.ts +231 -0
- package/node_modules/@humwick/kernel/workflow-container.ts +72 -0
- package/node_modules/@humwick/kernel/workflow-control.test-fixture.ts +42 -0
- package/node_modules/@humwick/kernel/workflow-control.ts +178 -0
- package/node_modules/@humwick/kernel/workflow-definition.ts +507 -0
- package/node_modules/@humwick/kernel/workflow-dispatch.ts +60 -0
- package/node_modules/@humwick/kernel/workflow-foreach.ts +167 -0
- package/node_modules/@humwick/kernel/workflow-journal-codec.ts +339 -0
- package/node_modules/@humwick/kernel/workflow-journal.ts +922 -0
- package/node_modules/@humwick/kernel/workflow-lane.ts +48 -0
- package/node_modules/@humwick/kernel/workflow-lease-owner.ts +60 -0
- package/node_modules/@humwick/kernel/workflow-recovery.test-fixture.ts +19 -0
- package/node_modules/@humwick/kernel/workflow-runtime.ts +938 -0
- package/node_modules/@humwick/kernel/workflow-script.ts +11 -0
- package/node_modules/@humwick/kernel/workflow-state.ts +299 -0
- package/node_modules/@humwick/kernel/workflow-step-commit.ts +195 -0
- package/node_modules/@humwick/kernel/workflow-transitions.ts +317 -0
- package/node_modules/@humwick/kernel/workflow-values.ts +153 -0
- package/node_modules/@humwick/kernel/workflow.pilot.ts +376 -0
- package/node_modules/@humwick/offload/LICENSE +167 -0
- package/node_modules/@humwick/offload/README.md +57 -0
- package/node_modules/@humwick/offload/dist/async-runner.d.ts +18 -0
- package/node_modules/@humwick/offload/dist/async-runner.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/async-runner.js +158 -0
- package/node_modules/@humwick/offload/dist/async-runner.js.map +1 -0
- package/node_modules/@humwick/offload/dist/envelope.d.ts +25 -0
- package/node_modules/@humwick/offload/dist/envelope.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/envelope.js +80 -0
- package/node_modules/@humwick/offload/dist/envelope.js.map +1 -0
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts +10 -0
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.js +59 -0
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.js.map +1 -0
- package/node_modules/@humwick/offload/dist/index.d.ts +5 -0
- package/node_modules/@humwick/offload/dist/index.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/index.js +5 -0
- package/node_modules/@humwick/offload/dist/index.js.map +1 -0
- package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts +62 -0
- package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/subprocess-runner.js +295 -0
- package/node_modules/@humwick/offload/dist/subprocess-runner.js.map +1 -0
- package/node_modules/@humwick/offload/dist/types.d.ts +111 -0
- package/node_modules/@humwick/offload/dist/types.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/types.js +176 -0
- package/node_modules/@humwick/offload/dist/types.js.map +1 -0
- package/node_modules/@humwick/offload/dist/worker-pool.d.ts +23 -0
- package/node_modules/@humwick/offload/dist/worker-pool.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/worker-pool.js +435 -0
- package/node_modules/@humwick/offload/dist/worker-pool.js.map +1 -0
- package/node_modules/@humwick/offload/dist/worker-runtime.d.ts +2 -0
- package/node_modules/@humwick/offload/dist/worker-runtime.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/worker-runtime.js +27 -0
- package/node_modules/@humwick/offload/dist/worker-runtime.js.map +1 -0
- package/node_modules/@humwick/offload/dist/worker.d.ts +5 -0
- package/node_modules/@humwick/offload/dist/worker.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/worker.js +1 -0
- package/node_modules/@humwick/offload/dist/worker.js.map +1 -0
- package/node_modules/@humwick/offload/package.json +46 -0
- package/node_modules/@humwick/offload/src/async-runner.ts +170 -0
- package/node_modules/@humwick/offload/src/envelope.ts +92 -0
- package/node_modules/@humwick/offload/src/fixtures/worker-task.ts +49 -0
- package/node_modules/@humwick/offload/src/index.ts +4 -0
- package/node_modules/@humwick/offload/src/subprocess-runner.ts +334 -0
- package/node_modules/@humwick/offload/src/types.ts +235 -0
- package/node_modules/@humwick/offload/src/worker-pool.ts +463 -0
- package/node_modules/@humwick/offload/src/worker-runtime.ts +32 -0
- package/node_modules/@humwick/offload/src/worker.ts +5 -0
- package/package.json +229 -4
- package/public/assets/MessageBubble-BWpoBjl4.js +4 -0
- package/public/assets/PlanGraphPanel-C0auck3n.js +2 -0
- package/public/assets/TraceView-DBnOx7AQ.js +5 -0
- package/public/assets/VaultDecisionCard-0kp2oNBC.js +2 -0
- package/public/assets/activity-TMzFOdh2.js +2 -0
- package/public/assets/activity-yLztXEBt.js +2 -0
- package/public/assets/agent-lineage-BbJDR1dW.js +2 -0
- package/public/assets/agent-liveness-DyqxfB-t.js +2 -0
- package/public/assets/agent-name-CTZBrSD9.js +2 -0
- package/public/assets/agent-profiles-BpI_jTxq.js +2 -0
- package/public/assets/agent-project-badge-9TqzUUYE.js +2 -0
- package/public/assets/agent-tools-D4n40pn8.js +2 -0
- package/public/assets/agent-type-icon-D6FUarOf.js +2 -0
- package/public/assets/agents-BYDslkJc.js +2 -0
- package/public/assets/analytics-B-XSbEMC.js +910 -0
- package/public/assets/andromeeda-vGVdxbeo.js +2 -0
- package/public/assets/angular-html-BVBpGdXr.js +2 -0
- package/public/assets/angular-ts-BfdufMKP.js +2 -0
- package/public/assets/api-CIIVBtAV.js +10 -0
- package/public/assets/archive-CIuPSvmx.js +2 -0
- package/public/assets/arrow-right-vFsRqG8V.js +2 -0
- package/public/assets/arrow-up-a-z-CKC2RCjD.js +2 -0
- package/public/assets/artifact-viewer-DdWIfV6M.js +2 -0
- package/public/assets/artifacts-DPN1q4pA.js +2 -0
- package/public/assets/artifacts-oBOqks-2.js +2 -0
- package/public/assets/astro-JKRPP03v.js +2 -0
- package/public/assets/aurora-x-CDeNXAV0.js +2 -0
- package/public/assets/automation-4KcRFXEu.js +2 -0
- package/public/assets/ayu-dark-DluEY0Gj.js +2 -0
- package/public/assets/ayu-light-C3h-C4tm.js +2 -0
- package/public/assets/ayu-mirage-Bqwy1Gya.js +2 -0
- package/public/assets/backlog-Cw9xPTCF.js +2 -0
- package/public/assets/badge-DqJRtj_p.js +2 -0
- package/public/assets/bell-_Yzbxxrt.js +2 -0
- package/public/assets/blade-DA8yMPsw.js +2 -0
- package/public/assets/bot-B0NpDNhr.js +2 -0
- package/public/assets/boxes-Cv7Wq3h4.js +2 -0
- package/public/assets/braces-BOks9SsY.js +2 -0
- package/public/assets/brain-CagXMEKE.js +2 -0
- package/public/assets/brain-circuit-CpQeSmp3.js +2 -0
- package/public/assets/bundle-web-ifbJd0t-.js +14 -0
- package/public/assets/busy-health-CTu32MZt.js +2 -0
- package/public/assets/button-Do6Z3vvn.js +2 -0
- package/public/assets/c-Wt1voDr2.js +2 -0
- package/public/assets/calendar-QJjoZ1JU.js +2 -0
- package/public/assets/calendar-clock-CDG_KBhx.js +2 -0
- package/public/assets/card-C4QJ4hCW.js +2 -0
- package/public/assets/catppuccin-frappe-3VR1Za6u.js +2 -0
- package/public/assets/catppuccin-latte-DwIHMF0Q.js +2 -0
- package/public/assets/catppuccin-macchiato-DYnBP6_5.js +2 -0
- package/public/assets/catppuccin-mocha-DYhrFGRu.js +2 -0
- package/public/assets/channels-BiXzg1G9.js +2 -0
- package/public/assets/chart-column-S02ZGfTR.js +2 -0
- package/public/assets/chat-Ctk2qwvA.js +6 -0
- package/public/assets/check-B3M9Ug1P.js +2 -0
- package/public/assets/chevron-down-BoG3JCZn.js +2 -0
- package/public/assets/chevron-right-iljytE0x.js +2 -0
- package/public/assets/chevron-up-Bv3yC5ma.js +2 -0
- package/public/assets/circle-UESLMi2-.js +2 -0
- package/public/assets/circle-alert-CryagaZd.js +2 -0
- package/public/assets/circle-arrow-up-B432r0Kk.js +2 -0
- package/public/assets/circle-check-CkUkN96J.js +2 -0
- package/public/assets/circle-x-CZ0erS7Q.js +2 -0
- package/public/assets/clipboard-list-W2YeUsxT.js +2 -0
- package/public/assets/clock-3-BH47318N.js +2 -0
- package/public/assets/clock-BWPPBh1_.js +2 -0
- package/public/assets/code-preview-Bm1wWqAp.js +3 -0
- package/public/assets/coffee-CThvmt4R.js +2 -0
- package/public/assets/connectors-C36ax4Vw.js +2 -0
- package/public/assets/copy-DFxhHRtV.js +2 -0
- package/public/assets/copy-button-CjOj4HEf.js +2 -0
- package/public/assets/cosmos-Dn8XrlnS.css +1 -0
- package/public/assets/cosmos-Jj9LK2Wf.js +3993 -0
- package/public/assets/cpp-C5WNSHb9.js +2 -0
- package/public/assets/cpu-Dndy84IU.js +2 -0
- package/public/assets/crate-agent-H6S7-B9T.js +2 -0
- package/public/assets/css-DJp_X0uY.js +2 -0
- package/public/assets/csv-Dx-8-gkx.js +2 -0
- package/public/assets/dark-plus-Cs2F2srj.js +2 -0
- package/public/assets/dependency-graph-Cd1E23wa.js +2 -0
- package/public/assets/deploys-Bwfq146q.js +2 -0
- package/public/assets/dialog-uuJ9_geR.js +6 -0
- package/public/assets/display-CfO7rTuF.js +3 -0
- package/public/assets/dist-B2h2GeWt.js +2 -0
- package/public/assets/dist-BeVYU67E.js +2 -0
- package/public/assets/dist-Bmm-RKub.js +2 -0
- package/public/assets/dist-C1xmD7qJ.js +2 -0
- package/public/assets/dist-C2J943E6.js +2 -0
- package/public/assets/dist-C6lpJDoA.js +2 -0
- package/public/assets/dist-CoWL6B0c.js +2 -0
- package/public/assets/dist-D93SmTNC.js +2 -0
- package/public/assets/dist-Da7HrHNA.js +2 -0
- package/public/assets/dist-DeW2Y1R5.js +2 -0
- package/public/assets/dist-DwBdqQ6H.js +2 -0
- package/public/assets/dist-Dz182zaW.js +2 -0
- package/public/assets/dist-H3DLHJ0C.js +2 -0
- package/public/assets/dist-RrY9C4SI.js +2 -0
- package/public/assets/download-KgtpDbt5.js +2 -0
- package/public/assets/dracula-BHWKrbxM.js +2 -0
- package/public/assets/dracula-soft-5eyTD99u.js +2 -0
- package/public/assets/dropdown-menu-BXiNephE.js +2 -0
- package/public/assets/es2015-DMmZ8vbD.js +42 -0
- package/public/assets/esm-ZSuD7QuY.js +2 -0
- package/public/assets/everforest-dark-sB-x3p7T.js +2 -0
- package/public/assets/everforest-light-Df2xbC6M.js +2 -0
- package/public/assets/external-link-BRfu-fHG.js +2 -0
- package/public/assets/eye-BAP6fHrX.js +2 -0
- package/public/assets/file-code-corner-CXhIR1vB.js +2 -0
- package/public/assets/file-pen-Crunre5f.js +2 -0
- package/public/assets/file-text-CKuoMR2U.js +2 -0
- package/public/assets/files-DhhZI2Ih.js +3 -0
- package/public/assets/flag-CnEG9PH-.js +2 -0
- package/public/assets/flame-CxBuz46L.js +2 -0
- package/public/assets/fleet-BL4UXS_k.js +2 -0
- package/public/assets/fleet-metrics-BkHP-P3R.js +2 -0
- package/public/assets/folder-git-2-CJOmTT06.js +2 -0
- package/public/assets/folder-open-CBUCMSlu.js +2 -0
- package/public/assets/folder-tree-BG3Y9nqH.js +2 -0
- package/public/assets/formatted-body-Cm1RrzmN.js +3 -0
- package/public/assets/formatted-body-impl-DQiOuOD1.js +3 -0
- package/public/assets/gauge-BIODY-BQ.js +2 -0
- package/public/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
- package/public/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
- package/public/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
- package/public/assets/git-branch-yxhV0m8E.js +2 -0
- package/public/assets/git-commit-horizontal-DS1pJ_SS.js +2 -0
- package/public/assets/git-merge-C7eIG425.js +2 -0
- package/public/assets/github-dark-C-LZuMrd.js +2 -0
- package/public/assets/github-dark-default-DXG-b-1a.js +2 -0
- package/public/assets/github-dark-dimmed-Bx1FflLF.js +2 -0
- package/public/assets/github-dark-high-contrast-B_tTalzw.js +2 -0
- package/public/assets/github-light-EUqPIrTm.js +2 -0
- package/public/assets/github-light-default-BXViO-2h.js +2 -0
- package/public/assets/github-light-high-contrast-B68TUdTA.js +2 -0
- package/public/assets/globe-Cl5fXtqs.js +2 -0
- package/public/assets/glsl-Dv5r7kPw.js +2 -0
- package/public/assets/graphql-CcFwQwm0.js +2 -0
- package/public/assets/gruvbox-dark-hard-C820rvS2.js +2 -0
- package/public/assets/gruvbox-dark-medium-BPjhmG05.js +2 -0
- package/public/assets/gruvbox-dark-soft-MrdJrrXF.js +2 -0
- package/public/assets/gruvbox-light-hard-BC_s9l72.js +2 -0
- package/public/assets/gruvbox-light-medium-BAWPOn9u.js +2 -0
- package/public/assets/gruvbox-light-soft-BSMLrYjP.js +2 -0
- package/public/assets/haml-Bg4I2hiD.js +2 -0
- package/public/assets/handlebars-DnwbnL5R.js +2 -0
- package/public/assets/hash-CbtKih3g.js +2 -0
- package/public/assets/horizon-CE9ld1lL.js +2 -0
- package/public/assets/horizon-bright-DSNQnXHK.js +2 -0
- package/public/assets/host-mTgRw7xh.js +2 -0
- package/public/assets/host-providers-dialog-CHqwXTov.js +2 -0
- package/public/assets/hourglass-txu4ax6n.js +2 -0
- package/public/assets/houston-CsvMBhTu.js +2 -0
- package/public/assets/html-C8UlPnhE.js +2 -0
- package/public/assets/html-derivative-CY6NRz-J.js +2 -0
- package/public/assets/http-CoW620Fi.js +2 -0
- package/public/assets/humwick-lockup-on-dark-Ds44Y7BK.svg +19 -0
- package/public/assets/humwick-lockup-on-light-ClALZAHt.svg +19 -0
- package/public/assets/hurl-CSSETujw.js +2 -0
- package/public/assets/imba-DsUTQ-LC.js +2 -0
- package/public/assets/inbox-Dfwk3Gt8.js +2 -0
- package/public/assets/index-B7ZerHLY.css +2 -0
- package/public/assets/index-BK0WV6hF.js +15 -0
- package/public/assets/input-CsTB6jIx.js +2 -0
- package/public/assets/insights-fH1EL-qZ.js +2 -0
- package/public/assets/integrations-C5Oix6ng.js +2 -0
- package/public/assets/issue-ref-chip-ODyondIa.js +3 -0
- package/public/assets/java-CGc3VwQr.js +2 -0
- package/public/assets/javascript-CUt1pgmJ.js +2 -0
- package/public/assets/jinja-CD-Z-FLd.js +2 -0
- package/public/assets/jison-imPNup1l.js +2 -0
- package/public/assets/json-qhed-kSA.js +2 -0
- package/public/assets/json5-BR5RXkoi.js +2 -0
- package/public/assets/jsonc-CYpm1nAK.js +2 -0
- package/public/assets/jsonl-CmCQp5Yx.js +2 -0
- package/public/assets/jsx-CY6oMTks.js +2 -0
- package/public/assets/julia-CjffhBEM.js +2 -0
- package/public/assets/kanagawa-dragon-CXtmUGW6.js +2 -0
- package/public/assets/kanagawa-lotus-BN08jTvb.js +2 -0
- package/public/assets/kanagawa-wave-CTweb8Dz.js +2 -0
- package/public/assets/kernel-Bqr0CZGv.js +2 -0
- package/public/assets/key-round-CcSxl5qr.js +2 -0
- package/public/assets/keyboard-DcmEulph.js +2 -0
- package/public/assets/label-BPBzm9FJ.js +2 -0
- package/public/assets/laserwave-C_8bwKvT.js +2 -0
- package/public/assets/layers-DEfClY-v.js +2 -0
- package/public/assets/legacy-storage-carry-C-tBSxRA.js +2 -0
- package/public/assets/less-DVTAwKKz.js +2 -0
- package/public/assets/lib-D7DTGM1F.js +2 -0
- package/public/assets/lib-G-25QXXf.js +30 -0
- package/public/assets/light-plus-DVQuIRkW.js +2 -0
- package/public/assets/lightbulb-RDhZ4p-D.js +2 -0
- package/public/assets/link-2-off-DfRF9Hwb.js +2 -0
- package/public/assets/link-6RR7Hy3-.js +2 -0
- package/public/assets/list-checks-CwnS3hly.js +2 -0
- package/public/assets/list-ordered-D8nCM7rT.js +2 -0
- package/public/assets/list-todo-9qT0fgxZ.js +2 -0
- package/public/assets/loader-circle-BfPd4kOD.js +2 -0
- package/public/assets/lock-BW8MPKw_.js +2 -0
- package/public/assets/log-viewer-Cvfy6PW7.js +4 -0
- package/public/assets/mail-DyaDmwfY.js +2 -0
- package/public/assets/maintenance-D8CDH5wZ.js +2 -0
- package/public/assets/managed-agents-egllbpij.js +4 -0
- package/public/assets/markdown-BYOwaDjH.js +2 -0
- package/public/assets/markdown-preview-CYSFgVgK.js +3 -0
- package/public/assets/markdown-preview-impl-BteVIjX4.js +2 -0
- package/public/assets/marko-DvhNOisQ.js +2 -0
- package/public/assets/material-theme-Bm3Qr25_.js +2 -0
- package/public/assets/material-theme-darker-2IIEA8gg.js +2 -0
- package/public/assets/material-theme-lighter-uhdI0v04.js +2 -0
- package/public/assets/material-theme-ocean-CHQ94UKr.js +2 -0
- package/public/assets/material-theme-palenight-B5W6OYN7.js +2 -0
- package/public/assets/mdc-CazklSAj.js +2 -0
- package/public/assets/mdx-DQZ5AkYe.js +2 -0
- package/public/assets/memory-C8WmXsyr.js +2 -0
- package/public/assets/message-circle-wjztgHBe.js +2 -0
- package/public/assets/message-square-C-1G8dMM.js +2 -0
- package/public/assets/message-square-reply-B9Z4cbQx.js +2 -0
- package/public/assets/messages-BzQdqlO6.js +2 -0
- package/public/assets/messages-square-DVM1ZtcI.js +2 -0
- package/public/assets/min-dark-BSWPekZh.js +2 -0
- package/public/assets/min-light-DDpmG2fV.js +2 -0
- package/public/assets/minimize-2-BkK6XoMP.js +2 -0
- package/public/assets/monokai-CdkpiU2Y.js +2 -0
- package/public/assets/night-owl-DhmEMT88.js +2 -0
- package/public/assets/night-owl-light-eJ-hLW7d.js +2 -0
- package/public/assets/nord-Cb4Vim4T.js +2 -0
- package/public/assets/octagon-x-B5lnUY-8.js +2 -0
- package/public/assets/one-dark-pro-CLwyXe_n.js +2 -0
- package/public/assets/one-light-D7Lr4KcI.js +2 -0
- package/public/assets/orchestrators-B1HxzkNw.js +2 -0
- package/public/assets/overview-DCUnI4Z7.js +2 -0
- package/public/assets/package-open-ckPgcjpv.js +2 -0
- package/public/assets/package-plus-C1AKMjsl.js +2 -0
- package/public/assets/pairs-ftCd2XcD.js +2 -0
- package/public/assets/paperclip-CNpKZKum.js +2 -0
- package/public/assets/pause-DttnHD4c.js +2 -0
- package/public/assets/pencil-B1Hf2V_J.js +2 -0
- package/public/assets/php-CBqsN0ai.js +2 -0
- package/public/assets/pin-DcsKeXxr.js +2 -0
- package/public/assets/plastic-DQwYfKfQ.js +2 -0
- package/public/assets/play-BbT8m7A0.js +2 -0
- package/public/assets/plug-vIyO9_P8.js +2 -0
- package/public/assets/plug-zap-V0wMDJ-G.js +2 -0
- package/public/assets/plus-D5Ek4e2S.js +2 -0
- package/public/assets/poimandres-DRFjx7u4.js +2 -0
- package/public/assets/popover-8w1TWKMG.js +2 -0
- package/public/assets/postcss-BXeXVLqQ.js +2 -0
- package/public/assets/power-6tZOhYPg.js +2 -0
- package/public/assets/preload-helper-HclGiUj8.js +1 -0
- package/public/assets/profile-icon-B2zH8DMH.js +2 -0
- package/public/assets/projects-B_lmcqfO.js +2 -0
- package/public/assets/prompt-settings-Bftq9czX.js +2 -0
- package/public/assets/provider-brand-icon-_67JR7Zh.js +2 -0
- package/public/assets/provider-display-DbLWpP3j.js +2 -0
- package/public/assets/pug-C5hz5LQ7.js +2 -0
- package/public/assets/python-gzcpVVnB.js +2 -0
- package/public/assets/r-Dzep-lPg.js +2 -0
- package/public/assets/radio-Bn0_qc0G.js +2 -0
- package/public/assets/react-dom-DSFxiC7T.js +2 -0
- package/public/assets/red-CJ3rzSJv.js +2 -0
- package/public/assets/refresh-cw-CfpvQcUn.js +2 -0
- package/public/assets/regexp-Omp9DhTb.js +2 -0
- package/public/assets/registry-DWCU5c8q.js +4 -0
- package/public/assets/repeat-hl4p_Klo.js +2 -0
- package/public/assets/rocket-BmO1qSu-.js +2 -0
- package/public/assets/rolldown-runtime-QTnfLwEv.js +1 -0
- package/public/assets/rose-pine-BthvhNj6.js +2 -0
- package/public/assets/rose-pine-dawn-Dg85fqjY.js +2 -0
- package/public/assets/rose-pine-moon-hon4tzzS.js +2 -0
- package/public/assets/rotate-ccw-CtD77qkX.js +2 -0
- package/public/assets/rotate-cw-FPtkDewA.js +2 -0
- package/public/assets/run-card-CO_bguQf.js +2 -0
- package/public/assets/sass-DXrisJhu.js +2 -0
- package/public/assets/save-B_PGqSm4.js +2 -0
- package/public/assets/scroll-area-CIN4KQse.js +2 -0
- package/public/assets/scss-DdSxiZKl.js +2 -0
- package/public/assets/search-DjzbnTbf.js +2 -0
- package/public/assets/secrets-C7GIUATz.js +2 -0
- package/public/assets/security-BUFau5-N.js +3 -0
- package/public/assets/select-DTQMP4Dk.js +2 -0
- package/public/assets/separator-t1cLZErD.js +2 -0
- package/public/assets/server-CZIRjFyY.js +2 -0
- package/public/assets/service-access-settings-C3aujqTG.js +2 -0
- package/public/assets/settings-C6sZ9eBa.js +6 -0
- package/public/assets/shellscript-CLZ0U2zV.js +2 -0
- package/public/assets/shield-CtXNUA0i.js +2 -0
- package/public/assets/shield-alert-B9jCWcKW.js +2 -0
- package/public/assets/shipping-Bu8p1gEw.js +2 -0
- package/public/assets/shipping-stats-BiMTsA4A.js +2 -0
- package/public/assets/slack-dark-DnToyrRv.js +2 -0
- package/public/assets/slack-ochin-B2OO5cIa.js +2 -0
- package/public/assets/smile-plus-q6EQBXHZ.js +2 -0
- package/public/assets/snazzy-light-4G7pJPwS.js +2 -0
- package/public/assets/solarized-dark-DV17i1UV.js +2 -0
- package/public/assets/solarized-light-DSh2HLQt.js +2 -0
- package/public/assets/sparkles-CzwR10ZU.js +2 -0
- package/public/assets/sql-DNssxck8.js +2 -0
- package/public/assets/square-Bqly37YM.js +2 -0
- package/public/assets/stats-V9Z-GxUd.js +2 -0
- package/public/assets/status-dot-CVv0iGHL.js +2 -0
- package/public/assets/stethoscope-SCBrnQQ8.js +2 -0
- package/public/assets/store-BvtFdlGX.js +9 -0
- package/public/assets/stylus-B6D30XZt.js +2 -0
- package/public/assets/svelte-DOdLCIlh.js +2 -0
- package/public/assets/switch-DuCA7mrB.js +2 -0
- package/public/assets/synthwave-84-nFMaYfgc.js +2 -0
- package/public/assets/tabs-jZgNvNHr.js +2 -0
- package/public/assets/task-chip-CYj0mpoL.js +2 -0
- package/public/assets/tasks-BIyeAaPC.js +2 -0
- package/public/assets/tasks-CXU75HRF.js +11 -0
- package/public/assets/teams-BPf976zb.js +2 -0
- package/public/assets/terminal-Bl2u7KxT.js +2 -0
- package/public/assets/terminal-viewer-DE9BOe-8.js +3 -0
- package/public/assets/terminal-viewer-impl-BrP-ENHg.css +1 -0
- package/public/assets/terminal-viewer-impl-D04pjmGh.js +143 -0
- package/public/assets/textarea-hs6Mpyfl.js +2 -0
- package/public/assets/themes-G5j9m1Ji.js +2 -0
- package/public/assets/tokyo-night-oM2G3aXe.js +2 -0
- package/public/assets/trash-2-FbcSq927.js +2 -0
- package/public/assets/triangle-alert-BBNhfgMi.js +2 -0
- package/public/assets/ts-tags-Ca73dJJY.js +2 -0
- package/public/assets/tsx-5Eka4NBX.js +2 -0
- package/public/assets/typescript-DOu2WMV5.js +2 -0
- package/public/assets/use-agent-terminal-B1yR456R.js +2 -0
- package/public/assets/use-decisions-D-S4tpDf.js +2 -0
- package/public/assets/use-project-list-B-T2Bnnn.js +2 -0
- package/public/assets/use-selectors-CnrAk2YP.js +6 -0
- package/public/assets/user-avatar-nBFIcR4M.js +2 -0
- package/public/assets/user-cog-CKcouW1J.js +2 -0
- package/public/assets/user-plus-D9749q73.js +2 -0
- package/public/assets/users-C7B3u9jv.js +2 -0
- package/public/assets/versioned-prompt-editor-Diu8BIaM.js +8 -0
- package/public/assets/vesper-DdrHHSXu.js +2 -0
- package/public/assets/vitesse-black-fwtXNY1n.js +2 -0
- package/public/assets/vitesse-dark-BZCL-v6S.js +2 -0
- package/public/assets/vitesse-light-VbXTXTou.js +2 -0
- package/public/assets/volume-2-XrcRKD9Z.js +2 -0
- package/public/assets/vue-Bfx0ffIq.js +2 -0
- package/public/assets/vue-html-BeluIYX0.js +2 -0
- package/public/assets/vue-vine-DGUAbOCX.js +2 -0
- package/public/assets/warehouse-BanzOanY.js +2 -0
- package/public/assets/wasm-BnjxR4X6.js +2 -0
- package/public/assets/wasm-ByWQv1Qj.js +2 -0
- package/public/assets/waypoints-CIzINtLT.js +2 -0
- package/public/assets/wgsl-BsKzXJz4.js +2 -0
- package/public/assets/wit-DdvCle-K.js +2 -0
- package/public/assets/work-queue-TCjJxeT-.js +2 -0
- package/public/assets/workflow-marker-Cf3Hf2fN.js +2 -0
- package/public/assets/workflows-CXQX20Qj.js +6 -0
- package/public/assets/workspaces-qSYzKYMA.js +3 -0
- package/public/assets/wrench-C7-4CgnY.js +2 -0
- package/public/assets/x-Bge17hWJ.js +2 -0
- package/public/assets/xml-DIqSwXR3.js +2 -0
- package/public/assets/yaml-rwi0_p6S.js +2 -0
- package/public/assets/zap-DGuDTw4w.js +2 -0
- package/public/assets/zoom-in-Bs8Qv8VL.js +2 -0
- package/public/assets/zoomable-image-B3Og53nj.js +2 -0
- package/public/cosmos/audio/README.md +50 -0
- package/public/cosmos/audio/alert.mp3 +0 -0
- package/public/cosmos/audio/ambient-bed.mp3 +0 -0
- package/public/cosmos/audio/comet.mp3 +0 -0
- package/public/cosmos/audio/cross-galaxy.mp3 +0 -0
- package/public/cosmos/audio/deploy.mp3 +0 -0
- package/public/cosmos/audio/galaxy-dissipate.mp3 +0 -0
- package/public/cosmos/audio/galaxy-form.mp3 +0 -0
- package/public/cosmos/audio/land.mp3 +0 -0
- package/public/cosmos/audio/reap.mp3 +0 -0
- package/public/cosmos/audio/spawn.mp3 +0 -0
- package/public/cosmos.html +34 -0
- package/public/favicon.ico +0 -0
- package/public/favicon.svg +10 -0
- package/public/icons/apple-touch-icon.png +0 -0
- package/public/icons/humwick-192.png +0 -0
- package/public/icons/humwick-512.png +0 -0
- package/public/icons/humwick.svg +19 -0
- package/public/index.html +188 -0
- package/public/manifest.webmanifest +45 -0
- package/public/sw.js +160 -0
- package/recipes/code-review.yaml +26 -0
- package/recipes/debug.yaml +20 -0
- package/recipes/feature.yaml +26 -0
- package/recipes/refactor.yaml +20 -0
- package/recipes/test.yaml +20 -0
- package/runner/LICENSE +167 -0
- package/runner/agent-bin/agent-relay-browser +10 -0
- package/runner/agent-bin/humwick +10 -0
- package/runner/hooks/fff-search-redirect/fff-search-redirect.cjs +161 -0
- package/runner/hooks/fff-search-redirect/hooks.json +13 -0
- package/runner/hooks/rg-r-guard/hooks.json +18 -0
- package/runner/hooks/rg-r-guard/rg-r-guard.cjs +144 -0
- package/runner/hooks/web-tools-redirect/hooks.json +13 -0
- package/runner/hooks/web-tools-redirect/web-tools-redirect.cjs +84 -0
- package/runner/plugins/browser/skills/playwright-cli/SKILL.md +53 -0
- package/runner/plugins/claude/.claude-plugin/plugin.json +8 -0
- package/runner/plugins/claude/claude-statusline-probe.cjs +144 -0
- package/runner/plugins/claude/hooks/gate-run-guard.provisioned.mjs +914 -0
- package/runner/plugins/claude/hooks/gate-run-guard.sh +9 -0
- package/runner/plugins/claude/hooks/gate-run-guard.ts +237 -0
- package/runner/plugins/claude/hooks/hooks.json +158 -0
- package/runner/plugins/claude/hooks/kill-guard.provisioned.mjs +7027 -0
- package/runner/plugins/claude/hooks/kill-guard.sh +341 -0
- package/runner/plugins/claude/hooks/kill-guard.ts +337 -0
- package/runner/plugins/claude/hooks/permission-request.sh +22 -0
- package/runner/plugins/claude/hooks/post-compact.sh +10 -0
- package/runner/plugins/claude/hooks/post-tool-use.sh +8 -0
- package/runner/plugins/claude/hooks/pre-compact.sh +12 -0
- package/runner/plugins/claude/hooks/read-only-bash-guard.sh +587 -0
- package/runner/plugins/claude/hooks/relay-status.sh +373 -0
- package/runner/plugins/claude/hooks/session-end.sh +26 -0
- package/runner/plugins/claude/hooks/session-start.sh +31 -0
- package/runner/plugins/claude/hooks/shell-trust.ts +28 -0
- package/runner/plugins/claude/hooks/stop-failure.sh +47 -0
- package/runner/plugins/claude/hooks/stop.sh +48 -0
- package/runner/plugins/claude/hooks/subagent-guard.cjs +26 -0
- package/runner/plugins/claude/hooks/subagent-skill-policy.cjs +160 -0
- package/runner/plugins/claude/hooks/subagent-start.sh +13 -0
- package/runner/plugins/claude/hooks/subagent-stop.sh +19 -0
- package/runner/plugins/claude/hooks/user-prompt-submit.sh +18 -0
- package/runner/plugins/claude/hooks/wait-loop-guard.ts +120 -0
- package/runner/plugins/claude/monitors/monitors.json +7 -0
- package/runner/plugins/claude/monitors/relay-monitor.provisioned.mjs +786 -0
- package/runner/plugins/claude/monitors/relay-monitor.ts +58 -0
- package/runner/plugins/claude/skills/disconnect/SKILL.md +16 -0
- package/runner/plugins/claude/skills/label/SKILL.md +23 -0
- package/runner/plugins/claude/skills/message/SKILL.md +40 -0
- package/runner/plugins/claude/skills/pair/SKILL.md +30 -0
- package/runner/plugins/claude/skills/react/SKILL.md +18 -0
- package/runner/plugins/claude/skills/read-message/SKILL.md +24 -0
- package/runner/plugins/claude/skills/reply/SKILL.md +44 -0
- package/runner/plugins/claude/skills/send-claimable/SKILL.md +39 -0
- package/runner/plugins/claude/skills/slice-first/SKILL.md +32 -0
- package/runner/plugins/claude/skills/slice-first/references/plan-recipe.md +46 -0
- package/runner/plugins/claude/skills/status/SKILL.md +16 -0
- package/runner/plugins/claude/skills/tags/SKILL.md +25 -0
- package/runner/plugins/claude/skills/task/SKILL.md +28 -0
- package/runner/plugins/claude-output-style/.claude-plugin/plugin.json +5 -0
- package/runner/plugins/claude-output-style/output-styles/agent-relay.md +5 -0
- package/runner/plugins/codex/skills/disconnect/SKILL.md +15 -0
- package/runner/plugins/codex/skills/guide/SKILL.md +15 -0
- package/runner/plugins/codex/skills/label/SKILL.md +22 -0
- package/runner/plugins/codex/skills/message/SKILL.md +40 -0
- package/runner/plugins/codex/skills/pair/SKILL.md +29 -0
- package/runner/plugins/codex/skills/react/SKILL.md +17 -0
- package/runner/plugins/codex/skills/read-message/SKILL.md +23 -0
- package/runner/plugins/codex/skills/reply/SKILL.md +44 -0
- package/runner/plugins/codex/skills/send-claimable/SKILL.md +39 -0
- package/runner/plugins/codex/skills/slice-first/SKILL.md +32 -0
- package/runner/plugins/codex/skills/slice-first/references/plan-recipe.md +46 -0
- package/runner/plugins/codex/skills/status/SKILL.md +15 -0
- package/runner/plugins/codex/skills/tags/SKILL.md +24 -0
- package/runner/plugins/codex/skills/task/SKILL.md +28 -0
- package/runner/src/adapter.ts +1061 -0
- package/runner/src/adapters/__fixtures__/codex-app-server.ts +47 -0
- package/runner/src/adapters/claude-api.ts +243 -0
- package/runner/src/adapters/claude-context-command.ts +16 -0
- package/runner/src/adapters/claude-credentials.ts +22 -0
- package/runner/src/adapters/claude-delivery-lanes.ts +28 -0
- package/runner/src/adapters/claude-delivery.ts +166 -0
- package/runner/src/adapters/claude-effort.ts +94 -0
- package/runner/src/adapters/claude-exit.ts +290 -0
- package/runner/src/adapters/claude-headless-mirror.ts +88 -0
- package/runner/src/adapters/claude-headless-refusal.ts +51 -0
- package/runner/src/adapters/claude-headless.ts +617 -0
- package/runner/src/adapters/claude-monitor-delivery-plan.ts +317 -0
- package/runner/src/adapters/claude-permission.ts +243 -0
- package/runner/src/adapters/claude-prompt-gates.ts +269 -0
- package/runner/src/adapters/claude-prompt-hook.ts +145 -0
- package/runner/src/adapters/claude-session-capture.ts +293 -0
- package/runner/src/adapters/claude-session-probe.ts +414 -0
- package/runner/src/adapters/claude-shutdown.ts +190 -0
- package/runner/src/adapters/claude-status-detectors.ts +426 -0
- package/runner/src/adapters/claude-subagents.ts +93 -0
- package/runner/src/adapters/claude-submit-confirmation.ts +287 -0
- package/runner/src/adapters/claude-tmux.ts +548 -0
- package/runner/src/adapters/claude-token-usage-capture.ts +253 -0
- package/runner/src/adapters/claude-tool-policy.ts +165 -0
- package/runner/src/adapters/claude-transcript-tail.ts +193 -0
- package/runner/src/adapters/claude-transcript.ts +812 -0
- package/runner/src/adapters/claude.ts +1097 -0
- package/runner/src/adapters/codex-agent-message-capture.ts +189 -0
- package/runner/src/adapters/codex-app-server.ts +70 -0
- package/runner/src/adapters/codex-client.ts +362 -0
- package/runner/src/adapters/codex-effective-config.ts +87 -0
- package/runner/src/adapters/codex-launch-config.ts +153 -0
- package/runner/src/adapters/codex-rollout-context.ts +272 -0
- package/runner/src/adapters/codex-skill-discovery.ts +18 -0
- package/runner/src/adapters/codex-token-usage-capture.ts +163 -0
- package/runner/src/adapters/codex-tool-output.ts +53 -0
- package/runner/src/adapters/codex-turn-outcome.ts +27 -0
- package/runner/src/adapters/codex-version.ts +64 -0
- package/runner/src/adapters/codex.ts +1442 -0
- package/runner/src/adapters/incremental-file.ts +110 -0
- package/runner/src/adapters/opencode-api.ts +71 -0
- package/runner/src/adapters/opencode-context.ts +277 -0
- package/runner/src/adapters/opencode-model-registry.ts +126 -0
- package/runner/src/adapters/opencode-provider.ts +169 -0
- package/runner/src/adapters/opencode-server-retry.ts +50 -0
- package/runner/src/adapters/opencode-soft-steer.ts +302 -0
- package/runner/src/adapters/opencode-spawn.ts +145 -0
- package/runner/src/adapters/opencode-subscribe.ts +62 -0
- package/runner/src/adapters/opencode-token-usage-capture.ts +187 -0
- package/runner/src/adapters/opencode-tool-events.ts +302 -0
- package/runner/src/adapters/opencode-tools-config.ts +17 -0
- package/runner/src/adapters/opencode.ts +2264 -0
- package/runner/src/adapters/project-shell.ts +80 -0
- package/runner/src/adapters/provider-launch-config.ts +21 -0
- package/runner/src/adapters/provider-quota-harvest.ts +127 -0
- package/runner/src/adapters/service-access.ts +153 -0
- package/runner/src/adapters/tmux-offload.ts +207 -0
- package/runner/src/adapters/tool-summary.ts +214 -0
- package/runner/src/agent-redact.ts +75 -0
- package/runner/src/agent-runner/commands/dispatch.ts +185 -0
- package/runner/src/agent-runner/commands/lifecycle.ts +84 -0
- package/runner/src/agent-runner/commands/prompt.ts +284 -0
- package/runner/src/agent-runner/credentials.ts +208 -0
- package/runner/src/agent-runner/http-liveness.ts +85 -0
- package/runner/src/agent-runner/lifecycle-milestones.ts +207 -0
- package/runner/src/agent-runner/lifecycle-phase.ts +80 -0
- package/runner/src/agent-runner/registration.ts +163 -0
- package/runner/src/agent-runner/runner-context.ts +158 -0
- package/runner/src/agent-runner/session-mirror.ts +278 -0
- package/runner/src/agent-runner/task-claims.ts +116 -0
- package/runner/src/agent-runner/token-usage-coverage.ts +54 -0
- package/runner/src/agent-runner/turn-report.ts +269 -0
- package/runner/src/api-budget-accounting.ts +91 -0
- package/runner/src/area-memory.ts +255 -0
- package/runner/src/artifact-path-materialize.ts +52 -0
- package/runner/src/async-guard.ts +35 -0
- package/runner/src/attachment-cache-sweep.ts +31 -0
- package/runner/src/attachment-cache.ts +195 -0
- package/runner/src/background-script-reconcile.ts +106 -0
- package/runner/src/bounded-log.ts +59 -0
- package/runner/src/bounded-spawn-sync.ts +18 -0
- package/runner/src/busy-reconciler.ts +282 -0
- package/runner/src/claim-tracker.ts +140 -0
- package/runner/src/claude-settings.ts +167 -0
- package/runner/src/claude-workspace-trust.ts +289 -0
- package/runner/src/config.ts +547 -0
- package/runner/src/context-boundary.ts +101 -0
- package/runner/src/context-command.ts +151 -0
- package/runner/src/context-probe-state.ts +6 -0
- package/runner/src/continuation-archive.ts +179 -0
- package/runner/src/control-server.ts +730 -0
- package/runner/src/delivery-policy.ts +9 -0
- package/runner/src/delivery-result.ts +24 -0
- package/runner/src/effort-command.ts +125 -0
- package/runner/src/empty-turn.ts +816 -0
- package/runner/src/free-port.ts +25 -0
- package/runner/src/fs-offload.ts +26 -0
- package/runner/src/gate-run-config.ts +35 -0
- package/runner/src/gate-run-lease-probe.ts +38 -0
- package/runner/src/host-asset-plan.ts +450 -0
- package/runner/src/host-claude-config-worker.ts +34 -0
- package/runner/src/host-sources.ts +40 -0
- package/runner/src/inbox-carrier.ts +7 -0
- package/runner/src/index.ts +386 -0
- package/runner/src/launch-assembly.ts +955 -0
- package/runner/src/liveness.ts +105 -0
- package/runner/src/logger.ts +108 -0
- package/runner/src/mcp-outbox.ts +204 -0
- package/runner/src/mcp-preflight.ts +86 -0
- package/runner/src/mcp-source-selection.ts +54 -0
- package/runner/src/mcp-tool-deferral.ts +35 -0
- package/runner/src/mcp-vault-env.ts +25 -0
- package/runner/src/message-body-config/config.ts +16 -0
- package/runner/src/message-body-config.ts +1 -0
- package/runner/src/mid-turn-delivery.ts +43 -0
- package/runner/src/native-memory-lever.ts +329 -0
- package/runner/src/native-self-resume.ts +244 -0
- package/runner/src/outbox.ts +453 -0
- package/runner/src/park-post.ts +17 -0
- package/runner/src/pending-permission-store.ts +148 -0
- package/runner/src/process-meta.ts +9 -0
- package/runner/src/profile-home.ts +419 -0
- package/runner/src/profile-projection.ts +411 -0
- package/runner/src/project-hooks.ts +65 -0
- package/runner/src/project-instructions.ts +119 -0
- package/runner/src/provider-double.ts +59 -0
- package/runner/src/provider-hold.ts +228 -0
- package/runner/src/provider-home-marker.ts +3 -0
- package/runner/src/provider-home-tombstone.ts +4 -0
- package/runner/src/provider-input-queue.ts +134 -0
- package/runner/src/provider-integration.ts +93 -0
- package/runner/src/provider-processes.ts +17 -0
- package/runner/src/provider-submit-failure.ts +15 -0
- package/runner/src/providers.ts +35 -0
- package/runner/src/provisioning.ts +703 -0
- package/runner/src/question-decision.ts +18 -0
- package/runner/src/quota.ts +22 -0
- package/runner/src/rate-limit.ts +351 -0
- package/runner/src/refused-prompt-store.ts +36 -0
- package/runner/src/relay-injection-events.ts +161 -0
- package/runner/src/relay-instructions.ts +107 -0
- package/runner/src/relay-mcp-proxy.long-turn-e2e.ts +183 -0
- package/runner/src/relay-mcp-proxy.ts +704 -0
- package/runner/src/relay-mcp.ts +583 -0
- package/runner/src/reply-obligation-cache.ts +211 -0
- package/runner/src/response-capture-report.ts +111 -0
- package/runner/src/response-routing.ts +6 -0
- package/runner/src/runner-core.ts +2955 -0
- package/runner/src/runner-exit.ts +12 -0
- package/runner/src/runner-helpers.ts +582 -0
- package/runner/src/runner-insights.ts +105 -0
- package/runner/src/runner-mcp-proxy.ts +46 -0
- package/runner/src/runner-spawn-config.ts +68 -0
- package/runner/src/runner-stale-scratch-sweep.ts +21 -0
- package/runner/src/runner.ts +9 -0
- package/runner/src/runtime-token-file.ts +45 -0
- package/runner/src/runtime-token-remint.ts +56 -0
- package/runner/src/service-access.ts +88 -0
- package/runner/src/session-destroy.ts +27 -0
- package/runner/src/session-insights.ts +118 -0
- package/runner/src/session-scratch.ts +296 -0
- package/runner/src/spawn-input.ts +147 -0
- package/runner/src/startup-config-fetch.ts +48 -0
- package/runner/src/subreaper.ts +113 -0
- package/runner/src/template-resolver.ts +29 -0
- package/runner/src/test-run-dedup.ts +435 -0
- package/runner/src/transcript-context.ts +99 -0
- package/runner/src/transport-errors.ts +48 -0
- package/runner/src/turn-opener.ts +55 -0
- package/runner/src/turn-reconcile-event.ts +88 -0
- package/runner/src/vault-proxy-hop.ts +99 -0
- package/runner/src/version.ts +44 -0
- package/runner/src/web-tool-call-proxy.ts +128 -0
- package/runner/src/web-tools.ts +59 -0
- package/runner/test-support/codex-web-config-proof.ts +149 -0
- package/runner/test-support/effective-launch.ts +189 -0
- package/runner/test-support/native-context-sources.ts +77 -0
- package/runner/test-support/provisioning-context.ts +55 -0
- package/runner/test-support/recorder-double.ts +130 -0
- package/runner/test-support/recording-provider.ts +242 -0
- package/runner/test-support/runner-harness.ts +249 -0
- package/runner/test-support/service-access-fixture.ts +12 -0
- package/scripts/agent-vault/bootstrap.py +87 -0
- package/scripts/agent-vault/install.py +200 -0
- package/scripts/agent-vault/install_refresh.py +98 -0
- package/scripts/agent-vault/refresh.py +116 -0
- package/scripts/agent-vault/refresh_provision.py +109 -0
- package/scripts/agent-vault/refresh_store.py +54 -0
- package/scripts/agent-vault/runtime.py +253 -0
- package/scripts/agent-vault/sec-ops-activation.json +23 -0
- package/scripts/artifact-checkout-gc.ts +51 -0
- package/scripts/cd-config.ts +224 -0
- package/scripts/cd-deploy-debounce.ts +94 -0
- package/scripts/cd-deploy-worktree-gc.ts +235 -0
- package/scripts/cd-fleet-membership.ts +48 -0
- package/scripts/cd-host-epochs.ts +101 -0
- package/scripts/cd-hub-wake.ts +40 -0
- package/scripts/cd-land-boundary.ts +49 -0
- package/scripts/cd-watcher.ts +985 -0
- package/scripts/dashboard-build-marker.ts +71 -0
- package/scripts/fleet-sha-coverage.ts +66 -0
- package/scripts/gate-run-lease.ts +329 -0
- package/scripts/gate-slot +9 -0
- package/scripts/gate-slot-fleet-health.ts +60 -0
- package/scripts/gate.sh +6 -0
- package/scripts/install-bin-shim.cjs +149 -0
- package/scripts/orchestrator-spawn-smoke.ts +398 -0
- package/scripts/provisioning-matrix.ts +72 -0
- package/scripts/release-cd-stamp.ts +146 -0
- package/scripts/release-health.ts +133 -0
- package/scripts/release-report.ts +102 -0
- package/scripts/release-upgrade.ts +1296 -0
- package/scripts/steward-policy-cleanup.ts +73 -0
- package/scripts/wait-for-deploy.ts +43 -0
- package/src/agent-authz.ts +219 -0
- package/src/agent-branch-state.ts +45 -0
- package/src/agent-busy-health.ts +158 -0
- package/src/agent-card-projection.ts +86 -0
- package/src/agent-channel-binding.ts +49 -0
- package/src/agent-command-activity.ts +39 -0
- package/src/agent-core.ts +29 -0
- package/src/agent-death-diagnosis.ts +314 -0
- package/src/agent-drive-arbiter.ts +112 -0
- package/src/agent-exit-alarm.ts +10 -0
- package/src/agent-exit-cleanup-async.ts +69 -0
- package/src/agent-exit-cleanup.ts +99 -0
- package/src/agent-exit-report.ts +28 -0
- package/src/agent-issue-repo.ts +53 -0
- package/src/agent-launch-shape-redaction.ts +72 -0
- package/src/agent-lifecycle-events.ts +428 -0
- package/src/agent-principal.ts +14 -0
- package/src/agent-profile-catalog.ts +188 -0
- package/src/agent-ref.ts +340 -0
- package/src/agent-spawn.ts +45 -0
- package/src/agent-status-events.ts +41 -0
- package/src/agent-system-tags.ts +38 -0
- package/src/artifact-media.ts +34 -0
- package/src/artifact-storage.ts +245 -0
- package/src/artifact-text.ts +31 -0
- package/src/async-deadline.ts +59 -0
- package/src/auth/admin-routes.ts +36 -0
- package/src/auth/index.ts +23 -0
- package/src/auth/login-rate-limiter.ts +153 -0
- package/src/auth/password.ts +142 -0
- package/src/auth/provider.ts +60 -0
- package/src/auth/role-scopes.ts +15 -0
- package/src/auth/session-cookie.ts +35 -0
- package/src/auth/session-refresh.ts +61 -0
- package/src/auth/session.test-fixture.ts +10 -0
- package/src/auth/session.ts +107 -0
- package/src/authority-audit.ts +56 -0
- package/src/authz-meta-keys.ts +64 -0
- package/src/auto-spawn-dispatch.ts +154 -0
- package/src/automations/constants.ts +14 -0
- package/src/automations/cron.ts +129 -0
- package/src/automations/crud.ts +129 -0
- package/src/automations/dispatch.ts +299 -0
- package/src/automations/index.ts +5 -0
- package/src/automations/precheck.ts +124 -0
- package/src/automations/reconcile.ts +314 -0
- package/src/automations/storage.ts +200 -0
- package/src/automations/types.ts +16 -0
- package/src/automations/validation.ts +216 -0
- package/src/automations.ts +1 -0
- package/src/branch-landed.ts +761 -0
- package/src/browser-authz.ts +18 -0
- package/src/browser-config.ts +31 -0
- package/src/bundled-workflows.ts +48 -0
- package/src/bus-outbox-async.ts +16 -0
- package/src/bus-outbox.ts +265 -0
- package/src/bus-resume-commands.ts +18 -0
- package/src/bus.ts +792 -0
- package/src/canonical-repo-root.ts +131 -0
- package/src/cd-deploy-notify.ts +59 -0
- package/src/cd-host-deferrals.ts +23 -0
- package/src/cd-host-lag-notify.ts +36 -0
- package/src/cd-repository.ts +49 -0
- package/src/channel-output-control.ts +43 -0
- package/src/channel-output-validation.ts +11 -0
- package/src/channel-policy-health.ts +20 -0
- package/src/channel-target.ts +40 -0
- package/src/channels-host-service.ts +219 -0
- package/src/ci/bun-test-log.ts +41 -0
- package/src/ci/failed-test-files.ts +52 -0
- package/src/ci/gate-history.ts +66 -0
- package/src/ci/github-actions.ts +145 -0
- package/src/ci/incidents.ts +175 -0
- package/src/ci/index.ts +6 -0
- package/src/ci/job-verdict.ts +27 -0
- package/src/ci/land-boundary-ci.ts +104 -0
- package/src/ci/monitor.ts +528 -0
- package/src/ci/not-triggered.ts +116 -0
- package/src/ci/notifications.ts +234 -0
- package/src/ci/provider.ts +87 -0
- package/src/ci/root-missing.ts +35 -0
- package/src/ci/transition-notify.ts +279 -0
- package/src/ci-monitor.ts +7 -0
- package/src/claude-api-budget-async.ts +11 -0
- package/src/claude-api-budget-config.ts +23 -0
- package/src/claude-api-expiry.ts +70 -0
- package/src/claude-api-overflow.ts +146 -0
- package/src/claude-app/config.ts +13 -0
- package/src/claude-app/oauth-http.ts +127 -0
- package/src/claude-app/oauth-provider.ts +136 -0
- package/src/claude-app/passphrase.ts +14 -0
- package/src/claude-app-auth.ts +65 -0
- package/src/claude-app-gateway.ts +68 -0
- package/src/cli/_shared.ts +136 -0
- package/src/cli/agent-detect.ts +175 -0
- package/src/cli/agent-guide.ts +152 -0
- package/src/cli/agent-keep.ts +37 -0
- package/src/cli/agent-meta.ts +111 -0
- package/src/cli/artifact.ts +154 -0
- package/src/cli/browser.ts +56 -0
- package/src/cli/channel-output.ts +17 -0
- package/src/cli/channels-host.ts +13 -0
- package/src/cli/channels.ts +16 -0
- package/src/cli/claude-api-budget.ts +41 -0
- package/src/cli/context-probe.ts +90 -0
- package/src/cli/credentials.ts +1 -0
- package/src/cli/daemon.ts +125 -0
- package/src/cli/dev.ts +185 -0
- package/src/cli/ephemeral.ts +159 -0
- package/src/cli/hosts.ts +41 -0
- package/src/cli/index.ts +442 -0
- package/src/cli/introspect.ts +74 -0
- package/src/cli/maintenance.ts +24 -0
- package/src/cli/merges.ts +78 -0
- package/src/cli/message.ts +229 -0
- package/src/cli/orchestrator.ts +384 -0
- package/src/cli/pair.ts +135 -0
- package/src/cli/profile.ts +35 -0
- package/src/cli/project.ts +52 -0
- package/src/cli/prompts.ts +23 -0
- package/src/cli/provider-enablement.ts +42 -0
- package/src/cli/provider.ts +230 -0
- package/src/cli/recipe.ts +110 -0
- package/src/cli/reply.ts +130 -0
- package/src/cli/roles.ts +60 -0
- package/src/cli/routing-policy.ts +20 -0
- package/src/cli/run.ts +96 -0
- package/src/cli/secrets-backup.ts +85 -0
- package/src/cli/secrets.ts +55 -0
- package/src/cli/service-access.ts +23 -0
- package/src/cli/setup.ts +57 -0
- package/src/cli/shutdown.ts +16 -0
- package/src/cli/spawn.ts +31 -0
- package/src/cli/state.ts +73 -0
- package/src/cli/steward.ts +58 -0
- package/src/cli/task.ts +151 -0
- package/src/cli/team.ts +18 -0
- package/src/cli/timers.ts +53 -0
- package/src/cli/token.ts +72 -0
- package/src/cli/upgrade.ts +200 -0
- package/src/cli/web-tool-calls.ts +17 -0
- package/src/cli/workflow.ts +46 -0
- package/src/cli/workspace.ts +544 -0
- package/src/cli.ts +4 -0
- package/src/codex-reset-consume.ts +274 -0
- package/src/codex-wham-quota.ts +177 -0
- package/src/command-events.ts +69 -0
- package/src/command-secrets.ts +198 -0
- package/src/command-ttl.ts +63 -0
- package/src/commands-db.ts +1196 -0
- package/src/commands-landing-async.ts +166 -0
- package/src/commands-write.ts +160 -0
- package/src/comment-blocks.ts +84 -0
- package/src/compaction-watch.ts +259 -0
- package/src/config-model-selection.ts +14 -0
- package/src/config-store-write.ts +39 -0
- package/src/config-store.ts +1253 -0
- package/src/config.ts +939 -0
- package/src/connector-boot-health.ts +27 -0
- package/src/connector-paths.ts +47 -0
- package/src/connectors.ts +547 -0
- package/src/content-security.ts +12 -0
- package/src/context-advisory.ts +279 -0
- package/src/context-block-rendered-at.ts +33 -0
- package/src/context-injection-channel.ts +49 -0
- package/src/context-router.ts +121 -0
- package/src/context-threshold-config.ts +52 -0
- package/src/continuation-replay-edge.ts +30 -0
- package/src/continuity-working-state.ts +107 -0
- package/src/contracts.ts +109 -0
- package/src/coordinator-authority.ts +100 -0
- package/src/coordinator-digest-config.ts +20 -0
- package/src/cosmos-events.ts +164 -0
- package/src/daemon.ts +570 -0
- package/src/dashboard-notifications.ts +169 -0
- package/src/dashboard-presence.ts +86 -0
- package/src/db/activity-async.ts +58 -0
- package/src/db/activity-read-ops.ts +42 -0
- package/src/db/activity-write-ops.ts +43 -0
- package/src/db/activity.ts +454 -0
- package/src/db/agent-card-read.ts +98 -0
- package/src/db/agent-effort-state.ts +146 -0
- package/src/db/agent-exit-cleanup.ts +94 -0
- package/src/db/agent-exit-report.ts +33 -0
- package/src/db/agent-gate-runs-write-ops.ts +7 -0
- package/src/db/agent-gate-runs.ts +96 -0
- package/src/db/agent-identity-archive.test-fixture.ts +12 -0
- package/src/db/agent-identity-archive.ts +75 -0
- package/src/db/agent-keep.ts +21 -0
- package/src/db/agent-lifecycle-write-ops.ts +92 -0
- package/src/db/agent-meta.ts +74 -0
- package/src/db/agent-outstanding-work.ts +154 -0
- package/src/db/agent-ownership-async.ts +45 -0
- package/src/db/agent-ownership-read-ops.ts +12 -0
- package/src/db/agent-ownership-write-ops.ts +50 -0
- package/src/db/agent-ownership.ts +200 -0
- package/src/db/agent-predicates.ts +64 -0
- package/src/db/agent-read.ts +39 -0
- package/src/db/agent-search-async.ts +21 -0
- package/src/db/agent-search-read-ops.ts +8 -0
- package/src/db/agent-search.ts +162 -0
- package/src/db/agent-shutdown-in-flight.ts +21 -0
- package/src/db/agents-async.ts +333 -0
- package/src/db/agents-prune-write-op.ts +37 -0
- package/src/db/agents-read-ops.ts +33 -0
- package/src/db/agents-write-ops.ts +174 -0
- package/src/db/agents.ts +1284 -0
- package/src/db/api-budget-schema.ts +144 -0
- package/src/db/api-budget-usage-migration.ts +31 -0
- package/src/db/api-budget-usage.ts +40 -0
- package/src/db/artifact-browse.ts +145 -0
- package/src/db/artifact-retention.ts +115 -0
- package/src/db/artifacts-async.ts +81 -0
- package/src/db/artifacts-read-ops.ts +24 -0
- package/src/db/artifacts-write-ops.ts +46 -0
- package/src/db/artifacts.ts +307 -0
- package/src/db/auth-identities.ts +128 -0
- package/src/db/backlog.ts +172 -0
- package/src/db/blackboard.ts +171 -0
- package/src/db/broadcast-scope.ts +63 -0
- package/src/db/broker-memory-migration.ts +71 -0
- package/src/db/browser-sessions.ts +89 -0
- package/src/db/budget-lineage.ts +26 -0
- package/src/db/bus-outbox-read-ops.ts +29 -0
- package/src/db/bus-outbox-write-ops.ts +57 -0
- package/src/db/bus-prune-async.ts +16 -0
- package/src/db/busy-regression.worker.ts +48 -0
- package/src/db/caller-lifecycle.ts +24 -0
- package/src/db/carry-pending-marker.ts +129 -0
- package/src/db/carry-pending.ts +145 -0
- package/src/db/channel-binding-delete.ts +15 -0
- package/src/db/channel-egress-allowlist.ts +200 -0
- package/src/db/channel-identity.ts +38 -0
- package/src/db/channel-runtime.ts +19 -0
- package/src/db/channels-async.ts +55 -0
- package/src/db/channels-read-ops.ts +13 -0
- package/src/db/channels-session-fence.ts +18 -0
- package/src/db/channels-write-ops.ts +42 -0
- package/src/db/channels.ts +654 -0
- package/src/db/checkout-refresh.ts +36 -0
- package/src/db/ci-gate-runs.ts +92 -0
- package/src/db/ci-incidents-async.ts +76 -0
- package/src/db/ci-incidents-read-ops.ts +15 -0
- package/src/db/ci-incidents-write-ops.ts +57 -0
- package/src/db/ci-incidents.ts +667 -0
- package/src/db/ci-sha-observations-schema.ts +33 -0
- package/src/db/claim-sql.ts +44 -0
- package/src/db/claude-api-budget-ops.ts +15 -0
- package/src/db/claude-api-budget-reconcile.ts +39 -0
- package/src/db/claude-api-budget.ts +198 -0
- package/src/db/claude-app-oauth.ts +74 -0
- package/src/db/claude-catalog-reconcile.ts +27 -0
- package/src/db/codex-reset-consumes-async.ts +9 -0
- package/src/db/codex-reset-consumes-read-ops.ts +5 -0
- package/src/db/codex-reset-consumes-write-ops.ts +19 -0
- package/src/db/codex-reset-consumes.ts +122 -0
- package/src/db/command-agent-profiles.ts +58 -0
- package/src/db/command-row.ts +88 -0
- package/src/db/command-terminal-status.ts +33 -0
- package/src/db/command-vault-pruning.ts +30 -0
- package/src/db/commands-cancel-write.ts +45 -0
- package/src/db/commands-claim-admission.ts +144 -0
- package/src/db/commands-effort-read.ts +58 -0
- package/src/db/commands-host-land-admission.ts +106 -0
- package/src/db/commands-kernel-landing.ts +268 -0
- package/src/db/commands-land-occupancy.ts +40 -0
- package/src/db/commands-land-wait.ts +38 -0
- package/src/db/commands-landing-completeness.ts +66 -0
- package/src/db/commands-landing-tuples.ts +22 -0
- package/src/db/commands-landing.ts +1046 -0
- package/src/db/commands-leaseless-sweep.ts +72 -0
- package/src/db/commands-list-query.ts +47 -0
- package/src/db/commands-planner-stats.test-fixture.ts +97 -0
- package/src/db/commands-read-ops.ts +49 -0
- package/src/db/commands-scheduler-recovery.ts +71 -0
- package/src/db/commands-spawn-read.ts +33 -0
- package/src/db/commands-write-ops.ts +286 -0
- package/src/db/config-store-write-ops.ts +58 -0
- package/src/db/connection-instrumentation.ts +76 -0
- package/src/db/connection.ts +532 -0
- package/src/db/context-reset-carry.ts +144 -0
- package/src/db/continuation-archive-purge.ts +48 -0
- package/src/db/continuation-archive-search.ts +249 -0
- package/src/db/continuation-archives-async.ts +59 -0
- package/src/db/continuation-archives-read-ops.ts +10 -0
- package/src/db/continuation-archives-write-ops.ts +15 -0
- package/src/db/continuation-archives.ts +158 -0
- package/src/db/continuations.ts +201 -0
- package/src/db/coordinator-delivery.ts +10 -0
- package/src/db/coordinator-digest-async.ts +13 -0
- package/src/db/coordinator-digest-flush.ts +6 -0
- package/src/db/coordinator-digest.ts +145 -0
- package/src/db/coordinator-seat.ts +130 -0
- package/src/db/crash-reports.ts +115 -0
- package/src/db/db-error-registry.ts +290 -0
- package/src/db/db-reader-worker.ts +91 -0
- package/src/db/db-writer-worker.ts +66 -0
- package/src/db/deferred-lineage-report-queries.ts +28 -0
- package/src/db/deferred-lineage-reports.ts +44 -0
- package/src/db/delivery-async.ts +102 -0
- package/src/db/delivery-expiration-health.ts +97 -0
- package/src/db/delivery-expiration.ts +52 -0
- package/src/db/delivery-quality-async.ts +23 -0
- package/src/db/delivery-quality.ts +116 -0
- package/src/db/delivery-read-ops.ts +26 -0
- package/src/db/delivery-report-echo.ts +53 -0
- package/src/db/delivery-write-ops.ts +72 -0
- package/src/db/delivery.ts +545 -0
- package/src/db/deploy-events-async.ts +66 -0
- package/src/db/deploy-events-read-ops.ts +25 -0
- package/src/db/deploy-events-write-ops.ts +81 -0
- package/src/db/deploy-events.ts +554 -0
- package/src/db/deploy-task-completion.ts +48 -0
- package/src/db/drive-leases.ts +165 -0
- package/src/db/durable-payloads.ts +92 -0
- package/src/db/fixtures/writer-shutdown.ts +28 -0
- package/src/db/fts-query.ts +8 -0
- package/src/db/gate-policy.ts +27 -0
- package/src/db/gate-runs.ts +181 -0
- package/src/db/gateway.ts +513 -0
- package/src/db/generation-launch.ts +82 -0
- package/src/db/guides-search.ts +18 -0
- package/src/db/history-delivery-settle.ts +57 -0
- package/src/db/hosts-async.ts +150 -0
- package/src/db/hosts-backfill.ts +91 -0
- package/src/db/hosts-read-ops.ts +21 -0
- package/src/db/hosts-registration.ts +452 -0
- package/src/db/hosts-views.ts +259 -0
- package/src/db/hosts-write-ops.ts +94 -0
- package/src/db/hosts.ts +251 -0
- package/src/db/human-address.ts +6 -0
- package/src/db/idle-digest.ts +54 -0
- package/src/db/idle-self-care.ts +100 -0
- package/src/db/inbox-async.ts +29 -0
- package/src/db/inbox-read-ops.ts +8 -0
- package/src/db/inbox-write-ops.ts +25 -0
- package/src/db/inbox.ts +197 -0
- package/src/db/index.ts +147 -0
- package/src/db/injection-attempts.ts +41 -0
- package/src/db/insights-read-ops.ts +12 -0
- package/src/db/insights-write-ops.ts +15 -0
- package/src/db/integrations.ts +297 -0
- package/src/db/issue-associations.ts +136 -0
- package/src/db/issue-lifecycle.ts +199 -0
- package/src/db/issue-refs.ts +312 -0
- package/src/db/kernel-event-log-schema.ts +14 -0
- package/src/db/kernel-landing-admission.ts +15 -0
- package/src/db/kernel-landing-command-authority.ts +222 -0
- package/src/db/kernel-persistence-async.ts +48 -0
- package/src/db/kernel-persistence-read-ops.ts +24 -0
- package/src/db/kernel-persistence-write-ops.ts +43 -0
- package/src/db/land-boundaries.ts +138 -0
- package/src/db/land-executing.ts +147 -0
- package/src/db/land-gate-attestations.ts +161 -0
- package/src/db/land-incident-eligibility.ts +44 -0
- package/src/db/land-queue-trace.ts +28 -0
- package/src/db/land-stack.ts +80 -0
- package/src/db/land-telemetry-schema.ts +50 -0
- package/src/db/land-telemetry-write-ops.ts +16 -0
- package/src/db/land-telemetry.ts +114 -0
- package/src/db/land-withdrawal-state.ts +26 -0
- package/src/db/landed-merge-evidence.ts +72 -0
- package/src/db/landed-task-attribution.ts +23 -0
- package/src/db/landing-audit.ts +18 -0
- package/src/db/landing-controllers.ts +67 -0
- package/src/db/landing-ingress-async.ts +102 -0
- package/src/db/landing-ingress-read-ops.ts +8 -0
- package/src/db/landing-ingress-write-ops.ts +42 -0
- package/src/db/landing-ingress.ts +380 -0
- package/src/db/landing-read-ops.ts +18 -0
- package/src/db/landing-receipts.ts +206 -0
- package/src/db/landing-schema.ts +479 -0
- package/src/db/launch-facts.ts +60 -0
- package/src/db/legacy-landing-publication.ts +103 -0
- package/src/db/legacy-message-backfill.ts +90 -0
- package/src/db/lifecycle-seq.ts +127 -0
- package/src/db/lifecycle-write-window.ts +216 -0
- package/src/db/lineage-pair-dedupe-sql.ts +80 -0
- package/src/db/lineage-startup-captures.ts +43 -0
- package/src/db/long-running-work-async.ts +12 -0
- package/src/db/long-running-work-write-ops.ts +8 -0
- package/src/db/long-running-work.ts +78 -0
- package/src/db/macos-privacy.ts +72 -0
- package/src/db/main-connection-writes.ts +44 -0
- package/src/db/main-thread-state.ts +38 -0
- package/src/db/maintenance-health.ts +560 -0
- package/src/db/maintenance-indexes.ts +37 -0
- package/src/db/maintenance-job-runs-async.ts +15 -0
- package/src/db/maintenance-job-runs.ts +62 -0
- package/src/db/maintenance-job-write-ops.ts +10 -0
- package/src/db/maintenance-pauses.ts +224 -0
- package/src/db/maintenance-worker.ts +111 -0
- package/src/db/mappers.ts +422 -0
- package/src/db/memory-preamble-read.ts +13 -0
- package/src/db/memory-resolve.ts +209 -0
- package/src/db/memory-retirement-plan.ts +31 -0
- package/src/db/memory-retirement.ts +15 -0
- package/src/db/merge-drain-async.ts +8 -0
- package/src/db/merge-lease.ts +225 -0
- package/src/db/message-claims.ts +16 -0
- package/src/db/message-queries.ts +16 -0
- package/src/db/message-read-mark.ts +32 -0
- package/src/db/message-reads-async.ts +46 -0
- package/src/db/message-reads-read-ops.ts +35 -0
- package/src/db/message-reads-write-ops.ts +24 -0
- package/src/db/message-reads.ts +553 -0
- package/src/db/message-send-suppression.ts +58 -0
- package/src/db/message-send.ts +76 -0
- package/src/db/message-thread.ts +15 -0
- package/src/db/message-write-ops.ts +96 -0
- package/src/db/messages-async.ts +31 -0
- package/src/db/messages-read-ops.ts +14 -0
- package/src/db/messages.ts +1201 -0
- package/src/db/migration-marker.ts +13 -0
- package/src/db/migrations.ts +1761 -0
- package/src/db/notification-subscriptions.ts +282 -0
- package/src/db/on-loop-write-transaction.ts +34 -0
- package/src/db/operator-actions-schema.ts +10 -0
- package/src/db/operator-decisions.ts +180 -0
- package/src/db/orchestrators-async.ts +57 -0
- package/src/db/orchestrators-read-ops.ts +7 -0
- package/src/db/orchestrators-write-ops.ts +52 -0
- package/src/db/orchestrators.ts +485 -0
- package/src/db/outbox-codec.ts +16 -0
- package/src/db/pair-maintenance.ts +9 -0
- package/src/db/pairs-async.ts +10 -0
- package/src/db/pairs-write-ops.ts +8 -0
- package/src/db/pairs.ts +264 -0
- package/src/db/pending-relay-runs.ts +73 -0
- package/src/db/plan-blurb-migration.ts +158 -0
- package/src/db/plan-ci-blocks.ts +28 -0
- package/src/db/plan-completion.ts +55 -0
- package/src/db/plan-conformance.ts +104 -0
- package/src/db/plan-dispatch-schema.ts +17 -0
- package/src/db/plan-dispatch-store.ts +112 -0
- package/src/db/plan-external.ts +79 -0
- package/src/db/plan-graph-async.ts +23 -0
- package/src/db/plan-graph-read-ops.ts +16 -0
- package/src/db/plan-graph-write-ops.ts +37 -0
- package/src/db/plan-graph.ts +403 -0
- package/src/db/plan-import-schema.ts +19 -0
- package/src/db/plan-import.ts +211 -0
- package/src/db/plan-task-create.ts +44 -0
- package/src/db/planner-stats.ts +123 -0
- package/src/db/plans-async.ts +22 -0
- package/src/db/plans-read-ops.ts +11 -0
- package/src/db/plans-write-ops.ts +9 -0
- package/src/db/plans.ts +385 -0
- package/src/db/policy-runtime.ts +14 -0
- package/src/db/presence-buffer.ts +111 -0
- package/src/db/presence-loop.ts +58 -0
- package/src/db/presence-write-ops.ts +28 -0
- package/src/db/presence-write.ts +38 -0
- package/src/db/profile-artifact-backfill-migration.ts +32 -0
- package/src/db/profile-host-sources-migration.ts +150 -0
- package/src/db/profile-legacy-project-instructions-migration.ts +41 -0
- package/src/db/profile-name-case-migration.ts +46 -0
- package/src/db/profile-override-migration.ts +200 -0
- package/src/db/profile-project-ack-migration.ts +55 -0
- package/src/db/profile-slim-migration.ts +125 -0
- package/src/db/profile-slim-plan.ts +190 -0
- package/src/db/project-entries-async.ts +18 -0
- package/src/db/project-entries-read-ops.ts +28 -0
- package/src/db/project-entries.ts +514 -0
- package/src/db/project-entry-search.ts +63 -0
- package/src/db/project-identity.ts +16 -0
- package/src/db/project-journal.ts +256 -0
- package/src/db/project-lifecycle.ts +80 -0
- package/src/db/project-memory-group-migration.ts +76 -0
- package/src/db/project-phantom-merge.ts +228 -0
- package/src/db/project-root-schema.ts +30 -0
- package/src/db/project-trust-approvals.ts +98 -0
- package/src/db/projects-async.ts +50 -0
- package/src/db/projects-read-ops.ts +59 -0
- package/src/db/projects-write-ops.ts +74 -0
- package/src/db/projects.ts +629 -0
- package/src/db/prompt-templates-schema.ts +23 -0
- package/src/db/prompt-templates.ts +138 -0
- package/src/db/prompt-version-migration.ts +115 -0
- package/src/db/prompt-versions-ops.ts +16 -0
- package/src/db/prompt-versions.ts +167 -0
- package/src/db/provider-catalog-async.ts +31 -0
- package/src/db/provider-catalog-read-ops.ts +8 -0
- package/src/db/provider-catalog-write-ops.ts +16 -0
- package/src/db/provider-config-history.ts +49 -0
- package/src/db/provider-config-secrets.ts +117 -0
- package/src/db/provider-flap-messages-async.ts +6 -0
- package/src/db/provider-flap-messages-write-ops.ts +12 -0
- package/src/db/provider-flap-messages.ts +19 -0
- package/src/db/provider-quota-advisory-types.ts +39 -0
- package/src/db/provider-quota-burn.ts +322 -0
- package/src/db/provider-quota-effect-occurrences.ts +13 -0
- package/src/db/provider-quota-lease-write-ops.ts +23 -0
- package/src/db/provider-quota-leases-async.ts +35 -0
- package/src/db/provider-quota-leases.ts +174 -0
- package/src/db/provider-quota-matrix-cache.ts +85 -0
- package/src/db/provider-quota-matrix-fetch.ts +85 -0
- package/src/db/provider-quota-merge.ts +90 -0
- package/src/db/provider-quota-notification-write.ts +98 -0
- package/src/db/provider-quota-prune.ts +35 -0
- package/src/db/provider-quota-read-async.ts +77 -0
- package/src/db/provider-quota-read-ops.ts +56 -0
- package/src/db/provider-quota-recipients.ts +38 -0
- package/src/db/provider-quota-state.ts +139 -0
- package/src/db/provider-quota-visibility.ts +22 -0
- package/src/db/provider-quota-write-ops.ts +69 -0
- package/src/db/provider-quotas.ts +726 -0
- package/src/db/provider-secret-scrub.ts +64 -0
- package/src/db/provisioning-assets-migration.ts +85 -0
- package/src/db/provisioning-async.ts +116 -0
- package/src/db/provisioning-callmux.ts +184 -0
- package/src/db/provisioning-github-api.ts +16 -0
- package/src/db/provisioning-github-import-target.ts +29 -0
- package/src/db/provisioning-mcp-validation.ts +103 -0
- package/src/db/provisioning-read-ops.ts +23 -0
- package/src/db/provisioning-registry.ts +1122 -0
- package/src/db/provisioning-resolve.ts +321 -0
- package/src/db/provisioning-write-ops.ts +43 -0
- package/src/db/qa-skill-seed.ts +27 -0
- package/src/db/quota-lease-busy.worker.ts +62 -0
- package/src/db/read-op-marshaling-fixtures.ts +724 -0
- package/src/db/read-ops.ts +266 -0
- package/src/db/reader-pool.ts +252 -0
- package/src/db/recipe-read-ops.ts +15 -0
- package/src/db/recipe-write-ops.ts +68 -0
- package/src/db/reply-obligations.ts +265 -0
- package/src/db/report-suppression.ts +126 -0
- package/src/db/restart-epoch-admin-async.ts +14 -0
- package/src/db/restart-epoch-admin.ts +67 -0
- package/src/db/restart-epoch-admission.ts +114 -0
- package/src/db/restart-epoch-async.ts +80 -0
- package/src/db/restart-epoch-begin.ts +177 -0
- package/src/db/restart-epoch-read-ops.ts +40 -0
- package/src/db/restart-epoch-release.ts +248 -0
- package/src/db/restart-epoch-write-ops.ts +117 -0
- package/src/db/restart-epoch.test-fixture.ts +37 -0
- package/src/db/restart-epoch.ts +623 -0
- package/src/db/restart-sensitive.ts +81 -0
- package/src/db/retention.ts +423 -0
- package/src/db/review-ref-cleanups.ts +306 -0
- package/src/db/routing-policy.ts +64 -0
- package/src/db/scheduled-timer-projection.ts +123 -0
- package/src/db/scheduled-timer-quota-chaos-worker.ts +84 -0
- package/src/db/scheduled-timers.ts +521 -0
- package/src/db/schema.ts +1472 -0
- package/src/db/scoped-message-reads.ts +31 -0
- package/src/db/secrets-broker-async.ts +31 -0
- package/src/db/secrets-broker-read-ops.ts +8 -0
- package/src/db/secrets-broker-write-ops.ts +23 -0
- package/src/db/secrets-broker.ts +221 -0
- package/src/db/secrets-vault-import.ts +37 -0
- package/src/db/secrets-vault-key-lifecycle.ts +64 -0
- package/src/db/secrets-vault-metadata.ts +37 -0
- package/src/db/secrets-vault-migration.ts +53 -0
- package/src/db/secrets-vault-write.ts +97 -0
- package/src/db/secrets-vault.ts +69 -0
- package/src/db/self-effort-permissions.ts +50 -0
- package/src/db/service-access-read-ops.ts +10 -0
- package/src/db/services-async.ts +29 -0
- package/src/db/services-read-ops.ts +134 -0
- package/src/db/services-write-ops.ts +71 -0
- package/src/db/shared.ts +7 -0
- package/src/db/shipping-board-async.ts +6 -0
- package/src/db/shipping-board.ts +319 -0
- package/src/db/shipping-stats-async.ts +24 -0
- package/src/db/shipping-stats-histogram.ts +45 -0
- package/src/db/shipping-stats-schema.ts +8 -0
- package/src/db/shipping-stats.ts +265 -0
- package/src/db/snapshot-ledger-prune.ts +53 -0
- package/src/db/spawn-budget.ts +145 -0
- package/src/db/spawn-command-busy.worker.ts +71 -0
- package/src/db/spawn-delegation-state.ts +124 -0
- package/src/db/spawn-delegation.ts +114 -0
- package/src/db/spawn-host-cap.ts +29 -0
- package/src/db/spawn-in-flight-count.ts +37 -0
- package/src/db/spawn-in-flight.ts +15 -0
- package/src/db/spawn-process-evidence.ts +68 -0
- package/src/db/spawn-project-target.ts +57 -0
- package/src/db/spawn-registration-confirmed-backfill.ts +71 -0
- package/src/db/spawn-request-id-migration.ts +36 -0
- package/src/db/spawn-request-id.ts +35 -0
- package/src/db/spawn-request-reuse.ts +28 -0
- package/src/db/spawn-tree-cleanup.ts +89 -0
- package/src/db/spawn-tree.ts +29 -0
- package/src/db/sql-audit-indexes.ts +77 -0
- package/src/db/stalled-message-delivery.ts +52 -0
- package/src/db/startup-write-lock.ts +36 -0
- package/src/db/stats-async.ts +235 -0
- package/src/db/stats-health-read-model.ts +225 -0
- package/src/db/stats-read-ops.ts +25 -0
- package/src/db/stats.ts +633 -0
- package/src/db/target-host.ts +25 -0
- package/src/db/task-async.ts +165 -0
- package/src/db/task-comment-through-async.ts +14 -0
- package/src/db/task-comment-through-read-ops.ts +4 -0
- package/src/db/task-comment-through-write-ops.ts +7 -0
- package/src/db/task-comment-through.ts +123 -0
- package/src/db/task-core.ts +44 -0
- package/src/db/task-deliverables-async.ts +60 -0
- package/src/db/task-deliverables-read-ops.ts +4 -0
- package/src/db/task-deliverables-write-ops.ts +37 -0
- package/src/db/task-deliverables.ts +387 -0
- package/src/db/task-dependency-cycle.worker.ts +43 -0
- package/src/db/task-detail-projection.ts +91 -0
- package/src/db/task-entity-async.ts +252 -0
- package/src/db/task-entity-read-ops.ts +51 -0
- package/src/db/task-entity-write-ops.ts +197 -0
- package/src/db/task-entity.ts +1143 -0
- package/src/db/task-execution.ts +20 -0
- package/src/db/task-issue-relation.ts +23 -0
- package/src/db/task-issue-source.ts +46 -0
- package/src/db/task-land-withdraw-async.ts +10 -0
- package/src/db/task-land-withdraw-read-ops.ts +13 -0
- package/src/db/task-land-withdraw-read.ts +47 -0
- package/src/db/task-land-withdraw-write-ops.ts +31 -0
- package/src/db/task-land-withdraw.ts +423 -0
- package/src/db/task-list.ts +113 -0
- package/src/db/task-maintenance.ts +25 -0
- package/src/db/task-memory-async.ts +19 -0
- package/src/db/task-memory-read-ops.ts +9 -0
- package/src/db/task-memory-write-ops.ts +23 -0
- package/src/db/task-memory.ts +170 -0
- package/src/db/task-owner.ts +126 -0
- package/src/db/task-read-ops.ts +44 -0
- package/src/db/task-review-hold-async.ts +20 -0
- package/src/db/task-review-hold-delivery.ts +58 -0
- package/src/db/task-review-hold-write-ops.ts +26 -0
- package/src/db/task-review-hold.ts +615 -0
- package/src/db/task-state-reconcile-async.ts +12 -0
- package/src/db/task-state-reconcile.ts +163 -0
- package/src/db/task-validation.ts +71 -0
- package/src/db/task-write-ops.ts +145 -0
- package/src/db/tasks.ts +528 -0
- package/src/db/team-epics.ts +37 -0
- package/src/db/team-idle.ts +35 -0
- package/src/db/team-project.ts +69 -0
- package/src/db/team-spawn-delegation-read.ts +36 -0
- package/src/db/team-spawn-delegation.ts +49 -0
- package/src/db/teams-async.ts +58 -0
- package/src/db/teams-read-ops.ts +27 -0
- package/src/db/teams-write-ops.ts +17 -0
- package/src/db/teams.ts +504 -0
- package/src/db/terminal-events.ts +113 -0
- package/src/db/timer-async.ts +523 -0
- package/src/db/timer-cutover-core.ts +545 -0
- package/src/db/timer-cutover-report-read-ops.ts +211 -0
- package/src/db/timer-cutover-write-ops.ts +275 -0
- package/src/db/timer-ingress-payload.ts +160 -0
- package/src/db/timer-ingress-read-ops.ts +39 -0
- package/src/db/timer-ingress-request-keys.ts +282 -0
- package/src/db/timer-ingress-write-ops.ts +145 -0
- package/src/db/timer-ingress.ts +515 -0
- package/src/db/timer-message-cutover.ts +322 -0
- package/src/db/timer-message-fire-deadletter.ts +136 -0
- package/src/db/timer-message-fire.ts +209 -0
- package/src/db/timer-message-flip-chaos-worker.ts +89 -0
- package/src/db/timer-message-flip-consistency.ts +147 -0
- package/src/db/timer-message-flip.ts +676 -0
- package/src/db/timer-message-participant.ts +138 -0
- package/src/db/timer-migrate-input.ts +92 -0
- package/src/db/timer-operator-async.ts +177 -0
- package/src/db/timer-operator-read-ops.ts +21 -0
- package/src/db/timer-operator-stage10.ts +119 -0
- package/src/db/timer-operator-write-ops.ts +102 -0
- package/src/db/timer-operator.ts +393 -0
- package/src/db/timer-read-ops.ts +147 -0
- package/src/db/timer-transfer-errors.ts +10 -0
- package/src/db/timer-transfer-write-ops.ts +39 -0
- package/src/db/timer-verifier-schema.ts +29 -0
- package/src/db/timer-verifier.ts +379 -0
- package/src/db/timer-write-ops.ts +277 -0
- package/src/db/token-db-write-ops.ts +92 -0
- package/src/db/token-standing.ts +84 -0
- package/src/db/token-usage-read-ops.ts +8 -0
- package/src/db/token-usage-write-ops.ts +35 -0
- package/src/db/token-usage.ts +338 -0
- package/src/db/tool-groups-empty-migration.ts +59 -0
- package/src/db/urgent-intake.ts +30 -0
- package/src/db/user-invites.ts +107 -0
- package/src/db/user-settings-read-ops.ts +19 -0
- package/src/db/user-settings-write-ops.ts +42 -0
- package/src/db/users.ts +173 -0
- package/src/db/vault-backup.ts +59 -0
- package/src/db/vault-expiry.ts +71 -0
- package/src/db/vault-health.ts +99 -0
- package/src/db/vault-token-launch.ts +77 -0
- package/src/db/vault-token-ops.ts +14 -0
- package/src/db/vault-tokens.ts +101 -0
- package/src/db/viewer-scope.ts +117 -0
- package/src/db/wal-checkpointer-worker.ts +48 -0
- package/src/db/wal-checkpointer.ts +107 -0
- package/src/db/wal-index.ts +53 -0
- package/src/db/wal-live-log.ts +68 -0
- package/src/db/wal-reclaim-async.ts +45 -0
- package/src/db/wal-reclaim.ts +140 -0
- package/src/db/web-tool-call-ops.ts +15 -0
- package/src/db/web-tool-calls.ts +87 -0
- package/src/db/withdraw-land-error.ts +18 -0
- package/src/db/work-evidence.ts +43 -0
- package/src/db/workflow-budget.ts +44 -0
- package/src/db/workflow-contact.ts +173 -0
- package/src/db/workflow-execution.ts +10 -0
- package/src/db/workflow-journal-async.ts +64 -0
- package/src/db/workflow-journal-prune.ts +71 -0
- package/src/db/workflow-journal-read-ops.ts +21 -0
- package/src/db/workflow-journal-schema.ts +9 -0
- package/src/db/workflow-journal-write-ops.ts +33 -0
- package/src/db/workflow-journal.ts +324 -0
- package/src/db/workflow-spawn-quota.ts +57 -0
- package/src/db/workflow-stats-read-ops.ts +177 -0
- package/src/db/workflow-step-tasks.ts +74 -0
- package/src/db/workflow-task-read-ops.ts +187 -0
- package/src/db/workspace-land-state.ts +65 -0
- package/src/db/workspace-merge-hold.ts +28 -0
- package/src/db/workspace-persistence.ts +77 -0
- package/src/db/workspace-rekey-write-ops.ts +11 -0
- package/src/db/workspace-rekey.ts +148 -0
- package/src/db/workspace-steward-cancel.ts +85 -0
- package/src/db/workspace-steward-fence.ts +30 -0
- package/src/db/workspace-write-ops.ts +26 -0
- package/src/db/workspace-writes-async.ts +46 -0
- package/src/db/workspace-writes.ts +196 -0
- package/src/db/workspaces.ts +617 -0
- package/src/db/write-ops.ts +594 -0
- package/src/db/writer-drain.ts +27 -0
- package/src/db/writer-fault-seam.ts +101 -0
- package/src/db/writer-gateway.ts +840 -0
- package/src/db/writer-ledger.ts +56 -0
- package/src/db.ts +4 -0
- package/src/deploy-executor.ts +139 -0
- package/src/dev.ts +541 -0
- package/src/dispatch-availability.ts +55 -0
- package/src/dispatch-match.ts +21 -0
- package/src/ephemeral/host-landing-slots-proof-worker.ts +45 -0
- package/src/ephemeral/index.ts +58 -0
- package/src/ephemeral/instance.ts +832 -0
- package/src/ephemeral/landing-ingress-proof-worker.ts +30 -0
- package/src/ephemeral/ports.ts +40 -0
- package/src/ephemeral/profile.ts +323 -0
- package/src/ephemeral/rehearsal-stamps.ts +149 -0
- package/src/ephemeral/rehearsal.ts +213 -0
- package/src/ephemeral/snapshot-kernel.ts +41 -0
- package/src/ephemeral/snapshot.ts +753 -0
- package/src/ephemeral/sweep.ts +40 -0
- package/src/event-loop-lag.ts +584 -0
- package/src/event-loop-yield.ts +27 -0
- package/src/events.ts +140 -0
- package/src/execution-mode.ts +63 -0
- package/src/fleet-convergence.ts +123 -0
- package/src/gate-resolver.ts +151 -0
- package/src/gate-run-capture.ts +71 -0
- package/src/git-sha.ts +58 -0
- package/src/guides.ts +73 -0
- package/src/host/capacity.ts +79 -0
- package/src/host/gate-capacity-alert.ts +90 -0
- package/src/host/identity.ts +128 -0
- package/src/host/presentation.ts +234 -0
- package/src/host/pressure-details.ts +89 -0
- package/src/host/pressure.ts +216 -0
- package/src/host/state.ts +132 -0
- package/src/host/utilization-buffer.ts +71 -0
- package/src/host-awareness.ts +57 -0
- package/src/host-identity.ts +39 -0
- package/src/host-provider-enablement.ts +75 -0
- package/src/host-provider-store.ts +102 -0
- package/src/host-tools.ts +39 -0
- package/src/http-body.ts +49 -0
- package/src/http-compression.ts +16 -0
- package/src/hub-metrics-report.ts +67 -0
- package/src/hub-metrics.ts +166 -0
- package/src/idle-digest-config.ts +40 -0
- package/src/idle-self-care.ts +58 -0
- package/src/index.ts +35 -0
- package/src/injection-sweep-pacing.ts +24 -0
- package/src/insights-async.ts +16 -0
- package/src/insights-db.ts +188 -0
- package/src/internal-spawn-model.ts +18 -0
- package/src/invite-link.ts +11 -0
- package/src/issue-tracker/adapter.ts +58 -0
- package/src/issue-tracker/github.ts +342 -0
- package/src/issue-tracker/index.ts +12 -0
- package/src/issue-tracker/registry.ts +26 -0
- package/src/journal-preamble.ts +350 -0
- package/src/kernel-correlation.ts +28 -0
- package/src/land-authorization.ts +73 -0
- package/src/land-block.ts +59 -0
- package/src/land-failure-event-key.ts +8 -0
- package/src/land-gate-failure-routing.ts +69 -0
- package/src/land-gate-notifications.ts +173 -0
- package/src/land-gate-queue-progress.ts +54 -0
- package/src/land-gates-source.ts +126 -0
- package/src/land-gates.ts +29 -0
- package/src/land-lifecycle-drives.ts +15 -0
- package/src/land-settle-dispatch.ts +134 -0
- package/src/land-stack-depth.ts +11 -0
- package/src/land-telemetry.ts +40 -0
- package/src/landing-base-ref.ts +3 -0
- package/src/landing-host-safety.ts +38 -0
- package/src/landing-lane-key.ts +74 -0
- package/src/launch-mode-support.ts +11 -0
- package/src/launch-mode.ts +58 -0
- package/src/legacy-landing.test-fixture.ts +56 -0
- package/src/lifecycle-context-pressure.ts +134 -0
- package/src/lifecycle-manager.ts +831 -0
- package/src/lifecycle-signal-registry.ts +87 -0
- package/src/live-runs-section.ts +38 -0
- package/src/loop-block-attribution.ts +442 -0
- package/src/loop-block-regression-alarm.ts +156 -0
- package/src/loop-task-stamps.ts +62 -0
- package/src/main-thread-clock.ts +95 -0
- package/src/maintenance/agent-identity-archive-job.ts +15 -0
- package/src/maintenance/artifact-checkout-gc-job.ts +14 -0
- package/src/maintenance/artifact-checkout-gc.ts +33 -0
- package/src/maintenance/artifact-sweep.ts +23 -0
- package/src/maintenance/breaker.ts +200 -0
- package/src/maintenance/cd-watcher.ts +176 -0
- package/src/maintenance/checkout-refresh.ts +83 -0
- package/src/maintenance/ci-monitor.ts +14 -0
- package/src/maintenance/claude-api-budget-job.ts +16 -0
- package/src/maintenance/constants.ts +134 -0
- package/src/maintenance/continuation-archive-search-job.ts +27 -0
- package/src/maintenance/critical-job-watchdog.ts +252 -0
- package/src/maintenance/db-planner-stats-job.ts +19 -0
- package/src/maintenance/db-wal-reclaim-job.ts +82 -0
- package/src/maintenance/events.ts +28 -0
- package/src/maintenance/gate-capacity-sample-job.ts +16 -0
- package/src/maintenance/index.ts +10 -0
- package/src/maintenance/jobs.ts +857 -0
- package/src/maintenance/long-running-work.ts +41 -0
- package/src/maintenance/orphaned-sessions.ts +126 -0
- package/src/maintenance/pauses.ts +174 -0
- package/src/maintenance/provider-secret-scrub-job.ts +16 -0
- package/src/maintenance/queued-message-expiration.ts +23 -0
- package/src/maintenance/red-main-controller-job.ts +22 -0
- package/src/maintenance/reply-obligation-parity-job.ts +27 -0
- package/src/maintenance/restart-epoch-hold-health.ts +62 -0
- package/src/maintenance/run-registry.ts +194 -0
- package/src/maintenance/scheduler.ts +778 -0
- package/src/maintenance/service-access-job.ts +31 -0
- package/src/maintenance/shipping-stats-rollup-job.ts +23 -0
- package/src/maintenance/snapshot-ledger-prune-job.ts +17 -0
- package/src/maintenance/stalled-delivery-pager.ts +125 -0
- package/src/maintenance/steward-handback.ts +11 -0
- package/src/maintenance/task-state-reconcile-job.ts +22 -0
- package/src/maintenance/teams.ts +426 -0
- package/src/maintenance/types.ts +124 -0
- package/src/maintenance/vault-backup-job.ts +34 -0
- package/src/maintenance/vault-expiry-job.ts +29 -0
- package/src/maintenance/web-tool-call-prune-job.ts +13 -0
- package/src/maintenance/workflow-backstop-job.ts +12 -0
- package/src/maintenance/workflow-journal-prune-job.ts +29 -0
- package/src/maintenance/workspaces.ts +784 -0
- package/src/maintenance.ts +1 -0
- package/src/managed-policy-escalation.ts +123 -0
- package/src/managed-policy.ts +236 -0
- package/src/managed-provider-gate.ts +27 -0
- package/src/managed-spawn-reservation.ts +23 -0
- package/src/markdown-frontmatter.ts +14 -0
- package/src/mcp/activity-output.ts +57 -0
- package/src/mcp/artifact-upload.ts +53 -0
- package/src/mcp/context-output.ts +73 -0
- package/src/mcp/dispatch-shape-schema.ts +13 -0
- package/src/mcp/guides.ts +33 -0
- package/src/mcp/http.ts +27 -0
- package/src/mcp/identity-projection.ts +121 -0
- package/src/mcp/identity.ts +235 -0
- package/src/mcp/index.ts +355 -0
- package/src/mcp/issue-selector-schema.ts +12 -0
- package/src/mcp/message-read.ts +87 -0
- package/src/mcp/output-descriptions.ts +72 -0
- package/src/mcp/output-levels.ts +71 -0
- package/src/mcp/output-projection.ts +88 -0
- package/src/mcp/plan-presentation.ts +166 -0
- package/src/mcp/presentation-values.ts +11 -0
- package/src/mcp/presentation.ts +653 -0
- package/src/mcp/project-entry-search-schema.ts +7 -0
- package/src/mcp/prompts.ts +36 -0
- package/src/mcp/runtime-output.ts +84 -0
- package/src/mcp/schema-budget.ts +28 -0
- package/src/mcp/self-care-visibility.ts +23 -0
- package/src/mcp/service-access.ts +18 -0
- package/src/mcp/spawn-targets-matrix.ts +68 -0
- package/src/mcp/spawn-targets.test-fixture.ts +21 -0
- package/src/mcp/task-validation-presentation.ts +19 -0
- package/src/mcp/tool-generation.ts +8 -0
- package/src/mcp/tool-groups.ts +136 -0
- package/src/mcp/tools-artifacts.ts +82 -0
- package/src/mcp/tools-messaging.ts +541 -0
- package/src/mcp/tools-permission.ts +88 -0
- package/src/mcp/tools-run.ts +73 -0
- package/src/mcp/tools-scheduler.ts +156 -0
- package/src/mcp/tools-spawn.ts +418 -0
- package/src/mcp/tools-web-tool-calls.ts +28 -0
- package/src/mcp/tools-workspace.ts +260 -0
- package/src/mcp/types.ts +68 -0
- package/src/mcp/validation.ts +66 -0
- package/src/mcp-agent-action.ts +96 -0
- package/src/mcp-agent-keep.ts +37 -0
- package/src/mcp-backlog-tools.ts +137 -0
- package/src/mcp-blackboard-tools.ts +131 -0
- package/src/mcp-channel-binding-tools.ts +27 -0
- package/src/mcp-claude-api-budget.ts +35 -0
- package/src/mcp-codex-reset.ts +43 -0
- package/src/mcp-decision-tools.ts +96 -0
- package/src/mcp-dispatch-tools.ts +142 -0
- package/src/mcp-egress-tools.ts +168 -0
- package/src/mcp-errors.ts +7 -0
- package/src/mcp-host-tools.ts +61 -0
- package/src/mcp-interrupt-agent.ts +47 -0
- package/src/mcp-issue-activity-tools.ts +114 -0
- package/src/mcp-issue-association-tools.ts +103 -0
- package/src/mcp-issue-lifecycle-tools.ts +49 -0
- package/src/mcp-issue-ref-tools.ts +214 -0
- package/src/mcp-maintenance-tools.ts +113 -0
- package/src/mcp-merge-tools.ts +66 -0
- package/src/mcp-notification-subscription-tools.ts +297 -0
- package/src/mcp-output-levels.test-fixture.ts +95 -0
- package/src/mcp-plan-tools.ts +347 -0
- package/src/mcp-profile-trust-tools.ts +47 -0
- package/src/mcp-project-journal-tools.ts +160 -0
- package/src/mcp-project-tools.ts +420 -0
- package/src/mcp-provider-catalog.ts +9 -0
- package/src/mcp-release-tools.ts +33 -0
- package/src/mcp-routing-policy-tools.ts +35 -0
- package/src/mcp-secrets-tools.ts +87 -0
- package/src/mcp-task-deliver-tools.ts +166 -0
- package/src/mcp-task-land-withdraw-tools.ts +49 -0
- package/src/mcp-task-memory-tools.ts +119 -0
- package/src/mcp-task-review-hold-tools.ts +57 -0
- package/src/mcp-task-tools.ts +342 -0
- package/src/mcp-task-validation-tools.ts +30 -0
- package/src/mcp-task-weave-tools.ts +63 -0
- package/src/mcp-team-template-tools.ts +141 -0
- package/src/mcp-team-tools.ts +197 -0
- package/src/mcp-tool-allowlist.ts +88 -0
- package/src/mcp-workflow-tools.ts +158 -0
- package/src/mcp.ts +1 -0
- package/src/memory-admission-rank.ts +55 -0
- package/src/memory-area-injection.ts +216 -0
- package/src/memory-boundary-capture.ts +206 -0
- package/src/memory-entry-safety.ts +28 -0
- package/src/memory-inject-filter.ts +190 -0
- package/src/memory-injection.ts +954 -0
- package/src/memory-preamble-admission.ts +158 -0
- package/src/memory-preamble-async.ts +13 -0
- package/src/memory-preamble.ts +1142 -0
- package/src/memory-retirement.ts +11 -0
- package/src/memory-seam.ts +273 -0
- package/src/memory-tokens.ts +91 -0
- package/src/merge-drain.ts +101 -0
- package/src/merge-pause-maintenance.ts +19 -0
- package/src/message-visibility.ts +50 -0
- package/src/messaging-policy.ts +94 -0
- package/src/native-memory.ts +59 -0
- package/src/notification-prefs.ts +25 -0
- package/src/notification-role-policy.ts +14 -0
- package/src/notification-router.ts +329 -0
- package/src/notification-rules.ts +390 -0
- package/src/notification-settings-store.ts +47 -0
- package/src/notification-settings.ts +166 -0
- package/src/notification-subscription-rules.ts +11 -0
- package/src/notification-types.ts +312 -0
- package/src/notify.ts +55 -0
- package/src/observed-reset-boundary.ts +23 -0
- package/src/observed-reset-refresh.ts +21 -0
- package/src/operator-alarm.ts +41 -0
- package/src/operator-decisions-section.ts +29 -0
- package/src/orchestrator-lookup.ts +29 -0
- package/src/orchestrator-self-report-authz.ts +34 -0
- package/src/package-pack.ts +246 -0
- package/src/post-bind-startup.ts +58 -0
- package/src/process-guard.ts +31 -0
- package/src/profile-cells.ts +305 -0
- package/src/profile-effective-survey.ts +121 -0
- package/src/profile-host-sources.ts +73 -0
- package/src/profile-instruction-blocks.ts +11 -0
- package/src/profile-project-validation.ts +23 -0
- package/src/profile-provider-options.ts +59 -0
- package/src/profile-role-templates.ts +26 -0
- package/src/profile-workflow-policy.ts +14 -0
- package/src/project-claudemd-sweep.ts +176 -0
- package/src/project-file-source.ts +54 -0
- package/src/project-ingest.ts +195 -0
- package/src/project-instructions.ts +700 -0
- package/src/project-mcp.ts +18 -0
- package/src/project-role-assets.ts +109 -0
- package/src/project-roles-validate.ts +53 -0
- package/src/project-roles.ts +364 -0
- package/src/project-settings.ts +5 -0
- package/src/project-skills.ts +5 -0
- package/src/project-toolchain.ts +58 -0
- package/src/project-trust-fingerprint.ts +174 -0
- package/src/project-trust.ts +262 -0
- package/src/project-workflows.ts +185 -0
- package/src/prompt-resolver.ts +697 -0
- package/src/prompt-template-fallback.ts +15 -0
- package/src/prompt-version-errors.ts +13 -0
- package/src/provider-catalog-store.ts +393 -0
- package/src/provider-config-store.ts +308 -0
- package/src/provider-enablement.ts +36 -0
- package/src/provider-home-gc.ts +58 -0
- package/src/provider-model-seed.ts +18 -0
- package/src/provider-quota-async.ts +152 -0
- package/src/provider-quota-config-store.ts +60 -0
- package/src/provider-secrets.test-fixture.ts +34 -0
- package/src/provider-state.ts +93 -0
- package/src/provider-timeline-event.ts +76 -0
- package/src/quota-advisory.ts +359 -0
- package/src/quota-band-delivery.ts +13 -0
- package/src/quota-band-projection.ts +149 -0
- package/src/quota-band-transition.ts +316 -0
- package/src/quota-pacing.ts +46 -0
- package/src/quota-threshold-config.ts +46 -0
- package/src/quota.ts +61 -0
- package/src/ratchet-files.ts +202 -0
- package/src/recipe-async.ts +50 -0
- package/src/recipe-db.ts +260 -0
- package/src/recipe-loader.ts +132 -0
- package/src/recipe-runner.ts +259 -0
- package/src/recipe-validator.ts +107 -0
- package/src/relay-event-drain.ts +39 -0
- package/src/relay-host-locality.ts +20 -0
- package/src/relay-run-lease.ts +17 -0
- package/src/repo-config-source.ts +209 -0
- package/src/report-verbosity.ts +5 -0
- package/src/restart-epoch-deploy-hold.ts +221 -0
- package/src/retention-config-store.ts +32 -0
- package/src/retention-config.ts +70 -0
- package/src/reviewer-pipeline.ts +238 -0
- package/src/routes/_route.ts +70 -0
- package/src/routes/_shared.ts +513 -0
- package/src/routes/activity.ts +70 -0
- package/src/routes/agent-effort.ts +69 -0
- package/src/routes/agent-keep.ts +27 -0
- package/src/routes/agent-profiles.ts +169 -0
- package/src/routes/agent-reporting.ts +19 -0
- package/src/routes/agent-self-effort.ts +51 -0
- package/src/routes/agent-sessions.ts +650 -0
- package/src/routes/agent-sharing.ts +23 -0
- package/src/routes/agents-spawn.ts +258 -0
- package/src/routes/agents.ts +452 -0
- package/src/routes/artifacts.ts +340 -0
- package/src/routes/auth.ts +123 -0
- package/src/routes/authority-audit.ts +14 -0
- package/src/routes/automations.ts +83 -0
- package/src/routes/backlog.ts +112 -0
- package/src/routes/blackboard.ts +54 -0
- package/src/routes/browser.ts +73 -0
- package/src/routes/channel-binding-delete.ts +21 -0
- package/src/routes/channel-output.ts +17 -0
- package/src/routes/claude-api-budget.ts +65 -0
- package/src/routes/commands-listing.ts +50 -0
- package/src/routes/commands.ts +586 -0
- package/src/routes/config.ts +75 -0
- package/src/routes/connectors.ts +108 -0
- package/src/routes/context-resets.ts +35 -0
- package/src/routes/continuation-archives.ts +37 -0
- package/src/routes/coordinator-teams.ts +14 -0
- package/src/routes/decisions.ts +82 -0
- package/src/routes/deploys.ts +15 -0
- package/src/routes/fleet-convergence.ts +5 -0
- package/src/routes/guides.ts +13 -0
- package/src/routes/host-providers.ts +73 -0
- package/src/routes/host-resource-control.ts +45 -0
- package/src/routes/host-secret-files.ts +38 -0
- package/src/routes/hosts.ts +240 -0
- package/src/routes/inbox.ts +151 -0
- package/src/routes/index.ts +614 -0
- package/src/routes/insights.ts +86 -0
- package/src/routes/integrations.ts +636 -0
- package/src/routes/issue-activity.ts +78 -0
- package/src/routes/issue-associations.ts +76 -0
- package/src/routes/issue-lifecycle.ts +34 -0
- package/src/routes/issue-refs.ts +163 -0
- package/src/routes/kernel-timers-operator.ts +57 -0
- package/src/routes/memory.ts +25 -0
- package/src/routes/merges.ts +109 -0
- package/src/routes/message-viewer.ts +4 -0
- package/src/routes/messages.ts +621 -0
- package/src/routes/notifications.ts +36 -0
- package/src/routes/orchestrator-bootstrap.ts +101 -0
- package/src/routes/orchestrator-host-registration.ts +125 -0
- package/src/routes/orchestrator-host-utilization.ts +255 -0
- package/src/routes/orchestrator-proxy.ts +174 -0
- package/src/routes/orchestrator.ts +699 -0
- package/src/routes/pairs.ts +214 -0
- package/src/routes/plans.ts +98 -0
- package/src/routes/project-onboarding.ts +56 -0
- package/src/routes/project-trust.ts +73 -0
- package/src/routes/projects.ts +296 -0
- package/src/routes/prompt-templates.ts +106 -0
- package/src/routes/provider-config.ts +232 -0
- package/src/routes/provider-quota-config.ts +48 -0
- package/src/routes/provider-quotas.ts +312 -0
- package/src/routes/provisioning-registry.ts +192 -0
- package/src/routes/recipes.ts +129 -0
- package/src/routes/restart-epochs.ts +98 -0
- package/src/routes/routing-policy.ts +30 -0
- package/src/routes/run-command.ts +25 -0
- package/src/routes/secrets-backup.ts +53 -0
- package/src/routes/secrets-import.ts +32 -0
- package/src/routes/secrets-page.ts +98 -0
- package/src/routes/secrets-vault.ts +121 -0
- package/src/routes/secrets.ts +165 -0
- package/src/routes/service-access.ts +57 -0
- package/src/routes/settings.ts +191 -0
- package/src/routes/shipping.ts +56 -0
- package/src/routes/spawn-policy.ts +299 -0
- package/src/routes/spec.ts +58 -0
- package/src/routes/sse.ts +18 -0
- package/src/routes/stats.ts +159 -0
- package/src/routes/steward.ts +49 -0
- package/src/routes/task-graph.ts +30 -0
- package/src/routes/task-http.ts +27 -0
- package/src/routes/task-issues.ts +81 -0
- package/src/routes/task-reads.ts +139 -0
- package/src/routes/task-validation.ts +22 -0
- package/src/routes/tasks.ts +553 -0
- package/src/routes/team-templates.ts +65 -0
- package/src/routes/teams-config.ts +15 -0
- package/src/routes/teams.ts +141 -0
- package/src/routes/token-usage.ts +167 -0
- package/src/routes/tokens.ts +393 -0
- package/src/routes/users.ts +248 -0
- package/src/routes/viewer-read.ts +27 -0
- package/src/routes/web-tool-calls.ts +38 -0
- package/src/routes/workflows.ts +142 -0
- package/src/routes/workspaces.ts +642 -0
- package/src/routes.ts +3 -0
- package/src/routing-eligibility.ts +42 -0
- package/src/routing-model-aliases.ts +21 -0
- package/src/routing-policy-normalize.ts +412 -0
- package/src/routing-policy-push.ts +154 -0
- package/src/routing-policy-service.ts +19 -0
- package/src/routing-policy-store.ts +16 -0
- package/src/routing-preferences.ts +82 -0
- package/src/routing-step-defaults.ts +31 -0
- package/src/runtime-grant.ts +164 -0
- package/src/runtime-prefix.ts +8 -0
- package/src/runtime-tokens.ts +395 -0
- package/src/search-query.ts +10 -0
- package/src/secret-keys.ts +24 -0
- package/src/secrets-broker/config.ts +53 -0
- package/src/secrets-broker/error.ts +8 -0
- package/src/secrets-broker/infisical.ts +259 -0
- package/src/secrets-broker/reader-infisical.ts +41 -0
- package/src/secrets-broker/reader.ts +101 -0
- package/src/secrets-broker/service.ts +242 -0
- package/src/secrets-broker/tool-credentials.ts +9 -0
- package/src/secrets-vault/backend-conformance.ts +26 -0
- package/src/secrets-vault/backend.ts +102 -0
- package/src/secrets-vault/backup.ts +103 -0
- package/src/secrets-vault/config.ts +7 -0
- package/src/secrets-vault/expiry.ts +10 -0
- package/src/secrets-vault/identity.ts +27 -0
- package/src/secrets-vault/import.ts +90 -0
- package/src/secrets-vault/key-files.ts +91 -0
- package/src/secrets-vault/keys.ts +79 -0
- package/src/secrets-vault/metadata.ts +51 -0
- package/src/secrets-vault/provider-env.ts +25 -0
- package/src/secrets-vault/resolve.ts +101 -0
- package/src/secrets-vault/restore.ts +57 -0
- package/src/secrets-vault/scope.ts +25 -0
- package/src/secrets-vault/service.ts +192 -0
- package/src/secrets-vault/shared.ts +10 -0
- package/src/security.ts +772 -0
- package/src/self-effort-rule.ts +36 -0
- package/src/self-resume-carry.ts +131 -0
- package/src/self-resume-command.ts +24 -0
- package/src/self-resume-config.ts +54 -0
- package/src/self-resume-identity.ts +40 -0
- package/src/self-resume-supersede.ts +19 -0
- package/src/self-resume.ts +884 -0
- package/src/server-background.ts +24 -0
- package/src/server.ts +726 -0
- package/src/service-access/config.ts +3 -0
- package/src/service-access/health.ts +151 -0
- package/src/service-access/host-health.ts +62 -0
- package/src/service-access/host.ts +63 -0
- package/src/service-access/operations.ts +21 -0
- package/src/service-access/policy.ts +30 -0
- package/src/service-access/probe.ts +62 -0
- package/src/service-access/request-logs.ts +93 -0
- package/src/service-access/scope.ts +7 -0
- package/src/service-access/service.ts +185 -0
- package/src/service-access/tokens.ts +174 -0
- package/src/service-access/validation.ts +75 -0
- package/src/service-access/vault.ts +59 -0
- package/src/services/agent-action.ts +238 -0
- package/src/services/agent-control-host.ts +74 -0
- package/src/services/agent-effort.ts +60 -0
- package/src/services/agent-hang-watchdog-job.ts +513 -0
- package/src/services/agent-hang-watchdog-wiring.ts +487 -0
- package/src/services/agent-hang-watchdog.ts +395 -0
- package/src/services/agent-keep.ts +72 -0
- package/src/services/agent-message-fanout.ts +91 -0
- package/src/services/agent-outstanding-work.ts +66 -0
- package/src/services/agent-reporting.ts +27 -0
- package/src/services/artifact-access.ts +39 -0
- package/src/services/artifact-multipart.ts +70 -0
- package/src/services/artifact-path-host.ts +55 -0
- package/src/services/artifact-read.ts +88 -0
- package/src/services/artifact-write.ts +25 -0
- package/src/services/auth-context.ts +117 -0
- package/src/services/automatic-disposal.ts +33 -0
- package/src/services/backlog.ts +149 -0
- package/src/services/browser-inventory.ts +52 -0
- package/src/services/browser-session-state.ts +41 -0
- package/src/services/browser-session.ts +167 -0
- package/src/services/bus-command-update.ts +84 -0
- package/src/services/bus-expiration-death.ts +57 -0
- package/src/services/canonical-root.ts +284 -0
- package/src/services/captured-delivery-gate.ts +12 -0
- package/src/services/carry-pending.ts +5 -0
- package/src/services/channel-binding-delete.ts +20 -0
- package/src/services/channel-suppression-receipt.ts +28 -0
- package/src/services/checkout-refresh-state.ts +18 -0
- package/src/services/checkout-refresh.test-fixture.ts +12 -0
- package/src/services/child-work-evidence.ts +77 -0
- package/src/services/claude-app.ts +91 -0
- package/src/services/command-claim-rejection.ts +23 -0
- package/src/services/command-host.ts +42 -0
- package/src/services/coordinator-digest.ts +30 -0
- package/src/services/decision-audience.ts +26 -0
- package/src/services/delivery-gate-policy.ts +98 -0
- package/src/services/delivery-tip.test-fixture.ts +25 -0
- package/src/services/diff-gate.ts +110 -0
- package/src/services/dispatch-command.ts +388 -0
- package/src/services/effective-launch-driver.ts +240 -0
- package/src/services/effective-launch-harness.ts +257 -0
- package/src/services/errors.ts +31 -0
- package/src/services/git-process.ts +176 -0
- package/src/services/git-remote.ts +100 -0
- package/src/services/harness-subagents.ts +12 -0
- package/src/services/host-changed-paths.test-fixture.ts +134 -0
- package/src/services/host-landing-placement.ts +65 -0
- package/src/services/host-project-readiness.ts +49 -0
- package/src/services/host-providers.ts +114 -0
- package/src/services/host-utilization.ts +70 -0
- package/src/services/idle-agent-digest.ts +318 -0
- package/src/services/idle-epics.ts +105 -0
- package/src/services/idle-self-care.ts +47 -0
- package/src/services/interrupt-agent.ts +146 -0
- package/src/services/isolated-workspace-placement.ts +258 -0
- package/src/services/issue-activity.ts +23 -0
- package/src/services/issue-associations.ts +72 -0
- package/src/services/issue-completion-drain.ts +24 -0
- package/src/services/issue-completion.ts +24 -0
- package/src/services/issue-lifecycle-comments.ts +12 -0
- package/src/services/issue-lifecycle.ts +620 -0
- package/src/services/issue-refs.ts +65 -0
- package/src/services/kernel-command-bridge.ts +219 -0
- package/src/services/kernel-control-host.ts +78 -0
- package/src/services/kernel-control-http.ts +119 -0
- package/src/services/kernel-control-mcp.ts +193 -0
- package/src/services/kernel-landing-command.ts +28 -0
- package/src/services/kernel-landing-ingress.ts +65 -0
- package/src/services/kernel-timers-authoritative-ingress.ts +48 -0
- package/src/services/kernel-timers-authz.ts +229 -0
- package/src/services/kernel-timers-command.ts +182 -0
- package/src/services/kernel-timers-cutover-chaos-worker.ts +209 -0
- package/src/services/kernel-timers-cutover.ts +39 -0
- package/src/services/kernel-timers-ingress-apply.ts +39 -0
- package/src/services/kernel-timers-ingress-chaos-worker.ts +312 -0
- package/src/services/kernel-timers-ingress.ts +702 -0
- package/src/services/kernel-timers-message-authority-chaos-worker.ts +97 -0
- package/src/services/kernel-timers-migrate.ts +158 -0
- package/src/services/kernel-timers-operator-chaos-worker.ts +259 -0
- package/src/services/kernel-timers-operator-preflight.ts +18 -0
- package/src/services/kernel-timers-operator.ts +424 -0
- package/src/services/kernel-timers-outbox.ts +138 -0
- package/src/services/kernel-timers-request-key-migration-chaos-worker.ts +77 -0
- package/src/services/kernel-timers-stage10-operator.ts +210 -0
- package/src/services/kernel-timers-stage10.ts +85 -0
- package/src/services/kernel-timers-stage9.ts +57 -0
- package/src/services/kernel-timers-transfer-chaos-worker.ts +118 -0
- package/src/services/kernel-timers-transfer.ts +525 -0
- package/src/services/kernel-timers-verifier.ts +39 -0
- package/src/services/kernel-timers.ts +247 -0
- package/src/services/land-boundary-settle.ts +32 -0
- package/src/services/land-gate-placement.ts +60 -0
- package/src/services/land-issue-relations.ts +46 -0
- package/src/services/land-restart-retry.ts +77 -0
- package/src/services/landed-ancestry.ts +417 -0
- package/src/services/landed-task-attribution.ts +14 -0
- package/src/services/landing-terminal-report.ts +119 -0
- package/src/services/legacy-landing-backfill.ts +159 -0
- package/src/services/legacy-landing-host.ts +291 -0
- package/src/services/legacy-landing-publication.ts +35 -0
- package/src/services/legacy-landing-recovery.ts +111 -0
- package/src/services/macos-privacy.ts +34 -0
- package/src/services/managed-running.ts +189 -0
- package/src/services/memory-areas.ts +172 -0
- package/src/services/memory-identity.ts +162 -0
- package/src/services/merge-pause.ts +37 -0
- package/src/services/message-delivery-actions.ts +11 -0
- package/src/services/operator-decisions.ts +260 -0
- package/src/services/orchestrator-landing-recovery.ts +55 -0
- package/src/services/orchestrator-registration-recovery.ts +12 -0
- package/src/services/orchestrator-upgrade.ts +83 -0
- package/src/services/parity-harness.ts +141 -0
- package/src/services/permission-decision.ts +129 -0
- package/src/services/plan-ci-recovery.ts +76 -0
- package/src/services/plan-conformance.ts +105 -0
- package/src/services/plan-dispatch-policy.ts +79 -0
- package/src/services/plan-dispatch.ts +372 -0
- package/src/services/plan-external-view.ts +7 -0
- package/src/services/plan-frontier.ts +34 -0
- package/src/services/plan-graph.ts +703 -0
- package/src/services/plan-import.ts +66 -0
- package/src/services/plan-live-bindings.ts +139 -0
- package/src/services/plan-task-create.ts +80 -0
- package/src/services/plan-terminal-refs.ts +83 -0
- package/src/services/plan-wake-digest.ts +88 -0
- package/src/services/plan-wake-policy.ts +12 -0
- package/src/services/profile-trust.ts +54 -0
- package/src/services/project-checkout-binding.ts +65 -0
- package/src/services/project-checkout-enrollment.ts +27 -0
- package/src/services/project-cwd.ts +41 -0
- package/src/services/project-onboarding.ts +165 -0
- package/src/services/project-repo-create.ts +27 -0
- package/src/services/project-role.test-fixture.ts +74 -0
- package/src/services/project.ts +191 -0
- package/src/services/prompt-templates.ts +46 -0
- package/src/services/prompt-version-writer.ts +42 -0
- package/src/services/provider-catalog.ts +7 -0
- package/src/services/provider-hold-flap.ts +130 -0
- package/src/services/provider-hold-nudge.ts +191 -0
- package/src/services/provider-hold-record.ts +137 -0
- package/src/services/provider-state-audit.ts +214 -0
- package/src/services/provisioning-harness/analyze.ts +285 -0
- package/src/services/provisioning-harness/budget-baseline.json +391 -0
- package/src/services/provisioning-harness/capture.ts +197 -0
- package/src/services/provisioning-harness/config.ts +55 -0
- package/src/services/provisioning-harness/context-sources.ts +85 -0
- package/src/services/provisioning-harness/driver.ts +156 -0
- package/src/services/provisioning-harness/expect.ts +81 -0
- package/src/services/provisioning-harness/fixture-matrix.ts +38 -0
- package/src/services/provisioning-harness/fixtures/project/.agent-relay/land-gates.json +1 -0
- package/src/services/provisioning-harness/fixtures/project/.claude/skills/harness-skill/SKILL.md +6 -0
- package/src/services/provisioning-harness/fixtures/project/.mcp.json +1 -0
- package/src/services/provisioning-harness/fixtures/project/AGENTS.md +1 -0
- package/src/services/provisioning-harness/fixtures/project/CLAUDE.md +1 -0
- package/src/services/provisioning-harness/fixtures/project/mcp-server.ts +33 -0
- package/src/services/provisioning-harness/fixtures/provider-home/AGENTS.md +1 -0
- package/src/services/provisioning-harness/fixtures/provider-home/CLAUDE.md +1 -0
- package/src/services/provisioning-harness/host-fixtures.ts +25 -0
- package/src/services/provisioning-harness/index.ts +4 -0
- package/src/services/provisioning-harness/inventory-types.ts +8 -0
- package/src/services/provisioning-harness/inventory.ts +33 -0
- package/src/services/provisioning-harness/lifecycle.ts +193 -0
- package/src/services/provisioning-harness/live.ts +61 -0
- package/src/services/provisioning-harness/manifests.ts +118 -0
- package/src/services/provisioning-harness/prepare.ts +113 -0
- package/src/services/provisioning-harness/redundancy-report.ts +32 -0
- package/src/services/provisioning-harness/redundancy.ts +137 -0
- package/src/services/provisioning-harness/report.ts +129 -0
- package/src/services/provisioning-harness/types.ts +174 -0
- package/src/services/provisioning-registry.ts +15 -0
- package/src/services/rate-limit-resume.ts +220 -0
- package/src/services/reap-verdict.ts +52 -0
- package/src/services/red-main-auto-revert.ts +103 -0
- package/src/services/red-main-controller-deps.ts +80 -0
- package/src/services/red-main-controller.ts +262 -0
- package/src/services/red-main-incident.ts +44 -0
- package/src/services/red-main-quarantine.ts +92 -0
- package/src/services/register-agent.ts +447 -0
- package/src/services/release-readiness.ts +219 -0
- package/src/services/reported-exit-death.ts +29 -0
- package/src/services/response-report-admission.ts +17 -0
- package/src/services/restart-epoch-driver.ts +290 -0
- package/src/services/restart-epoch-reconciler.ts +326 -0
- package/src/services/restart-epoch-stale-command-recovery.ts +133 -0
- package/src/services/restart-instructions.ts +86 -0
- package/src/services/restart-project-role.ts +74 -0
- package/src/services/restart-secret-refs.ts +14 -0
- package/src/services/restart-spawn.ts +510 -0
- package/src/services/review-publish.ts +76 -0
- package/src/services/review-ref-reconcile.ts +337 -0
- package/src/services/run-command-input.ts +22 -0
- package/src/services/run-command.ts +510 -0
- package/src/services/run-completion-message.ts +70 -0
- package/src/services/run-log.ts +212 -0
- package/src/services/run-queue.ts +63 -0
- package/src/services/scheduler-command-cancel.ts +49 -0
- package/src/services/scheduler-command.ts +590 -0
- package/src/services/scheduler-create.ts +25 -0
- package/src/services/scheduler-plan.ts +202 -0
- package/src/services/scheduler-recovery.ts +31 -0
- package/src/services/scheduler.ts +406 -0
- package/src/services/self-care-state.ts +10 -0
- package/src/services/self-effort-grant.ts +93 -0
- package/src/services/self-effort.ts +152 -0
- package/src/services/send-message.ts +548 -0
- package/src/services/server-credentials.ts +53 -0
- package/src/services/shipping-board.ts +111 -0
- package/src/services/shipping-project-config.ts +86 -0
- package/src/services/shipping-stats.ts +86 -0
- package/src/services/shutdown-agent.ts +463 -0
- package/src/services/shutdown-watchdog.ts +119 -0
- package/src/services/spawn-agent.ts +967 -0
- package/src/services/spawn-approval.ts +26 -0
- package/src/services/spawn-brief.ts +39 -0
- package/src/services/spawn-chain-inspector.ts +286 -0
- package/src/services/spawn-cwd-placement.ts +250 -0
- package/src/services/spawn-identity.ts +127 -0
- package/src/services/spawn-instruction-inputs.ts +114 -0
- package/src/services/spawn-issue-activity.ts +102 -0
- package/src/services/spawn-launch-decision.ts +32 -0
- package/src/services/spawn-launch.ts +116 -0
- package/src/services/spawn-loss-escalation.ts +253 -0
- package/src/services/spawn-placement.test-fixture.ts +30 -0
- package/src/services/spawn-project-role.ts +133 -0
- package/src/services/spawn-registration-watchdog.ts +352 -0
- package/src/services/spawn-replay.ts +61 -0
- package/src/services/spawn-repo-probe.ts +118 -0
- package/src/services/spawn-tree-cleanup.ts +37 -0
- package/src/services/spawn-warnings.ts +13 -0
- package/src/services/steward-reaper.ts +244 -0
- package/src/services/task-context-hydration.ts +413 -0
- package/src/services/task-delivery-close.ts +26 -0
- package/src/services/task-delivery-event.ts +11 -0
- package/src/services/task-delivery-land-policy.ts +35 -0
- package/src/services/task-delivery-summary.ts +38 -0
- package/src/services/task-delivery.ts +762 -0
- package/src/services/task-dependency-graph.ts +116 -0
- package/src/services/task-dispatch.ts +178 -0
- package/src/services/task-done-when.ts +45 -0
- package/src/services/task-entity.ts +758 -0
- package/src/services/task-from-issue.ts +80 -0
- package/src/services/task-issue-digest.ts +45 -0
- package/src/services/task-issue-link.ts +158 -0
- package/src/services/task-issue-weave.ts +570 -0
- package/src/services/task-land-withdraw.ts +462 -0
- package/src/services/task-lifecycle.ts +668 -0
- package/src/services/task-nothing-to-land.ts +37 -0
- package/src/services/task-plan-view.ts +172 -0
- package/src/services/task-review-hold.ts +244 -0
- package/src/services/task-semantic-events.ts +396 -0
- package/src/services/task-stage-wake.ts +15 -0
- package/src/services/task-state-reconcile.ts +169 -0
- package/src/services/task-validation.ts +42 -0
- package/src/services/team-claim-race.worker.ts +72 -0
- package/src/services/team-spawn-delegation.ts +30 -0
- package/src/services/team-templates.ts +172 -0
- package/src/services/team.ts +320 -0
- package/src/services/terminal-provider-exit.ts +57 -0
- package/src/services/timer-message-fire-chaos-worker.ts +29 -0
- package/src/services/timer-message-fire-outbox.ts +184 -0
- package/src/services/transient-agent-reaper.ts +412 -0
- package/src/services/turn-reconcile-audit.ts +236 -0
- package/src/services/user-onboarding.ts +98 -0
- package/src/services/user-profile.ts +57 -0
- package/src/services/web-search.ts +83 -0
- package/src/services/web-tool-calls.ts +65 -0
- package/src/services/withdraw-steward.ts +57 -0
- package/src/services/work-finality.ts +34 -0
- package/src/services/workflow-agent-obligation.ts +35 -0
- package/src/services/workflow-auto-start.ts +126 -0
- package/src/services/workflow-backstop.ts +38 -0
- package/src/services/workflow-budget.test-fixture.ts +10 -0
- package/src/services/workflow-caller.ts +32 -0
- package/src/services/workflow-catalog.ts +43 -0
- package/src/services/workflow-child-proof-worker.ts +76 -0
- package/src/services/workflow-child.test-fixture.ts +51 -0
- package/src/services/workflow-ci-main.ts +93 -0
- package/src/services/workflow-control-proof-worker.ts +149 -0
- package/src/services/workflow-coordinator-decision-proof-worker.ts +123 -0
- package/src/services/workflow-coordinator.ts +8 -0
- package/src/services/workflow-decision-answer.ts +18 -0
- package/src/services/workflow-decision-proof-worker.ts +92 -0
- package/src/services/workflow-decision.test-fixture.ts +58 -0
- package/src/services/workflow-decisions.ts +107 -0
- package/src/services/workflow-deferred-cleanup.ts +40 -0
- package/src/services/workflow-dispatch-result.ts +20 -0
- package/src/services/workflow-effect-driver.ts +165 -0
- package/src/services/workflow-effects.ts +544 -0
- package/src/services/workflow-foreach-proof-worker.ts +209 -0
- package/src/services/workflow-land-notice.ts +18 -0
- package/src/services/workflow-land.ts +105 -0
- package/src/services/workflow-notice.ts +32 -0
- package/src/services/workflow-overdue-notice.ts +19 -0
- package/src/services/workflow-pins.ts +162 -0
- package/src/services/workflow-reconcile.ts +210 -0
- package/src/services/workflow-resume-pins.ts +30 -0
- package/src/services/workflow-run-chaos-worker.ts +67 -0
- package/src/services/workflow-run-view.ts +71 -0
- package/src/services/workflow-run.test-fixture.ts +165 -0
- package/src/services/workflow-runs.ts +370 -0
- package/src/services/workflow-scripts.ts +100 -0
- package/src/services/workflow-slice-proof.ts +14 -0
- package/src/services/workflow-stats.ts +208 -0
- package/src/services/workflow-supervisor-state.ts +117 -0
- package/src/services/workflow-supervisor.ts +122 -0
- package/src/services/workflow-verification.ts +68 -0
- package/src/services/workspace-recovery.ts +168 -0
- package/src/services/workspace-task-binding.ts +22 -0
- package/src/settings/modules.ts +149 -0
- package/src/settings/registry.ts +629 -0
- package/src/settings/user-settings.ts +81 -0
- package/src/setup.ts +199 -0
- package/src/shared-mcp.ts +87 -0
- package/src/shutdown.ts +33 -0
- package/src/spawn-admission.ts +48 -0
- package/src/spawn-budget.ts +18 -0
- package/src/spawn-command.ts +373 -0
- package/src/spawn-env.ts +27 -0
- package/src/spawn-intent.ts +17 -0
- package/src/spawn-lease.ts +41 -0
- package/src/spawn-models.ts +22 -0
- package/src/spawn-placement.ts +348 -0
- package/src/spawn-profile-errors.ts +9 -0
- package/src/spawn-quota.ts +15 -0
- package/src/spawn-targets.ts +679 -0
- package/src/sse-agent-status.ts +35 -0
- package/src/sse-outbox-cursor.ts +28 -0
- package/src/sse-visibility.ts +36 -0
- package/src/sse.ts +684 -0
- package/src/startup-context-injection.ts +518 -0
- package/src/startup-timing.ts +30 -0
- package/src/state-adoption/artifacts.ts +27 -0
- package/src/state-adoption/cd-cutover.ts +125 -0
- package/src/state-adoption/files.ts +31 -0
- package/src/state-adoption/index.ts +166 -0
- package/src/state-adoption/linux-plan.ts +67 -0
- package/src/state-adoption/linux.ts +104 -0
- package/src/state-adoption/macos-plan.ts +58 -0
- package/src/state-adoption/macos.ts +112 -0
- package/src/steward-claim-release.ts +38 -0
- package/src/steward-handoff.ts +28 -0
- package/src/steward-identity.ts +54 -0
- package/src/steward-policy-cleanup.ts +222 -0
- package/src/steward-policy-model-reconcile.ts +33 -0
- package/src/steward-policy-name.ts +13 -0
- package/src/steward-provenance.ts +59 -0
- package/src/steward-queue.ts +85 -0
- package/src/steward-slot-recovery.ts +34 -0
- package/src/steward-spawn-guard.ts +344 -0
- package/src/steward.test-fixture.ts +11 -0
- package/src/steward.ts +199 -0
- package/src/stream-proxy.ts +84 -0
- package/src/task-authz.ts +40 -0
- package/src/task-completion.ts +39 -0
- package/src/task-dispatch-live.ts +70 -0
- package/src/task-dispatcher-ranking.ts +136 -0
- package/src/task-dispatcher.ts +841 -0
- package/src/task-owner-notices.ts +35 -0
- package/src/task-owner.ts +63 -0
- package/src/task-plan-status.ts +21 -0
- package/src/task-verification.ts +35 -0
- package/src/team-idle-tracker.ts +39 -0
- package/src/team-template-config.ts +100 -0
- package/src/teams-config-store.ts +22 -0
- package/src/terminal-authz.ts +49 -0
- package/src/token-db-write.ts +44 -0
- package/src/token-db.ts +487 -0
- package/src/token-usage-async.ts +40 -0
- package/src/transport-subscriptions.ts +57 -0
- package/src/types.ts +1 -0
- package/src/upgrade-install-verify.ts +179 -0
- package/src/upgrade-local-id.ts +3 -0
- package/src/upgrade-services.ts +125 -0
- package/src/upgrade.ts +1006 -0
- package/src/user-awaiting-reply.ts +42 -0
- package/src/user-path.ts +246 -0
- package/src/user-settings-async.ts +33 -0
- package/src/user-settings-store.ts +106 -0
- package/src/user-style.ts +83 -0
- package/src/utils.ts +42 -0
- package/src/validation.ts +324 -0
- package/src/vault-backup-config.ts +28 -0
- package/src/vault-expiry-config.ts +12 -0
- package/src/versioned-prompts.ts +57 -0
- package/src/workflow-capabilities.ts +10 -0
- package/src/workflow-prompt-templates.ts +20 -0
- package/src/workspace-action-audit.ts +42 -0
- package/src/workspace-actions.ts +689 -0
- package/src/workspace-auto-merge.ts +1055 -0
- package/src/workspace-changed-paths-client.ts +97 -0
- package/src/workspace-claim.ts +45 -0
- package/src/workspace-cleanup-settle.ts +51 -0
- package/src/workspace-cleanup-stale.ts +231 -0
- package/src/workspace-command-settle.ts +589 -0
- package/src/workspace-config.ts +7 -0
- package/src/workspace-conflict-resolver.ts +182 -0
- package/src/workspace-dead-owner-recovery.ts +19 -0
- package/src/workspace-delivery-tip.ts +51 -0
- package/src/workspace-escalation.ts +107 -0
- package/src/workspace-git-state-client.ts +42 -0
- package/src/workspace-host-client.ts +86 -0
- package/src/workspace-host-target.ts +5 -0
- package/src/workspace-host.ts +61 -0
- package/src/workspace-human-escalation.ts +70 -0
- package/src/workspace-land-gate-watchdog.ts +76 -0
- package/src/workspace-land-gate.ts +99 -0
- package/src/workspace-land-result.ts +12 -0
- package/src/workspace-land-retry.ts +82 -0
- package/src/workspace-land-stopped.ts +57 -0
- package/src/workspace-merge-dispatch.ts +27 -0
- package/src/workspace-merge-progress.ts +369 -0
- package/src/workspace-merge-retry-policy.ts +59 -0
- package/src/workspace-merge.ts +614 -0
- package/src/workspace-nothing-to-land-notice.ts +27 -0
- package/src/workspace-orphans.ts +927 -0
- package/src/workspace-phase.ts +507 -0
- package/src/workspace-pr-completion.ts +285 -0
- package/src/workspace-probe.ts +212 -0
- package/src/workspace-recorded-land.ts +47 -0
- package/src/workspace-recovery-authz.ts +88 -0
- package/src/workspace-rekey.ts +106 -0
- package/src/workspace-steward-authority.ts +16 -0
- package/src/workspace-steward-failure.ts +42 -0
- package/src/workspace-steward-wake.ts +150 -0
- package/src/workspace-steward-watchdog.ts +240 -0
package/src/config.ts
ADDED
|
@@ -0,0 +1,939 @@
|
|
|
1
|
+
import { relayEnv } from "@humwick/sdk/env";
|
|
2
|
+
// Shared runtime constants. Import from here rather than redefining.
|
|
3
|
+
|
|
4
|
+
import { readFileSync } from "node:fs";
|
|
5
|
+
import { homedir } from "node:os";
|
|
6
|
+
import { join, dirname } from "node:path";
|
|
7
|
+
import { fileURLToPath } from "node:url";
|
|
8
|
+
import { DEFAULT_RELAY_URL, RELAY_TOKEN_HEADER } from "@humwick/sdk";
|
|
9
|
+
import { CONTRACT_VERSIONS } from "./contracts";
|
|
10
|
+
import { resolveCliRelayToken } from "./cli/credentials";
|
|
11
|
+
|
|
12
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, "../package.json"), "utf8"));
|
|
14
|
+
export const VERSION: string = pkg.version;
|
|
15
|
+
export const ORCHESTRATOR_PROTOCOL_VERSION = CONTRACT_VERSIONS.orchestratorProtocol;
|
|
16
|
+
|
|
17
|
+
/** One-time plan blurb migration can be inspected without changing persisted data. */
|
|
18
|
+
export function planBlurbMigrationDryRun(): boolean {
|
|
19
|
+
return relayEnv(process.env, "AGENT_RELAY_PLAN_BLURB_MIGRATION_DRY_RUN") === "1";
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function checkoutRefreshEnabled(): boolean { return relayEnv(process.env, "AGENT_RELAY_CHECKOUT_REFRESH") === "1"; }
|
|
23
|
+
|
|
24
|
+
/** #2982 — log the profile slim-down migration's plan at startup instead of applying it. */
|
|
25
|
+
export function profileSlimMigrationDryRun(): boolean {
|
|
26
|
+
return relayEnv(process.env, "AGENT_RELAY_PROFILE_SLIM_MIGRATION_DRY_RUN") === "1";
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function versionedPromptsEnabled(): boolean {
|
|
30
|
+
return relayEnv(process.env, "AGENT_RELAY_VERSIONED_PROMPTS") !== "0";
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* #1963 N10 — makes the migrated v2 Source × Capability matrix the AUTHORITATIVE profile read.
|
|
35
|
+
* Default OFF for one release: while off, `builtInProfileEntry` serves the pristine
|
|
36
|
+
* `agent-profile-override-v1-backup` bytes, so the override migration is byte-invisible and reversible.
|
|
37
|
+
* Read dynamically (not a module const) so the flag can be flipped per-profile during a live rollout
|
|
38
|
+
* (order reviewer → worker/coordinator).
|
|
39
|
+
*/
|
|
40
|
+
export function profileMatrixEnabled(): boolean {
|
|
41
|
+
return relayEnv(process.env, "AGENT_RELAY_PROFILE_MATRIX") === "1";
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** #2932: relay_plan_create refuses a plan without acceptance unless AGENT_RELAY_PLAN_ACCEPTANCE=0. Read at call time. */
|
|
45
|
+
export function planAcceptanceRequired(): boolean {
|
|
46
|
+
return relayEnv(process.env, "AGENT_RELAY_PLAN_ACCEPTANCE") !== "0";
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export const DAY_MS = 86_400_000;
|
|
50
|
+
function envPositiveInt(name: string, fallback: number): number {
|
|
51
|
+
const raw = relayEnv(process.env, name);
|
|
52
|
+
if (!raw) return fallback;
|
|
53
|
+
const parsed = Number(raw);
|
|
54
|
+
if (!Number.isFinite(parsed) || parsed <= 0) return fallback;
|
|
55
|
+
return Math.floor(parsed);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** Like `envPositiveInt` but 0 is a MEANINGFUL value (a disable switch), not a fall-through. */
|
|
59
|
+
function envNonNegativeInt(name: string, fallback: number): number {
|
|
60
|
+
const raw = relayEnv(process.env, name);
|
|
61
|
+
if (raw === undefined || raw === "") return fallback;
|
|
62
|
+
const parsed = Number(raw);
|
|
63
|
+
if (!Number.isFinite(parsed) || parsed < 0) return fallback;
|
|
64
|
+
return Math.floor(parsed);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function envNumberOrDefault(name: string, fallback: number): number {
|
|
68
|
+
return Number(relayEnv(process.env, name)) || fallback;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function envNonNegativeNumber(name: string, fallback: number): number {
|
|
72
|
+
// Number("") is 0: an empty/blank value must fall back, never become a zero budget.
|
|
73
|
+
const raw = relayEnv(process.env, name)?.trim();
|
|
74
|
+
if (!raw) return fallback;
|
|
75
|
+
const parsed = Number(raw);
|
|
76
|
+
return Number.isFinite(parsed) && parsed >= 0 ? parsed : fallback;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function envPositiveNumber(name: string, fallback: number): number {
|
|
80
|
+
const parsed = envNonNegativeNumber(name, fallback);
|
|
81
|
+
return parsed > 0 ? parsed : fallback;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function envSafePositiveInteger(name: string, fallback: number): number {
|
|
85
|
+
const raw = relayEnv(process.env, name);
|
|
86
|
+
if (!raw) return fallback;
|
|
87
|
+
const parsed = Number(raw);
|
|
88
|
+
return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : fallback;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function envTrimmed(name: string): string {
|
|
92
|
+
return (relayEnv(process.env, name) || "").trim();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function envTrimmedOrUndefined(name: string): string | undefined {
|
|
96
|
+
const value = relayEnv(process.env, name)?.trim();
|
|
97
|
+
return value || undefined;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export const STALE_TTL_MS = envPositiveInt("STALE_TTL_MS", 120_000); // 2min without heartbeat → offline
|
|
101
|
+
// Observation horizon for agent-initiated spawns whose runner has not registered with Relay.
|
|
102
|
+
// This is deliberately non-terminal: a late runner can still register. The invariant it rests on —
|
|
103
|
+
// the watchdog judges only a row that has already STOPPED — used to be maintained by keeping this
|
|
104
|
+
// horizon above the command TTL. #2275 made the spawn execution lease longer than this horizon (it
|
|
105
|
+
// is derived from the orchestrator's real ~13min budget), so the ordering is now enforced directly
|
|
106
|
+
// at the watchdog instead: a non-terminal spawn row inside its lease is skipped outright
|
|
107
|
+
// (spawnRowStillRunning, services/spawn-registration-watchdog.ts). This horizon therefore still
|
|
108
|
+
// measures a settled row, exactly as before, and a healthy long launch is never judged mid-flight.
|
|
109
|
+
export const SPAWN_REGISTRATION_DEADLINE_MS = envPositiveInt("AGENT_RELAY_SPAWN_REGISTRATION_DEADLINE_MS", 300_000);
|
|
110
|
+
export const SPAWN_REGISTRATION_NOTIFY_MAX_AGE_MS = envPositiveInt("AGENT_RELAY_SPAWN_REGISTRATION_NOTIFY_MAX_AGE_MS", 15 * 60_000);
|
|
111
|
+
// #2104 — the SHORT deadline for a spawn whose loss is CONFIRMED (never dispatched, or its claiming
|
|
112
|
+
// orchestrator process restarted): those need no observation horizon at all, only a small grace so a
|
|
113
|
+
// claim/register interleaving inside one tick can't be misread as a loss. Deliberately well below
|
|
114
|
+
// SPAWN_REGISTRATION_DEADLINE_MS — the 300s horizon exists for the AMBIGUOUS "may still start" case,
|
|
115
|
+
// and making a provably-dead spawn wait it out is exactly the multi-minute silent limbo #2104 is about.
|
|
116
|
+
export const SPAWN_LOST_ESCALATION_DEADLINE_MS = envPositiveInt("AGENT_RELAY_SPAWN_LOST_ESCALATION_DEADLINE_MS", 30_000);
|
|
117
|
+
// #2104 round 3 — the grace an owning orchestrator's `offline` status must clear, MEASURED FROM ITS
|
|
118
|
+
// LAST HEARTBEAT (not from the moment the reaper flips `status`), before a claimed spawn under it is
|
|
119
|
+
// fail-fast'd. `status === "offline"` alone is NOT safe to fail-fast on: STALE_TTL_MS (120s) is a
|
|
120
|
+
// heartbeat-loss detector, not a liveness verdict, and a ROUTINE relay restart makes every
|
|
121
|
+
// orchestrator's heartbeat go stale AT ONCE while it reconnects — observed reconnect gaps run up to
|
|
122
|
+
// ~150s, comfortably past STALE_TTL_MS. Fail-fasting at the 120s reaper mark would terminal-fail a
|
|
123
|
+
// healthy spawn on every ordinary CD deploy.
|
|
124
|
+
//
|
|
125
|
+
// 450s, not 300s (round-3 re-review): this is the TOTAL upgrade-in-flight window a legitimate deploy
|
|
126
|
+
// can occupy, not a bare "how long a restart takes" estimate — release verification itself polls up to
|
|
127
|
+
// MAX_POLLS=90 x 5s = 450s (scripts/release.ts) before it gives up on a slow-re-attesting host, and
|
|
128
|
+
// that whole span can pass with the orchestrator's heartbeat stale before it either lands or the deploy
|
|
129
|
+
// itself times out. 300s (300s ≈ the restart/reconnect gap alone, no re-attestation slack) had ZERO
|
|
130
|
+
// headroom against that documented ceiling. Safety over speed here: a false-fail of a HEALTHY spawn
|
|
131
|
+
// during the frequent CD restarts this floor is guarding against is worse than a slower genuine-loss
|
|
132
|
+
// detection — a sub-minute safe fail needs #2094's claimInstanceId liveness signal (a definitive
|
|
133
|
+
// same-process-or-not fact, not an elapsed-time guess) instead; this floor is the interim backstop
|
|
134
|
+
// until that signal is wired into spawn-loss escalation too (currently only the merge reclaim in
|
|
135
|
+
// commands-db.ts/merge-drain.ts consumes it).
|
|
136
|
+
export const SPAWN_EXECUTOR_OFFLINE_ESCALATION_GRACE_MS = envPositiveInt("AGENT_RELAY_SPAWN_EXECUTOR_OFFLINE_ESCALATION_GRACE_MS", 450_000);
|
|
137
|
+
// #1304 — max member cards serialized into a `relay_team_get` payload. A long-lived coordinator's
|
|
138
|
+
// team accumulates every worker it ever spawned (the roster row survives the agent going offline),
|
|
139
|
+
// so an unbounded roster — and the whole team payload — grows across a session until it can blow the
|
|
140
|
+
// MCP result token cap and hard-error the caller's team fetch. The contract is a *live* roster:
|
|
141
|
+
// live members are always kept, then the most-recently-seen offline members fill the remaining
|
|
142
|
+
// budget; anything past the cap is reported (not silently dropped) via the payload's rosterSummary.
|
|
143
|
+
export const MAX_TEAM_ROSTER_ENTRIES = envPositiveInt("AGENT_RELAY_MAX_TEAM_ROSTER_ENTRIES", 50);
|
|
144
|
+
// #451 — default TTL for fire-and-forget FAN-OUT messages (broadcast/tag/cap/label/team) that the
|
|
145
|
+
// sender didn't bound. A stale fan-out push must not wake an agent that matches the target hours
|
|
146
|
+
// later (the cold-session-woken-by-old-coordination-thread bug). Direct DMs, reply-obligations, and
|
|
147
|
+
// claimable work are exempt (never auto-expire) so store-ahead (#234) still delivers them.
|
|
148
|
+
export const DEFAULT_FANOUT_TTL_SECONDS = envPositiveInt("AGENT_RELAY_FANOUT_TTL_SECONDS", 2 * 60 * 60); // 2h
|
|
149
|
+
export const OFFLINE_PRUNE_MS = envPositiveInt("OFFLINE_PRUNE_MS", DAY_MS); // 24h offline → delete
|
|
150
|
+
export const REAP_INTERVAL_MS = envPositiveInt("REAP_INTERVAL_MS", 60_000); // reaper cadence
|
|
151
|
+
// #1468 — heartbeat presence write-coalescing flush interval. The buffered `last_seen` advance is
|
|
152
|
+
// persisted at most this often (one batched UPDATE for the whole dirty set), so max-staleness of a
|
|
153
|
+
// live agent's persisted last_seen ≤ this. Kept FAR below STALE_TTL_MS (120s) — 24× margin at the
|
|
154
|
+
// 5s default — so the stale reaper never mis-reaps a coalesced-but-live agent. Presence-critical
|
|
155
|
+
// transitions (status change / resurrection) bypass the buffer and write synchronously.
|
|
156
|
+
export const PRESENCE_FLUSH_MS = envPositiveInt("AGENT_RELAY_PRESENCE_FLUSH_MS", 5_000);
|
|
157
|
+
// #2111 — how long the hot lifecycle/registration writes (agents.setStatus, agents.markReady,
|
|
158
|
+
// orchestrators.heartbeat, hosts.upsertFromRegistration) are buffered before being submitted to the
|
|
159
|
+
// writer as ONE batch job. A fleet reconnection storm otherwise costs one BEGIN IMMEDIATE per event
|
|
160
|
+
// on the main loop. Deliberately tiny — 3 orders of magnitude under STALE_TTL_MS (120s) and 200×
|
|
161
|
+
// under PRESENCE_FLUSH_MS — so no liveness/staleness decision can shift because of it. Set to 0 to
|
|
162
|
+
// disable buffering and write straight through (the pre-#2111 behavior).
|
|
163
|
+
export const LIFECYCLE_WRITE_WINDOW_MS = envNonNegativeInt("AGENT_RELAY_LIFECYCLE_WRITE_WINDOW_MS", 25);
|
|
164
|
+
export const STUCK_BUSY_THRESHOLD_MS = envPositiveInt("AGENT_RELAY_STUCK_BUSY_THRESHOLD_MS", 15 * 60_000);
|
|
165
|
+
export const STUCK_BUSY_PROVIDER_TURN_MS = envPositiveInt("AGENT_RELAY_STUCK_BUSY_PROVIDER_TURN_MS", STUCK_BUSY_THRESHOLD_MS);
|
|
166
|
+
export const STUCK_BUSY_STARTUP_MS = envPositiveInt("AGENT_RELAY_STUCK_BUSY_STARTUP_MS", STUCK_BUSY_THRESHOLD_MS);
|
|
167
|
+
export const STUCK_BUSY_RECONNECT_MS = envPositiveInt("AGENT_RELAY_STUCK_BUSY_RECONNECT_MS", STUCK_BUSY_THRESHOLD_MS);
|
|
168
|
+
export const STUCK_BUSY_SHUTDOWN_MS = envPositiveInt("AGENT_RELAY_STUCK_BUSY_SHUTDOWN_MS", STUCK_BUSY_THRESHOLD_MS);
|
|
169
|
+
// #2043 F3 — the hard-backstop force-compact normally waits for the agent to be idle (a busy agent's
|
|
170
|
+
// typed /compact could queue as chat). But a RUNAWAY agent is precisely one stuck busy, so cap that
|
|
171
|
+
// busy-defer: once the agent has been over the hard-backstop threshold for this long while still
|
|
172
|
+
// busy, force the compaction anyway. F1 makes the forced compact safe even mid-turn (the runner
|
|
173
|
+
// waits for the live turn to clear before submitting the keystrokes, so they can't queue as chat).
|
|
174
|
+
export const HARD_BACKSTOP_BUSY_GRACE_MS = envPositiveInt("AGENT_RELAY_HARD_BACKSTOP_BUSY_GRACE_MS", 2 * 60_000);
|
|
175
|
+
// ADR 0002 §6.5 (#895 acceptance item 6, "NO HARDCODING") — every threshold `hostPressureBand()`
|
|
176
|
+
// (§5.2) consults, resolved here with the documented defaults as fallbacks. `sampleStalenessMs` is
|
|
177
|
+
// the ONE staleness constant (RC-11): the admission gate's freshness bound (2×) and the band's
|
|
178
|
+
// `unknown` threshold (3×) are DERIVED from it in the SDK, never separately tuned — two
|
|
179
|
+
// independently-drifting staleness numbers is how a host reports `normal` while the gate degrades.
|
|
180
|
+
// Deliberately a plain object rather than a frozen import in src/host/: keeping env parsing in this
|
|
181
|
+
// one module is what lets H9's settings screen replace the source without touching the ladder.
|
|
182
|
+
export const HOST_BAND_CONFIG = {
|
|
183
|
+
// 30s, NOT the orchestrator's 15s sampling cadence, because this is a TRANSPORT-side bound: a
|
|
184
|
+
// sample reaches the relay on the 30s heartbeat, and it can already be one sampler tick old when
|
|
185
|
+
// the beat leaves. Worst-case age just before the next beat is therefore ~45s on a perfectly
|
|
186
|
+
// healthy host — which a 15s constant would flag stale at 3x, flapping every host in the fleet
|
|
187
|
+
// between healthy and degraded forever. At 30s the ladder means "missed two beats", which is a
|
|
188
|
+
// real signal. The gate's own 15s constant is unaffected: it ages a LOCAL refinement against a
|
|
189
|
+
// local probe with no network in between.
|
|
190
|
+
sampleStalenessMs: envPositiveInt("AGENT_RELAY_HOST_SAMPLE_STALENESS_MS", 30_000),
|
|
191
|
+
trendMinSamples: envPositiveInt("AGENT_RELAY_HOST_TREND_MIN_SAMPLES", 20),
|
|
192
|
+
trendRisingSlope: envNonNegativeNumber("AGENT_RELAY_HOST_TREND_RISING_SLOPE", 0.1),
|
|
193
|
+
idleLoadPerCpu: envNonNegativeNumber("AGENT_RELAY_HOST_IDLE_LOAD_PER_CPU", 0.25),
|
|
194
|
+
busyLoadPerCpu: envNonNegativeNumber("AGENT_RELAY_HOST_BUSY_LOAD_PER_CPU", 0.7),
|
|
195
|
+
saturatedLoadPerCpu: envNonNegativeNumber("AGENT_RELAY_HOST_SATURATED_LOAD_PER_CPU", 1),
|
|
196
|
+
minFreeMemMb: envPositiveInt("AGENT_RELAY_HOST_MIN_FREE_MEM_MB", 1_024),
|
|
197
|
+
busyFreeMemMb: envPositiveInt("AGENT_RELAY_HOST_BUSY_FREE_MEM_MB", 3_072),
|
|
198
|
+
swapUsedSaturatedPct: envNonNegativeNumber("AGENT_RELAY_HOST_SWAP_SATURATED_PCT", 0.6),
|
|
199
|
+
diskFreeBusyMb: envPositiveInt("AGENT_RELAY_HOST_DISK_BUSY_FREE_MB", 10_240),
|
|
200
|
+
diskFreeSaturatedMb: envPositiveInt("AGENT_RELAY_HOST_DISK_SATURATED_FREE_MB", 2_048),
|
|
201
|
+
};
|
|
202
|
+
// #2694 — the default per-host live-agent cap when the operator sets no `policy.maxAgents`:
|
|
203
|
+
// min(physical cores × agentsPerCore, total RAM / memMbPerAgent), never below 1.
|
|
204
|
+
export const HOST_AGENT_CAP_CONFIG = {
|
|
205
|
+
agentsPerCore: envPositiveNumber("AGENT_RELAY_HOST_AGENTS_PER_CORE", 2),
|
|
206
|
+
memMbPerAgent: envPositiveInt("AGENT_RELAY_HOST_MEM_MB_PER_AGENT", 2_048),
|
|
207
|
+
};
|
|
208
|
+
export const EVENT_LOOP_LAG_SAMPLE_MS = envPositiveInt("AGENT_RELAY_EVENT_LOOP_LAG_SAMPLE_MS", 1_000);
|
|
209
|
+
// #1055 invariant: retain STRICTLY MORE than one reaper interval of lag history. The
|
|
210
|
+
// stale/bus reaper reads the cumulative lag grace once per REAP_INTERVAL_MS; if the ring
|
|
211
|
+
// held only one interval's worth (the old 60×1s == 60s == REAP_INTERVAL coincidence),
|
|
212
|
+
// the oldest stall samples could rotate out the instant before the first post-recovery
|
|
213
|
+
// reaper run and collapse the grace exactly when it's needed. Keep a half-interval margin
|
|
214
|
+
// (1.5× reaper interval) so recent overload always survives to the next reaper tick.
|
|
215
|
+
export const EVENT_LOOP_LAG_WINDOW_SAMPLES = envPositiveInt(
|
|
216
|
+
"AGENT_RELAY_EVENT_LOOP_LAG_WINDOW_SAMPLES",
|
|
217
|
+
Math.ceil((REAP_INTERVAL_MS / EVENT_LOOP_LAG_SAMPLE_MS) * 1.5),
|
|
218
|
+
);
|
|
219
|
+
export const EVENT_LOOP_LAG_WARN_MS = envNonNegativeNumber("AGENT_RELAY_EVENT_LOOP_LAG_WARN_MS", 250);
|
|
220
|
+
export const EVENT_LOOP_LAG_LOG_MS = envNonNegativeNumber("AGENT_RELAY_EVENT_LOOP_LAG_LOG_MS", EVENT_LOOP_LAG_WARN_MS);
|
|
221
|
+
// #1883 (S7, ADR 0001 §10) — the PERCENTILE window, deliberately SEPARATE from the #1055 ring above.
|
|
222
|
+
// Two different questions need two different windows and one ring cannot serve both:
|
|
223
|
+
// - EVENT_LOOP_LAG_WINDOW_SAMPLES (90 @1s) answers "how much heartbeat debt just accumulated" for
|
|
224
|
+
// the reaper's grace. Widening it would silently widen `eventLoopLagGraceMs()` — the SUM over the
|
|
225
|
+
// ring — and with it the stale-reaper grace. That is a behaviour change to reaping, not a metric.
|
|
226
|
+
// - this window answers "is loop lag SUSTAINED under the p99 target". At 90 samples the 99th
|
|
227
|
+
// percentile is the 1st-worst sample, i.e. indistinguishable from `maxMs` — a single GC pause
|
|
228
|
+
// would read as a p99 breach. p99 only becomes a percentile (rather than a max in disguise) once
|
|
229
|
+
// n ≫ 100.
|
|
230
|
+
// 15 minutes (900 samples @1s) is the choice: the top 1% is then the ~9th-worst sample, so one-off
|
|
231
|
+
// jitter cannot move it while a genuinely degraded period does; it spans several reaper intervals and
|
|
232
|
+
// a full maintenance cycle, which is what "sustained" means for this epic; and it costs one 900-entry
|
|
233
|
+
// Float64Array (7.2 KB, fixed) with an O(1) hot-path write. Raise it for a longer sustained view;
|
|
234
|
+
// the memory cost is linear and the read cost is an O(n log n) sort on the health poll only.
|
|
235
|
+
export const EVENT_LOOP_LAG_PERCENTILE_WINDOW_SAMPLES = envPositiveInt(
|
|
236
|
+
"AGENT_RELAY_EVENT_LOOP_LAG_PERCENTILE_WINDOW_SAMPLES",
|
|
237
|
+
Math.ceil((15 * 60_000) / EVENT_LOOP_LAG_SAMPLE_MS),
|
|
238
|
+
);
|
|
239
|
+
// The S7 exit criterion itself, from ADR 0001 §10 ("Event-loop-lag p99 becomes a tight, enforceable
|
|
240
|
+
// tripwire (S7 #1883 exit criterion: p99 < 100 ms)") and §5. Config, not a literal, so #1883 can
|
|
241
|
+
// tighten it without a code change. REPORTED ONLY at this stage: it rides the health payload as a
|
|
242
|
+
// metric so the exit criterion can be evaluated, and deliberately does NOT move the health check's
|
|
243
|
+
// status — pre-seam (S2/S3 not landed) p99 is EXPECTED to breach, so warning on it now would pin
|
|
244
|
+
// every relay's health to `warn` and train operators to ignore it. #1883 owns flipping it to a gate.
|
|
245
|
+
export const EVENT_LOOP_LAG_P99_TARGET_MS = envNonNegativeNumber("AGENT_RELAY_EVENT_LOOP_LAG_P99_TARGET_MS", 100);
|
|
246
|
+
// #1724 stage 1 — the event-loop-lag circuit breaker. When a maintenance run overlaps a lag sample
|
|
247
|
+
// at or above this threshold, that run takes a breaker "strike": the loop was starved while it ran.
|
|
248
|
+
// Set WELL above EVENT_LOOP_LAG_WARN_MS (which is only a diagnostic warn) so the breaker fires on a
|
|
249
|
+
// genuine freeze — the 60-91s incident shape — not on ordinary jitter. A single spike is not proof:
|
|
250
|
+
// a strike only trips the breaker after MAX_STRIKES of them accumulate (see below).
|
|
251
|
+
export const MAINTENANCE_BREAKER_LAG_MS = envPositiveInt("AGENT_RELAY_MAINTENANCE_BREAKER_LAG_MS", 1_000);
|
|
252
|
+
// Consecutive breaker strikes (a lag spike attributed to the job, OR a run that timed out past its
|
|
253
|
+
// deadline) before the job is auto-paused. Three, not one, for the same reason the critical-job
|
|
254
|
+
// health check waits for two consecutive failures: one freeze can be a GC pause or a one-off; a
|
|
255
|
+
// REPEATEDLY misbehaving job is a pattern worth durably stopping. A clean run resets the count.
|
|
256
|
+
export const MAINTENANCE_BREAKER_MAX_STRIKES = envPositiveInt("AGENT_RELAY_MAINTENANCE_BREAKER_MAX_STRIKES", 3);
|
|
257
|
+
// #1882 (S5, ADR 0001 §5) — Pillar 3: per-callsite on-loop-block attribution + the >50ms regression
|
|
258
|
+
// alarm. Post-seam (S2/S3) the DB runs OFF the loop, so a synchronous on-loop block at/above this
|
|
259
|
+
// threshold is by construction NOT a DB call — it is CPU/fs BETWEEN awaits (a stray site that slipped
|
|
260
|
+
// the ratchet, or heavy in-loop CPU). It is therefore anomalous and self-diagnosing: it names its
|
|
261
|
+
// originating `file:line` and ALARMS as a REGRESSION (routed to the escalation sink), not a passive
|
|
262
|
+
// console.warn. This is the runtime tripwire the S7 #1883 p99 loop-lag exit criterion depends on.
|
|
263
|
+
export const ON_LOOP_BLOCK_REGRESSION_MS = envNonNegativeNumber("AGENT_RELAY_ON_LOOP_BLOCK_REGRESSION_MS", 50);
|
|
264
|
+
// A synchronous frame at/above this is RECORDED (with its attributed callsite) into the overlap ring
|
|
265
|
+
// the lag attributor queries — so a block just over the regression threshold is composed of ring
|
|
266
|
+
// frames the attributor can name. Deliberately WELL below the regression threshold. Sub-floor frames
|
|
267
|
+
// (the overwhelming majority of loop turns) pay only two monotonic-clock reads and a subtract — no
|
|
268
|
+
// allocation, no ring write — so the tripwire is cheap enough to leave armed in production.
|
|
269
|
+
export const ON_LOOP_BLOCK_RECORD_MS = envNonNegativeNumber("AGENT_RELAY_ON_LOOP_BLOCK_RECORD_MS", 5);
|
|
270
|
+
// Bounded ring of recently-recorded frames. A residual on-loop block is RARE post-seam, so this stays
|
|
271
|
+
// tiny; it is a diagnostic overlap buffer, not a metrics store.
|
|
272
|
+
export const ON_LOOP_BLOCK_RING_SIZE = envPositiveInt("AGENT_RELAY_ON_LOOP_BLOCK_RING_SIZE", 64);
|
|
273
|
+
// Maintenance health warns when measured main-thread block time exceeds this budget.
|
|
274
|
+
export const MAINTENANCE_BLOCK_BUDGET_MS = envPositiveInt("AGENT_RELAY_MAINTENANCE_BLOCK_BUDGET_MS", 200);
|
|
275
|
+
// #713 — provider-token silence ALONE is not a wedge signal for Claude (long turns, extended
|
|
276
|
+
// thinking, and native compaction all go token-silent while healthy). Before declaring stuck we
|
|
277
|
+
// ALSO require the transport heartbeat to be genuinely dead: no server frame / heartbeat-ack within
|
|
278
|
+
// this window. The runner heartbeats every 30s, so 2min (4 missed beats) is a clear "transport gone"
|
|
279
|
+
// signal, well above jitter and far below the 15min provider threshold — a real wedge (transport dead
|
|
280
|
+
// AND provider silent AND no lifecycle progress) still fires. A live heartbeat ⇒ not wedged.
|
|
281
|
+
export const STUCK_BUSY_TRANSPORT_STALE_MS = envPositiveInt("AGENT_RELAY_STUCK_BUSY_TRANSPORT_STALE_MS", 2 * 60_000);
|
|
282
|
+
// #2036 (#2031 L5) — the agent-hang self-check ladder. Every knob goes through `envPositiveInt`,
|
|
283
|
+
// which REJECTS a non-finite / zero / negative override and falls back to the default: a
|
|
284
|
+
// `baseRungMs` of 0 would make every rung due at elapsed 0 and spin `highestDueRung` forever, so
|
|
285
|
+
// invalid config must degrade to the default rather than reach the decision core (the core clamps
|
|
286
|
+
// again, defensively — see `resolveConfig` in services/agent-hang-watchdog.ts).
|
|
287
|
+
// DEFAULT-OFF, opt in with `AGENT_RELAY_HANG_WATCHDOG=1` (#2036 review GAP 3b): this watchdog wakes
|
|
288
|
+
// agents with `forceDelivery` + wake-true, so the blast radius of a first tick on a live fleet is
|
|
289
|
+
// every idle agent holding an old obligation. It ships dark like the other kernel-class rollouts and
|
|
290
|
+
// gets switched on deliberately after a gate run, not silently at deploy.
|
|
291
|
+
export function agentHangWatchdogEnabled(): boolean {
|
|
292
|
+
return relayEnv(process.env, "AGENT_RELAY_HANG_WATCHDOG") === "1";
|
|
293
|
+
}
|
|
294
|
+
/** R1 fires at this episode age; the ladder doubles from here (R2 = 3×, R3 = 7× …). */
|
|
295
|
+
export const HANG_WATCHDOG_RUNG_BASE_MS = envPositiveInt("AGENT_RELAY_HANG_WATCHDOG_BASE_RUNG_MS", 10 * 60_000);
|
|
296
|
+
/** A genuine agent turn within this window of a delivered rung counts as an ack. */
|
|
297
|
+
export const HANG_WATCHDOG_ACK_WINDOW_MS = envPositiveInt("AGENT_RELAY_HANG_WATCHDOG_ACK_WINDOW_MS", 5 * 60_000);
|
|
298
|
+
/** Consecutive delivered-but-unacked rungs that hand the agent to its coordinator. */
|
|
299
|
+
export const HANG_WATCHDOG_ESCALATE_AFTER_UNACKED = envPositiveInt("AGENT_RELAY_HANG_WATCHDOG_ESCALATE_AFTER_UNACKED", 2);
|
|
300
|
+
export const CLAIM_LEASE_MS = envPositiveInt("AGENT_RELAY_CLAIM_LEASE_MS", 1_800_000); // 30min claim lease
|
|
301
|
+
export const POOL_CLAIM_LEASE_MS = envPositiveInt("AGENT_RELAY_POOL_CLAIM_LEASE_MS", STALE_TTL_MS * 3); // pool binding lease
|
|
302
|
+
// Per-repo merge serialization lease — only one base merge may run at a time per
|
|
303
|
+
// repo. Held from when a workspace.merge command is dispatched until it settles
|
|
304
|
+
// (or this TTL expires, in case the orchestrator never reports back).
|
|
305
|
+
export const WORKSPACE_MERGE_LEASE_MS = envPositiveInt("AGENT_RELAY_WORKSPACE_MERGE_LEASE_MS", 900_000); // 15min
|
|
306
|
+
// Opt-in release/build critical-section pause for relay-owned auto-merge sweeps.
|
|
307
|
+
// This narrows the race window while the release script creates and pushes a tag;
|
|
308
|
+
// expiry is the safety net so a killed holder cannot wedge the repo.
|
|
309
|
+
export const MAIN_MERGE_PAUSE_TTL_MS = envPositiveInt("AGENT_RELAY_MAIN_MERGE_PAUSE_TTL_MS", 5 * 60_000); // 5min
|
|
310
|
+
|
|
311
|
+
// Max body size for any POST/PATCH request (64 KiB).
|
|
312
|
+
export const MAX_BODY_BYTES = 64 * 1024;
|
|
313
|
+
export const INTEGRATION_RATE_LIMIT_PER_MINUTE = envPositiveInt("AGENT_RELAY_INTEGRATION_RATE_LIMIT_PER_MINUTE", 120);
|
|
314
|
+
|
|
315
|
+
export const AUTOMATION_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_AUTOMATION_INTERVAL_MS", 30 * 1000);
|
|
316
|
+
export const SCHEDULER_TICK_MS = envNumberOrDefault("AGENT_RELAY_SCHEDULER_TICK_MS", 5 * 1000);
|
|
317
|
+
export const SCHEDULER_CLAIM_LEASE_MS = envNumberOrDefault("AGENT_RELAY_SCHEDULER_CLAIM_LEASE_MS", 60 * 1000);
|
|
318
|
+
export const SCHEDULER_RETRY_MS = envNumberOrDefault("AGENT_RELAY_SCHEDULER_RETRY_MS", 60 * 1000);
|
|
319
|
+
export const SCHEDULER_MAX_FAILURES = envNumberOrDefault("AGENT_RELAY_SCHEDULER_MAX_FAILURES", 3);
|
|
320
|
+
export const SCHEDULER_MIN_RECURRING_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_SCHEDULER_MIN_RECURRING_INTERVAL_MS", 60 * 1000);
|
|
321
|
+
// Stage 2 of the MESSAGE-authority flip splits the old shared timer budget. Keep the legacy env as
|
|
322
|
+
// the fallback so an existing operator override remains behavior-preserving, while allowing either
|
|
323
|
+
// timer type to be tuned independently from this landing onward.
|
|
324
|
+
const SCHEDULER_LEGACY_MAX_ACTIVE_TIMERS = envNumberOrDefault("AGENT_RELAY_SCHEDULER_MAX_ACTIVE_TIMERS", 100);
|
|
325
|
+
export const SCHEDULER_MAX_ACTIVE_MESSAGE_TIMERS = envNumberOrDefault(
|
|
326
|
+
"AGENT_RELAY_SCHEDULER_MAX_ACTIVE_MESSAGE_TIMERS",
|
|
327
|
+
SCHEDULER_LEGACY_MAX_ACTIVE_TIMERS,
|
|
328
|
+
);
|
|
329
|
+
export const SCHEDULER_MAX_ACTIVE_COMMAND_TIMERS = envNumberOrDefault(
|
|
330
|
+
"AGENT_RELAY_SCHEDULER_MAX_ACTIVE_COMMAND_TIMERS",
|
|
331
|
+
SCHEDULER_LEGACY_MAX_ACTIVE_TIMERS,
|
|
332
|
+
);
|
|
333
|
+
export const SCHEDULER_MAX_PAYLOAD_BYTES = envNumberOrDefault("AGENT_RELAY_SCHEDULER_MAX_PAYLOAD_BYTES", 16 * 1024);
|
|
334
|
+
// Stage 6 MESSAGE-authority coordinator. No operator action is exposed yet; these bounds are used
|
|
335
|
+
// only by internal proof/recovery of an already-journaled shadow cutover.
|
|
336
|
+
export const KERNEL_TIMERS_CUTOVER_TICK_MS = envPositiveInt("AGENT_RELAY_KERNEL_TIMERS_CUTOVER_TICK_MS", 1_000);
|
|
337
|
+
export const KERNEL_TIMERS_CUTOVER_LEASE_MS = envPositiveInt("AGENT_RELAY_KERNEL_TIMERS_CUTOVER_LEASE_MS", 15_000);
|
|
338
|
+
export const KERNEL_TIMERS_CUTOVER_QUIESCE_TIMEOUT_MS = envPositiveInt("AGENT_RELAY_KERNEL_TIMERS_CUTOVER_QUIESCE_TIMEOUT_MS", 30_000);
|
|
339
|
+
export const KERNEL_TIMERS_CUTOVER_WORST_CASE_MS = envPositiveInt("AGENT_RELAY_KERNEL_TIMERS_CUTOVER_WORST_CASE_MS", 60_000);
|
|
340
|
+
export const KERNEL_TIMERS_DUAL_READ_GRACE_MS = envPositiveInt("AGENT_RELAY_KERNEL_TIMERS_DUAL_READ_GRACE_MS", 5 * 60_000);
|
|
341
|
+
// The bus has its own application-level heartbeat and reconnect protocol. Bun's global server
|
|
342
|
+
// idle timeout is a transport-level kill switch (max 255s), so it can flap an otherwise healthy
|
|
343
|
+
// long-lived bus connection when a heartbeat is delayed by host/event-loop pressure (#1367).
|
|
344
|
+
// Zero disables Bun's timeout; operators can still opt into a finite value explicitly.
|
|
345
|
+
export const IDLE_TIMEOUT_SECONDS = envNumberOrDefault("AGENT_RELAY_IDLE_TIMEOUT_SECONDS", 0);
|
|
346
|
+
export const LOG_REQUESTS = relayEnv(process.env, "AGENT_RELAY_LOG_REQUESTS") === "1";
|
|
347
|
+
|
|
348
|
+
const AUTH_TOKEN = relayEnv(process.env, "AGENT_RELAY_TOKEN") || "";
|
|
349
|
+
export const CORS_ORIGINS = (relayEnv(process.env, "AGENT_RELAY_CORS_ORIGINS") || "")
|
|
350
|
+
.split(",")
|
|
351
|
+
.map((origin) => origin.trim())
|
|
352
|
+
.filter(Boolean);
|
|
353
|
+
|
|
354
|
+
export function relayToken(): string {
|
|
355
|
+
return relayEnv(process.env, "AGENT_RELAY_TOKEN") ?? AUTH_TOKEN;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
export function relayAuthHeaders(base: Record<string, string> = {}): Record<string, string> {
|
|
359
|
+
const token = relayToken();
|
|
360
|
+
return token ? { ...base, [RELAY_TOKEN_HEADER]: token } : base;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
// #1024 — origins the orchestrator proxy may forward the relay MASTER token (relayToken()) to.
|
|
364
|
+
// A dynamically-registered orchestrator can carry an attacker-controlled apiUrl; forwarding the
|
|
365
|
+
// master token there leaks full relay admin. This is the defense-in-depth backstop behind the
|
|
366
|
+
// registration lock: even if some path seeds an orchestrator row, the proxy refuses to talk to an
|
|
367
|
+
// untrusted apiUrl at all (never sending the token OR the caller's query string). Explicit
|
|
368
|
+
// operator overrides — comma-separated origins, e.g. "https://orch.example.com".
|
|
369
|
+
export const TRUSTED_ORCHESTRATOR_ORIGINS = (relayEnv(process.env, "AGENT_RELAY_TRUSTED_ORCHESTRATOR_ORIGINS") || "")
|
|
370
|
+
.split(",")
|
|
371
|
+
.map((origin) => origin.trim())
|
|
372
|
+
.filter(Boolean);
|
|
373
|
+
|
|
374
|
+
// A private/LAN/tailnet IP literal — never a public, attacker-reachable address.
|
|
375
|
+
function isPrivateIpLiteral(host: string): boolean {
|
|
376
|
+
const v4 = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(host);
|
|
377
|
+
if (v4) {
|
|
378
|
+
const a = Number(v4[1]), b = Number(v4[2]);
|
|
379
|
+
if (a === 10 || a === 127) return true; // 10.0.0.0/8, loopback
|
|
380
|
+
if (a === 172 && b >= 16 && b <= 31) return true; // 172.16.0.0/12
|
|
381
|
+
if (a === 192 && b === 168) return true; // 192.168.0.0/16
|
|
382
|
+
if (a === 169 && b === 254) return true; // 169.254.0.0/16 link-local
|
|
383
|
+
if (a === 100 && b >= 64 && b <= 127) return true; // 100.64.0.0/10 CGNAT (tailnet)
|
|
384
|
+
return false;
|
|
385
|
+
}
|
|
386
|
+
if (/^f[cd][0-9a-f]*:/.test(host)) return true; // IPv6 ULA fc00::/7
|
|
387
|
+
if (/^fe[89ab][0-9a-f]*:/.test(host)) return true; // IPv6 link-local fe80::/10
|
|
388
|
+
return false;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
// Whether the relay master token may be forwarded to this orchestrator apiUrl (#1024). Trusts
|
|
392
|
+
// loopback, bare single-label hostnames (LAN/MagicDNS — never a public FQDN), private DNS
|
|
393
|
+
// suffixes, private/CGNAT/ULA IP literals, and any explicit AGENT_RELAY_TRUSTED_ORCHESTRATOR_ORIGINS
|
|
394
|
+
// entry. A public IP or public FQDN (e.g. http://attacker.example) is refused unless allowlisted.
|
|
395
|
+
export function isTrustedOrchestratorApiUrl(apiUrl: string | undefined): boolean {
|
|
396
|
+
if (!apiUrl) return false;
|
|
397
|
+
let url: URL;
|
|
398
|
+
try {
|
|
399
|
+
url = new URL(apiUrl);
|
|
400
|
+
} catch {
|
|
401
|
+
return false;
|
|
402
|
+
}
|
|
403
|
+
if (TRUSTED_ORCHESTRATOR_ORIGINS.includes(url.origin)) return true;
|
|
404
|
+
let host = url.hostname.toLowerCase();
|
|
405
|
+
if (host.startsWith("[") && host.endsWith("]")) host = host.slice(1, -1); // unwrap IPv6 literal
|
|
406
|
+
if (host === "localhost" || host === "127.0.0.1" || host === "::1") return true;
|
|
407
|
+
// A bare single-label host (no dot, not an IPv6 literal) is a LAN/MagicDNS name, never public.
|
|
408
|
+
if (!host.includes(".") && !host.includes(":")) return true;
|
|
409
|
+
if (/\.(local|internal|lan|home|ts\.net|tailnet)$/.test(host)) return true;
|
|
410
|
+
return isPrivateIpLiteral(host);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
export function allowUnauthenticated(): boolean {
|
|
414
|
+
return relayEnv(process.env, "AGENT_RELAY_ALLOW_UNAUTH") === "1";
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
export function tokenSecretFromEnv(): string | undefined {
|
|
418
|
+
return relayEnv(process.env, "AGENT_RELAY_TOKEN_SECRET");
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
export function corsOriginsFromEnv(): string[] | undefined {
|
|
422
|
+
const raw = relayEnv(process.env, "AGENT_RELAY_CORS_ORIGINS");
|
|
423
|
+
if (raw === undefined) return undefined;
|
|
424
|
+
return raw.split(",").map((origin) => origin.trim()).filter(Boolean);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
export function connectorsDirFromEnv(): string | undefined {
|
|
428
|
+
return relayEnv(process.env, "AGENT_RELAY_CONNECTORS_DIR");
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
export function connectorRelayUrl(): string {
|
|
432
|
+
const url = new URL(DEFAULT_RELAY_URL);
|
|
433
|
+
url.port = String(Number(process.env.PORT) || Number(url.port));
|
|
434
|
+
return url.origin;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/** Source repo for a symlink-runtime self-upgrade's gitSha attestation (#1457). */
|
|
438
|
+
export function artifactRepoUrlFromEnv(): string | undefined {
|
|
439
|
+
return relayEnv(process.env, "AGENT_RELAY_ARTIFACT_REPO");
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
export function connectorActionTimeoutMs(fallback: number): number {
|
|
443
|
+
const raw = Number(relayEnv(process.env, "AGENT_RELAY_CONNECTOR_ACTION_TIMEOUT_MS"));
|
|
444
|
+
return Number.isFinite(raw) && raw > 0 ? raw : fallback;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
export function rateLimitFallbackMs(): number {
|
|
448
|
+
return envNumberOrDefault("AGENT_RELAY_RATE_LIMIT_FALLBACK_MS", 60 * 60 * 1000);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
export function artifactsDir(): string {
|
|
452
|
+
return relayEnv(process.env, "AGENT_RELAY_ARTIFACTS_DIR") || "~/.agent-relay/artifacts";
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
export const OUTBOX_RETENTION_MS = envNumberOrDefault("AGENT_RELAY_OUTBOX_RETENTION_MS", 60 * 60 * 1000);
|
|
456
|
+
// Per-provider quota history retention (#609) — durable burn-rate history for the sparkline/analytics
|
|
457
|
+
// charts (#607/#608). Default 30 days; the quota-history-prune maintenance reaper drops older entries.
|
|
458
|
+
export const QUOTA_HISTORY_RETENTION_MS = envNumberOrDefault("AGENT_RELAY_QUOTA_HISTORY_RETENTION_MS", 30 * DAY_MS);
|
|
459
|
+
export const QUOTA_HISTORY_PRUNE_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_QUOTA_HISTORY_PRUNE_INTERVAL_MS", 6 * 60 * 60 * 1000);
|
|
460
|
+
// #1959 — listProviderQuotas()/routingSnapshot short-TTL matrix cache. The matrix is ~3 accounts and
|
|
461
|
+
// only changes on a providerQuotas.upsert (which invalidates it immediately regardless of TTL); this
|
|
462
|
+
// just bounds how long a burst of same-scope calls (spawn-sizing, dispatch) reuse one computed matrix.
|
|
463
|
+
export const PROVIDER_QUOTA_MATRIX_CACHE_TTL_MS = envNumberOrDefault("AGENT_RELAY_PROVIDER_QUOTA_MATRIX_CACHE_TTL_MS", 1_000);
|
|
464
|
+
export const CODEX_WHAM_QUOTA_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_CODEX_WHAM_QUOTA_INTERVAL_MS", 5 * 60 * 1000);
|
|
465
|
+
export const CONFLICT_SCAN_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_CONFLICT_SCAN_INTERVAL_MS", 10 * 60 * 1000);
|
|
466
|
+
export const WORKSPACE_RETENTION_MS = envNumberOrDefault("AGENT_RELAY_WORKSPACE_RETENTION_MS", DAY_MS);
|
|
467
|
+
// #1726 — max expired-terminal workspace rows workspaceGC reclaims (deletes) per run. GC can be
|
|
468
|
+
// paused for long stretches, so the expired-terminal backlog (cleaned/merged/abandoned rows past
|
|
469
|
+
// the retention cutoff) can grow large; draining it in one synchronous pass is an unbounded write
|
|
470
|
+
// batch. Bounding it lets an hourly GC clear any backlog over a few cadences instead of one big tick.
|
|
471
|
+
export const WORKSPACE_GC_DELETE_BATCH = envPositiveInt("AGENT_RELAY_WORKSPACE_GC_DELETE_BATCH", 500);
|
|
472
|
+
export const DB_MAINTENANCE_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_DB_MAINTENANCE_INTERVAL_MS", DAY_MS);
|
|
473
|
+
// #3086 — exact sqlite_stat1 rows for EXACT_STATS_TABLES; the hub plans with them from its next start.
|
|
474
|
+
export const DB_PLANNER_STATS_INTERVAL_MS = envPositiveInt("AGENT_RELAY_DB_PLANNER_STATS_INTERVAL_MS", 6 * 60 * 60_000);
|
|
475
|
+
// Lightweight WAL housekeeping is deliberately independent of the daily ANALYZE/VACUUM pass.
|
|
476
|
+
// PASSIVE checkpoints are non-blocking; the optional TRUNCATE attempt is zero-wait and one-shot.
|
|
477
|
+
export const DB_WAL_RECLAIM_INTERVAL_MS = envPositiveInt("AGENT_RELAY_DB_WAL_RECLAIM_INTERVAL_MS", 5 * 60_000);
|
|
478
|
+
/** #3612 — Litestream must seal the WAL before checkpointing; competing checkpoints extend its barrier. */
|
|
479
|
+
export function dbCheckpointOwner(): "relay" | "litestream" {
|
|
480
|
+
const owner = relayEnv(process.env, "AGENT_RELAY_DB_CHECKPOINT_OWNER") ?? "relay";
|
|
481
|
+
if (owner !== "relay" && owner !== "litestream") throw new Error(`Invalid DB checkpoint owner: ${owner}`);
|
|
482
|
+
return owner;
|
|
483
|
+
}
|
|
484
|
+
// #3022 — cadence of the hub's off-loop WAL checkpointer (src/db/wal-checkpointer.ts). Each round copies
|
|
485
|
+
// only the frames committed since the last one, so a short cadence keeps both the WAL and each round small.
|
|
486
|
+
export const DB_WAL_CHECKPOINT_INTERVAL_MS = envPositiveInt("AGENT_RELAY_DB_WAL_CHECKPOINT_INTERVAL_MS", 1000);
|
|
487
|
+
export const DB_WAL_RECLAIM_THRESHOLD_BYTES = envSafePositiveInteger(
|
|
488
|
+
"AGENT_RELAY_DB_WAL_RECLAIM_THRESHOLD_BYTES",
|
|
489
|
+
64 * 1024 * 1024,
|
|
490
|
+
);
|
|
491
|
+
// #2276 — WAL-size alarm arms for the `database-wal` health check. Before this there was NO metric,
|
|
492
|
+
// check or alarm on WAL size anywhere in the server, so a WAL that outgrew its bound was a silent
|
|
493
|
+
// disk fill behind a green dashboard.
|
|
494
|
+
//
|
|
495
|
+
// The arms are set from MEASURED overshoot, not from the nominal ceiling. `wal_autocheckpoint` bounds
|
|
496
|
+
// the WAL only where reader-free instants exist: SQLite rewinds a WAL when a writer finds
|
|
497
|
+
// `nBackfill == mxFrame` and NO reader holds a mark, so a connection pool reading almost
|
|
498
|
+
// continuously leaves almost no instant at which a rewind is possible. Measured against a reader
|
|
499
|
+
// SUBPROCESS at three cadences (60k × 4KB commits; peak WAL / multiple of the nominal ceiling):
|
|
500
|
+
//
|
|
501
|
+
// read every 2ms every 20ms every 100ms
|
|
502
|
+
// pages = 8192 287.8MB (9.0×) 41.1MB (1.3×) 34.9MB (1.1×)
|
|
503
|
+
// pages = 1000 416.5MB (106×) 13.0MB (3.3×) 5.8MB (1.5×)
|
|
504
|
+
//
|
|
505
|
+
// Note the saturating column: heavy overshoot is a property of reader saturation, NOT of the raised
|
|
506
|
+
// ceiling — the 1000-page default overshoots FURTHER there in absolute bytes. So WARN must sit well
|
|
507
|
+
// above a legitimately busy relay or it pages a human for a healthy state; it is a "the bound failed"
|
|
508
|
+
// signal, not a "readers are busy" signal.
|
|
509
|
+
export const DB_WAL_WARN_BYTES = envSafePositiveInteger("AGENT_RELAY_DB_WAL_WARN_BYTES", 512 * 1024 * 1024);
|
|
510
|
+
export const DB_WAL_ERROR_BYTES = envSafePositiveInteger("AGENT_RELAY_DB_WAL_ERROR_BYTES", 1024 * 1024 * 1024);
|
|
511
|
+
/**
|
|
512
|
+
* #2276 — how many CONSECUTIVE `db-wal-reclaim` passes must find the WAL past the WARN arm without
|
|
513
|
+
* reclaiming before the job reports a failure. A single `reclaimed: false` is benign and
|
|
514
|
+
* self-correcting (any reader holding a mark at that instant produces one), so escalating on it would
|
|
515
|
+
* page a human for normal load. At the 5-minute cadence this is ~15 minutes of sustained failure.
|
|
516
|
+
*/
|
|
517
|
+
export const DB_WAL_RECLAIM_FAILURE_STREAK = envPositiveInt("AGENT_RELAY_DB_WAL_RECLAIM_FAILURE_STREAK", 3);
|
|
518
|
+
// #3000 — off by default: VACUUM holds the write lock for the whole file rewrite (minutes on a
|
|
519
|
+
// multi-GB hub DB), and auto_vacuum=0 with a tiny freelist leaves nothing to reclaim. Opt in per host.
|
|
520
|
+
export const DB_VACUUM_EVERY = envNumberOrDefault("AGENT_RELAY_DB_VACUUM_EVERY", 0);
|
|
521
|
+
export const WORKSPACE_REVIEW_TTL_MS = envNumberOrDefault("AGENT_RELAY_WORKSPACE_REVIEW_TTL_MS", 3 * DAY_MS);
|
|
522
|
+
export const WORKSPACE_GC_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_WORKSPACE_GC_INTERVAL_MS", 60 * 60 * 1000);
|
|
523
|
+
export const WORKSPACE_ORPHAN_REAPER_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_WORKSPACE_ORPHAN_REAPER_INTERVAL_MS", 30 * 60 * 1000);
|
|
524
|
+
// #2408 — while a reaper pass leaves probe-bound candidates unvisited (its per-tick batch cap), the
|
|
525
|
+
// next pass reschedules this soon instead of waiting the full interval, so a backlog of stale
|
|
526
|
+
// worktrees drains across many short passes rather than one pass that can approach the breaker's
|
|
527
|
+
// deadline. Comfortably above SCHEDULER_TICK_MS so it lands on a normal tick.
|
|
528
|
+
export const WORKSPACE_ORPHAN_REAPER_BACKLOG_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_WORKSPACE_ORPHAN_REAPER_BACKLOG_INTERVAL_MS", 60 * 1000);
|
|
529
|
+
// #2554 — the fleet-wide stale-workspace cleanup sweep (the cleanupStaleWorkspaces primitive):
|
|
530
|
+
// reclaims isolated workspaces whose owner is dead and whose tree is provably landed/empty/absent —
|
|
531
|
+
// including the dead-owner `active` rows every other sweep skipped. 30 minutes sits between the
|
|
532
|
+
// 10-min conflict scan and the hourly GC; the reclaim is dead-owner + land-safe gated, never
|
|
533
|
+
// age-based (#977 safeguard).
|
|
534
|
+
export const WORKSPACE_STALE_CLEANUP_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_WORKSPACE_STALE_CLEANUP_INTERVAL_MS", 30 * 60 * 1000);
|
|
535
|
+
// #2554 — while a sweep pass leaves probe-budget overflow (`moreWork`), reschedule this soon so a
|
|
536
|
+
// large dead-owner backlog drains across short passes instead of one marathon run.
|
|
537
|
+
export const WORKSPACE_STALE_CLEANUP_BACKLOG_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_WORKSPACE_STALE_CLEANUP_BACKLOG_INTERVAL_MS", 60 * 1000);
|
|
538
|
+
export const WORKSPACE_AUTO_MERGE_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_WORKSPACE_AUTO_MERGE_INTERVAL_MS", CONFLICT_SCAN_INTERVAL_MS);
|
|
539
|
+
export const WORKSPACE_IDLE_REFRESH_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_WORKSPACE_IDLE_REFRESH_INTERVAL_MS", CONFLICT_SCAN_INTERVAL_MS);
|
|
540
|
+
export const ORPHAN_REAPER_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_ORPHAN_REAPER_INTERVAL_MS", 5 * 60 * 1000);
|
|
541
|
+
// #1939 — the CLAUDE.md re-ingest sweep's standing interval. Daily: CLAUDE.md edits are not
|
|
542
|
+
// frequent enough to need faster tracking, and `runOnStart` (see project-claudemd-sweep.ts)
|
|
543
|
+
// already covers the "just deployed / just registered" case without waiting out this interval.
|
|
544
|
+
export const CLAUDEMD_REINGEST_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_CLAUDEMD_REINGEST_INTERVAL_MS", DAY_MS);
|
|
545
|
+
export const STEWARD_WAKE_COOLDOWN_MS = envNumberOrDefault("AGENT_RELAY_STEWARD_WAKE_COOLDOWN_MS", 10 * 60 * 1000);
|
|
546
|
+
// #1440 — a steward hand-off ("🛟 …now with a steward, will land or escalate") is only real if a
|
|
547
|
+
// live steward acts on it. This is the bounded window after which the handoff watchdog re-checks a
|
|
548
|
+
// still-unlanded workspace's steward liveness and re-wakes / escalates if it isn't healthy-running.
|
|
549
|
+
// MUST stay > STEWARD_WAKE_COOLDOWN_MS so a watchdog re-wake is never swallowed by the wake cooldown.
|
|
550
|
+
export const STEWARD_HANDOFF_WATCHDOG_MS = envNumberOrDefault("AGENT_RELAY_STEWARD_HANDOFF_WATCHDOG_MS", 15 * 60 * 1000);
|
|
551
|
+
// #1440 — how many times the watchdog re-wakes an unhealthy steward before escalating to the branch
|
|
552
|
+
// agent's coordinator (or raising a durable "needs a steward, none available" alarm). A provider-hold
|
|
553
|
+
// steward will not recover on re-wake, so this bound is what guarantees escalation instead of a loop.
|
|
554
|
+
export const STEWARD_HANDOFF_REWAKE_MAX = envNumberOrDefault("AGENT_RELAY_STEWARD_HANDOFF_REWAKE_MAX", 2);
|
|
555
|
+
// #2704 — a steward that still looks alive this long after the hand-off, without landing, is not
|
|
556
|
+
// resolving the conflict either: the land goes back to its owner, who may rebase and re-deliver.
|
|
557
|
+
export const STEWARD_HANDOFF_DEADLINE_MS = envNumberOrDefault("AGENT_RELAY_STEWARD_HANDOFF_DEADLINE_MS", 60 * 60 * 1000);
|
|
558
|
+
// #1745 — hard ceiling on how many steward agents may be LIVE for one repo at once (across all
|
|
559
|
+
// hosts). The runaway spiral spawned 8+ codex stewards for a single repo's stranded lands; this cap
|
|
560
|
+
// bounds the blast radius. When the cap is hit a new spawn is denied (the durable hand-off obligation
|
|
561
|
+
// persists and the hand-off watchdog escalates to a human after its re-wake budget) instead of
|
|
562
|
+
// stacking yet another process. Per-(repo,host) dedup still lives in onMessageForPolicy's
|
|
563
|
+
// already-active check; this is the cross-host ceiling on top of it.
|
|
564
|
+
export const MAX_LIVE_STEWARDS_PER_REPO = envNumberOrDefault("AGENT_RELAY_MAX_STEWARDS_PER_REPO", 2);
|
|
565
|
+
// #1761 — fleet-wide hard ceiling on the TOTAL number of LIVE steward agents at once, across every
|
|
566
|
+
// repo and host. The per-repo cap above bounds a single repo's blast radius but not the aggregate:
|
|
567
|
+
// a burst that stranded lands across N repos (e.g. the #1760 command-loop freeze) spawned one steward
|
|
568
|
+
// per repo/host and piled 12 idle stewards fleet-wide, none individually over the per-repo cap. This
|
|
569
|
+
// counts LIVE steward AGENTS (by tag) rather than policy managed-state, so an ORPHANED steward whose
|
|
570
|
+
// managed state was overwritten by a respawn still counts — the exact runaway the per-repo cap missed.
|
|
571
|
+
// At the cap a new spawn is denied (the durable hand-off obligation persists and the hand-off watchdog
|
|
572
|
+
// escalates) instead of stacking another process.
|
|
573
|
+
export const MAX_LIVE_STEWARDS_FLEET = envNumberOrDefault("AGENT_RELAY_MAX_STEWARDS_FLEET", 8);
|
|
574
|
+
// #1761 — the operator's authoritative bound: AT MOST ONE steward per (repo, host). The gate is
|
|
575
|
+
// evaluated per steward policy, which IS a (repo, host), so this is a cap of 1 on live steward AGENTS
|
|
576
|
+
// attributable to that (repo, host) — counting agents (not managed policy state) so a WEDGED steward
|
|
577
|
+
// (stuck `stopping`, alive, invisible to the state-based cap after the 5e0cf070 regression) or an
|
|
578
|
+
// ORPHAN still blocks a duplicate spawn on the same host. The fleet cap above is then a genuine
|
|
579
|
+
// aggregate backstop, not the only bound.
|
|
580
|
+
export const MAX_LIVE_STEWARDS_PER_REPO_HOST = envNumberOrDefault("AGENT_RELAY_MAX_STEWARDS_PER_REPO_HOST", 1);
|
|
581
|
+
// #1761 — bounded forceful re-issue of a steward stop that did not confirm dead. The 5e0cf070 #1725
|
|
582
|
+
// fix-forward left a `stopping` steward pinned INDEFINITELY (never re-issuing the kill) whenever the
|
|
583
|
+
// agent stayed alive/kill-failed; that wedged process is the mechanical cause of the same-host pile-up.
|
|
584
|
+
// After STOP_TIMEOUT_MS with the process still alive, reconcilePolicy re-issues a FORCEFUL stop up to
|
|
585
|
+
// this many times before giving up to `failed` and releasing the handle (the per-(repo,host) agent cap
|
|
586
|
+
// then still bounds any spawn, so releasing the handle can't reopen the #1745 spiral).
|
|
587
|
+
export const MAX_STEWARD_STOP_RETRIES = envNumberOrDefault("AGENT_RELAY_MAX_STEWARD_STOP_RETRIES", 3);
|
|
588
|
+
// How long a managed policy may sit in `starting` before the transition counts as WEDGED (the spawn
|
|
589
|
+
// never reached "running": runner crashed, never registered, host partition). Lives here — not in
|
|
590
|
+
// lifecycle-manager — because the steward per-(repo,host) cap must apply the SAME freshness rule the
|
|
591
|
+
// lifecycle manager's `managedProcessActive` does (#1955, #1953-review nit 3); a stale `starting`
|
|
592
|
+
// counted as live would transiently deny a genuine-conflict steward spawn.
|
|
593
|
+
export const MANAGED_START_TIMEOUT_MS = 120_000;
|
|
594
|
+
// #1761 — the orphan idle-reap grace FLOOR. The reaper's grace is driven by the dashboard-configurable
|
|
595
|
+
// `keepaliveSeconds` (so the operator's "Keepalive seconds" governs the orphan population too, not just
|
|
596
|
+
// tracked stewards); this floor guards against a zero/small keepalive reaping a just-created orphan
|
|
597
|
+
// with no grace at all (the reaper also floors idle-age by the agent's createdAt for the same reason).
|
|
598
|
+
export const STEWARD_ORPHAN_REAP_FLOOR_MS = envNumberOrDefault("AGENT_RELAY_STEWARD_ORPHAN_REAP_FLOOR_MS", 60 * 1000);
|
|
599
|
+
// #1761 — the orphan reaper RATE-LIMITS its retries rather than firing once and giving up: a zombie
|
|
600
|
+
// that ignores the graceful shutdown must be retried (escalating to a FORCEFUL kill) on this cadence,
|
|
601
|
+
// then — because the one-per-(repo,host) cap would otherwise let it silently lock the slot forever —
|
|
602
|
+
// surfaced as an operator alarm after STEWARD_REAP_MAX_ATTEMPTS instead of a silent console.warn.
|
|
603
|
+
export const STEWARD_REAP_RETRY_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_STEWARD_REAP_RETRY_INTERVAL_MS", 2 * 60 * 1000);
|
|
604
|
+
export const STEWARD_REAP_MAX_ATTEMPTS = envNumberOrDefault("AGENT_RELAY_STEWARD_REAP_MAX_ATTEMPTS", 3);
|
|
605
|
+
// #1745 — respawn-rate backstop. A steward that spawns, registers, then dies (e.g. exhausted
|
|
606
|
+
// provider quota) is not a "spawn failure" (it registered), so the policy backoff never engages and
|
|
607
|
+
// the reconcile tick respawns it from `stopped` the moment there is queued work — an unbounded
|
|
608
|
+
// process churn independent of the per-workspace watchdog. Cap actual spawns of one steward policy to
|
|
609
|
+
// STEWARD_SPAWN_RATE_MAX within STEWARD_SPAWN_RATE_WINDOW_MS; further spawns are denied until the
|
|
610
|
+
// window rolls off, so a repeatedly-dying steward can't burn a host or a provider's quota.
|
|
611
|
+
export const STEWARD_SPAWN_RATE_MAX = envNumberOrDefault("AGENT_RELAY_STEWARD_SPAWN_RATE_MAX", 5);
|
|
612
|
+
export const STEWARD_SPAWN_RATE_WINDOW_MS = envNumberOrDefault("AGENT_RELAY_STEWARD_SPAWN_RATE_WINDOW_MS", 10 * 60 * 1000);
|
|
613
|
+
export const STEWARD_CLAIM_TTL_MS = envNumberOrDefault("AGENT_RELAY_WORKSPACE_CLAIM_TTL_MS", 15 * 60_000);
|
|
614
|
+
// #1474 facet 1 — post-land grace. A land CONSUMES the steward's claim, so the moment it finishes
|
|
615
|
+
// the steward loses the claim-bound authorization it needs to report the outcome (what landed) to
|
|
616
|
+
// the coordinator. This bounded window lets the just-landed steward still reach the coordinator for
|
|
617
|
+
// a short time AFTER the land, without granting any standing capability. Kept well under the claim
|
|
618
|
+
// TTL — long enough to file a post-land summary, short enough that it can't be leaned on.
|
|
619
|
+
export const STEWARD_LAND_GRACE_MS = envNumberOrDefault("AGENT_RELAY_STEWARD_LAND_GRACE_MS", 10 * 60_000);
|
|
620
|
+
export const DB_SLOW_QUERY_MS = envNumberOrDefault("AGENT_RELAY_DB_SLOW_MS", 0);
|
|
621
|
+
|
|
622
|
+
// Reader pool (ADR 0001 §3.2/§3.6/§11.1 — S2.2 #1872). Centralized here so the seam's env access
|
|
623
|
+
// has one home (the env-access ratchet forbids scattered AGENT_RELAY_* reads).
|
|
624
|
+
/** FIXED small default: `min(hardwareConcurrency − 1, 4)`, floored at 1 (§11.1 — dynamic sizing
|
|
625
|
+
* oscillates, and each RO connection carries an 8 MB cache + lazy 256 MB mmap). */
|
|
626
|
+
export function defaultReaderPoolSize(): number {
|
|
627
|
+
const hc = typeof navigator !== "undefined" && navigator.hardwareConcurrency ? navigator.hardwareConcurrency : 2;
|
|
628
|
+
return Math.max(1, Math.min(hc - 1, 4));
|
|
629
|
+
}
|
|
630
|
+
export const DB_READER_POOL_SIZE = envPositiveInt("AGENT_RELAY_DB_READER_POOL_SIZE", defaultReaderPoolSize());
|
|
631
|
+
/** Backpressure high-water on reader-pool QUEUE depth: past it, reads shed (503-mappable, §3.6). */
|
|
632
|
+
export const DB_READER_QUEUE_HIGH_WATER = envPositiveInt("AGENT_RELAY_DB_READER_QUEUE_HIGH_WATER", 512);
|
|
633
|
+
/** Per-read job timeout: a timed-out reader worker is torn down + respawned (pure reads, no risk). */
|
|
634
|
+
export const DB_READER_JOB_TIMEOUT_MS = envPositiveInt("AGENT_RELAY_DB_READER_JOB_TIMEOUT_MS", 30_000);
|
|
635
|
+
/** Exercise the marshaling seam in the in-process backend under `bun test`/flag (H1 §3.8.1); prod
|
|
636
|
+
* `:memory:` bootstrap pays nothing. */
|
|
637
|
+
export const DB_READER_MARSHAL_IN_PROCESS =
|
|
638
|
+
process.env.NODE_ENV === "test" || relayEnv(process.env, "AGENT_RELAY_DB_MARSHAL") === "1";
|
|
639
|
+
|
|
640
|
+
/**
|
|
641
|
+
* Phase-R rollout gate (#1960 T2 — ADR 0001 §7 Phase 1) for the gateway's READER half only. The
|
|
642
|
+
* writer stays in-process unconditionally: Phase W (a worker writer taking the sole RW connection) is
|
|
643
|
+
* a separate, much larger burn-down (#1870) and is deliberately NOT wired here. Any value other than
|
|
644
|
+
* the literal `"worker"` — unset included — resolves to `"in-process"`, so this is behavior-preserving
|
|
645
|
+
* by default; an operator opts in explicitly per the same string-literal convention as
|
|
646
|
+
* `parseKernelTimersMode`.
|
|
647
|
+
*/
|
|
648
|
+
export type GatewayReaderBackendMode = "in-process" | "worker";
|
|
649
|
+
|
|
650
|
+
export function parseGatewayReaderBackend(value: string | undefined): GatewayReaderBackendMode {
|
|
651
|
+
return value === "worker" ? "worker" : "in-process";
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
export function gatewayReaderBackendFromEnv(): GatewayReaderBackendMode {
|
|
655
|
+
return parseGatewayReaderBackend(relayEnv(process.env, "AGENT_RELAY_GATEWAY_READER_BACKEND"));
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
export function stewardEscalationMs(): number {
|
|
659
|
+
return envNumberOrDefault("AGENT_RELAY_WORKSPACE_STEWARD_ESCALATION_MS", 60 * 60 * 1000);
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
export function stewardFallbackTarget(): string {
|
|
663
|
+
return envTrimmed("AGENT_RELAY_WORKSPACE_STEWARD_FALLBACK");
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
export function envMsOrDefault(name: string, fallback: number): number {
|
|
667
|
+
return envNonNegativeNumber(name, fallback);
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
export function orphanGraceMs(): number {
|
|
671
|
+
return envMsOrDefault("AGENT_RELAY_ORPHAN_GRACE_MS", 30 * 60 * 1000);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
export function orphanReapCooldownMs(): number {
|
|
675
|
+
return envMsOrDefault("AGENT_RELAY_ORPHAN_REAP_COOLDOWN_MS", 5 * 60 * 1000);
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
export function orphanReapEnabled(): boolean {
|
|
679
|
+
return relayEnv(process.env, "AGENT_RELAY_ORPHAN_REAP") !== "0";
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
export function orphanWorktreeReapEnabled(): boolean {
|
|
683
|
+
return relayEnv(process.env, "AGENT_RELAY_ORPHAN_WORKTREE_REAP") !== "0";
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
export const PROVIDER_HOME_GC_INTERVAL_MS = envNumberOrDefault("AGENT_RELAY_PROVIDER_HOME_GC_INTERVAL_MS", 30 * 60 * 1000);
|
|
687
|
+
// #2283 — hourly, was 6h. Hosts mint ~460MB per deployed SHA and fill ~10-15GB/day, so the cadence
|
|
688
|
+
// (times maxDeletes, see scripts/artifact-checkout-gc.ts) is the actual reclaim RATE; four passes a
|
|
689
|
+
// day could not keep up even once the predicate started clearing. The pass is detached and bounded by
|
|
690
|
+
// its own maxScanMs, so the deadline only has to cover that plus the deletes it authorises.
|
|
691
|
+
export const ARTIFACT_CHECKOUT_GC_INTERVAL_MS = envPositiveInt("AGENT_RELAY_ARTIFACT_CHECKOUT_GC_INTERVAL_MS", 60 * 60 * 1000);
|
|
692
|
+
export const ARTIFACT_CHECKOUT_GC_DEADLINE_MS = 300 * 1000;
|
|
693
|
+
export function artifactCheckoutGcEnabled(): boolean { return relayEnv(process.env, "AGENT_RELAY_ARTIFACT_CHECKOUT_GC_ENABLED") !== "0"; }
|
|
694
|
+
|
|
695
|
+
// #1256 — deliberately well under OFFLINE_PRUNE_MS's 24h default. A provider-home is
|
|
696
|
+
// attributed to an agent via that agent's DB row (instance_id + last_seen); once
|
|
697
|
+
// pruneOfflineAgents deletes the row (at OFFLINE_PRUNE_MS), the home becomes
|
|
698
|
+
// unattributable and this reaper will never touch it again. Firing hours ahead of
|
|
699
|
+
// that deletion is what keeps the sweep able to reclaim disk at all — an operator
|
|
700
|
+
// who shortens OFFLINE_PRUNE_MS should shorten this to stay under it too.
|
|
701
|
+
export function providerHomeGraceMs(): number {
|
|
702
|
+
return envMsOrDefault("AGENT_RELAY_PROVIDER_HOME_GRACE_MS", 6 * 60 * 60 * 1000);
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
export function providerHomeGcEnabled(): boolean {
|
|
706
|
+
return relayEnv(process.env, "AGENT_RELAY_PROVIDER_HOME_GC") !== "0";
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
// #1256 safety gate — age-based orphan GC remains dormant unless explicitly enabled.
|
|
710
|
+
// The positively-attributed offline-agent reaper is controlled separately by
|
|
711
|
+
// providerHomeGcEnabled() and stays active by default.
|
|
712
|
+
export function providerHomeAgeGcEnabled(): boolean {
|
|
713
|
+
const value = relayEnv(process.env, "AGENT_RELAY_PROVIDER_HOME_AGE_GC")?.trim().toLowerCase();
|
|
714
|
+
return value === "1" || value === "true";
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
// #1256 age-tier — how long a genuinely-orphaned home (no registered agent) whose
|
|
718
|
+
// owner-marker names THIS host must have gone untouched (newest tree mtime) before the
|
|
719
|
+
// reaper age-reaps it. Much longer than providerHomeGraceMs's 6h: that tier acts on a
|
|
720
|
+
// POSITIVE offline attribution, this one on age alone, so it stays deliberately cautious.
|
|
721
|
+
// Gated behind providerHomeAgeGcEnabled(); it is default-off pending the #1256
|
|
722
|
+
// age-tier rearchitecture.
|
|
723
|
+
export function providerHomeOrphanTtlMs(): number {
|
|
724
|
+
return envMsOrDefault("AGENT_RELAY_PROVIDER_HOME_ORPHAN_TTL_MS", 14 * DAY_MS);
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
// #1256 quarantine window — the reaper NEVER rm's a home in the same pass it becomes
|
|
728
|
+
// eligible. Pass A atomically renames an eligible orphan to a reclaim-able tombstone; only
|
|
729
|
+
// a LATER pass (Pass B) rm's a tombstone, and only once it has sat quarantined at least
|
|
730
|
+
// this long AND still has no live owner. The window is what lets a reconnecting/resuming
|
|
731
|
+
// agent's spawn-side reclaim recover its home before any destructive rm — so the residual
|
|
732
|
+
// worst case is "a long-dead agent that reconnects in the final delete window gets a
|
|
733
|
+
// freshly-rebuilt empty home", never "a live/reconnecting agent's home deleted out from
|
|
734
|
+
// under it". Default 1h: long enough to cover a spawn/reconnect, short enough to reclaim
|
|
735
|
+
// disk promptly. A tombstone is also always reclaim-able on spawn regardless of this TTL.
|
|
736
|
+
export function providerHomeQuarantineMs(): number {
|
|
737
|
+
return envMsOrDefault("AGENT_RELAY_PROVIDER_HOME_QUARANTINE_MS", 60 * 60 * 1000);
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
export function workspaceAutoMergeEnabled(): boolean {
|
|
741
|
+
return relayEnv(process.env, "AGENT_RELAY_WORKSPACE_AUTO_MERGE") !== "0";
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
// #1408 K7 Phase-2 timers cutover — the reversible switch that gates whether the kernel-served
|
|
745
|
+
// durable timers path (kernel/timers.pilot.ts firing on the workflow runtime) runs. DEFAULT-OFF
|
|
746
|
+
// (opt-in): unset ⇒ legacy `src/db/scheduled-timers.ts` is the sole timers path, so merely landing
|
|
747
|
+
// this code is a prod no-op. The coordinator flips this to "1" deliberately, after review, to
|
|
748
|
+
// activate the kernel path. Reversible with no data loss: the two paths use disjoint tables
|
|
749
|
+
// (legacy `scheduled_timers` vs kernel-owned `kernel_entity__timers__*` + the workflow journal), so
|
|
750
|
+
// flipping back to legacy leaves legacy state wholly intact. NOTE: enabling it today activates the
|
|
751
|
+
// kernel timers *model* (schedule/cancel/list/fire + `timers.fired`); it is NOT yet a functional
|
|
752
|
+
// replacement for legacy message/command dispatch (that parity bridge is the follow-up cutover step).
|
|
753
|
+
export type KernelTimersMode = "off" | "shadow" | "dual-read" | "kernel";
|
|
754
|
+
|
|
755
|
+
/** Future durable-protocol desired-mode parser. `1` is permanently the compatibility spelling of
|
|
756
|
+
* `shadow`; parsing it does not itself confer authority or activate the durable protocol. */
|
|
757
|
+
export function parseKernelTimersMode(value: string | undefined): KernelTimersMode {
|
|
758
|
+
if (value === "1" || value === "shadow") return "shadow";
|
|
759
|
+
if (value === "dual-read" || value === "kernel") return value;
|
|
760
|
+
return "off";
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
export function kernelTimersMode(): KernelTimersMode {
|
|
764
|
+
return parseKernelTimersMode(relayEnv(process.env, "AGENT_RELAY_KERNEL_TIMERS"));
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
export function kernelServedTimersEnabled(): boolean {
|
|
768
|
+
// Until a durable cutover protocol row/version is activated, preserve the existing switch
|
|
769
|
+
// semantics exactly: only the historical literal `1` enables today's shadow kernel path.
|
|
770
|
+
return relayEnv(process.env, "AGENT_RELAY_KERNEL_TIMERS") === "1";
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
// #3353: delegated token budgets are on by default; AGENT_RELAY_DELEGATION_TOKEN_BUDGETS=0 ignores budget fields.
|
|
774
|
+
export function delegationTokenBudgetsEnabled(): boolean { return relayEnv(process.env, "AGENT_RELAY_DELEGATION_TOKEN_BUDGETS") !== "0"; }
|
|
775
|
+
|
|
776
|
+
export function childWorkflowsEnabled(): boolean { return relayEnv(process.env, "AGENT_RELAY_CHILD_WORKFLOWS") === "1"; }
|
|
777
|
+
|
|
778
|
+
export function workflowDecisionsEnabled(): boolean { return relayEnv(process.env, "AGENT_RELAY_WORKFLOW_DECISIONS") === "1"; }
|
|
779
|
+
|
|
780
|
+
export function workflowCompositionEnabled(): boolean { return relayEnv(process.env, "AGENT_RELAY_WORKFLOW_COMPOSITION") === "1"; }
|
|
781
|
+
|
|
782
|
+
export function workflowScriptsEnabled(): boolean {
|
|
783
|
+
return relayEnv(process.env, "AGENT_RELAY_WORKFLOW_SCRIPTS") === "1";
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
// #1452 — auto-publish an isolated worker's committed-but-unlanded tip to origin's
|
|
787
|
+
// refs/review/* namespace on deliver, so a fresh reviewer can `git fetch` it immediately
|
|
788
|
+
// instead of waiting on a manual author push + coordinator handshake. DEFAULT-OFF (opt-in):
|
|
789
|
+
// unset ⇒ deliverTask publishes nothing and workspace cleanup drops nothing, so merely
|
|
790
|
+
// landing this code is a prod no-op — the review/land/protected-tip flows are untouched. The
|
|
791
|
+
// coordinator flips this to "1" deliberately, after review, to activate publishing. Reversible
|
|
792
|
+
// with no residue: refs/review/* is REVIEW-ONLY (never lands, disjoint from refs/heads/* and
|
|
793
|
+
// the protected-tip guard's refs/agent-relay/workspace-tips/*), and flipping back OFF simply
|
|
794
|
+
// stops publishing — any already-published ref is still dropped on the next workspace reap.
|
|
795
|
+
export function reviewPublishEnabled(): boolean {
|
|
796
|
+
return relayEnv(process.env, "AGENT_RELAY_REVIEW_PUBLISH") === "1";
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
export function continuationArchiveFtsEnabled(): boolean {
|
|
800
|
+
return relayEnv(process.env, "AGENT_RELAY_DISABLE_CONTINUATION_ARCHIVE_FTS") !== "1";
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
export function busStaleGraceMs(): number {
|
|
804
|
+
return envNumberOrDefault("AGENT_RELAY_STALE_GRACE_MS", 120_000);
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
export function defaultIssueRepo(): string | undefined {
|
|
808
|
+
return relayEnv(process.env, "AGENT_RELAY_DEFAULT_ISSUE_REPO") || process.env.GITHUB_REPOSITORY || undefined;
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
export function codexWhamQuotaEnabled(): boolean {
|
|
812
|
+
return relayEnv(process.env, "AGENT_RELAY_CODEX_WHAM_QUOTA") !== "0";
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
export function cliRelayUrl(): string {
|
|
816
|
+
return relayEnv(process.env, "AGENT_RELAY_URL") || DEFAULT_RELAY_URL;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
/** The runner-provisioned per-session scratch dir of an agent shell. */
|
|
820
|
+
export function cliScratchDir(): string | undefined {
|
|
821
|
+
return relayEnv(process.env, "AGENT_RELAY_SCRATCH_DIR") || undefined;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
export function cliRelayToken(): string | undefined {
|
|
825
|
+
return resolveCliRelayToken({
|
|
826
|
+
inline: relayEnv(process.env, "AGENT_RELAY_TOKEN"),
|
|
827
|
+
launchJti: relayEnv(process.env, "AGENT_RELAY_TOKEN_JTI"),
|
|
828
|
+
file: relayEnv(process.env, "AGENT_RELAY_TOKEN_FILE"),
|
|
829
|
+
});
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
// Mirrors runner/src/config.ts's textEnvOrFile — the orchestrator may set only the
|
|
833
|
+
// _FILE variant instead of the inline env (#1231).
|
|
834
|
+
function textEnvOrFile(name: string): string | undefined {
|
|
835
|
+
const inline = relayEnv(process.env, name);
|
|
836
|
+
if (inline) return inline;
|
|
837
|
+
const file = relayEnv(process.env, `${name}_FILE`);
|
|
838
|
+
if (!file) return undefined;
|
|
839
|
+
try {
|
|
840
|
+
const text = readFileSync(file, "utf8");
|
|
841
|
+
return text.length > 0 ? text : undefined;
|
|
842
|
+
} catch {
|
|
843
|
+
return undefined;
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
export function workspaceJsonFromEnv(): string | undefined {
|
|
848
|
+
return textEnvOrFile("AGENT_RELAY_WORKSPACE_JSON");
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
export function providerSessionIdFromEnv(): string | undefined {
|
|
852
|
+
return relayEnv(process.env, "AGENT_RELAY_PROVIDER_SESSION_ID");
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
export function projectFromEnv(): string | undefined {
|
|
856
|
+
return relayEnv(process.env, "AGENT_RELAY_PROJECT");
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
export function agentIdFromEnv(): string | undefined {
|
|
860
|
+
return relayEnv(process.env, "AGENT_RELAY_ID");
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
export function codexStatePathFromEnv(): string | undefined {
|
|
864
|
+
return relayEnv(process.env, "AGENT_RELAY_CODEX_STATE_PATH");
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
export function contextPathFromEnv(): string | undefined {
|
|
868
|
+
return relayEnv(process.env, "AGENT_RELAY_CONTEXT_PATH");
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
export function localOrchestratorIdFromEnv(): string | undefined {
|
|
872
|
+
return envTrimmedOrUndefined("AGENT_RELAY_ORCHESTRATOR_ID");
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
export function providerConfigHomeFromEnv(): string {
|
|
876
|
+
return relayEnv(process.env, "AGENT_RELAY_HOME") || join(process.env.HOME || ".", ".agent-relay");
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
// Base dir all ephemeral full-stack roots live under (RFC 0001 Phase 1 §2). Live
|
|
880
|
+
// read so tests/tools can retarget it; the ephemeral library falls back to a
|
|
881
|
+
// tmpdir path when unset.
|
|
882
|
+
export function ephemeralRootFromEnv(): string | undefined {
|
|
883
|
+
return relayEnv(process.env, "AGENT_RELAY_EPHEMERAL_ROOT")?.trim() || undefined;
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
export type IntegrationTokenConfig = {
|
|
887
|
+
name: string;
|
|
888
|
+
token: string;
|
|
889
|
+
scopes: string[];
|
|
890
|
+
targets?: string[];
|
|
891
|
+
channels?: string[];
|
|
892
|
+
callbackUrl?: string;
|
|
893
|
+
displayName?: string;
|
|
894
|
+
description?: string;
|
|
895
|
+
type?: string;
|
|
896
|
+
icon?: string;
|
|
897
|
+
accentColor?: string;
|
|
898
|
+
tags?: string[];
|
|
899
|
+
homepageUrl?: string;
|
|
900
|
+
repositoryUrl?: string;
|
|
901
|
+
docsUrl?: string;
|
|
902
|
+
manifest?: Record<string, unknown>;
|
|
903
|
+
};
|
|
904
|
+
|
|
905
|
+
export function getIntegrationTokens(): IntegrationTokenConfig[] {
|
|
906
|
+
const raw = relayEnv(process.env, "AGENT_RELAY_INTEGRATIONS");
|
|
907
|
+
if (!raw) return [];
|
|
908
|
+
try {
|
|
909
|
+
const parsed = JSON.parse(raw) as unknown;
|
|
910
|
+
if (!Array.isArray(parsed)) return [];
|
|
911
|
+
return parsed
|
|
912
|
+
.filter((item): item is Record<string, unknown> => typeof item === "object" && item !== null)
|
|
913
|
+
.map((item) => ({
|
|
914
|
+
name: typeof item.name === "string" ? item.name : "",
|
|
915
|
+
token: typeof item.token === "string" ? item.token : "",
|
|
916
|
+
scopes: Array.isArray(item.scopes) ? item.scopes.filter((scope): scope is string => typeof scope === "string") : [],
|
|
917
|
+
targets: Array.isArray(item.targets) ? item.targets.filter((target): target is string => typeof target === "string") : undefined,
|
|
918
|
+
channels: Array.isArray(item.channels) ? item.channels.filter((channel): channel is string => typeof channel === "string") : undefined,
|
|
919
|
+
callbackUrl: typeof item.callbackUrl === "string" ? item.callbackUrl : undefined,
|
|
920
|
+
displayName: typeof item.displayName === "string" ? item.displayName : undefined,
|
|
921
|
+
description: typeof item.description === "string" ? item.description : undefined,
|
|
922
|
+
type: typeof item.type === "string" ? item.type : undefined,
|
|
923
|
+
icon: typeof item.icon === "string" ? item.icon : undefined,
|
|
924
|
+
accentColor: typeof item.accentColor === "string" ? item.accentColor : undefined,
|
|
925
|
+
tags: Array.isArray(item.tags) ? item.tags.filter((tag): tag is string => typeof tag === "string") : undefined,
|
|
926
|
+
homepageUrl: typeof item.homepageUrl === "string" ? item.homepageUrl : undefined,
|
|
927
|
+
repositoryUrl: typeof item.repositoryUrl === "string" ? item.repositoryUrl : undefined,
|
|
928
|
+
docsUrl: typeof item.docsUrl === "string" ? item.docsUrl : undefined,
|
|
929
|
+
manifest: typeof item.manifest === "object" && item.manifest !== null && !Array.isArray(item.manifest) ? item.manifest as Record<string, unknown> : undefined,
|
|
930
|
+
}))
|
|
931
|
+
.filter((item) => item.name && item.token);
|
|
932
|
+
} catch {
|
|
933
|
+
return [];
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
export function webSearchBackendUrl(backend: "tavily" | "brave"): string {
|
|
938
|
+
return relayEnv(process.env, `AGENT_RELAY_${backend.toUpperCase()}_SEARCH_URL`) ?? (backend === "tavily" ? "https://api.tavily.com/search" : "https://api.search.brave.com/res/v1/web/search");
|
|
939
|
+
}
|