@humwick/server 0.0.0-stage → 0.130.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLA.md +66 -0
- package/CONTRIBUTING.md +144 -0
- package/LICENSE +167 -0
- package/README.md +511 -2
- package/SECURITY.md +67 -0
- package/THIRD_PARTY_NOTICES.md +144 -0
- package/bundled/prompts/README.md +10 -0
- package/bundled/prompts/context.advisory.compact.md +1 -0
- package/bundled/prompts/context.advisory.warn.md +1 -0
- package/bundled/prompts/continuation.envelope.md +18 -0
- package/bundled/prompts/manifest.json +838 -0
- package/bundled/prompts/memory.capture.boundary.post.md +1 -0
- package/bundled/prompts/memory.capture.boundary.pre.md +1 -0
- package/bundled/prompts/memory.charter.md +3 -0
- package/bundled/prompts/memory.native-off.md +0 -0
- package/bundled/prompts/notify.agent.exited.md +1 -0
- package/bundled/prompts/notify.agent.never-ready.md +1 -0
- package/bundled/prompts/notify.agent.ready.md +1 -0
- package/bundled/prompts/notify.automation.budget-warning.md +1 -0
- package/bundled/prompts/notify.land.failure.md +1 -0
- package/bundled/prompts/notify.land.steward-taken.coordinator.md +1 -0
- package/bundled/prompts/notify.land.steward-taken.md +1 -0
- package/bundled/prompts/notify.land.success.md +1 -0
- package/bundled/prompts/notify.routing.policy-changed.md +2 -0
- package/bundled/prompts/notify.spawn.failed.md +1 -0
- package/bundled/prompts/notify.spawn.queued.md +1 -0
- package/bundled/prompts/notify.spawn.recovered.md +1 -0
- package/bundled/prompts/notify.spawn.unconfirmed.md +1 -0
- package/bundled/prompts/profile.coordinator.charter.md +17 -0
- package/bundled/prompts/profile.debugger.system.md +12 -0
- package/bundled/prompts/profile.device-qa.system.md +10 -0
- package/bundled/prompts/profile.image-gen.append.0.md +2 -0
- package/bundled/prompts/profile.image-gen.system.md +4 -0
- package/bundled/prompts/profile.ops-assistant.brief.md +4 -0
- package/bundled/prompts/profile.probe.system.md +5 -0
- package/bundled/prompts/profile.qa.system.md +10 -0
- package/bundled/prompts/profile.sec-ops.system.md +14 -0
- package/bundled/prompts/profile.social-media.system.md +7 -0
- package/bundled/prompts/profile.software-design.system.md +26 -0
- package/bundled/prompts/profile.sub-coordinator.charter.md +2 -0
- package/bundled/prompts/profile.worker-gui.system.md +7 -0
- package/bundled/prompts/profile.worker.system.md +2 -0
- package/bundled/prompts/relay.agent-core.delivery.md +13 -0
- package/bundled/prompts/relay.agent-core.engineering.md +13 -0
- package/bundled/prompts/relay.agent-core.md +22 -0
- package/bundled/prompts/relay.context.claude.md +1 -0
- package/bundled/prompts/relay.context.claude.readonly.md +3 -0
- package/bundled/prompts/relay.context.codex.md +1 -0
- package/bundled/prompts/relay.context.opencode.md +1 -0
- package/bundled/prompts/relay.manual.claude.md +8 -0
- package/bundled/prompts/relay.search.fff.md +1 -0
- package/bundled/prompts/relay.temp-dir.md +1 -0
- package/bundled/prompts/relay.web.brave.md +1 -0
- package/bundled/prompts/relay.web.fetch.md +1 -0
- package/bundled/prompts/skill.device-lane.md +20 -0
- package/bundled/prompts/skill.security-code-review.md +10 -0
- package/bundled/prompts/skill.security-hardening.md +10 -0
- package/bundled/prompts/skill.security-host-audit.md +11 -0
- package/bundled/prompts/spawn.primer.md +6 -0
- package/bundled/prompts/spawn.reportup.child.md +3 -0
- package/bundled/prompts/spawn.reportup.coordinator.md +2 -0
- package/bundled/prompts/spawn.reportup.workflow-step.md +4 -0
- package/bundled/prompts/spawn.validation.delivery.md +1 -0
- package/bundled/prompts/spawn.validation.iterate.generic.md +1 -0
- package/bundled/prompts/spawn.validation.iterate.imperative.md +1 -0
- package/bundled/prompts/spawn.validation.landgates.header.md +1 -0
- package/bundled/prompts/steward.merge-stall.md +1 -0
- package/bundled/prompts/steward.prompt.md +20 -0
- package/bundled/prompts/steward.wake.md +1 -0
- package/bundled/prompts/task.claim.instruction.md +1 -0
- package/bundled/prompts/task.hydration.md +23 -0
- package/bundled/prompts/user.response.brief.md +1 -0
- package/bundled/prompts/user.response.normal.md +1 -0
- package/bundled/prompts/user.style.neutral.md +1 -0
- package/bundled/prompts/user.style.warm.md +1 -0
- package/bundled/prompts/workspace.deps.command.md +1 -0
- package/bundled/prompts/workspace.deps.none.md +1 -0
- package/bundled/prompts/workspace.deps.symlink.md +1 -0
- package/bundled/prompts/workspace.lifecycle.md +4 -0
- package/bundled/prompts/workspace.mcp.instructions.md +7 -0
- package/bundled/prompts/workspace.phase.abandoned.headline.md +1 -0
- package/bundled/prompts/workspace.phase.abandoned.hint.md +1 -0
- package/bundled/prompts/workspace.phase.active.headline.md +1 -0
- package/bundled/prompts/workspace.phase.active.hint.md +1 -0
- package/bundled/prompts/workspace.phase.conflict.headline.md +1 -0
- package/bundled/prompts/workspace.phase.conflict.hint.md +1 -0
- package/bundled/prompts/workspace.phase.merge-planned.headline.md +1 -0
- package/bundled/prompts/workspace.phase.merge-planned.hint.md +1 -0
- package/bundled/prompts/workspace.phase.merged.headline.md +1 -0
- package/bundled/prompts/workspace.phase.merged.hint.md +1 -0
- package/bundled/prompts/workspace.phase.ready.headline.md +1 -0
- package/bundled/prompts/workspace.phase.ready.hint.md +1 -0
- package/bundled/prompts/workspace.ready.contract.md +6 -0
- package/bundled/prompts/workspace.symlinks.md +1 -0
- package/bundled/roles/builder.md +18 -0
- package/bundled/roles/design-reviewer.md +13 -0
- package/bundled/roles/designer.md +11 -0
- package/bundled/roles/plan-auditor.md +29 -0
- package/bundled/roles/reviewer.md +36 -0
- package/bundled/roles/slice-qa.md +13 -0
- package/bundled/roles/verifier.md +13 -0
- package/bundled/skills/agent-browser/SKILL.md +72 -0
- package/bundled/skills/test-audit/SKILL.md +75 -0
- package/bundled/workflows/build-review.yaml +8 -0
- package/bundled/workflows/design-review.yaml +60 -0
- package/bundled/workflows/plan-conformance.yaml +5 -0
- package/bundled/workflows/slice-proof.yaml +85 -0
- package/bundled/workflows/verify-deployed.yaml +140 -0
- package/docs/guides/sub-coordinators.md +114 -0
- package/docs/guides/tools-administration.md +83 -0
- package/docs/guides/tools-agents.md +137 -0
- package/docs/guides/tools-coordination.md +228 -0
- package/docs/guides/tools-execution.md +48 -0
- package/docs/guides/tools-issues.md +69 -0
- package/docs/guides/tools-memory.md +150 -0
- package/docs/guides/tools-messages.md +192 -0
- package/docs/guides/tools-operations.md +133 -0
- package/docs/guides/tools-tasks.md +235 -0
- package/docs/guides/workflows.md +324 -0
- package/docs/license-faq.md +37 -0
- package/docs/openapi.json +18531 -0
- package/examples/integrations/github-issue.ts +48 -0
- package/examples/integrations/ops-alert.sh +27 -0
- package/examples/integrations/prometheus-alertmanager.ts +55 -0
- package/examples/integrations/support-ticket.sh +28 -0
- package/node_modules/@humwick/kernel/LICENSE +167 -0
- package/node_modules/@humwick/kernel/async-entity-persistence.ts +344 -0
- package/node_modules/@humwick/kernel/async-event-log.ts +107 -0
- package/node_modules/@humwick/kernel/automations.pilot.ts +147 -0
- package/node_modules/@humwick/kernel/config.ts +111 -0
- package/node_modules/@humwick/kernel/contract.ts +572 -0
- package/node_modules/@humwick/kernel/control-authz.ts +281 -0
- package/node_modules/@humwick/kernel/control.ts +645 -0
- package/node_modules/@humwick/kernel/effects.ts +493 -0
- package/node_modules/@humwick/kernel/event-log.ts +319 -0
- package/node_modules/@humwick/kernel/http-transport.ts +384 -0
- package/node_modules/@humwick/kernel/identity-grammar.ts +20 -0
- package/node_modules/@humwick/kernel/identity.ts +248 -0
- package/node_modules/@humwick/kernel/index.ts +28 -0
- package/node_modules/@humwick/kernel/kernel-persistence.ts +181 -0
- package/node_modules/@humwick/kernel/landing-incident.ts +306 -0
- package/node_modules/@humwick/kernel/landing.ts +953 -0
- package/node_modules/@humwick/kernel/manifest-validation.ts +460 -0
- package/node_modules/@humwick/kernel/mcp-transport.ts +109 -0
- package/node_modules/@humwick/kernel/message-authority-chaos-worker.ts +200 -0
- package/node_modules/@humwick/kernel/message-authority.ts +281 -0
- package/node_modules/@humwick/kernel/module-host.ts +722 -0
- package/node_modules/@humwick/kernel/openapi-init.ts +14 -0
- package/node_modules/@humwick/kernel/package.json +47 -0
- package/node_modules/@humwick/kernel/persistence-schema.ts +248 -0
- package/node_modules/@humwick/kernel/persistence.ts +510 -0
- package/node_modules/@humwick/kernel/registry.ts +60 -0
- package/node_modules/@humwick/kernel/sqlite-kernel-persistence.ts +499 -0
- package/node_modules/@humwick/kernel/sqlite-module-host.ts +87 -0
- package/node_modules/@humwick/kernel/timers-chaos-worker.ts +186 -0
- package/node_modules/@humwick/kernel/timers.pilot.ts +1411 -0
- package/node_modules/@humwick/kernel/workflow-activation.ts +25 -0
- package/node_modules/@humwick/kernel/workflow-backstop.ts +40 -0
- package/node_modules/@humwick/kernel/workflow-cancel-tree.ts +20 -0
- package/node_modules/@humwick/kernel/workflow-chaos-worker.ts +213 -0
- package/node_modules/@humwick/kernel/workflow-composition.ts +231 -0
- package/node_modules/@humwick/kernel/workflow-container.ts +72 -0
- package/node_modules/@humwick/kernel/workflow-control.test-fixture.ts +42 -0
- package/node_modules/@humwick/kernel/workflow-control.ts +178 -0
- package/node_modules/@humwick/kernel/workflow-definition.ts +507 -0
- package/node_modules/@humwick/kernel/workflow-dispatch.ts +60 -0
- package/node_modules/@humwick/kernel/workflow-foreach.ts +167 -0
- package/node_modules/@humwick/kernel/workflow-journal-codec.ts +339 -0
- package/node_modules/@humwick/kernel/workflow-journal.ts +922 -0
- package/node_modules/@humwick/kernel/workflow-lane.ts +48 -0
- package/node_modules/@humwick/kernel/workflow-lease-owner.ts +60 -0
- package/node_modules/@humwick/kernel/workflow-recovery.test-fixture.ts +19 -0
- package/node_modules/@humwick/kernel/workflow-runtime.ts +938 -0
- package/node_modules/@humwick/kernel/workflow-script.ts +11 -0
- package/node_modules/@humwick/kernel/workflow-state.ts +299 -0
- package/node_modules/@humwick/kernel/workflow-step-commit.ts +195 -0
- package/node_modules/@humwick/kernel/workflow-transitions.ts +317 -0
- package/node_modules/@humwick/kernel/workflow-values.ts +153 -0
- package/node_modules/@humwick/kernel/workflow.pilot.ts +376 -0
- package/node_modules/@humwick/offload/LICENSE +167 -0
- package/node_modules/@humwick/offload/README.md +57 -0
- package/node_modules/@humwick/offload/dist/async-runner.d.ts +18 -0
- package/node_modules/@humwick/offload/dist/async-runner.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/async-runner.js +158 -0
- package/node_modules/@humwick/offload/dist/async-runner.js.map +1 -0
- package/node_modules/@humwick/offload/dist/envelope.d.ts +25 -0
- package/node_modules/@humwick/offload/dist/envelope.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/envelope.js +80 -0
- package/node_modules/@humwick/offload/dist/envelope.js.map +1 -0
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts +10 -0
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.js +59 -0
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.js.map +1 -0
- package/node_modules/@humwick/offload/dist/index.d.ts +5 -0
- package/node_modules/@humwick/offload/dist/index.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/index.js +5 -0
- package/node_modules/@humwick/offload/dist/index.js.map +1 -0
- package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts +62 -0
- package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/subprocess-runner.js +295 -0
- package/node_modules/@humwick/offload/dist/subprocess-runner.js.map +1 -0
- package/node_modules/@humwick/offload/dist/types.d.ts +111 -0
- package/node_modules/@humwick/offload/dist/types.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/types.js +176 -0
- package/node_modules/@humwick/offload/dist/types.js.map +1 -0
- package/node_modules/@humwick/offload/dist/worker-pool.d.ts +23 -0
- package/node_modules/@humwick/offload/dist/worker-pool.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/worker-pool.js +435 -0
- package/node_modules/@humwick/offload/dist/worker-pool.js.map +1 -0
- package/node_modules/@humwick/offload/dist/worker-runtime.d.ts +2 -0
- package/node_modules/@humwick/offload/dist/worker-runtime.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/worker-runtime.js +27 -0
- package/node_modules/@humwick/offload/dist/worker-runtime.js.map +1 -0
- package/node_modules/@humwick/offload/dist/worker.d.ts +5 -0
- package/node_modules/@humwick/offload/dist/worker.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/worker.js +1 -0
- package/node_modules/@humwick/offload/dist/worker.js.map +1 -0
- package/node_modules/@humwick/offload/package.json +46 -0
- package/node_modules/@humwick/offload/src/async-runner.ts +170 -0
- package/node_modules/@humwick/offload/src/envelope.ts +92 -0
- package/node_modules/@humwick/offload/src/fixtures/worker-task.ts +49 -0
- package/node_modules/@humwick/offload/src/index.ts +4 -0
- package/node_modules/@humwick/offload/src/subprocess-runner.ts +334 -0
- package/node_modules/@humwick/offload/src/types.ts +235 -0
- package/node_modules/@humwick/offload/src/worker-pool.ts +463 -0
- package/node_modules/@humwick/offload/src/worker-runtime.ts +32 -0
- package/node_modules/@humwick/offload/src/worker.ts +5 -0
- package/package.json +229 -4
- package/public/assets/MessageBubble-BWpoBjl4.js +4 -0
- package/public/assets/PlanGraphPanel-C0auck3n.js +2 -0
- package/public/assets/TraceView-DBnOx7AQ.js +5 -0
- package/public/assets/VaultDecisionCard-0kp2oNBC.js +2 -0
- package/public/assets/activity-TMzFOdh2.js +2 -0
- package/public/assets/activity-yLztXEBt.js +2 -0
- package/public/assets/agent-lineage-BbJDR1dW.js +2 -0
- package/public/assets/agent-liveness-DyqxfB-t.js +2 -0
- package/public/assets/agent-name-CTZBrSD9.js +2 -0
- package/public/assets/agent-profiles-BpI_jTxq.js +2 -0
- package/public/assets/agent-project-badge-9TqzUUYE.js +2 -0
- package/public/assets/agent-tools-D4n40pn8.js +2 -0
- package/public/assets/agent-type-icon-D6FUarOf.js +2 -0
- package/public/assets/agents-BYDslkJc.js +2 -0
- package/public/assets/analytics-B-XSbEMC.js +910 -0
- package/public/assets/andromeeda-vGVdxbeo.js +2 -0
- package/public/assets/angular-html-BVBpGdXr.js +2 -0
- package/public/assets/angular-ts-BfdufMKP.js +2 -0
- package/public/assets/api-CIIVBtAV.js +10 -0
- package/public/assets/archive-CIuPSvmx.js +2 -0
- package/public/assets/arrow-right-vFsRqG8V.js +2 -0
- package/public/assets/arrow-up-a-z-CKC2RCjD.js +2 -0
- package/public/assets/artifact-viewer-DdWIfV6M.js +2 -0
- package/public/assets/artifacts-DPN1q4pA.js +2 -0
- package/public/assets/artifacts-oBOqks-2.js +2 -0
- package/public/assets/astro-JKRPP03v.js +2 -0
- package/public/assets/aurora-x-CDeNXAV0.js +2 -0
- package/public/assets/automation-4KcRFXEu.js +2 -0
- package/public/assets/ayu-dark-DluEY0Gj.js +2 -0
- package/public/assets/ayu-light-C3h-C4tm.js +2 -0
- package/public/assets/ayu-mirage-Bqwy1Gya.js +2 -0
- package/public/assets/backlog-Cw9xPTCF.js +2 -0
- package/public/assets/badge-DqJRtj_p.js +2 -0
- package/public/assets/bell-_Yzbxxrt.js +2 -0
- package/public/assets/blade-DA8yMPsw.js +2 -0
- package/public/assets/bot-B0NpDNhr.js +2 -0
- package/public/assets/boxes-Cv7Wq3h4.js +2 -0
- package/public/assets/braces-BOks9SsY.js +2 -0
- package/public/assets/brain-CagXMEKE.js +2 -0
- package/public/assets/brain-circuit-CpQeSmp3.js +2 -0
- package/public/assets/bundle-web-ifbJd0t-.js +14 -0
- package/public/assets/busy-health-CTu32MZt.js +2 -0
- package/public/assets/button-Do6Z3vvn.js +2 -0
- package/public/assets/c-Wt1voDr2.js +2 -0
- package/public/assets/calendar-QJjoZ1JU.js +2 -0
- package/public/assets/calendar-clock-CDG_KBhx.js +2 -0
- package/public/assets/card-C4QJ4hCW.js +2 -0
- package/public/assets/catppuccin-frappe-3VR1Za6u.js +2 -0
- package/public/assets/catppuccin-latte-DwIHMF0Q.js +2 -0
- package/public/assets/catppuccin-macchiato-DYnBP6_5.js +2 -0
- package/public/assets/catppuccin-mocha-DYhrFGRu.js +2 -0
- package/public/assets/channels-BiXzg1G9.js +2 -0
- package/public/assets/chart-column-S02ZGfTR.js +2 -0
- package/public/assets/chat-Ctk2qwvA.js +6 -0
- package/public/assets/check-B3M9Ug1P.js +2 -0
- package/public/assets/chevron-down-BoG3JCZn.js +2 -0
- package/public/assets/chevron-right-iljytE0x.js +2 -0
- package/public/assets/chevron-up-Bv3yC5ma.js +2 -0
- package/public/assets/circle-UESLMi2-.js +2 -0
- package/public/assets/circle-alert-CryagaZd.js +2 -0
- package/public/assets/circle-arrow-up-B432r0Kk.js +2 -0
- package/public/assets/circle-check-CkUkN96J.js +2 -0
- package/public/assets/circle-x-CZ0erS7Q.js +2 -0
- package/public/assets/clipboard-list-W2YeUsxT.js +2 -0
- package/public/assets/clock-3-BH47318N.js +2 -0
- package/public/assets/clock-BWPPBh1_.js +2 -0
- package/public/assets/code-preview-Bm1wWqAp.js +3 -0
- package/public/assets/coffee-CThvmt4R.js +2 -0
- package/public/assets/connectors-C36ax4Vw.js +2 -0
- package/public/assets/copy-DFxhHRtV.js +2 -0
- package/public/assets/copy-button-CjOj4HEf.js +2 -0
- package/public/assets/cosmos-Dn8XrlnS.css +1 -0
- package/public/assets/cosmos-Jj9LK2Wf.js +3993 -0
- package/public/assets/cpp-C5WNSHb9.js +2 -0
- package/public/assets/cpu-Dndy84IU.js +2 -0
- package/public/assets/crate-agent-H6S7-B9T.js +2 -0
- package/public/assets/css-DJp_X0uY.js +2 -0
- package/public/assets/csv-Dx-8-gkx.js +2 -0
- package/public/assets/dark-plus-Cs2F2srj.js +2 -0
- package/public/assets/dependency-graph-Cd1E23wa.js +2 -0
- package/public/assets/deploys-Bwfq146q.js +2 -0
- package/public/assets/dialog-uuJ9_geR.js +6 -0
- package/public/assets/display-CfO7rTuF.js +3 -0
- package/public/assets/dist-B2h2GeWt.js +2 -0
- package/public/assets/dist-BeVYU67E.js +2 -0
- package/public/assets/dist-Bmm-RKub.js +2 -0
- package/public/assets/dist-C1xmD7qJ.js +2 -0
- package/public/assets/dist-C2J943E6.js +2 -0
- package/public/assets/dist-C6lpJDoA.js +2 -0
- package/public/assets/dist-CoWL6B0c.js +2 -0
- package/public/assets/dist-D93SmTNC.js +2 -0
- package/public/assets/dist-Da7HrHNA.js +2 -0
- package/public/assets/dist-DeW2Y1R5.js +2 -0
- package/public/assets/dist-DwBdqQ6H.js +2 -0
- package/public/assets/dist-Dz182zaW.js +2 -0
- package/public/assets/dist-H3DLHJ0C.js +2 -0
- package/public/assets/dist-RrY9C4SI.js +2 -0
- package/public/assets/download-KgtpDbt5.js +2 -0
- package/public/assets/dracula-BHWKrbxM.js +2 -0
- package/public/assets/dracula-soft-5eyTD99u.js +2 -0
- package/public/assets/dropdown-menu-BXiNephE.js +2 -0
- package/public/assets/es2015-DMmZ8vbD.js +42 -0
- package/public/assets/esm-ZSuD7QuY.js +2 -0
- package/public/assets/everforest-dark-sB-x3p7T.js +2 -0
- package/public/assets/everforest-light-Df2xbC6M.js +2 -0
- package/public/assets/external-link-BRfu-fHG.js +2 -0
- package/public/assets/eye-BAP6fHrX.js +2 -0
- package/public/assets/file-code-corner-CXhIR1vB.js +2 -0
- package/public/assets/file-pen-Crunre5f.js +2 -0
- package/public/assets/file-text-CKuoMR2U.js +2 -0
- package/public/assets/files-DhhZI2Ih.js +3 -0
- package/public/assets/flag-CnEG9PH-.js +2 -0
- package/public/assets/flame-CxBuz46L.js +2 -0
- package/public/assets/fleet-BL4UXS_k.js +2 -0
- package/public/assets/fleet-metrics-BkHP-P3R.js +2 -0
- package/public/assets/folder-git-2-CJOmTT06.js +2 -0
- package/public/assets/folder-open-CBUCMSlu.js +2 -0
- package/public/assets/folder-tree-BG3Y9nqH.js +2 -0
- package/public/assets/formatted-body-Cm1RrzmN.js +3 -0
- package/public/assets/formatted-body-impl-DQiOuOD1.js +3 -0
- package/public/assets/gauge-BIODY-BQ.js +2 -0
- package/public/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
- package/public/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
- package/public/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
- package/public/assets/git-branch-yxhV0m8E.js +2 -0
- package/public/assets/git-commit-horizontal-DS1pJ_SS.js +2 -0
- package/public/assets/git-merge-C7eIG425.js +2 -0
- package/public/assets/github-dark-C-LZuMrd.js +2 -0
- package/public/assets/github-dark-default-DXG-b-1a.js +2 -0
- package/public/assets/github-dark-dimmed-Bx1FflLF.js +2 -0
- package/public/assets/github-dark-high-contrast-B_tTalzw.js +2 -0
- package/public/assets/github-light-EUqPIrTm.js +2 -0
- package/public/assets/github-light-default-BXViO-2h.js +2 -0
- package/public/assets/github-light-high-contrast-B68TUdTA.js +2 -0
- package/public/assets/globe-Cl5fXtqs.js +2 -0
- package/public/assets/glsl-Dv5r7kPw.js +2 -0
- package/public/assets/graphql-CcFwQwm0.js +2 -0
- package/public/assets/gruvbox-dark-hard-C820rvS2.js +2 -0
- package/public/assets/gruvbox-dark-medium-BPjhmG05.js +2 -0
- package/public/assets/gruvbox-dark-soft-MrdJrrXF.js +2 -0
- package/public/assets/gruvbox-light-hard-BC_s9l72.js +2 -0
- package/public/assets/gruvbox-light-medium-BAWPOn9u.js +2 -0
- package/public/assets/gruvbox-light-soft-BSMLrYjP.js +2 -0
- package/public/assets/haml-Bg4I2hiD.js +2 -0
- package/public/assets/handlebars-DnwbnL5R.js +2 -0
- package/public/assets/hash-CbtKih3g.js +2 -0
- package/public/assets/horizon-CE9ld1lL.js +2 -0
- package/public/assets/horizon-bright-DSNQnXHK.js +2 -0
- package/public/assets/host-mTgRw7xh.js +2 -0
- package/public/assets/host-providers-dialog-CHqwXTov.js +2 -0
- package/public/assets/hourglass-txu4ax6n.js +2 -0
- package/public/assets/houston-CsvMBhTu.js +2 -0
- package/public/assets/html-C8UlPnhE.js +2 -0
- package/public/assets/html-derivative-CY6NRz-J.js +2 -0
- package/public/assets/http-CoW620Fi.js +2 -0
- package/public/assets/humwick-lockup-on-dark-Ds44Y7BK.svg +19 -0
- package/public/assets/humwick-lockup-on-light-ClALZAHt.svg +19 -0
- package/public/assets/hurl-CSSETujw.js +2 -0
- package/public/assets/imba-DsUTQ-LC.js +2 -0
- package/public/assets/inbox-Dfwk3Gt8.js +2 -0
- package/public/assets/index-B7ZerHLY.css +2 -0
- package/public/assets/index-BK0WV6hF.js +15 -0
- package/public/assets/input-CsTB6jIx.js +2 -0
- package/public/assets/insights-fH1EL-qZ.js +2 -0
- package/public/assets/integrations-C5Oix6ng.js +2 -0
- package/public/assets/issue-ref-chip-ODyondIa.js +3 -0
- package/public/assets/java-CGc3VwQr.js +2 -0
- package/public/assets/javascript-CUt1pgmJ.js +2 -0
- package/public/assets/jinja-CD-Z-FLd.js +2 -0
- package/public/assets/jison-imPNup1l.js +2 -0
- package/public/assets/json-qhed-kSA.js +2 -0
- package/public/assets/json5-BR5RXkoi.js +2 -0
- package/public/assets/jsonc-CYpm1nAK.js +2 -0
- package/public/assets/jsonl-CmCQp5Yx.js +2 -0
- package/public/assets/jsx-CY6oMTks.js +2 -0
- package/public/assets/julia-CjffhBEM.js +2 -0
- package/public/assets/kanagawa-dragon-CXtmUGW6.js +2 -0
- package/public/assets/kanagawa-lotus-BN08jTvb.js +2 -0
- package/public/assets/kanagawa-wave-CTweb8Dz.js +2 -0
- package/public/assets/kernel-Bqr0CZGv.js +2 -0
- package/public/assets/key-round-CcSxl5qr.js +2 -0
- package/public/assets/keyboard-DcmEulph.js +2 -0
- package/public/assets/label-BPBzm9FJ.js +2 -0
- package/public/assets/laserwave-C_8bwKvT.js +2 -0
- package/public/assets/layers-DEfClY-v.js +2 -0
- package/public/assets/legacy-storage-carry-C-tBSxRA.js +2 -0
- package/public/assets/less-DVTAwKKz.js +2 -0
- package/public/assets/lib-D7DTGM1F.js +2 -0
- package/public/assets/lib-G-25QXXf.js +30 -0
- package/public/assets/light-plus-DVQuIRkW.js +2 -0
- package/public/assets/lightbulb-RDhZ4p-D.js +2 -0
- package/public/assets/link-2-off-DfRF9Hwb.js +2 -0
- package/public/assets/link-6RR7Hy3-.js +2 -0
- package/public/assets/list-checks-CwnS3hly.js +2 -0
- package/public/assets/list-ordered-D8nCM7rT.js +2 -0
- package/public/assets/list-todo-9qT0fgxZ.js +2 -0
- package/public/assets/loader-circle-BfPd4kOD.js +2 -0
- package/public/assets/lock-BW8MPKw_.js +2 -0
- package/public/assets/log-viewer-Cvfy6PW7.js +4 -0
- package/public/assets/mail-DyaDmwfY.js +2 -0
- package/public/assets/maintenance-D8CDH5wZ.js +2 -0
- package/public/assets/managed-agents-egllbpij.js +4 -0
- package/public/assets/markdown-BYOwaDjH.js +2 -0
- package/public/assets/markdown-preview-CYSFgVgK.js +3 -0
- package/public/assets/markdown-preview-impl-BteVIjX4.js +2 -0
- package/public/assets/marko-DvhNOisQ.js +2 -0
- package/public/assets/material-theme-Bm3Qr25_.js +2 -0
- package/public/assets/material-theme-darker-2IIEA8gg.js +2 -0
- package/public/assets/material-theme-lighter-uhdI0v04.js +2 -0
- package/public/assets/material-theme-ocean-CHQ94UKr.js +2 -0
- package/public/assets/material-theme-palenight-B5W6OYN7.js +2 -0
- package/public/assets/mdc-CazklSAj.js +2 -0
- package/public/assets/mdx-DQZ5AkYe.js +2 -0
- package/public/assets/memory-C8WmXsyr.js +2 -0
- package/public/assets/message-circle-wjztgHBe.js +2 -0
- package/public/assets/message-square-C-1G8dMM.js +2 -0
- package/public/assets/message-square-reply-B9Z4cbQx.js +2 -0
- package/public/assets/messages-BzQdqlO6.js +2 -0
- package/public/assets/messages-square-DVM1ZtcI.js +2 -0
- package/public/assets/min-dark-BSWPekZh.js +2 -0
- package/public/assets/min-light-DDpmG2fV.js +2 -0
- package/public/assets/minimize-2-BkK6XoMP.js +2 -0
- package/public/assets/monokai-CdkpiU2Y.js +2 -0
- package/public/assets/night-owl-DhmEMT88.js +2 -0
- package/public/assets/night-owl-light-eJ-hLW7d.js +2 -0
- package/public/assets/nord-Cb4Vim4T.js +2 -0
- package/public/assets/octagon-x-B5lnUY-8.js +2 -0
- package/public/assets/one-dark-pro-CLwyXe_n.js +2 -0
- package/public/assets/one-light-D7Lr4KcI.js +2 -0
- package/public/assets/orchestrators-B1HxzkNw.js +2 -0
- package/public/assets/overview-DCUnI4Z7.js +2 -0
- package/public/assets/package-open-ckPgcjpv.js +2 -0
- package/public/assets/package-plus-C1AKMjsl.js +2 -0
- package/public/assets/pairs-ftCd2XcD.js +2 -0
- package/public/assets/paperclip-CNpKZKum.js +2 -0
- package/public/assets/pause-DttnHD4c.js +2 -0
- package/public/assets/pencil-B1Hf2V_J.js +2 -0
- package/public/assets/php-CBqsN0ai.js +2 -0
- package/public/assets/pin-DcsKeXxr.js +2 -0
- package/public/assets/plastic-DQwYfKfQ.js +2 -0
- package/public/assets/play-BbT8m7A0.js +2 -0
- package/public/assets/plug-vIyO9_P8.js +2 -0
- package/public/assets/plug-zap-V0wMDJ-G.js +2 -0
- package/public/assets/plus-D5Ek4e2S.js +2 -0
- package/public/assets/poimandres-DRFjx7u4.js +2 -0
- package/public/assets/popover-8w1TWKMG.js +2 -0
- package/public/assets/postcss-BXeXVLqQ.js +2 -0
- package/public/assets/power-6tZOhYPg.js +2 -0
- package/public/assets/preload-helper-HclGiUj8.js +1 -0
- package/public/assets/profile-icon-B2zH8DMH.js +2 -0
- package/public/assets/projects-B_lmcqfO.js +2 -0
- package/public/assets/prompt-settings-Bftq9czX.js +2 -0
- package/public/assets/provider-brand-icon-_67JR7Zh.js +2 -0
- package/public/assets/provider-display-DbLWpP3j.js +2 -0
- package/public/assets/pug-C5hz5LQ7.js +2 -0
- package/public/assets/python-gzcpVVnB.js +2 -0
- package/public/assets/r-Dzep-lPg.js +2 -0
- package/public/assets/radio-Bn0_qc0G.js +2 -0
- package/public/assets/react-dom-DSFxiC7T.js +2 -0
- package/public/assets/red-CJ3rzSJv.js +2 -0
- package/public/assets/refresh-cw-CfpvQcUn.js +2 -0
- package/public/assets/regexp-Omp9DhTb.js +2 -0
- package/public/assets/registry-DWCU5c8q.js +4 -0
- package/public/assets/repeat-hl4p_Klo.js +2 -0
- package/public/assets/rocket-BmO1qSu-.js +2 -0
- package/public/assets/rolldown-runtime-QTnfLwEv.js +1 -0
- package/public/assets/rose-pine-BthvhNj6.js +2 -0
- package/public/assets/rose-pine-dawn-Dg85fqjY.js +2 -0
- package/public/assets/rose-pine-moon-hon4tzzS.js +2 -0
- package/public/assets/rotate-ccw-CtD77qkX.js +2 -0
- package/public/assets/rotate-cw-FPtkDewA.js +2 -0
- package/public/assets/run-card-CO_bguQf.js +2 -0
- package/public/assets/sass-DXrisJhu.js +2 -0
- package/public/assets/save-B_PGqSm4.js +2 -0
- package/public/assets/scroll-area-CIN4KQse.js +2 -0
- package/public/assets/scss-DdSxiZKl.js +2 -0
- package/public/assets/search-DjzbnTbf.js +2 -0
- package/public/assets/secrets-C7GIUATz.js +2 -0
- package/public/assets/security-BUFau5-N.js +3 -0
- package/public/assets/select-DTQMP4Dk.js +2 -0
- package/public/assets/separator-t1cLZErD.js +2 -0
- package/public/assets/server-CZIRjFyY.js +2 -0
- package/public/assets/service-access-settings-C3aujqTG.js +2 -0
- package/public/assets/settings-C6sZ9eBa.js +6 -0
- package/public/assets/shellscript-CLZ0U2zV.js +2 -0
- package/public/assets/shield-CtXNUA0i.js +2 -0
- package/public/assets/shield-alert-B9jCWcKW.js +2 -0
- package/public/assets/shipping-Bu8p1gEw.js +2 -0
- package/public/assets/shipping-stats-BiMTsA4A.js +2 -0
- package/public/assets/slack-dark-DnToyrRv.js +2 -0
- package/public/assets/slack-ochin-B2OO5cIa.js +2 -0
- package/public/assets/smile-plus-q6EQBXHZ.js +2 -0
- package/public/assets/snazzy-light-4G7pJPwS.js +2 -0
- package/public/assets/solarized-dark-DV17i1UV.js +2 -0
- package/public/assets/solarized-light-DSh2HLQt.js +2 -0
- package/public/assets/sparkles-CzwR10ZU.js +2 -0
- package/public/assets/sql-DNssxck8.js +2 -0
- package/public/assets/square-Bqly37YM.js +2 -0
- package/public/assets/stats-V9Z-GxUd.js +2 -0
- package/public/assets/status-dot-CVv0iGHL.js +2 -0
- package/public/assets/stethoscope-SCBrnQQ8.js +2 -0
- package/public/assets/store-BvtFdlGX.js +9 -0
- package/public/assets/stylus-B6D30XZt.js +2 -0
- package/public/assets/svelte-DOdLCIlh.js +2 -0
- package/public/assets/switch-DuCA7mrB.js +2 -0
- package/public/assets/synthwave-84-nFMaYfgc.js +2 -0
- package/public/assets/tabs-jZgNvNHr.js +2 -0
- package/public/assets/task-chip-CYj0mpoL.js +2 -0
- package/public/assets/tasks-BIyeAaPC.js +2 -0
- package/public/assets/tasks-CXU75HRF.js +11 -0
- package/public/assets/teams-BPf976zb.js +2 -0
- package/public/assets/terminal-Bl2u7KxT.js +2 -0
- package/public/assets/terminal-viewer-DE9BOe-8.js +3 -0
- package/public/assets/terminal-viewer-impl-BrP-ENHg.css +1 -0
- package/public/assets/terminal-viewer-impl-D04pjmGh.js +143 -0
- package/public/assets/textarea-hs6Mpyfl.js +2 -0
- package/public/assets/themes-G5j9m1Ji.js +2 -0
- package/public/assets/tokyo-night-oM2G3aXe.js +2 -0
- package/public/assets/trash-2-FbcSq927.js +2 -0
- package/public/assets/triangle-alert-BBNhfgMi.js +2 -0
- package/public/assets/ts-tags-Ca73dJJY.js +2 -0
- package/public/assets/tsx-5Eka4NBX.js +2 -0
- package/public/assets/typescript-DOu2WMV5.js +2 -0
- package/public/assets/use-agent-terminal-B1yR456R.js +2 -0
- package/public/assets/use-decisions-D-S4tpDf.js +2 -0
- package/public/assets/use-project-list-B-T2Bnnn.js +2 -0
- package/public/assets/use-selectors-CnrAk2YP.js +6 -0
- package/public/assets/user-avatar-nBFIcR4M.js +2 -0
- package/public/assets/user-cog-CKcouW1J.js +2 -0
- package/public/assets/user-plus-D9749q73.js +2 -0
- package/public/assets/users-C7B3u9jv.js +2 -0
- package/public/assets/versioned-prompt-editor-Diu8BIaM.js +8 -0
- package/public/assets/vesper-DdrHHSXu.js +2 -0
- package/public/assets/vitesse-black-fwtXNY1n.js +2 -0
- package/public/assets/vitesse-dark-BZCL-v6S.js +2 -0
- package/public/assets/vitesse-light-VbXTXTou.js +2 -0
- package/public/assets/volume-2-XrcRKD9Z.js +2 -0
- package/public/assets/vue-Bfx0ffIq.js +2 -0
- package/public/assets/vue-html-BeluIYX0.js +2 -0
- package/public/assets/vue-vine-DGUAbOCX.js +2 -0
- package/public/assets/warehouse-BanzOanY.js +2 -0
- package/public/assets/wasm-BnjxR4X6.js +2 -0
- package/public/assets/wasm-ByWQv1Qj.js +2 -0
- package/public/assets/waypoints-CIzINtLT.js +2 -0
- package/public/assets/wgsl-BsKzXJz4.js +2 -0
- package/public/assets/wit-DdvCle-K.js +2 -0
- package/public/assets/work-queue-TCjJxeT-.js +2 -0
- package/public/assets/workflow-marker-Cf3Hf2fN.js +2 -0
- package/public/assets/workflows-CXQX20Qj.js +6 -0
- package/public/assets/workspaces-qSYzKYMA.js +3 -0
- package/public/assets/wrench-C7-4CgnY.js +2 -0
- package/public/assets/x-Bge17hWJ.js +2 -0
- package/public/assets/xml-DIqSwXR3.js +2 -0
- package/public/assets/yaml-rwi0_p6S.js +2 -0
- package/public/assets/zap-DGuDTw4w.js +2 -0
- package/public/assets/zoom-in-Bs8Qv8VL.js +2 -0
- package/public/assets/zoomable-image-B3Og53nj.js +2 -0
- package/public/cosmos/audio/README.md +50 -0
- package/public/cosmos/audio/alert.mp3 +0 -0
- package/public/cosmos/audio/ambient-bed.mp3 +0 -0
- package/public/cosmos/audio/comet.mp3 +0 -0
- package/public/cosmos/audio/cross-galaxy.mp3 +0 -0
- package/public/cosmos/audio/deploy.mp3 +0 -0
- package/public/cosmos/audio/galaxy-dissipate.mp3 +0 -0
- package/public/cosmos/audio/galaxy-form.mp3 +0 -0
- package/public/cosmos/audio/land.mp3 +0 -0
- package/public/cosmos/audio/reap.mp3 +0 -0
- package/public/cosmos/audio/spawn.mp3 +0 -0
- package/public/cosmos.html +34 -0
- package/public/favicon.ico +0 -0
- package/public/favicon.svg +10 -0
- package/public/icons/apple-touch-icon.png +0 -0
- package/public/icons/humwick-192.png +0 -0
- package/public/icons/humwick-512.png +0 -0
- package/public/icons/humwick.svg +19 -0
- package/public/index.html +188 -0
- package/public/manifest.webmanifest +45 -0
- package/public/sw.js +160 -0
- package/recipes/code-review.yaml +26 -0
- package/recipes/debug.yaml +20 -0
- package/recipes/feature.yaml +26 -0
- package/recipes/refactor.yaml +20 -0
- package/recipes/test.yaml +20 -0
- package/runner/LICENSE +167 -0
- package/runner/agent-bin/agent-relay-browser +10 -0
- package/runner/agent-bin/humwick +10 -0
- package/runner/hooks/fff-search-redirect/fff-search-redirect.cjs +161 -0
- package/runner/hooks/fff-search-redirect/hooks.json +13 -0
- package/runner/hooks/rg-r-guard/hooks.json +18 -0
- package/runner/hooks/rg-r-guard/rg-r-guard.cjs +144 -0
- package/runner/hooks/web-tools-redirect/hooks.json +13 -0
- package/runner/hooks/web-tools-redirect/web-tools-redirect.cjs +84 -0
- package/runner/plugins/browser/skills/playwright-cli/SKILL.md +53 -0
- package/runner/plugins/claude/.claude-plugin/plugin.json +8 -0
- package/runner/plugins/claude/claude-statusline-probe.cjs +144 -0
- package/runner/plugins/claude/hooks/gate-run-guard.provisioned.mjs +914 -0
- package/runner/plugins/claude/hooks/gate-run-guard.sh +9 -0
- package/runner/plugins/claude/hooks/gate-run-guard.ts +237 -0
- package/runner/plugins/claude/hooks/hooks.json +158 -0
- package/runner/plugins/claude/hooks/kill-guard.provisioned.mjs +7027 -0
- package/runner/plugins/claude/hooks/kill-guard.sh +341 -0
- package/runner/plugins/claude/hooks/kill-guard.ts +337 -0
- package/runner/plugins/claude/hooks/permission-request.sh +22 -0
- package/runner/plugins/claude/hooks/post-compact.sh +10 -0
- package/runner/plugins/claude/hooks/post-tool-use.sh +8 -0
- package/runner/plugins/claude/hooks/pre-compact.sh +12 -0
- package/runner/plugins/claude/hooks/read-only-bash-guard.sh +587 -0
- package/runner/plugins/claude/hooks/relay-status.sh +373 -0
- package/runner/plugins/claude/hooks/session-end.sh +26 -0
- package/runner/plugins/claude/hooks/session-start.sh +31 -0
- package/runner/plugins/claude/hooks/shell-trust.ts +28 -0
- package/runner/plugins/claude/hooks/stop-failure.sh +47 -0
- package/runner/plugins/claude/hooks/stop.sh +48 -0
- package/runner/plugins/claude/hooks/subagent-guard.cjs +26 -0
- package/runner/plugins/claude/hooks/subagent-skill-policy.cjs +160 -0
- package/runner/plugins/claude/hooks/subagent-start.sh +13 -0
- package/runner/plugins/claude/hooks/subagent-stop.sh +19 -0
- package/runner/plugins/claude/hooks/user-prompt-submit.sh +18 -0
- package/runner/plugins/claude/hooks/wait-loop-guard.ts +120 -0
- package/runner/plugins/claude/monitors/monitors.json +7 -0
- package/runner/plugins/claude/monitors/relay-monitor.provisioned.mjs +786 -0
- package/runner/plugins/claude/monitors/relay-monitor.ts +58 -0
- package/runner/plugins/claude/skills/disconnect/SKILL.md +16 -0
- package/runner/plugins/claude/skills/label/SKILL.md +23 -0
- package/runner/plugins/claude/skills/message/SKILL.md +40 -0
- package/runner/plugins/claude/skills/pair/SKILL.md +30 -0
- package/runner/plugins/claude/skills/react/SKILL.md +18 -0
- package/runner/plugins/claude/skills/read-message/SKILL.md +24 -0
- package/runner/plugins/claude/skills/reply/SKILL.md +44 -0
- package/runner/plugins/claude/skills/send-claimable/SKILL.md +39 -0
- package/runner/plugins/claude/skills/slice-first/SKILL.md +32 -0
- package/runner/plugins/claude/skills/slice-first/references/plan-recipe.md +46 -0
- package/runner/plugins/claude/skills/status/SKILL.md +16 -0
- package/runner/plugins/claude/skills/tags/SKILL.md +25 -0
- package/runner/plugins/claude/skills/task/SKILL.md +28 -0
- package/runner/plugins/claude-output-style/.claude-plugin/plugin.json +5 -0
- package/runner/plugins/claude-output-style/output-styles/agent-relay.md +5 -0
- package/runner/plugins/codex/skills/disconnect/SKILL.md +15 -0
- package/runner/plugins/codex/skills/guide/SKILL.md +15 -0
- package/runner/plugins/codex/skills/label/SKILL.md +22 -0
- package/runner/plugins/codex/skills/message/SKILL.md +40 -0
- package/runner/plugins/codex/skills/pair/SKILL.md +29 -0
- package/runner/plugins/codex/skills/react/SKILL.md +17 -0
- package/runner/plugins/codex/skills/read-message/SKILL.md +23 -0
- package/runner/plugins/codex/skills/reply/SKILL.md +44 -0
- package/runner/plugins/codex/skills/send-claimable/SKILL.md +39 -0
- package/runner/plugins/codex/skills/slice-first/SKILL.md +32 -0
- package/runner/plugins/codex/skills/slice-first/references/plan-recipe.md +46 -0
- package/runner/plugins/codex/skills/status/SKILL.md +15 -0
- package/runner/plugins/codex/skills/tags/SKILL.md +24 -0
- package/runner/plugins/codex/skills/task/SKILL.md +28 -0
- package/runner/src/adapter.ts +1061 -0
- package/runner/src/adapters/__fixtures__/codex-app-server.ts +47 -0
- package/runner/src/adapters/claude-api.ts +243 -0
- package/runner/src/adapters/claude-context-command.ts +16 -0
- package/runner/src/adapters/claude-credentials.ts +22 -0
- package/runner/src/adapters/claude-delivery-lanes.ts +28 -0
- package/runner/src/adapters/claude-delivery.ts +166 -0
- package/runner/src/adapters/claude-effort.ts +94 -0
- package/runner/src/adapters/claude-exit.ts +290 -0
- package/runner/src/adapters/claude-headless-mirror.ts +88 -0
- package/runner/src/adapters/claude-headless-refusal.ts +51 -0
- package/runner/src/adapters/claude-headless.ts +617 -0
- package/runner/src/adapters/claude-monitor-delivery-plan.ts +317 -0
- package/runner/src/adapters/claude-permission.ts +243 -0
- package/runner/src/adapters/claude-prompt-gates.ts +269 -0
- package/runner/src/adapters/claude-prompt-hook.ts +145 -0
- package/runner/src/adapters/claude-session-capture.ts +293 -0
- package/runner/src/adapters/claude-session-probe.ts +414 -0
- package/runner/src/adapters/claude-shutdown.ts +190 -0
- package/runner/src/adapters/claude-status-detectors.ts +426 -0
- package/runner/src/adapters/claude-subagents.ts +93 -0
- package/runner/src/adapters/claude-submit-confirmation.ts +287 -0
- package/runner/src/adapters/claude-tmux.ts +548 -0
- package/runner/src/adapters/claude-token-usage-capture.ts +253 -0
- package/runner/src/adapters/claude-tool-policy.ts +165 -0
- package/runner/src/adapters/claude-transcript-tail.ts +193 -0
- package/runner/src/adapters/claude-transcript.ts +812 -0
- package/runner/src/adapters/claude.ts +1097 -0
- package/runner/src/adapters/codex-agent-message-capture.ts +189 -0
- package/runner/src/adapters/codex-app-server.ts +70 -0
- package/runner/src/adapters/codex-client.ts +362 -0
- package/runner/src/adapters/codex-effective-config.ts +87 -0
- package/runner/src/adapters/codex-launch-config.ts +153 -0
- package/runner/src/adapters/codex-rollout-context.ts +272 -0
- package/runner/src/adapters/codex-skill-discovery.ts +18 -0
- package/runner/src/adapters/codex-token-usage-capture.ts +163 -0
- package/runner/src/adapters/codex-tool-output.ts +53 -0
- package/runner/src/adapters/codex-turn-outcome.ts +27 -0
- package/runner/src/adapters/codex-version.ts +64 -0
- package/runner/src/adapters/codex.ts +1442 -0
- package/runner/src/adapters/incremental-file.ts +110 -0
- package/runner/src/adapters/opencode-api.ts +71 -0
- package/runner/src/adapters/opencode-context.ts +277 -0
- package/runner/src/adapters/opencode-model-registry.ts +126 -0
- package/runner/src/adapters/opencode-provider.ts +169 -0
- package/runner/src/adapters/opencode-server-retry.ts +50 -0
- package/runner/src/adapters/opencode-soft-steer.ts +302 -0
- package/runner/src/adapters/opencode-spawn.ts +145 -0
- package/runner/src/adapters/opencode-subscribe.ts +62 -0
- package/runner/src/adapters/opencode-token-usage-capture.ts +187 -0
- package/runner/src/adapters/opencode-tool-events.ts +302 -0
- package/runner/src/adapters/opencode-tools-config.ts +17 -0
- package/runner/src/adapters/opencode.ts +2264 -0
- package/runner/src/adapters/project-shell.ts +80 -0
- package/runner/src/adapters/provider-launch-config.ts +21 -0
- package/runner/src/adapters/provider-quota-harvest.ts +127 -0
- package/runner/src/adapters/service-access.ts +153 -0
- package/runner/src/adapters/tmux-offload.ts +207 -0
- package/runner/src/adapters/tool-summary.ts +214 -0
- package/runner/src/agent-redact.ts +75 -0
- package/runner/src/agent-runner/commands/dispatch.ts +185 -0
- package/runner/src/agent-runner/commands/lifecycle.ts +84 -0
- package/runner/src/agent-runner/commands/prompt.ts +284 -0
- package/runner/src/agent-runner/credentials.ts +208 -0
- package/runner/src/agent-runner/http-liveness.ts +85 -0
- package/runner/src/agent-runner/lifecycle-milestones.ts +207 -0
- package/runner/src/agent-runner/lifecycle-phase.ts +80 -0
- package/runner/src/agent-runner/registration.ts +163 -0
- package/runner/src/agent-runner/runner-context.ts +158 -0
- package/runner/src/agent-runner/session-mirror.ts +278 -0
- package/runner/src/agent-runner/task-claims.ts +116 -0
- package/runner/src/agent-runner/token-usage-coverage.ts +54 -0
- package/runner/src/agent-runner/turn-report.ts +269 -0
- package/runner/src/api-budget-accounting.ts +91 -0
- package/runner/src/area-memory.ts +255 -0
- package/runner/src/artifact-path-materialize.ts +52 -0
- package/runner/src/async-guard.ts +35 -0
- package/runner/src/attachment-cache-sweep.ts +31 -0
- package/runner/src/attachment-cache.ts +195 -0
- package/runner/src/background-script-reconcile.ts +106 -0
- package/runner/src/bounded-log.ts +59 -0
- package/runner/src/bounded-spawn-sync.ts +18 -0
- package/runner/src/busy-reconciler.ts +282 -0
- package/runner/src/claim-tracker.ts +140 -0
- package/runner/src/claude-settings.ts +167 -0
- package/runner/src/claude-workspace-trust.ts +289 -0
- package/runner/src/config.ts +547 -0
- package/runner/src/context-boundary.ts +101 -0
- package/runner/src/context-command.ts +151 -0
- package/runner/src/context-probe-state.ts +6 -0
- package/runner/src/continuation-archive.ts +179 -0
- package/runner/src/control-server.ts +730 -0
- package/runner/src/delivery-policy.ts +9 -0
- package/runner/src/delivery-result.ts +24 -0
- package/runner/src/effort-command.ts +125 -0
- package/runner/src/empty-turn.ts +816 -0
- package/runner/src/free-port.ts +25 -0
- package/runner/src/fs-offload.ts +26 -0
- package/runner/src/gate-run-config.ts +35 -0
- package/runner/src/gate-run-lease-probe.ts +38 -0
- package/runner/src/host-asset-plan.ts +450 -0
- package/runner/src/host-claude-config-worker.ts +34 -0
- package/runner/src/host-sources.ts +40 -0
- package/runner/src/inbox-carrier.ts +7 -0
- package/runner/src/index.ts +386 -0
- package/runner/src/launch-assembly.ts +955 -0
- package/runner/src/liveness.ts +105 -0
- package/runner/src/logger.ts +108 -0
- package/runner/src/mcp-outbox.ts +204 -0
- package/runner/src/mcp-preflight.ts +86 -0
- package/runner/src/mcp-source-selection.ts +54 -0
- package/runner/src/mcp-tool-deferral.ts +35 -0
- package/runner/src/mcp-vault-env.ts +25 -0
- package/runner/src/message-body-config/config.ts +16 -0
- package/runner/src/message-body-config.ts +1 -0
- package/runner/src/mid-turn-delivery.ts +43 -0
- package/runner/src/native-memory-lever.ts +329 -0
- package/runner/src/native-self-resume.ts +244 -0
- package/runner/src/outbox.ts +453 -0
- package/runner/src/park-post.ts +17 -0
- package/runner/src/pending-permission-store.ts +148 -0
- package/runner/src/process-meta.ts +9 -0
- package/runner/src/profile-home.ts +419 -0
- package/runner/src/profile-projection.ts +411 -0
- package/runner/src/project-hooks.ts +65 -0
- package/runner/src/project-instructions.ts +119 -0
- package/runner/src/provider-double.ts +59 -0
- package/runner/src/provider-hold.ts +228 -0
- package/runner/src/provider-home-marker.ts +3 -0
- package/runner/src/provider-home-tombstone.ts +4 -0
- package/runner/src/provider-input-queue.ts +134 -0
- package/runner/src/provider-integration.ts +93 -0
- package/runner/src/provider-processes.ts +17 -0
- package/runner/src/provider-submit-failure.ts +15 -0
- package/runner/src/providers.ts +35 -0
- package/runner/src/provisioning.ts +703 -0
- package/runner/src/question-decision.ts +18 -0
- package/runner/src/quota.ts +22 -0
- package/runner/src/rate-limit.ts +351 -0
- package/runner/src/refused-prompt-store.ts +36 -0
- package/runner/src/relay-injection-events.ts +161 -0
- package/runner/src/relay-instructions.ts +107 -0
- package/runner/src/relay-mcp-proxy.long-turn-e2e.ts +183 -0
- package/runner/src/relay-mcp-proxy.ts +704 -0
- package/runner/src/relay-mcp.ts +583 -0
- package/runner/src/reply-obligation-cache.ts +211 -0
- package/runner/src/response-capture-report.ts +111 -0
- package/runner/src/response-routing.ts +6 -0
- package/runner/src/runner-core.ts +2955 -0
- package/runner/src/runner-exit.ts +12 -0
- package/runner/src/runner-helpers.ts +582 -0
- package/runner/src/runner-insights.ts +105 -0
- package/runner/src/runner-mcp-proxy.ts +46 -0
- package/runner/src/runner-spawn-config.ts +68 -0
- package/runner/src/runner-stale-scratch-sweep.ts +21 -0
- package/runner/src/runner.ts +9 -0
- package/runner/src/runtime-token-file.ts +45 -0
- package/runner/src/runtime-token-remint.ts +56 -0
- package/runner/src/service-access.ts +88 -0
- package/runner/src/session-destroy.ts +27 -0
- package/runner/src/session-insights.ts +118 -0
- package/runner/src/session-scratch.ts +296 -0
- package/runner/src/spawn-input.ts +147 -0
- package/runner/src/startup-config-fetch.ts +48 -0
- package/runner/src/subreaper.ts +113 -0
- package/runner/src/template-resolver.ts +29 -0
- package/runner/src/test-run-dedup.ts +435 -0
- package/runner/src/transcript-context.ts +99 -0
- package/runner/src/transport-errors.ts +48 -0
- package/runner/src/turn-opener.ts +55 -0
- package/runner/src/turn-reconcile-event.ts +88 -0
- package/runner/src/vault-proxy-hop.ts +99 -0
- package/runner/src/version.ts +44 -0
- package/runner/src/web-tool-call-proxy.ts +128 -0
- package/runner/src/web-tools.ts +59 -0
- package/runner/test-support/codex-web-config-proof.ts +149 -0
- package/runner/test-support/effective-launch.ts +189 -0
- package/runner/test-support/native-context-sources.ts +77 -0
- package/runner/test-support/provisioning-context.ts +55 -0
- package/runner/test-support/recorder-double.ts +130 -0
- package/runner/test-support/recording-provider.ts +242 -0
- package/runner/test-support/runner-harness.ts +249 -0
- package/runner/test-support/service-access-fixture.ts +12 -0
- package/scripts/agent-vault/bootstrap.py +87 -0
- package/scripts/agent-vault/install.py +200 -0
- package/scripts/agent-vault/install_refresh.py +98 -0
- package/scripts/agent-vault/refresh.py +116 -0
- package/scripts/agent-vault/refresh_provision.py +109 -0
- package/scripts/agent-vault/refresh_store.py +54 -0
- package/scripts/agent-vault/runtime.py +253 -0
- package/scripts/agent-vault/sec-ops-activation.json +23 -0
- package/scripts/artifact-checkout-gc.ts +51 -0
- package/scripts/cd-config.ts +224 -0
- package/scripts/cd-deploy-debounce.ts +94 -0
- package/scripts/cd-deploy-worktree-gc.ts +235 -0
- package/scripts/cd-fleet-membership.ts +48 -0
- package/scripts/cd-host-epochs.ts +101 -0
- package/scripts/cd-hub-wake.ts +40 -0
- package/scripts/cd-land-boundary.ts +49 -0
- package/scripts/cd-watcher.ts +985 -0
- package/scripts/dashboard-build-marker.ts +71 -0
- package/scripts/fleet-sha-coverage.ts +66 -0
- package/scripts/gate-run-lease.ts +329 -0
- package/scripts/gate-slot +9 -0
- package/scripts/gate-slot-fleet-health.ts +60 -0
- package/scripts/gate.sh +6 -0
- package/scripts/install-bin-shim.cjs +149 -0
- package/scripts/orchestrator-spawn-smoke.ts +398 -0
- package/scripts/provisioning-matrix.ts +72 -0
- package/scripts/release-cd-stamp.ts +146 -0
- package/scripts/release-health.ts +133 -0
- package/scripts/release-report.ts +102 -0
- package/scripts/release-upgrade.ts +1296 -0
- package/scripts/steward-policy-cleanup.ts +73 -0
- package/scripts/wait-for-deploy.ts +43 -0
- package/src/agent-authz.ts +219 -0
- package/src/agent-branch-state.ts +45 -0
- package/src/agent-busy-health.ts +158 -0
- package/src/agent-card-projection.ts +86 -0
- package/src/agent-channel-binding.ts +49 -0
- package/src/agent-command-activity.ts +39 -0
- package/src/agent-core.ts +29 -0
- package/src/agent-death-diagnosis.ts +314 -0
- package/src/agent-drive-arbiter.ts +112 -0
- package/src/agent-exit-alarm.ts +10 -0
- package/src/agent-exit-cleanup-async.ts +69 -0
- package/src/agent-exit-cleanup.ts +99 -0
- package/src/agent-exit-report.ts +28 -0
- package/src/agent-issue-repo.ts +53 -0
- package/src/agent-launch-shape-redaction.ts +72 -0
- package/src/agent-lifecycle-events.ts +428 -0
- package/src/agent-principal.ts +14 -0
- package/src/agent-profile-catalog.ts +188 -0
- package/src/agent-ref.ts +340 -0
- package/src/agent-spawn.ts +45 -0
- package/src/agent-status-events.ts +41 -0
- package/src/agent-system-tags.ts +38 -0
- package/src/artifact-media.ts +34 -0
- package/src/artifact-storage.ts +245 -0
- package/src/artifact-text.ts +31 -0
- package/src/async-deadline.ts +59 -0
- package/src/auth/admin-routes.ts +36 -0
- package/src/auth/index.ts +23 -0
- package/src/auth/login-rate-limiter.ts +153 -0
- package/src/auth/password.ts +142 -0
- package/src/auth/provider.ts +60 -0
- package/src/auth/role-scopes.ts +15 -0
- package/src/auth/session-cookie.ts +35 -0
- package/src/auth/session-refresh.ts +61 -0
- package/src/auth/session.test-fixture.ts +10 -0
- package/src/auth/session.ts +107 -0
- package/src/authority-audit.ts +56 -0
- package/src/authz-meta-keys.ts +64 -0
- package/src/auto-spawn-dispatch.ts +154 -0
- package/src/automations/constants.ts +14 -0
- package/src/automations/cron.ts +129 -0
- package/src/automations/crud.ts +129 -0
- package/src/automations/dispatch.ts +299 -0
- package/src/automations/index.ts +5 -0
- package/src/automations/precheck.ts +124 -0
- package/src/automations/reconcile.ts +314 -0
- package/src/automations/storage.ts +200 -0
- package/src/automations/types.ts +16 -0
- package/src/automations/validation.ts +216 -0
- package/src/automations.ts +1 -0
- package/src/branch-landed.ts +761 -0
- package/src/browser-authz.ts +18 -0
- package/src/browser-config.ts +31 -0
- package/src/bundled-workflows.ts +48 -0
- package/src/bus-outbox-async.ts +16 -0
- package/src/bus-outbox.ts +265 -0
- package/src/bus-resume-commands.ts +18 -0
- package/src/bus.ts +792 -0
- package/src/canonical-repo-root.ts +131 -0
- package/src/cd-deploy-notify.ts +59 -0
- package/src/cd-host-deferrals.ts +23 -0
- package/src/cd-host-lag-notify.ts +36 -0
- package/src/cd-repository.ts +49 -0
- package/src/channel-output-control.ts +43 -0
- package/src/channel-output-validation.ts +11 -0
- package/src/channel-policy-health.ts +20 -0
- package/src/channel-target.ts +40 -0
- package/src/channels-host-service.ts +219 -0
- package/src/ci/bun-test-log.ts +41 -0
- package/src/ci/failed-test-files.ts +52 -0
- package/src/ci/gate-history.ts +66 -0
- package/src/ci/github-actions.ts +145 -0
- package/src/ci/incidents.ts +175 -0
- package/src/ci/index.ts +6 -0
- package/src/ci/job-verdict.ts +27 -0
- package/src/ci/land-boundary-ci.ts +104 -0
- package/src/ci/monitor.ts +528 -0
- package/src/ci/not-triggered.ts +116 -0
- package/src/ci/notifications.ts +234 -0
- package/src/ci/provider.ts +87 -0
- package/src/ci/root-missing.ts +35 -0
- package/src/ci/transition-notify.ts +279 -0
- package/src/ci-monitor.ts +7 -0
- package/src/claude-api-budget-async.ts +11 -0
- package/src/claude-api-budget-config.ts +23 -0
- package/src/claude-api-expiry.ts +70 -0
- package/src/claude-api-overflow.ts +146 -0
- package/src/claude-app/config.ts +13 -0
- package/src/claude-app/oauth-http.ts +127 -0
- package/src/claude-app/oauth-provider.ts +136 -0
- package/src/claude-app/passphrase.ts +14 -0
- package/src/claude-app-auth.ts +65 -0
- package/src/claude-app-gateway.ts +68 -0
- package/src/cli/_shared.ts +136 -0
- package/src/cli/agent-detect.ts +175 -0
- package/src/cli/agent-guide.ts +152 -0
- package/src/cli/agent-keep.ts +37 -0
- package/src/cli/agent-meta.ts +111 -0
- package/src/cli/artifact.ts +154 -0
- package/src/cli/browser.ts +56 -0
- package/src/cli/channel-output.ts +17 -0
- package/src/cli/channels-host.ts +13 -0
- package/src/cli/channels.ts +16 -0
- package/src/cli/claude-api-budget.ts +41 -0
- package/src/cli/context-probe.ts +90 -0
- package/src/cli/credentials.ts +1 -0
- package/src/cli/daemon.ts +125 -0
- package/src/cli/dev.ts +185 -0
- package/src/cli/ephemeral.ts +159 -0
- package/src/cli/hosts.ts +41 -0
- package/src/cli/index.ts +442 -0
- package/src/cli/introspect.ts +74 -0
- package/src/cli/maintenance.ts +24 -0
- package/src/cli/merges.ts +78 -0
- package/src/cli/message.ts +229 -0
- package/src/cli/orchestrator.ts +384 -0
- package/src/cli/pair.ts +135 -0
- package/src/cli/profile.ts +35 -0
- package/src/cli/project.ts +52 -0
- package/src/cli/prompts.ts +23 -0
- package/src/cli/provider-enablement.ts +42 -0
- package/src/cli/provider.ts +230 -0
- package/src/cli/recipe.ts +110 -0
- package/src/cli/reply.ts +130 -0
- package/src/cli/roles.ts +60 -0
- package/src/cli/routing-policy.ts +20 -0
- package/src/cli/run.ts +96 -0
- package/src/cli/secrets-backup.ts +85 -0
- package/src/cli/secrets.ts +55 -0
- package/src/cli/service-access.ts +23 -0
- package/src/cli/setup.ts +57 -0
- package/src/cli/shutdown.ts +16 -0
- package/src/cli/spawn.ts +31 -0
- package/src/cli/state.ts +73 -0
- package/src/cli/steward.ts +58 -0
- package/src/cli/task.ts +151 -0
- package/src/cli/team.ts +18 -0
- package/src/cli/timers.ts +53 -0
- package/src/cli/token.ts +72 -0
- package/src/cli/upgrade.ts +200 -0
- package/src/cli/web-tool-calls.ts +17 -0
- package/src/cli/workflow.ts +46 -0
- package/src/cli/workspace.ts +544 -0
- package/src/cli.ts +4 -0
- package/src/codex-reset-consume.ts +274 -0
- package/src/codex-wham-quota.ts +177 -0
- package/src/command-events.ts +69 -0
- package/src/command-secrets.ts +198 -0
- package/src/command-ttl.ts +63 -0
- package/src/commands-db.ts +1196 -0
- package/src/commands-landing-async.ts +166 -0
- package/src/commands-write.ts +160 -0
- package/src/comment-blocks.ts +84 -0
- package/src/compaction-watch.ts +259 -0
- package/src/config-model-selection.ts +14 -0
- package/src/config-store-write.ts +39 -0
- package/src/config-store.ts +1253 -0
- package/src/config.ts +939 -0
- package/src/connector-boot-health.ts +27 -0
- package/src/connector-paths.ts +47 -0
- package/src/connectors.ts +547 -0
- package/src/content-security.ts +12 -0
- package/src/context-advisory.ts +279 -0
- package/src/context-block-rendered-at.ts +33 -0
- package/src/context-injection-channel.ts +49 -0
- package/src/context-router.ts +121 -0
- package/src/context-threshold-config.ts +52 -0
- package/src/continuation-replay-edge.ts +30 -0
- package/src/continuity-working-state.ts +107 -0
- package/src/contracts.ts +109 -0
- package/src/coordinator-authority.ts +100 -0
- package/src/coordinator-digest-config.ts +20 -0
- package/src/cosmos-events.ts +164 -0
- package/src/daemon.ts +570 -0
- package/src/dashboard-notifications.ts +169 -0
- package/src/dashboard-presence.ts +86 -0
- package/src/db/activity-async.ts +58 -0
- package/src/db/activity-read-ops.ts +42 -0
- package/src/db/activity-write-ops.ts +43 -0
- package/src/db/activity.ts +454 -0
- package/src/db/agent-card-read.ts +98 -0
- package/src/db/agent-effort-state.ts +146 -0
- package/src/db/agent-exit-cleanup.ts +94 -0
- package/src/db/agent-exit-report.ts +33 -0
- package/src/db/agent-gate-runs-write-ops.ts +7 -0
- package/src/db/agent-gate-runs.ts +96 -0
- package/src/db/agent-identity-archive.test-fixture.ts +12 -0
- package/src/db/agent-identity-archive.ts +75 -0
- package/src/db/agent-keep.ts +21 -0
- package/src/db/agent-lifecycle-write-ops.ts +92 -0
- package/src/db/agent-meta.ts +74 -0
- package/src/db/agent-outstanding-work.ts +154 -0
- package/src/db/agent-ownership-async.ts +45 -0
- package/src/db/agent-ownership-read-ops.ts +12 -0
- package/src/db/agent-ownership-write-ops.ts +50 -0
- package/src/db/agent-ownership.ts +200 -0
- package/src/db/agent-predicates.ts +64 -0
- package/src/db/agent-read.ts +39 -0
- package/src/db/agent-search-async.ts +21 -0
- package/src/db/agent-search-read-ops.ts +8 -0
- package/src/db/agent-search.ts +162 -0
- package/src/db/agent-shutdown-in-flight.ts +21 -0
- package/src/db/agents-async.ts +333 -0
- package/src/db/agents-prune-write-op.ts +37 -0
- package/src/db/agents-read-ops.ts +33 -0
- package/src/db/agents-write-ops.ts +174 -0
- package/src/db/agents.ts +1284 -0
- package/src/db/api-budget-schema.ts +144 -0
- package/src/db/api-budget-usage-migration.ts +31 -0
- package/src/db/api-budget-usage.ts +40 -0
- package/src/db/artifact-browse.ts +145 -0
- package/src/db/artifact-retention.ts +115 -0
- package/src/db/artifacts-async.ts +81 -0
- package/src/db/artifacts-read-ops.ts +24 -0
- package/src/db/artifacts-write-ops.ts +46 -0
- package/src/db/artifacts.ts +307 -0
- package/src/db/auth-identities.ts +128 -0
- package/src/db/backlog.ts +172 -0
- package/src/db/blackboard.ts +171 -0
- package/src/db/broadcast-scope.ts +63 -0
- package/src/db/broker-memory-migration.ts +71 -0
- package/src/db/browser-sessions.ts +89 -0
- package/src/db/budget-lineage.ts +26 -0
- package/src/db/bus-outbox-read-ops.ts +29 -0
- package/src/db/bus-outbox-write-ops.ts +57 -0
- package/src/db/bus-prune-async.ts +16 -0
- package/src/db/busy-regression.worker.ts +48 -0
- package/src/db/caller-lifecycle.ts +24 -0
- package/src/db/carry-pending-marker.ts +129 -0
- package/src/db/carry-pending.ts +145 -0
- package/src/db/channel-binding-delete.ts +15 -0
- package/src/db/channel-egress-allowlist.ts +200 -0
- package/src/db/channel-identity.ts +38 -0
- package/src/db/channel-runtime.ts +19 -0
- package/src/db/channels-async.ts +55 -0
- package/src/db/channels-read-ops.ts +13 -0
- package/src/db/channels-session-fence.ts +18 -0
- package/src/db/channels-write-ops.ts +42 -0
- package/src/db/channels.ts +654 -0
- package/src/db/checkout-refresh.ts +36 -0
- package/src/db/ci-gate-runs.ts +92 -0
- package/src/db/ci-incidents-async.ts +76 -0
- package/src/db/ci-incidents-read-ops.ts +15 -0
- package/src/db/ci-incidents-write-ops.ts +57 -0
- package/src/db/ci-incidents.ts +667 -0
- package/src/db/ci-sha-observations-schema.ts +33 -0
- package/src/db/claim-sql.ts +44 -0
- package/src/db/claude-api-budget-ops.ts +15 -0
- package/src/db/claude-api-budget-reconcile.ts +39 -0
- package/src/db/claude-api-budget.ts +198 -0
- package/src/db/claude-app-oauth.ts +74 -0
- package/src/db/claude-catalog-reconcile.ts +27 -0
- package/src/db/codex-reset-consumes-async.ts +9 -0
- package/src/db/codex-reset-consumes-read-ops.ts +5 -0
- package/src/db/codex-reset-consumes-write-ops.ts +19 -0
- package/src/db/codex-reset-consumes.ts +122 -0
- package/src/db/command-agent-profiles.ts +58 -0
- package/src/db/command-row.ts +88 -0
- package/src/db/command-terminal-status.ts +33 -0
- package/src/db/command-vault-pruning.ts +30 -0
- package/src/db/commands-cancel-write.ts +45 -0
- package/src/db/commands-claim-admission.ts +144 -0
- package/src/db/commands-effort-read.ts +58 -0
- package/src/db/commands-host-land-admission.ts +106 -0
- package/src/db/commands-kernel-landing.ts +268 -0
- package/src/db/commands-land-occupancy.ts +40 -0
- package/src/db/commands-land-wait.ts +38 -0
- package/src/db/commands-landing-completeness.ts +66 -0
- package/src/db/commands-landing-tuples.ts +22 -0
- package/src/db/commands-landing.ts +1046 -0
- package/src/db/commands-leaseless-sweep.ts +72 -0
- package/src/db/commands-list-query.ts +47 -0
- package/src/db/commands-planner-stats.test-fixture.ts +97 -0
- package/src/db/commands-read-ops.ts +49 -0
- package/src/db/commands-scheduler-recovery.ts +71 -0
- package/src/db/commands-spawn-read.ts +33 -0
- package/src/db/commands-write-ops.ts +286 -0
- package/src/db/config-store-write-ops.ts +58 -0
- package/src/db/connection-instrumentation.ts +76 -0
- package/src/db/connection.ts +532 -0
- package/src/db/context-reset-carry.ts +144 -0
- package/src/db/continuation-archive-purge.ts +48 -0
- package/src/db/continuation-archive-search.ts +249 -0
- package/src/db/continuation-archives-async.ts +59 -0
- package/src/db/continuation-archives-read-ops.ts +10 -0
- package/src/db/continuation-archives-write-ops.ts +15 -0
- package/src/db/continuation-archives.ts +158 -0
- package/src/db/continuations.ts +201 -0
- package/src/db/coordinator-delivery.ts +10 -0
- package/src/db/coordinator-digest-async.ts +13 -0
- package/src/db/coordinator-digest-flush.ts +6 -0
- package/src/db/coordinator-digest.ts +145 -0
- package/src/db/coordinator-seat.ts +130 -0
- package/src/db/crash-reports.ts +115 -0
- package/src/db/db-error-registry.ts +290 -0
- package/src/db/db-reader-worker.ts +91 -0
- package/src/db/db-writer-worker.ts +66 -0
- package/src/db/deferred-lineage-report-queries.ts +28 -0
- package/src/db/deferred-lineage-reports.ts +44 -0
- package/src/db/delivery-async.ts +102 -0
- package/src/db/delivery-expiration-health.ts +97 -0
- package/src/db/delivery-expiration.ts +52 -0
- package/src/db/delivery-quality-async.ts +23 -0
- package/src/db/delivery-quality.ts +116 -0
- package/src/db/delivery-read-ops.ts +26 -0
- package/src/db/delivery-report-echo.ts +53 -0
- package/src/db/delivery-write-ops.ts +72 -0
- package/src/db/delivery.ts +545 -0
- package/src/db/deploy-events-async.ts +66 -0
- package/src/db/deploy-events-read-ops.ts +25 -0
- package/src/db/deploy-events-write-ops.ts +81 -0
- package/src/db/deploy-events.ts +554 -0
- package/src/db/deploy-task-completion.ts +48 -0
- package/src/db/drive-leases.ts +165 -0
- package/src/db/durable-payloads.ts +92 -0
- package/src/db/fixtures/writer-shutdown.ts +28 -0
- package/src/db/fts-query.ts +8 -0
- package/src/db/gate-policy.ts +27 -0
- package/src/db/gate-runs.ts +181 -0
- package/src/db/gateway.ts +513 -0
- package/src/db/generation-launch.ts +82 -0
- package/src/db/guides-search.ts +18 -0
- package/src/db/history-delivery-settle.ts +57 -0
- package/src/db/hosts-async.ts +150 -0
- package/src/db/hosts-backfill.ts +91 -0
- package/src/db/hosts-read-ops.ts +21 -0
- package/src/db/hosts-registration.ts +452 -0
- package/src/db/hosts-views.ts +259 -0
- package/src/db/hosts-write-ops.ts +94 -0
- package/src/db/hosts.ts +251 -0
- package/src/db/human-address.ts +6 -0
- package/src/db/idle-digest.ts +54 -0
- package/src/db/idle-self-care.ts +100 -0
- package/src/db/inbox-async.ts +29 -0
- package/src/db/inbox-read-ops.ts +8 -0
- package/src/db/inbox-write-ops.ts +25 -0
- package/src/db/inbox.ts +197 -0
- package/src/db/index.ts +147 -0
- package/src/db/injection-attempts.ts +41 -0
- package/src/db/insights-read-ops.ts +12 -0
- package/src/db/insights-write-ops.ts +15 -0
- package/src/db/integrations.ts +297 -0
- package/src/db/issue-associations.ts +136 -0
- package/src/db/issue-lifecycle.ts +199 -0
- package/src/db/issue-refs.ts +312 -0
- package/src/db/kernel-event-log-schema.ts +14 -0
- package/src/db/kernel-landing-admission.ts +15 -0
- package/src/db/kernel-landing-command-authority.ts +222 -0
- package/src/db/kernel-persistence-async.ts +48 -0
- package/src/db/kernel-persistence-read-ops.ts +24 -0
- package/src/db/kernel-persistence-write-ops.ts +43 -0
- package/src/db/land-boundaries.ts +138 -0
- package/src/db/land-executing.ts +147 -0
- package/src/db/land-gate-attestations.ts +161 -0
- package/src/db/land-incident-eligibility.ts +44 -0
- package/src/db/land-queue-trace.ts +28 -0
- package/src/db/land-stack.ts +80 -0
- package/src/db/land-telemetry-schema.ts +50 -0
- package/src/db/land-telemetry-write-ops.ts +16 -0
- package/src/db/land-telemetry.ts +114 -0
- package/src/db/land-withdrawal-state.ts +26 -0
- package/src/db/landed-merge-evidence.ts +72 -0
- package/src/db/landed-task-attribution.ts +23 -0
- package/src/db/landing-audit.ts +18 -0
- package/src/db/landing-controllers.ts +67 -0
- package/src/db/landing-ingress-async.ts +102 -0
- package/src/db/landing-ingress-read-ops.ts +8 -0
- package/src/db/landing-ingress-write-ops.ts +42 -0
- package/src/db/landing-ingress.ts +380 -0
- package/src/db/landing-read-ops.ts +18 -0
- package/src/db/landing-receipts.ts +206 -0
- package/src/db/landing-schema.ts +479 -0
- package/src/db/launch-facts.ts +60 -0
- package/src/db/legacy-landing-publication.ts +103 -0
- package/src/db/legacy-message-backfill.ts +90 -0
- package/src/db/lifecycle-seq.ts +127 -0
- package/src/db/lifecycle-write-window.ts +216 -0
- package/src/db/lineage-pair-dedupe-sql.ts +80 -0
- package/src/db/lineage-startup-captures.ts +43 -0
- package/src/db/long-running-work-async.ts +12 -0
- package/src/db/long-running-work-write-ops.ts +8 -0
- package/src/db/long-running-work.ts +78 -0
- package/src/db/macos-privacy.ts +72 -0
- package/src/db/main-connection-writes.ts +44 -0
- package/src/db/main-thread-state.ts +38 -0
- package/src/db/maintenance-health.ts +560 -0
- package/src/db/maintenance-indexes.ts +37 -0
- package/src/db/maintenance-job-runs-async.ts +15 -0
- package/src/db/maintenance-job-runs.ts +62 -0
- package/src/db/maintenance-job-write-ops.ts +10 -0
- package/src/db/maintenance-pauses.ts +224 -0
- package/src/db/maintenance-worker.ts +111 -0
- package/src/db/mappers.ts +422 -0
- package/src/db/memory-preamble-read.ts +13 -0
- package/src/db/memory-resolve.ts +209 -0
- package/src/db/memory-retirement-plan.ts +31 -0
- package/src/db/memory-retirement.ts +15 -0
- package/src/db/merge-drain-async.ts +8 -0
- package/src/db/merge-lease.ts +225 -0
- package/src/db/message-claims.ts +16 -0
- package/src/db/message-queries.ts +16 -0
- package/src/db/message-read-mark.ts +32 -0
- package/src/db/message-reads-async.ts +46 -0
- package/src/db/message-reads-read-ops.ts +35 -0
- package/src/db/message-reads-write-ops.ts +24 -0
- package/src/db/message-reads.ts +553 -0
- package/src/db/message-send-suppression.ts +58 -0
- package/src/db/message-send.ts +76 -0
- package/src/db/message-thread.ts +15 -0
- package/src/db/message-write-ops.ts +96 -0
- package/src/db/messages-async.ts +31 -0
- package/src/db/messages-read-ops.ts +14 -0
- package/src/db/messages.ts +1201 -0
- package/src/db/migration-marker.ts +13 -0
- package/src/db/migrations.ts +1761 -0
- package/src/db/notification-subscriptions.ts +282 -0
- package/src/db/on-loop-write-transaction.ts +34 -0
- package/src/db/operator-actions-schema.ts +10 -0
- package/src/db/operator-decisions.ts +180 -0
- package/src/db/orchestrators-async.ts +57 -0
- package/src/db/orchestrators-read-ops.ts +7 -0
- package/src/db/orchestrators-write-ops.ts +52 -0
- package/src/db/orchestrators.ts +485 -0
- package/src/db/outbox-codec.ts +16 -0
- package/src/db/pair-maintenance.ts +9 -0
- package/src/db/pairs-async.ts +10 -0
- package/src/db/pairs-write-ops.ts +8 -0
- package/src/db/pairs.ts +264 -0
- package/src/db/pending-relay-runs.ts +73 -0
- package/src/db/plan-blurb-migration.ts +158 -0
- package/src/db/plan-ci-blocks.ts +28 -0
- package/src/db/plan-completion.ts +55 -0
- package/src/db/plan-conformance.ts +104 -0
- package/src/db/plan-dispatch-schema.ts +17 -0
- package/src/db/plan-dispatch-store.ts +112 -0
- package/src/db/plan-external.ts +79 -0
- package/src/db/plan-graph-async.ts +23 -0
- package/src/db/plan-graph-read-ops.ts +16 -0
- package/src/db/plan-graph-write-ops.ts +37 -0
- package/src/db/plan-graph.ts +403 -0
- package/src/db/plan-import-schema.ts +19 -0
- package/src/db/plan-import.ts +211 -0
- package/src/db/plan-task-create.ts +44 -0
- package/src/db/planner-stats.ts +123 -0
- package/src/db/plans-async.ts +22 -0
- package/src/db/plans-read-ops.ts +11 -0
- package/src/db/plans-write-ops.ts +9 -0
- package/src/db/plans.ts +385 -0
- package/src/db/policy-runtime.ts +14 -0
- package/src/db/presence-buffer.ts +111 -0
- package/src/db/presence-loop.ts +58 -0
- package/src/db/presence-write-ops.ts +28 -0
- package/src/db/presence-write.ts +38 -0
- package/src/db/profile-artifact-backfill-migration.ts +32 -0
- package/src/db/profile-host-sources-migration.ts +150 -0
- package/src/db/profile-legacy-project-instructions-migration.ts +41 -0
- package/src/db/profile-name-case-migration.ts +46 -0
- package/src/db/profile-override-migration.ts +200 -0
- package/src/db/profile-project-ack-migration.ts +55 -0
- package/src/db/profile-slim-migration.ts +125 -0
- package/src/db/profile-slim-plan.ts +190 -0
- package/src/db/project-entries-async.ts +18 -0
- package/src/db/project-entries-read-ops.ts +28 -0
- package/src/db/project-entries.ts +514 -0
- package/src/db/project-entry-search.ts +63 -0
- package/src/db/project-identity.ts +16 -0
- package/src/db/project-journal.ts +256 -0
- package/src/db/project-lifecycle.ts +80 -0
- package/src/db/project-memory-group-migration.ts +76 -0
- package/src/db/project-phantom-merge.ts +228 -0
- package/src/db/project-root-schema.ts +30 -0
- package/src/db/project-trust-approvals.ts +98 -0
- package/src/db/projects-async.ts +50 -0
- package/src/db/projects-read-ops.ts +59 -0
- package/src/db/projects-write-ops.ts +74 -0
- package/src/db/projects.ts +629 -0
- package/src/db/prompt-templates-schema.ts +23 -0
- package/src/db/prompt-templates.ts +138 -0
- package/src/db/prompt-version-migration.ts +115 -0
- package/src/db/prompt-versions-ops.ts +16 -0
- package/src/db/prompt-versions.ts +167 -0
- package/src/db/provider-catalog-async.ts +31 -0
- package/src/db/provider-catalog-read-ops.ts +8 -0
- package/src/db/provider-catalog-write-ops.ts +16 -0
- package/src/db/provider-config-history.ts +49 -0
- package/src/db/provider-config-secrets.ts +117 -0
- package/src/db/provider-flap-messages-async.ts +6 -0
- package/src/db/provider-flap-messages-write-ops.ts +12 -0
- package/src/db/provider-flap-messages.ts +19 -0
- package/src/db/provider-quota-advisory-types.ts +39 -0
- package/src/db/provider-quota-burn.ts +322 -0
- package/src/db/provider-quota-effect-occurrences.ts +13 -0
- package/src/db/provider-quota-lease-write-ops.ts +23 -0
- package/src/db/provider-quota-leases-async.ts +35 -0
- package/src/db/provider-quota-leases.ts +174 -0
- package/src/db/provider-quota-matrix-cache.ts +85 -0
- package/src/db/provider-quota-matrix-fetch.ts +85 -0
- package/src/db/provider-quota-merge.ts +90 -0
- package/src/db/provider-quota-notification-write.ts +98 -0
- package/src/db/provider-quota-prune.ts +35 -0
- package/src/db/provider-quota-read-async.ts +77 -0
- package/src/db/provider-quota-read-ops.ts +56 -0
- package/src/db/provider-quota-recipients.ts +38 -0
- package/src/db/provider-quota-state.ts +139 -0
- package/src/db/provider-quota-visibility.ts +22 -0
- package/src/db/provider-quota-write-ops.ts +69 -0
- package/src/db/provider-quotas.ts +726 -0
- package/src/db/provider-secret-scrub.ts +64 -0
- package/src/db/provisioning-assets-migration.ts +85 -0
- package/src/db/provisioning-async.ts +116 -0
- package/src/db/provisioning-callmux.ts +184 -0
- package/src/db/provisioning-github-api.ts +16 -0
- package/src/db/provisioning-github-import-target.ts +29 -0
- package/src/db/provisioning-mcp-validation.ts +103 -0
- package/src/db/provisioning-read-ops.ts +23 -0
- package/src/db/provisioning-registry.ts +1122 -0
- package/src/db/provisioning-resolve.ts +321 -0
- package/src/db/provisioning-write-ops.ts +43 -0
- package/src/db/qa-skill-seed.ts +27 -0
- package/src/db/quota-lease-busy.worker.ts +62 -0
- package/src/db/read-op-marshaling-fixtures.ts +724 -0
- package/src/db/read-ops.ts +266 -0
- package/src/db/reader-pool.ts +252 -0
- package/src/db/recipe-read-ops.ts +15 -0
- package/src/db/recipe-write-ops.ts +68 -0
- package/src/db/reply-obligations.ts +265 -0
- package/src/db/report-suppression.ts +126 -0
- package/src/db/restart-epoch-admin-async.ts +14 -0
- package/src/db/restart-epoch-admin.ts +67 -0
- package/src/db/restart-epoch-admission.ts +114 -0
- package/src/db/restart-epoch-async.ts +80 -0
- package/src/db/restart-epoch-begin.ts +177 -0
- package/src/db/restart-epoch-read-ops.ts +40 -0
- package/src/db/restart-epoch-release.ts +248 -0
- package/src/db/restart-epoch-write-ops.ts +117 -0
- package/src/db/restart-epoch.test-fixture.ts +37 -0
- package/src/db/restart-epoch.ts +623 -0
- package/src/db/restart-sensitive.ts +81 -0
- package/src/db/retention.ts +423 -0
- package/src/db/review-ref-cleanups.ts +306 -0
- package/src/db/routing-policy.ts +64 -0
- package/src/db/scheduled-timer-projection.ts +123 -0
- package/src/db/scheduled-timer-quota-chaos-worker.ts +84 -0
- package/src/db/scheduled-timers.ts +521 -0
- package/src/db/schema.ts +1472 -0
- package/src/db/scoped-message-reads.ts +31 -0
- package/src/db/secrets-broker-async.ts +31 -0
- package/src/db/secrets-broker-read-ops.ts +8 -0
- package/src/db/secrets-broker-write-ops.ts +23 -0
- package/src/db/secrets-broker.ts +221 -0
- package/src/db/secrets-vault-import.ts +37 -0
- package/src/db/secrets-vault-key-lifecycle.ts +64 -0
- package/src/db/secrets-vault-metadata.ts +37 -0
- package/src/db/secrets-vault-migration.ts +53 -0
- package/src/db/secrets-vault-write.ts +97 -0
- package/src/db/secrets-vault.ts +69 -0
- package/src/db/self-effort-permissions.ts +50 -0
- package/src/db/service-access-read-ops.ts +10 -0
- package/src/db/services-async.ts +29 -0
- package/src/db/services-read-ops.ts +134 -0
- package/src/db/services-write-ops.ts +71 -0
- package/src/db/shared.ts +7 -0
- package/src/db/shipping-board-async.ts +6 -0
- package/src/db/shipping-board.ts +319 -0
- package/src/db/shipping-stats-async.ts +24 -0
- package/src/db/shipping-stats-histogram.ts +45 -0
- package/src/db/shipping-stats-schema.ts +8 -0
- package/src/db/shipping-stats.ts +265 -0
- package/src/db/snapshot-ledger-prune.ts +53 -0
- package/src/db/spawn-budget.ts +145 -0
- package/src/db/spawn-command-busy.worker.ts +71 -0
- package/src/db/spawn-delegation-state.ts +124 -0
- package/src/db/spawn-delegation.ts +114 -0
- package/src/db/spawn-host-cap.ts +29 -0
- package/src/db/spawn-in-flight-count.ts +37 -0
- package/src/db/spawn-in-flight.ts +15 -0
- package/src/db/spawn-process-evidence.ts +68 -0
- package/src/db/spawn-project-target.ts +57 -0
- package/src/db/spawn-registration-confirmed-backfill.ts +71 -0
- package/src/db/spawn-request-id-migration.ts +36 -0
- package/src/db/spawn-request-id.ts +35 -0
- package/src/db/spawn-request-reuse.ts +28 -0
- package/src/db/spawn-tree-cleanup.ts +89 -0
- package/src/db/spawn-tree.ts +29 -0
- package/src/db/sql-audit-indexes.ts +77 -0
- package/src/db/stalled-message-delivery.ts +52 -0
- package/src/db/startup-write-lock.ts +36 -0
- package/src/db/stats-async.ts +235 -0
- package/src/db/stats-health-read-model.ts +225 -0
- package/src/db/stats-read-ops.ts +25 -0
- package/src/db/stats.ts +633 -0
- package/src/db/target-host.ts +25 -0
- package/src/db/task-async.ts +165 -0
- package/src/db/task-comment-through-async.ts +14 -0
- package/src/db/task-comment-through-read-ops.ts +4 -0
- package/src/db/task-comment-through-write-ops.ts +7 -0
- package/src/db/task-comment-through.ts +123 -0
- package/src/db/task-core.ts +44 -0
- package/src/db/task-deliverables-async.ts +60 -0
- package/src/db/task-deliverables-read-ops.ts +4 -0
- package/src/db/task-deliverables-write-ops.ts +37 -0
- package/src/db/task-deliverables.ts +387 -0
- package/src/db/task-dependency-cycle.worker.ts +43 -0
- package/src/db/task-detail-projection.ts +91 -0
- package/src/db/task-entity-async.ts +252 -0
- package/src/db/task-entity-read-ops.ts +51 -0
- package/src/db/task-entity-write-ops.ts +197 -0
- package/src/db/task-entity.ts +1143 -0
- package/src/db/task-execution.ts +20 -0
- package/src/db/task-issue-relation.ts +23 -0
- package/src/db/task-issue-source.ts +46 -0
- package/src/db/task-land-withdraw-async.ts +10 -0
- package/src/db/task-land-withdraw-read-ops.ts +13 -0
- package/src/db/task-land-withdraw-read.ts +47 -0
- package/src/db/task-land-withdraw-write-ops.ts +31 -0
- package/src/db/task-land-withdraw.ts +423 -0
- package/src/db/task-list.ts +113 -0
- package/src/db/task-maintenance.ts +25 -0
- package/src/db/task-memory-async.ts +19 -0
- package/src/db/task-memory-read-ops.ts +9 -0
- package/src/db/task-memory-write-ops.ts +23 -0
- package/src/db/task-memory.ts +170 -0
- package/src/db/task-owner.ts +126 -0
- package/src/db/task-read-ops.ts +44 -0
- package/src/db/task-review-hold-async.ts +20 -0
- package/src/db/task-review-hold-delivery.ts +58 -0
- package/src/db/task-review-hold-write-ops.ts +26 -0
- package/src/db/task-review-hold.ts +615 -0
- package/src/db/task-state-reconcile-async.ts +12 -0
- package/src/db/task-state-reconcile.ts +163 -0
- package/src/db/task-validation.ts +71 -0
- package/src/db/task-write-ops.ts +145 -0
- package/src/db/tasks.ts +528 -0
- package/src/db/team-epics.ts +37 -0
- package/src/db/team-idle.ts +35 -0
- package/src/db/team-project.ts +69 -0
- package/src/db/team-spawn-delegation-read.ts +36 -0
- package/src/db/team-spawn-delegation.ts +49 -0
- package/src/db/teams-async.ts +58 -0
- package/src/db/teams-read-ops.ts +27 -0
- package/src/db/teams-write-ops.ts +17 -0
- package/src/db/teams.ts +504 -0
- package/src/db/terminal-events.ts +113 -0
- package/src/db/timer-async.ts +523 -0
- package/src/db/timer-cutover-core.ts +545 -0
- package/src/db/timer-cutover-report-read-ops.ts +211 -0
- package/src/db/timer-cutover-write-ops.ts +275 -0
- package/src/db/timer-ingress-payload.ts +160 -0
- package/src/db/timer-ingress-read-ops.ts +39 -0
- package/src/db/timer-ingress-request-keys.ts +282 -0
- package/src/db/timer-ingress-write-ops.ts +145 -0
- package/src/db/timer-ingress.ts +515 -0
- package/src/db/timer-message-cutover.ts +322 -0
- package/src/db/timer-message-fire-deadletter.ts +136 -0
- package/src/db/timer-message-fire.ts +209 -0
- package/src/db/timer-message-flip-chaos-worker.ts +89 -0
- package/src/db/timer-message-flip-consistency.ts +147 -0
- package/src/db/timer-message-flip.ts +676 -0
- package/src/db/timer-message-participant.ts +138 -0
- package/src/db/timer-migrate-input.ts +92 -0
- package/src/db/timer-operator-async.ts +177 -0
- package/src/db/timer-operator-read-ops.ts +21 -0
- package/src/db/timer-operator-stage10.ts +119 -0
- package/src/db/timer-operator-write-ops.ts +102 -0
- package/src/db/timer-operator.ts +393 -0
- package/src/db/timer-read-ops.ts +147 -0
- package/src/db/timer-transfer-errors.ts +10 -0
- package/src/db/timer-transfer-write-ops.ts +39 -0
- package/src/db/timer-verifier-schema.ts +29 -0
- package/src/db/timer-verifier.ts +379 -0
- package/src/db/timer-write-ops.ts +277 -0
- package/src/db/token-db-write-ops.ts +92 -0
- package/src/db/token-standing.ts +84 -0
- package/src/db/token-usage-read-ops.ts +8 -0
- package/src/db/token-usage-write-ops.ts +35 -0
- package/src/db/token-usage.ts +338 -0
- package/src/db/tool-groups-empty-migration.ts +59 -0
- package/src/db/urgent-intake.ts +30 -0
- package/src/db/user-invites.ts +107 -0
- package/src/db/user-settings-read-ops.ts +19 -0
- package/src/db/user-settings-write-ops.ts +42 -0
- package/src/db/users.ts +173 -0
- package/src/db/vault-backup.ts +59 -0
- package/src/db/vault-expiry.ts +71 -0
- package/src/db/vault-health.ts +99 -0
- package/src/db/vault-token-launch.ts +77 -0
- package/src/db/vault-token-ops.ts +14 -0
- package/src/db/vault-tokens.ts +101 -0
- package/src/db/viewer-scope.ts +117 -0
- package/src/db/wal-checkpointer-worker.ts +48 -0
- package/src/db/wal-checkpointer.ts +107 -0
- package/src/db/wal-index.ts +53 -0
- package/src/db/wal-live-log.ts +68 -0
- package/src/db/wal-reclaim-async.ts +45 -0
- package/src/db/wal-reclaim.ts +140 -0
- package/src/db/web-tool-call-ops.ts +15 -0
- package/src/db/web-tool-calls.ts +87 -0
- package/src/db/withdraw-land-error.ts +18 -0
- package/src/db/work-evidence.ts +43 -0
- package/src/db/workflow-budget.ts +44 -0
- package/src/db/workflow-contact.ts +173 -0
- package/src/db/workflow-execution.ts +10 -0
- package/src/db/workflow-journal-async.ts +64 -0
- package/src/db/workflow-journal-prune.ts +71 -0
- package/src/db/workflow-journal-read-ops.ts +21 -0
- package/src/db/workflow-journal-schema.ts +9 -0
- package/src/db/workflow-journal-write-ops.ts +33 -0
- package/src/db/workflow-journal.ts +324 -0
- package/src/db/workflow-spawn-quota.ts +57 -0
- package/src/db/workflow-stats-read-ops.ts +177 -0
- package/src/db/workflow-step-tasks.ts +74 -0
- package/src/db/workflow-task-read-ops.ts +187 -0
- package/src/db/workspace-land-state.ts +65 -0
- package/src/db/workspace-merge-hold.ts +28 -0
- package/src/db/workspace-persistence.ts +77 -0
- package/src/db/workspace-rekey-write-ops.ts +11 -0
- package/src/db/workspace-rekey.ts +148 -0
- package/src/db/workspace-steward-cancel.ts +85 -0
- package/src/db/workspace-steward-fence.ts +30 -0
- package/src/db/workspace-write-ops.ts +26 -0
- package/src/db/workspace-writes-async.ts +46 -0
- package/src/db/workspace-writes.ts +196 -0
- package/src/db/workspaces.ts +617 -0
- package/src/db/write-ops.ts +594 -0
- package/src/db/writer-drain.ts +27 -0
- package/src/db/writer-fault-seam.ts +101 -0
- package/src/db/writer-gateway.ts +840 -0
- package/src/db/writer-ledger.ts +56 -0
- package/src/db.ts +4 -0
- package/src/deploy-executor.ts +139 -0
- package/src/dev.ts +541 -0
- package/src/dispatch-availability.ts +55 -0
- package/src/dispatch-match.ts +21 -0
- package/src/ephemeral/host-landing-slots-proof-worker.ts +45 -0
- package/src/ephemeral/index.ts +58 -0
- package/src/ephemeral/instance.ts +832 -0
- package/src/ephemeral/landing-ingress-proof-worker.ts +30 -0
- package/src/ephemeral/ports.ts +40 -0
- package/src/ephemeral/profile.ts +323 -0
- package/src/ephemeral/rehearsal-stamps.ts +149 -0
- package/src/ephemeral/rehearsal.ts +213 -0
- package/src/ephemeral/snapshot-kernel.ts +41 -0
- package/src/ephemeral/snapshot.ts +753 -0
- package/src/ephemeral/sweep.ts +40 -0
- package/src/event-loop-lag.ts +584 -0
- package/src/event-loop-yield.ts +27 -0
- package/src/events.ts +140 -0
- package/src/execution-mode.ts +63 -0
- package/src/fleet-convergence.ts +123 -0
- package/src/gate-resolver.ts +151 -0
- package/src/gate-run-capture.ts +71 -0
- package/src/git-sha.ts +58 -0
- package/src/guides.ts +73 -0
- package/src/host/capacity.ts +79 -0
- package/src/host/gate-capacity-alert.ts +90 -0
- package/src/host/identity.ts +128 -0
- package/src/host/presentation.ts +234 -0
- package/src/host/pressure-details.ts +89 -0
- package/src/host/pressure.ts +216 -0
- package/src/host/state.ts +132 -0
- package/src/host/utilization-buffer.ts +71 -0
- package/src/host-awareness.ts +57 -0
- package/src/host-identity.ts +39 -0
- package/src/host-provider-enablement.ts +75 -0
- package/src/host-provider-store.ts +102 -0
- package/src/host-tools.ts +39 -0
- package/src/http-body.ts +49 -0
- package/src/http-compression.ts +16 -0
- package/src/hub-metrics-report.ts +67 -0
- package/src/hub-metrics.ts +166 -0
- package/src/idle-digest-config.ts +40 -0
- package/src/idle-self-care.ts +58 -0
- package/src/index.ts +35 -0
- package/src/injection-sweep-pacing.ts +24 -0
- package/src/insights-async.ts +16 -0
- package/src/insights-db.ts +188 -0
- package/src/internal-spawn-model.ts +18 -0
- package/src/invite-link.ts +11 -0
- package/src/issue-tracker/adapter.ts +58 -0
- package/src/issue-tracker/github.ts +342 -0
- package/src/issue-tracker/index.ts +12 -0
- package/src/issue-tracker/registry.ts +26 -0
- package/src/journal-preamble.ts +350 -0
- package/src/kernel-correlation.ts +28 -0
- package/src/land-authorization.ts +73 -0
- package/src/land-block.ts +59 -0
- package/src/land-failure-event-key.ts +8 -0
- package/src/land-gate-failure-routing.ts +69 -0
- package/src/land-gate-notifications.ts +173 -0
- package/src/land-gate-queue-progress.ts +54 -0
- package/src/land-gates-source.ts +126 -0
- package/src/land-gates.ts +29 -0
- package/src/land-lifecycle-drives.ts +15 -0
- package/src/land-settle-dispatch.ts +134 -0
- package/src/land-stack-depth.ts +11 -0
- package/src/land-telemetry.ts +40 -0
- package/src/landing-base-ref.ts +3 -0
- package/src/landing-host-safety.ts +38 -0
- package/src/landing-lane-key.ts +74 -0
- package/src/launch-mode-support.ts +11 -0
- package/src/launch-mode.ts +58 -0
- package/src/legacy-landing.test-fixture.ts +56 -0
- package/src/lifecycle-context-pressure.ts +134 -0
- package/src/lifecycle-manager.ts +831 -0
- package/src/lifecycle-signal-registry.ts +87 -0
- package/src/live-runs-section.ts +38 -0
- package/src/loop-block-attribution.ts +442 -0
- package/src/loop-block-regression-alarm.ts +156 -0
- package/src/loop-task-stamps.ts +62 -0
- package/src/main-thread-clock.ts +95 -0
- package/src/maintenance/agent-identity-archive-job.ts +15 -0
- package/src/maintenance/artifact-checkout-gc-job.ts +14 -0
- package/src/maintenance/artifact-checkout-gc.ts +33 -0
- package/src/maintenance/artifact-sweep.ts +23 -0
- package/src/maintenance/breaker.ts +200 -0
- package/src/maintenance/cd-watcher.ts +176 -0
- package/src/maintenance/checkout-refresh.ts +83 -0
- package/src/maintenance/ci-monitor.ts +14 -0
- package/src/maintenance/claude-api-budget-job.ts +16 -0
- package/src/maintenance/constants.ts +134 -0
- package/src/maintenance/continuation-archive-search-job.ts +27 -0
- package/src/maintenance/critical-job-watchdog.ts +252 -0
- package/src/maintenance/db-planner-stats-job.ts +19 -0
- package/src/maintenance/db-wal-reclaim-job.ts +82 -0
- package/src/maintenance/events.ts +28 -0
- package/src/maintenance/gate-capacity-sample-job.ts +16 -0
- package/src/maintenance/index.ts +10 -0
- package/src/maintenance/jobs.ts +857 -0
- package/src/maintenance/long-running-work.ts +41 -0
- package/src/maintenance/orphaned-sessions.ts +126 -0
- package/src/maintenance/pauses.ts +174 -0
- package/src/maintenance/provider-secret-scrub-job.ts +16 -0
- package/src/maintenance/queued-message-expiration.ts +23 -0
- package/src/maintenance/red-main-controller-job.ts +22 -0
- package/src/maintenance/reply-obligation-parity-job.ts +27 -0
- package/src/maintenance/restart-epoch-hold-health.ts +62 -0
- package/src/maintenance/run-registry.ts +194 -0
- package/src/maintenance/scheduler.ts +778 -0
- package/src/maintenance/service-access-job.ts +31 -0
- package/src/maintenance/shipping-stats-rollup-job.ts +23 -0
- package/src/maintenance/snapshot-ledger-prune-job.ts +17 -0
- package/src/maintenance/stalled-delivery-pager.ts +125 -0
- package/src/maintenance/steward-handback.ts +11 -0
- package/src/maintenance/task-state-reconcile-job.ts +22 -0
- package/src/maintenance/teams.ts +426 -0
- package/src/maintenance/types.ts +124 -0
- package/src/maintenance/vault-backup-job.ts +34 -0
- package/src/maintenance/vault-expiry-job.ts +29 -0
- package/src/maintenance/web-tool-call-prune-job.ts +13 -0
- package/src/maintenance/workflow-backstop-job.ts +12 -0
- package/src/maintenance/workflow-journal-prune-job.ts +29 -0
- package/src/maintenance/workspaces.ts +784 -0
- package/src/maintenance.ts +1 -0
- package/src/managed-policy-escalation.ts +123 -0
- package/src/managed-policy.ts +236 -0
- package/src/managed-provider-gate.ts +27 -0
- package/src/managed-spawn-reservation.ts +23 -0
- package/src/markdown-frontmatter.ts +14 -0
- package/src/mcp/activity-output.ts +57 -0
- package/src/mcp/artifact-upload.ts +53 -0
- package/src/mcp/context-output.ts +73 -0
- package/src/mcp/dispatch-shape-schema.ts +13 -0
- package/src/mcp/guides.ts +33 -0
- package/src/mcp/http.ts +27 -0
- package/src/mcp/identity-projection.ts +121 -0
- package/src/mcp/identity.ts +235 -0
- package/src/mcp/index.ts +355 -0
- package/src/mcp/issue-selector-schema.ts +12 -0
- package/src/mcp/message-read.ts +87 -0
- package/src/mcp/output-descriptions.ts +72 -0
- package/src/mcp/output-levels.ts +71 -0
- package/src/mcp/output-projection.ts +88 -0
- package/src/mcp/plan-presentation.ts +166 -0
- package/src/mcp/presentation-values.ts +11 -0
- package/src/mcp/presentation.ts +653 -0
- package/src/mcp/project-entry-search-schema.ts +7 -0
- package/src/mcp/prompts.ts +36 -0
- package/src/mcp/runtime-output.ts +84 -0
- package/src/mcp/schema-budget.ts +28 -0
- package/src/mcp/self-care-visibility.ts +23 -0
- package/src/mcp/service-access.ts +18 -0
- package/src/mcp/spawn-targets-matrix.ts +68 -0
- package/src/mcp/spawn-targets.test-fixture.ts +21 -0
- package/src/mcp/task-validation-presentation.ts +19 -0
- package/src/mcp/tool-generation.ts +8 -0
- package/src/mcp/tool-groups.ts +136 -0
- package/src/mcp/tools-artifacts.ts +82 -0
- package/src/mcp/tools-messaging.ts +541 -0
- package/src/mcp/tools-permission.ts +88 -0
- package/src/mcp/tools-run.ts +73 -0
- package/src/mcp/tools-scheduler.ts +156 -0
- package/src/mcp/tools-spawn.ts +418 -0
- package/src/mcp/tools-web-tool-calls.ts +28 -0
- package/src/mcp/tools-workspace.ts +260 -0
- package/src/mcp/types.ts +68 -0
- package/src/mcp/validation.ts +66 -0
- package/src/mcp-agent-action.ts +96 -0
- package/src/mcp-agent-keep.ts +37 -0
- package/src/mcp-backlog-tools.ts +137 -0
- package/src/mcp-blackboard-tools.ts +131 -0
- package/src/mcp-channel-binding-tools.ts +27 -0
- package/src/mcp-claude-api-budget.ts +35 -0
- package/src/mcp-codex-reset.ts +43 -0
- package/src/mcp-decision-tools.ts +96 -0
- package/src/mcp-dispatch-tools.ts +142 -0
- package/src/mcp-egress-tools.ts +168 -0
- package/src/mcp-errors.ts +7 -0
- package/src/mcp-host-tools.ts +61 -0
- package/src/mcp-interrupt-agent.ts +47 -0
- package/src/mcp-issue-activity-tools.ts +114 -0
- package/src/mcp-issue-association-tools.ts +103 -0
- package/src/mcp-issue-lifecycle-tools.ts +49 -0
- package/src/mcp-issue-ref-tools.ts +214 -0
- package/src/mcp-maintenance-tools.ts +113 -0
- package/src/mcp-merge-tools.ts +66 -0
- package/src/mcp-notification-subscription-tools.ts +297 -0
- package/src/mcp-output-levels.test-fixture.ts +95 -0
- package/src/mcp-plan-tools.ts +347 -0
- package/src/mcp-profile-trust-tools.ts +47 -0
- package/src/mcp-project-journal-tools.ts +160 -0
- package/src/mcp-project-tools.ts +420 -0
- package/src/mcp-provider-catalog.ts +9 -0
- package/src/mcp-release-tools.ts +33 -0
- package/src/mcp-routing-policy-tools.ts +35 -0
- package/src/mcp-secrets-tools.ts +87 -0
- package/src/mcp-task-deliver-tools.ts +166 -0
- package/src/mcp-task-land-withdraw-tools.ts +49 -0
- package/src/mcp-task-memory-tools.ts +119 -0
- package/src/mcp-task-review-hold-tools.ts +57 -0
- package/src/mcp-task-tools.ts +342 -0
- package/src/mcp-task-validation-tools.ts +30 -0
- package/src/mcp-task-weave-tools.ts +63 -0
- package/src/mcp-team-template-tools.ts +141 -0
- package/src/mcp-team-tools.ts +197 -0
- package/src/mcp-tool-allowlist.ts +88 -0
- package/src/mcp-workflow-tools.ts +158 -0
- package/src/mcp.ts +1 -0
- package/src/memory-admission-rank.ts +55 -0
- package/src/memory-area-injection.ts +216 -0
- package/src/memory-boundary-capture.ts +206 -0
- package/src/memory-entry-safety.ts +28 -0
- package/src/memory-inject-filter.ts +190 -0
- package/src/memory-injection.ts +954 -0
- package/src/memory-preamble-admission.ts +158 -0
- package/src/memory-preamble-async.ts +13 -0
- package/src/memory-preamble.ts +1142 -0
- package/src/memory-retirement.ts +11 -0
- package/src/memory-seam.ts +273 -0
- package/src/memory-tokens.ts +91 -0
- package/src/merge-drain.ts +101 -0
- package/src/merge-pause-maintenance.ts +19 -0
- package/src/message-visibility.ts +50 -0
- package/src/messaging-policy.ts +94 -0
- package/src/native-memory.ts +59 -0
- package/src/notification-prefs.ts +25 -0
- package/src/notification-role-policy.ts +14 -0
- package/src/notification-router.ts +329 -0
- package/src/notification-rules.ts +390 -0
- package/src/notification-settings-store.ts +47 -0
- package/src/notification-settings.ts +166 -0
- package/src/notification-subscription-rules.ts +11 -0
- package/src/notification-types.ts +312 -0
- package/src/notify.ts +55 -0
- package/src/observed-reset-boundary.ts +23 -0
- package/src/observed-reset-refresh.ts +21 -0
- package/src/operator-alarm.ts +41 -0
- package/src/operator-decisions-section.ts +29 -0
- package/src/orchestrator-lookup.ts +29 -0
- package/src/orchestrator-self-report-authz.ts +34 -0
- package/src/package-pack.ts +246 -0
- package/src/post-bind-startup.ts +58 -0
- package/src/process-guard.ts +31 -0
- package/src/profile-cells.ts +305 -0
- package/src/profile-effective-survey.ts +121 -0
- package/src/profile-host-sources.ts +73 -0
- package/src/profile-instruction-blocks.ts +11 -0
- package/src/profile-project-validation.ts +23 -0
- package/src/profile-provider-options.ts +59 -0
- package/src/profile-role-templates.ts +26 -0
- package/src/profile-workflow-policy.ts +14 -0
- package/src/project-claudemd-sweep.ts +176 -0
- package/src/project-file-source.ts +54 -0
- package/src/project-ingest.ts +195 -0
- package/src/project-instructions.ts +700 -0
- package/src/project-mcp.ts +18 -0
- package/src/project-role-assets.ts +109 -0
- package/src/project-roles-validate.ts +53 -0
- package/src/project-roles.ts +364 -0
- package/src/project-settings.ts +5 -0
- package/src/project-skills.ts +5 -0
- package/src/project-toolchain.ts +58 -0
- package/src/project-trust-fingerprint.ts +174 -0
- package/src/project-trust.ts +262 -0
- package/src/project-workflows.ts +185 -0
- package/src/prompt-resolver.ts +697 -0
- package/src/prompt-template-fallback.ts +15 -0
- package/src/prompt-version-errors.ts +13 -0
- package/src/provider-catalog-store.ts +393 -0
- package/src/provider-config-store.ts +308 -0
- package/src/provider-enablement.ts +36 -0
- package/src/provider-home-gc.ts +58 -0
- package/src/provider-model-seed.ts +18 -0
- package/src/provider-quota-async.ts +152 -0
- package/src/provider-quota-config-store.ts +60 -0
- package/src/provider-secrets.test-fixture.ts +34 -0
- package/src/provider-state.ts +93 -0
- package/src/provider-timeline-event.ts +76 -0
- package/src/quota-advisory.ts +359 -0
- package/src/quota-band-delivery.ts +13 -0
- package/src/quota-band-projection.ts +149 -0
- package/src/quota-band-transition.ts +316 -0
- package/src/quota-pacing.ts +46 -0
- package/src/quota-threshold-config.ts +46 -0
- package/src/quota.ts +61 -0
- package/src/ratchet-files.ts +202 -0
- package/src/recipe-async.ts +50 -0
- package/src/recipe-db.ts +260 -0
- package/src/recipe-loader.ts +132 -0
- package/src/recipe-runner.ts +259 -0
- package/src/recipe-validator.ts +107 -0
- package/src/relay-event-drain.ts +39 -0
- package/src/relay-host-locality.ts +20 -0
- package/src/relay-run-lease.ts +17 -0
- package/src/repo-config-source.ts +209 -0
- package/src/report-verbosity.ts +5 -0
- package/src/restart-epoch-deploy-hold.ts +221 -0
- package/src/retention-config-store.ts +32 -0
- package/src/retention-config.ts +70 -0
- package/src/reviewer-pipeline.ts +238 -0
- package/src/routes/_route.ts +70 -0
- package/src/routes/_shared.ts +513 -0
- package/src/routes/activity.ts +70 -0
- package/src/routes/agent-effort.ts +69 -0
- package/src/routes/agent-keep.ts +27 -0
- package/src/routes/agent-profiles.ts +169 -0
- package/src/routes/agent-reporting.ts +19 -0
- package/src/routes/agent-self-effort.ts +51 -0
- package/src/routes/agent-sessions.ts +650 -0
- package/src/routes/agent-sharing.ts +23 -0
- package/src/routes/agents-spawn.ts +258 -0
- package/src/routes/agents.ts +452 -0
- package/src/routes/artifacts.ts +340 -0
- package/src/routes/auth.ts +123 -0
- package/src/routes/authority-audit.ts +14 -0
- package/src/routes/automations.ts +83 -0
- package/src/routes/backlog.ts +112 -0
- package/src/routes/blackboard.ts +54 -0
- package/src/routes/browser.ts +73 -0
- package/src/routes/channel-binding-delete.ts +21 -0
- package/src/routes/channel-output.ts +17 -0
- package/src/routes/claude-api-budget.ts +65 -0
- package/src/routes/commands-listing.ts +50 -0
- package/src/routes/commands.ts +586 -0
- package/src/routes/config.ts +75 -0
- package/src/routes/connectors.ts +108 -0
- package/src/routes/context-resets.ts +35 -0
- package/src/routes/continuation-archives.ts +37 -0
- package/src/routes/coordinator-teams.ts +14 -0
- package/src/routes/decisions.ts +82 -0
- package/src/routes/deploys.ts +15 -0
- package/src/routes/fleet-convergence.ts +5 -0
- package/src/routes/guides.ts +13 -0
- package/src/routes/host-providers.ts +73 -0
- package/src/routes/host-resource-control.ts +45 -0
- package/src/routes/host-secret-files.ts +38 -0
- package/src/routes/hosts.ts +240 -0
- package/src/routes/inbox.ts +151 -0
- package/src/routes/index.ts +614 -0
- package/src/routes/insights.ts +86 -0
- package/src/routes/integrations.ts +636 -0
- package/src/routes/issue-activity.ts +78 -0
- package/src/routes/issue-associations.ts +76 -0
- package/src/routes/issue-lifecycle.ts +34 -0
- package/src/routes/issue-refs.ts +163 -0
- package/src/routes/kernel-timers-operator.ts +57 -0
- package/src/routes/memory.ts +25 -0
- package/src/routes/merges.ts +109 -0
- package/src/routes/message-viewer.ts +4 -0
- package/src/routes/messages.ts +621 -0
- package/src/routes/notifications.ts +36 -0
- package/src/routes/orchestrator-bootstrap.ts +101 -0
- package/src/routes/orchestrator-host-registration.ts +125 -0
- package/src/routes/orchestrator-host-utilization.ts +255 -0
- package/src/routes/orchestrator-proxy.ts +174 -0
- package/src/routes/orchestrator.ts +699 -0
- package/src/routes/pairs.ts +214 -0
- package/src/routes/plans.ts +98 -0
- package/src/routes/project-onboarding.ts +56 -0
- package/src/routes/project-trust.ts +73 -0
- package/src/routes/projects.ts +296 -0
- package/src/routes/prompt-templates.ts +106 -0
- package/src/routes/provider-config.ts +232 -0
- package/src/routes/provider-quota-config.ts +48 -0
- package/src/routes/provider-quotas.ts +312 -0
- package/src/routes/provisioning-registry.ts +192 -0
- package/src/routes/recipes.ts +129 -0
- package/src/routes/restart-epochs.ts +98 -0
- package/src/routes/routing-policy.ts +30 -0
- package/src/routes/run-command.ts +25 -0
- package/src/routes/secrets-backup.ts +53 -0
- package/src/routes/secrets-import.ts +32 -0
- package/src/routes/secrets-page.ts +98 -0
- package/src/routes/secrets-vault.ts +121 -0
- package/src/routes/secrets.ts +165 -0
- package/src/routes/service-access.ts +57 -0
- package/src/routes/settings.ts +191 -0
- package/src/routes/shipping.ts +56 -0
- package/src/routes/spawn-policy.ts +299 -0
- package/src/routes/spec.ts +58 -0
- package/src/routes/sse.ts +18 -0
- package/src/routes/stats.ts +159 -0
- package/src/routes/steward.ts +49 -0
- package/src/routes/task-graph.ts +30 -0
- package/src/routes/task-http.ts +27 -0
- package/src/routes/task-issues.ts +81 -0
- package/src/routes/task-reads.ts +139 -0
- package/src/routes/task-validation.ts +22 -0
- package/src/routes/tasks.ts +553 -0
- package/src/routes/team-templates.ts +65 -0
- package/src/routes/teams-config.ts +15 -0
- package/src/routes/teams.ts +141 -0
- package/src/routes/token-usage.ts +167 -0
- package/src/routes/tokens.ts +393 -0
- package/src/routes/users.ts +248 -0
- package/src/routes/viewer-read.ts +27 -0
- package/src/routes/web-tool-calls.ts +38 -0
- package/src/routes/workflows.ts +142 -0
- package/src/routes/workspaces.ts +642 -0
- package/src/routes.ts +3 -0
- package/src/routing-eligibility.ts +42 -0
- package/src/routing-model-aliases.ts +21 -0
- package/src/routing-policy-normalize.ts +412 -0
- package/src/routing-policy-push.ts +154 -0
- package/src/routing-policy-service.ts +19 -0
- package/src/routing-policy-store.ts +16 -0
- package/src/routing-preferences.ts +82 -0
- package/src/routing-step-defaults.ts +31 -0
- package/src/runtime-grant.ts +164 -0
- package/src/runtime-prefix.ts +8 -0
- package/src/runtime-tokens.ts +395 -0
- package/src/search-query.ts +10 -0
- package/src/secret-keys.ts +24 -0
- package/src/secrets-broker/config.ts +53 -0
- package/src/secrets-broker/error.ts +8 -0
- package/src/secrets-broker/infisical.ts +259 -0
- package/src/secrets-broker/reader-infisical.ts +41 -0
- package/src/secrets-broker/reader.ts +101 -0
- package/src/secrets-broker/service.ts +242 -0
- package/src/secrets-broker/tool-credentials.ts +9 -0
- package/src/secrets-vault/backend-conformance.ts +26 -0
- package/src/secrets-vault/backend.ts +102 -0
- package/src/secrets-vault/backup.ts +103 -0
- package/src/secrets-vault/config.ts +7 -0
- package/src/secrets-vault/expiry.ts +10 -0
- package/src/secrets-vault/identity.ts +27 -0
- package/src/secrets-vault/import.ts +90 -0
- package/src/secrets-vault/key-files.ts +91 -0
- package/src/secrets-vault/keys.ts +79 -0
- package/src/secrets-vault/metadata.ts +51 -0
- package/src/secrets-vault/provider-env.ts +25 -0
- package/src/secrets-vault/resolve.ts +101 -0
- package/src/secrets-vault/restore.ts +57 -0
- package/src/secrets-vault/scope.ts +25 -0
- package/src/secrets-vault/service.ts +192 -0
- package/src/secrets-vault/shared.ts +10 -0
- package/src/security.ts +772 -0
- package/src/self-effort-rule.ts +36 -0
- package/src/self-resume-carry.ts +131 -0
- package/src/self-resume-command.ts +24 -0
- package/src/self-resume-config.ts +54 -0
- package/src/self-resume-identity.ts +40 -0
- package/src/self-resume-supersede.ts +19 -0
- package/src/self-resume.ts +884 -0
- package/src/server-background.ts +24 -0
- package/src/server.ts +726 -0
- package/src/service-access/config.ts +3 -0
- package/src/service-access/health.ts +151 -0
- package/src/service-access/host-health.ts +62 -0
- package/src/service-access/host.ts +63 -0
- package/src/service-access/operations.ts +21 -0
- package/src/service-access/policy.ts +30 -0
- package/src/service-access/probe.ts +62 -0
- package/src/service-access/request-logs.ts +93 -0
- package/src/service-access/scope.ts +7 -0
- package/src/service-access/service.ts +185 -0
- package/src/service-access/tokens.ts +174 -0
- package/src/service-access/validation.ts +75 -0
- package/src/service-access/vault.ts +59 -0
- package/src/services/agent-action.ts +238 -0
- package/src/services/agent-control-host.ts +74 -0
- package/src/services/agent-effort.ts +60 -0
- package/src/services/agent-hang-watchdog-job.ts +513 -0
- package/src/services/agent-hang-watchdog-wiring.ts +487 -0
- package/src/services/agent-hang-watchdog.ts +395 -0
- package/src/services/agent-keep.ts +72 -0
- package/src/services/agent-message-fanout.ts +91 -0
- package/src/services/agent-outstanding-work.ts +66 -0
- package/src/services/agent-reporting.ts +27 -0
- package/src/services/artifact-access.ts +39 -0
- package/src/services/artifact-multipart.ts +70 -0
- package/src/services/artifact-path-host.ts +55 -0
- package/src/services/artifact-read.ts +88 -0
- package/src/services/artifact-write.ts +25 -0
- package/src/services/auth-context.ts +117 -0
- package/src/services/automatic-disposal.ts +33 -0
- package/src/services/backlog.ts +149 -0
- package/src/services/browser-inventory.ts +52 -0
- package/src/services/browser-session-state.ts +41 -0
- package/src/services/browser-session.ts +167 -0
- package/src/services/bus-command-update.ts +84 -0
- package/src/services/bus-expiration-death.ts +57 -0
- package/src/services/canonical-root.ts +284 -0
- package/src/services/captured-delivery-gate.ts +12 -0
- package/src/services/carry-pending.ts +5 -0
- package/src/services/channel-binding-delete.ts +20 -0
- package/src/services/channel-suppression-receipt.ts +28 -0
- package/src/services/checkout-refresh-state.ts +18 -0
- package/src/services/checkout-refresh.test-fixture.ts +12 -0
- package/src/services/child-work-evidence.ts +77 -0
- package/src/services/claude-app.ts +91 -0
- package/src/services/command-claim-rejection.ts +23 -0
- package/src/services/command-host.ts +42 -0
- package/src/services/coordinator-digest.ts +30 -0
- package/src/services/decision-audience.ts +26 -0
- package/src/services/delivery-gate-policy.ts +98 -0
- package/src/services/delivery-tip.test-fixture.ts +25 -0
- package/src/services/diff-gate.ts +110 -0
- package/src/services/dispatch-command.ts +388 -0
- package/src/services/effective-launch-driver.ts +240 -0
- package/src/services/effective-launch-harness.ts +257 -0
- package/src/services/errors.ts +31 -0
- package/src/services/git-process.ts +176 -0
- package/src/services/git-remote.ts +100 -0
- package/src/services/harness-subagents.ts +12 -0
- package/src/services/host-changed-paths.test-fixture.ts +134 -0
- package/src/services/host-landing-placement.ts +65 -0
- package/src/services/host-project-readiness.ts +49 -0
- package/src/services/host-providers.ts +114 -0
- package/src/services/host-utilization.ts +70 -0
- package/src/services/idle-agent-digest.ts +318 -0
- package/src/services/idle-epics.ts +105 -0
- package/src/services/idle-self-care.ts +47 -0
- package/src/services/interrupt-agent.ts +146 -0
- package/src/services/isolated-workspace-placement.ts +258 -0
- package/src/services/issue-activity.ts +23 -0
- package/src/services/issue-associations.ts +72 -0
- package/src/services/issue-completion-drain.ts +24 -0
- package/src/services/issue-completion.ts +24 -0
- package/src/services/issue-lifecycle-comments.ts +12 -0
- package/src/services/issue-lifecycle.ts +620 -0
- package/src/services/issue-refs.ts +65 -0
- package/src/services/kernel-command-bridge.ts +219 -0
- package/src/services/kernel-control-host.ts +78 -0
- package/src/services/kernel-control-http.ts +119 -0
- package/src/services/kernel-control-mcp.ts +193 -0
- package/src/services/kernel-landing-command.ts +28 -0
- package/src/services/kernel-landing-ingress.ts +65 -0
- package/src/services/kernel-timers-authoritative-ingress.ts +48 -0
- package/src/services/kernel-timers-authz.ts +229 -0
- package/src/services/kernel-timers-command.ts +182 -0
- package/src/services/kernel-timers-cutover-chaos-worker.ts +209 -0
- package/src/services/kernel-timers-cutover.ts +39 -0
- package/src/services/kernel-timers-ingress-apply.ts +39 -0
- package/src/services/kernel-timers-ingress-chaos-worker.ts +312 -0
- package/src/services/kernel-timers-ingress.ts +702 -0
- package/src/services/kernel-timers-message-authority-chaos-worker.ts +97 -0
- package/src/services/kernel-timers-migrate.ts +158 -0
- package/src/services/kernel-timers-operator-chaos-worker.ts +259 -0
- package/src/services/kernel-timers-operator-preflight.ts +18 -0
- package/src/services/kernel-timers-operator.ts +424 -0
- package/src/services/kernel-timers-outbox.ts +138 -0
- package/src/services/kernel-timers-request-key-migration-chaos-worker.ts +77 -0
- package/src/services/kernel-timers-stage10-operator.ts +210 -0
- package/src/services/kernel-timers-stage10.ts +85 -0
- package/src/services/kernel-timers-stage9.ts +57 -0
- package/src/services/kernel-timers-transfer-chaos-worker.ts +118 -0
- package/src/services/kernel-timers-transfer.ts +525 -0
- package/src/services/kernel-timers-verifier.ts +39 -0
- package/src/services/kernel-timers.ts +247 -0
- package/src/services/land-boundary-settle.ts +32 -0
- package/src/services/land-gate-placement.ts +60 -0
- package/src/services/land-issue-relations.ts +46 -0
- package/src/services/land-restart-retry.ts +77 -0
- package/src/services/landed-ancestry.ts +417 -0
- package/src/services/landed-task-attribution.ts +14 -0
- package/src/services/landing-terminal-report.ts +119 -0
- package/src/services/legacy-landing-backfill.ts +159 -0
- package/src/services/legacy-landing-host.ts +291 -0
- package/src/services/legacy-landing-publication.ts +35 -0
- package/src/services/legacy-landing-recovery.ts +111 -0
- package/src/services/macos-privacy.ts +34 -0
- package/src/services/managed-running.ts +189 -0
- package/src/services/memory-areas.ts +172 -0
- package/src/services/memory-identity.ts +162 -0
- package/src/services/merge-pause.ts +37 -0
- package/src/services/message-delivery-actions.ts +11 -0
- package/src/services/operator-decisions.ts +260 -0
- package/src/services/orchestrator-landing-recovery.ts +55 -0
- package/src/services/orchestrator-registration-recovery.ts +12 -0
- package/src/services/orchestrator-upgrade.ts +83 -0
- package/src/services/parity-harness.ts +141 -0
- package/src/services/permission-decision.ts +129 -0
- package/src/services/plan-ci-recovery.ts +76 -0
- package/src/services/plan-conformance.ts +105 -0
- package/src/services/plan-dispatch-policy.ts +79 -0
- package/src/services/plan-dispatch.ts +372 -0
- package/src/services/plan-external-view.ts +7 -0
- package/src/services/plan-frontier.ts +34 -0
- package/src/services/plan-graph.ts +703 -0
- package/src/services/plan-import.ts +66 -0
- package/src/services/plan-live-bindings.ts +139 -0
- package/src/services/plan-task-create.ts +80 -0
- package/src/services/plan-terminal-refs.ts +83 -0
- package/src/services/plan-wake-digest.ts +88 -0
- package/src/services/plan-wake-policy.ts +12 -0
- package/src/services/profile-trust.ts +54 -0
- package/src/services/project-checkout-binding.ts +65 -0
- package/src/services/project-checkout-enrollment.ts +27 -0
- package/src/services/project-cwd.ts +41 -0
- package/src/services/project-onboarding.ts +165 -0
- package/src/services/project-repo-create.ts +27 -0
- package/src/services/project-role.test-fixture.ts +74 -0
- package/src/services/project.ts +191 -0
- package/src/services/prompt-templates.ts +46 -0
- package/src/services/prompt-version-writer.ts +42 -0
- package/src/services/provider-catalog.ts +7 -0
- package/src/services/provider-hold-flap.ts +130 -0
- package/src/services/provider-hold-nudge.ts +191 -0
- package/src/services/provider-hold-record.ts +137 -0
- package/src/services/provider-state-audit.ts +214 -0
- package/src/services/provisioning-harness/analyze.ts +285 -0
- package/src/services/provisioning-harness/budget-baseline.json +391 -0
- package/src/services/provisioning-harness/capture.ts +197 -0
- package/src/services/provisioning-harness/config.ts +55 -0
- package/src/services/provisioning-harness/context-sources.ts +85 -0
- package/src/services/provisioning-harness/driver.ts +156 -0
- package/src/services/provisioning-harness/expect.ts +81 -0
- package/src/services/provisioning-harness/fixture-matrix.ts +38 -0
- package/src/services/provisioning-harness/fixtures/project/.agent-relay/land-gates.json +1 -0
- package/src/services/provisioning-harness/fixtures/project/.claude/skills/harness-skill/SKILL.md +6 -0
- package/src/services/provisioning-harness/fixtures/project/.mcp.json +1 -0
- package/src/services/provisioning-harness/fixtures/project/AGENTS.md +1 -0
- package/src/services/provisioning-harness/fixtures/project/CLAUDE.md +1 -0
- package/src/services/provisioning-harness/fixtures/project/mcp-server.ts +33 -0
- package/src/services/provisioning-harness/fixtures/provider-home/AGENTS.md +1 -0
- package/src/services/provisioning-harness/fixtures/provider-home/CLAUDE.md +1 -0
- package/src/services/provisioning-harness/host-fixtures.ts +25 -0
- package/src/services/provisioning-harness/index.ts +4 -0
- package/src/services/provisioning-harness/inventory-types.ts +8 -0
- package/src/services/provisioning-harness/inventory.ts +33 -0
- package/src/services/provisioning-harness/lifecycle.ts +193 -0
- package/src/services/provisioning-harness/live.ts +61 -0
- package/src/services/provisioning-harness/manifests.ts +118 -0
- package/src/services/provisioning-harness/prepare.ts +113 -0
- package/src/services/provisioning-harness/redundancy-report.ts +32 -0
- package/src/services/provisioning-harness/redundancy.ts +137 -0
- package/src/services/provisioning-harness/report.ts +129 -0
- package/src/services/provisioning-harness/types.ts +174 -0
- package/src/services/provisioning-registry.ts +15 -0
- package/src/services/rate-limit-resume.ts +220 -0
- package/src/services/reap-verdict.ts +52 -0
- package/src/services/red-main-auto-revert.ts +103 -0
- package/src/services/red-main-controller-deps.ts +80 -0
- package/src/services/red-main-controller.ts +262 -0
- package/src/services/red-main-incident.ts +44 -0
- package/src/services/red-main-quarantine.ts +92 -0
- package/src/services/register-agent.ts +447 -0
- package/src/services/release-readiness.ts +219 -0
- package/src/services/reported-exit-death.ts +29 -0
- package/src/services/response-report-admission.ts +17 -0
- package/src/services/restart-epoch-driver.ts +290 -0
- package/src/services/restart-epoch-reconciler.ts +326 -0
- package/src/services/restart-epoch-stale-command-recovery.ts +133 -0
- package/src/services/restart-instructions.ts +86 -0
- package/src/services/restart-project-role.ts +74 -0
- package/src/services/restart-secret-refs.ts +14 -0
- package/src/services/restart-spawn.ts +510 -0
- package/src/services/review-publish.ts +76 -0
- package/src/services/review-ref-reconcile.ts +337 -0
- package/src/services/run-command-input.ts +22 -0
- package/src/services/run-command.ts +510 -0
- package/src/services/run-completion-message.ts +70 -0
- package/src/services/run-log.ts +212 -0
- package/src/services/run-queue.ts +63 -0
- package/src/services/scheduler-command-cancel.ts +49 -0
- package/src/services/scheduler-command.ts +590 -0
- package/src/services/scheduler-create.ts +25 -0
- package/src/services/scheduler-plan.ts +202 -0
- package/src/services/scheduler-recovery.ts +31 -0
- package/src/services/scheduler.ts +406 -0
- package/src/services/self-care-state.ts +10 -0
- package/src/services/self-effort-grant.ts +93 -0
- package/src/services/self-effort.ts +152 -0
- package/src/services/send-message.ts +548 -0
- package/src/services/server-credentials.ts +53 -0
- package/src/services/shipping-board.ts +111 -0
- package/src/services/shipping-project-config.ts +86 -0
- package/src/services/shipping-stats.ts +86 -0
- package/src/services/shutdown-agent.ts +463 -0
- package/src/services/shutdown-watchdog.ts +119 -0
- package/src/services/spawn-agent.ts +967 -0
- package/src/services/spawn-approval.ts +26 -0
- package/src/services/spawn-brief.ts +39 -0
- package/src/services/spawn-chain-inspector.ts +286 -0
- package/src/services/spawn-cwd-placement.ts +250 -0
- package/src/services/spawn-identity.ts +127 -0
- package/src/services/spawn-instruction-inputs.ts +114 -0
- package/src/services/spawn-issue-activity.ts +102 -0
- package/src/services/spawn-launch-decision.ts +32 -0
- package/src/services/spawn-launch.ts +116 -0
- package/src/services/spawn-loss-escalation.ts +253 -0
- package/src/services/spawn-placement.test-fixture.ts +30 -0
- package/src/services/spawn-project-role.ts +133 -0
- package/src/services/spawn-registration-watchdog.ts +352 -0
- package/src/services/spawn-replay.ts +61 -0
- package/src/services/spawn-repo-probe.ts +118 -0
- package/src/services/spawn-tree-cleanup.ts +37 -0
- package/src/services/spawn-warnings.ts +13 -0
- package/src/services/steward-reaper.ts +244 -0
- package/src/services/task-context-hydration.ts +413 -0
- package/src/services/task-delivery-close.ts +26 -0
- package/src/services/task-delivery-event.ts +11 -0
- package/src/services/task-delivery-land-policy.ts +35 -0
- package/src/services/task-delivery-summary.ts +38 -0
- package/src/services/task-delivery.ts +762 -0
- package/src/services/task-dependency-graph.ts +116 -0
- package/src/services/task-dispatch.ts +178 -0
- package/src/services/task-done-when.ts +45 -0
- package/src/services/task-entity.ts +758 -0
- package/src/services/task-from-issue.ts +80 -0
- package/src/services/task-issue-digest.ts +45 -0
- package/src/services/task-issue-link.ts +158 -0
- package/src/services/task-issue-weave.ts +570 -0
- package/src/services/task-land-withdraw.ts +462 -0
- package/src/services/task-lifecycle.ts +668 -0
- package/src/services/task-nothing-to-land.ts +37 -0
- package/src/services/task-plan-view.ts +172 -0
- package/src/services/task-review-hold.ts +244 -0
- package/src/services/task-semantic-events.ts +396 -0
- package/src/services/task-stage-wake.ts +15 -0
- package/src/services/task-state-reconcile.ts +169 -0
- package/src/services/task-validation.ts +42 -0
- package/src/services/team-claim-race.worker.ts +72 -0
- package/src/services/team-spawn-delegation.ts +30 -0
- package/src/services/team-templates.ts +172 -0
- package/src/services/team.ts +320 -0
- package/src/services/terminal-provider-exit.ts +57 -0
- package/src/services/timer-message-fire-chaos-worker.ts +29 -0
- package/src/services/timer-message-fire-outbox.ts +184 -0
- package/src/services/transient-agent-reaper.ts +412 -0
- package/src/services/turn-reconcile-audit.ts +236 -0
- package/src/services/user-onboarding.ts +98 -0
- package/src/services/user-profile.ts +57 -0
- package/src/services/web-search.ts +83 -0
- package/src/services/web-tool-calls.ts +65 -0
- package/src/services/withdraw-steward.ts +57 -0
- package/src/services/work-finality.ts +34 -0
- package/src/services/workflow-agent-obligation.ts +35 -0
- package/src/services/workflow-auto-start.ts +126 -0
- package/src/services/workflow-backstop.ts +38 -0
- package/src/services/workflow-budget.test-fixture.ts +10 -0
- package/src/services/workflow-caller.ts +32 -0
- package/src/services/workflow-catalog.ts +43 -0
- package/src/services/workflow-child-proof-worker.ts +76 -0
- package/src/services/workflow-child.test-fixture.ts +51 -0
- package/src/services/workflow-ci-main.ts +93 -0
- package/src/services/workflow-control-proof-worker.ts +149 -0
- package/src/services/workflow-coordinator-decision-proof-worker.ts +123 -0
- package/src/services/workflow-coordinator.ts +8 -0
- package/src/services/workflow-decision-answer.ts +18 -0
- package/src/services/workflow-decision-proof-worker.ts +92 -0
- package/src/services/workflow-decision.test-fixture.ts +58 -0
- package/src/services/workflow-decisions.ts +107 -0
- package/src/services/workflow-deferred-cleanup.ts +40 -0
- package/src/services/workflow-dispatch-result.ts +20 -0
- package/src/services/workflow-effect-driver.ts +165 -0
- package/src/services/workflow-effects.ts +544 -0
- package/src/services/workflow-foreach-proof-worker.ts +209 -0
- package/src/services/workflow-land-notice.ts +18 -0
- package/src/services/workflow-land.ts +105 -0
- package/src/services/workflow-notice.ts +32 -0
- package/src/services/workflow-overdue-notice.ts +19 -0
- package/src/services/workflow-pins.ts +162 -0
- package/src/services/workflow-reconcile.ts +210 -0
- package/src/services/workflow-resume-pins.ts +30 -0
- package/src/services/workflow-run-chaos-worker.ts +67 -0
- package/src/services/workflow-run-view.ts +71 -0
- package/src/services/workflow-run.test-fixture.ts +165 -0
- package/src/services/workflow-runs.ts +370 -0
- package/src/services/workflow-scripts.ts +100 -0
- package/src/services/workflow-slice-proof.ts +14 -0
- package/src/services/workflow-stats.ts +208 -0
- package/src/services/workflow-supervisor-state.ts +117 -0
- package/src/services/workflow-supervisor.ts +122 -0
- package/src/services/workflow-verification.ts +68 -0
- package/src/services/workspace-recovery.ts +168 -0
- package/src/services/workspace-task-binding.ts +22 -0
- package/src/settings/modules.ts +149 -0
- package/src/settings/registry.ts +629 -0
- package/src/settings/user-settings.ts +81 -0
- package/src/setup.ts +199 -0
- package/src/shared-mcp.ts +87 -0
- package/src/shutdown.ts +33 -0
- package/src/spawn-admission.ts +48 -0
- package/src/spawn-budget.ts +18 -0
- package/src/spawn-command.ts +373 -0
- package/src/spawn-env.ts +27 -0
- package/src/spawn-intent.ts +17 -0
- package/src/spawn-lease.ts +41 -0
- package/src/spawn-models.ts +22 -0
- package/src/spawn-placement.ts +348 -0
- package/src/spawn-profile-errors.ts +9 -0
- package/src/spawn-quota.ts +15 -0
- package/src/spawn-targets.ts +679 -0
- package/src/sse-agent-status.ts +35 -0
- package/src/sse-outbox-cursor.ts +28 -0
- package/src/sse-visibility.ts +36 -0
- package/src/sse.ts +684 -0
- package/src/startup-context-injection.ts +518 -0
- package/src/startup-timing.ts +30 -0
- package/src/state-adoption/artifacts.ts +27 -0
- package/src/state-adoption/cd-cutover.ts +125 -0
- package/src/state-adoption/files.ts +31 -0
- package/src/state-adoption/index.ts +166 -0
- package/src/state-adoption/linux-plan.ts +67 -0
- package/src/state-adoption/linux.ts +104 -0
- package/src/state-adoption/macos-plan.ts +58 -0
- package/src/state-adoption/macos.ts +112 -0
- package/src/steward-claim-release.ts +38 -0
- package/src/steward-handoff.ts +28 -0
- package/src/steward-identity.ts +54 -0
- package/src/steward-policy-cleanup.ts +222 -0
- package/src/steward-policy-model-reconcile.ts +33 -0
- package/src/steward-policy-name.ts +13 -0
- package/src/steward-provenance.ts +59 -0
- package/src/steward-queue.ts +85 -0
- package/src/steward-slot-recovery.ts +34 -0
- package/src/steward-spawn-guard.ts +344 -0
- package/src/steward.test-fixture.ts +11 -0
- package/src/steward.ts +199 -0
- package/src/stream-proxy.ts +84 -0
- package/src/task-authz.ts +40 -0
- package/src/task-completion.ts +39 -0
- package/src/task-dispatch-live.ts +70 -0
- package/src/task-dispatcher-ranking.ts +136 -0
- package/src/task-dispatcher.ts +841 -0
- package/src/task-owner-notices.ts +35 -0
- package/src/task-owner.ts +63 -0
- package/src/task-plan-status.ts +21 -0
- package/src/task-verification.ts +35 -0
- package/src/team-idle-tracker.ts +39 -0
- package/src/team-template-config.ts +100 -0
- package/src/teams-config-store.ts +22 -0
- package/src/terminal-authz.ts +49 -0
- package/src/token-db-write.ts +44 -0
- package/src/token-db.ts +487 -0
- package/src/token-usage-async.ts +40 -0
- package/src/transport-subscriptions.ts +57 -0
- package/src/types.ts +1 -0
- package/src/upgrade-install-verify.ts +179 -0
- package/src/upgrade-local-id.ts +3 -0
- package/src/upgrade-services.ts +125 -0
- package/src/upgrade.ts +1006 -0
- package/src/user-awaiting-reply.ts +42 -0
- package/src/user-path.ts +246 -0
- package/src/user-settings-async.ts +33 -0
- package/src/user-settings-store.ts +106 -0
- package/src/user-style.ts +83 -0
- package/src/utils.ts +42 -0
- package/src/validation.ts +324 -0
- package/src/vault-backup-config.ts +28 -0
- package/src/vault-expiry-config.ts +12 -0
- package/src/versioned-prompts.ts +57 -0
- package/src/workflow-capabilities.ts +10 -0
- package/src/workflow-prompt-templates.ts +20 -0
- package/src/workspace-action-audit.ts +42 -0
- package/src/workspace-actions.ts +689 -0
- package/src/workspace-auto-merge.ts +1055 -0
- package/src/workspace-changed-paths-client.ts +97 -0
- package/src/workspace-claim.ts +45 -0
- package/src/workspace-cleanup-settle.ts +51 -0
- package/src/workspace-cleanup-stale.ts +231 -0
- package/src/workspace-command-settle.ts +589 -0
- package/src/workspace-config.ts +7 -0
- package/src/workspace-conflict-resolver.ts +182 -0
- package/src/workspace-dead-owner-recovery.ts +19 -0
- package/src/workspace-delivery-tip.ts +51 -0
- package/src/workspace-escalation.ts +107 -0
- package/src/workspace-git-state-client.ts +42 -0
- package/src/workspace-host-client.ts +86 -0
- package/src/workspace-host-target.ts +5 -0
- package/src/workspace-host.ts +61 -0
- package/src/workspace-human-escalation.ts +70 -0
- package/src/workspace-land-gate-watchdog.ts +76 -0
- package/src/workspace-land-gate.ts +99 -0
- package/src/workspace-land-result.ts +12 -0
- package/src/workspace-land-retry.ts +82 -0
- package/src/workspace-land-stopped.ts +57 -0
- package/src/workspace-merge-dispatch.ts +27 -0
- package/src/workspace-merge-progress.ts +369 -0
- package/src/workspace-merge-retry-policy.ts +59 -0
- package/src/workspace-merge.ts +614 -0
- package/src/workspace-nothing-to-land-notice.ts +27 -0
- package/src/workspace-orphans.ts +927 -0
- package/src/workspace-phase.ts +507 -0
- package/src/workspace-pr-completion.ts +285 -0
- package/src/workspace-probe.ts +212 -0
- package/src/workspace-recorded-land.ts +47 -0
- package/src/workspace-recovery-authz.ts +88 -0
- package/src/workspace-rekey.ts +106 -0
- package/src/workspace-steward-authority.ts +16 -0
- package/src/workspace-steward-failure.ts +42 -0
- package/src/workspace-steward-wake.ts +150 -0
- package/src/workspace-steward-watchdog.ts +240 -0
|
@@ -0,0 +1,1061 @@
|
|
|
1
|
+
import type { ServiceAccessHandoff } from "@humwick/sdk";
|
|
2
|
+
import type { AgentProfile, InteractivePrompt, LivenessSignal, Message, MessageFinalityConfidence, MessageTurnEndReason, OperatorDecisionFileInput, ProviderState, ToolCallCategory } from "@humwick/sdk";
|
|
3
|
+
// Leaf subpaths, not the barrel: the Claude monitor bundle imports this module and must stay small.
|
|
4
|
+
import { receivesTurnResponseAutomatically } from "./response-routing";
|
|
5
|
+
import { heldForSender } from "@humwick/sdk/held-for";
|
|
6
|
+
import { isHumanAgentId } from "@humwick/sdk/types/users";
|
|
7
|
+
import type { ResolvedModelRecord } from "@humwick/sdk/provider-catalog";
|
|
8
|
+
import { isRecord } from "@humwick/sdk/types/guards";
|
|
9
|
+
import type { LivenessInputs } from "./liveness";
|
|
10
|
+
import type { SessionEvent } from "./session-insights";
|
|
11
|
+
import { messageBodyMaxCharsFromEnv, monitorDeliveryLineMaxCharsFromEnv, monitorDeliveryMaxCharsFromEnv } from "./message-body-config";
|
|
12
|
+
import { resolveRelayContext } from "./relay-instructions";
|
|
13
|
+
export { profileAllowsRelayFeature } from "./relay-instructions";
|
|
14
|
+
export { resolveRelayContext } from "./relay-instructions";
|
|
15
|
+
|
|
16
|
+
export type SemanticStatus = "idle" | "busy" | "offline" | "error";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* #1656 — the independent pane read is THREE-VALUED on its non-busy side, and collapsing it to a
|
|
20
|
+
* boolean was the defect. `false` used to mean both "captured the pane, no spinner" (evidence the
|
|
21
|
+
* turn is over) and "could not read the pane at all" (no evidence of anything), and the busy
|
|
22
|
+
* backstop's force-clear consumed the second as if it were the first: absence of evidence taken
|
|
23
|
+
* as consent, on a turn that was still running.
|
|
24
|
+
*
|
|
25
|
+
* - `busy` — captured, the pane visibly reads busy. Vetoes a clear.
|
|
26
|
+
* - `not-busy` — captured, no busy chrome. The ONLY positive evidence the turn is over.
|
|
27
|
+
* - `no-session` — the pane doesn't exist to be read (no tmux session).
|
|
28
|
+
* - `unreadable` — the capture failed. Says nothing about the provider, only about the read.
|
|
29
|
+
*
|
|
30
|
+
* The last two are both `unknown` to the reconciler and behave identically there; they are kept
|
|
31
|
+
* distinct so the session log names which failure happened. Neither may ever authorize a mutation.
|
|
32
|
+
*/
|
|
33
|
+
export type PaneBusyReading = "busy" | "not-busy" | "no-session" | "unreadable";
|
|
34
|
+
type ProviderWorkKind = "provider-turn" | "subagent" | "background-script";
|
|
35
|
+
|
|
36
|
+
export interface ProviderStatusEvent {
|
|
37
|
+
status: SemanticStatus;
|
|
38
|
+
providerSessionId?: string;
|
|
39
|
+
reason?: ProviderWorkKind;
|
|
40
|
+
clear?: ProviderWorkKind[];
|
|
41
|
+
timeline?: {
|
|
42
|
+
status: string;
|
|
43
|
+
id?: string;
|
|
44
|
+
timestamp?: number;
|
|
45
|
+
title?: string;
|
|
46
|
+
body?: string;
|
|
47
|
+
icon?: string;
|
|
48
|
+
metadata?: Record<string, unknown>;
|
|
49
|
+
};
|
|
50
|
+
id?: string;
|
|
51
|
+
label?: string;
|
|
52
|
+
role?: string;
|
|
53
|
+
parentId?: string;
|
|
54
|
+
// OS pids of the process(es) this busy work tracks (#650). When supplied, the
|
|
55
|
+
// runner reconciles them against actual liveness and clears the busy marker if
|
|
56
|
+
// every pid is dead — recovering from a tracked process killed out-of-band.
|
|
57
|
+
pids?: number[];
|
|
58
|
+
providerState?: ProviderState;
|
|
59
|
+
/**
|
|
60
|
+
* With a rate-limit `providerState`: relay ids the runner already took as delivered for the turn the provider then
|
|
61
|
+
* refused. The runner parks them again (framed as a redelivery) so they replay with their own routes after the hold.
|
|
62
|
+
*/
|
|
63
|
+
refusedInputIds?: number[];
|
|
64
|
+
metadata?: Record<string, unknown>;
|
|
65
|
+
// #1235 — the live transcript path for a hookless (monitorless) provider turn. When an
|
|
66
|
+
// adapter that learns turn boundaries WITHOUT Stop/UserPromptSubmit hooks (Claude's tmux
|
|
67
|
+
// monitorless watch) supplies this on a `provider-turn` busy/idle event, the runner drives
|
|
68
|
+
// the transcript reasoning tail natively: start on turn-start, capture the final response on
|
|
69
|
+
// turn-end. Absent for hook-driven agents, whose capture stays hook-triggered (no double-run).
|
|
70
|
+
transcriptPath?: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export type ProviderStatusUpdate = SemanticStatus | ProviderStatusEvent;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* #1651 — pane evidence cannot end a turn, clear work, complete claims, decide a restart,
|
|
77
|
+
* or send input. It carries no SemanticStatus or work-kind `clear`. The one display-only
|
|
78
|
+
* exception is a startup-scoped bypass acceptance dialog (#2629): the runner may show a
|
|
79
|
+
* blocked badge and timeline alert until the modal disappears. This does not mutate work.
|
|
80
|
+
*
|
|
81
|
+
* A detector that wants to say something about the pane emits one of these via
|
|
82
|
+
* {@link ProviderAdapter.onPaneObservation}; the runner records it and nothing else.
|
|
83
|
+
*/
|
|
84
|
+
export interface PaneObservation {
|
|
85
|
+
/** Stable event id, e.g. "claude.pane_gate_candidate". */
|
|
86
|
+
eventType: string;
|
|
87
|
+
/** Always "pane" — names the (untrusted) evidence class this reading came from. */
|
|
88
|
+
source: "pane";
|
|
89
|
+
/** Adapter-scoped detector id: a prompt-gate id, "connection-retry", "model-unavailable". */
|
|
90
|
+
detectorId: string;
|
|
91
|
+
observedAt: number;
|
|
92
|
+
sessionName?: string;
|
|
93
|
+
/** The pane line that triggered the observation, when there is one. Diagnostic only. */
|
|
94
|
+
message?: string;
|
|
95
|
+
/** Detector-specific extras. Diagnostic only — never read for a control decision. */
|
|
96
|
+
detail?: Record<string, unknown>;
|
|
97
|
+
/** Startup modal display only; the adapter supplies copy and the runner never changes work state. */
|
|
98
|
+
displayGate?:
|
|
99
|
+
| { phase: "show"; providerState: ProviderState; timelineTitle: string }
|
|
100
|
+
| { phase: "clear" };
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* A session-mirror event surfaced by an adapter that learns about session
|
|
105
|
+
* activity through provider events rather than hooks/transcripts (e.g. the Codex
|
|
106
|
+
* app-server). The runner turns these into `kind: "session"` chat messages, the
|
|
107
|
+
* same lane Claude's transcript capture uses. Provider-independent boundary.
|
|
108
|
+
*/
|
|
109
|
+
export interface ProviderSessionEvent {
|
|
110
|
+
type: "prompt" | "response" | "narration" | "reasoning" | "tool";
|
|
111
|
+
body: string;
|
|
112
|
+
origin?: "chat" | "terminal" | "provider";
|
|
113
|
+
turnId?: string;
|
|
114
|
+
occurredAt?: number;
|
|
115
|
+
/** True only when this response is the completed provider turn, not an intermediate flush. */
|
|
116
|
+
final?: boolean;
|
|
117
|
+
/** Whether the turn-final edge was provider-native or reconstructed. Set only alongside `final`. */
|
|
118
|
+
confidence?: MessageFinalityConfidence;
|
|
119
|
+
/** Why the provider turn ended. Set only alongside `final`. */
|
|
120
|
+
endedBy?: MessageTurnEndReason;
|
|
121
|
+
/** Whether this response may clear a direct user obligation; Codex keeps this false. */
|
|
122
|
+
replyToUserObligation?: boolean;
|
|
123
|
+
/** Route captured with the submitted inbox turn; null means mirror only, undefined uses the runner cache. */
|
|
124
|
+
replyRoute?: { to: string; replyToMessageId: number; channelTarget?: boolean; replyExpected?: boolean } | null;
|
|
125
|
+
/** #2840 — the turn opener, already resolved by the runner (a hookless capture finishing after its idle
|
|
126
|
+
* edge); null = none. Absent ⇒ the runner resolves it from the final's turn id. */
|
|
127
|
+
opener?: ProviderSessionEvent["replyRoute"];
|
|
128
|
+
label?: string;
|
|
129
|
+
/** Provider-independent tool-call category (#1498), adapter-resolved; only set when type is "tool". */
|
|
130
|
+
category?: ToolCallCategory;
|
|
131
|
+
/** #3411 — absolute paths of the files a tool reads or edits, from its raw input (never `params`,
|
|
132
|
+
* which is capped); only set when type is "tool". The runner matches them to path areas. */
|
|
133
|
+
paths?: string[];
|
|
134
|
+
/**
|
|
135
|
+
* Tool/step lifecycle status. `cancelled` (#2354) is the terminal outcome for a tool the
|
|
136
|
+
* provider interrupted before it finished (OpenCode's ToolPart error state with
|
|
137
|
+
* `interrupted:true`), distinct from `failed` (ran and errored). Extended ONCE here for every
|
|
138
|
+
* provider — see MessageSessionMeta.status.
|
|
139
|
+
*/
|
|
140
|
+
status?: "running" | "completed" | "failed" | "cancelled";
|
|
141
|
+
streaming?: boolean;
|
|
142
|
+
/** Stable provider-side step id (Codex app-server item id). Carried into
|
|
143
|
+
* MessageSessionMeta.stepId so the server upserts the step's row in place instead of
|
|
144
|
+
* appending a duplicate (a tool's running→completed, a streamed reasoning row). */
|
|
145
|
+
stepId?: string;
|
|
146
|
+
/**
|
|
147
|
+
* #2397 round 3 — true only for a narration ABOUT the adapter's own retry/failure mechanics
|
|
148
|
+
* (e.g. "retrying in 4s…", "gave up after N retries"), never for anything the model itself
|
|
149
|
+
* produced. `noteOutput` (empty-turn.ts) excludes these from empty-turn evidence the same way it
|
|
150
|
+
* already excludes an echoed `prompt`: a retry storm that ends in terminal failure must not read
|
|
151
|
+
* as forward progress and cancel the #2389 input-armed escalation that wakes the spawn parent.
|
|
152
|
+
* Distinct from `status: "failed"` on purpose — a failed TOOL call is still evidence the model is
|
|
153
|
+
* alive and working; this is evidence only that the TRANSPORT is still failing.
|
|
154
|
+
*/
|
|
155
|
+
diagnostic?: boolean;
|
|
156
|
+
/** #2437 — redacted, size-capped tool input/arguments, only set when type is "tool". Carried
|
|
157
|
+
* straight into MessageSessionMeta.params by the adapter-event→session-meta conversion. */
|
|
158
|
+
params?: unknown;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export type ProviderSessionEventBatch = ProviderSessionEvent[];
|
|
162
|
+
|
|
163
|
+
export interface ProviderSessionTurnInput {
|
|
164
|
+
transcriptPath: string;
|
|
165
|
+
lastAssistantMessage?: unknown;
|
|
166
|
+
promptId?: string;
|
|
167
|
+
isPreFlush?: boolean;
|
|
168
|
+
toolName?: string;
|
|
169
|
+
toolInput?: unknown;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* One provider-observed token-usage report. Providers own extraction from their
|
|
174
|
+
* native session data; the runner owns authenticated delivery to Relay.
|
|
175
|
+
*/
|
|
176
|
+
export interface ProviderTokenUsageRecord {
|
|
177
|
+
subagentId?: string;
|
|
178
|
+
sessionId: string;
|
|
179
|
+
provider: string;
|
|
180
|
+
model: string;
|
|
181
|
+
inputTokens: number;
|
|
182
|
+
outputTokens: number;
|
|
183
|
+
cacheReadTokens: number;
|
|
184
|
+
cacheWriteTokens: number;
|
|
185
|
+
reasoningOutputTokens?: number;
|
|
186
|
+
dedupeKey: string;
|
|
187
|
+
createdAt: number;
|
|
188
|
+
/** #3351 — the provider recorded usage without counts; buckets are zero and the ledger marks it unknown. */
|
|
189
|
+
usageStatus?: "unknown";
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/** Runner-owned transport supplied to adapters that can capture token usage. */
|
|
193
|
+
export interface ProviderTokenUsageReporter {
|
|
194
|
+
report(record: ProviderTokenUsageRecord): Promise<unknown>;
|
|
195
|
+
/** Keep unread/failed capture unknown until a pass durably reports usage. */
|
|
196
|
+
capture?(key: string, read: () => Promise<number>, pending?: boolean): Promise<void>;
|
|
197
|
+
debug(message: string): void;
|
|
198
|
+
reportFailure(error: unknown): void;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export interface ProviderSessionTurnContext {
|
|
202
|
+
turnId?: string;
|
|
203
|
+
turnStartedAt?: number;
|
|
204
|
+
/** #2840 — set only on a hookless capture after the idle edge: the opener snapshotted there. */
|
|
205
|
+
opener?: ProviderSessionEvent["opener"];
|
|
206
|
+
chatCaptureMode: ProviderConfig["chatCaptureMode"];
|
|
207
|
+
reasoningCapture?: boolean;
|
|
208
|
+
settlePollIntervalMs: number;
|
|
209
|
+
settlePollTimeoutMs: number;
|
|
210
|
+
flushSessionEvents(timeoutMs: number): Promise<boolean>;
|
|
211
|
+
pendingSessionEventCount(): number;
|
|
212
|
+
log(message: string): void;
|
|
213
|
+
debug(message: string): void;
|
|
214
|
+
/** #2919 — set only on a turn-end capture: input the provider already accepted runs as the next turn
|
|
215
|
+
* with no busy edge of its own, so the runner keeps a turn open across this end. */
|
|
216
|
+
noteQueuedTurn?(): void;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export interface ProviderSessionTurnResult {
|
|
220
|
+
reasoningSettled?: boolean;
|
|
221
|
+
// The transcript-embedded event time of the exact tool_use anchor that triggered this
|
|
222
|
+
// pre-flush harvest (when resolvable) — a more accurate stamp for a resolved permission
|
|
223
|
+
// prompt's display ordering than the hook's own wall-clock receipt time, which a provider
|
|
224
|
+
// can flush/timestamp its transcript entry after.
|
|
225
|
+
toolUseOccurredAt?: number;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export interface ProviderUserPromptInput {
|
|
229
|
+
prompt: string;
|
|
230
|
+
transcriptPath?: string;
|
|
231
|
+
promptId?: string;
|
|
232
|
+
/** Epoch ms at which the provider ran its hook, when it reports one. */
|
|
233
|
+
firedAt?: number;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export interface ProviderPermissionResolvedPrompt {
|
|
237
|
+
provider: "claude";
|
|
238
|
+
kind: "questions" | "plan" | "command" | "tool";
|
|
239
|
+
title: string;
|
|
240
|
+
body: string;
|
|
241
|
+
promptBody?: string;
|
|
242
|
+
toolName: string;
|
|
243
|
+
hookEventName: string;
|
|
244
|
+
approvalId: string;
|
|
245
|
+
decision: ProviderPermissionDecisionInput["decision"];
|
|
246
|
+
decisionLabel: string;
|
|
247
|
+
occurredAt: number;
|
|
248
|
+
resolvedAt: number;
|
|
249
|
+
decisionReason: ProviderPermissionDecisionReason;
|
|
250
|
+
questions?: unknown[];
|
|
251
|
+
answers?: Record<string, string>;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export interface ProviderPermissionPromptHandler {
|
|
255
|
+
source: string;
|
|
256
|
+
resolvedLabel: string;
|
|
257
|
+
buildView(id: string, body: Record<string, unknown>, reasoningSettled: boolean): InteractivePrompt;
|
|
258
|
+
buildHookResponse(decision: ProviderPermissionDecisionInput, body: Record<string, unknown>): Record<string, unknown>;
|
|
259
|
+
buildResolvedPrompt(view: InteractivePrompt, decision: ProviderPermissionDecisionInput, body: Record<string, unknown>, occurredAt: number): ProviderPermissionResolvedPrompt;
|
|
260
|
+
// #1173: for prompt kinds whose PreToolUse hook is answered immediately (deny-then-hold —
|
|
261
|
+
// see control-server.ts's AskUserQuestion branch) rather than held open for the decision,
|
|
262
|
+
// this renders the eventual "answer" decision as the normal user-prompt text to inject back
|
|
263
|
+
// into the session. Absent for prompt kinds that still ride the hook response directly.
|
|
264
|
+
buildAnswerInjectionPrompt?(view: InteractivePrompt, decision: ProviderPermissionDecisionInput, body: Record<string, unknown>): string;
|
|
265
|
+
// #2914: maps a "questions" prompt to a durable operator decision a coordinator files instead.
|
|
266
|
+
buildDecisionRequest?(body: Record<string, unknown>): OperatorDecisionFileInput | undefined;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
export interface ProviderConfig {
|
|
270
|
+
command: string;
|
|
271
|
+
defaultArgs: string[];
|
|
272
|
+
env: Record<string, string>;
|
|
273
|
+
pluginDirs: string[];
|
|
274
|
+
globalInstructionFiles?: string[];
|
|
275
|
+
defaultCapabilities: string[];
|
|
276
|
+
defaultApprovalMode: string;
|
|
277
|
+
defaultTags: string[];
|
|
278
|
+
chatCaptureMode: "final" | "full";
|
|
279
|
+
// When false, the runner does not stream reasoning/tool steps into chat. Defaults
|
|
280
|
+
// to enabled (steps render discreetly, never as chat bubbles).
|
|
281
|
+
reasoningCapture?: boolean;
|
|
282
|
+
// #2539 Phase A — how a provider WITH a mid-turn steer channel treats an ordinary message
|
|
283
|
+
// offered while a turn is active. Optional everywhere: absent resolves through the OWNING
|
|
284
|
+
// adapter's default (see resolveActiveTurnMessageDelivery in mid-turn-delivery.ts — adapters
|
|
285
|
+
// with a mid-turn steer channel, codex and opencode/zai, default to steer; adapters without
|
|
286
|
+
// one to defer), and `"defer"` doubles as the operational kill switch. Deliberately resolved
|
|
287
|
+
// per-ADAPTER, never a provider-name table.
|
|
288
|
+
activeTurnMessageDelivery?: ActiveTurnMessageDelivery;
|
|
289
|
+
headless: {
|
|
290
|
+
tmuxPrefix: string;
|
|
291
|
+
shutdownTimeoutMs: number;
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/** #2539 Phase A — the mid-turn delivery policy. `"steer"` folds an ordinary message offered
|
|
296
|
+
* mid-turn into the in-flight turn; `"defer"` keeps queue-until-turn-end. */
|
|
297
|
+
export type ActiveTurnMessageDelivery = "steer" | "defer";
|
|
298
|
+
|
|
299
|
+
export const ACTIVE_TURN_MESSAGE_DELIVERY_VALUES = ["steer", "defer"] as const;
|
|
300
|
+
|
|
301
|
+
export interface RunnerSpawnConfig {
|
|
302
|
+
serviceAccess?: ServiceAccessHandoff;
|
|
303
|
+
/** Runner-local overlay; never serialized in a command. */
|
|
304
|
+
serviceAccessEnv?: Record<string, string>;
|
|
305
|
+
provider: string;
|
|
306
|
+
model?: string;
|
|
307
|
+
effort?: string;
|
|
308
|
+
/** #2595 — effective-catalog context window from the spawn payload (incl. DB overrides);
|
|
309
|
+
* adapters prefer it over their static manifest lookup. Absent ⇒ fall back to the manifest. */
|
|
310
|
+
contextWindowTokens?: number;
|
|
311
|
+
/** #2599 — the full server-resolved model record (protocol ≥ 2). Precedence over the manifest
|
|
312
|
+
* for window / qualified name / descriptor / threshold; absent ⇒ manifest (or the legacy
|
|
313
|
+
* #2595 `contextWindowTokens` above, which the adapter reads only when no record is present). */
|
|
314
|
+
modelRecord?: ResolvedModelRecord;
|
|
315
|
+
runnerId: string;
|
|
316
|
+
instanceId: string;
|
|
317
|
+
agentId: string;
|
|
318
|
+
relayUrl: string;
|
|
319
|
+
/** Runner-owned live credential accessor for adapter accounting RPCs. */
|
|
320
|
+
getRelayToken?: () => string | undefined;
|
|
321
|
+
cwd: string;
|
|
322
|
+
headless: boolean;
|
|
323
|
+
lifecycle?: "persistent" | "transient";
|
|
324
|
+
approvalMode: string;
|
|
325
|
+
label?: string;
|
|
326
|
+
rig?: string;
|
|
327
|
+
profile?: string;
|
|
328
|
+
harnessSubagents?: boolean;
|
|
329
|
+
agentProfile?: AgentProfile;
|
|
330
|
+
prompt?: string;
|
|
331
|
+
systemPromptAppend?: string;
|
|
332
|
+
tmuxSession?: string;
|
|
333
|
+
providerArgs: string[];
|
|
334
|
+
providerConfig: ProviderConfig;
|
|
335
|
+
/** Async snapshot of the host Claude config, loaded before launch assembly. */
|
|
336
|
+
hostClaudeConfig?: Record<string, unknown>;
|
|
337
|
+
/** Narrow host Claude settings snapshot used when host hooks are enabled in an isolated home. */
|
|
338
|
+
hostClaudeSettings?: Record<string, unknown>;
|
|
339
|
+
env: Record<string, string>;
|
|
340
|
+
controlPort: number;
|
|
341
|
+
// Stage 2 (#215): the MCP endpoint the agent connects to — the runner-local proxy URL when the
|
|
342
|
+
// proxy is active. Undefined → the adapter targets the relay's MCP endpoint directly (Stage 1).
|
|
343
|
+
relayMcpEndpoint?: string;
|
|
344
|
+
// #1450: the per-session proxy secret the agent authenticates to the runner-local proxy with (the
|
|
345
|
+
// same value exported as AGENT_RELAY_SESSION_TOKEN). Set only when the proxy is active; the Codex
|
|
346
|
+
// per-agent metaOnly callmux uses it to reach the relay endpoint on-demand THROUGH the proxy, so
|
|
347
|
+
// identity rides the proxy's live-token injection and no relay token is ever written to disk.
|
|
348
|
+
mcpProxySecret?: string;
|
|
349
|
+
// #672: the shared host-listener URL the per-agent `callmux bridge` connects to, when the
|
|
350
|
+
// profile/spawn opted into `agentProfile.sharedMcp`. Resolved runner-side (env → default);
|
|
351
|
+
// the launch assembler only emits the bridge entry when sharedMcp is on.
|
|
352
|
+
sharedMcpUrl?: string;
|
|
353
|
+
monitor?: {
|
|
354
|
+
deliver(messages: Message[]): Promise<number[]>;
|
|
355
|
+
};
|
|
356
|
+
[key: string]: unknown;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
export interface SpawnArgs {
|
|
360
|
+
command: string;
|
|
361
|
+
args: string[];
|
|
362
|
+
cwd: string;
|
|
363
|
+
env: Record<string, string>;
|
|
364
|
+
/** #2513 — env keys that must be explicitly UNSET in the launch environment (the tmux
|
|
365
|
+
* launcher script exports only whitelisted keys but still inherits the tmux server's
|
|
366
|
+
* env, so deleting from `env` alone cannot scrub an ambient credential). */
|
|
367
|
+
envUnset?: string[];
|
|
368
|
+
/** A launch-time stdin file, used only by one-shot provider commands. */
|
|
369
|
+
stdinFile?: string;
|
|
370
|
+
/** Written by a one-shot launcher after the provider process exits. */
|
|
371
|
+
exitCodeFile?: string;
|
|
372
|
+
/** Initial one-shot user assignment, staged into stdinFile immediately before provider spawn. */
|
|
373
|
+
stdinContents?: string;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
export interface ManagedProcess {
|
|
377
|
+
pid?: number;
|
|
378
|
+
process?: Bun.Subprocess;
|
|
379
|
+
meta?: Record<string, unknown>;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* #1746 — the terminal verdict of a provider shutdown. `killed` means the provider
|
|
384
|
+
* process (tmux pane / pid tree) is POSITIVELY confirmed gone; `failed-to-kill` means it
|
|
385
|
+
* survived even a SIGKILL of its process group (near-impossible on a same-user Linux host,
|
|
386
|
+
* so it is the operator-visible safety surface, not the happy path). The runner uses this
|
|
387
|
+
* to gate deregistration: a roster removal must imply the process is dead (#1746 ask 2), so
|
|
388
|
+
* a `failed-to-kill` keeps the agent visible rather than turning it into a silent zombie.
|
|
389
|
+
*/
|
|
390
|
+
export type ShutdownOutcome = "killed" | "failed-to-kill";
|
|
391
|
+
|
|
392
|
+
export interface TerminalAttachSpec {
|
|
393
|
+
mode: "guest";
|
|
394
|
+
provider: string;
|
|
395
|
+
cwd: string;
|
|
396
|
+
command: string[];
|
|
397
|
+
/**
|
|
398
|
+
* #2459 round 1 (review A) — REMOVED: a per-key env record let the guest credential ride
|
|
399
|
+
* the attach-spec HTTP response body and the orchestrator's process state. Credentials now
|
|
400
|
+
* travel ONLY via {@link envFile}: the runner pre-stages a 0600 env file it owns and the
|
|
401
|
+
* spec carries its PATH (never its contents); the orchestrator wraps the guest command in a
|
|
402
|
+
* shell that sources that file, so the secret materializes solely in the guest process
|
|
403
|
+
* environment.
|
|
404
|
+
*/
|
|
405
|
+
title?: string;
|
|
406
|
+
ttlMs?: number;
|
|
407
|
+
/**
|
|
408
|
+
* #2459 — absolute path to a 0600 env file written by the runner (same host + user), for
|
|
409
|
+
* the orchestrator's guest wrapper to source into the guest process environment. The path
|
|
410
|
+
* is not a secret; the file contents never travel through the control server, the
|
|
411
|
+
* orchestrator's memory/persistence, logs, or any argv.
|
|
412
|
+
*/
|
|
413
|
+
envFile?: string;
|
|
414
|
+
/**
|
|
415
|
+
* #2459 — non-secret attachment generation, derived from the provider's ACTIVE session id
|
|
416
|
+
* (a one-way digest — never the session id itself, never a credential). The orchestrator
|
|
417
|
+
* stores it with the guest tmux session and re-reads the runner's current generation before
|
|
418
|
+
* terminal input and on stream connect/reconnect; a mismatch means clearContext()/retry
|
|
419
|
+
* re-rolled the session and the guest TUI is attached to a dead conversation, so the guest
|
|
420
|
+
* is killed with a typed "session changed; reopening terminal" result. Absent for providers
|
|
421
|
+
* whose attach target cannot go stale (codex resumes a pinned thread id).
|
|
422
|
+
*/
|
|
423
|
+
generation?: string;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
export type ProviderPermissionDecision = "approve" | "approve-session" | "deny" | "abort" | "answer";
|
|
427
|
+
|
|
428
|
+
export interface ProviderPermissionDecisionInput {
|
|
429
|
+
approvalId: string;
|
|
430
|
+
decision: ProviderPermissionDecision;
|
|
431
|
+
reason?: string;
|
|
432
|
+
decisionReason?: ProviderPermissionDecisionReason;
|
|
433
|
+
// For "answer" decisions (Claude AskUserQuestion): maps each question's text
|
|
434
|
+
// to the chosen option label(s). Multi-select labels are comma-joined.
|
|
435
|
+
answers?: Record<string, string>;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
export interface ProviderPermissionDecisionReason {
|
|
439
|
+
kind: "timeout" | "dismissed" | "answered";
|
|
440
|
+
message?: string;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
// Fresh, per-turn context usage a transcript-backed adapter reads from its
|
|
444
|
+
// session log (#1512). tokensUsed is the context-window token sum for the turn;
|
|
445
|
+
// occurredAt is the wall-clock ms of the turn when the log stamps one.
|
|
446
|
+
export interface ProviderContextUsage {
|
|
447
|
+
tokensUsed: number;
|
|
448
|
+
model?: string;
|
|
449
|
+
occurredAt?: number;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* Runner-owned live turn state is sampled when the adapter offers input.
|
|
454
|
+
*
|
|
455
|
+
* #2539 Phase B — the SAME context carries the deferred-settlement handoff for a mid-turn steer whose
|
|
456
|
+
* acceptance is not yet consumption (OpenCode/zai noReply persist: the provider row exists, the model
|
|
457
|
+
* reads it at a LATER step). The callbacks are runner-owned implementations of the ONE settlement seam —
|
|
458
|
+
* `settleMidTurnConsumed` completes an awaiting id's settlement exactly like an immediate ack (mark read,
|
|
459
|
+
* release the claim, poison the intake guard against re-enqueue); `reofferMidTurnIds` returns ids to the
|
|
460
|
+
* NORMAL queue when they can no longer be consumed where they were persisted (session clear/compact/reroll
|
|
461
|
+
* swap, shutdown, definitive non-persistence after an ambiguous POST) — never a repost into the provider.
|
|
462
|
+
* The adapter NEVER settles or requeues on its own; it only reports ids through these.
|
|
463
|
+
*/
|
|
464
|
+
/** Evidence for one input offer; acceptance callbacks must stay bound to that offer. */
|
|
465
|
+
export interface ProviderInputObserver {
|
|
466
|
+
offered(at: number, hasConsumptionSignal: boolean): void;
|
|
467
|
+
consumed(): void;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
export interface ProviderDeliverContext {
|
|
471
|
+
inputObserver?: ProviderInputObserver;
|
|
472
|
+
/** #2840 — for an adapter that runs one provider turn PER message: these messages open the next turn.
|
|
473
|
+
* Returns a disarm for when they open none (failed, refused). Absent call ⇒ the whole batch opens one. */
|
|
474
|
+
openTurnFor?: (messages: Message[]) => () => void;
|
|
475
|
+
/** #3415 — this offer's turn is opened by only these messages (a split batch); a no-op unless the offer armed an opener. Returns its disarm. */
|
|
476
|
+
narrowTurnOpener?: (messages: Message[]) => () => void;
|
|
477
|
+
isRecipientMidTurn?: () => boolean;
|
|
478
|
+
/** Text an adapter types as a provider user turn, so its prompt-hook echo is not mirrored as terminal input. */
|
|
479
|
+
recordSubmittedPrompt?: (text: string, imagePaths?: readonly string[]) => void;
|
|
480
|
+
/**
|
|
481
|
+
* #2539 Phase B — positively CONSUMED ids for a batch previously reported through
|
|
482
|
+
* {@link DeliverResult.awaitingConsumptionIds}. Fires once per id when the model has read the
|
|
483
|
+
* persisted row (SSE parentID correlation or the bounded idle-wake settle). Absent callback ⇒
|
|
484
|
+
* the adapter must hold the ids in its ledger (fail-safe: never silently settled).
|
|
485
|
+
*/
|
|
486
|
+
settleMidTurnConsumed?: (relayIds: number[]) => void;
|
|
487
|
+
/**
|
|
488
|
+
* #2539 Phase B — ids to hand BACK to the normal queue (settled as undelivered, re-offered at
|
|
489
|
+
* the next boundary) because their persisted row can no longer be consumed where it lives.
|
|
490
|
+
* Absent callback ⇒ hold in the ledger, same fail-safe as {@link settleMidTurnConsumed}.
|
|
491
|
+
*/
|
|
492
|
+
reofferMidTurnIds?: (relayIds: number[]) => void;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
export interface DeliverResult {
|
|
496
|
+
acknowledgedIds: number[];
|
|
497
|
+
/**
|
|
498
|
+
* #2539 Phase B — ids the adapter positively accepted for the in-flight turn (or holds in
|
|
499
|
+
* ambiguous custody after ONE timed-out POST whose bounded exact-id reconcile was inconclusive)
|
|
500
|
+
* but whose CONSUMPTION has not happened yet, so their settlement completes LATER through
|
|
501
|
+
* {@link ProviderDeliverContext.settleMidTurnConsumed} / {@link ProviderDeliverContext.reofferMidTurnIds}.
|
|
502
|
+
* The runner records the delivery attempt but does NOT mark read, release the claim, or treat
|
|
503
|
+
* them as settled — persistence is not delivery. Must be DISJOINT from `acknowledgedIds`; ids in
|
|
504
|
+
* neither set are requeued for turn-end delivery as usual.
|
|
505
|
+
*/
|
|
506
|
+
awaitingConsumptionIds?: number[];
|
|
507
|
+
/**
|
|
508
|
+
* #2397 round 3 review (MED-3r) — ids the adapter positively knows failed a TERMINAL provider
|
|
509
|
+
* error (e.g. OpenCode's retry+reroll budget exhausted against a rate-limited upstream), as
|
|
510
|
+
* opposed to an ordinary un-acknowledged id (recipient mid-turn, transport busy). The runner
|
|
511
|
+
* paces its re-drain of these with bounded exponential backoff instead of an immediate re-drain — without
|
|
512
|
+
* this, a re-queued message whose provider is already rate-limiting hammers it again on the very
|
|
513
|
+
* next tick, forever. Must be a SUBSET of the ids NOT in `acknowledgedIds`.
|
|
514
|
+
*/
|
|
515
|
+
terminalFailureIds?: number[];
|
|
516
|
+
/**
|
|
517
|
+
* #2619 — ids the provider REFUSED under a rate-limit/quota hold (the turn ended in the shared
|
|
518
|
+
* `blocked/rate_limit` hold, not a terminal failure). Not delivered and not failed: the runner
|
|
519
|
+
* parks them (never re-drained into the wall, claims released so no Task completes) until a
|
|
520
|
+
* provider turn goes through again, then redelivers them. Must be disjoint from `acknowledgedIds`.
|
|
521
|
+
*/
|
|
522
|
+
providerHeldIds?: number[];
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
/**
|
|
526
|
+
* #2534 — thrown by a synchronous-endpoint adapter (OpenCode/zai) when its outbound prompt was
|
|
527
|
+
* positively ACCEPTED and persisted by the provider, but the turn's COMPLETION await itself
|
|
528
|
+
* failed afterwards (transport drop, turn-timeout abort). The provider is already working on the
|
|
529
|
+
* prompt, so the caller must NOT requeue it: a requeue would run the same assignment a second
|
|
530
|
+
* time. The `cause` carries the original transport failure for the diagnostic trail.
|
|
531
|
+
*/
|
|
532
|
+
export class PromptAcceptedError extends Error {
|
|
533
|
+
constructor(message: string, options?: { cause?: unknown }) {
|
|
534
|
+
super(message, options);
|
|
535
|
+
this.name = "PromptAcceptedError";
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
export interface ProviderAdapter {
|
|
540
|
+
/** Mask tool responses before the provider consumes them when hooks cannot replace results. */
|
|
541
|
+
mcpToolResponseRedactor?(cwd: string): ((response: Response) => Promise<Response>) | undefined;
|
|
542
|
+
provider: string;
|
|
543
|
+
statusSourceId?: string;
|
|
544
|
+
stopObligationPath?: string;
|
|
545
|
+
permissionPromptHandler?: ProviderPermissionPromptHandler;
|
|
546
|
+
spawn(config: RunnerSpawnConfig): Promise<ManagedProcess>;
|
|
547
|
+
// #1746 — resolves once the provider is terminal. Returns the outcome so the runner can
|
|
548
|
+
// gate deregistration on confirmed death; `void` from a legacy adapter is treated as
|
|
549
|
+
// `killed` (best-effort back-compat), but both first-party adapters now report explicitly.
|
|
550
|
+
shutdown(process: ManagedProcess, opts: { graceful: boolean; timeoutMs: number }): Promise<ShutdownOutcome | void>;
|
|
551
|
+
/** Synchronously cancel current adapter status sources before the runner publishes terminal status. */
|
|
552
|
+
stopStatusWatchers?(): void;
|
|
553
|
+
/** Re-arm status sources for the same process when a restart attempt fails before replacement. */
|
|
554
|
+
resumeStatusWatchers?(process: ManagedProcess): Promise<void> | void;
|
|
555
|
+
compact?(process: ManagedProcess, opts?: { instructions?: string; signal?: AbortSignal; onSubmitted?: () => void }): Promise<Record<string, unknown> | void>;
|
|
556
|
+
compactSupportsInstructions?: boolean;
|
|
557
|
+
// Blind submits stamp onSubmitted and need a separate compacted/idle completion barrier.
|
|
558
|
+
/** #3398 — the adapter emits its own `compacted` / `context-cleared` timelines; hook copies are not reset facts. */
|
|
559
|
+
reportsContextResets?: boolean;
|
|
560
|
+
compactReportsSubmission?: boolean;
|
|
561
|
+
clearContext?(process: ManagedProcess): Promise<Record<string, unknown> | void>;
|
|
562
|
+
// #2950 — change effort in place. Resolves with the confirmed `effort`, throws when the provider
|
|
563
|
+
// refused or never confirmed it. Only processes whose meta.effortSwitch is true may receive it.
|
|
564
|
+
setEffort?(process: ManagedProcess, effort: string): Promise<{ effort: string } & Record<string, unknown>>;
|
|
565
|
+
// #1588 — when true, the runner delivers a self-resume clear-inject continuation IN-PROCESS,
|
|
566
|
+
// coupled to the very same agent.clearContext command (deliverCoupledContinuationAfterClear),
|
|
567
|
+
// rather than leaving it to the separate reactive agent.injectContext command, and only when
|
|
568
|
+
// clearContext reports `clearConfirmed: true`. Set it when a separate inject could race the clear
|
|
569
|
+
// (Claude tmux's async `/clear`, the #1588 silent mind-wipe) or land after a queued inbox message
|
|
570
|
+
// (headless Claude, whose clear resolves on its native conversation_reset boundary). Codex leaves
|
|
571
|
+
// it unset: its awaited threadStart is the barrier and the separate inject (backstopped by the
|
|
572
|
+
// server-side #1023 sweep) stays untouched.
|
|
573
|
+
couplesClearInjectContinuation?: boolean;
|
|
574
|
+
// #2043 F1 — when true, this provider's `/compact` // `/clear` must be submitted to an IDLE
|
|
575
|
+
// provider: Claude tmux keystrokes typed mid-turn dequeue as literal chat, and headless Claude
|
|
576
|
+
// queues stream-json input behind the live turn. The runner therefore gates the submit on the
|
|
577
|
+
// live provider turn CLEARING first (waitForProviderTurnClear). Providers whose compact/clear is an
|
|
578
|
+
// awaited app-server handshake (Codex) leave this unset — a plain turn-clear wait would time out
|
|
579
|
+
// on their in-turn compaction. Those providers fence the PREDECESSOR turn a different way
|
|
580
|
+
// instead — see interruptsTurnBeforeContextCommand below (#2569).
|
|
581
|
+
awaitsIdleBeforeContextCommand?: boolean;
|
|
582
|
+
// #2569 — when true, the runner must INTERRUPT and SETTLE the predecessor provider turn before
|
|
583
|
+
// this provider's compact/clearContext runs. Set for app-server providers (Codex) whose
|
|
584
|
+
// clearContext starts a FRESH thread (and whose compact rewrites the current one) via an awaited
|
|
585
|
+
// handshake: the await confirms the NEW generation is ready but does NOT settle the OLD turn.
|
|
586
|
+
// relay_compact_and_resume is called from within the model's own live turn, so that turn keeps
|
|
587
|
+
// running on the previous thread while the successor generation is armed on the new one — two
|
|
588
|
+
// generations then write the single worktree and revert each other (the #2569 silent overlap).
|
|
589
|
+
// A plain wait would time out on the still-live in-turn compaction (why blind-submit providers
|
|
590
|
+
// can't share this path), so the fence actively interrupts the turn, then waits for it to reach
|
|
591
|
+
// a terminal state (interrupt-then-settle, mirroring the redirect path) before the destructive
|
|
592
|
+
// step. Adapters that fence internally (OpenCode's turnQueue) or have no interrupt leave this unset.
|
|
593
|
+
interruptsTurnBeforeContextCommand?: boolean;
|
|
594
|
+
// Derive the current context-window token usage from a transcript-backed
|
|
595
|
+
// provider's session log (#1512). The runner calls this every heartbeat with the
|
|
596
|
+
// latest transcript so context stats keep advancing per-turn even when a provider's
|
|
597
|
+
// out-of-band probe (Claude's status-line command) goes silent after a
|
|
598
|
+
// compact/clear/native-resume. Pure parse — no process state. Event-stream
|
|
599
|
+
// providers (Codex) report context through `meta.getContext` instead and omit this.
|
|
600
|
+
contextUsageFromTranscript?(jsonl: string): ProviderContextUsage | undefined;
|
|
601
|
+
// Normalize the session so far into the provider-agnostic SessionEvent stream the
|
|
602
|
+
// Insights context-ratio signal (#183/#184) reduces. Called by the runner's
|
|
603
|
+
// pre-session-destroy seam before any compact/clear/restart/shutdown. The runner owns
|
|
604
|
+
// the per-segment cursor (it slices events since the last capture), so this returns the
|
|
605
|
+
// full ordered event list for the current process lifetime. `ctx.transcriptPath` is
|
|
606
|
+
// supplied for transcript-backed providers (Claude); event-stream providers (Codex)
|
|
607
|
+
// ignore it and return their accumulated log. Return null when there is nothing to
|
|
608
|
+
// measure. Best-effort: may be omitted by providers without a session view yet.
|
|
609
|
+
collectSessionEvents?(process: ManagedProcess, ctx: { transcriptPath?: string }): Promise<SessionEvent[] | null>;
|
|
610
|
+
// Full searchable transcript/archive source for destructive boundaries. The runner
|
|
611
|
+
// slices the returned stream by cursor, so adapters should return the session-so-far
|
|
612
|
+
// view when they have one.
|
|
613
|
+
collectSessionArchiveSegment?(process: ManagedProcess, ctx: { transcriptPath?: string }): Promise<string | null>;
|
|
614
|
+
// Interrupt the in-flight turn without ending the session (ESC for Claude's
|
|
615
|
+
// tmux pane, turn/interrupt for the Codex app-server). Provider-independent at
|
|
616
|
+
// the runner boundary; each adapter does what its provider actually supports.
|
|
617
|
+
// Contract: abort the turn, never drain it and never attempt Relay-side rollback.
|
|
618
|
+
// Tool side effects already applied (including partial file writes) remain for the
|
|
619
|
+
// agent to reconcile. Redirect waits for provider idle before starting a clean turn.
|
|
620
|
+
interrupt?(process: ManagedProcess): Promise<Record<string, unknown> | void>;
|
|
621
|
+
// Whether the adapter supports additive input into a running provider turn.
|
|
622
|
+
supportsMidTurnSteer?: boolean;
|
|
623
|
+
/**
|
|
624
|
+
* #2539 Phase A — the shared mid-turn steer contract (Phase B: opencode/zai implement against
|
|
625
|
+
* the same shape). Given a batch offered while the recipient is mid-turn, the adapter owns the
|
|
626
|
+
* ONE eligibility decision: fold the steerable subset (ordinary persisted messages,
|
|
627
|
+
* `partitionMidTurnDelivery`) into the in-flight turn and return/ack ONLY those ids;
|
|
628
|
+
* leave the boundary-only classes (synthetic memory/self-resume
|
|
629
|
+
* injections, claimable/task assignments) un-acked so the runner requeues them for turn-end
|
|
630
|
+
* delivery. Throwing defers the whole batch (the runner requeues it). Adapters honor
|
|
631
|
+
* `ProviderConfig.activeTurnMessageDelivery` — `"defer"` (the kill switch) restricts the
|
|
632
|
+
* steerable set to empty. Implemented by adapters with
|
|
633
|
+
* `supportsMidTurnSteer`; their `deliver` consults it at the paste instant, so the runner
|
|
634
|
+
* keeps a single call path.
|
|
635
|
+
*
|
|
636
|
+
* #2539 Phase B (OpenCode/zai) — the acceptance/consumption split: the ack for this adapter
|
|
637
|
+
* means POSITIVE PERSISTENCE (POST /session/:id/message with a caller messageID +
|
|
638
|
+
* noReply:true — a user row the active loop consumes at its next step; live-proven on pinned
|
|
639
|
+
* 1.18.21), not consumption, so persisted/ambiguous ids are returned as
|
|
640
|
+
* {@link DeliverResult.awaitingConsumptionIds} and settle later through the ctx's
|
|
641
|
+
* `settleMidTurnConsumed`/`reofferMidTurnIds` — the adapter owns the durable-until-consumed
|
|
642
|
+
* ledger, SSE consumption detection, the bounded idle-wake fallback and session fencing; the
|
|
643
|
+
* runner keeps owning claims and settlement. Definitive non-persistence (reconciled absent)
|
|
644
|
+
* throws so the runner paces the retry; ids past the adapter's backpressure caps are left
|
|
645
|
+
* un-acked for the normal lane.
|
|
646
|
+
*/
|
|
647
|
+
deliverMidTurn?(process: ManagedProcess, messages: Message[], ctx?: ProviderDeliverContext): Promise<void | number[] | DeliverResult>;
|
|
648
|
+
// Out-of-band activity probe for the busy-state reconciler: returns the real
|
|
649
|
+
// provider activity when the runner's claim state may have gone stale (e.g. the
|
|
650
|
+
// turn was interrupted from the web terminal so no Stop hook fired). "unknown"
|
|
651
|
+
// means the provider can't be cheaply probed and the reconciler should defer.
|
|
652
|
+
probeActivity?(process: ManagedProcess): Promise<"busy" | "idle" | "unknown">;
|
|
653
|
+
// #769 P1-A: an independent "is the provider still visibly busy?" read, consulted by the
|
|
654
|
+
// busy backstop — a probeActivity()=idle must not clear a live turn while this reads `busy`
|
|
655
|
+
// (defense-in-depth when the primary probe can momentarily read idle mid-turn, e.g. a
|
|
656
|
+
// connection retry). #1656: three-valued on purpose. Only `not-busy` is evidence the turn
|
|
657
|
+
// ended; `no-session`/`unreadable` are unknown and must never authorize a clear.
|
|
658
|
+
probePaneBusy?(process: ManagedProcess): Promise<PaneBusyReading>;
|
|
659
|
+
// #1138: resolve a real OS pid for a busy provider-turn whose ManagedProcess carries
|
|
660
|
+
// none directly (e.g. Claude's tmux launch — process.pid is undefined, only a tmux
|
|
661
|
+
// session/socket). The runner calls this as a fallback when a busy report supplies no
|
|
662
|
+
// explicit pids, so the #650 liveness reconcile (and the stale-turn backstop) has real
|
|
663
|
+
// proof-of-life instead of only an elapsed-time heuristic. Returning undefined leaves
|
|
664
|
+
// the runner's existing process.pid fallback (or no pid at all) unchanged.
|
|
665
|
+
resolveBusyPid?(process: ManagedProcess): number | undefined;
|
|
666
|
+
terminalAttachSpec?(process: ManagedProcess): Promise<TerminalAttachSpec>;
|
|
667
|
+
// #2459 — the CURRENT non-secret attachment generation (see TerminalAttachSpec.generation).
|
|
668
|
+
// Read by the runner control server's GET /terminal/generation so the orchestrator can
|
|
669
|
+
// detect a session rotation without ever learning the session id or any credential.
|
|
670
|
+
// Absent ⇒ the provider's attach target cannot go stale (codex) and the endpoint reports
|
|
671
|
+
// no generation, which the orchestrator treats as "nothing to check".
|
|
672
|
+
terminalAttachGeneration?(process: ManagedProcess): string | undefined;
|
|
673
|
+
respondToPermissionDecision?(process: ManagedProcess, input: ProviderPermissionDecisionInput): Promise<Record<string, unknown> | void>;
|
|
674
|
+
/** Configure the runner-owned authenticated delivery path for provider-native usage capture. */
|
|
675
|
+
configureTokenUsageReporter?(reporter: ProviderTokenUsageReporter): void;
|
|
676
|
+
captureSessionTurn?(input: ProviderSessionTurnInput, ctx: ProviderSessionTurnContext): Promise<ProviderSessionTurnResult | void>;
|
|
677
|
+
captureSubagentTokenUsage?(transcriptPath: string): Promise<void>;
|
|
678
|
+
/**
|
|
679
|
+
* Bounded final provider-native accounting pass before a session is torn down. `transcriptPath`
|
|
680
|
+
* is `undefined` for a provider with no transcript file to tail (#2484 round 2 review MED-1 —
|
|
681
|
+
* OpenCode's capture is event-sourced, not file-tailed); the adapter owns whatever precondition
|
|
682
|
+
* it needs (a transcript-tailing adapter bails itself on a missing path, an event-sourced one
|
|
683
|
+
* ignores the argument entirely).
|
|
684
|
+
*/
|
|
685
|
+
captureFinalTokenUsage?(transcriptPath: string | undefined, ctx: ProviderSessionTurnContext): Promise<void>;
|
|
686
|
+
/** Start the provider-owned lifecycle observation for a prompt seeded in the launch command. */
|
|
687
|
+
startLaunchSeededTurn?(process: ManagedProcess): Promise<void>;
|
|
688
|
+
handleUserPrompt?(input: ProviderUserPromptInput, ctx: ProviderSessionTurnContext): Promise<void>;
|
|
689
|
+
/** Whether a prompt the provider reports is one the runner submitted, through the provider's paste transport (#3081). */
|
|
690
|
+
matchesSubmittedPrompt?(providerPrompt: string, submitted: string, imagePaths?: readonly string[]): boolean;
|
|
691
|
+
/** A session-start hook's stamped check-in (#2664): the provider's hook path works. */
|
|
692
|
+
handleHookCheck?(input: { firedAt?: number }, ctx: ProviderSessionTurnContext): void;
|
|
693
|
+
/** File paths from a synchronous provider tool hook; absent means transcript delivery. */
|
|
694
|
+
toolHookPaths?(input: unknown): string[] | undefined;
|
|
695
|
+
drainSessionTrace?(ctx: ProviderSessionTurnContext): Promise<void>;
|
|
696
|
+
settleSessionTraceForToolUse?(transcriptPath: string, toolName: string | undefined, toolInput: unknown, ctx: ProviderSessionTurnContext): Promise<{ settled: boolean; jsonl?: string }>;
|
|
697
|
+
stopSessionTrace?(): void;
|
|
698
|
+
publishPassiveTelemetry?(): Promise<void>;
|
|
699
|
+
// `options.readyTimeoutMs` lets the runner widen the provider-ready wait for the
|
|
700
|
+
// first (cold-start) delivery vs. a fast re-attempt after a ready signal (#329).
|
|
701
|
+
// `options.isInitial` (default true) tells the adapter whether this delivery is the
|
|
702
|
+
// agent's genuine first turn — the runner passes false from the dashboard
|
|
703
|
+
// prompt-injection / continue paths (#1228) so a mid-session nudge isn't mislabeled
|
|
704
|
+
// as the initial prompt.
|
|
705
|
+
// Resolves "held" (#2619) when the provider REFUSED the prompt under a rate-limit/quota hold:
|
|
706
|
+
// not delivered, not failed — the runner parks it for redelivery (provider-hold.ts).
|
|
707
|
+
deliverInitialPrompt?(process: ManagedProcess, prompt: string, options?: PromptOfferOptions): Promise<void | "held">;
|
|
708
|
+
/** Confirm that a previously ambiguous input was consumed before the runner lifts its delivery hold. */
|
|
709
|
+
confirmSubmitRecovery?(process: ManagedProcess, turnStarted: boolean): Promise<boolean>;
|
|
710
|
+
/** The operator released the runner's submit hold (#2664): drop any adapter-side submit fence. */
|
|
711
|
+
releaseSubmitHold?(process: ManagedProcess): void;
|
|
712
|
+
// When true, the adapter seeds the spawn-time initial prompt as a launch argument
|
|
713
|
+
// (Claude's positional `claude "<prompt>"`), so it's already delivered the instant the
|
|
714
|
+
// session starts. The runner must then NOT also deliver it post-launch via
|
|
715
|
+
// deliverInitialPrompt — that would double-deliver and re-introduce the send-keys
|
|
716
|
+
// onboarding race (#352). deliverInitialPrompt stays available for mid-session injection
|
|
717
|
+
// (dashboard chat box) and ongoing message delivery, which have no launch-arg equivalent.
|
|
718
|
+
seedsInitialPromptAtLaunch?: boolean;
|
|
719
|
+
/** Return accepted ids, plus consumption or failure outcomes when the transport reports them. */
|
|
720
|
+
deliver(process: ManagedProcess, messages: Message[], ctx?: ProviderDeliverContext): Promise<void | number[] | DeliverResult>;
|
|
721
|
+
onStatusChange(cb: (status: ProviderStatusUpdate) => void): void;
|
|
722
|
+
// #1651 — subscribe to pane-derived DIAGNOSTICS. Separate from onStatusChange on purpose:
|
|
723
|
+
// this channel's payload cannot carry a status, a clear, or a providerState, so wiring a
|
|
724
|
+
// detector here is a structural guarantee that it cannot mutate runner state. Optional;
|
|
725
|
+
// adapters with no pane to scrape simply never call it.
|
|
726
|
+
onPaneObservation?(cb: (observation: PaneObservation) => void): void;
|
|
727
|
+
// Subscribe to session-mirror events from providers. Batch callbacks preserve
|
|
728
|
+
// shared idempotency for multiple trace steps discovered in one provider poll.
|
|
729
|
+
onSessionEvent?(cb: (event: ProviderSessionEvent) => void): void;
|
|
730
|
+
onSessionEvents?(cb: (events: ProviderSessionEventBatch) => void): void;
|
|
731
|
+
// #2389 — "the model produced something in the current turn", for output an adapter can OBSERVE
|
|
732
|
+
// but cannot mirror. It exists because the runner has to tell a turn that did nothing at all from
|
|
733
|
+
// one that finished work, and mirrored session events do not cover every provider: OpenCode's
|
|
734
|
+
// wire carries tool parts whose internal shape we deliberately do not guess at, so they are
|
|
735
|
+
// reported as bare activity rather than published as a half-understood trace step. Evidence only
|
|
736
|
+
// — nothing is displayed, nothing is persisted. Optional; adapters whose output is fully mirrored
|
|
737
|
+
// never need it.
|
|
738
|
+
onTurnActivity?(cb: () => void): void;
|
|
739
|
+
// §4.1 of the Runner↔provider contract (#725 / #746): fold the runner-tracked raw
|
|
740
|
+
// transport/timeline/token/work-kind signals into ONE normalized LivenessSignal the
|
|
741
|
+
// server reads instead of six raw `meta` fields. Each adapter owns what counts as
|
|
742
|
+
// progress for its provider (Claude #713 timeline transitions; Codex #724 live
|
|
743
|
+
// subprocess work). Optional so test/mock adapters fall back to the shared
|
|
744
|
+
// {@link computeLivenessSignal} fold — the runner always has a verdict to ship.
|
|
745
|
+
liveness?(inputs: LivenessInputs): LivenessSignal;
|
|
746
|
+
// Headless providers with no tmux session (e.g. the Codex app-server) still
|
|
747
|
+
// warrant an automatic restart on unexpected exit. Returning true opts the
|
|
748
|
+
// provider into the runner's restart-with-backoff path.
|
|
749
|
+
supportsUnexpectedExitRestart?(): boolean;
|
|
750
|
+
/** Provider-owned preload for runner registration metadata. The returned snapshot is passed to
|
|
751
|
+
* synchronous assembly/reporting only; provider-specific I/O stays behind this boundary. */
|
|
752
|
+
preloadRunnerConfig?(): Promise<Pick<RunnerSpawnConfig, "hostClaudeConfig" | "hostClaudeSettings"> | undefined>;
|
|
753
|
+
/** Hydrates one spawn/restart config before the provider-neutral runner passes it to any
|
|
754
|
+
* synchronous launch assembly consumer. */
|
|
755
|
+
hydrateSpawnConfig?(config: RunnerSpawnConfig): Promise<RunnerSpawnConfig>;
|
|
756
|
+
buildSpawnArgs(config: RunnerSpawnConfig, providerConfig: ProviderConfig): SpawnArgs;
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
// #552 — the strictest base. Beyond the isolated provider home that every
|
|
760
|
+
// non-host base already gets (fresh CLAUDE_CONFIG_DIR / CODEX_HOME, which drops
|
|
761
|
+
// the GLOBAL instruction + host MCP/hooks/plugins cascade), "vanilla" actively
|
|
762
|
+
// suppresses every remaining host customization channel at launch, including the
|
|
763
|
+
// REPO CLAUDE.md/AGENTS.md cascade that lives in the cwd and so survives home
|
|
764
|
+
// isolation. Claude: `--setting-sources "user"` (the --safe-mode pivot — safe-mode
|
|
765
|
+
// blocked even explicit provisioning). Codex: `project_doc_max_bytes=0`.
|
|
766
|
+
export function profileIsVanillaBase(config: Pick<RunnerSpawnConfig, "agentProfile">): boolean {
|
|
767
|
+
return config.agentProfile?.base === "vanilla";
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
export function relayContext(): string {
|
|
771
|
+
return resolveRelayContext({ slug: "relay.context.codex" }).text;
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
// #306 — deliver the FULL message body by default. Only a pathological body beyond this
|
|
775
|
+
// high cap truncates (with a get-message hint) so it can't nuke an agent's context; the 99%
|
|
776
|
+
// case (incl. multi-thousand-char handoffs/reports) arrives whole in one shot, no extra
|
|
777
|
+
// round-trip. The mirror flow (user typing directly) already injects full text — this removes
|
|
778
|
+
// the asymmetry where agent↔agent + attachment-bearing messages were second-class.
|
|
779
|
+
export const DEFAULT_PROVIDER_MESSAGE_BODY_MAX_CHARS = 24_000;
|
|
780
|
+
|
|
781
|
+
// Resolve the delivered-body cap. Deployment-dependent (the right ceiling tracks the host's
|
|
782
|
+
// context budget), so it's overridable via env — set on the orchestrator/host that spawns runners.
|
|
783
|
+
export function providerMessageBodyMaxChars(): number {
|
|
784
|
+
const raw = messageBodyMaxCharsFromEnv();
|
|
785
|
+
if (raw !== undefined) {
|
|
786
|
+
const parsed = Number.parseInt(raw.trim(), 10);
|
|
787
|
+
if (Number.isFinite(parsed) && parsed > 0) return parsed;
|
|
788
|
+
}
|
|
789
|
+
return DEFAULT_PROVIDER_MESSAGE_BODY_MAX_CHARS;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
// #1935 — the Claude Code monitor surfaces each delivered event with a HARD cap on the content that
|
|
793
|
+
// reaches the agent's context; beyond it the harness truncates the event and spills the tail to an
|
|
794
|
+
// output file the agent must re-read (paying for the message ~twice, both copies persisting in
|
|
795
|
+
// context). Two independent bounds, measured 2026-08-02 against the live harness:
|
|
796
|
+
// - per delivered event total ≈ 3000 chars
|
|
797
|
+
// - per single line ≈ 500 chars
|
|
798
|
+
// We keep a safety margin below each (a delivery near the edge should still land whole) and allow a
|
|
799
|
+
// per-deployment override, since the true ceiling tracks the host's harness build. Delivery
|
|
800
|
+
// composition consults these to choose fits-in-full vs emit-a-minimal-stub (see claude-delivery.ts).
|
|
801
|
+
export const DEFAULT_MONITOR_DELIVERY_MAX_CHARS = 2_800;
|
|
802
|
+
export const DEFAULT_MONITOR_DELIVERY_LINE_MAX_CHARS = 480;
|
|
803
|
+
|
|
804
|
+
function resolvePositiveIntEnv(raw: string | undefined, fallback: number): number {
|
|
805
|
+
if (raw !== undefined) {
|
|
806
|
+
const parsed = Number.parseInt(raw.trim(), 10);
|
|
807
|
+
if (Number.isFinite(parsed) && parsed > 0) return parsed;
|
|
808
|
+
}
|
|
809
|
+
return fallback;
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
export function monitorDeliveryMaxChars(): number {
|
|
813
|
+
return resolvePositiveIntEnv(monitorDeliveryMaxCharsFromEnv(), DEFAULT_MONITOR_DELIVERY_MAX_CHARS);
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
export function monitorDeliveryLineMaxChars(): number {
|
|
817
|
+
return resolvePositiveIntEnv(monitorDeliveryLineMaxCharsFromEnv(), DEFAULT_MONITOR_DELIVERY_LINE_MAX_CHARS);
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
// A composed monitor delivery reaches the agent whole iff its total length (plus `reserved` — any
|
|
821
|
+
// content already emitted into the SAME batched event, e.g. the once-per-session context block on
|
|
822
|
+
// first delivery) stays within the per-event cap AND no single line exceeds the per-line cap.
|
|
823
|
+
// Either breach means the harness truncates and forces a re-fetch, so the caller should emit a
|
|
824
|
+
// minimal stub instead of a large truncated preview.
|
|
825
|
+
export function fitsMonitorDelivery(
|
|
826
|
+
text: string,
|
|
827
|
+
options: { reserved?: number; maxChars?: number; lineMaxChars?: number } = {},
|
|
828
|
+
): boolean {
|
|
829
|
+
const maxChars = options.maxChars ?? monitorDeliveryMaxChars();
|
|
830
|
+
const lineMaxChars = options.lineMaxChars ?? monitorDeliveryLineMaxChars();
|
|
831
|
+
if (text.length + (options.reserved ?? 0) > maxChars) return false;
|
|
832
|
+
for (const line of text.split("\n")) {
|
|
833
|
+
if (line.length > lineMaxChars) return false;
|
|
834
|
+
}
|
|
835
|
+
return true;
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
export interface DeliveredBodyPreview {
|
|
839
|
+
body: string;
|
|
840
|
+
truncated: boolean;
|
|
841
|
+
/** Retrieval-guidance lines (empty when not truncated). Call sites may append provider extras. */
|
|
842
|
+
guidance: string[];
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
// #1058 — one home for the delivered-body cap. Head-only truncation silently ate the TAIL, which is
|
|
846
|
+
// exactly where a report-up final puts its verdict / SHIP recommendation. Preserve BOTH ends: keep a
|
|
847
|
+
// head slice for opening context and a tail slice for the conclusion, eliding the middle and pointing
|
|
848
|
+
// at the untrimmed body. The tail is favored (it holds the verdict). Slices snap to whitespace so we
|
|
849
|
+
// don't deliver a half-word at either seam. Grep before adding another truncation site — this is it.
|
|
850
|
+
export function previewDeliveredBody(
|
|
851
|
+
rawBody: string,
|
|
852
|
+
messageId: number,
|
|
853
|
+
maxChars: number = providerMessageBodyMaxChars(),
|
|
854
|
+
): DeliveredBodyPreview {
|
|
855
|
+
if (rawBody.length <= maxChars) return { body: rawBody, truncated: false, guidance: [] };
|
|
856
|
+
const fetchLines = [
|
|
857
|
+
`Read full: agent-relay get-message ${messageId}`,
|
|
858
|
+
`Body only: agent-relay get-message ${messageId} --body`,
|
|
859
|
+
];
|
|
860
|
+
const marker = (elided: number) => `[… ${elided} chars elided from the middle — full report: relay_get_message #${messageId} …]`;
|
|
861
|
+
// Reserve room for the marker and its two blank-line joins; upper-bound the marker length by using
|
|
862
|
+
// the (always-larger) full body length so the reserved budget can never underflow the real marker.
|
|
863
|
+
const budget = maxChars - marker(rawBody.length).length - 4;
|
|
864
|
+
if (budget < 200) {
|
|
865
|
+
// Cap too small to keep a useful head — front-truncate, preserving the tail/verdict whole.
|
|
866
|
+
const tail = rawBody.slice(rawBody.length - maxChars).replace(/^\S*\s+/, "").trimStart();
|
|
867
|
+
return {
|
|
868
|
+
body: tail,
|
|
869
|
+
truncated: true,
|
|
870
|
+
guidance: [`[truncated: showing last ${tail.length} of ${rawBody.length} chars — head trimmed, tail/verdict preserved]`, ...fetchLines],
|
|
871
|
+
};
|
|
872
|
+
}
|
|
873
|
+
const headChars = Math.floor(budget * 0.35);
|
|
874
|
+
const tailChars = budget - headChars;
|
|
875
|
+
const head = rawBody.slice(0, headChars).replace(/\s+\S*$/, "").trimEnd();
|
|
876
|
+
const tail = rawBody.slice(rawBody.length - tailChars).replace(/^\S*\s+/, "").trimStart();
|
|
877
|
+
const elided = rawBody.length - head.length - tail.length;
|
|
878
|
+
return {
|
|
879
|
+
body: `${head}\n\n${marker(elided)}\n\n${tail}`,
|
|
880
|
+
truncated: true,
|
|
881
|
+
guidance: [`[truncated: showing first ${head.length} + last ${tail.length} of ${rawBody.length} chars — tail/verdict preserved]`, ...fetchLines],
|
|
882
|
+
};
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
function attachmentRefs(message: Message): Record<string, unknown>[] {
|
|
886
|
+
const payloadRefs = message.payload?.attachments;
|
|
887
|
+
const topLevelRefs = (message as Message & { attachments?: unknown }).attachments;
|
|
888
|
+
const refs = Array.isArray(payloadRefs) ? payloadRefs : Array.isArray(topLevelRefs) ? topLevelRefs : [];
|
|
889
|
+
return refs.filter(isRecord);
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
function attachmentLabel(ref: Record<string, unknown>): string {
|
|
893
|
+
const parts = [
|
|
894
|
+
typeof ref.kind === "string" ? ref.kind : undefined,
|
|
895
|
+
typeof ref.role === "string" ? ref.role : undefined,
|
|
896
|
+
typeof ref.title === "string" ? `"${ref.title}"` : undefined,
|
|
897
|
+
].filter(Boolean);
|
|
898
|
+
return parts.length ? ` (${parts.join(", ")})` : "";
|
|
899
|
+
}
|
|
900
|
+
|
|
901
|
+
function attachmentCacheMetadata(ref: Record<string, unknown>): Record<string, unknown> | undefined {
|
|
902
|
+
const metadata = isRecord(ref.metadata) ? ref.metadata : undefined;
|
|
903
|
+
const agentRelay = metadata && isRecord(metadata.agentRelay) ? metadata.agentRelay : undefined;
|
|
904
|
+
return agentRelay;
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
export function isMemoryInjection(message: Message): boolean {
|
|
908
|
+
return isRecord(message.payload) && message.payload.memoryInjection === true;
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
export function isSelfResumeInjection(message: Message): boolean {
|
|
912
|
+
return isRecord(message.payload) && message.payload.resumeInjection === true;
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
export function isReactionNotification(message: Message): boolean {
|
|
916
|
+
const event = isRecord(message.payload?.event) ? message.payload.event : undefined;
|
|
917
|
+
return message.payload?.reactionNotification === true || event?.type === "message.reaction";
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
export function isPersistedRelayMessage(message: Message): boolean {
|
|
921
|
+
return Number.isSafeInteger(message.id) && message.id > 0;
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
// #283 — one-line nudge that replaces the reply-scaffold footer for notification-class
|
|
925
|
+
// (replyExpected:false) messages. Deliberately tiny so a bloated context can't drown the
|
|
926
|
+
// no-reply rule established at session start. Shared with the Claude delivery path.
|
|
927
|
+
export const NOTIFICATION_NUDGE = "↪ Notification — no reply needed.";
|
|
928
|
+
|
|
929
|
+
// A notification is a persisted message the server marked replyExpected:false.
|
|
930
|
+
export function isNotificationMessage(message: Message): boolean {
|
|
931
|
+
return isPersistedRelayMessage(message) && message.replyExpected === false;
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
export function isSpawnObligationMessage(message: Message): boolean {
|
|
935
|
+
return isRecord(message.payload) && message.payload.source === "spawn-obligation";
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
export function latestReplyableMessage(messages: Message[]): Message | undefined {
|
|
939
|
+
return messages
|
|
940
|
+
.filter((message) => isPersistedRelayMessage(message) && !isMemoryInjection(message) && !isReactionNotification(message) && !isSpawnObligationMessage(message) && message.replyExpected !== false)
|
|
941
|
+
.at(-1);
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
export function dedupePersistedMessages(messages: Message[]): Message[] {
|
|
945
|
+
const seen = new Set<number>();
|
|
946
|
+
return messages.filter((message) => {
|
|
947
|
+
if (!isPersistedRelayMessage(message)) return true;
|
|
948
|
+
if (seen.has(message.id)) return false;
|
|
949
|
+
seen.add(message.id);
|
|
950
|
+
return true;
|
|
951
|
+
});
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
/** A human wrote it: a human address, or a prompt parked on a human's behalf (#3415). */
|
|
955
|
+
export function isHumanSenderMessage(message: Message): boolean {
|
|
956
|
+
return isHumanAgentId(heldForSender(message) ?? message.from);
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
export function providerSenderLabel(message: Message): string {
|
|
960
|
+
const heldFor = heldForSender(message);
|
|
961
|
+
if (heldFor) return isHumanAgentId(heldFor) ? "human user" : heldFor;
|
|
962
|
+
if (isHumanAgentId(message.from)) return "human user";
|
|
963
|
+
const source = isRecord(message.payload?.source) ? message.payload.source : undefined;
|
|
964
|
+
const isHumanChannel = Boolean(source && (
|
|
965
|
+
isRecord(source.telegram) ||
|
|
966
|
+
isRecord(source.slack) ||
|
|
967
|
+
isRecord(source.discord)
|
|
968
|
+
));
|
|
969
|
+
return isHumanChannel ? `human user via ${message.from}` : message.from;
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
/** `imagePaths`: cached attachment paths the prompt text lists (#2664). */
|
|
973
|
+
export interface PromptOfferOptions { readyTimeoutMs?: number; isInitial?: boolean; imagePaths?: string[]; inputObserver?: ProviderInputObserver }
|
|
974
|
+
|
|
975
|
+
/** A parked prompt's attachment paths, carried on its inbox row so the redelivery keeps them (#2664). */
|
|
976
|
+
export const HELD_PROMPT_IMAGE_PATHS = "heldPromptImagePaths";
|
|
977
|
+
|
|
978
|
+
/** Local cache paths of the messages' attachments, as providerAttachmentText lists them. */
|
|
979
|
+
export function providerAttachmentLocalPaths(messages: Message[]): string[] {
|
|
980
|
+
return messages.flatMap((message) => {
|
|
981
|
+
const held = isRecord(message.payload) ? message.payload[HELD_PROMPT_IMAGE_PATHS] : undefined;
|
|
982
|
+
return [...attachmentRefs(message).flatMap((ref) => {
|
|
983
|
+
const localPath = attachmentCacheMetadata(ref)?.localPath;
|
|
984
|
+
return typeof localPath === "string" ? [localPath] : [];
|
|
985
|
+
}), ...(Array.isArray(held) ? held.filter((path): path is string => typeof path === "string") : [])];
|
|
986
|
+
});
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
export function providerAttachmentText(message: Message): string | undefined {
|
|
990
|
+
const refs = attachmentRefs(message);
|
|
991
|
+
if (!refs.length) return undefined;
|
|
992
|
+
const refLines = refs.flatMap((ref) => {
|
|
993
|
+
const artifactId = typeof ref.artifactId === "string" ? ref.artifactId : "unknown-artifact";
|
|
994
|
+
const source = isRecord(ref.ref)
|
|
995
|
+
? [
|
|
996
|
+
typeof ref.ref.provider === "string" ? ref.ref.provider : undefined,
|
|
997
|
+
typeof ref.ref.id === "string" ? ref.ref.id : undefined,
|
|
998
|
+
].filter(Boolean).join(":")
|
|
999
|
+
: "";
|
|
1000
|
+
const cache = attachmentCacheMetadata(ref);
|
|
1001
|
+
const localPath = typeof cache?.localPath === "string" ? cache.localPath : undefined;
|
|
1002
|
+
const cacheError = typeof cache?.cacheError === "string" ? cache.cacheError : undefined;
|
|
1003
|
+
return [
|
|
1004
|
+
`- ${artifactId}${attachmentLabel(ref)}${source ? ` source=${source}` : ""}`,
|
|
1005
|
+
...(localPath ? [` local: ${localPath}`] : []),
|
|
1006
|
+
...(cacheError ? [` cache error: ${cacheError}`] : []),
|
|
1007
|
+
];
|
|
1008
|
+
});
|
|
1009
|
+
const hasLocalPaths = refs.some((ref) => typeof attachmentCacheMetadata(ref)?.localPath === "string");
|
|
1010
|
+
const canFetchMessage = isPersistedRelayMessage(message);
|
|
1011
|
+
const guidance = !canFetchMessage
|
|
1012
|
+
? []
|
|
1013
|
+
: hasLocalPaths
|
|
1014
|
+
? [
|
|
1015
|
+
"Use the local path above when inspecting the attachment.",
|
|
1016
|
+
`Read attachment details: agent-relay get-message ${message.id} --json`,
|
|
1017
|
+
]
|
|
1018
|
+
: [
|
|
1019
|
+
`Read attachment details: agent-relay get-message ${message.id} --json`,
|
|
1020
|
+
`Fetch content: curl -fsS -H "X-Agent-Relay-Token: $AGENT_RELAY_TOKEN" "$AGENT_RELAY_URL/api/artifacts/<artifactId>/content" -o <filename>`,
|
|
1021
|
+
];
|
|
1022
|
+
return [
|
|
1023
|
+
"Attachments:",
|
|
1024
|
+
...refLines,
|
|
1025
|
+
...guidance,
|
|
1026
|
+
].join("\n");
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
export function providerMessageText(messages: Message[]): string {
|
|
1030
|
+
const uniqueMessages = dedupePersistedMessages(messages);
|
|
1031
|
+
const maxChars = providerMessageBodyMaxChars();
|
|
1032
|
+
const sections = uniqueMessages
|
|
1033
|
+
.map((message) => {
|
|
1034
|
+
const subject = message.subject ? `Subject: ${message.subject}\n` : "";
|
|
1035
|
+
const isMemoryContext = isMemoryInjection(message);
|
|
1036
|
+
const canReferenceMessage = isPersistedRelayMessage(message) && !isMemoryContext && !isReactionNotification(message);
|
|
1037
|
+
const preview = canReferenceMessage
|
|
1038
|
+
? previewDeliveredBody(message.body, message.id, maxChars)
|
|
1039
|
+
: { body: message.body, truncated: false, guidance: [] };
|
|
1040
|
+
const truncationGuidance = preview.truncated
|
|
1041
|
+
? preview.guidance.join("\n")
|
|
1042
|
+
: undefined;
|
|
1043
|
+
if (isMemoryContext) {
|
|
1044
|
+
return [
|
|
1045
|
+
`[agent-relay ${isSelfResumeInjection(message) ? "self-resume continuation" : "context"} from ${message.from}]`,
|
|
1046
|
+
providerAttachmentText(message),
|
|
1047
|
+
`${subject}${preview.body}`,
|
|
1048
|
+
].join("\n");
|
|
1049
|
+
}
|
|
1050
|
+
return [
|
|
1051
|
+
receivesTurnResponseAutomatically(message.from) ? undefined : `[relay message #${message.id} from ${providerSenderLabel(message)}]`,
|
|
1052
|
+
truncationGuidance,
|
|
1053
|
+
providerAttachmentText(message),
|
|
1054
|
+
`${subject}${preview.body}`,
|
|
1055
|
+
].filter(Boolean).join("\n");
|
|
1056
|
+
});
|
|
1057
|
+
if (uniqueMessages.length > 0 && uniqueMessages.every(message => isNotificationMessage(message) && !receivesTurnResponseAutomatically(message.from))) {
|
|
1058
|
+
sections.push(NOTIFICATION_NUDGE);
|
|
1059
|
+
}
|
|
1060
|
+
return sections.join("\n\n");
|
|
1061
|
+
}
|