@humwick/server 0.0.0-stage → 0.130.1
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 +84 -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 +39 -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 +42 -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-B_rFEbnL.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-BU3uWo2t.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 +237 -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 +1200 -0
- package/src/commands-landing-async.ts +166 -0
- package/src/commands-write.ts +168 -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 +44 -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 +93 -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 +54 -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 +337 -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 +188 -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 +51 -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 +58 -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 +46 -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 +22 -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 +307 -0
- package/src/db/config-store-write-ops.ts +60 -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 +17 -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 +77 -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 +108 -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 +29 -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 +16 -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 +27 -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 +100 -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 +61 -0
- package/src/db/orchestrators-read-ops.ts +7 -0
- package/src/db/orchestrators-write-ops.ts +58 -0
- package/src/db/orchestrators.ts +497 -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 +17 -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 +13 -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 +24 -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 +71 -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 +44 -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 +74 -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 +92 -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 +282 -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 +154 -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 +116 -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 +43 -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 +291 -0
- package/src/db/token-db-write-ops.ts +96 -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 +43 -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 +602 -0
- package/src/db/writer-drain.ts +27 -0
- package/src/db/writer-fault-seam.ts +104 -0
- package/src/db/writer-gateway.ts +843 -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 +249 -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 +48 -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 +233 -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 +404 -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 +211 -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 +80 -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
|
@@ -0,0 +1,955 @@
|
|
|
1
|
+
import { bundledIntegrationAssets, bundledIntegrationHome, suppressOwnedClaudePlugins, selectClaudePluginDirs } from "./provider-integration";
|
|
2
|
+
import { relayEnv, writeChildEnv } from "@humwick/sdk/env";
|
|
3
|
+
import { codexRetiredMcpConfigArgs } from "./adapters/codex-effective-config";
|
|
4
|
+
import { activeSharedMcpServers, HARNESS_SUBAGENTS_DISABLED, harnessSubagentsEnabled } from "@humwick/sdk";
|
|
5
|
+
import { claudeSubagentHooks, claudeSubagentSettings } from "./adapters/claude-subagents";
|
|
6
|
+
import { serviceAccessLaunchEnv, serviceAccessMcpServers } from "./adapters/service-access";
|
|
7
|
+
import { claudeSettingsArgs, CLAUDE_NO_ATTRIBUTION_RULE, extractCallerSettings, stripSettingsArgs, mergeHookSets, hasSettingsArg, sessionStatusLineSettingsArgs } from "./claude-settings";
|
|
8
|
+
export { stripSettingsArgs, sessionStatusLineSettingsArgs } from "./claude-settings";
|
|
9
|
+
import { rmSync, writeFileSync } from "node:fs";
|
|
10
|
+
import { basename, relative, resolve, join } from "node:path";
|
|
11
|
+
import { isCodexLeanWorkerProfile, profileMcpCells, type AgentProfile, type AgentProfileBase, type ProvisioningHookSet, type ProvisioningMcpServer, type SpawnProvider } from "@humwick/sdk";
|
|
12
|
+
import { shellQuote } from "@humwick/sdk/shell-utils";
|
|
13
|
+
import {
|
|
14
|
+
profileAllowsRelayFeature,
|
|
15
|
+
resolveRelayContext,
|
|
16
|
+
profileIsVanillaBase,
|
|
17
|
+
type ProviderConfig,
|
|
18
|
+
type RunnerSpawnConfig,
|
|
19
|
+
} from "./adapter";
|
|
20
|
+
import {
|
|
21
|
+
hostUserScopeMcpServers,
|
|
22
|
+
providerHomePathFor, materializeProviderHome,
|
|
23
|
+
providerHostConfigHome,
|
|
24
|
+
providerSourceHome,
|
|
25
|
+
projectSettingSources,
|
|
26
|
+
} from "./profile-home";
|
|
27
|
+
import { claudeHostPlan, claudeHostReport, nativeHostPlan, nativeHostReport, writeCodexHostSettings, codexHostPlan, codexHostReport, hostProviderDefaultArgs, hostSourcesFor, materializeHostAssets, skillDirsUnder, type HostSourceReport } from "./host-asset-plan";
|
|
28
|
+
import { hostClaudeHooks, hostCodexHooks, hostCodexMcpServers } from "./host-sources";
|
|
29
|
+
import { getAllManifests, getManifest } from "@humwick/providers";
|
|
30
|
+
import { codexHooksSupported } from "./adapters/codex-version";
|
|
31
|
+
import { claudeLaunchPromptGateSettings } from "./adapters/claude-prompt-gates";
|
|
32
|
+
import { claudeHarnessTrim } from "./adapters/claude-tool-policy";
|
|
33
|
+
import {
|
|
34
|
+
materializeResolvedAssets,
|
|
35
|
+
renderProvisionedHookSet,
|
|
36
|
+
resolveClaudeSkillSources, resolveClaudeProvisionedPlugins,
|
|
37
|
+
resolveCodexProvisionedSkills,
|
|
38
|
+
resolveProvisionedHooks,
|
|
39
|
+
profileProvisioning, fffMcpHookEnv,
|
|
40
|
+
codexSessionHookArgs,
|
|
41
|
+
writeCodexHooksJson,
|
|
42
|
+
writeClaudeSettingsJson, claudeBypassPermissionSettings, claudeGuardedRelaySettings, claudeHostInstructionExcludeSettings, mergeClaudeRelayPermissions, withManagedClaudePermissions, type ResolvedSourceShadow,
|
|
43
|
+
} from "./provisioning";
|
|
44
|
+
import type { ResolvedProjectClaudeSettings } from "./provisioning";
|
|
45
|
+
import { resolveMcpSources, type McpSourceSelection } from "./mcp-source-selection";
|
|
46
|
+
import { resolveProjectHooks } from "./project-hooks";
|
|
47
|
+
import { agentRedactEnv, agentRedactOn, isAgentRedactInstall, resolveAgentRedact, type AgentRedactState } from "./agent-redact";
|
|
48
|
+
import { composeSystemPromptAppend } from "./project-instructions";
|
|
49
|
+
import { claudeWebToolsSteer, disabledSharedWebTools, webToolsEnv, withDisabledWebTools } from "./web-tools";
|
|
50
|
+
import {
|
|
51
|
+
claudeMcpConfigPayload,
|
|
52
|
+
claudeMcpLaunchArgs,
|
|
53
|
+
codexProvisionedMcpArgs,
|
|
54
|
+
codexProvisionedMcpTimeoutArgs,
|
|
55
|
+
openCodeMcpConfigPayload,
|
|
56
|
+
relayMcpCodexConfigArgs, runnerMcpGeneration,
|
|
57
|
+
sharedMcpMetaOnlyServer,
|
|
58
|
+
writeSharedMcpMetaOnlyConfig,
|
|
59
|
+
SHARED_MCP_METAONLY_CONFIG_FILENAME,
|
|
60
|
+
type MetaOnlyRelayDownstream,
|
|
61
|
+
tomlInlineValue,
|
|
62
|
+
tomlString,
|
|
63
|
+
upsertTomlTable,
|
|
64
|
+
writeCodexMcpServersToml,
|
|
65
|
+
SHARED_MCP_SERVER_NAME, runnerManagedToolDeferralRoute,
|
|
66
|
+
} from "./relay-mcp";
|
|
67
|
+
import {
|
|
68
|
+
applyNativeMemoryBelt,
|
|
69
|
+
claudeManagedNativeMemorySettings,
|
|
70
|
+
resolveClaudeNativeMemoryLever,
|
|
71
|
+
resolveNativeMemoryLever,
|
|
72
|
+
writeCodexFeaturesToml,
|
|
73
|
+
type NativeMemoryLever,
|
|
74
|
+
} from "./native-memory-lever";
|
|
75
|
+
|
|
76
|
+
// #1565 P5.7 — relay's inline `--settings` actually reaches this launch. Same gate
|
|
77
|
+
// `claudeSettingsArgs` applies below, passed to the lever so its applied/suppressed report cannot
|
|
78
|
+
// claim a settings key the merge then drops.
|
|
79
|
+
const callerSettingsMergeable = (argLists: string[][], cwd?: string): boolean => {
|
|
80
|
+
const caller = extractCallerSettings(argLists, cwd);
|
|
81
|
+
return !caller || Boolean(caller.settings);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// #557 — THE single launch-assembly contract. Given a resolved AgentProfile (+ its
|
|
85
|
+
// spawn-time ResolvedProvisioning), `assembleLaunch` produces ONE provider-neutral
|
|
86
|
+
// description of the launch: the relay-provisioned skills/plugins/MCP, the bundled relay
|
|
87
|
+
// surface, the instruction-source disposition, and `base:"vanilla"` as the zero-host
|
|
88
|
+
// floor. Both adapters' buildSpawnArgs splice `assembled.args`/`assembled.env`, and
|
|
89
|
+
// profile-projection describes `assembled` directly — so projection and reality come
|
|
90
|
+
// from one source and cannot drift.
|
|
91
|
+
//
|
|
92
|
+
// `assembleLaunch` is PURE (it reads the filesystem to decide which declared dirs
|
|
93
|
+
// resolve, but writes nothing). `materializeLaunchAssembly` performs the disk writes the
|
|
94
|
+
// description implies, driven by the SAME resolvers — so what's written equals what's
|
|
95
|
+
// reported equals what's launched.
|
|
96
|
+
|
|
97
|
+
export interface AssembledAsset {
|
|
98
|
+
name: string;
|
|
99
|
+
/** Materialized/in-place dir feeding the launch (e.g. a --plugin-dir or skills.config path). */
|
|
100
|
+
dir: string;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export type AssembledInstructionDisposition = "allow" | "suppressed" | "reinjected" | "isolated" | "unsupported";
|
|
104
|
+
|
|
105
|
+
export interface AssembledInstructions {
|
|
106
|
+
/** Repo CLAUDE.md/AGENTS.md cascade: "allow" left available, "suppressed" by the
|
|
107
|
+
* vanilla launch mechanism, "reinjected" when the native project scope is dropped (to gate
|
|
108
|
+
* ambient hooks) but P.instructions re-injects the repo docs through the controlled
|
|
109
|
+
* append-system-prompt channel (#2086), "unsupported" requested-but-not-enforced. */
|
|
110
|
+
repo: AssembledInstructionDisposition;
|
|
111
|
+
/** Host/global provider instructions: "allow", "isolated" (dropped by the isolated home), or "unsupported". */
|
|
112
|
+
global: AssembledInstructionDisposition;
|
|
113
|
+
/** A composed systemPromptAppend block (project preamble + profile system/append + caller
|
|
114
|
+
* context) is configured for this launch. `launchContextPending` distinguishes providers that
|
|
115
|
+
* can only transport it with their first turn from providers that emit it at process launch. */
|
|
116
|
+
systemPromptAppend: boolean;
|
|
117
|
+
// ── #559 SEAM ──────────────────────────────────────────────────────────────────
|
|
118
|
+
// Scoped {profile|user} memory does not exist yet (#559 generalizes Projects' anchor
|
|
119
|
+
// to project|profile|user). When it lands, the assembled instruction world becomes
|
|
120
|
+
// "instructions + provisioned assets + scoped knowledge": the relay-side composer
|
|
121
|
+
// (composeSpawnInstructions) gains a profile/user-scoped preamble beside the existing
|
|
122
|
+
// project preamble, and THIS field reports which scopes contributed. Until then it is
|
|
123
|
+
// always "none" — a thin add for #559, not a refactor.
|
|
124
|
+
scopedKnowledge: "none";
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export interface AssembledMcp {
|
|
128
|
+
generation?: import("@humwick/sdk").ToolGeneration;
|
|
129
|
+
/** The identity-bearing relay HTTP MCP endpoint is injected. */
|
|
130
|
+
relayEndpoint: boolean;
|
|
131
|
+
/** Only the assembled servers may load (Claude --strict-mcp-config). #662: true for ALL
|
|
132
|
+
* managed Claude launches so the project `.mcp.json` enable-modal can't wedge a headless
|
|
133
|
+
* agent; relay's endpoint + provisioned servers (via --mcp-config) are preserved. Always
|
|
134
|
+
* false for Codex (no equivalent discovery modal). */
|
|
135
|
+
strict: boolean;
|
|
136
|
+
/** Relay-provisioned server names (excludes the relay endpoint itself). */
|
|
137
|
+
servers: string[];
|
|
138
|
+
/** #667 — project `.mcp.json` server names projected from the spawn cwd's committed
|
|
139
|
+
* `.mcp.json` (via `--mcp-config`, so they survive strict). Sourced from the project,
|
|
140
|
+
* not ambient host MCP. Empty unless the profile/spawn opted into `projectMcp`, and a
|
|
141
|
+
* name already declared by relay-provisioned `servers` wins (not double-listed here). */
|
|
142
|
+
projectServers: string[];
|
|
143
|
+
/** #662/#2075 — host USER-scope MCP server names (`~/.claude.json` `mcpServers`) re-injected
|
|
144
|
+
* into `--mcp-config` for an `mcp.mode:"host"` profile, so `--strict-mcp-config` keeps
|
|
145
|
+
* the ambient host MCP (callmux/qmd/gh) instead of dropping it. Isolated homes receive the
|
|
146
|
+
* explicit host cell too; non-host modes stay empty. Codex reports its host config.toml
|
|
147
|
+
* servers through the same field. */
|
|
148
|
+
hostServers: string[];
|
|
149
|
+
/** #672 — when the profile/spawn opted into `sharedMcp`, the agent's NON-IDENTITY MCP
|
|
150
|
+
* (tokenlean, github) is routed through one orchestrator-owned shared `callmux` listener via
|
|
151
|
+
* a per-agent `callmux bridge --cwd "$WORKTREE"` (session-cwd isolation), injected through
|
|
152
|
+
* the same `--mcp-config` / `-c` channel so it survives strict. `url` is the listener the
|
|
153
|
+
* bridge connects to. Undefined when projection is OFF (the default). The bridge is opaque
|
|
154
|
+
* at assembly time — its server SET is owned by the listener config, not enumerated here.
|
|
155
|
+
* The identity-bearing relay endpoint is never on the shared listener (#215). #1450 —
|
|
156
|
+
* `relayFronted` marks a metaOnly callmux that ALSO fronts the relay endpoint on-demand as a
|
|
157
|
+
* second downstream (via the runner proxy, so identity/#215 hold); the relay stays per-agent. */
|
|
158
|
+
sharedListener?: { url: string; metaOnly?: boolean; relayFronted?: boolean };
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export interface AssembledLaunch {
|
|
162
|
+
provider: SpawnProvider;
|
|
163
|
+
/** The resolved profile this launch was assembled from; undefined for a profile-less
|
|
164
|
+
* (legacy default) spawn, which behaves as host base with relay features default-on. */
|
|
165
|
+
profile?: AgentProfile;
|
|
166
|
+
base: AgentProfileBase;
|
|
167
|
+
vanilla: boolean;
|
|
168
|
+
/** Isolated provider config home (CLAUDE_CONFIG_DIR / CODEX_HOME), or undefined for host base. */
|
|
169
|
+
configHome?: string;
|
|
170
|
+
/** #1963 N3 — the effective Claude `--setting-sources` this launch emits, or undefined when the
|
|
171
|
+
* flag is ABSENT. Absent means the provider default loads EVERY scope: empirically
|
|
172
|
+
* `user,project,local` on Claude 2.1.x (measured with a controlled probe — the CLI documents the
|
|
173
|
+
* valid sources but not the absent-flag default; see #1963 R1.0). An explicit array names the ONLY
|
|
174
|
+
* scopes that load, so the ambient project (`.claude/settings.json`, repo CLAUDE.md/AGENTS.md) and
|
|
175
|
+
* local (`.claude/settings.local.json`) scopes are DROPPED. Always undefined for Codex, which has
|
|
176
|
+
* no `--setting-sources` surface (it suppresses the project doc via `project_doc_max_bytes=0`). */
|
|
177
|
+
settingSources?: string[];
|
|
178
|
+
/** Generic Relay context emitted at launch / reserved for a first provider turn; `launchContextPending` is the composed systemPromptAppend counterpart. */ relayContext: boolean; relayContextPending?: boolean; launchContextPending?: boolean;
|
|
179
|
+
/** Bundled Relay skills are emitted through the provider's native channel. */
|
|
180
|
+
relaySkills: boolean;
|
|
181
|
+
/** Bundled relay plugin dir is passed (Claude only). */
|
|
182
|
+
relayPlugin: boolean;
|
|
183
|
+
/** Relay status-line context probe is injected (Claude only). */
|
|
184
|
+
statusLine: boolean;
|
|
185
|
+
/** Relay-provisioned skills materialized for this launch. */
|
|
186
|
+
skills: AssembledAsset[];
|
|
187
|
+
/** Project `.claude/skills` materialized for this Claude launch (#668). */
|
|
188
|
+
projectSkills: AssembledAsset[];
|
|
189
|
+
/** Host/global Claude skills explicitly inherited without enabling host MCP. */
|
|
190
|
+
hostSkills: AssembledAsset[];
|
|
191
|
+
/** Project `.claude/settings.json` stays on Claude's native project-settings path (#669). */
|
|
192
|
+
projectSettings: { applied: boolean; keys: string[]; ignoredKeys: string[]; file?: string };
|
|
193
|
+
/** Relay-provisioned hooks materialized for this launch. Empty when hooks were resolved
|
|
194
|
+
* but could not be delivered — see `hooksSuppressed` (the anti-lie invariant, #1096). */
|
|
195
|
+
hooks: AssembledAsset[];
|
|
196
|
+
/** Host hooks explicitly re-injected into an isolated Claude settings.json. */
|
|
197
|
+
hostHooks: boolean;
|
|
198
|
+
/** Whether this provider exposes a lever for host hooks in an isolated config home. */
|
|
199
|
+
hostHooksEnforceable: boolean;
|
|
200
|
+
/** Project-committed hooks resolved through the trust-gated materializer. */
|
|
201
|
+
projectHooks: AssembledAsset[];
|
|
202
|
+
/** Project hooks requested by the source matrix but denied by the server trust gate. */
|
|
203
|
+
projectHooksSuppressed?: { reason: string };
|
|
204
|
+
/** #1096 review — set when this launch RESOLVED provisioned hooks (incl. a baseline safety
|
|
205
|
+
* guard) that could NOT be delivered: caller `--settings` was unmergeable (Claude), a
|
|
206
|
+
* host-base Codex agent has no managed CODEX_HOME, or the installed Codex is too old to
|
|
207
|
+
* consume hooks.json. Drives a LOUD projection warning so a baseline guard is never
|
|
208
|
+
* SILENTLY absent while the report says "applied". */
|
|
209
|
+
hooksSuppressed?: { reason: string; names: string[] };
|
|
210
|
+
/** #1565 P5.7 — the provider-NATIVE-memory lever this launch carries. `policy:"default"` means
|
|
211
|
+
* the profile declared nothing: no env/arg/settings key was emitted and the launch is
|
|
212
|
+
* byte-identical to a pre-P5.7 one. Any other policy renders EXPLICITLY in both directions.
|
|
213
|
+
* `suppressed` names a lever that was resolved but could not be delivered on this base — the
|
|
214
|
+
* `hooksSuppressed` anti-lie precedent (#1096), so a lever is never silently absent. */
|
|
215
|
+
nativeMemory: NativeMemoryLever;
|
|
216
|
+
/** #1096 review — Claude only: true when the caller's own `--settings` was folded into the
|
|
217
|
+
* relay-emitted `--settings` (relay hooks/statusLine merged in). The adapter
|
|
218
|
+
* must then STRIP the caller's `--settings` from the provider args so exactly one reaches the
|
|
219
|
+
* launch. False when relay emitted its own settings standalone or added none. */
|
|
220
|
+
callerSettingsConsumed: boolean;
|
|
221
|
+
/** Relay-provisioned plugins (Claude --plugin-dir). Empty for Codex (no plugin surface). */
|
|
222
|
+
plugins: AssembledAsset[];
|
|
223
|
+
/** Host/global provider plugin dirs explicitly inherited without enabling host MCP. */
|
|
224
|
+
hostPluginDirs: string[];
|
|
225
|
+
/** #3387 — native host plugins (Claude installed-plugin registry ids) this launch's home carries. */
|
|
226
|
+
hostPlugins: string[];
|
|
227
|
+
/** #3387 — per host asset class: applied, selected-empty, disabled or unsupported. */
|
|
228
|
+
hostSources: HostSourceReport;
|
|
229
|
+
/** #3387 — the central provider defaultArgs this launch carries (Settings/defaults class). */
|
|
230
|
+
hostDefaultArgs: string[];
|
|
231
|
+
mcp: AssembledMcp;
|
|
232
|
+
/** Lower-precedence source assets intentionally omitted from the emitted launch. */
|
|
233
|
+
sourceShadows?: ResolvedSourceShadow[];
|
|
234
|
+
instructions: AssembledInstructions;
|
|
235
|
+
/** Provider provisioning/vanilla/instruction launch-arg block, in launch order. */
|
|
236
|
+
args: string[];
|
|
237
|
+
/** Provisioning-derived env additions (the isolated config-home var). */
|
|
238
|
+
env: Record<string, string>;
|
|
239
|
+
/** #3025 — whether agent-redact's post-tool hooks reached this launch, and how. */
|
|
240
|
+
redaction: AgentRedactState;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// ── Bundled relay assets (relocated from the adapters so the assembler — not each
|
|
244
|
+
// adapter — owns launch-arg construction; #557). Adapters re-export for test parity. ──
|
|
245
|
+
|
|
246
|
+
const CODEX_BUNDLED_SKILLS_DIR = resolve(import.meta.dir, "../plugins/codex/skills");
|
|
247
|
+
|
|
248
|
+
export function bundledCodexSkillDirs(baseDir = CODEX_BUNDLED_SKILLS_DIR): string[] {
|
|
249
|
+
return skillDirsUnder(baseDir);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
export function bundledSkillConfigArgs(skillDirs = bundledCodexSkillDirs(), disabledDirs: string[] = []): string[] {
|
|
253
|
+
const entries = [...skillDirs.map((dir) => `{path=${tomlString(dir)},enabled=true}`), ...disabledDirs.map((dir) => `{path=${tomlString(dir)},enabled=false}`)];
|
|
254
|
+
return entries.length ? ["-c", `skills.config=[${entries.join(",")}]`] : [];
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function codexSkillSources(config: RunnerSpawnConfig) {
|
|
258
|
+
const home = providerHomePathFor("codex", config);
|
|
259
|
+
const provisioned = home ? resolveCodexProvisionedSkills(home, config) : [];
|
|
260
|
+
const bundled = !config.agentProfile && profileAllowsRelayFeature(config, "skills") ? bundledIntegrationAssets(config).map(asset => asset.dir) : [];
|
|
261
|
+
// #3387 — the managed CODEX_HOME hides the host's own skills; Host Skills on names them as roots,
|
|
262
|
+
// off disables the ambient ones Codex would still discover from HOME.
|
|
263
|
+
const host = home ? codexHostPlan(config, providerSourceHome("codex")) : undefined;
|
|
264
|
+
const hostRoots = host?.skillRoots ?? [];
|
|
265
|
+
return { provisioned, bundled, hostRoots, disabled: host?.disabledSkillRoots ?? [], roots: [...bundled, ...provisioned.map((skill) => skill.dir), ...hostRoots] };
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/** The same selected roots feed both enablement config and native discovery. */
|
|
269
|
+
export function codexSkillRoots(config: RunnerSpawnConfig): string[] {
|
|
270
|
+
return codexSkillSources(config).roots;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// #552 vanilla base (Codex): suppress the AGENTS.md project-doc cascade. project_doc_max_bytes
|
|
274
|
+
// (default 32768) caps bytes Codex reads from AGENTS.md walking root→cwd; 0 stops before adding
|
|
275
|
+
// any, so no repo (or fresh-CODEX_HOME global) project doc loads. The isolated CODEX_HOME already
|
|
276
|
+
// drops host config.toml MCP/hooks; this closes the cwd-resident repo instruction channel.
|
|
277
|
+
export function codexProjectDocSuppressionArgs(config: Pick<RunnerSpawnConfig, "agentProfile">): string[] {
|
|
278
|
+
return profileIsVanillaBase(config) ? ["-c", "project_doc_max_bytes=0"] : [];
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// #1096 — the settings.json relay WRITES into an isolated managed Claude home so the provisioned
|
|
282
|
+
// hooks (baseline guard included) land in the DOCUMENTED hook source Claude honors
|
|
283
|
+
// ($CLAUDE_CONFIG_DIR/settings.json — loaded under `--setting-sources "user"` and the default),
|
|
284
|
+
// rather than riding ONLY the inline `--settings` CLI flag. Claude does not document `--settings`
|
|
285
|
+
// as a hook source, and — unlike a file written straight to disk — that flag's JSON must survive
|
|
286
|
+
// shell/tmux launcher transit and passes Claude's "silently ignore settings that fail validation"
|
|
287
|
+
// gate; a written settings.json bypasses both, so the baseline guard can't be silently absent
|
|
288
|
+
// (the #1096 inert-at-runtime symptom). Returns null when:
|
|
289
|
+
// • there is NO isolated managed home (host base reuses the real ~/.claude — relay must not
|
|
290
|
+
// clobber it; that path keeps the inline --settings delivery), or
|
|
291
|
+
// • a caller --settings is present (the merge/suppression path owns hook delivery inline; see
|
|
292
|
+
// claudeSettingsArgs) — so the file and inline channels never DOUBLE-register the same hook.
|
|
293
|
+
// Both assembleClaude (to keep these hooks OUT of the inline --settings) and materializeClaudeAssets
|
|
294
|
+
// (to write the file) call this, so the launch and the disk agree.
|
|
295
|
+
export function claudeManagedHookSettings(config: RunnerSpawnConfig, configHome: string | undefined, provider: string = "claude"): { hooks: ProvisioningHookSet } | null {
|
|
296
|
+
if (!configHome) return null;
|
|
297
|
+
if (hasSettingsArg(hostProviderDefaultArgs(config)) || hasSettingsArg(config.providerArgs)) return null;
|
|
298
|
+
const relayHooks = renderProvisionedHookSet([...resolveProjectHooks(config), ...resolveProvisionedHooks(configHome, config)]);
|
|
299
|
+
const hostHooks = hostSourcesFor(config).hooks ? hostClaudeHooks(config, provider) : {};
|
|
300
|
+
const redact = resolveAgentRedact();
|
|
301
|
+
const hookSet = mergeHookSets(mergeHookSets(mergeHookSets(hostHooks, relayHooks), isAgentRedactInstall(redact) ? redact.claudeHooks : {}), claudeSubagentHooks(config));
|
|
302
|
+
return Object.keys(hookSet).length ? { hooks: hookSet } : null;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// ── Instruction disposition (the vanilla floor's effect on the host instruction cascade) ──
|
|
306
|
+
|
|
307
|
+
// #1963 N1/N3 — the disposition follows the launch FACT, not the profile's declared policy alone.
|
|
308
|
+
// `projectScopeDropped` is true whenever the project setting-source is not loaded (Claude
|
|
309
|
+
// `--setting-sources user`, emitted for a vanilla base OR a projectConfigProjection launch; Codex
|
|
310
|
+
// `project_doc_max_bytes=0` for a vanilla base). When it is dropped, the repo CLAUDE.md/AGENTS.md
|
|
311
|
+
// cascade genuinely does not load — so we report `suppressed` even without an explicit `ignore`
|
|
312
|
+
// policy, instead of the old `allow` that lied for every projectConfigProjection agent (the live
|
|
313
|
+
// worker/reviewer). `isolatedHome` is true when a managed provider config home is in use, which
|
|
314
|
+
// never loads host/global provider config regardless of the `globalInstructions` policy — so a
|
|
315
|
+
// minimal/isolated base OR a base:"host"+projectConfigProjection agent reports `isolated`, not the
|
|
316
|
+
// old `allow` that lied for the isolated prod reviewer.
|
|
317
|
+
function repoInstructionDisposition(profile: AgentProfile, projectScopeDropped: boolean, reinjected: boolean): AssembledInstructionDisposition {
|
|
318
|
+
// #2086 — the drop is not silent when P.instructions re-injects the repo docs through the
|
|
319
|
+
// controlled channel: the cascade is honored, just via append-system-prompt instead of the
|
|
320
|
+
// native project scope. Report that FACT so the anti-lie projection never says "suppressed"
|
|
321
|
+
// for a launch that actually carries the repo instructions.
|
|
322
|
+
if (reinjected) return "reinjected";
|
|
323
|
+
if (projectScopeDropped) return "suppressed";
|
|
324
|
+
if (profile.instructions.repoInstructions === "allow") return "allow";
|
|
325
|
+
// The project scope is still loaded, so an `ignore` request is not enforced at launch yet.
|
|
326
|
+
return "unsupported";
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
function globalInstructionDisposition(profile: AgentProfile, isolatedHome: boolean): AssembledInstructionDisposition {
|
|
330
|
+
// #1963 N1 review (P1): key on whether host globals are ACTUALLY linked, not on is-isolated-home.
|
|
331
|
+
// `linkHostGlobalInstructionFiles` (profile-home.ts) symlinks the host global CLAUDE.md into the
|
|
332
|
+
// managed home whenever `globalInstructions:"allow"` — even for an isolated base — so "allow" means
|
|
333
|
+
// globals ARE present and reporting "isolated" there would be a false report. Only an `ignore`
|
|
334
|
+
// request on an isolated home actually omits them.
|
|
335
|
+
if (profile.instructions.globalInstructions === "allow") return "allow";
|
|
336
|
+
if (isolatedHome) return "isolated";
|
|
337
|
+
// Host config home + `ignore`: no isolation to enforce the drop at launch yet.
|
|
338
|
+
return "unsupported";
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
function assembleInstructions(config: RunnerSpawnConfig, opts: { projectScopeDropped: boolean; isolatedHome: boolean; repoInstructionsReinjected: boolean }): AssembledInstructions {
|
|
342
|
+
const profile = config.agentProfile;
|
|
343
|
+
return {
|
|
344
|
+
// A profile-less spawn is host-base: the full host instruction cascade is left available.
|
|
345
|
+
repo: profile ? repoInstructionDisposition(profile, opts.projectScopeDropped, opts.repoInstructionsReinjected) : "allow",
|
|
346
|
+
global: profile ? globalInstructionDisposition(profile, opts.isolatedHome) : "allow",
|
|
347
|
+
systemPromptAppend: Boolean(config.systemPromptAppend?.trim()),
|
|
348
|
+
scopedKnowledge: "none",
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// ── Per-provider MCP resolution (shared by assemble + materialize) ─────────────────
|
|
353
|
+
|
|
354
|
+
interface ClaudeMcpResolution extends McpSourceSelection {
|
|
355
|
+
strictMcp: boolean;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// Assembly and materialization consume identical sources; only provider serialization differs.
|
|
359
|
+
function resolveFlatDeclaredMcp(
|
|
360
|
+
config: RunnerSpawnConfig,
|
|
361
|
+
hostMcp: Record<string, ProvisioningMcpServer>,
|
|
362
|
+
strictMcp: boolean,
|
|
363
|
+
): ClaudeMcpResolution {
|
|
364
|
+
const selected = resolveMcpSources(config, activeSharedMcpServers(hostMcp));
|
|
365
|
+
return {
|
|
366
|
+
...selected,
|
|
367
|
+
declaredMcp: serviceAccessMcpServers(config, selected.declaredMcp),
|
|
368
|
+
hostMcp: serviceAccessMcpServers(config, selected.hostMcp),
|
|
369
|
+
strictMcp,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
function resolveClaudeDeclaredMcp(config: RunnerSpawnConfig): ClaudeMcpResolution {
|
|
374
|
+
const hostMcpInjected = !config.agentProfile || profileMcpCells(config.agentProfile).host;
|
|
375
|
+
return resolveFlatDeclaredMcp(
|
|
376
|
+
config,
|
|
377
|
+
hostMcpInjected ? hostUserScopeMcpServers(config) : {},
|
|
378
|
+
claudeLaunchPromptGateSettings(config).strictMcpConfig,
|
|
379
|
+
);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// OpenCode always launches under an isolated XDG tree, so no ambient host MCP config is copied.
|
|
383
|
+
// The Relay endpoint, trusted project declarations, provisioned servers, and shared callmux bridge
|
|
384
|
+
// still use the same flat-source resolver as Claude so precedence/projection cannot drift.
|
|
385
|
+
function resolveOpenCodeDeclaredMcp(config: RunnerSpawnConfig): ClaudeMcpResolution {
|
|
386
|
+
return resolveFlatDeclaredMcp(config, {}, false);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/** The exact native MCP map materialized into this OpenCode launch's `opencode.json`. */
|
|
390
|
+
export function openCodeMcpConfigForLaunch(config: RunnerSpawnConfig): Record<string, unknown> {
|
|
391
|
+
const { declaredMcp, relayEndpoint } = resolveOpenCodeDeclaredMcp(config);
|
|
392
|
+
return openCodeMcpConfigPayload({
|
|
393
|
+
relayUrl: config.relayUrl,
|
|
394
|
+
generation: runnerMcpGeneration(config.env),
|
|
395
|
+
...(config.relayMcpEndpoint ? { endpoint: config.relayMcpEndpoint } : {}),
|
|
396
|
+
includeRelay: relayEndpoint,
|
|
397
|
+
servers: declaredMcp,
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
interface CodexMcpResolution extends McpSourceSelection {
|
|
402
|
+
/** #1575 — set when the shared-listener route is served through a per-agent metaOnly callmux
|
|
403
|
+
* (Codex worker) rather than the plain flat bridge. Carries the exact config path/url/cwd so
|
|
404
|
+
* materializeCodexAssets writes the SAME file assembleCodex's descriptor points at. #1450 —
|
|
405
|
+
* `relay` adds the identity-bearing relay endpoint as a SECOND downstream (via the runner proxy)
|
|
406
|
+
* when the proxy is active, so the on-demand relay set loads through callmux_call. */
|
|
407
|
+
metaOnlyCallmux?: { configPath: string; url: string; cwd: string; relay?: MetaOnlyRelayDownstream };
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
// #1575 — a Codex worker swaps the flat shared-listener bridge for a per-agent metaOnly callmux so
|
|
411
|
+
// the ~40 downstream schemas load on demand. Gated exactly like phase C's relay allowlist (#1570):
|
|
412
|
+
// an explicitly worker-classified profile AND a provider whose manifest eager-loads every tool
|
|
413
|
+
// schema (no client-native deferral). Data-driven from the manifest, never a provider-identity
|
|
414
|
+
// branch — Claude (client-defers) never takes this path, coordinators/reviewers keep the flat
|
|
415
|
+
// bridge. Requires a relay-owned provisioning home to materialize the per-agent config into (never
|
|
416
|
+
// the host ~/.codex); worker profiles are isolated, so this holds.
|
|
417
|
+
function codexMetaOnlyCallmuxConfigPath(config: RunnerSpawnConfig): string | undefined {
|
|
418
|
+
if (!isCodexLeanWorkerProfile(config.agentProfile?.name)) return undefined;
|
|
419
|
+
// #3024 — callmux_call reaches every listener tool and callmux has no per-downstream denylist, so a
|
|
420
|
+
// profile with a web tool off keeps the flat bridge, where Codex's disabled_tools hides it.
|
|
421
|
+
if (disabledSharedWebTools(config).length) return undefined;
|
|
422
|
+
if (!runnerManagedToolDeferralRoute("codex")) return undefined;
|
|
423
|
+
const home = providerHomePathFor("codex", config);
|
|
424
|
+
return home ? join(home, SHARED_MCP_METAONLY_CONFIG_FILENAME) : undefined;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
// Codex counterpart to resolveClaudeDeclaredMcp — same purity/consistency contract, shared
|
|
428
|
+
// by assembleCodex and materializeCodexAssets.
|
|
429
|
+
function resolveCodexDeclaredMcp(config: RunnerSpawnConfig): CodexMcpResolution {
|
|
430
|
+
const hostMcpInjected = !config.agentProfile || profileMcpCells(config.agentProfile).host;
|
|
431
|
+
const selected = resolveMcpSources(config, hostMcpInjected ? hostCodexMcpServers() : {});
|
|
432
|
+
const { sharedListenerUrl, relayEndpoint } = selected;
|
|
433
|
+
const metaOnlyConfigPath = sharedListenerUrl ? codexMetaOnlyCallmuxConfigPath(config) : undefined;
|
|
434
|
+
// #1450 — front the relay endpoint on-demand through the SAME metaOnly callmux, but ONLY when the
|
|
435
|
+
// runner proxy is active (config.relayMcpEndpoint = the proxy URL, config.mcpProxySecret = its
|
|
436
|
+
// secret) AND the profile has the relay endpoint on. Routing through the proxy keeps the live
|
|
437
|
+
// token off disk (#215). This gate matches runner-core's proxy on-demand-hiding gate exactly, so
|
|
438
|
+
// the direct client's on-demand tools are hidden ONLY when this front simultaneously exists.
|
|
439
|
+
const metaOnlyRelay: MetaOnlyRelayDownstream | undefined =
|
|
440
|
+
metaOnlyConfigPath && relayEndpoint && config.relayMcpEndpoint && config.mcpProxySecret
|
|
441
|
+
? { endpoint: config.relayMcpEndpoint, authSecret: config.mcpProxySecret, generation: runnerMcpGeneration(config.env) }
|
|
442
|
+
: undefined;
|
|
443
|
+
const metaOnlyCallmux = sharedListenerUrl && metaOnlyConfigPath
|
|
444
|
+
? { configPath: metaOnlyConfigPath, url: sharedListenerUrl, cwd: config.cwd, ...(metaOnlyRelay ? { relay: metaOnlyRelay } : {}) }
|
|
445
|
+
: undefined;
|
|
446
|
+
const declaredMcp = serviceAccessMcpServers(config, {
|
|
447
|
+
...selected.effectiveMcp,
|
|
448
|
+
...(sharedListenerUrl ? {
|
|
449
|
+
[SHARED_MCP_SERVER_NAME]: metaOnlyCallmux
|
|
450
|
+
? sharedMcpMetaOnlyServer(metaOnlyCallmux.configPath)
|
|
451
|
+
: withDisabledWebTools(selected.declaredMcp[SHARED_MCP_SERVER_NAME]!, config),
|
|
452
|
+
} : {}),
|
|
453
|
+
});
|
|
454
|
+
return { ...selected, declaredMcp, ...(metaOnlyCallmux ? { metaOnlyCallmux } : {}) };
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
// ── Per-provider arg assembly ──────────────────────────────────────────────────────
|
|
458
|
+
|
|
459
|
+
// #2513 — `provider` parameterizes the claude family: claude-b reuses this assembler whole,
|
|
460
|
+
// and every home/env derivation (providerHomePathFor, configHomeEnv) keys off the id so its
|
|
461
|
+
// launch resolves the claude-b manifest's configDir instead of claude's.
|
|
462
|
+
function assembleClaude(config: RunnerSpawnConfig, providerConfig: ProviderConfig, hostDefaultArgs: string[], provider: string = "claude"): AssembledLaunch {
|
|
463
|
+
const configHome = providerHomePathFor(provider, config);
|
|
464
|
+
const assetHome = configHome;
|
|
465
|
+
const hostPlan = configHome ? claudeHostPlan(config, providerSourceHome(provider), providerConfig) : nativeHostPlan(config, providerConfig);
|
|
466
|
+
const vanilla = profileIsVanillaBase(config);
|
|
467
|
+
const relayPlugin = profileAllowsRelayFeature(config, "plugins");
|
|
468
|
+
const relaySkills = profileAllowsRelayFeature(config, "skills");
|
|
469
|
+
// #3181 — the status line is how Relay tracks a Claude agent's context, so every profile gets it.
|
|
470
|
+
const statusLine = true;
|
|
471
|
+
|
|
472
|
+
const skillSources = configHome ? resolveClaudeSkillSources(configHome, config, provider) : { relay: [], project: [], host: [], shadows: [] };
|
|
473
|
+
const { relay: skills, project: projectSkills, host: hostSkills, shadows: skillSourceShadows } = skillSources;
|
|
474
|
+
// dec#11 — Project settings are ambient native Claude settings, not a Relay-owned
|
|
475
|
+
// copy. Keep the projection fact for the event/report contract, but do not read or
|
|
476
|
+
// materialize `.claude/settings.json` here.
|
|
477
|
+
const projectSettings: ResolvedProjectClaudeSettings = { applied: false, settings: {}, keys: [], ignoredKeys: [] };
|
|
478
|
+
const provisionedPlugins = assetHome ? resolveClaudeProvisionedPlugins(assetHome, config) : [];
|
|
479
|
+
const hookHome = configHome ?? assetHome;
|
|
480
|
+
const provisionedHooks = hookHome ? resolveProvisionedHooks(hookHome, config) : [];
|
|
481
|
+
const projectHooks = resolveProjectHooks(config);
|
|
482
|
+
const projectHooksSuppressed = config.agentProfile?.sources?.project?.hooks?.enabled && !config.agentProfile.projectGates?.hooks?.allowed
|
|
483
|
+
? { reason: config.agentProfile.projectGates?.hooks?.detail ?? "partial — not acknowledged" }
|
|
484
|
+
: undefined;
|
|
485
|
+
const provisionedHookSet = renderProvisionedHookSet([...projectHooks, ...provisionedHooks]);
|
|
486
|
+
// #1096 — for an isolated managed home with no caller --settings, the provisioned hooks are
|
|
487
|
+
// delivered through the managed settings.json (the documented, transit-safe hook source), so
|
|
488
|
+
// keep them OUT of the inline --settings to avoid double-registering the same guard. Host-base
|
|
489
|
+
// and caller-`--settings` launches keep inline delivery (see claudeManagedHookSettings).
|
|
490
|
+
const managedHookSettings = claudeManagedHookSettings(config, configHome, provider);
|
|
491
|
+
const hostHooks = Boolean(configHome && managedHookSettings && hostPlan.selection.hooks && Object.keys(hostClaudeHooks(config, provider)).length);
|
|
492
|
+
const redact = resolveAgentRedact();
|
|
493
|
+
const inlineHookSet = managedHookSettings ? {} : mergeHookSets(mergeHookSets(provisionedHookSet, isAgentRedactInstall(redact) ? redact.claudeHooks : {}), claudeSubagentHooks(config));
|
|
494
|
+
const redaction = isAgentRedactInstall(redact) ? agentRedactOn(managedHookSettings ? "settings.json PostToolUse hooks" : "inline --settings PostToolUse hooks") : redact;
|
|
495
|
+
// #1565 P5.7 — the native-memory lever. Resolved BEFORE the settings args so its keys can ride
|
|
496
|
+
// relay's inline `--settings` (the only settings channel a host-base launch has); the env var
|
|
497
|
+
// below is the one that must always be present, and outranks both settings channels.
|
|
498
|
+
const nativeMemory = resolveClaudeNativeMemoryLever(config, configHome, hostDefaultArgs, (lists) => callerSettingsMergeable(lists, config.cwd), provider);
|
|
499
|
+
const settings = claudeSettingsArgs(
|
|
500
|
+
{ ...projectSettings.settings, ...(relayPlugin ? { enabledPlugins: suppressOwnedClaudePlugins(undefined) } : {}), ...claudeGuardedRelaySettings(config.approvalMode, runnerMcpGeneration(config.env)), ...claudeHostInstructionExcludeSettings(config), ...claudeBypassPermissionSettings(config.approvalMode), ...claudeHarnessTrim(config).settings, ...claudeSubagentSettings(config) },
|
|
501
|
+
inlineHookSet,
|
|
502
|
+
[...projectHooks, ...provisionedHooks].map((h) => h.name),
|
|
503
|
+
statusLine,
|
|
504
|
+
nativeMemory.settings,
|
|
505
|
+
{ cwd: config.cwd, model: config.model, generation: runnerMcpGeneration(config.env) },
|
|
506
|
+
hostDefaultArgs,
|
|
507
|
+
config.providerArgs,
|
|
508
|
+
);
|
|
509
|
+
// The anti-lie invariant (#1096): only report hooks as materialized when they actually reach
|
|
510
|
+
// the launch. If the caller's --settings suppressed them, empty the reported set and surface a
|
|
511
|
+
// loud suppression reason instead of an "applied" report.
|
|
512
|
+
const hooksSuppressed = settings.suppressedHookNames.length
|
|
513
|
+
? { reason: "caller-provided --settings could not be merged (file path or malformed JSON); relay hooks were not injected", names: settings.suppressedHookNames }
|
|
514
|
+
: undefined;
|
|
515
|
+
const deliveredHooks = hooksSuppressed ? [] : provisionedHooks;
|
|
516
|
+
|
|
517
|
+
// Plugin dirs (--plugin-dir loads explicitly, independent of --setting-sources):
|
|
518
|
+
// relay-bundled plugin → only when relay.plugins (carries the relay monitor +
|
|
519
|
+
// turn-lifecycle hooks #556, not reproducible via settings.json).
|
|
520
|
+
// relay-provisioned plugins (#556) → materialized into the isolated home.
|
|
521
|
+
// host plugin dirs → ONLY host-base profiles; isolated/vanilla must not pull them back in.
|
|
522
|
+
const relayPluginDirs = !config.agentProfile && relayPlugin ? bundledIntegrationAssets(config).map(asset => asset.dir) : [];
|
|
523
|
+
// `force-for-plugin: true` in this tiny plugin takes precedence over a caller or
|
|
524
|
+
// ambient `outputStyle` setting, so a host-base launch is covered too (there is no
|
|
525
|
+
// Relay-owned CLAUDE_CONFIG_DIR in which to write a custom style file).
|
|
526
|
+
const provisionedPluginDirs = provisionedPlugins.map((p) => p.dir);
|
|
527
|
+
const hostPluginDirs = selectClaudePluginDirs(hostPlan.pluginDirs, runnerMcpGeneration(config.env), relayPlugin);
|
|
528
|
+
const pluginDirs = [...new Set([resolve(import.meta.dir, "../plugins/claude-output-style"), ...relayPluginDirs, ...provisionedPluginDirs, ...hostPluginDirs])];
|
|
529
|
+
|
|
530
|
+
const { declaredMcp, hostMcp, relayEndpoint, strictMcp, mcpServers, projectServers, hostMcpServers, sharedListenerUrl, sourceShadows: mcpSourceShadows } =
|
|
531
|
+
resolveClaudeDeclaredMcp(config);
|
|
532
|
+
|
|
533
|
+
// #1292 — a provisioned/host server's env/headers can carry a literal secret; inline JSON
|
|
534
|
+
// in --mcp-config lands verbatim in argv (world-readable via ps/proc). Whenever there's a
|
|
535
|
+
// relay-owned scratch dir to write into (any launch with an agentProfile — see
|
|
536
|
+
// providerProvisioningHomePathFor, which gives even host-base profiles a relay-owned dir
|
|
537
|
+
// distinct from the real ~/.claude), route through a 0600 file instead. materializeClaudeAssets
|
|
538
|
+
// writes the file this path points at, from the SAME resolveClaudeDeclaredMcp(config) inputs.
|
|
539
|
+
const mcpConfigFilePath = assetHome ? join(assetHome, "mcp-config.json") : undefined;
|
|
540
|
+
|
|
541
|
+
// #2067 — derive Claude's native setting-source cascade from the Project cells.
|
|
542
|
+
// P.mcp and P.skills have their own controlled channels and are intentionally not
|
|
543
|
+
// triggers. The same list drives the instruction disposition report.
|
|
544
|
+
const settingSources = projectSettingSources(config);
|
|
545
|
+
const projectScopeDropped = Boolean(settingSources && !settingSources.includes("project"));
|
|
546
|
+
// #2086 — when P.hooks forces the project scope off but P.instructions is on, re-inject the repo
|
|
547
|
+
// CLAUDE.md/AGENTS.md through the controlled append-system-prompt channel so the docs are honored
|
|
548
|
+
// rather than silently dropped (see composeSystemPromptAppend / resolveProjectInstructions).
|
|
549
|
+
const { text: composedAppend, reinjected: repoInstructionsReinjected } = composeSystemPromptAppend(config);
|
|
550
|
+
const systemPromptAppend = [composedAppend, ...(harnessSubagentsEnabled(config) ? [] : [HARNESS_SUBAGENTS_DISABLED]), claudeWebToolsSteer(config), CLAUDE_NO_ATTRIBUTION_RULE].filter(Boolean).join("\n\n");
|
|
551
|
+
const instructions = assembleInstructions(config, {
|
|
552
|
+
projectScopeDropped,
|
|
553
|
+
isolatedHome: Boolean(configHome),
|
|
554
|
+
repoInstructionsReinjected,
|
|
555
|
+
});
|
|
556
|
+
|
|
557
|
+
// Launch order matches the historical claude buildSpawnArgs block exactly so existing
|
|
558
|
+
// arg assertions hold: vanilla scope → plugin dirs → MCP → status-line → append.
|
|
559
|
+
const args = [
|
|
560
|
+
...(settingSources ? ["--setting-sources", settingSources.join(",")] : []),
|
|
561
|
+
...pluginDirs.flatMap((dir) => ["--plugin-dir", dir]),
|
|
562
|
+
...claudeMcpLaunchArgs({
|
|
563
|
+
relayUrl: config.relayUrl,
|
|
564
|
+
generation: runnerMcpGeneration(config.env),
|
|
565
|
+
...(config.relayMcpEndpoint ? { endpoint: config.relayMcpEndpoint } : {}),
|
|
566
|
+
includeRelay: relayEndpoint,
|
|
567
|
+
servers: declaredMcp,
|
|
568
|
+
hostServers: hostMcp,
|
|
569
|
+
strict: strictMcp,
|
|
570
|
+
...(mcpConfigFilePath ? { configFilePath: mcpConfigFilePath } : {}),
|
|
571
|
+
}),
|
|
572
|
+
...settings.args,
|
|
573
|
+
...(systemPromptAppend ? ["--append-system-prompt", systemPromptAppend] : []),
|
|
574
|
+
];
|
|
575
|
+
|
|
576
|
+
return {
|
|
577
|
+
provider,
|
|
578
|
+
...(config.agentProfile ? { profile: config.agentProfile } : {}),
|
|
579
|
+
base: config.agentProfile?.base ?? "host",
|
|
580
|
+
vanilla,
|
|
581
|
+
...(configHome ? { configHome } : {}),
|
|
582
|
+
...(settingSources ? { settingSources } : {}),
|
|
583
|
+
relayContext: resolveRelayContext({ slug: "relay.context.claude", config }).available,
|
|
584
|
+
// The Claude bundled skill channel is the bundled plugin itself. Profiled launches
|
|
585
|
+
// intentionally do not receive that plugin, even when relay.skills was requested.
|
|
586
|
+
relaySkills: relayPluginDirs.length > 0,
|
|
587
|
+
relayPlugin: relayPluginDirs.length > 0,
|
|
588
|
+
statusLine: settings.statusLineApplied,
|
|
589
|
+
skills: skills.map((s) => ({ name: s.name, dir: s.dir })),
|
|
590
|
+
hostSkills: hostSkills.map((s) => ({ name: s.name, dir: s.dir })),
|
|
591
|
+
projectSkills: projectSkills.map((s) => ({ name: s.name, dir: s.dir })),
|
|
592
|
+
projectSettings: {
|
|
593
|
+
applied: projectSettings.applied,
|
|
594
|
+
keys: projectSettings.keys,
|
|
595
|
+
ignoredKeys: projectSettings.ignoredKeys,
|
|
596
|
+
...(projectSettings.file ? { file: projectSettings.file } : {}),
|
|
597
|
+
},
|
|
598
|
+
hooks: deliveredHooks.map((h) => ({ name: h.name, dir: h.dir })),
|
|
599
|
+
hostHooks,
|
|
600
|
+
hostHooksEnforceable: true,
|
|
601
|
+
projectHooks: projectHooks.map((h) => ({ name: h.name, dir: h.dir })),
|
|
602
|
+
...(projectHooksSuppressed ? { projectHooksSuppressed } : {}),
|
|
603
|
+
...(hooksSuppressed ? { hooksSuppressed } : {}),
|
|
604
|
+
nativeMemory,
|
|
605
|
+
callerSettingsConsumed: settings.callerSettingsConsumed,
|
|
606
|
+
plugins: provisionedPlugins.map((p) => ({ name: p.name, dir: p.dir })),
|
|
607
|
+
hostPluginDirs,
|
|
608
|
+
hostPlugins: hostPlan.pluginIds,
|
|
609
|
+
hostSources: claudeHostReport(hostPlan, { mcp: hostMcpServers.length > 0, hooks: hostHooks || (!configHome && hostPlan.selection.hooks), skills: hostSkills.length > 0, defaultArgs: hostDefaultArgs.length > 0, env: Object.keys(providerConfig.env ?? {}).length > 0 && hostPlan.selection.settings }),
|
|
610
|
+
hostDefaultArgs,
|
|
611
|
+
mcp: {
|
|
612
|
+
...(runnerMcpGeneration(config.env) === "humwick" ? { generation: "humwick" as const } : {}),
|
|
613
|
+
relayEndpoint, strict: strictMcp, servers: mcpServers, projectServers, hostServers: hostMcpServers,
|
|
614
|
+
...(sharedListenerUrl ? { sharedListener: { url: sharedListenerUrl } } : {}),
|
|
615
|
+
},
|
|
616
|
+
sourceShadows: [...skillSourceShadows, ...mcpSourceShadows],
|
|
617
|
+
instructions,
|
|
618
|
+
args,
|
|
619
|
+
env: writeChildEnv({}, { ...configHomeEnv(provider, configHome, config.env), ...nativeMemory.env, ...fffMcpHookEnv(config), ...webToolsEnv(config), ...agentRedactEnv(redaction) }),
|
|
620
|
+
redaction,
|
|
621
|
+
};
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
function assembleCodex(config: RunnerSpawnConfig, providerConfig: ProviderConfig, hostDefaultArgs: string[]): AssembledLaunch {
|
|
625
|
+
const configHome = providerHomePathFor("codex", config);
|
|
626
|
+
const vanilla = profileIsVanillaBase(config);
|
|
627
|
+
const relayEndpoint = profileAllowsRelayFeature(config, "mcp");
|
|
628
|
+
|
|
629
|
+
const { provisioned: provisionedSkills, bundled: bundledSkillDirs, hostRoots, disabled: disabledSkillDirs, roots: skillDirs } = codexSkillSources(config);
|
|
630
|
+
const hostPlan = configHome ? codexHostPlan(config, providerSourceHome("codex")) : undefined;
|
|
631
|
+
const hostSelection = hostSourcesFor(config);
|
|
632
|
+
// #1096 review, findings 3 & 4 — Codex delivers hooks via CODEX_HOME/hooks.json, so a launch
|
|
633
|
+
// can only carry them when it has an isolated CODEX_HOME (host-base profiles reuse the real
|
|
634
|
+
// ~/.codex, which relay must not clobber) AND the installed Codex is new enough to consume the
|
|
635
|
+
// file. Resolve the profile's hook definitions to decide whether there was anything to deliver;
|
|
636
|
+
// any absence is reported LOUDLY (hooksSuppressed) instead of a silent "not-applicable".
|
|
637
|
+
const resolvedHookDefs = profileProvisioning(config).hooks ?? [];
|
|
638
|
+
const hooksSupported = codexHooksSupported(providerConfig.command);
|
|
639
|
+
const provisionedHooks = configHome && hooksSupported ? resolveProvisionedHooks(configHome, config) : [];
|
|
640
|
+
const hooksSuppressed = resolvedHookDefs.length && provisionedHooks.length === 0
|
|
641
|
+
? {
|
|
642
|
+
reason: !configHome
|
|
643
|
+
? "Codex host-base profile has no managed CODEX_HOME; relay will not overwrite the host ~/.codex/hooks.json, so the baseline guard cannot be delivered"
|
|
644
|
+
: "installed Codex is older than 0.124 and ignores CODEX_HOME/hooks.json (set AGENT_RELAY_CODEX_VERSION to override the probe)",
|
|
645
|
+
names: resolvedHookDefs.map((h) => h.name),
|
|
646
|
+
}
|
|
647
|
+
: undefined;
|
|
648
|
+
const { declaredMcp, hostMcpServers, mcpServers, projectServers, sharedListenerUrl, metaOnlyCallmux, sourceShadows: mcpSourceShadows } = resolveCodexDeclaredMcp(config);
|
|
649
|
+
// Supported Codex releases consume CODEX_HOME/hooks.json. Host hooks are copied only when
|
|
650
|
+
// that real provider lever is available; older releases are left untouched and reported as
|
|
651
|
+
// unenforceable rather than claiming an artifact the provider ignores.
|
|
652
|
+
const hostHookSet = configHome && hooksSupported && hostSelection.hooks ? hostCodexHooks() : {};
|
|
653
|
+
const hostHooks = Object.keys(hostHookSet).length > 0;
|
|
654
|
+
// #3025 — redaction rides the `-c` session-flags layer, so host-base launches keep ~/.codex.
|
|
655
|
+
const redact = resolveAgentRedact();
|
|
656
|
+
const redaction: AgentRedactState = !isAgentRedactInstall(redact) ? redact
|
|
657
|
+
: !hooksSupported ? { state: "unavailable", reason: "installed Codex is older than 0.124 and ignores hooks" }
|
|
658
|
+
: agentRedactOn("-c session-flags PostToolUse hook (pre-trusted)");
|
|
659
|
+
|
|
660
|
+
// Codex has no `--setting-sources`: only a vanilla base drops the ambient project doc
|
|
661
|
+
// (`project_doc_max_bytes=0`); an isolated CODEX_HOME drops host/global config.toml. There is
|
|
662
|
+
// no P.hooks→scope-drop interference here (only a vanilla base suppresses the project doc), so
|
|
663
|
+
// Codex never re-injects repo instructions (#2086 is Claude's `--setting-sources` surface).
|
|
664
|
+
const instructions = assembleInstructions(config, {
|
|
665
|
+
projectScopeDropped: vanilla,
|
|
666
|
+
isolatedHome: Boolean(configHome),
|
|
667
|
+
repoInstructionsReinjected: false,
|
|
668
|
+
});
|
|
669
|
+
|
|
670
|
+
// #1292 — a provisioned/project server's env can carry a literal secret; `-c
|
|
671
|
+
// mcp_servers.<name>.env.<K>=<V>` lands verbatim in argv (world-readable via ps/proc).
|
|
672
|
+
// An ISOLATED CODEX_HOME is a relay-owned per-instance dir Codex actually reads as its
|
|
673
|
+
// config home, so route command/args/url/env through CODEX_HOME/config.toml instead
|
|
674
|
+
// (materializeCodexAssets writes it) and keep only the non-secret timeout overrides in
|
|
675
|
+
// argv. Host-base Codex has no isolated CODEX_HOME to write into (it reuses the real
|
|
676
|
+
// ~/.codex, which relay must not persist provisioned secrets into) — same accepted gap as
|
|
677
|
+
// the hooksSuppressed carve-out above, unchanged from prior behavior.
|
|
678
|
+
const mcpArgs = configHome ? codexProvisionedMcpTimeoutArgs(declaredMcp) : codexProvisionedMcpArgs(declaredMcp);
|
|
679
|
+
|
|
680
|
+
// The skills/MCP/project-doc block; core launch config (model/approval/listen) stays
|
|
681
|
+
// in the adapter. -c overrides are order-independent, so the assembled block is contiguous.
|
|
682
|
+
// #1565 P5.7 — Codex's native-memory lever rides the same `-c` argv precedent as the
|
|
683
|
+
// project-doc suppressor above it (`-c project_doc_max_bytes=0`). Argv outranks config.toml, so
|
|
684
|
+
// this is the portable/authoritative half; the isolated CODEX_HOME config.toml is the belt.
|
|
685
|
+
const nativeMemory = resolveNativeMemoryLever({ provider: "codex", config, isolatedHome: Boolean(configHome) });
|
|
686
|
+
|
|
687
|
+
const args = [
|
|
688
|
+
...bundledSkillConfigArgs(skillDirs, disabledSkillDirs),
|
|
689
|
+
...(relayEndpoint ? relayMcpCodexConfigArgs(config.relayUrl, config.relayMcpEndpoint, runnerMcpGeneration(config.env)) : []),
|
|
690
|
+
...mcpArgs,
|
|
691
|
+
...codexRetiredMcpConfigArgs(config),
|
|
692
|
+
...codexProjectDocSuppressionArgs(config),
|
|
693
|
+
...nativeMemory.args,
|
|
694
|
+
...(redaction.state === "on" && isAgentRedactInstall(redact) ? codexSessionHookArgs(redact.codexHooks) : []),
|
|
695
|
+
];
|
|
696
|
+
|
|
697
|
+
return {
|
|
698
|
+
provider: "codex",
|
|
699
|
+
...(config.agentProfile ? { profile: config.agentProfile } : {}),
|
|
700
|
+
base: config.agentProfile?.base ?? "host",
|
|
701
|
+
vanilla,
|
|
702
|
+
...(configHome ? { configHome } : {}),
|
|
703
|
+
relayContext: false, relayContextPending: resolveRelayContext({ slug: "relay.context.codex", config }).available,
|
|
704
|
+
// Profiled launches use only resolved provisioning; bundled skill dirs are emitted
|
|
705
|
+
// exclusively for profile-less launches.
|
|
706
|
+
relaySkills: bundledSkillDirs.length > 0,
|
|
707
|
+
relayPlugin: false,
|
|
708
|
+
statusLine: false,
|
|
709
|
+
skills: provisionedSkills.map((s) => ({ name: s.name, dir: s.dir })),
|
|
710
|
+
hostSkills: hostRoots.map((dir) => ({ name: basename(dir), dir })),
|
|
711
|
+
projectSkills: [],
|
|
712
|
+
projectSettings: { applied: false, keys: [], ignoredKeys: [] },
|
|
713
|
+
projectHooks: [],
|
|
714
|
+
hooks: provisionedHooks.map((h) => ({ name: h.name, dir: h.dir })),
|
|
715
|
+
hostHooks,
|
|
716
|
+
hostHooksEnforceable: !configHome || !hostSelection.hooks || hooksSupported,
|
|
717
|
+
...(hooksSuppressed ? { hooksSuppressed } : {}),
|
|
718
|
+
nativeMemory,
|
|
719
|
+
callerSettingsConsumed: false,
|
|
720
|
+
plugins: [],
|
|
721
|
+
hostPluginDirs: [],
|
|
722
|
+
hostPlugins: [],
|
|
723
|
+
hostSources: hostPlan
|
|
724
|
+
? codexHostReport(hostPlan, {
|
|
725
|
+
mcp: hostMcpServers.length > 0,
|
|
726
|
+
hooks: !hostSelection.hooks ? "disabled" : !hooksSupported ? "unsupported" : hostHooks ? "applied" : "selected-empty",
|
|
727
|
+
defaultArgs: hostDefaultArgs.length > 0,
|
|
728
|
+
env: Object.keys(providerConfig.env ?? {}).length > 0 && hostSelection.settings,
|
|
729
|
+
})
|
|
730
|
+
: nativeHostReport(),
|
|
731
|
+
hostDefaultArgs,
|
|
732
|
+
mcp: {
|
|
733
|
+
...(runnerMcpGeneration(config.env) === "humwick" ? { generation: "humwick" as const } : {}),
|
|
734
|
+
relayEndpoint, strict: false, servers: mcpServers, projectServers, hostServers: hostMcpServers,
|
|
735
|
+
...(sharedListenerUrl ? { sharedListener: { url: sharedListenerUrl, ...(metaOnlyCallmux ? { metaOnly: true } : {}), ...(metaOnlyCallmux?.relay ? { relayFronted: true } : {}) } } : {}),
|
|
736
|
+
},
|
|
737
|
+
sourceShadows: mcpSourceShadows,
|
|
738
|
+
instructions,
|
|
739
|
+
args,
|
|
740
|
+
env: writeChildEnv({}, { ...configHomeEnv("codex", configHome), ...webToolsEnv(config), ...agentRedactEnv(redaction) }),
|
|
741
|
+
redaction,
|
|
742
|
+
};
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
// OpenCode owns an isolated XDG tree inside its adapter rather than consuming Relay's generic
|
|
746
|
+
// provider-home asset formats. It still needs a complete projection object: RunnerCore assembles
|
|
747
|
+
// every normal provider before registration and launch-injection reporting.
|
|
748
|
+
function assembleOpenCode(config: RunnerSpawnConfig, provider: string): AssembledLaunch {
|
|
749
|
+
const { relayEndpoint, mcpServers, projectServers, hostMcpServers, sharedListenerUrl, sourceShadows } = resolveOpenCodeDeclaredMcp(config);
|
|
750
|
+
const instructions = assembleInstructions(config, {
|
|
751
|
+
projectScopeDropped: false,
|
|
752
|
+
isolatedHome: true,
|
|
753
|
+
repoInstructionsReinjected: false,
|
|
754
|
+
});
|
|
755
|
+
const redact = resolveAgentRedact();
|
|
756
|
+
const redaction = isAgentRedactInstall(redact) ? agentRedactOn("OpenCode config plugins/agent-redact.ts (serve without --pure)") : redact;
|
|
757
|
+
return {
|
|
758
|
+
provider,
|
|
759
|
+
...(config.agentProfile ? { profile: config.agentProfile } : {}),
|
|
760
|
+
base: config.agentProfile?.base ?? "host",
|
|
761
|
+
vanilla: profileIsVanillaBase(config),
|
|
762
|
+
// OpenCode has no launch-level instruction field: both independently gated blocks are sent
|
|
763
|
+
// only with the first initial/inbox turn. Keep availability distinct from an emitted launch
|
|
764
|
+
// artifact so projection never mistakes configured systemPromptAppend for delivery proof.
|
|
765
|
+
relayContext: false, relayContextPending: resolveRelayContext({ slug: "relay.context.opencode", config }).available, launchContextPending: Boolean(config.systemPromptAppend?.trim()),
|
|
766
|
+
relaySkills: false,
|
|
767
|
+
relayPlugin: false,
|
|
768
|
+
statusLine: false,
|
|
769
|
+
skills: [],
|
|
770
|
+
hostSkills: [],
|
|
771
|
+
projectSkills: [],
|
|
772
|
+
projectSettings: { applied: false, keys: [], ignoredKeys: [] },
|
|
773
|
+
hooks: [],
|
|
774
|
+
hostHooks: false,
|
|
775
|
+
hostHooksEnforceable: false,
|
|
776
|
+
projectHooks: [],
|
|
777
|
+
nativeMemory: resolveNativeMemoryLever({ provider, config }),
|
|
778
|
+
callerSettingsConsumed: false,
|
|
779
|
+
plugins: [],
|
|
780
|
+
hostPluginDirs: [],
|
|
781
|
+
hostPlugins: [],
|
|
782
|
+
// OpenCode owns its isolated XDG tree; no host class reaches it.
|
|
783
|
+
hostSources: { instructions: "unsupported", mcp: "unsupported", hooks: "unsupported", skills: "unsupported", plugins: "unsupported", settings: "unsupported" },
|
|
784
|
+
hostDefaultArgs: [],
|
|
785
|
+
mcp: {
|
|
786
|
+
...(runnerMcpGeneration(config.env) === "humwick" ? { generation: "humwick" as const } : {}),
|
|
787
|
+
relayEndpoint, strict: false, servers: mcpServers, projectServers, hostServers: hostMcpServers,
|
|
788
|
+
...(sharedListenerUrl ? { sharedListener: { url: sharedListenerUrl } } : {}),
|
|
789
|
+
},
|
|
790
|
+
sourceShadows,
|
|
791
|
+
instructions,
|
|
792
|
+
args: [],
|
|
793
|
+
env: writeChildEnv({}, { ...webToolsEnv(config), ...agentRedactEnv(redaction) }),
|
|
794
|
+
redaction,
|
|
795
|
+
};
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
// ── Manifest-driven env + dispatch ────────────────────────────────────────────
|
|
799
|
+
|
|
800
|
+
function configHomeEnv(provider: string, configHome: string | undefined, launchEnv?: Record<string, string>): Record<string, string> {
|
|
801
|
+
const manifest = getManifest(provider);
|
|
802
|
+
const envVar = manifest?.home?.configDirEnvVar;
|
|
803
|
+
if (!envVar) return {};
|
|
804
|
+
if (configHome) return { [envVar]: configHome };
|
|
805
|
+
// #2513 review HIGH-1 — a dedicatedHome provider (claude-b) pins the env var at its OWN
|
|
806
|
+
// effective host home even on host-base/profile-less launches, so the provider binary
|
|
807
|
+
// never falls back to the primary family home (~/.claude). The primary providers
|
|
808
|
+
// (claude, codex) keep their historical no-export host-base behavior.
|
|
809
|
+
const hostHome = providerHostConfigHome(provider);
|
|
810
|
+
if (hostHome) return { [envVar]: hostHome };
|
|
811
|
+
// #772 — a caller passing launchEnv (claude) opts in to pinning the effective dir (launch
|
|
812
|
+
// env, else the runner's) so the session-status probe, which falls back to the runner's
|
|
813
|
+
// value, reads the dir the provider process uses. Unset everywhere stays unpinned.
|
|
814
|
+
if (!launchEnv) return {};
|
|
815
|
+
const effective = relayEnv(launchEnv, envVar) || relayEnv(process.env, envVar);
|
|
816
|
+
return effective ? { [envVar]: effective } : {};
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
type Assembler = (config: RunnerSpawnConfig, providerConfig: ProviderConfig, hostDefaultArgs: string[]) => AssembledLaunch;
|
|
820
|
+
type Materializer = (config: RunnerSpawnConfig) => void;
|
|
821
|
+
|
|
822
|
+
const claudeFamily = getAllManifests().filter((manifest) => manifest.shim?.kind === "claude-relay");
|
|
823
|
+
const ASSEMBLERS: Record<string, Assembler> = {
|
|
824
|
+
...Object.fromEntries(claudeFamily.map((manifest) => [manifest.id, (config: RunnerSpawnConfig, providerConfig: ProviderConfig, hostDefaultArgs: string[]) => assembleClaude(config, providerConfig, hostDefaultArgs, manifest.id)])),
|
|
825
|
+
codex: assembleCodex,
|
|
826
|
+
...Object.fromEntries(getAllManifests().filter((manifest) => manifest.opencode).map((manifest) => [manifest.id, (config: RunnerSpawnConfig) => assembleOpenCode(config, manifest.id)])),
|
|
827
|
+
};
|
|
828
|
+
|
|
829
|
+
const MATERIALIZERS: Record<string, Materializer> = {
|
|
830
|
+
...Object.fromEntries(claudeFamily.map((manifest) => [manifest.id, (config: RunnerSpawnConfig) => materializeClaudeAssets(config, manifest.id)])),
|
|
831
|
+
codex: materializeCodexAssets,
|
|
832
|
+
};
|
|
833
|
+
|
|
834
|
+
function materializeClaudeAssets(config: RunnerSpawnConfig, provider: string = "claude"): void {
|
|
835
|
+
const configHome = providerHomePathFor(provider, config);
|
|
836
|
+
if (!configHome) return;
|
|
837
|
+
const hostPlan = claudeHostPlan(config, providerSourceHome(provider));
|
|
838
|
+
const skillSources = resolveClaudeSkillSources(configHome, config, provider);
|
|
839
|
+
// #3387 — host classes first: drop what an opted-out class left in this reused home, then link
|
|
840
|
+
// the selected ones, before Relay/Project skills claim their names.
|
|
841
|
+
materializeHostAssets(configHome, hostPlan.links, hostPlan.files, skillSources.host.map((skill) => relative(configHome, skill.dir)));
|
|
842
|
+
materializeResolvedAssets(skillSources.relay);
|
|
843
|
+
materializeResolvedAssets(skillSources.project);
|
|
844
|
+
materializeResolvedAssets(skillSources.host);
|
|
845
|
+
materializeResolvedAssets(resolveProvisionedHooks(configHome, config));
|
|
846
|
+
materializeResolvedAssets(resolveProjectHooks(config));
|
|
847
|
+
// #1096 — land the provisioned hooks in the managed home's settings.json (the documented
|
|
848
|
+
// hook source), matching the assembler's decision to keep them out of the inline --settings.
|
|
849
|
+
// #1565 P5.7 — the native-memory keys ride the SAME file (the isolated-home belt behind the
|
|
850
|
+
// env lever). #3387 — so do the selected host settings and native plugin enablement: this is
|
|
851
|
+
// the one writer of the managed settings.json, so nothing later can wipe plugin enablement.
|
|
852
|
+
const managedHookSettings = claudeManagedHookSettings(config, configHome, provider);
|
|
853
|
+
const nativeMemorySettings = claudeManagedNativeMemorySettings(config, configHome, (lists) => callerSettingsMergeable(lists, config.cwd), provider);
|
|
854
|
+
// T3182 — the SendFeedback deny rides EVERY managed settings.json this launch writes (the
|
|
855
|
+
// file-channel belt behind the CLAUDE_CODE_SEND_FEEDBACK=0 env lever, so a stripped env
|
|
856
|
+
// still removes the tool): merged into the full payload AND the belt-retry payload so the
|
|
857
|
+
// retry can never drop it.
|
|
858
|
+
const withManagedPermissions = (settings: Record<string, unknown>) => withManagedClaudePermissions(settings, config.approvalMode, runnerMcpGeneration(config.env));
|
|
859
|
+
const baseSettings = { ...hostPlan.settings, ...(managedHookSettings ?? {}) };
|
|
860
|
+
// The hook and selected-host halves of this file are NOT best-effort (a missing baseline guard
|
|
861
|
+
// is a real regression, #1096; a selected host class must never silently vanish, #3387), so
|
|
862
|
+
// only the native-memory contribution is guarded: on a write failure, retry without it.
|
|
863
|
+
if (applyNativeMemoryBelt("the Claude managed settings.json", () => writeClaudeSettingsJson(configHome, withManagedPermissions({ ...baseSettings, ...nativeMemorySettings }))) && Object.keys(baseSettings).length) {
|
|
864
|
+
writeClaudeSettingsJson(configHome, withManagedPermissions(baseSettings));
|
|
865
|
+
}
|
|
866
|
+
materializeResolvedAssets(resolveClaudeProvisionedPlugins(configHome, config));
|
|
867
|
+
// #1292 — write the file assembleClaude's --mcp-config <path> points at, from the SAME
|
|
868
|
+
// resolveClaudeDeclaredMcp(config) inputs (see the purity/consistency note there). Keeps
|
|
869
|
+
// provisioned/host-server env/headers secrets out of argv.
|
|
870
|
+
const { declaredMcp, hostMcp, relayEndpoint, strictMcp } = resolveClaudeDeclaredMcp(config);
|
|
871
|
+
const mcpServers = claudeMcpConfigPayload({
|
|
872
|
+
relayUrl: config.relayUrl,
|
|
873
|
+
generation: runnerMcpGeneration(config.env),
|
|
874
|
+
...(config.relayMcpEndpoint ? { endpoint: config.relayMcpEndpoint } : {}),
|
|
875
|
+
includeRelay: relayEndpoint,
|
|
876
|
+
servers: declaredMcp,
|
|
877
|
+
hostServers: hostMcp,
|
|
878
|
+
});
|
|
879
|
+
const mcpConfigPath = join(configHome, "mcp-config.json");
|
|
880
|
+
if (Object.keys(mcpServers).length || strictMcp) {
|
|
881
|
+
writeFileSync(mcpConfigPath, JSON.stringify({ mcpServers }, null, 2), { mode: 0o600 });
|
|
882
|
+
} else {
|
|
883
|
+
rmSync(mcpConfigPath, { force: true });
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
function materializeCodexAssets(config: RunnerSpawnConfig): void {
|
|
888
|
+
const configHome = providerHomePathFor("codex", config);
|
|
889
|
+
if (!configHome) return;
|
|
890
|
+
const hostPlan = codexHostPlan(config, providerSourceHome("codex"));
|
|
891
|
+
materializeHostAssets(configHome, hostPlan.links, []);
|
|
892
|
+
writeCodexHostSettings(configHome, hostPlan.settings, tomlInlineValue);
|
|
893
|
+
materializeResolvedAssets(resolveCodexProvisionedSkills(configHome, config));
|
|
894
|
+
// #1096 review, finding 4 — don't write CODEX_HOME/hooks.json for a Codex that would ignore it;
|
|
895
|
+
// keep disk == report (the assembler reports these hooks suppressed for such a launch).
|
|
896
|
+
if (codexHooksSupported(config.providerConfig.command)) {
|
|
897
|
+
const relayHooks = resolveProvisionedHooks(configHome, config);
|
|
898
|
+
materializeResolvedAssets(relayHooks);
|
|
899
|
+
const relayHookSet = renderProvisionedHookSet(relayHooks);
|
|
900
|
+
const hostHookSet = hostPlan.selection.hooks ? hostCodexHooks() : {};
|
|
901
|
+
writeCodexHooksJson(configHome, mergeHookSets(hostHookSet, relayHookSet));
|
|
902
|
+
}
|
|
903
|
+
// #1292 — write the CODEX_HOME/config.toml sections assembleCodex's non-secret -c
|
|
904
|
+
// timeout-only overrides expect to find command/args/url/env in (see the mcpArgs branch
|
|
905
|
+
// there). Same resolveCodexDeclaredMcp(config) inputs, so disk == launch.
|
|
906
|
+
const { declaredMcp, metaOnlyCallmux } = resolveCodexDeclaredMcp(config);
|
|
907
|
+
writeCodexMcpServersToml(configHome, declaredMcp);
|
|
908
|
+
// #1565 P5.7 — the isolated-home belt behind the `-c features.memories=…` argv lever. Same
|
|
909
|
+
// resolveNativeMemoryLever inputs assembleCodex used, so disk == launch. No-op for an
|
|
910
|
+
// undeclared profile (`configToml` is empty, so nothing is written). Guarded: never fails the spawn.
|
|
911
|
+
applyNativeMemoryBelt("the Codex CODEX_HOME/config.toml [features] table", () => {
|
|
912
|
+
writeCodexFeaturesToml(configHome, resolveNativeMemoryLever({ provider: "codex", config, isolatedHome: true }).configToml);
|
|
913
|
+
});
|
|
914
|
+
// #1575/#1450 — write the per-agent metaOnly config the shared-listener descriptor points at
|
|
915
|
+
// (`callmux --config <path>`), from the SAME resolveCodexDeclaredMcp inputs so disk == launch.
|
|
916
|
+
// The optional relay downstream (#1450) rides here too, so the on-demand relay front and the
|
|
917
|
+
// agent's stdio callmux descriptor come from one resolution.
|
|
918
|
+
if (metaOnlyCallmux) {
|
|
919
|
+
writeSharedMcpMetaOnlyConfig(metaOnlyCallmux.configPath, metaOnlyCallmux.url, metaOnlyCallmux.cwd, metaOnlyCallmux.relay);
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
/**
|
|
924
|
+
* Assemble the launch for `provider` from the resolved profile + provisioning. PURE:
|
|
925
|
+
* resolves which declared assets exist (filesystem reads) but writes nothing. A missing
|
|
926
|
+
* `agentProfile` assembles the legacy default (host base, relay features on, no provisioning).
|
|
927
|
+
*/
|
|
928
|
+
export function assembleLaunch(provider: SpawnProvider, config: RunnerSpawnConfig, providerConfig: ProviderConfig): AssembledLaunch {
|
|
929
|
+
const assembler = ASSEMBLERS[provider];
|
|
930
|
+
if (!assembler) throw new Error(`no launch assembler registered for provider: ${provider}`);
|
|
931
|
+
runnerManagedToolDeferralRoute(provider);
|
|
932
|
+
const hostDefaultArgs = hostProviderDefaultArgs(config, providerConfig);
|
|
933
|
+
const serviceEnv = serviceAccessLaunchEnv(config);
|
|
934
|
+
const assembled = assembler(config, providerConfig, hostDefaultArgs);
|
|
935
|
+
return { ...assembled, env: writeChildEnv({}, { ...assembled.env, ...serviceEnv }) };
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
/**
|
|
939
|
+
* Write the provisioned assets the assembly describes (skills/plugins/hooks and Codex
|
|
940
|
+
* hooks.json). Driven by the SAME resolvers `assembleLaunch` uses, so disk == launch ==
|
|
941
|
+
* report. Idempotent; the isolated home must already exist (prepare*ProfileHome). No-op
|
|
942
|
+
* for a host-base profile.
|
|
943
|
+
*/
|
|
944
|
+
export function materializeLaunchAssembly(provider: SpawnProvider, config: RunnerSpawnConfig): void {
|
|
945
|
+
if (!config.agentProfile && runnerMcpGeneration(config.env) === "humwick") {
|
|
946
|
+
const feature = getManifest(provider)?.provisioning?.bundledSkills ? "skills" : "plugins";
|
|
947
|
+
if (profileAllowsRelayFeature(config, feature)) {
|
|
948
|
+
materializeProviderHome(bundledIntegrationHome(config), { provider, profile: "integrations", instanceId: config.instanceId || config.runnerId, agentId: config.agentId });
|
|
949
|
+
materializeResolvedAssets(bundledIntegrationAssets(config));
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
if (!providerHomePathFor(provider, config)) return;
|
|
953
|
+
const materializer = MATERIALIZERS[provider];
|
|
954
|
+
if (materializer) materializer(config);
|
|
955
|
+
}
|