@humwick/server 0.0.0-stage → 0.130.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLA.md +66 -0
- package/CONTRIBUTING.md +144 -0
- package/LICENSE +167 -0
- package/README.md +511 -2
- package/SECURITY.md +67 -0
- package/THIRD_PARTY_NOTICES.md +144 -0
- package/bundled/prompts/README.md +10 -0
- package/bundled/prompts/context.advisory.compact.md +1 -0
- package/bundled/prompts/context.advisory.warn.md +1 -0
- package/bundled/prompts/continuation.envelope.md +18 -0
- package/bundled/prompts/manifest.json +838 -0
- package/bundled/prompts/memory.capture.boundary.post.md +1 -0
- package/bundled/prompts/memory.capture.boundary.pre.md +1 -0
- package/bundled/prompts/memory.charter.md +3 -0
- package/bundled/prompts/memory.native-off.md +0 -0
- package/bundled/prompts/notify.agent.exited.md +1 -0
- package/bundled/prompts/notify.agent.never-ready.md +1 -0
- package/bundled/prompts/notify.agent.ready.md +1 -0
- package/bundled/prompts/notify.automation.budget-warning.md +1 -0
- package/bundled/prompts/notify.land.failure.md +1 -0
- package/bundled/prompts/notify.land.steward-taken.coordinator.md +1 -0
- package/bundled/prompts/notify.land.steward-taken.md +1 -0
- package/bundled/prompts/notify.land.success.md +1 -0
- package/bundled/prompts/notify.routing.policy-changed.md +2 -0
- package/bundled/prompts/notify.spawn.failed.md +1 -0
- package/bundled/prompts/notify.spawn.queued.md +1 -0
- package/bundled/prompts/notify.spawn.recovered.md +1 -0
- package/bundled/prompts/notify.spawn.unconfirmed.md +1 -0
- package/bundled/prompts/profile.coordinator.charter.md +17 -0
- package/bundled/prompts/profile.debugger.system.md +12 -0
- package/bundled/prompts/profile.device-qa.system.md +10 -0
- package/bundled/prompts/profile.image-gen.append.0.md +2 -0
- package/bundled/prompts/profile.image-gen.system.md +4 -0
- package/bundled/prompts/profile.ops-assistant.brief.md +4 -0
- package/bundled/prompts/profile.probe.system.md +5 -0
- package/bundled/prompts/profile.qa.system.md +10 -0
- package/bundled/prompts/profile.sec-ops.system.md +14 -0
- package/bundled/prompts/profile.social-media.system.md +7 -0
- package/bundled/prompts/profile.software-design.system.md +26 -0
- package/bundled/prompts/profile.sub-coordinator.charter.md +2 -0
- package/bundled/prompts/profile.worker-gui.system.md +7 -0
- package/bundled/prompts/profile.worker.system.md +2 -0
- package/bundled/prompts/relay.agent-core.delivery.md +13 -0
- package/bundled/prompts/relay.agent-core.engineering.md +13 -0
- package/bundled/prompts/relay.agent-core.md +22 -0
- package/bundled/prompts/relay.context.claude.md +1 -0
- package/bundled/prompts/relay.context.claude.readonly.md +3 -0
- package/bundled/prompts/relay.context.codex.md +1 -0
- package/bundled/prompts/relay.context.opencode.md +1 -0
- package/bundled/prompts/relay.manual.claude.md +8 -0
- package/bundled/prompts/relay.search.fff.md +1 -0
- package/bundled/prompts/relay.temp-dir.md +1 -0
- package/bundled/prompts/relay.web.brave.md +1 -0
- package/bundled/prompts/relay.web.fetch.md +1 -0
- package/bundled/prompts/skill.device-lane.md +20 -0
- package/bundled/prompts/skill.security-code-review.md +10 -0
- package/bundled/prompts/skill.security-hardening.md +10 -0
- package/bundled/prompts/skill.security-host-audit.md +11 -0
- package/bundled/prompts/spawn.primer.md +6 -0
- package/bundled/prompts/spawn.reportup.child.md +3 -0
- package/bundled/prompts/spawn.reportup.coordinator.md +2 -0
- package/bundled/prompts/spawn.reportup.workflow-step.md +4 -0
- package/bundled/prompts/spawn.validation.delivery.md +1 -0
- package/bundled/prompts/spawn.validation.iterate.generic.md +1 -0
- package/bundled/prompts/spawn.validation.iterate.imperative.md +1 -0
- package/bundled/prompts/spawn.validation.landgates.header.md +1 -0
- package/bundled/prompts/steward.merge-stall.md +1 -0
- package/bundled/prompts/steward.prompt.md +20 -0
- package/bundled/prompts/steward.wake.md +1 -0
- package/bundled/prompts/task.claim.instruction.md +1 -0
- package/bundled/prompts/task.hydration.md +23 -0
- package/bundled/prompts/user.response.brief.md +1 -0
- package/bundled/prompts/user.response.normal.md +1 -0
- package/bundled/prompts/user.style.neutral.md +1 -0
- package/bundled/prompts/user.style.warm.md +1 -0
- package/bundled/prompts/workspace.deps.command.md +1 -0
- package/bundled/prompts/workspace.deps.none.md +1 -0
- package/bundled/prompts/workspace.deps.symlink.md +1 -0
- package/bundled/prompts/workspace.lifecycle.md +4 -0
- package/bundled/prompts/workspace.mcp.instructions.md +7 -0
- package/bundled/prompts/workspace.phase.abandoned.headline.md +1 -0
- package/bundled/prompts/workspace.phase.abandoned.hint.md +1 -0
- package/bundled/prompts/workspace.phase.active.headline.md +1 -0
- package/bundled/prompts/workspace.phase.active.hint.md +1 -0
- package/bundled/prompts/workspace.phase.conflict.headline.md +1 -0
- package/bundled/prompts/workspace.phase.conflict.hint.md +1 -0
- package/bundled/prompts/workspace.phase.merge-planned.headline.md +1 -0
- package/bundled/prompts/workspace.phase.merge-planned.hint.md +1 -0
- package/bundled/prompts/workspace.phase.merged.headline.md +1 -0
- package/bundled/prompts/workspace.phase.merged.hint.md +1 -0
- package/bundled/prompts/workspace.phase.ready.headline.md +1 -0
- package/bundled/prompts/workspace.phase.ready.hint.md +1 -0
- package/bundled/prompts/workspace.ready.contract.md +6 -0
- package/bundled/prompts/workspace.symlinks.md +1 -0
- package/bundled/roles/builder.md +18 -0
- package/bundled/roles/design-reviewer.md +13 -0
- package/bundled/roles/designer.md +11 -0
- package/bundled/roles/plan-auditor.md +29 -0
- package/bundled/roles/reviewer.md +36 -0
- package/bundled/roles/slice-qa.md +13 -0
- package/bundled/roles/verifier.md +13 -0
- package/bundled/skills/agent-browser/SKILL.md +72 -0
- package/bundled/skills/test-audit/SKILL.md +75 -0
- package/bundled/workflows/build-review.yaml +8 -0
- package/bundled/workflows/design-review.yaml +60 -0
- package/bundled/workflows/plan-conformance.yaml +5 -0
- package/bundled/workflows/slice-proof.yaml +85 -0
- package/bundled/workflows/verify-deployed.yaml +140 -0
- package/docs/guides/sub-coordinators.md +114 -0
- package/docs/guides/tools-administration.md +84 -0
- package/docs/guides/tools-agents.md +137 -0
- package/docs/guides/tools-coordination.md +228 -0
- package/docs/guides/tools-execution.md +48 -0
- package/docs/guides/tools-issues.md +69 -0
- package/docs/guides/tools-memory.md +150 -0
- package/docs/guides/tools-messages.md +192 -0
- package/docs/guides/tools-operations.md +133 -0
- package/docs/guides/tools-tasks.md +235 -0
- package/docs/guides/workflows.md +324 -0
- package/docs/license-faq.md +37 -0
- package/docs/openapi.json +18531 -0
- package/examples/integrations/github-issue.ts +48 -0
- package/examples/integrations/ops-alert.sh +27 -0
- package/examples/integrations/prometheus-alertmanager.ts +55 -0
- package/examples/integrations/support-ticket.sh +28 -0
- package/node_modules/@humwick/kernel/LICENSE +167 -0
- package/node_modules/@humwick/kernel/async-entity-persistence.ts +344 -0
- package/node_modules/@humwick/kernel/async-event-log.ts +107 -0
- package/node_modules/@humwick/kernel/automations.pilot.ts +147 -0
- package/node_modules/@humwick/kernel/config.ts +111 -0
- package/node_modules/@humwick/kernel/contract.ts +572 -0
- package/node_modules/@humwick/kernel/control-authz.ts +281 -0
- package/node_modules/@humwick/kernel/control.ts +645 -0
- package/node_modules/@humwick/kernel/effects.ts +493 -0
- package/node_modules/@humwick/kernel/event-log.ts +319 -0
- package/node_modules/@humwick/kernel/http-transport.ts +384 -0
- package/node_modules/@humwick/kernel/identity-grammar.ts +20 -0
- package/node_modules/@humwick/kernel/identity.ts +248 -0
- package/node_modules/@humwick/kernel/index.ts +28 -0
- package/node_modules/@humwick/kernel/kernel-persistence.ts +181 -0
- package/node_modules/@humwick/kernel/landing-incident.ts +306 -0
- package/node_modules/@humwick/kernel/landing.ts +953 -0
- package/node_modules/@humwick/kernel/manifest-validation.ts +460 -0
- package/node_modules/@humwick/kernel/mcp-transport.ts +109 -0
- package/node_modules/@humwick/kernel/message-authority-chaos-worker.ts +200 -0
- package/node_modules/@humwick/kernel/message-authority.ts +281 -0
- package/node_modules/@humwick/kernel/module-host.ts +722 -0
- package/node_modules/@humwick/kernel/openapi-init.ts +14 -0
- package/node_modules/@humwick/kernel/package.json +39 -0
- package/node_modules/@humwick/kernel/persistence-schema.ts +248 -0
- package/node_modules/@humwick/kernel/persistence.ts +510 -0
- package/node_modules/@humwick/kernel/registry.ts +60 -0
- package/node_modules/@humwick/kernel/sqlite-kernel-persistence.ts +499 -0
- package/node_modules/@humwick/kernel/sqlite-module-host.ts +87 -0
- package/node_modules/@humwick/kernel/timers-chaos-worker.ts +186 -0
- package/node_modules/@humwick/kernel/timers.pilot.ts +1411 -0
- package/node_modules/@humwick/kernel/workflow-activation.ts +25 -0
- package/node_modules/@humwick/kernel/workflow-backstop.ts +40 -0
- package/node_modules/@humwick/kernel/workflow-cancel-tree.ts +20 -0
- package/node_modules/@humwick/kernel/workflow-chaos-worker.ts +213 -0
- package/node_modules/@humwick/kernel/workflow-composition.ts +231 -0
- package/node_modules/@humwick/kernel/workflow-container.ts +72 -0
- package/node_modules/@humwick/kernel/workflow-control.test-fixture.ts +42 -0
- package/node_modules/@humwick/kernel/workflow-control.ts +178 -0
- package/node_modules/@humwick/kernel/workflow-definition.ts +507 -0
- package/node_modules/@humwick/kernel/workflow-dispatch.ts +60 -0
- package/node_modules/@humwick/kernel/workflow-foreach.ts +167 -0
- package/node_modules/@humwick/kernel/workflow-journal-codec.ts +339 -0
- package/node_modules/@humwick/kernel/workflow-journal.ts +922 -0
- package/node_modules/@humwick/kernel/workflow-lane.ts +48 -0
- package/node_modules/@humwick/kernel/workflow-lease-owner.ts +60 -0
- package/node_modules/@humwick/kernel/workflow-recovery.test-fixture.ts +19 -0
- package/node_modules/@humwick/kernel/workflow-runtime.ts +938 -0
- package/node_modules/@humwick/kernel/workflow-script.ts +11 -0
- package/node_modules/@humwick/kernel/workflow-state.ts +299 -0
- package/node_modules/@humwick/kernel/workflow-step-commit.ts +195 -0
- package/node_modules/@humwick/kernel/workflow-transitions.ts +317 -0
- package/node_modules/@humwick/kernel/workflow-values.ts +153 -0
- package/node_modules/@humwick/kernel/workflow.pilot.ts +376 -0
- package/node_modules/@humwick/offload/LICENSE +167 -0
- package/node_modules/@humwick/offload/README.md +57 -0
- package/node_modules/@humwick/offload/dist/async-runner.d.ts +18 -0
- package/node_modules/@humwick/offload/dist/async-runner.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/async-runner.js +158 -0
- package/node_modules/@humwick/offload/dist/async-runner.js.map +1 -0
- package/node_modules/@humwick/offload/dist/envelope.d.ts +25 -0
- package/node_modules/@humwick/offload/dist/envelope.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/envelope.js +80 -0
- package/node_modules/@humwick/offload/dist/envelope.js.map +1 -0
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts +10 -0
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.js +59 -0
- package/node_modules/@humwick/offload/dist/fixtures/worker-task.js.map +1 -0
- package/node_modules/@humwick/offload/dist/index.d.ts +5 -0
- package/node_modules/@humwick/offload/dist/index.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/index.js +5 -0
- package/node_modules/@humwick/offload/dist/index.js.map +1 -0
- package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts +62 -0
- package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/subprocess-runner.js +295 -0
- package/node_modules/@humwick/offload/dist/subprocess-runner.js.map +1 -0
- package/node_modules/@humwick/offload/dist/types.d.ts +111 -0
- package/node_modules/@humwick/offload/dist/types.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/types.js +176 -0
- package/node_modules/@humwick/offload/dist/types.js.map +1 -0
- package/node_modules/@humwick/offload/dist/worker-pool.d.ts +23 -0
- package/node_modules/@humwick/offload/dist/worker-pool.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/worker-pool.js +435 -0
- package/node_modules/@humwick/offload/dist/worker-pool.js.map +1 -0
- package/node_modules/@humwick/offload/dist/worker-runtime.d.ts +2 -0
- package/node_modules/@humwick/offload/dist/worker-runtime.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/worker-runtime.js +27 -0
- package/node_modules/@humwick/offload/dist/worker-runtime.js.map +1 -0
- package/node_modules/@humwick/offload/dist/worker.d.ts +5 -0
- package/node_modules/@humwick/offload/dist/worker.d.ts.map +1 -0
- package/node_modules/@humwick/offload/dist/worker.js +1 -0
- package/node_modules/@humwick/offload/dist/worker.js.map +1 -0
- package/node_modules/@humwick/offload/package.json +42 -0
- package/node_modules/@humwick/offload/src/async-runner.ts +170 -0
- package/node_modules/@humwick/offload/src/envelope.ts +92 -0
- package/node_modules/@humwick/offload/src/fixtures/worker-task.ts +49 -0
- package/node_modules/@humwick/offload/src/index.ts +4 -0
- package/node_modules/@humwick/offload/src/subprocess-runner.ts +334 -0
- package/node_modules/@humwick/offload/src/types.ts +235 -0
- package/node_modules/@humwick/offload/src/worker-pool.ts +463 -0
- package/node_modules/@humwick/offload/src/worker-runtime.ts +32 -0
- package/node_modules/@humwick/offload/src/worker.ts +5 -0
- package/package.json +229 -4
- package/public/assets/MessageBubble-BWpoBjl4.js +4 -0
- package/public/assets/PlanGraphPanel-C0auck3n.js +2 -0
- package/public/assets/TraceView-DBnOx7AQ.js +5 -0
- package/public/assets/VaultDecisionCard-0kp2oNBC.js +2 -0
- package/public/assets/activity-TMzFOdh2.js +2 -0
- package/public/assets/activity-yLztXEBt.js +2 -0
- package/public/assets/agent-lineage-BbJDR1dW.js +2 -0
- package/public/assets/agent-liveness-DyqxfB-t.js +2 -0
- package/public/assets/agent-name-CTZBrSD9.js +2 -0
- package/public/assets/agent-profiles-BpI_jTxq.js +2 -0
- package/public/assets/agent-project-badge-9TqzUUYE.js +2 -0
- package/public/assets/agent-tools-D4n40pn8.js +2 -0
- package/public/assets/agent-type-icon-D6FUarOf.js +2 -0
- package/public/assets/agents-BYDslkJc.js +2 -0
- package/public/assets/analytics-B-XSbEMC.js +910 -0
- package/public/assets/andromeeda-vGVdxbeo.js +2 -0
- package/public/assets/angular-html-BVBpGdXr.js +2 -0
- package/public/assets/angular-ts-BfdufMKP.js +2 -0
- package/public/assets/api-CIIVBtAV.js +10 -0
- package/public/assets/archive-CIuPSvmx.js +2 -0
- package/public/assets/arrow-right-vFsRqG8V.js +2 -0
- package/public/assets/arrow-up-a-z-CKC2RCjD.js +2 -0
- package/public/assets/artifact-viewer-DdWIfV6M.js +2 -0
- package/public/assets/artifacts-DPN1q4pA.js +2 -0
- package/public/assets/artifacts-oBOqks-2.js +2 -0
- package/public/assets/astro-JKRPP03v.js +2 -0
- package/public/assets/aurora-x-CDeNXAV0.js +2 -0
- package/public/assets/automation-4KcRFXEu.js +2 -0
- package/public/assets/ayu-dark-DluEY0Gj.js +2 -0
- package/public/assets/ayu-light-C3h-C4tm.js +2 -0
- package/public/assets/ayu-mirage-Bqwy1Gya.js +2 -0
- package/public/assets/backlog-Cw9xPTCF.js +2 -0
- package/public/assets/badge-DqJRtj_p.js +2 -0
- package/public/assets/bell-_Yzbxxrt.js +2 -0
- package/public/assets/blade-DA8yMPsw.js +2 -0
- package/public/assets/bot-B0NpDNhr.js +2 -0
- package/public/assets/boxes-Cv7Wq3h4.js +2 -0
- package/public/assets/braces-BOks9SsY.js +2 -0
- package/public/assets/brain-CagXMEKE.js +2 -0
- package/public/assets/brain-circuit-CpQeSmp3.js +2 -0
- package/public/assets/bundle-web-ifbJd0t-.js +14 -0
- package/public/assets/busy-health-CTu32MZt.js +2 -0
- package/public/assets/button-Do6Z3vvn.js +2 -0
- package/public/assets/c-Wt1voDr2.js +2 -0
- package/public/assets/calendar-QJjoZ1JU.js +2 -0
- package/public/assets/calendar-clock-CDG_KBhx.js +2 -0
- package/public/assets/card-C4QJ4hCW.js +2 -0
- package/public/assets/catppuccin-frappe-3VR1Za6u.js +2 -0
- package/public/assets/catppuccin-latte-DwIHMF0Q.js +2 -0
- package/public/assets/catppuccin-macchiato-DYnBP6_5.js +2 -0
- package/public/assets/catppuccin-mocha-DYhrFGRu.js +2 -0
- package/public/assets/channels-BiXzg1G9.js +2 -0
- package/public/assets/chart-column-S02ZGfTR.js +2 -0
- package/public/assets/chat-Ctk2qwvA.js +6 -0
- package/public/assets/check-B3M9Ug1P.js +2 -0
- package/public/assets/chevron-down-BoG3JCZn.js +2 -0
- package/public/assets/chevron-right-iljytE0x.js +2 -0
- package/public/assets/chevron-up-Bv3yC5ma.js +2 -0
- package/public/assets/circle-UESLMi2-.js +2 -0
- package/public/assets/circle-alert-CryagaZd.js +2 -0
- package/public/assets/circle-arrow-up-B432r0Kk.js +2 -0
- package/public/assets/circle-check-CkUkN96J.js +2 -0
- package/public/assets/circle-x-CZ0erS7Q.js +2 -0
- package/public/assets/clipboard-list-W2YeUsxT.js +2 -0
- package/public/assets/clock-3-BH47318N.js +2 -0
- package/public/assets/clock-BWPPBh1_.js +2 -0
- package/public/assets/code-preview-Bm1wWqAp.js +3 -0
- package/public/assets/coffee-CThvmt4R.js +2 -0
- package/public/assets/connectors-C36ax4Vw.js +2 -0
- package/public/assets/copy-DFxhHRtV.js +2 -0
- package/public/assets/copy-button-CjOj4HEf.js +2 -0
- package/public/assets/cosmos-Dn8XrlnS.css +1 -0
- package/public/assets/cosmos-Jj9LK2Wf.js +3993 -0
- package/public/assets/cpp-C5WNSHb9.js +2 -0
- package/public/assets/cpu-Dndy84IU.js +2 -0
- package/public/assets/crate-agent-H6S7-B9T.js +2 -0
- package/public/assets/css-DJp_X0uY.js +2 -0
- package/public/assets/csv-Dx-8-gkx.js +2 -0
- package/public/assets/dark-plus-Cs2F2srj.js +2 -0
- package/public/assets/dependency-graph-Cd1E23wa.js +2 -0
- package/public/assets/deploys-Bwfq146q.js +2 -0
- package/public/assets/dialog-uuJ9_geR.js +6 -0
- package/public/assets/display-CfO7rTuF.js +3 -0
- package/public/assets/dist-B2h2GeWt.js +2 -0
- package/public/assets/dist-BeVYU67E.js +2 -0
- package/public/assets/dist-Bmm-RKub.js +2 -0
- package/public/assets/dist-C1xmD7qJ.js +2 -0
- package/public/assets/dist-C2J943E6.js +2 -0
- package/public/assets/dist-C6lpJDoA.js +2 -0
- package/public/assets/dist-CoWL6B0c.js +2 -0
- package/public/assets/dist-D93SmTNC.js +2 -0
- package/public/assets/dist-Da7HrHNA.js +2 -0
- package/public/assets/dist-DeW2Y1R5.js +2 -0
- package/public/assets/dist-DwBdqQ6H.js +2 -0
- package/public/assets/dist-Dz182zaW.js +2 -0
- package/public/assets/dist-H3DLHJ0C.js +2 -0
- package/public/assets/dist-RrY9C4SI.js +2 -0
- package/public/assets/download-KgtpDbt5.js +2 -0
- package/public/assets/dracula-BHWKrbxM.js +2 -0
- package/public/assets/dracula-soft-5eyTD99u.js +2 -0
- package/public/assets/dropdown-menu-BXiNephE.js +2 -0
- package/public/assets/es2015-DMmZ8vbD.js +42 -0
- package/public/assets/esm-ZSuD7QuY.js +2 -0
- package/public/assets/everforest-dark-sB-x3p7T.js +2 -0
- package/public/assets/everforest-light-Df2xbC6M.js +2 -0
- package/public/assets/external-link-BRfu-fHG.js +2 -0
- package/public/assets/eye-BAP6fHrX.js +2 -0
- package/public/assets/file-code-corner-CXhIR1vB.js +2 -0
- package/public/assets/file-pen-Crunre5f.js +2 -0
- package/public/assets/file-text-CKuoMR2U.js +2 -0
- package/public/assets/files-DhhZI2Ih.js +3 -0
- package/public/assets/flag-CnEG9PH-.js +2 -0
- package/public/assets/flame-CxBuz46L.js +2 -0
- package/public/assets/fleet-B_rFEbnL.js +2 -0
- package/public/assets/fleet-metrics-BkHP-P3R.js +2 -0
- package/public/assets/folder-git-2-CJOmTT06.js +2 -0
- package/public/assets/folder-open-CBUCMSlu.js +2 -0
- package/public/assets/folder-tree-BG3Y9nqH.js +2 -0
- package/public/assets/formatted-body-Cm1RrzmN.js +3 -0
- package/public/assets/formatted-body-impl-DQiOuOD1.js +3 -0
- package/public/assets/gauge-BIODY-BQ.js +2 -0
- package/public/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
- package/public/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
- package/public/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
- package/public/assets/git-branch-yxhV0m8E.js +2 -0
- package/public/assets/git-commit-horizontal-DS1pJ_SS.js +2 -0
- package/public/assets/git-merge-C7eIG425.js +2 -0
- package/public/assets/github-dark-C-LZuMrd.js +2 -0
- package/public/assets/github-dark-default-DXG-b-1a.js +2 -0
- package/public/assets/github-dark-dimmed-Bx1FflLF.js +2 -0
- package/public/assets/github-dark-high-contrast-B_tTalzw.js +2 -0
- package/public/assets/github-light-EUqPIrTm.js +2 -0
- package/public/assets/github-light-default-BXViO-2h.js +2 -0
- package/public/assets/github-light-high-contrast-B68TUdTA.js +2 -0
- package/public/assets/globe-Cl5fXtqs.js +2 -0
- package/public/assets/glsl-Dv5r7kPw.js +2 -0
- package/public/assets/graphql-CcFwQwm0.js +2 -0
- package/public/assets/gruvbox-dark-hard-C820rvS2.js +2 -0
- package/public/assets/gruvbox-dark-medium-BPjhmG05.js +2 -0
- package/public/assets/gruvbox-dark-soft-MrdJrrXF.js +2 -0
- package/public/assets/gruvbox-light-hard-BC_s9l72.js +2 -0
- package/public/assets/gruvbox-light-medium-BAWPOn9u.js +2 -0
- package/public/assets/gruvbox-light-soft-BSMLrYjP.js +2 -0
- package/public/assets/haml-Bg4I2hiD.js +2 -0
- package/public/assets/handlebars-DnwbnL5R.js +2 -0
- package/public/assets/hash-CbtKih3g.js +2 -0
- package/public/assets/horizon-CE9ld1lL.js +2 -0
- package/public/assets/horizon-bright-DSNQnXHK.js +2 -0
- package/public/assets/host-mTgRw7xh.js +2 -0
- package/public/assets/host-providers-dialog-CHqwXTov.js +2 -0
- package/public/assets/hourglass-txu4ax6n.js +2 -0
- package/public/assets/houston-CsvMBhTu.js +2 -0
- package/public/assets/html-C8UlPnhE.js +2 -0
- package/public/assets/html-derivative-CY6NRz-J.js +2 -0
- package/public/assets/http-CoW620Fi.js +2 -0
- package/public/assets/humwick-lockup-on-dark-Ds44Y7BK.svg +19 -0
- package/public/assets/humwick-lockup-on-light-ClALZAHt.svg +19 -0
- package/public/assets/hurl-CSSETujw.js +2 -0
- package/public/assets/imba-DsUTQ-LC.js +2 -0
- package/public/assets/inbox-Dfwk3Gt8.js +2 -0
- package/public/assets/index-B7ZerHLY.css +2 -0
- package/public/assets/index-BU3uWo2t.js +15 -0
- package/public/assets/input-CsTB6jIx.js +2 -0
- package/public/assets/insights-fH1EL-qZ.js +2 -0
- package/public/assets/integrations-C5Oix6ng.js +2 -0
- package/public/assets/issue-ref-chip-ODyondIa.js +3 -0
- package/public/assets/java-CGc3VwQr.js +2 -0
- package/public/assets/javascript-CUt1pgmJ.js +2 -0
- package/public/assets/jinja-CD-Z-FLd.js +2 -0
- package/public/assets/jison-imPNup1l.js +2 -0
- package/public/assets/json-qhed-kSA.js +2 -0
- package/public/assets/json5-BR5RXkoi.js +2 -0
- package/public/assets/jsonc-CYpm1nAK.js +2 -0
- package/public/assets/jsonl-CmCQp5Yx.js +2 -0
- package/public/assets/jsx-CY6oMTks.js +2 -0
- package/public/assets/julia-CjffhBEM.js +2 -0
- package/public/assets/kanagawa-dragon-CXtmUGW6.js +2 -0
- package/public/assets/kanagawa-lotus-BN08jTvb.js +2 -0
- package/public/assets/kanagawa-wave-CTweb8Dz.js +2 -0
- package/public/assets/kernel-Bqr0CZGv.js +2 -0
- package/public/assets/key-round-CcSxl5qr.js +2 -0
- package/public/assets/keyboard-DcmEulph.js +2 -0
- package/public/assets/label-BPBzm9FJ.js +2 -0
- package/public/assets/laserwave-C_8bwKvT.js +2 -0
- package/public/assets/layers-DEfClY-v.js +2 -0
- package/public/assets/legacy-storage-carry-C-tBSxRA.js +2 -0
- package/public/assets/less-DVTAwKKz.js +2 -0
- package/public/assets/lib-D7DTGM1F.js +2 -0
- package/public/assets/lib-G-25QXXf.js +30 -0
- package/public/assets/light-plus-DVQuIRkW.js +2 -0
- package/public/assets/lightbulb-RDhZ4p-D.js +2 -0
- package/public/assets/link-2-off-DfRF9Hwb.js +2 -0
- package/public/assets/link-6RR7Hy3-.js +2 -0
- package/public/assets/list-checks-CwnS3hly.js +2 -0
- package/public/assets/list-ordered-D8nCM7rT.js +2 -0
- package/public/assets/list-todo-9qT0fgxZ.js +2 -0
- package/public/assets/loader-circle-BfPd4kOD.js +2 -0
- package/public/assets/lock-BW8MPKw_.js +2 -0
- package/public/assets/log-viewer-Cvfy6PW7.js +4 -0
- package/public/assets/mail-DyaDmwfY.js +2 -0
- package/public/assets/maintenance-D8CDH5wZ.js +2 -0
- package/public/assets/managed-agents-egllbpij.js +4 -0
- package/public/assets/markdown-BYOwaDjH.js +2 -0
- package/public/assets/markdown-preview-CYSFgVgK.js +3 -0
- package/public/assets/markdown-preview-impl-BteVIjX4.js +2 -0
- package/public/assets/marko-DvhNOisQ.js +2 -0
- package/public/assets/material-theme-Bm3Qr25_.js +2 -0
- package/public/assets/material-theme-darker-2IIEA8gg.js +2 -0
- package/public/assets/material-theme-lighter-uhdI0v04.js +2 -0
- package/public/assets/material-theme-ocean-CHQ94UKr.js +2 -0
- package/public/assets/material-theme-palenight-B5W6OYN7.js +2 -0
- package/public/assets/mdc-CazklSAj.js +2 -0
- package/public/assets/mdx-DQZ5AkYe.js +2 -0
- package/public/assets/memory-C8WmXsyr.js +2 -0
- package/public/assets/message-circle-wjztgHBe.js +2 -0
- package/public/assets/message-square-C-1G8dMM.js +2 -0
- package/public/assets/message-square-reply-B9Z4cbQx.js +2 -0
- package/public/assets/messages-BzQdqlO6.js +2 -0
- package/public/assets/messages-square-DVM1ZtcI.js +2 -0
- package/public/assets/min-dark-BSWPekZh.js +2 -0
- package/public/assets/min-light-DDpmG2fV.js +2 -0
- package/public/assets/minimize-2-BkK6XoMP.js +2 -0
- package/public/assets/monokai-CdkpiU2Y.js +2 -0
- package/public/assets/night-owl-DhmEMT88.js +2 -0
- package/public/assets/night-owl-light-eJ-hLW7d.js +2 -0
- package/public/assets/nord-Cb4Vim4T.js +2 -0
- package/public/assets/octagon-x-B5lnUY-8.js +2 -0
- package/public/assets/one-dark-pro-CLwyXe_n.js +2 -0
- package/public/assets/one-light-D7Lr4KcI.js +2 -0
- package/public/assets/orchestrators-B1HxzkNw.js +2 -0
- package/public/assets/overview-DCUnI4Z7.js +2 -0
- package/public/assets/package-open-ckPgcjpv.js +2 -0
- package/public/assets/package-plus-C1AKMjsl.js +2 -0
- package/public/assets/pairs-ftCd2XcD.js +2 -0
- package/public/assets/paperclip-CNpKZKum.js +2 -0
- package/public/assets/pause-DttnHD4c.js +2 -0
- package/public/assets/pencil-B1Hf2V_J.js +2 -0
- package/public/assets/php-CBqsN0ai.js +2 -0
- package/public/assets/pin-DcsKeXxr.js +2 -0
- package/public/assets/plastic-DQwYfKfQ.js +2 -0
- package/public/assets/play-BbT8m7A0.js +2 -0
- package/public/assets/plug-vIyO9_P8.js +2 -0
- package/public/assets/plug-zap-V0wMDJ-G.js +2 -0
- package/public/assets/plus-D5Ek4e2S.js +2 -0
- package/public/assets/poimandres-DRFjx7u4.js +2 -0
- package/public/assets/popover-8w1TWKMG.js +2 -0
- package/public/assets/postcss-BXeXVLqQ.js +2 -0
- package/public/assets/power-6tZOhYPg.js +2 -0
- package/public/assets/preload-helper-HclGiUj8.js +1 -0
- package/public/assets/profile-icon-B2zH8DMH.js +2 -0
- package/public/assets/projects-B_lmcqfO.js +2 -0
- package/public/assets/prompt-settings-Bftq9czX.js +2 -0
- package/public/assets/provider-brand-icon-_67JR7Zh.js +2 -0
- package/public/assets/provider-display-DbLWpP3j.js +2 -0
- package/public/assets/pug-C5hz5LQ7.js +2 -0
- package/public/assets/python-gzcpVVnB.js +2 -0
- package/public/assets/r-Dzep-lPg.js +2 -0
- package/public/assets/radio-Bn0_qc0G.js +2 -0
- package/public/assets/react-dom-DSFxiC7T.js +2 -0
- package/public/assets/red-CJ3rzSJv.js +2 -0
- package/public/assets/refresh-cw-CfpvQcUn.js +2 -0
- package/public/assets/regexp-Omp9DhTb.js +2 -0
- package/public/assets/registry-DWCU5c8q.js +4 -0
- package/public/assets/repeat-hl4p_Klo.js +2 -0
- package/public/assets/rocket-BmO1qSu-.js +2 -0
- package/public/assets/rolldown-runtime-QTnfLwEv.js +1 -0
- package/public/assets/rose-pine-BthvhNj6.js +2 -0
- package/public/assets/rose-pine-dawn-Dg85fqjY.js +2 -0
- package/public/assets/rose-pine-moon-hon4tzzS.js +2 -0
- package/public/assets/rotate-ccw-CtD77qkX.js +2 -0
- package/public/assets/rotate-cw-FPtkDewA.js +2 -0
- package/public/assets/run-card-CO_bguQf.js +2 -0
- package/public/assets/sass-DXrisJhu.js +2 -0
- package/public/assets/save-B_PGqSm4.js +2 -0
- package/public/assets/scroll-area-CIN4KQse.js +2 -0
- package/public/assets/scss-DdSxiZKl.js +2 -0
- package/public/assets/search-DjzbnTbf.js +2 -0
- package/public/assets/secrets-C7GIUATz.js +2 -0
- package/public/assets/security-BUFau5-N.js +3 -0
- package/public/assets/select-DTQMP4Dk.js +2 -0
- package/public/assets/separator-t1cLZErD.js +2 -0
- package/public/assets/server-CZIRjFyY.js +2 -0
- package/public/assets/service-access-settings-C3aujqTG.js +2 -0
- package/public/assets/settings-C6sZ9eBa.js +6 -0
- package/public/assets/shellscript-CLZ0U2zV.js +2 -0
- package/public/assets/shield-CtXNUA0i.js +2 -0
- package/public/assets/shield-alert-B9jCWcKW.js +2 -0
- package/public/assets/shipping-Bu8p1gEw.js +2 -0
- package/public/assets/shipping-stats-BiMTsA4A.js +2 -0
- package/public/assets/slack-dark-DnToyrRv.js +2 -0
- package/public/assets/slack-ochin-B2OO5cIa.js +2 -0
- package/public/assets/smile-plus-q6EQBXHZ.js +2 -0
- package/public/assets/snazzy-light-4G7pJPwS.js +2 -0
- package/public/assets/solarized-dark-DV17i1UV.js +2 -0
- package/public/assets/solarized-light-DSh2HLQt.js +2 -0
- package/public/assets/sparkles-CzwR10ZU.js +2 -0
- package/public/assets/sql-DNssxck8.js +2 -0
- package/public/assets/square-Bqly37YM.js +2 -0
- package/public/assets/stats-V9Z-GxUd.js +2 -0
- package/public/assets/status-dot-CVv0iGHL.js +2 -0
- package/public/assets/stethoscope-SCBrnQQ8.js +2 -0
- package/public/assets/store-BvtFdlGX.js +9 -0
- package/public/assets/stylus-B6D30XZt.js +2 -0
- package/public/assets/svelte-DOdLCIlh.js +2 -0
- package/public/assets/switch-DuCA7mrB.js +2 -0
- package/public/assets/synthwave-84-nFMaYfgc.js +2 -0
- package/public/assets/tabs-jZgNvNHr.js +2 -0
- package/public/assets/task-chip-CYj0mpoL.js +2 -0
- package/public/assets/tasks-BIyeAaPC.js +2 -0
- package/public/assets/tasks-CXU75HRF.js +11 -0
- package/public/assets/teams-BPf976zb.js +2 -0
- package/public/assets/terminal-Bl2u7KxT.js +2 -0
- package/public/assets/terminal-viewer-DE9BOe-8.js +3 -0
- package/public/assets/terminal-viewer-impl-BrP-ENHg.css +1 -0
- package/public/assets/terminal-viewer-impl-D04pjmGh.js +143 -0
- package/public/assets/textarea-hs6Mpyfl.js +2 -0
- package/public/assets/themes-G5j9m1Ji.js +2 -0
- package/public/assets/tokyo-night-oM2G3aXe.js +2 -0
- package/public/assets/trash-2-FbcSq927.js +2 -0
- package/public/assets/triangle-alert-BBNhfgMi.js +2 -0
- package/public/assets/ts-tags-Ca73dJJY.js +2 -0
- package/public/assets/tsx-5Eka4NBX.js +2 -0
- package/public/assets/typescript-DOu2WMV5.js +2 -0
- package/public/assets/use-agent-terminal-B1yR456R.js +2 -0
- package/public/assets/use-decisions-D-S4tpDf.js +2 -0
- package/public/assets/use-project-list-B-T2Bnnn.js +2 -0
- package/public/assets/use-selectors-CnrAk2YP.js +6 -0
- package/public/assets/user-avatar-nBFIcR4M.js +2 -0
- package/public/assets/user-cog-CKcouW1J.js +2 -0
- package/public/assets/user-plus-D9749q73.js +2 -0
- package/public/assets/users-C7B3u9jv.js +2 -0
- package/public/assets/versioned-prompt-editor-Diu8BIaM.js +8 -0
- package/public/assets/vesper-DdrHHSXu.js +2 -0
- package/public/assets/vitesse-black-fwtXNY1n.js +2 -0
- package/public/assets/vitesse-dark-BZCL-v6S.js +2 -0
- package/public/assets/vitesse-light-VbXTXTou.js +2 -0
- package/public/assets/volume-2-XrcRKD9Z.js +2 -0
- package/public/assets/vue-Bfx0ffIq.js +2 -0
- package/public/assets/vue-html-BeluIYX0.js +2 -0
- package/public/assets/vue-vine-DGUAbOCX.js +2 -0
- package/public/assets/warehouse-BanzOanY.js +2 -0
- package/public/assets/wasm-BnjxR4X6.js +2 -0
- package/public/assets/wasm-ByWQv1Qj.js +2 -0
- package/public/assets/waypoints-CIzINtLT.js +2 -0
- package/public/assets/wgsl-BsKzXJz4.js +2 -0
- package/public/assets/wit-DdvCle-K.js +2 -0
- package/public/assets/work-queue-TCjJxeT-.js +2 -0
- package/public/assets/workflow-marker-Cf3Hf2fN.js +2 -0
- package/public/assets/workflows-CXQX20Qj.js +6 -0
- package/public/assets/workspaces-qSYzKYMA.js +3 -0
- package/public/assets/wrench-C7-4CgnY.js +2 -0
- package/public/assets/x-Bge17hWJ.js +2 -0
- package/public/assets/xml-DIqSwXR3.js +2 -0
- package/public/assets/yaml-rwi0_p6S.js +2 -0
- package/public/assets/zap-DGuDTw4w.js +2 -0
- package/public/assets/zoom-in-Bs8Qv8VL.js +2 -0
- package/public/assets/zoomable-image-B3Og53nj.js +2 -0
- package/public/cosmos/audio/README.md +50 -0
- package/public/cosmos/audio/alert.mp3 +0 -0
- package/public/cosmos/audio/ambient-bed.mp3 +0 -0
- package/public/cosmos/audio/comet.mp3 +0 -0
- package/public/cosmos/audio/cross-galaxy.mp3 +0 -0
- package/public/cosmos/audio/deploy.mp3 +0 -0
- package/public/cosmos/audio/galaxy-dissipate.mp3 +0 -0
- package/public/cosmos/audio/galaxy-form.mp3 +0 -0
- package/public/cosmos/audio/land.mp3 +0 -0
- package/public/cosmos/audio/reap.mp3 +0 -0
- package/public/cosmos/audio/spawn.mp3 +0 -0
- package/public/cosmos.html +34 -0
- package/public/favicon.ico +0 -0
- package/public/favicon.svg +10 -0
- package/public/icons/apple-touch-icon.png +0 -0
- package/public/icons/humwick-192.png +0 -0
- package/public/icons/humwick-512.png +0 -0
- package/public/icons/humwick.svg +19 -0
- package/public/index.html +188 -0
- package/public/manifest.webmanifest +45 -0
- package/public/sw.js +160 -0
- package/recipes/code-review.yaml +26 -0
- package/recipes/debug.yaml +20 -0
- package/recipes/feature.yaml +26 -0
- package/recipes/refactor.yaml +20 -0
- package/recipes/test.yaml +20 -0
- package/runner/LICENSE +167 -0
- package/runner/agent-bin/agent-relay-browser +10 -0
- package/runner/agent-bin/humwick +10 -0
- package/runner/hooks/fff-search-redirect/fff-search-redirect.cjs +161 -0
- package/runner/hooks/fff-search-redirect/hooks.json +13 -0
- package/runner/hooks/rg-r-guard/hooks.json +18 -0
- package/runner/hooks/rg-r-guard/rg-r-guard.cjs +144 -0
- package/runner/hooks/web-tools-redirect/hooks.json +13 -0
- package/runner/hooks/web-tools-redirect/web-tools-redirect.cjs +84 -0
- package/runner/plugins/browser/skills/playwright-cli/SKILL.md +53 -0
- package/runner/plugins/claude/.claude-plugin/plugin.json +8 -0
- package/runner/plugins/claude/claude-statusline-probe.cjs +144 -0
- package/runner/plugins/claude/hooks/gate-run-guard.provisioned.mjs +914 -0
- package/runner/plugins/claude/hooks/gate-run-guard.sh +9 -0
- package/runner/plugins/claude/hooks/gate-run-guard.ts +237 -0
- package/runner/plugins/claude/hooks/hooks.json +158 -0
- package/runner/plugins/claude/hooks/kill-guard.provisioned.mjs +7027 -0
- package/runner/plugins/claude/hooks/kill-guard.sh +341 -0
- package/runner/plugins/claude/hooks/kill-guard.ts +337 -0
- package/runner/plugins/claude/hooks/permission-request.sh +22 -0
- package/runner/plugins/claude/hooks/post-compact.sh +10 -0
- package/runner/plugins/claude/hooks/post-tool-use.sh +8 -0
- package/runner/plugins/claude/hooks/pre-compact.sh +12 -0
- package/runner/plugins/claude/hooks/read-only-bash-guard.sh +587 -0
- package/runner/plugins/claude/hooks/relay-status.sh +373 -0
- package/runner/plugins/claude/hooks/session-end.sh +26 -0
- package/runner/plugins/claude/hooks/session-start.sh +31 -0
- package/runner/plugins/claude/hooks/shell-trust.ts +28 -0
- package/runner/plugins/claude/hooks/stop-failure.sh +47 -0
- package/runner/plugins/claude/hooks/stop.sh +48 -0
- package/runner/plugins/claude/hooks/subagent-guard.cjs +26 -0
- package/runner/plugins/claude/hooks/subagent-skill-policy.cjs +160 -0
- package/runner/plugins/claude/hooks/subagent-start.sh +13 -0
- package/runner/plugins/claude/hooks/subagent-stop.sh +19 -0
- package/runner/plugins/claude/hooks/user-prompt-submit.sh +18 -0
- package/runner/plugins/claude/hooks/wait-loop-guard.ts +120 -0
- package/runner/plugins/claude/monitors/monitors.json +7 -0
- package/runner/plugins/claude/monitors/relay-monitor.provisioned.mjs +786 -0
- package/runner/plugins/claude/monitors/relay-monitor.ts +58 -0
- package/runner/plugins/claude/skills/disconnect/SKILL.md +16 -0
- package/runner/plugins/claude/skills/label/SKILL.md +23 -0
- package/runner/plugins/claude/skills/message/SKILL.md +40 -0
- package/runner/plugins/claude/skills/pair/SKILL.md +30 -0
- package/runner/plugins/claude/skills/react/SKILL.md +18 -0
- package/runner/plugins/claude/skills/read-message/SKILL.md +24 -0
- package/runner/plugins/claude/skills/reply/SKILL.md +44 -0
- package/runner/plugins/claude/skills/send-claimable/SKILL.md +39 -0
- package/runner/plugins/claude/skills/slice-first/SKILL.md +32 -0
- package/runner/plugins/claude/skills/slice-first/references/plan-recipe.md +46 -0
- package/runner/plugins/claude/skills/status/SKILL.md +16 -0
- package/runner/plugins/claude/skills/tags/SKILL.md +25 -0
- package/runner/plugins/claude/skills/task/SKILL.md +28 -0
- package/runner/plugins/claude-output-style/.claude-plugin/plugin.json +5 -0
- package/runner/plugins/claude-output-style/output-styles/agent-relay.md +5 -0
- package/runner/plugins/codex/skills/disconnect/SKILL.md +15 -0
- package/runner/plugins/codex/skills/guide/SKILL.md +15 -0
- package/runner/plugins/codex/skills/label/SKILL.md +22 -0
- package/runner/plugins/codex/skills/message/SKILL.md +40 -0
- package/runner/plugins/codex/skills/pair/SKILL.md +29 -0
- package/runner/plugins/codex/skills/react/SKILL.md +17 -0
- package/runner/plugins/codex/skills/read-message/SKILL.md +23 -0
- package/runner/plugins/codex/skills/reply/SKILL.md +44 -0
- package/runner/plugins/codex/skills/send-claimable/SKILL.md +39 -0
- package/runner/plugins/codex/skills/slice-first/SKILL.md +32 -0
- package/runner/plugins/codex/skills/slice-first/references/plan-recipe.md +46 -0
- package/runner/plugins/codex/skills/status/SKILL.md +15 -0
- package/runner/plugins/codex/skills/tags/SKILL.md +24 -0
- package/runner/plugins/codex/skills/task/SKILL.md +28 -0
- package/runner/src/adapter.ts +1061 -0
- package/runner/src/adapters/__fixtures__/codex-app-server.ts +47 -0
- package/runner/src/adapters/claude-api.ts +243 -0
- package/runner/src/adapters/claude-context-command.ts +16 -0
- package/runner/src/adapters/claude-credentials.ts +22 -0
- package/runner/src/adapters/claude-delivery-lanes.ts +28 -0
- package/runner/src/adapters/claude-delivery.ts +166 -0
- package/runner/src/adapters/claude-effort.ts +94 -0
- package/runner/src/adapters/claude-exit.ts +290 -0
- package/runner/src/adapters/claude-headless-mirror.ts +88 -0
- package/runner/src/adapters/claude-headless-refusal.ts +51 -0
- package/runner/src/adapters/claude-headless.ts +617 -0
- package/runner/src/adapters/claude-monitor-delivery-plan.ts +317 -0
- package/runner/src/adapters/claude-permission.ts +243 -0
- package/runner/src/adapters/claude-prompt-gates.ts +269 -0
- package/runner/src/adapters/claude-prompt-hook.ts +145 -0
- package/runner/src/adapters/claude-session-capture.ts +293 -0
- package/runner/src/adapters/claude-session-probe.ts +414 -0
- package/runner/src/adapters/claude-shutdown.ts +190 -0
- package/runner/src/adapters/claude-status-detectors.ts +426 -0
- package/runner/src/adapters/claude-subagents.ts +93 -0
- package/runner/src/adapters/claude-submit-confirmation.ts +287 -0
- package/runner/src/adapters/claude-tmux.ts +548 -0
- package/runner/src/adapters/claude-token-usage-capture.ts +253 -0
- package/runner/src/adapters/claude-tool-policy.ts +165 -0
- package/runner/src/adapters/claude-transcript-tail.ts +193 -0
- package/runner/src/adapters/claude-transcript.ts +812 -0
- package/runner/src/adapters/claude.ts +1097 -0
- package/runner/src/adapters/codex-agent-message-capture.ts +189 -0
- package/runner/src/adapters/codex-app-server.ts +70 -0
- package/runner/src/adapters/codex-client.ts +362 -0
- package/runner/src/adapters/codex-effective-config.ts +87 -0
- package/runner/src/adapters/codex-launch-config.ts +153 -0
- package/runner/src/adapters/codex-rollout-context.ts +272 -0
- package/runner/src/adapters/codex-skill-discovery.ts +18 -0
- package/runner/src/adapters/codex-token-usage-capture.ts +163 -0
- package/runner/src/adapters/codex-tool-output.ts +53 -0
- package/runner/src/adapters/codex-turn-outcome.ts +27 -0
- package/runner/src/adapters/codex-version.ts +64 -0
- package/runner/src/adapters/codex.ts +1442 -0
- package/runner/src/adapters/incremental-file.ts +110 -0
- package/runner/src/adapters/opencode-api.ts +71 -0
- package/runner/src/adapters/opencode-context.ts +277 -0
- package/runner/src/adapters/opencode-model-registry.ts +126 -0
- package/runner/src/adapters/opencode-provider.ts +169 -0
- package/runner/src/adapters/opencode-server-retry.ts +50 -0
- package/runner/src/adapters/opencode-soft-steer.ts +302 -0
- package/runner/src/adapters/opencode-spawn.ts +145 -0
- package/runner/src/adapters/opencode-subscribe.ts +62 -0
- package/runner/src/adapters/opencode-token-usage-capture.ts +187 -0
- package/runner/src/adapters/opencode-tool-events.ts +302 -0
- package/runner/src/adapters/opencode-tools-config.ts +17 -0
- package/runner/src/adapters/opencode.ts +2264 -0
- package/runner/src/adapters/project-shell.ts +80 -0
- package/runner/src/adapters/provider-launch-config.ts +21 -0
- package/runner/src/adapters/provider-quota-harvest.ts +127 -0
- package/runner/src/adapters/service-access.ts +153 -0
- package/runner/src/adapters/tmux-offload.ts +207 -0
- package/runner/src/adapters/tool-summary.ts +214 -0
- package/runner/src/agent-redact.ts +75 -0
- package/runner/src/agent-runner/commands/dispatch.ts +185 -0
- package/runner/src/agent-runner/commands/lifecycle.ts +84 -0
- package/runner/src/agent-runner/commands/prompt.ts +284 -0
- package/runner/src/agent-runner/credentials.ts +208 -0
- package/runner/src/agent-runner/http-liveness.ts +85 -0
- package/runner/src/agent-runner/lifecycle-milestones.ts +207 -0
- package/runner/src/agent-runner/lifecycle-phase.ts +80 -0
- package/runner/src/agent-runner/registration.ts +163 -0
- package/runner/src/agent-runner/runner-context.ts +158 -0
- package/runner/src/agent-runner/session-mirror.ts +278 -0
- package/runner/src/agent-runner/task-claims.ts +116 -0
- package/runner/src/agent-runner/token-usage-coverage.ts +54 -0
- package/runner/src/agent-runner/turn-report.ts +269 -0
- package/runner/src/api-budget-accounting.ts +91 -0
- package/runner/src/area-memory.ts +255 -0
- package/runner/src/artifact-path-materialize.ts +52 -0
- package/runner/src/async-guard.ts +35 -0
- package/runner/src/attachment-cache-sweep.ts +31 -0
- package/runner/src/attachment-cache.ts +195 -0
- package/runner/src/background-script-reconcile.ts +106 -0
- package/runner/src/bounded-log.ts +59 -0
- package/runner/src/bounded-spawn-sync.ts +18 -0
- package/runner/src/busy-reconciler.ts +282 -0
- package/runner/src/claim-tracker.ts +140 -0
- package/runner/src/claude-settings.ts +167 -0
- package/runner/src/claude-workspace-trust.ts +289 -0
- package/runner/src/config.ts +547 -0
- package/runner/src/context-boundary.ts +101 -0
- package/runner/src/context-command.ts +151 -0
- package/runner/src/context-probe-state.ts +6 -0
- package/runner/src/continuation-archive.ts +179 -0
- package/runner/src/control-server.ts +730 -0
- package/runner/src/delivery-policy.ts +9 -0
- package/runner/src/delivery-result.ts +24 -0
- package/runner/src/effort-command.ts +125 -0
- package/runner/src/empty-turn.ts +816 -0
- package/runner/src/free-port.ts +25 -0
- package/runner/src/fs-offload.ts +26 -0
- package/runner/src/gate-run-config.ts +35 -0
- package/runner/src/gate-run-lease-probe.ts +38 -0
- package/runner/src/host-asset-plan.ts +450 -0
- package/runner/src/host-claude-config-worker.ts +34 -0
- package/runner/src/host-sources.ts +40 -0
- package/runner/src/inbox-carrier.ts +7 -0
- package/runner/src/index.ts +386 -0
- package/runner/src/launch-assembly.ts +955 -0
- package/runner/src/liveness.ts +105 -0
- package/runner/src/logger.ts +108 -0
- package/runner/src/mcp-outbox.ts +204 -0
- package/runner/src/mcp-preflight.ts +86 -0
- package/runner/src/mcp-source-selection.ts +54 -0
- package/runner/src/mcp-tool-deferral.ts +35 -0
- package/runner/src/mcp-vault-env.ts +25 -0
- package/runner/src/message-body-config/config.ts +16 -0
- package/runner/src/message-body-config.ts +1 -0
- package/runner/src/mid-turn-delivery.ts +43 -0
- package/runner/src/native-memory-lever.ts +329 -0
- package/runner/src/native-self-resume.ts +244 -0
- package/runner/src/outbox.ts +453 -0
- package/runner/src/park-post.ts +17 -0
- package/runner/src/pending-permission-store.ts +148 -0
- package/runner/src/process-meta.ts +9 -0
- package/runner/src/profile-home.ts +419 -0
- package/runner/src/profile-projection.ts +411 -0
- package/runner/src/project-hooks.ts +65 -0
- package/runner/src/project-instructions.ts +119 -0
- package/runner/src/provider-double.ts +59 -0
- package/runner/src/provider-hold.ts +228 -0
- package/runner/src/provider-home-marker.ts +3 -0
- package/runner/src/provider-home-tombstone.ts +4 -0
- package/runner/src/provider-input-queue.ts +134 -0
- package/runner/src/provider-integration.ts +93 -0
- package/runner/src/provider-processes.ts +17 -0
- package/runner/src/provider-submit-failure.ts +15 -0
- package/runner/src/providers.ts +35 -0
- package/runner/src/provisioning.ts +703 -0
- package/runner/src/question-decision.ts +18 -0
- package/runner/src/quota.ts +22 -0
- package/runner/src/rate-limit.ts +351 -0
- package/runner/src/refused-prompt-store.ts +36 -0
- package/runner/src/relay-injection-events.ts +161 -0
- package/runner/src/relay-instructions.ts +107 -0
- package/runner/src/relay-mcp-proxy.long-turn-e2e.ts +183 -0
- package/runner/src/relay-mcp-proxy.ts +704 -0
- package/runner/src/relay-mcp.ts +583 -0
- package/runner/src/reply-obligation-cache.ts +211 -0
- package/runner/src/response-capture-report.ts +111 -0
- package/runner/src/response-routing.ts +6 -0
- package/runner/src/runner-core.ts +2955 -0
- package/runner/src/runner-exit.ts +12 -0
- package/runner/src/runner-helpers.ts +582 -0
- package/runner/src/runner-insights.ts +105 -0
- package/runner/src/runner-mcp-proxy.ts +46 -0
- package/runner/src/runner-spawn-config.ts +68 -0
- package/runner/src/runner-stale-scratch-sweep.ts +21 -0
- package/runner/src/runner.ts +9 -0
- package/runner/src/runtime-token-file.ts +45 -0
- package/runner/src/runtime-token-remint.ts +56 -0
- package/runner/src/service-access.ts +88 -0
- package/runner/src/session-destroy.ts +27 -0
- package/runner/src/session-insights.ts +118 -0
- package/runner/src/session-scratch.ts +296 -0
- package/runner/src/spawn-input.ts +147 -0
- package/runner/src/startup-config-fetch.ts +48 -0
- package/runner/src/subreaper.ts +113 -0
- package/runner/src/template-resolver.ts +29 -0
- package/runner/src/test-run-dedup.ts +435 -0
- package/runner/src/transcript-context.ts +99 -0
- package/runner/src/transport-errors.ts +48 -0
- package/runner/src/turn-opener.ts +55 -0
- package/runner/src/turn-reconcile-event.ts +88 -0
- package/runner/src/vault-proxy-hop.ts +99 -0
- package/runner/src/version.ts +44 -0
- package/runner/src/web-tool-call-proxy.ts +128 -0
- package/runner/src/web-tools.ts +59 -0
- package/runner/test-support/codex-web-config-proof.ts +149 -0
- package/runner/test-support/effective-launch.ts +189 -0
- package/runner/test-support/native-context-sources.ts +77 -0
- package/runner/test-support/provisioning-context.ts +55 -0
- package/runner/test-support/recorder-double.ts +130 -0
- package/runner/test-support/recording-provider.ts +242 -0
- package/runner/test-support/runner-harness.ts +249 -0
- package/runner/test-support/service-access-fixture.ts +12 -0
- package/scripts/agent-vault/bootstrap.py +87 -0
- package/scripts/agent-vault/install.py +200 -0
- package/scripts/agent-vault/install_refresh.py +98 -0
- package/scripts/agent-vault/refresh.py +116 -0
- package/scripts/agent-vault/refresh_provision.py +109 -0
- package/scripts/agent-vault/refresh_store.py +54 -0
- package/scripts/agent-vault/runtime.py +253 -0
- package/scripts/agent-vault/sec-ops-activation.json +23 -0
- package/scripts/artifact-checkout-gc.ts +51 -0
- package/scripts/cd-config.ts +237 -0
- package/scripts/cd-deploy-debounce.ts +94 -0
- package/scripts/cd-deploy-worktree-gc.ts +235 -0
- package/scripts/cd-fleet-membership.ts +48 -0
- package/scripts/cd-host-epochs.ts +101 -0
- package/scripts/cd-hub-wake.ts +40 -0
- package/scripts/cd-land-boundary.ts +49 -0
- package/scripts/cd-watcher.ts +985 -0
- package/scripts/dashboard-build-marker.ts +71 -0
- package/scripts/fleet-sha-coverage.ts +66 -0
- package/scripts/gate-run-lease.ts +329 -0
- package/scripts/gate-slot +9 -0
- package/scripts/gate-slot-fleet-health.ts +60 -0
- package/scripts/gate.sh +6 -0
- package/scripts/install-bin-shim.cjs +149 -0
- package/scripts/orchestrator-spawn-smoke.ts +398 -0
- package/scripts/provisioning-matrix.ts +72 -0
- package/scripts/release-cd-stamp.ts +146 -0
- package/scripts/release-health.ts +133 -0
- package/scripts/release-report.ts +102 -0
- package/scripts/release-upgrade.ts +1296 -0
- package/scripts/steward-policy-cleanup.ts +73 -0
- package/scripts/wait-for-deploy.ts +43 -0
- package/src/agent-authz.ts +219 -0
- package/src/agent-branch-state.ts +45 -0
- package/src/agent-busy-health.ts +158 -0
- package/src/agent-card-projection.ts +86 -0
- package/src/agent-channel-binding.ts +49 -0
- package/src/agent-command-activity.ts +39 -0
- package/src/agent-core.ts +29 -0
- package/src/agent-death-diagnosis.ts +314 -0
- package/src/agent-drive-arbiter.ts +112 -0
- package/src/agent-exit-alarm.ts +10 -0
- package/src/agent-exit-cleanup-async.ts +69 -0
- package/src/agent-exit-cleanup.ts +99 -0
- package/src/agent-exit-report.ts +28 -0
- package/src/agent-issue-repo.ts +53 -0
- package/src/agent-launch-shape-redaction.ts +72 -0
- package/src/agent-lifecycle-events.ts +428 -0
- package/src/agent-principal.ts +14 -0
- package/src/agent-profile-catalog.ts +188 -0
- package/src/agent-ref.ts +340 -0
- package/src/agent-spawn.ts +45 -0
- package/src/agent-status-events.ts +41 -0
- package/src/agent-system-tags.ts +38 -0
- package/src/artifact-media.ts +34 -0
- package/src/artifact-storage.ts +245 -0
- package/src/artifact-text.ts +31 -0
- package/src/async-deadline.ts +59 -0
- package/src/auth/admin-routes.ts +36 -0
- package/src/auth/index.ts +23 -0
- package/src/auth/login-rate-limiter.ts +153 -0
- package/src/auth/password.ts +142 -0
- package/src/auth/provider.ts +60 -0
- package/src/auth/role-scopes.ts +15 -0
- package/src/auth/session-cookie.ts +35 -0
- package/src/auth/session-refresh.ts +61 -0
- package/src/auth/session.test-fixture.ts +10 -0
- package/src/auth/session.ts +107 -0
- package/src/authority-audit.ts +56 -0
- package/src/authz-meta-keys.ts +64 -0
- package/src/auto-spawn-dispatch.ts +154 -0
- package/src/automations/constants.ts +14 -0
- package/src/automations/cron.ts +129 -0
- package/src/automations/crud.ts +129 -0
- package/src/automations/dispatch.ts +299 -0
- package/src/automations/index.ts +5 -0
- package/src/automations/precheck.ts +124 -0
- package/src/automations/reconcile.ts +314 -0
- package/src/automations/storage.ts +200 -0
- package/src/automations/types.ts +16 -0
- package/src/automations/validation.ts +216 -0
- package/src/automations.ts +1 -0
- package/src/branch-landed.ts +761 -0
- package/src/browser-authz.ts +18 -0
- package/src/browser-config.ts +31 -0
- package/src/bundled-workflows.ts +48 -0
- package/src/bus-outbox-async.ts +16 -0
- package/src/bus-outbox.ts +265 -0
- package/src/bus-resume-commands.ts +18 -0
- package/src/bus.ts +792 -0
- package/src/canonical-repo-root.ts +131 -0
- package/src/cd-deploy-notify.ts +59 -0
- package/src/cd-host-deferrals.ts +23 -0
- package/src/cd-host-lag-notify.ts +36 -0
- package/src/cd-repository.ts +49 -0
- package/src/channel-output-control.ts +43 -0
- package/src/channel-output-validation.ts +11 -0
- package/src/channel-policy-health.ts +20 -0
- package/src/channel-target.ts +40 -0
- package/src/channels-host-service.ts +219 -0
- package/src/ci/bun-test-log.ts +41 -0
- package/src/ci/failed-test-files.ts +52 -0
- package/src/ci/gate-history.ts +66 -0
- package/src/ci/github-actions.ts +145 -0
- package/src/ci/incidents.ts +175 -0
- package/src/ci/index.ts +6 -0
- package/src/ci/job-verdict.ts +27 -0
- package/src/ci/land-boundary-ci.ts +104 -0
- package/src/ci/monitor.ts +528 -0
- package/src/ci/not-triggered.ts +116 -0
- package/src/ci/notifications.ts +234 -0
- package/src/ci/provider.ts +87 -0
- package/src/ci/root-missing.ts +35 -0
- package/src/ci/transition-notify.ts +279 -0
- package/src/ci-monitor.ts +7 -0
- package/src/claude-api-budget-async.ts +11 -0
- package/src/claude-api-budget-config.ts +23 -0
- package/src/claude-api-expiry.ts +70 -0
- package/src/claude-api-overflow.ts +146 -0
- package/src/claude-app/config.ts +13 -0
- package/src/claude-app/oauth-http.ts +127 -0
- package/src/claude-app/oauth-provider.ts +136 -0
- package/src/claude-app/passphrase.ts +14 -0
- package/src/claude-app-auth.ts +65 -0
- package/src/claude-app-gateway.ts +68 -0
- package/src/cli/_shared.ts +136 -0
- package/src/cli/agent-detect.ts +175 -0
- package/src/cli/agent-guide.ts +152 -0
- package/src/cli/agent-keep.ts +37 -0
- package/src/cli/agent-meta.ts +111 -0
- package/src/cli/artifact.ts +154 -0
- package/src/cli/browser.ts +56 -0
- package/src/cli/channel-output.ts +17 -0
- package/src/cli/channels-host.ts +13 -0
- package/src/cli/channels.ts +16 -0
- package/src/cli/claude-api-budget.ts +41 -0
- package/src/cli/context-probe.ts +90 -0
- package/src/cli/credentials.ts +1 -0
- package/src/cli/daemon.ts +125 -0
- package/src/cli/dev.ts +185 -0
- package/src/cli/ephemeral.ts +159 -0
- package/src/cli/hosts.ts +41 -0
- package/src/cli/index.ts +442 -0
- package/src/cli/introspect.ts +74 -0
- package/src/cli/maintenance.ts +24 -0
- package/src/cli/merges.ts +78 -0
- package/src/cli/message.ts +229 -0
- package/src/cli/orchestrator.ts +384 -0
- package/src/cli/pair.ts +135 -0
- package/src/cli/profile.ts +35 -0
- package/src/cli/project.ts +52 -0
- package/src/cli/prompts.ts +23 -0
- package/src/cli/provider-enablement.ts +42 -0
- package/src/cli/provider.ts +230 -0
- package/src/cli/recipe.ts +110 -0
- package/src/cli/reply.ts +130 -0
- package/src/cli/roles.ts +60 -0
- package/src/cli/routing-policy.ts +20 -0
- package/src/cli/run.ts +96 -0
- package/src/cli/secrets-backup.ts +85 -0
- package/src/cli/secrets.ts +55 -0
- package/src/cli/service-access.ts +23 -0
- package/src/cli/setup.ts +57 -0
- package/src/cli/shutdown.ts +16 -0
- package/src/cli/spawn.ts +31 -0
- package/src/cli/state.ts +73 -0
- package/src/cli/steward.ts +58 -0
- package/src/cli/task.ts +151 -0
- package/src/cli/team.ts +18 -0
- package/src/cli/timers.ts +53 -0
- package/src/cli/token.ts +72 -0
- package/src/cli/upgrade.ts +200 -0
- package/src/cli/web-tool-calls.ts +17 -0
- package/src/cli/workflow.ts +46 -0
- package/src/cli/workspace.ts +544 -0
- package/src/cli.ts +4 -0
- package/src/codex-reset-consume.ts +274 -0
- package/src/codex-wham-quota.ts +177 -0
- package/src/command-events.ts +69 -0
- package/src/command-secrets.ts +198 -0
- package/src/command-ttl.ts +63 -0
- package/src/commands-db.ts +1200 -0
- package/src/commands-landing-async.ts +166 -0
- package/src/commands-write.ts +168 -0
- package/src/comment-blocks.ts +84 -0
- package/src/compaction-watch.ts +259 -0
- package/src/config-model-selection.ts +14 -0
- package/src/config-store-write.ts +39 -0
- package/src/config-store.ts +1253 -0
- package/src/config.ts +939 -0
- package/src/connector-boot-health.ts +27 -0
- package/src/connector-paths.ts +47 -0
- package/src/connectors.ts +547 -0
- package/src/content-security.ts +12 -0
- package/src/context-advisory.ts +279 -0
- package/src/context-block-rendered-at.ts +33 -0
- package/src/context-injection-channel.ts +49 -0
- package/src/context-router.ts +121 -0
- package/src/context-threshold-config.ts +52 -0
- package/src/continuation-replay-edge.ts +30 -0
- package/src/continuity-working-state.ts +107 -0
- package/src/contracts.ts +109 -0
- package/src/coordinator-authority.ts +100 -0
- package/src/coordinator-digest-config.ts +20 -0
- package/src/cosmos-events.ts +164 -0
- package/src/daemon.ts +570 -0
- package/src/dashboard-notifications.ts +169 -0
- package/src/dashboard-presence.ts +86 -0
- package/src/db/activity-async.ts +58 -0
- package/src/db/activity-read-ops.ts +42 -0
- package/src/db/activity-write-ops.ts +44 -0
- package/src/db/activity.ts +454 -0
- package/src/db/agent-card-read.ts +98 -0
- package/src/db/agent-effort-state.ts +146 -0
- package/src/db/agent-exit-cleanup.ts +94 -0
- package/src/db/agent-exit-report.ts +33 -0
- package/src/db/agent-gate-runs-write-ops.ts +7 -0
- package/src/db/agent-gate-runs.ts +96 -0
- package/src/db/agent-identity-archive.test-fixture.ts +12 -0
- package/src/db/agent-identity-archive.ts +75 -0
- package/src/db/agent-keep.ts +21 -0
- package/src/db/agent-lifecycle-write-ops.ts +93 -0
- package/src/db/agent-meta.ts +74 -0
- package/src/db/agent-outstanding-work.ts +154 -0
- package/src/db/agent-ownership-async.ts +45 -0
- package/src/db/agent-ownership-read-ops.ts +12 -0
- package/src/db/agent-ownership-write-ops.ts +54 -0
- package/src/db/agent-ownership.ts +200 -0
- package/src/db/agent-predicates.ts +64 -0
- package/src/db/agent-read.ts +39 -0
- package/src/db/agent-search-async.ts +21 -0
- package/src/db/agent-search-read-ops.ts +8 -0
- package/src/db/agent-search.ts +162 -0
- package/src/db/agent-shutdown-in-flight.ts +21 -0
- package/src/db/agents-async.ts +337 -0
- package/src/db/agents-prune-write-op.ts +37 -0
- package/src/db/agents-read-ops.ts +33 -0
- package/src/db/agents-write-ops.ts +188 -0
- package/src/db/agents.ts +1284 -0
- package/src/db/api-budget-schema.ts +144 -0
- package/src/db/api-budget-usage-migration.ts +31 -0
- package/src/db/api-budget-usage.ts +40 -0
- package/src/db/artifact-browse.ts +145 -0
- package/src/db/artifact-retention.ts +115 -0
- package/src/db/artifacts-async.ts +81 -0
- package/src/db/artifacts-read-ops.ts +24 -0
- package/src/db/artifacts-write-ops.ts +51 -0
- package/src/db/artifacts.ts +307 -0
- package/src/db/auth-identities.ts +128 -0
- package/src/db/backlog.ts +172 -0
- package/src/db/blackboard.ts +171 -0
- package/src/db/broadcast-scope.ts +63 -0
- package/src/db/broker-memory-migration.ts +71 -0
- package/src/db/browser-sessions.ts +89 -0
- package/src/db/budget-lineage.ts +26 -0
- package/src/db/bus-outbox-read-ops.ts +29 -0
- package/src/db/bus-outbox-write-ops.ts +58 -0
- package/src/db/bus-prune-async.ts +16 -0
- package/src/db/busy-regression.worker.ts +48 -0
- package/src/db/caller-lifecycle.ts +24 -0
- package/src/db/carry-pending-marker.ts +129 -0
- package/src/db/carry-pending.ts +145 -0
- package/src/db/channel-binding-delete.ts +15 -0
- package/src/db/channel-egress-allowlist.ts +200 -0
- package/src/db/channel-identity.ts +38 -0
- package/src/db/channel-runtime.ts +19 -0
- package/src/db/channels-async.ts +55 -0
- package/src/db/channels-read-ops.ts +13 -0
- package/src/db/channels-session-fence.ts +18 -0
- package/src/db/channels-write-ops.ts +46 -0
- package/src/db/channels.ts +654 -0
- package/src/db/checkout-refresh.ts +36 -0
- package/src/db/ci-gate-runs.ts +92 -0
- package/src/db/ci-incidents-async.ts +76 -0
- package/src/db/ci-incidents-read-ops.ts +15 -0
- package/src/db/ci-incidents-write-ops.ts +57 -0
- package/src/db/ci-incidents.ts +667 -0
- package/src/db/ci-sha-observations-schema.ts +33 -0
- package/src/db/claim-sql.ts +44 -0
- package/src/db/claude-api-budget-ops.ts +15 -0
- package/src/db/claude-api-budget-reconcile.ts +39 -0
- package/src/db/claude-api-budget.ts +198 -0
- package/src/db/claude-app-oauth.ts +74 -0
- package/src/db/claude-catalog-reconcile.ts +27 -0
- package/src/db/codex-reset-consumes-async.ts +9 -0
- package/src/db/codex-reset-consumes-read-ops.ts +5 -0
- package/src/db/codex-reset-consumes-write-ops.ts +22 -0
- package/src/db/codex-reset-consumes.ts +122 -0
- package/src/db/command-agent-profiles.ts +58 -0
- package/src/db/command-row.ts +88 -0
- package/src/db/command-terminal-status.ts +33 -0
- package/src/db/command-vault-pruning.ts +30 -0
- package/src/db/commands-cancel-write.ts +45 -0
- package/src/db/commands-claim-admission.ts +144 -0
- package/src/db/commands-effort-read.ts +58 -0
- package/src/db/commands-host-land-admission.ts +106 -0
- package/src/db/commands-kernel-landing.ts +268 -0
- package/src/db/commands-land-occupancy.ts +40 -0
- package/src/db/commands-land-wait.ts +38 -0
- package/src/db/commands-landing-completeness.ts +66 -0
- package/src/db/commands-landing-tuples.ts +22 -0
- package/src/db/commands-landing.ts +1046 -0
- package/src/db/commands-leaseless-sweep.ts +72 -0
- package/src/db/commands-list-query.ts +47 -0
- package/src/db/commands-planner-stats.test-fixture.ts +97 -0
- package/src/db/commands-read-ops.ts +49 -0
- package/src/db/commands-scheduler-recovery.ts +71 -0
- package/src/db/commands-spawn-read.ts +33 -0
- package/src/db/commands-write-ops.ts +307 -0
- package/src/db/config-store-write-ops.ts +60 -0
- package/src/db/connection-instrumentation.ts +76 -0
- package/src/db/connection.ts +532 -0
- package/src/db/context-reset-carry.ts +144 -0
- package/src/db/continuation-archive-purge.ts +48 -0
- package/src/db/continuation-archive-search.ts +249 -0
- package/src/db/continuation-archives-async.ts +59 -0
- package/src/db/continuation-archives-read-ops.ts +10 -0
- package/src/db/continuation-archives-write-ops.ts +17 -0
- package/src/db/continuation-archives.ts +158 -0
- package/src/db/continuations.ts +201 -0
- package/src/db/coordinator-delivery.ts +10 -0
- package/src/db/coordinator-digest-async.ts +13 -0
- package/src/db/coordinator-digest-flush.ts +6 -0
- package/src/db/coordinator-digest.ts +145 -0
- package/src/db/coordinator-seat.ts +130 -0
- package/src/db/crash-reports.ts +115 -0
- package/src/db/db-error-registry.ts +290 -0
- package/src/db/db-reader-worker.ts +91 -0
- package/src/db/db-writer-worker.ts +66 -0
- package/src/db/deferred-lineage-report-queries.ts +28 -0
- package/src/db/deferred-lineage-reports.ts +44 -0
- package/src/db/delivery-async.ts +102 -0
- package/src/db/delivery-expiration-health.ts +97 -0
- package/src/db/delivery-expiration.ts +52 -0
- package/src/db/delivery-quality-async.ts +23 -0
- package/src/db/delivery-quality.ts +116 -0
- package/src/db/delivery-read-ops.ts +26 -0
- package/src/db/delivery-report-echo.ts +53 -0
- package/src/db/delivery-write-ops.ts +77 -0
- package/src/db/delivery.ts +545 -0
- package/src/db/deploy-events-async.ts +66 -0
- package/src/db/deploy-events-read-ops.ts +25 -0
- package/src/db/deploy-events-write-ops.ts +81 -0
- package/src/db/deploy-events.ts +554 -0
- package/src/db/deploy-task-completion.ts +48 -0
- package/src/db/drive-leases.ts +165 -0
- package/src/db/durable-payloads.ts +92 -0
- package/src/db/fixtures/writer-shutdown.ts +28 -0
- package/src/db/fts-query.ts +8 -0
- package/src/db/gate-policy.ts +27 -0
- package/src/db/gate-runs.ts +181 -0
- package/src/db/gateway.ts +513 -0
- package/src/db/generation-launch.ts +82 -0
- package/src/db/guides-search.ts +18 -0
- package/src/db/history-delivery-settle.ts +57 -0
- package/src/db/hosts-async.ts +150 -0
- package/src/db/hosts-backfill.ts +91 -0
- package/src/db/hosts-read-ops.ts +21 -0
- package/src/db/hosts-registration.ts +452 -0
- package/src/db/hosts-views.ts +259 -0
- package/src/db/hosts-write-ops.ts +108 -0
- package/src/db/hosts.ts +251 -0
- package/src/db/human-address.ts +6 -0
- package/src/db/idle-digest.ts +54 -0
- package/src/db/idle-self-care.ts +100 -0
- package/src/db/inbox-async.ts +29 -0
- package/src/db/inbox-read-ops.ts +8 -0
- package/src/db/inbox-write-ops.ts +29 -0
- package/src/db/inbox.ts +197 -0
- package/src/db/index.ts +147 -0
- package/src/db/injection-attempts.ts +41 -0
- package/src/db/insights-read-ops.ts +12 -0
- package/src/db/insights-write-ops.ts +16 -0
- package/src/db/integrations.ts +297 -0
- package/src/db/issue-associations.ts +136 -0
- package/src/db/issue-lifecycle.ts +199 -0
- package/src/db/issue-refs.ts +312 -0
- package/src/db/kernel-event-log-schema.ts +14 -0
- package/src/db/kernel-landing-admission.ts +15 -0
- package/src/db/kernel-landing-command-authority.ts +222 -0
- package/src/db/kernel-persistence-async.ts +48 -0
- package/src/db/kernel-persistence-read-ops.ts +24 -0
- package/src/db/kernel-persistence-write-ops.ts +43 -0
- package/src/db/land-boundaries.ts +138 -0
- package/src/db/land-executing.ts +147 -0
- package/src/db/land-gate-attestations.ts +161 -0
- package/src/db/land-incident-eligibility.ts +44 -0
- package/src/db/land-queue-trace.ts +28 -0
- package/src/db/land-stack.ts +80 -0
- package/src/db/land-telemetry-schema.ts +50 -0
- package/src/db/land-telemetry-write-ops.ts +16 -0
- package/src/db/land-telemetry.ts +114 -0
- package/src/db/land-withdrawal-state.ts +26 -0
- package/src/db/landed-merge-evidence.ts +72 -0
- package/src/db/landed-task-attribution.ts +23 -0
- package/src/db/landing-audit.ts +18 -0
- package/src/db/landing-controllers.ts +67 -0
- package/src/db/landing-ingress-async.ts +102 -0
- package/src/db/landing-ingress-read-ops.ts +8 -0
- package/src/db/landing-ingress-write-ops.ts +42 -0
- package/src/db/landing-ingress.ts +380 -0
- package/src/db/landing-read-ops.ts +18 -0
- package/src/db/landing-receipts.ts +206 -0
- package/src/db/landing-schema.ts +479 -0
- package/src/db/launch-facts.ts +60 -0
- package/src/db/legacy-landing-publication.ts +103 -0
- package/src/db/legacy-message-backfill.ts +90 -0
- package/src/db/lifecycle-seq.ts +127 -0
- package/src/db/lifecycle-write-window.ts +216 -0
- package/src/db/lineage-pair-dedupe-sql.ts +80 -0
- package/src/db/lineage-startup-captures.ts +43 -0
- package/src/db/long-running-work-async.ts +12 -0
- package/src/db/long-running-work-write-ops.ts +8 -0
- package/src/db/long-running-work.ts +78 -0
- package/src/db/macos-privacy.ts +72 -0
- package/src/db/main-connection-writes.ts +44 -0
- package/src/db/main-thread-state.ts +38 -0
- package/src/db/maintenance-health.ts +560 -0
- package/src/db/maintenance-indexes.ts +37 -0
- package/src/db/maintenance-job-runs-async.ts +15 -0
- package/src/db/maintenance-job-runs.ts +62 -0
- package/src/db/maintenance-job-write-ops.ts +10 -0
- package/src/db/maintenance-pauses.ts +224 -0
- package/src/db/maintenance-worker.ts +111 -0
- package/src/db/mappers.ts +422 -0
- package/src/db/memory-preamble-read.ts +13 -0
- package/src/db/memory-resolve.ts +209 -0
- package/src/db/memory-retirement-plan.ts +31 -0
- package/src/db/memory-retirement.ts +15 -0
- package/src/db/merge-drain-async.ts +8 -0
- package/src/db/merge-lease.ts +225 -0
- package/src/db/message-claims.ts +16 -0
- package/src/db/message-queries.ts +16 -0
- package/src/db/message-read-mark.ts +32 -0
- package/src/db/message-reads-async.ts +46 -0
- package/src/db/message-reads-read-ops.ts +35 -0
- package/src/db/message-reads-write-ops.ts +27 -0
- package/src/db/message-reads.ts +553 -0
- package/src/db/message-send-suppression.ts +58 -0
- package/src/db/message-send.ts +76 -0
- package/src/db/message-thread.ts +15 -0
- package/src/db/message-write-ops.ts +100 -0
- package/src/db/messages-async.ts +31 -0
- package/src/db/messages-read-ops.ts +14 -0
- package/src/db/messages.ts +1201 -0
- package/src/db/migration-marker.ts +13 -0
- package/src/db/migrations.ts +1761 -0
- package/src/db/notification-subscriptions.ts +282 -0
- package/src/db/on-loop-write-transaction.ts +34 -0
- package/src/db/operator-actions-schema.ts +10 -0
- package/src/db/operator-decisions.ts +180 -0
- package/src/db/orchestrators-async.ts +61 -0
- package/src/db/orchestrators-read-ops.ts +7 -0
- package/src/db/orchestrators-write-ops.ts +58 -0
- package/src/db/orchestrators.ts +497 -0
- package/src/db/outbox-codec.ts +16 -0
- package/src/db/pair-maintenance.ts +9 -0
- package/src/db/pairs-async.ts +10 -0
- package/src/db/pairs-write-ops.ts +8 -0
- package/src/db/pairs.ts +264 -0
- package/src/db/pending-relay-runs.ts +73 -0
- package/src/db/plan-blurb-migration.ts +158 -0
- package/src/db/plan-ci-blocks.ts +28 -0
- package/src/db/plan-completion.ts +55 -0
- package/src/db/plan-conformance.ts +104 -0
- package/src/db/plan-dispatch-schema.ts +17 -0
- package/src/db/plan-dispatch-store.ts +112 -0
- package/src/db/plan-external.ts +79 -0
- package/src/db/plan-graph-async.ts +23 -0
- package/src/db/plan-graph-read-ops.ts +16 -0
- package/src/db/plan-graph-write-ops.ts +37 -0
- package/src/db/plan-graph.ts +403 -0
- package/src/db/plan-import-schema.ts +19 -0
- package/src/db/plan-import.ts +211 -0
- package/src/db/plan-task-create.ts +44 -0
- package/src/db/planner-stats.ts +123 -0
- package/src/db/plans-async.ts +22 -0
- package/src/db/plans-read-ops.ts +11 -0
- package/src/db/plans-write-ops.ts +9 -0
- package/src/db/plans.ts +385 -0
- package/src/db/policy-runtime.ts +14 -0
- package/src/db/presence-buffer.ts +111 -0
- package/src/db/presence-loop.ts +58 -0
- package/src/db/presence-write-ops.ts +28 -0
- package/src/db/presence-write.ts +38 -0
- package/src/db/profile-artifact-backfill-migration.ts +32 -0
- package/src/db/profile-host-sources-migration.ts +150 -0
- package/src/db/profile-legacy-project-instructions-migration.ts +41 -0
- package/src/db/profile-name-case-migration.ts +46 -0
- package/src/db/profile-override-migration.ts +200 -0
- package/src/db/profile-project-ack-migration.ts +55 -0
- package/src/db/profile-slim-migration.ts +125 -0
- package/src/db/profile-slim-plan.ts +190 -0
- package/src/db/project-entries-async.ts +18 -0
- package/src/db/project-entries-read-ops.ts +28 -0
- package/src/db/project-entries.ts +514 -0
- package/src/db/project-entry-search.ts +63 -0
- package/src/db/project-identity.ts +16 -0
- package/src/db/project-journal.ts +256 -0
- package/src/db/project-lifecycle.ts +80 -0
- package/src/db/project-memory-group-migration.ts +76 -0
- package/src/db/project-phantom-merge.ts +228 -0
- package/src/db/project-root-schema.ts +30 -0
- package/src/db/project-trust-approvals.ts +98 -0
- package/src/db/projects-async.ts +50 -0
- package/src/db/projects-read-ops.ts +59 -0
- package/src/db/projects-write-ops.ts +74 -0
- package/src/db/projects.ts +629 -0
- package/src/db/prompt-templates-schema.ts +23 -0
- package/src/db/prompt-templates.ts +138 -0
- package/src/db/prompt-version-migration.ts +115 -0
- package/src/db/prompt-versions-ops.ts +17 -0
- package/src/db/prompt-versions.ts +167 -0
- package/src/db/provider-catalog-async.ts +31 -0
- package/src/db/provider-catalog-read-ops.ts +8 -0
- package/src/db/provider-catalog-write-ops.ts +16 -0
- package/src/db/provider-config-history.ts +49 -0
- package/src/db/provider-config-secrets.ts +117 -0
- package/src/db/provider-flap-messages-async.ts +6 -0
- package/src/db/provider-flap-messages-write-ops.ts +13 -0
- package/src/db/provider-flap-messages.ts +19 -0
- package/src/db/provider-quota-advisory-types.ts +39 -0
- package/src/db/provider-quota-burn.ts +322 -0
- package/src/db/provider-quota-effect-occurrences.ts +13 -0
- package/src/db/provider-quota-lease-write-ops.ts +24 -0
- package/src/db/provider-quota-leases-async.ts +35 -0
- package/src/db/provider-quota-leases.ts +174 -0
- package/src/db/provider-quota-matrix-cache.ts +85 -0
- package/src/db/provider-quota-matrix-fetch.ts +85 -0
- package/src/db/provider-quota-merge.ts +90 -0
- package/src/db/provider-quota-notification-write.ts +98 -0
- package/src/db/provider-quota-prune.ts +35 -0
- package/src/db/provider-quota-read-async.ts +77 -0
- package/src/db/provider-quota-read-ops.ts +56 -0
- package/src/db/provider-quota-recipients.ts +38 -0
- package/src/db/provider-quota-state.ts +139 -0
- package/src/db/provider-quota-visibility.ts +22 -0
- package/src/db/provider-quota-write-ops.ts +71 -0
- package/src/db/provider-quotas.ts +726 -0
- package/src/db/provider-secret-scrub.ts +64 -0
- package/src/db/provisioning-assets-migration.ts +85 -0
- package/src/db/provisioning-async.ts +116 -0
- package/src/db/provisioning-callmux.ts +184 -0
- package/src/db/provisioning-github-api.ts +16 -0
- package/src/db/provisioning-github-import-target.ts +29 -0
- package/src/db/provisioning-mcp-validation.ts +103 -0
- package/src/db/provisioning-read-ops.ts +23 -0
- package/src/db/provisioning-registry.ts +1122 -0
- package/src/db/provisioning-resolve.ts +321 -0
- package/src/db/provisioning-write-ops.ts +44 -0
- package/src/db/qa-skill-seed.ts +27 -0
- package/src/db/quota-lease-busy.worker.ts +62 -0
- package/src/db/read-op-marshaling-fixtures.ts +724 -0
- package/src/db/read-ops.ts +266 -0
- package/src/db/reader-pool.ts +252 -0
- package/src/db/recipe-read-ops.ts +15 -0
- package/src/db/recipe-write-ops.ts +68 -0
- package/src/db/reply-obligations.ts +265 -0
- package/src/db/report-suppression.ts +126 -0
- package/src/db/restart-epoch-admin-async.ts +14 -0
- package/src/db/restart-epoch-admin.ts +67 -0
- package/src/db/restart-epoch-admission.ts +114 -0
- package/src/db/restart-epoch-async.ts +80 -0
- package/src/db/restart-epoch-begin.ts +177 -0
- package/src/db/restart-epoch-read-ops.ts +40 -0
- package/src/db/restart-epoch-release.ts +248 -0
- package/src/db/restart-epoch-write-ops.ts +117 -0
- package/src/db/restart-epoch.test-fixture.ts +37 -0
- package/src/db/restart-epoch.ts +623 -0
- package/src/db/restart-sensitive.ts +81 -0
- package/src/db/retention.ts +423 -0
- package/src/db/review-ref-cleanups.ts +306 -0
- package/src/db/routing-policy.ts +64 -0
- package/src/db/scheduled-timer-projection.ts +123 -0
- package/src/db/scheduled-timer-quota-chaos-worker.ts +84 -0
- package/src/db/scheduled-timers.ts +521 -0
- package/src/db/schema.ts +1472 -0
- package/src/db/scoped-message-reads.ts +31 -0
- package/src/db/secrets-broker-async.ts +31 -0
- package/src/db/secrets-broker-read-ops.ts +8 -0
- package/src/db/secrets-broker-write-ops.ts +23 -0
- package/src/db/secrets-broker.ts +221 -0
- package/src/db/secrets-vault-import.ts +37 -0
- package/src/db/secrets-vault-key-lifecycle.ts +64 -0
- package/src/db/secrets-vault-metadata.ts +37 -0
- package/src/db/secrets-vault-migration.ts +53 -0
- package/src/db/secrets-vault-write.ts +97 -0
- package/src/db/secrets-vault.ts +69 -0
- package/src/db/self-effort-permissions.ts +50 -0
- package/src/db/service-access-read-ops.ts +10 -0
- package/src/db/services-async.ts +29 -0
- package/src/db/services-read-ops.ts +134 -0
- package/src/db/services-write-ops.ts +74 -0
- package/src/db/shared.ts +7 -0
- package/src/db/shipping-board-async.ts +6 -0
- package/src/db/shipping-board.ts +319 -0
- package/src/db/shipping-stats-async.ts +24 -0
- package/src/db/shipping-stats-histogram.ts +45 -0
- package/src/db/shipping-stats-schema.ts +8 -0
- package/src/db/shipping-stats.ts +265 -0
- package/src/db/snapshot-ledger-prune.ts +53 -0
- package/src/db/spawn-budget.ts +145 -0
- package/src/db/spawn-command-busy.worker.ts +71 -0
- package/src/db/spawn-delegation-state.ts +124 -0
- package/src/db/spawn-delegation.ts +114 -0
- package/src/db/spawn-host-cap.ts +29 -0
- package/src/db/spawn-in-flight-count.ts +37 -0
- package/src/db/spawn-in-flight.ts +15 -0
- package/src/db/spawn-process-evidence.ts +68 -0
- package/src/db/spawn-project-target.ts +57 -0
- package/src/db/spawn-registration-confirmed-backfill.ts +71 -0
- package/src/db/spawn-request-id-migration.ts +36 -0
- package/src/db/spawn-request-id.ts +35 -0
- package/src/db/spawn-request-reuse.ts +28 -0
- package/src/db/spawn-tree-cleanup.ts +92 -0
- package/src/db/spawn-tree.ts +29 -0
- package/src/db/sql-audit-indexes.ts +77 -0
- package/src/db/stalled-message-delivery.ts +52 -0
- package/src/db/startup-write-lock.ts +36 -0
- package/src/db/stats-async.ts +235 -0
- package/src/db/stats-health-read-model.ts +225 -0
- package/src/db/stats-read-ops.ts +25 -0
- package/src/db/stats.ts +633 -0
- package/src/db/target-host.ts +25 -0
- package/src/db/task-async.ts +165 -0
- package/src/db/task-comment-through-async.ts +14 -0
- package/src/db/task-comment-through-read-ops.ts +4 -0
- package/src/db/task-comment-through-write-ops.ts +7 -0
- package/src/db/task-comment-through.ts +123 -0
- package/src/db/task-core.ts +44 -0
- package/src/db/task-deliverables-async.ts +60 -0
- package/src/db/task-deliverables-read-ops.ts +4 -0
- package/src/db/task-deliverables-write-ops.ts +37 -0
- package/src/db/task-deliverables.ts +387 -0
- package/src/db/task-dependency-cycle.worker.ts +43 -0
- package/src/db/task-detail-projection.ts +91 -0
- package/src/db/task-entity-async.ts +252 -0
- package/src/db/task-entity-read-ops.ts +51 -0
- package/src/db/task-entity-write-ops.ts +197 -0
- package/src/db/task-entity.ts +1143 -0
- package/src/db/task-execution.ts +20 -0
- package/src/db/task-issue-relation.ts +23 -0
- package/src/db/task-issue-source.ts +46 -0
- package/src/db/task-land-withdraw-async.ts +10 -0
- package/src/db/task-land-withdraw-read-ops.ts +13 -0
- package/src/db/task-land-withdraw-read.ts +47 -0
- package/src/db/task-land-withdraw-write-ops.ts +31 -0
- package/src/db/task-land-withdraw.ts +423 -0
- package/src/db/task-list.ts +113 -0
- package/src/db/task-maintenance.ts +25 -0
- package/src/db/task-memory-async.ts +19 -0
- package/src/db/task-memory-read-ops.ts +9 -0
- package/src/db/task-memory-write-ops.ts +23 -0
- package/src/db/task-memory.ts +170 -0
- package/src/db/task-owner.ts +126 -0
- package/src/db/task-read-ops.ts +44 -0
- package/src/db/task-review-hold-async.ts +20 -0
- package/src/db/task-review-hold-delivery.ts +58 -0
- package/src/db/task-review-hold-write-ops.ts +26 -0
- package/src/db/task-review-hold.ts +615 -0
- package/src/db/task-state-reconcile-async.ts +12 -0
- package/src/db/task-state-reconcile.ts +163 -0
- package/src/db/task-validation.ts +71 -0
- package/src/db/task-write-ops.ts +145 -0
- package/src/db/tasks.ts +528 -0
- package/src/db/team-epics.ts +37 -0
- package/src/db/team-idle.ts +35 -0
- package/src/db/team-project.ts +69 -0
- package/src/db/team-spawn-delegation-read.ts +36 -0
- package/src/db/team-spawn-delegation.ts +49 -0
- package/src/db/teams-async.ts +58 -0
- package/src/db/teams-read-ops.ts +27 -0
- package/src/db/teams-write-ops.ts +17 -0
- package/src/db/teams.ts +504 -0
- package/src/db/terminal-events.ts +113 -0
- package/src/db/timer-async.ts +523 -0
- package/src/db/timer-cutover-core.ts +545 -0
- package/src/db/timer-cutover-report-read-ops.ts +211 -0
- package/src/db/timer-cutover-write-ops.ts +282 -0
- package/src/db/timer-ingress-payload.ts +160 -0
- package/src/db/timer-ingress-read-ops.ts +39 -0
- package/src/db/timer-ingress-request-keys.ts +282 -0
- package/src/db/timer-ingress-write-ops.ts +154 -0
- package/src/db/timer-ingress.ts +515 -0
- package/src/db/timer-message-cutover.ts +322 -0
- package/src/db/timer-message-fire-deadletter.ts +136 -0
- package/src/db/timer-message-fire.ts +209 -0
- package/src/db/timer-message-flip-chaos-worker.ts +89 -0
- package/src/db/timer-message-flip-consistency.ts +147 -0
- package/src/db/timer-message-flip.ts +676 -0
- package/src/db/timer-message-participant.ts +138 -0
- package/src/db/timer-migrate-input.ts +92 -0
- package/src/db/timer-operator-async.ts +177 -0
- package/src/db/timer-operator-read-ops.ts +21 -0
- package/src/db/timer-operator-stage10.ts +119 -0
- package/src/db/timer-operator-write-ops.ts +116 -0
- package/src/db/timer-operator.ts +393 -0
- package/src/db/timer-read-ops.ts +147 -0
- package/src/db/timer-transfer-errors.ts +10 -0
- package/src/db/timer-transfer-write-ops.ts +43 -0
- package/src/db/timer-verifier-schema.ts +29 -0
- package/src/db/timer-verifier.ts +379 -0
- package/src/db/timer-write-ops.ts +291 -0
- package/src/db/token-db-write-ops.ts +96 -0
- package/src/db/token-standing.ts +84 -0
- package/src/db/token-usage-read-ops.ts +8 -0
- package/src/db/token-usage-write-ops.ts +35 -0
- package/src/db/token-usage.ts +338 -0
- package/src/db/tool-groups-empty-migration.ts +59 -0
- package/src/db/urgent-intake.ts +30 -0
- package/src/db/user-invites.ts +107 -0
- package/src/db/user-settings-read-ops.ts +19 -0
- package/src/db/user-settings-write-ops.ts +43 -0
- package/src/db/users.ts +173 -0
- package/src/db/vault-backup.ts +59 -0
- package/src/db/vault-expiry.ts +71 -0
- package/src/db/vault-health.ts +99 -0
- package/src/db/vault-token-launch.ts +77 -0
- package/src/db/vault-token-ops.ts +14 -0
- package/src/db/vault-tokens.ts +101 -0
- package/src/db/viewer-scope.ts +117 -0
- package/src/db/wal-checkpointer-worker.ts +48 -0
- package/src/db/wal-checkpointer.ts +107 -0
- package/src/db/wal-index.ts +53 -0
- package/src/db/wal-live-log.ts +68 -0
- package/src/db/wal-reclaim-async.ts +45 -0
- package/src/db/wal-reclaim.ts +140 -0
- package/src/db/web-tool-call-ops.ts +15 -0
- package/src/db/web-tool-calls.ts +87 -0
- package/src/db/withdraw-land-error.ts +18 -0
- package/src/db/work-evidence.ts +43 -0
- package/src/db/workflow-budget.ts +44 -0
- package/src/db/workflow-contact.ts +173 -0
- package/src/db/workflow-execution.ts +10 -0
- package/src/db/workflow-journal-async.ts +64 -0
- package/src/db/workflow-journal-prune.ts +71 -0
- package/src/db/workflow-journal-read-ops.ts +21 -0
- package/src/db/workflow-journal-schema.ts +9 -0
- package/src/db/workflow-journal-write-ops.ts +33 -0
- package/src/db/workflow-journal.ts +324 -0
- package/src/db/workflow-spawn-quota.ts +57 -0
- package/src/db/workflow-stats-read-ops.ts +177 -0
- package/src/db/workflow-step-tasks.ts +74 -0
- package/src/db/workflow-task-read-ops.ts +187 -0
- package/src/db/workspace-land-state.ts +65 -0
- package/src/db/workspace-merge-hold.ts +28 -0
- package/src/db/workspace-persistence.ts +77 -0
- package/src/db/workspace-rekey-write-ops.ts +11 -0
- package/src/db/workspace-rekey.ts +148 -0
- package/src/db/workspace-steward-cancel.ts +85 -0
- package/src/db/workspace-steward-fence.ts +30 -0
- package/src/db/workspace-write-ops.ts +26 -0
- package/src/db/workspace-writes-async.ts +46 -0
- package/src/db/workspace-writes.ts +196 -0
- package/src/db/workspaces.ts +617 -0
- package/src/db/write-ops.ts +602 -0
- package/src/db/writer-drain.ts +27 -0
- package/src/db/writer-fault-seam.ts +104 -0
- package/src/db/writer-gateway.ts +843 -0
- package/src/db/writer-ledger.ts +56 -0
- package/src/db.ts +4 -0
- package/src/deploy-executor.ts +139 -0
- package/src/dev.ts +541 -0
- package/src/dispatch-availability.ts +55 -0
- package/src/dispatch-match.ts +21 -0
- package/src/ephemeral/host-landing-slots-proof-worker.ts +45 -0
- package/src/ephemeral/index.ts +58 -0
- package/src/ephemeral/instance.ts +832 -0
- package/src/ephemeral/landing-ingress-proof-worker.ts +30 -0
- package/src/ephemeral/ports.ts +40 -0
- package/src/ephemeral/profile.ts +323 -0
- package/src/ephemeral/rehearsal-stamps.ts +149 -0
- package/src/ephemeral/rehearsal.ts +213 -0
- package/src/ephemeral/snapshot-kernel.ts +41 -0
- package/src/ephemeral/snapshot.ts +753 -0
- package/src/ephemeral/sweep.ts +40 -0
- package/src/event-loop-lag.ts +584 -0
- package/src/event-loop-yield.ts +27 -0
- package/src/events.ts +140 -0
- package/src/execution-mode.ts +63 -0
- package/src/fleet-convergence.ts +123 -0
- package/src/gate-resolver.ts +151 -0
- package/src/gate-run-capture.ts +71 -0
- package/src/git-sha.ts +58 -0
- package/src/guides.ts +73 -0
- package/src/host/capacity.ts +79 -0
- package/src/host/gate-capacity-alert.ts +90 -0
- package/src/host/identity.ts +128 -0
- package/src/host/presentation.ts +234 -0
- package/src/host/pressure-details.ts +89 -0
- package/src/host/pressure.ts +216 -0
- package/src/host/state.ts +132 -0
- package/src/host/utilization-buffer.ts +71 -0
- package/src/host-awareness.ts +57 -0
- package/src/host-identity.ts +39 -0
- package/src/host-provider-enablement.ts +75 -0
- package/src/host-provider-store.ts +102 -0
- package/src/host-tools.ts +39 -0
- package/src/http-body.ts +49 -0
- package/src/http-compression.ts +16 -0
- package/src/hub-metrics-report.ts +67 -0
- package/src/hub-metrics.ts +166 -0
- package/src/idle-digest-config.ts +40 -0
- package/src/idle-self-care.ts +58 -0
- package/src/index.ts +35 -0
- package/src/injection-sweep-pacing.ts +24 -0
- package/src/insights-async.ts +16 -0
- package/src/insights-db.ts +188 -0
- package/src/internal-spawn-model.ts +18 -0
- package/src/invite-link.ts +11 -0
- package/src/issue-tracker/adapter.ts +58 -0
- package/src/issue-tracker/github.ts +342 -0
- package/src/issue-tracker/index.ts +12 -0
- package/src/issue-tracker/registry.ts +26 -0
- package/src/journal-preamble.ts +350 -0
- package/src/kernel-correlation.ts +28 -0
- package/src/land-authorization.ts +73 -0
- package/src/land-block.ts +59 -0
- package/src/land-failure-event-key.ts +8 -0
- package/src/land-gate-failure-routing.ts +69 -0
- package/src/land-gate-notifications.ts +173 -0
- package/src/land-gate-queue-progress.ts +54 -0
- package/src/land-gates-source.ts +126 -0
- package/src/land-gates.ts +29 -0
- package/src/land-lifecycle-drives.ts +15 -0
- package/src/land-settle-dispatch.ts +134 -0
- package/src/land-stack-depth.ts +11 -0
- package/src/land-telemetry.ts +40 -0
- package/src/landing-base-ref.ts +3 -0
- package/src/landing-host-safety.ts +38 -0
- package/src/landing-lane-key.ts +74 -0
- package/src/launch-mode-support.ts +11 -0
- package/src/launch-mode.ts +58 -0
- package/src/legacy-landing.test-fixture.ts +56 -0
- package/src/lifecycle-context-pressure.ts +134 -0
- package/src/lifecycle-manager.ts +831 -0
- package/src/lifecycle-signal-registry.ts +87 -0
- package/src/live-runs-section.ts +38 -0
- package/src/loop-block-attribution.ts +442 -0
- package/src/loop-block-regression-alarm.ts +156 -0
- package/src/loop-task-stamps.ts +62 -0
- package/src/main-thread-clock.ts +95 -0
- package/src/maintenance/agent-identity-archive-job.ts +15 -0
- package/src/maintenance/artifact-checkout-gc-job.ts +14 -0
- package/src/maintenance/artifact-checkout-gc.ts +33 -0
- package/src/maintenance/artifact-sweep.ts +23 -0
- package/src/maintenance/breaker.ts +200 -0
- package/src/maintenance/cd-watcher.ts +176 -0
- package/src/maintenance/checkout-refresh.ts +83 -0
- package/src/maintenance/ci-monitor.ts +14 -0
- package/src/maintenance/claude-api-budget-job.ts +16 -0
- package/src/maintenance/constants.ts +134 -0
- package/src/maintenance/continuation-archive-search-job.ts +27 -0
- package/src/maintenance/critical-job-watchdog.ts +252 -0
- package/src/maintenance/db-planner-stats-job.ts +19 -0
- package/src/maintenance/db-wal-reclaim-job.ts +82 -0
- package/src/maintenance/events.ts +28 -0
- package/src/maintenance/gate-capacity-sample-job.ts +16 -0
- package/src/maintenance/index.ts +10 -0
- package/src/maintenance/jobs.ts +857 -0
- package/src/maintenance/long-running-work.ts +41 -0
- package/src/maintenance/orphaned-sessions.ts +126 -0
- package/src/maintenance/pauses.ts +174 -0
- package/src/maintenance/provider-secret-scrub-job.ts +16 -0
- package/src/maintenance/queued-message-expiration.ts +23 -0
- package/src/maintenance/red-main-controller-job.ts +22 -0
- package/src/maintenance/reply-obligation-parity-job.ts +27 -0
- package/src/maintenance/restart-epoch-hold-health.ts +62 -0
- package/src/maintenance/run-registry.ts +194 -0
- package/src/maintenance/scheduler.ts +778 -0
- package/src/maintenance/service-access-job.ts +31 -0
- package/src/maintenance/shipping-stats-rollup-job.ts +23 -0
- package/src/maintenance/snapshot-ledger-prune-job.ts +17 -0
- package/src/maintenance/stalled-delivery-pager.ts +125 -0
- package/src/maintenance/steward-handback.ts +11 -0
- package/src/maintenance/task-state-reconcile-job.ts +22 -0
- package/src/maintenance/teams.ts +426 -0
- package/src/maintenance/types.ts +124 -0
- package/src/maintenance/vault-backup-job.ts +34 -0
- package/src/maintenance/vault-expiry-job.ts +29 -0
- package/src/maintenance/web-tool-call-prune-job.ts +13 -0
- package/src/maintenance/workflow-backstop-job.ts +12 -0
- package/src/maintenance/workflow-journal-prune-job.ts +29 -0
- package/src/maintenance/workspaces.ts +784 -0
- package/src/maintenance.ts +1 -0
- package/src/managed-policy-escalation.ts +123 -0
- package/src/managed-policy.ts +236 -0
- package/src/managed-provider-gate.ts +27 -0
- package/src/managed-spawn-reservation.ts +23 -0
- package/src/markdown-frontmatter.ts +14 -0
- package/src/mcp/activity-output.ts +57 -0
- package/src/mcp/artifact-upload.ts +53 -0
- package/src/mcp/context-output.ts +73 -0
- package/src/mcp/dispatch-shape-schema.ts +13 -0
- package/src/mcp/guides.ts +33 -0
- package/src/mcp/http.ts +27 -0
- package/src/mcp/identity-projection.ts +121 -0
- package/src/mcp/identity.ts +235 -0
- package/src/mcp/index.ts +355 -0
- package/src/mcp/issue-selector-schema.ts +12 -0
- package/src/mcp/message-read.ts +87 -0
- package/src/mcp/output-descriptions.ts +72 -0
- package/src/mcp/output-levels.ts +71 -0
- package/src/mcp/output-projection.ts +88 -0
- package/src/mcp/plan-presentation.ts +166 -0
- package/src/mcp/presentation-values.ts +11 -0
- package/src/mcp/presentation.ts +653 -0
- package/src/mcp/project-entry-search-schema.ts +7 -0
- package/src/mcp/prompts.ts +36 -0
- package/src/mcp/runtime-output.ts +84 -0
- package/src/mcp/schema-budget.ts +28 -0
- package/src/mcp/self-care-visibility.ts +23 -0
- package/src/mcp/service-access.ts +18 -0
- package/src/mcp/spawn-targets-matrix.ts +68 -0
- package/src/mcp/spawn-targets.test-fixture.ts +21 -0
- package/src/mcp/task-validation-presentation.ts +19 -0
- package/src/mcp/tool-generation.ts +8 -0
- package/src/mcp/tool-groups.ts +136 -0
- package/src/mcp/tools-artifacts.ts +82 -0
- package/src/mcp/tools-messaging.ts +541 -0
- package/src/mcp/tools-permission.ts +88 -0
- package/src/mcp/tools-run.ts +73 -0
- package/src/mcp/tools-scheduler.ts +156 -0
- package/src/mcp/tools-spawn.ts +418 -0
- package/src/mcp/tools-web-tool-calls.ts +28 -0
- package/src/mcp/tools-workspace.ts +260 -0
- package/src/mcp/types.ts +68 -0
- package/src/mcp/validation.ts +66 -0
- package/src/mcp-agent-action.ts +96 -0
- package/src/mcp-agent-keep.ts +37 -0
- package/src/mcp-backlog-tools.ts +137 -0
- package/src/mcp-blackboard-tools.ts +131 -0
- package/src/mcp-channel-binding-tools.ts +27 -0
- package/src/mcp-claude-api-budget.ts +35 -0
- package/src/mcp-codex-reset.ts +43 -0
- package/src/mcp-decision-tools.ts +96 -0
- package/src/mcp-dispatch-tools.ts +142 -0
- package/src/mcp-egress-tools.ts +168 -0
- package/src/mcp-errors.ts +7 -0
- package/src/mcp-host-tools.ts +61 -0
- package/src/mcp-interrupt-agent.ts +47 -0
- package/src/mcp-issue-activity-tools.ts +114 -0
- package/src/mcp-issue-association-tools.ts +103 -0
- package/src/mcp-issue-lifecycle-tools.ts +49 -0
- package/src/mcp-issue-ref-tools.ts +214 -0
- package/src/mcp-maintenance-tools.ts +113 -0
- package/src/mcp-merge-tools.ts +66 -0
- package/src/mcp-notification-subscription-tools.ts +297 -0
- package/src/mcp-output-levels.test-fixture.ts +95 -0
- package/src/mcp-plan-tools.ts +347 -0
- package/src/mcp-profile-trust-tools.ts +47 -0
- package/src/mcp-project-journal-tools.ts +160 -0
- package/src/mcp-project-tools.ts +420 -0
- package/src/mcp-provider-catalog.ts +9 -0
- package/src/mcp-release-tools.ts +33 -0
- package/src/mcp-routing-policy-tools.ts +35 -0
- package/src/mcp-secrets-tools.ts +87 -0
- package/src/mcp-task-deliver-tools.ts +166 -0
- package/src/mcp-task-land-withdraw-tools.ts +49 -0
- package/src/mcp-task-memory-tools.ts +119 -0
- package/src/mcp-task-review-hold-tools.ts +57 -0
- package/src/mcp-task-tools.ts +342 -0
- package/src/mcp-task-validation-tools.ts +30 -0
- package/src/mcp-task-weave-tools.ts +63 -0
- package/src/mcp-team-template-tools.ts +141 -0
- package/src/mcp-team-tools.ts +197 -0
- package/src/mcp-tool-allowlist.ts +88 -0
- package/src/mcp-workflow-tools.ts +158 -0
- package/src/mcp.ts +1 -0
- package/src/memory-admission-rank.ts +55 -0
- package/src/memory-area-injection.ts +216 -0
- package/src/memory-boundary-capture.ts +206 -0
- package/src/memory-entry-safety.ts +28 -0
- package/src/memory-inject-filter.ts +190 -0
- package/src/memory-injection.ts +954 -0
- package/src/memory-preamble-admission.ts +158 -0
- package/src/memory-preamble-async.ts +13 -0
- package/src/memory-preamble.ts +1142 -0
- package/src/memory-retirement.ts +11 -0
- package/src/memory-seam.ts +273 -0
- package/src/memory-tokens.ts +91 -0
- package/src/merge-drain.ts +101 -0
- package/src/merge-pause-maintenance.ts +19 -0
- package/src/message-visibility.ts +50 -0
- package/src/messaging-policy.ts +94 -0
- package/src/native-memory.ts +59 -0
- package/src/notification-prefs.ts +25 -0
- package/src/notification-role-policy.ts +14 -0
- package/src/notification-router.ts +329 -0
- package/src/notification-rules.ts +390 -0
- package/src/notification-settings-store.ts +47 -0
- package/src/notification-settings.ts +166 -0
- package/src/notification-subscription-rules.ts +11 -0
- package/src/notification-types.ts +312 -0
- package/src/notify.ts +55 -0
- package/src/observed-reset-boundary.ts +23 -0
- package/src/observed-reset-refresh.ts +21 -0
- package/src/operator-alarm.ts +41 -0
- package/src/operator-decisions-section.ts +29 -0
- package/src/orchestrator-lookup.ts +29 -0
- package/src/orchestrator-self-report-authz.ts +34 -0
- package/src/package-pack.ts +249 -0
- package/src/post-bind-startup.ts +58 -0
- package/src/process-guard.ts +31 -0
- package/src/profile-cells.ts +305 -0
- package/src/profile-effective-survey.ts +121 -0
- package/src/profile-host-sources.ts +73 -0
- package/src/profile-instruction-blocks.ts +11 -0
- package/src/profile-project-validation.ts +23 -0
- package/src/profile-provider-options.ts +59 -0
- package/src/profile-role-templates.ts +26 -0
- package/src/profile-workflow-policy.ts +14 -0
- package/src/project-claudemd-sweep.ts +176 -0
- package/src/project-file-source.ts +54 -0
- package/src/project-ingest.ts +195 -0
- package/src/project-instructions.ts +700 -0
- package/src/project-mcp.ts +18 -0
- package/src/project-role-assets.ts +109 -0
- package/src/project-roles-validate.ts +53 -0
- package/src/project-roles.ts +364 -0
- package/src/project-settings.ts +5 -0
- package/src/project-skills.ts +5 -0
- package/src/project-toolchain.ts +58 -0
- package/src/project-trust-fingerprint.ts +174 -0
- package/src/project-trust.ts +262 -0
- package/src/project-workflows.ts +185 -0
- package/src/prompt-resolver.ts +697 -0
- package/src/prompt-template-fallback.ts +15 -0
- package/src/prompt-version-errors.ts +13 -0
- package/src/provider-catalog-store.ts +393 -0
- package/src/provider-config-store.ts +308 -0
- package/src/provider-enablement.ts +36 -0
- package/src/provider-home-gc.ts +58 -0
- package/src/provider-model-seed.ts +18 -0
- package/src/provider-quota-async.ts +152 -0
- package/src/provider-quota-config-store.ts +60 -0
- package/src/provider-secrets.test-fixture.ts +34 -0
- package/src/provider-state.ts +93 -0
- package/src/provider-timeline-event.ts +76 -0
- package/src/quota-advisory.ts +359 -0
- package/src/quota-band-delivery.ts +13 -0
- package/src/quota-band-projection.ts +149 -0
- package/src/quota-band-transition.ts +316 -0
- package/src/quota-pacing.ts +46 -0
- package/src/quota-threshold-config.ts +46 -0
- package/src/quota.ts +61 -0
- package/src/ratchet-files.ts +202 -0
- package/src/recipe-async.ts +50 -0
- package/src/recipe-db.ts +260 -0
- package/src/recipe-loader.ts +132 -0
- package/src/recipe-runner.ts +259 -0
- package/src/recipe-validator.ts +107 -0
- package/src/relay-event-drain.ts +39 -0
- package/src/relay-host-locality.ts +20 -0
- package/src/relay-run-lease.ts +17 -0
- package/src/repo-config-source.ts +209 -0
- package/src/report-verbosity.ts +5 -0
- package/src/restart-epoch-deploy-hold.ts +221 -0
- package/src/retention-config-store.ts +32 -0
- package/src/retention-config.ts +70 -0
- package/src/reviewer-pipeline.ts +238 -0
- package/src/routes/_route.ts +70 -0
- package/src/routes/_shared.ts +513 -0
- package/src/routes/activity.ts +70 -0
- package/src/routes/agent-effort.ts +69 -0
- package/src/routes/agent-keep.ts +27 -0
- package/src/routes/agent-profiles.ts +169 -0
- package/src/routes/agent-reporting.ts +19 -0
- package/src/routes/agent-self-effort.ts +51 -0
- package/src/routes/agent-sessions.ts +650 -0
- package/src/routes/agent-sharing.ts +23 -0
- package/src/routes/agents-spawn.ts +258 -0
- package/src/routes/agents.ts +452 -0
- package/src/routes/artifacts.ts +340 -0
- package/src/routes/auth.ts +123 -0
- package/src/routes/authority-audit.ts +14 -0
- package/src/routes/automations.ts +83 -0
- package/src/routes/backlog.ts +112 -0
- package/src/routes/blackboard.ts +54 -0
- package/src/routes/browser.ts +73 -0
- package/src/routes/channel-binding-delete.ts +21 -0
- package/src/routes/channel-output.ts +17 -0
- package/src/routes/claude-api-budget.ts +65 -0
- package/src/routes/commands-listing.ts +50 -0
- package/src/routes/commands.ts +586 -0
- package/src/routes/config.ts +75 -0
- package/src/routes/connectors.ts +108 -0
- package/src/routes/context-resets.ts +35 -0
- package/src/routes/continuation-archives.ts +37 -0
- package/src/routes/coordinator-teams.ts +14 -0
- package/src/routes/decisions.ts +82 -0
- package/src/routes/deploys.ts +15 -0
- package/src/routes/fleet-convergence.ts +5 -0
- package/src/routes/guides.ts +13 -0
- package/src/routes/host-providers.ts +73 -0
- package/src/routes/host-resource-control.ts +48 -0
- package/src/routes/host-secret-files.ts +38 -0
- package/src/routes/hosts.ts +240 -0
- package/src/routes/inbox.ts +151 -0
- package/src/routes/index.ts +614 -0
- package/src/routes/insights.ts +86 -0
- package/src/routes/integrations.ts +636 -0
- package/src/routes/issue-activity.ts +78 -0
- package/src/routes/issue-associations.ts +76 -0
- package/src/routes/issue-lifecycle.ts +34 -0
- package/src/routes/issue-refs.ts +163 -0
- package/src/routes/kernel-timers-operator.ts +57 -0
- package/src/routes/memory.ts +25 -0
- package/src/routes/merges.ts +109 -0
- package/src/routes/message-viewer.ts +4 -0
- package/src/routes/messages.ts +621 -0
- package/src/routes/notifications.ts +36 -0
- package/src/routes/orchestrator-bootstrap.ts +101 -0
- package/src/routes/orchestrator-host-registration.ts +125 -0
- package/src/routes/orchestrator-host-utilization.ts +255 -0
- package/src/routes/orchestrator-proxy.ts +174 -0
- package/src/routes/orchestrator.ts +699 -0
- package/src/routes/pairs.ts +214 -0
- package/src/routes/plans.ts +98 -0
- package/src/routes/project-onboarding.ts +56 -0
- package/src/routes/project-trust.ts +73 -0
- package/src/routes/projects.ts +296 -0
- package/src/routes/prompt-templates.ts +106 -0
- package/src/routes/provider-config.ts +233 -0
- package/src/routes/provider-quota-config.ts +48 -0
- package/src/routes/provider-quotas.ts +312 -0
- package/src/routes/provisioning-registry.ts +192 -0
- package/src/routes/recipes.ts +129 -0
- package/src/routes/restart-epochs.ts +98 -0
- package/src/routes/routing-policy.ts +30 -0
- package/src/routes/run-command.ts +25 -0
- package/src/routes/secrets-backup.ts +53 -0
- package/src/routes/secrets-import.ts +32 -0
- package/src/routes/secrets-page.ts +98 -0
- package/src/routes/secrets-vault.ts +121 -0
- package/src/routes/secrets.ts +165 -0
- package/src/routes/service-access.ts +57 -0
- package/src/routes/settings.ts +191 -0
- package/src/routes/shipping.ts +56 -0
- package/src/routes/spawn-policy.ts +299 -0
- package/src/routes/spec.ts +58 -0
- package/src/routes/sse.ts +18 -0
- package/src/routes/stats.ts +159 -0
- package/src/routes/steward.ts +49 -0
- package/src/routes/task-graph.ts +30 -0
- package/src/routes/task-http.ts +27 -0
- package/src/routes/task-issues.ts +81 -0
- package/src/routes/task-reads.ts +139 -0
- package/src/routes/task-validation.ts +22 -0
- package/src/routes/tasks.ts +553 -0
- package/src/routes/team-templates.ts +65 -0
- package/src/routes/teams-config.ts +15 -0
- package/src/routes/teams.ts +141 -0
- package/src/routes/token-usage.ts +167 -0
- package/src/routes/tokens.ts +393 -0
- package/src/routes/users.ts +248 -0
- package/src/routes/viewer-read.ts +27 -0
- package/src/routes/web-tool-calls.ts +38 -0
- package/src/routes/workflows.ts +142 -0
- package/src/routes/workspaces.ts +642 -0
- package/src/routes.ts +3 -0
- package/src/routing-eligibility.ts +42 -0
- package/src/routing-model-aliases.ts +21 -0
- package/src/routing-policy-normalize.ts +412 -0
- package/src/routing-policy-push.ts +154 -0
- package/src/routing-policy-service.ts +19 -0
- package/src/routing-policy-store.ts +16 -0
- package/src/routing-preferences.ts +82 -0
- package/src/routing-step-defaults.ts +31 -0
- package/src/runtime-grant.ts +164 -0
- package/src/runtime-prefix.ts +8 -0
- package/src/runtime-tokens.ts +404 -0
- package/src/search-query.ts +10 -0
- package/src/secret-keys.ts +24 -0
- package/src/secrets-broker/config.ts +53 -0
- package/src/secrets-broker/error.ts +8 -0
- package/src/secrets-broker/infisical.ts +259 -0
- package/src/secrets-broker/reader-infisical.ts +41 -0
- package/src/secrets-broker/reader.ts +101 -0
- package/src/secrets-broker/service.ts +242 -0
- package/src/secrets-broker/tool-credentials.ts +9 -0
- package/src/secrets-vault/backend-conformance.ts +26 -0
- package/src/secrets-vault/backend.ts +102 -0
- package/src/secrets-vault/backup.ts +103 -0
- package/src/secrets-vault/config.ts +7 -0
- package/src/secrets-vault/expiry.ts +10 -0
- package/src/secrets-vault/identity.ts +27 -0
- package/src/secrets-vault/import.ts +90 -0
- package/src/secrets-vault/key-files.ts +91 -0
- package/src/secrets-vault/keys.ts +79 -0
- package/src/secrets-vault/metadata.ts +51 -0
- package/src/secrets-vault/provider-env.ts +25 -0
- package/src/secrets-vault/resolve.ts +101 -0
- package/src/secrets-vault/restore.ts +57 -0
- package/src/secrets-vault/scope.ts +25 -0
- package/src/secrets-vault/service.ts +192 -0
- package/src/secrets-vault/shared.ts +10 -0
- package/src/security.ts +772 -0
- package/src/self-effort-rule.ts +36 -0
- package/src/self-resume-carry.ts +131 -0
- package/src/self-resume-command.ts +24 -0
- package/src/self-resume-config.ts +54 -0
- package/src/self-resume-identity.ts +40 -0
- package/src/self-resume-supersede.ts +19 -0
- package/src/self-resume.ts +884 -0
- package/src/server-background.ts +24 -0
- package/src/server.ts +726 -0
- package/src/service-access/config.ts +3 -0
- package/src/service-access/health.ts +151 -0
- package/src/service-access/host-health.ts +62 -0
- package/src/service-access/host.ts +63 -0
- package/src/service-access/operations.ts +21 -0
- package/src/service-access/policy.ts +30 -0
- package/src/service-access/probe.ts +62 -0
- package/src/service-access/request-logs.ts +93 -0
- package/src/service-access/scope.ts +7 -0
- package/src/service-access/service.ts +185 -0
- package/src/service-access/tokens.ts +174 -0
- package/src/service-access/validation.ts +75 -0
- package/src/service-access/vault.ts +59 -0
- package/src/services/agent-action.ts +238 -0
- package/src/services/agent-control-host.ts +74 -0
- package/src/services/agent-effort.ts +60 -0
- package/src/services/agent-hang-watchdog-job.ts +513 -0
- package/src/services/agent-hang-watchdog-wiring.ts +487 -0
- package/src/services/agent-hang-watchdog.ts +395 -0
- package/src/services/agent-keep.ts +72 -0
- package/src/services/agent-message-fanout.ts +91 -0
- package/src/services/agent-outstanding-work.ts +66 -0
- package/src/services/agent-reporting.ts +27 -0
- package/src/services/artifact-access.ts +39 -0
- package/src/services/artifact-multipart.ts +70 -0
- package/src/services/artifact-path-host.ts +55 -0
- package/src/services/artifact-read.ts +88 -0
- package/src/services/artifact-write.ts +25 -0
- package/src/services/auth-context.ts +117 -0
- package/src/services/automatic-disposal.ts +33 -0
- package/src/services/backlog.ts +149 -0
- package/src/services/browser-inventory.ts +52 -0
- package/src/services/browser-session-state.ts +41 -0
- package/src/services/browser-session.ts +167 -0
- package/src/services/bus-command-update.ts +84 -0
- package/src/services/bus-expiration-death.ts +57 -0
- package/src/services/canonical-root.ts +284 -0
- package/src/services/captured-delivery-gate.ts +12 -0
- package/src/services/carry-pending.ts +5 -0
- package/src/services/channel-binding-delete.ts +20 -0
- package/src/services/channel-suppression-receipt.ts +28 -0
- package/src/services/checkout-refresh-state.ts +18 -0
- package/src/services/checkout-refresh.test-fixture.ts +12 -0
- package/src/services/child-work-evidence.ts +77 -0
- package/src/services/claude-app.ts +91 -0
- package/src/services/command-claim-rejection.ts +23 -0
- package/src/services/command-host.ts +42 -0
- package/src/services/coordinator-digest.ts +30 -0
- package/src/services/decision-audience.ts +26 -0
- package/src/services/delivery-gate-policy.ts +98 -0
- package/src/services/delivery-tip.test-fixture.ts +25 -0
- package/src/services/diff-gate.ts +110 -0
- package/src/services/dispatch-command.ts +388 -0
- package/src/services/effective-launch-driver.ts +240 -0
- package/src/services/effective-launch-harness.ts +257 -0
- package/src/services/errors.ts +31 -0
- package/src/services/git-process.ts +176 -0
- package/src/services/git-remote.ts +100 -0
- package/src/services/harness-subagents.ts +12 -0
- package/src/services/host-changed-paths.test-fixture.ts +134 -0
- package/src/services/host-landing-placement.ts +65 -0
- package/src/services/host-project-readiness.ts +49 -0
- package/src/services/host-providers.ts +114 -0
- package/src/services/host-utilization.ts +70 -0
- package/src/services/idle-agent-digest.ts +318 -0
- package/src/services/idle-epics.ts +105 -0
- package/src/services/idle-self-care.ts +47 -0
- package/src/services/interrupt-agent.ts +146 -0
- package/src/services/isolated-workspace-placement.ts +258 -0
- package/src/services/issue-activity.ts +23 -0
- package/src/services/issue-associations.ts +72 -0
- package/src/services/issue-completion-drain.ts +24 -0
- package/src/services/issue-completion.ts +24 -0
- package/src/services/issue-lifecycle-comments.ts +12 -0
- package/src/services/issue-lifecycle.ts +620 -0
- package/src/services/issue-refs.ts +65 -0
- package/src/services/kernel-command-bridge.ts +219 -0
- package/src/services/kernel-control-host.ts +78 -0
- package/src/services/kernel-control-http.ts +119 -0
- package/src/services/kernel-control-mcp.ts +193 -0
- package/src/services/kernel-landing-command.ts +28 -0
- package/src/services/kernel-landing-ingress.ts +65 -0
- package/src/services/kernel-timers-authoritative-ingress.ts +48 -0
- package/src/services/kernel-timers-authz.ts +229 -0
- package/src/services/kernel-timers-command.ts +182 -0
- package/src/services/kernel-timers-cutover-chaos-worker.ts +211 -0
- package/src/services/kernel-timers-cutover.ts +39 -0
- package/src/services/kernel-timers-ingress-apply.ts +39 -0
- package/src/services/kernel-timers-ingress-chaos-worker.ts +312 -0
- package/src/services/kernel-timers-ingress.ts +702 -0
- package/src/services/kernel-timers-message-authority-chaos-worker.ts +97 -0
- package/src/services/kernel-timers-migrate.ts +158 -0
- package/src/services/kernel-timers-operator-chaos-worker.ts +259 -0
- package/src/services/kernel-timers-operator-preflight.ts +18 -0
- package/src/services/kernel-timers-operator.ts +424 -0
- package/src/services/kernel-timers-outbox.ts +138 -0
- package/src/services/kernel-timers-request-key-migration-chaos-worker.ts +80 -0
- package/src/services/kernel-timers-stage10-operator.ts +210 -0
- package/src/services/kernel-timers-stage10.ts +85 -0
- package/src/services/kernel-timers-stage9.ts +57 -0
- package/src/services/kernel-timers-transfer-chaos-worker.ts +118 -0
- package/src/services/kernel-timers-transfer.ts +525 -0
- package/src/services/kernel-timers-verifier.ts +39 -0
- package/src/services/kernel-timers.ts +247 -0
- package/src/services/land-boundary-settle.ts +32 -0
- package/src/services/land-gate-placement.ts +60 -0
- package/src/services/land-issue-relations.ts +46 -0
- package/src/services/land-restart-retry.ts +77 -0
- package/src/services/landed-ancestry.ts +417 -0
- package/src/services/landed-task-attribution.ts +14 -0
- package/src/services/landing-terminal-report.ts +119 -0
- package/src/services/legacy-landing-backfill.ts +159 -0
- package/src/services/legacy-landing-host.ts +291 -0
- package/src/services/legacy-landing-publication.ts +35 -0
- package/src/services/legacy-landing-recovery.ts +111 -0
- package/src/services/macos-privacy.ts +34 -0
- package/src/services/managed-running.ts +189 -0
- package/src/services/memory-areas.ts +172 -0
- package/src/services/memory-identity.ts +162 -0
- package/src/services/merge-pause.ts +37 -0
- package/src/services/message-delivery-actions.ts +11 -0
- package/src/services/operator-decisions.ts +260 -0
- package/src/services/orchestrator-landing-recovery.ts +55 -0
- package/src/services/orchestrator-registration-recovery.ts +12 -0
- package/src/services/orchestrator-upgrade.ts +83 -0
- package/src/services/parity-harness.ts +141 -0
- package/src/services/permission-decision.ts +129 -0
- package/src/services/plan-ci-recovery.ts +76 -0
- package/src/services/plan-conformance.ts +105 -0
- package/src/services/plan-dispatch-policy.ts +79 -0
- package/src/services/plan-dispatch.ts +372 -0
- package/src/services/plan-external-view.ts +7 -0
- package/src/services/plan-frontier.ts +34 -0
- package/src/services/plan-graph.ts +703 -0
- package/src/services/plan-import.ts +66 -0
- package/src/services/plan-live-bindings.ts +139 -0
- package/src/services/plan-task-create.ts +80 -0
- package/src/services/plan-terminal-refs.ts +83 -0
- package/src/services/plan-wake-digest.ts +88 -0
- package/src/services/plan-wake-policy.ts +12 -0
- package/src/services/profile-trust.ts +54 -0
- package/src/services/project-checkout-binding.ts +65 -0
- package/src/services/project-checkout-enrollment.ts +27 -0
- package/src/services/project-cwd.ts +41 -0
- package/src/services/project-onboarding.ts +165 -0
- package/src/services/project-repo-create.ts +27 -0
- package/src/services/project-role.test-fixture.ts +74 -0
- package/src/services/project.ts +191 -0
- package/src/services/prompt-templates.ts +46 -0
- package/src/services/prompt-version-writer.ts +42 -0
- package/src/services/provider-catalog.ts +7 -0
- package/src/services/provider-hold-flap.ts +130 -0
- package/src/services/provider-hold-nudge.ts +191 -0
- package/src/services/provider-hold-record.ts +137 -0
- package/src/services/provider-state-audit.ts +214 -0
- package/src/services/provisioning-harness/analyze.ts +285 -0
- package/src/services/provisioning-harness/budget-baseline.json +391 -0
- package/src/services/provisioning-harness/capture.ts +197 -0
- package/src/services/provisioning-harness/config.ts +55 -0
- package/src/services/provisioning-harness/context-sources.ts +85 -0
- package/src/services/provisioning-harness/driver.ts +156 -0
- package/src/services/provisioning-harness/expect.ts +81 -0
- package/src/services/provisioning-harness/fixture-matrix.ts +38 -0
- package/src/services/provisioning-harness/fixtures/project/.agent-relay/land-gates.json +1 -0
- package/src/services/provisioning-harness/fixtures/project/.claude/skills/harness-skill/SKILL.md +6 -0
- package/src/services/provisioning-harness/fixtures/project/.mcp.json +1 -0
- package/src/services/provisioning-harness/fixtures/project/AGENTS.md +1 -0
- package/src/services/provisioning-harness/fixtures/project/CLAUDE.md +1 -0
- package/src/services/provisioning-harness/fixtures/project/mcp-server.ts +33 -0
- package/src/services/provisioning-harness/fixtures/provider-home/AGENTS.md +1 -0
- package/src/services/provisioning-harness/fixtures/provider-home/CLAUDE.md +1 -0
- package/src/services/provisioning-harness/host-fixtures.ts +25 -0
- package/src/services/provisioning-harness/index.ts +4 -0
- package/src/services/provisioning-harness/inventory-types.ts +8 -0
- package/src/services/provisioning-harness/inventory.ts +33 -0
- package/src/services/provisioning-harness/lifecycle.ts +193 -0
- package/src/services/provisioning-harness/live.ts +61 -0
- package/src/services/provisioning-harness/manifests.ts +118 -0
- package/src/services/provisioning-harness/prepare.ts +113 -0
- package/src/services/provisioning-harness/redundancy-report.ts +32 -0
- package/src/services/provisioning-harness/redundancy.ts +137 -0
- package/src/services/provisioning-harness/report.ts +129 -0
- package/src/services/provisioning-harness/types.ts +174 -0
- package/src/services/provisioning-registry.ts +15 -0
- package/src/services/rate-limit-resume.ts +220 -0
- package/src/services/reap-verdict.ts +52 -0
- package/src/services/red-main-auto-revert.ts +103 -0
- package/src/services/red-main-controller-deps.ts +80 -0
- package/src/services/red-main-controller.ts +262 -0
- package/src/services/red-main-incident.ts +44 -0
- package/src/services/red-main-quarantine.ts +92 -0
- package/src/services/register-agent.ts +447 -0
- package/src/services/release-readiness.ts +219 -0
- package/src/services/reported-exit-death.ts +29 -0
- package/src/services/response-report-admission.ts +17 -0
- package/src/services/restart-epoch-driver.ts +290 -0
- package/src/services/restart-epoch-reconciler.ts +326 -0
- package/src/services/restart-epoch-stale-command-recovery.ts +133 -0
- package/src/services/restart-instructions.ts +86 -0
- package/src/services/restart-project-role.ts +74 -0
- package/src/services/restart-secret-refs.ts +14 -0
- package/src/services/restart-spawn.ts +510 -0
- package/src/services/review-publish.ts +76 -0
- package/src/services/review-ref-reconcile.ts +337 -0
- package/src/services/run-command-input.ts +22 -0
- package/src/services/run-command.ts +510 -0
- package/src/services/run-completion-message.ts +70 -0
- package/src/services/run-log.ts +212 -0
- package/src/services/run-queue.ts +63 -0
- package/src/services/scheduler-command-cancel.ts +49 -0
- package/src/services/scheduler-command.ts +590 -0
- package/src/services/scheduler-create.ts +25 -0
- package/src/services/scheduler-plan.ts +202 -0
- package/src/services/scheduler-recovery.ts +31 -0
- package/src/services/scheduler.ts +406 -0
- package/src/services/self-care-state.ts +10 -0
- package/src/services/self-effort-grant.ts +93 -0
- package/src/services/self-effort.ts +152 -0
- package/src/services/send-message.ts +548 -0
- package/src/services/server-credentials.ts +53 -0
- package/src/services/shipping-board.ts +111 -0
- package/src/services/shipping-project-config.ts +86 -0
- package/src/services/shipping-stats.ts +86 -0
- package/src/services/shutdown-agent.ts +463 -0
- package/src/services/shutdown-watchdog.ts +119 -0
- package/src/services/spawn-agent.ts +967 -0
- package/src/services/spawn-approval.ts +26 -0
- package/src/services/spawn-brief.ts +39 -0
- package/src/services/spawn-chain-inspector.ts +286 -0
- package/src/services/spawn-cwd-placement.ts +250 -0
- package/src/services/spawn-identity.ts +127 -0
- package/src/services/spawn-instruction-inputs.ts +114 -0
- package/src/services/spawn-issue-activity.ts +102 -0
- package/src/services/spawn-launch-decision.ts +32 -0
- package/src/services/spawn-launch.ts +116 -0
- package/src/services/spawn-loss-escalation.ts +253 -0
- package/src/services/spawn-placement.test-fixture.ts +30 -0
- package/src/services/spawn-project-role.ts +133 -0
- package/src/services/spawn-registration-watchdog.ts +352 -0
- package/src/services/spawn-replay.ts +61 -0
- package/src/services/spawn-repo-probe.ts +118 -0
- package/src/services/spawn-tree-cleanup.ts +37 -0
- package/src/services/spawn-warnings.ts +13 -0
- package/src/services/steward-reaper.ts +244 -0
- package/src/services/task-context-hydration.ts +413 -0
- package/src/services/task-delivery-close.ts +26 -0
- package/src/services/task-delivery-event.ts +11 -0
- package/src/services/task-delivery-land-policy.ts +35 -0
- package/src/services/task-delivery-summary.ts +38 -0
- package/src/services/task-delivery.ts +762 -0
- package/src/services/task-dependency-graph.ts +116 -0
- package/src/services/task-dispatch.ts +178 -0
- package/src/services/task-done-when.ts +45 -0
- package/src/services/task-entity.ts +758 -0
- package/src/services/task-from-issue.ts +80 -0
- package/src/services/task-issue-digest.ts +45 -0
- package/src/services/task-issue-link.ts +158 -0
- package/src/services/task-issue-weave.ts +570 -0
- package/src/services/task-land-withdraw.ts +462 -0
- package/src/services/task-lifecycle.ts +668 -0
- package/src/services/task-nothing-to-land.ts +37 -0
- package/src/services/task-plan-view.ts +172 -0
- package/src/services/task-review-hold.ts +244 -0
- package/src/services/task-semantic-events.ts +396 -0
- package/src/services/task-stage-wake.ts +15 -0
- package/src/services/task-state-reconcile.ts +169 -0
- package/src/services/task-validation.ts +42 -0
- package/src/services/team-claim-race.worker.ts +72 -0
- package/src/services/team-spawn-delegation.ts +30 -0
- package/src/services/team-templates.ts +172 -0
- package/src/services/team.ts +320 -0
- package/src/services/terminal-provider-exit.ts +57 -0
- package/src/services/timer-message-fire-chaos-worker.ts +29 -0
- package/src/services/timer-message-fire-outbox.ts +184 -0
- package/src/services/transient-agent-reaper.ts +412 -0
- package/src/services/turn-reconcile-audit.ts +236 -0
- package/src/services/user-onboarding.ts +98 -0
- package/src/services/user-profile.ts +57 -0
- package/src/services/web-search.ts +83 -0
- package/src/services/web-tool-calls.ts +65 -0
- package/src/services/withdraw-steward.ts +57 -0
- package/src/services/work-finality.ts +34 -0
- package/src/services/workflow-agent-obligation.ts +35 -0
- package/src/services/workflow-auto-start.ts +126 -0
- package/src/services/workflow-backstop.ts +38 -0
- package/src/services/workflow-budget.test-fixture.ts +10 -0
- package/src/services/workflow-caller.ts +32 -0
- package/src/services/workflow-catalog.ts +43 -0
- package/src/services/workflow-child-proof-worker.ts +76 -0
- package/src/services/workflow-child.test-fixture.ts +51 -0
- package/src/services/workflow-ci-main.ts +93 -0
- package/src/services/workflow-control-proof-worker.ts +149 -0
- package/src/services/workflow-coordinator-decision-proof-worker.ts +123 -0
- package/src/services/workflow-coordinator.ts +8 -0
- package/src/services/workflow-decision-answer.ts +18 -0
- package/src/services/workflow-decision-proof-worker.ts +92 -0
- package/src/services/workflow-decision.test-fixture.ts +58 -0
- package/src/services/workflow-decisions.ts +107 -0
- package/src/services/workflow-deferred-cleanup.ts +40 -0
- package/src/services/workflow-dispatch-result.ts +20 -0
- package/src/services/workflow-effect-driver.ts +165 -0
- package/src/services/workflow-effects.ts +544 -0
- package/src/services/workflow-foreach-proof-worker.ts +209 -0
- package/src/services/workflow-land-notice.ts +18 -0
- package/src/services/workflow-land.ts +105 -0
- package/src/services/workflow-notice.ts +32 -0
- package/src/services/workflow-overdue-notice.ts +19 -0
- package/src/services/workflow-pins.ts +162 -0
- package/src/services/workflow-reconcile.ts +210 -0
- package/src/services/workflow-resume-pins.ts +30 -0
- package/src/services/workflow-run-chaos-worker.ts +67 -0
- package/src/services/workflow-run-view.ts +71 -0
- package/src/services/workflow-run.test-fixture.ts +165 -0
- package/src/services/workflow-runs.ts +370 -0
- package/src/services/workflow-scripts.ts +100 -0
- package/src/services/workflow-slice-proof.ts +14 -0
- package/src/services/workflow-stats.ts +208 -0
- package/src/services/workflow-supervisor-state.ts +117 -0
- package/src/services/workflow-supervisor.ts +122 -0
- package/src/services/workflow-verification.ts +68 -0
- package/src/services/workspace-recovery.ts +168 -0
- package/src/services/workspace-task-binding.ts +22 -0
- package/src/settings/modules.ts +149 -0
- package/src/settings/registry.ts +629 -0
- package/src/settings/user-settings.ts +81 -0
- package/src/setup.ts +199 -0
- package/src/shared-mcp.ts +87 -0
- package/src/shutdown.ts +33 -0
- package/src/spawn-admission.ts +48 -0
- package/src/spawn-budget.ts +18 -0
- package/src/spawn-command.ts +373 -0
- package/src/spawn-env.ts +27 -0
- package/src/spawn-intent.ts +17 -0
- package/src/spawn-lease.ts +41 -0
- package/src/spawn-models.ts +22 -0
- package/src/spawn-placement.ts +348 -0
- package/src/spawn-profile-errors.ts +9 -0
- package/src/spawn-quota.ts +15 -0
- package/src/spawn-targets.ts +679 -0
- package/src/sse-agent-status.ts +35 -0
- package/src/sse-outbox-cursor.ts +28 -0
- package/src/sse-visibility.ts +36 -0
- package/src/sse.ts +684 -0
- package/src/startup-context-injection.ts +518 -0
- package/src/startup-timing.ts +30 -0
- package/src/state-adoption/artifacts.ts +27 -0
- package/src/state-adoption/cd-cutover.ts +125 -0
- package/src/state-adoption/files.ts +31 -0
- package/src/state-adoption/index.ts +166 -0
- package/src/state-adoption/linux-plan.ts +67 -0
- package/src/state-adoption/linux.ts +104 -0
- package/src/state-adoption/macos-plan.ts +58 -0
- package/src/state-adoption/macos.ts +112 -0
- package/src/steward-claim-release.ts +38 -0
- package/src/steward-handoff.ts +28 -0
- package/src/steward-identity.ts +54 -0
- package/src/steward-policy-cleanup.ts +222 -0
- package/src/steward-policy-model-reconcile.ts +33 -0
- package/src/steward-policy-name.ts +13 -0
- package/src/steward-provenance.ts +59 -0
- package/src/steward-queue.ts +85 -0
- package/src/steward-slot-recovery.ts +34 -0
- package/src/steward-spawn-guard.ts +344 -0
- package/src/steward.test-fixture.ts +11 -0
- package/src/steward.ts +199 -0
- package/src/stream-proxy.ts +84 -0
- package/src/task-authz.ts +40 -0
- package/src/task-completion.ts +39 -0
- package/src/task-dispatch-live.ts +70 -0
- package/src/task-dispatcher-ranking.ts +136 -0
- package/src/task-dispatcher.ts +841 -0
- package/src/task-owner-notices.ts +35 -0
- package/src/task-owner.ts +63 -0
- package/src/task-plan-status.ts +21 -0
- package/src/task-verification.ts +35 -0
- package/src/team-idle-tracker.ts +39 -0
- package/src/team-template-config.ts +100 -0
- package/src/teams-config-store.ts +22 -0
- package/src/terminal-authz.ts +49 -0
- package/src/token-db-write.ts +44 -0
- package/src/token-db.ts +487 -0
- package/src/token-usage-async.ts +40 -0
- package/src/transport-subscriptions.ts +57 -0
- package/src/types.ts +1 -0
- package/src/upgrade-install-verify.ts +179 -0
- package/src/upgrade-local-id.ts +3 -0
- package/src/upgrade-services.ts +125 -0
- package/src/upgrade.ts +1006 -0
- package/src/user-awaiting-reply.ts +42 -0
- package/src/user-path.ts +246 -0
- package/src/user-settings-async.ts +33 -0
- package/src/user-settings-store.ts +106 -0
- package/src/user-style.ts +83 -0
- package/src/utils.ts +42 -0
- package/src/validation.ts +324 -0
- package/src/vault-backup-config.ts +28 -0
- package/src/vault-expiry-config.ts +12 -0
- package/src/versioned-prompts.ts +57 -0
- package/src/workflow-capabilities.ts +10 -0
- package/src/workflow-prompt-templates.ts +20 -0
- package/src/workspace-action-audit.ts +42 -0
- package/src/workspace-actions.ts +689 -0
- package/src/workspace-auto-merge.ts +1055 -0
- package/src/workspace-changed-paths-client.ts +97 -0
- package/src/workspace-claim.ts +45 -0
- package/src/workspace-cleanup-settle.ts +51 -0
- package/src/workspace-cleanup-stale.ts +231 -0
- package/src/workspace-command-settle.ts +589 -0
- package/src/workspace-config.ts +7 -0
- package/src/workspace-conflict-resolver.ts +182 -0
- package/src/workspace-dead-owner-recovery.ts +19 -0
- package/src/workspace-delivery-tip.ts +51 -0
- package/src/workspace-escalation.ts +107 -0
- package/src/workspace-git-state-client.ts +42 -0
- package/src/workspace-host-client.ts +86 -0
- package/src/workspace-host-target.ts +5 -0
- package/src/workspace-host.ts +61 -0
- package/src/workspace-human-escalation.ts +70 -0
- package/src/workspace-land-gate-watchdog.ts +76 -0
- package/src/workspace-land-gate.ts +99 -0
- package/src/workspace-land-result.ts +12 -0
- package/src/workspace-land-retry.ts +82 -0
- package/src/workspace-land-stopped.ts +57 -0
- package/src/workspace-merge-dispatch.ts +27 -0
- package/src/workspace-merge-progress.ts +369 -0
- package/src/workspace-merge-retry-policy.ts +59 -0
- package/src/workspace-merge.ts +614 -0
- package/src/workspace-nothing-to-land-notice.ts +27 -0
- package/src/workspace-orphans.ts +927 -0
- package/src/workspace-phase.ts +507 -0
- package/src/workspace-pr-completion.ts +285 -0
- package/src/workspace-probe.ts +212 -0
- package/src/workspace-recorded-land.ts +47 -0
- package/src/workspace-recovery-authz.ts +88 -0
- package/src/workspace-rekey.ts +106 -0
- package/src/workspace-steward-authority.ts +16 -0
- package/src/workspace-steward-failure.ts +42 -0
- package/src/workspace-steward-wake.ts +150 -0
- package/src/workspace-steward-watchdog.ts +240 -0
|
@@ -0,0 +1,954 @@
|
|
|
1
|
+
import { contextInjectUnsupported, launchContextSurvivesCompact, launchSystemPromptAppend } from "./context-injection-channel";
|
|
2
|
+
// #1565 P4b — closing the auto-inject loop at the OTHER two boundaries (design §4.4).
|
|
3
|
+
//
|
|
4
|
+
// P4a made every spawn and every restart carry the composed memory preamble in
|
|
5
|
+
// `systemPromptAppend`. That leaves the two boundaries an agent crosses most often — `clear` and
|
|
6
|
+
// `compact` — where a fresh context comes back with the continuity envelope but no memory. This
|
|
7
|
+
// module fills them, through the seam relay already owns: an `agent.injectContext` command.
|
|
8
|
+
//
|
|
9
|
+
// THREE INVARIANTS, all of which are ways this could quietly go wrong:
|
|
10
|
+
//
|
|
11
|
+
// • BESIDE, NEVER MERGED (§7). Memory and the continuity envelope are different things with
|
|
12
|
+
// different lifetimes — durable curated instruction vs. this task, right now. They ride as two
|
|
13
|
+
// distinct `agent.injectContext` payloads with distinct `reason`s, so neither can dilute or
|
|
14
|
+
// truncate the other, and the continuation's bytes are untouched by anything here.
|
|
15
|
+
//
|
|
16
|
+
// • RECOMPOSE, NEVER REPLAY — the CONTENT. The block is rebuilt from the DB at each boundary, so
|
|
17
|
+
// a retraction takes effect. The IDENTITY is replayed, not re-derived (#1625,
|
|
18
|
+
// `memory-seam.ts`), while Project inclusion is derived from that identity's current profile.
|
|
19
|
+
// The launch-time switch result rides on the seam only to detect a profile flip and soften the
|
|
20
|
+
// notice below; it never gates composition.
|
|
21
|
+
//
|
|
22
|
+
// It does NOT delete the earlier copy (#1565 F-REPLACES). A clear/compact does not respawn, so
|
|
23
|
+
// the spawn-time block stays in the system prompt and this one lands in the transcript beside
|
|
24
|
+
// it — two blocks, same markers. The delivered copy therefore carries
|
|
25
|
+
// `MEMORY_SUPERSEDE_NOTICE`, which says in the prompt itself that it is the current one and that
|
|
26
|
+
// anything missing from it was retracted, expired, or is no longer injectable. That STATEMENT is
|
|
27
|
+
// how a mid-session retraction takes effect; nothing available mid-session can rewrite a system
|
|
28
|
+
// prompt. The notice is added on delivery only — the hash and the delta gate stay on the
|
|
29
|
+
// canonical composed block, so the two sides of the comparison keep the same shape.
|
|
30
|
+
//
|
|
31
|
+
// The retraction claim is CONDITIONAL (#1625). It is only true if both copies were resolved
|
|
32
|
+
// under the same launch-recorded identity AND the Project switch has not changed. When either
|
|
33
|
+
// agreement is unproven, the boundary delivers `MEMORY_SUPERSEDE_NOTICE_UNVERIFIED` instead.
|
|
34
|
+
// Telling an agent that live instruction was withdrawn is worse than telling it nothing — it
|
|
35
|
+
// acts on it.
|
|
36
|
+
//
|
|
37
|
+
// • DELTA-GATED AT COMPACT (§4.3(4)). A native compact PRESERVES the system prompt, so the
|
|
38
|
+
// spawn-time block is usually still there: re-sending an unchanged block is pure token tax.
|
|
39
|
+
// We hash what was last injected per agent and skip when nothing moved — and SAY SO in the
|
|
40
|
+
// accounting event, because a silent skip is indistinguishable from a broken seam. `clear`
|
|
41
|
+
// destroys the context, so it always re-injects; there is nothing left to be unchanged.
|
|
42
|
+
//
|
|
43
|
+
// • FIRES ON THE BOUNDARY, NOT ON ITS CONFIRMATION (#2291). Which boundary statuses count is NOT
|
|
44
|
+
// decided here — it is `boundaryMayHaveCommitted` in `self-resume.ts`, shared with the
|
|
45
|
+
// continuation sweep. This module owned a stricter private copy (`status === "succeeded"`) for
|
|
46
|
+
// the whole of #1565 P4b, and a runner that cannot CONFIRM a `/clear` fails the command on
|
|
47
|
+
// purpose (#2043 F2), so the block was dropped on every unconfirmed clear and every timed-out
|
|
48
|
+
// compact — silently, with no recovery, while the continuation beside it was re-delivered by a
|
|
49
|
+
// path that already knew better. Redundant beats wiped: fail toward injecting.
|
|
50
|
+
//
|
|
51
|
+
// PROVIDER-AGNOSTIC BY CONSTRUCTION: the composer takes an identity record, delivery is an
|
|
52
|
+
// `agent.injectContext` command (declared `context.inject` — true for Claude and Codex alike),
|
|
53
|
+
// and the payload is markdown. A provider that declares `inject:false` degrades to
|
|
54
|
+
// spawn-time-only injection, reported in the event rather than crashing or silently vanishing.
|
|
55
|
+
|
|
56
|
+
import { createHash } from "node:crypto";
|
|
57
|
+
import { stripRenderedAtLine } from "./context-block-rendered-at";
|
|
58
|
+
import { errMessage, stringValue } from "@humwick/sdk";
|
|
59
|
+
import { createCommand, findLaunchPromptCommandForAgent } from "./commands-db";
|
|
60
|
+
import { emitCommandEvent } from "./command-events";
|
|
61
|
+
import { REAP_INTERVAL_MS } from "./config";
|
|
62
|
+
import { getConfig, setConfig } from "./config-store";
|
|
63
|
+
import { findMessageByIdempotencyKey, getAgent, type MemoryIdentity } from "./db";
|
|
64
|
+
import { composeMemoryPreamble, describeInstructionTruncation, describeMemoryDemotions, describeMemoryOmissions, describeUnresolvedInstructions, extractMemoryPreamble, memoryRetractionBlock, unresolvedInstructionSlugs, withMemorySupersedeNotice, type ComposedMemoryPreamble } from "./memory-preamble";
|
|
65
|
+
import {
|
|
66
|
+
composeJournalPreamble,
|
|
67
|
+
extractJournalPreamble,
|
|
68
|
+
extractJournalStateHash,
|
|
69
|
+
journalProfileEnabled,
|
|
70
|
+
journalRetractionBlock,
|
|
71
|
+
withJournalSupersedeNotice,
|
|
72
|
+
type ComposedJournalPreamble,
|
|
73
|
+
} from "./journal-preamble";
|
|
74
|
+
import { describeInjectionDrops } from "./memory-inject-filter";
|
|
75
|
+
import { memorySeamForAgent, projectMemoryEnabledForSeam, type ResolvedMemorySeam } from "./memory-seam";
|
|
76
|
+
import { lifecycleMemoryCells, lifecycleProjectNativeInstructionFiles } from "./project-instructions";
|
|
77
|
+
import { INJECTION_SWEEP_BACKLOG_INTERVAL_MS, pacedInjectionSweep } from "./injection-sweep-pacing";
|
|
78
|
+
import { isSqliteBusyError } from "./db/connection";
|
|
79
|
+
import { boundaryMayHaveCommitted, injectionAttemptDecision, MAX_INJECTION_ATTEMPTS, sweepableBoundaryCommands } from "./self-resume";
|
|
80
|
+
import { settleAreaMemoryCommand } from "./memory-area-injection";
|
|
81
|
+
import { emitRelayInjectionEvent } from "./sse";
|
|
82
|
+
import type { AgentCard, Command } from "./types";
|
|
83
|
+
|
|
84
|
+
/** The `agent.injectContext` discriminator for a memory payload. Distinct from the continuation's
|
|
85
|
+
* `self-resume-continuation` and the identity block's `agent-relay-identity`, so all three can
|
|
86
|
+
* correlate to the SAME clear/compact command without colliding (§7: beside, never merged). */
|
|
87
|
+
export const MEMORY_INJECTION_REASON = "memory-preamble";
|
|
88
|
+
|
|
89
|
+
/** Where the per-agent "what did we last inject" hash lives. Not on the agent card: the card is
|
|
90
|
+
* re-registered on every relaunch, and this has to outlive that to be worth anything. */
|
|
91
|
+
const MEMORY_INJECTION_NAMESPACE = "memory-injection";
|
|
92
|
+
|
|
93
|
+
/** #2591 — the journal sibling's own gate state, same shape and same home pattern (its own
|
|
94
|
+
* config namespace so neither gate can clobber the other). */
|
|
95
|
+
const JOURNAL_INJECTION_NAMESPACE = "journal-injection";
|
|
96
|
+
|
|
97
|
+
/** Which boundary produced an injection — the only branch in this module, and it is on the
|
|
98
|
+
* LIFECYCLE event, never on the provider. */
|
|
99
|
+
export type MemoryInjectionEvent = "clear" | "compact";
|
|
100
|
+
|
|
101
|
+
/** Why a boundary did NOT inject. Reported, never silent — an operator looking at an agent that
|
|
102
|
+
* came back without memory must be able to see which of these it was. */
|
|
103
|
+
export type MemoryInjectionSkip = "unchanged" | "inject-unsupported" | "nothing-to-inject";
|
|
104
|
+
|
|
105
|
+
export interface MemoryInjectionState {
|
|
106
|
+
/** Hash of the composed block, or "" for "nothing resolved". */
|
|
107
|
+
hash: string;
|
|
108
|
+
tokens: number;
|
|
109
|
+
entries: number;
|
|
110
|
+
event: MemoryInjectionEvent;
|
|
111
|
+
at: number;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** Stable content hash of a composed block. Short: it is an equality token, not a digest anyone
|
|
115
|
+
* needs to verify. "" hashes to "" so "nothing resolved" is a first-class state rather than the
|
|
116
|
+
* hash of the empty string. */
|
|
117
|
+
export function memoryBlockHash(block: string): string {
|
|
118
|
+
if (!block) return "";
|
|
119
|
+
// #3698 — hashed without its render time, so a launch-baked copy equals an unchanged re-render.
|
|
120
|
+
return createHash("sha256").update(stripRenderedAtLine(block)).digest("hex").slice(0, 16);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export function readMemoryInjectionState(agentId: string): MemoryInjectionState | null {
|
|
124
|
+
return getConfig<MemoryInjectionState>(MEMORY_INJECTION_NAMESPACE, agentId)?.value ?? null;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export function recordMemoryInjectionState(agentId: string, state: MemoryInjectionState): void {
|
|
128
|
+
setConfig(MEMORY_INJECTION_NAMESPACE, agentId, state, "memory-injection");
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** #2591 — the journal gate's "what did this agent last receive" record. Same lifetime rules
|
|
132
|
+
* as the memory state: written only on a DELIVERY that succeeded, so a failed payload leaves
|
|
133
|
+
* the previous hash and the next boundary retries. */
|
|
134
|
+
export interface JournalInjectionState {
|
|
135
|
+
/** The journal contentHash ("" = an empty-journal retraction was delivered). */
|
|
136
|
+
hash: string;
|
|
137
|
+
tokens: number;
|
|
138
|
+
fields: number;
|
|
139
|
+
event: MemoryInjectionEvent;
|
|
140
|
+
at: number;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export function readJournalInjectionState(agentId: string): JournalInjectionState | null {
|
|
144
|
+
return getConfig<JournalInjectionState>(JOURNAL_INJECTION_NAMESPACE, agentId)?.value ?? null;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export function recordJournalInjectionState(agentId: string, state: JournalInjectionState): void {
|
|
148
|
+
setConfig(JOURNAL_INJECTION_NAMESPACE, agentId, state, "journal-injection");
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* WHO a live agent is, in the shape `composeMemoryPreamble` wants — the sibling of
|
|
153
|
+
* `callerMemoryIdentity` (which resolves the same cells from a signed token) and of what
|
|
154
|
+
* `composeProfileSpawnInstructions` builds at spawn time.
|
|
155
|
+
*
|
|
156
|
+
* It MUST agree with the spawn-time identity, or the delta gate compares two different blocks and
|
|
157
|
+
* either re-injects forever or skips something that really did change — and, worse, the delivered
|
|
158
|
+
* block's supersede notice describes the difference as a retraction (#1625). It does not merely
|
|
159
|
+
* try to agree by re-deriving the same fields any more: `memorySeamForAgent` REPLAYS the identity
|
|
160
|
+
* the launch recorded, and falls back to the derivation only when there is no record.
|
|
161
|
+
*/
|
|
162
|
+
export function memoryIdentityForAgent(agent: AgentCard): MemoryIdentity {
|
|
163
|
+
return memorySeamForAgent(agent).identity;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/** Compose an agent's block over the SAME profile-selected cells the spawn seam walks. Project
|
|
167
|
+
* inclusion is re-derived from the current profile named by the replayed identity, never from a
|
|
168
|
+
* persisted launch override. */
|
|
169
|
+
export function composeMemoryForAgent(agent: AgentCard, now?: number): ComposedMemoryPreamble {
|
|
170
|
+
return composeMemoryForSeam(memorySeamForAgent(agent), now);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function composeMemoryForSeam(seam: ResolvedMemorySeam, now?: number): ComposedMemoryPreamble {
|
|
174
|
+
const projectInstructionsEnabled = projectMemoryEnabledForSeam(seam);
|
|
175
|
+
return composeMemoryPreamble(seam.identity, {
|
|
176
|
+
cells: lifecycleMemoryCells(projectInstructionsEnabled),
|
|
177
|
+
projectNativeInstructionFiles: lifecycleProjectNativeInstructionFiles(
|
|
178
|
+
projectInstructionsEnabled,
|
|
179
|
+
seam.identity.provider,
|
|
180
|
+
),
|
|
181
|
+
...(now !== undefined ? { now } : {}),
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
function entriesLabel(count: number): string {
|
|
186
|
+
return `${count} ${count === 1 ? "entry" : "entries"}`;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/** The `{ entries, tokens, scopes, omitted }` accounting §4.4 puts on the `relay-injection` event,
|
|
190
|
+
* plus the per-injection provenance the dashboard's cost panel reads. ONE shape for injected and
|
|
191
|
+
* skipped alike, so a skip is as inspectable as a send. */
|
|
192
|
+
function injectionDetail(
|
|
193
|
+
agent: AgentCard,
|
|
194
|
+
event: MemoryInjectionEvent,
|
|
195
|
+
seam: ResolvedMemorySeam,
|
|
196
|
+
composed: ComposedMemoryPreamble,
|
|
197
|
+
extra: Record<string, unknown>,
|
|
198
|
+
): Record<string, unknown> {
|
|
199
|
+
return {
|
|
200
|
+
source: "memory-preamble",
|
|
201
|
+
event,
|
|
202
|
+
agentId: agent.id,
|
|
203
|
+
identity: seam.identity,
|
|
204
|
+
// #1625 — whether the profile included the project cell, and WHERE its identity came from.
|
|
205
|
+
// `seam:"derived"` is the operator-visible form of "this boundary could not prove it
|
|
206
|
+
// agrees with the spawn block", which is also what softens the supersede notice.
|
|
207
|
+
projectMemoryEnabled: projectMemoryEnabledForSeam(seam),
|
|
208
|
+
seam: seam.fromLaunch ? "launch" : "derived",
|
|
209
|
+
// #2264 — both halves, because they answer different operator questions. `launchProjectAbsent`
|
|
210
|
+
// is why the notice below stops short of the retraction claim (a property of the launch record);
|
|
211
|
+
// `projectBackfilled` is "this agent's memory just came back" (a property of this composition).
|
|
212
|
+
launchProjectAbsent: seam.launchProjectAbsent === true,
|
|
213
|
+
projectBackfilled: seam.projectBackfilled === true,
|
|
214
|
+
tokens: composed.tokens,
|
|
215
|
+
// The instruction preface's cost and per-slug status ride along at every boundary too
|
|
216
|
+
// (#1565 P5.1) — a slug edit takes effect HERE first (§10.1(2)), so this is where an
|
|
217
|
+
// operator watches whether it landed.
|
|
218
|
+
instructionTokens: composed.instructionTokens,
|
|
219
|
+
instructionSlugs: composed.instructionSlugs,
|
|
220
|
+
omitted: composed.omitted,
|
|
221
|
+
omittedByReason: composed.omittedByReason,
|
|
222
|
+
// Demotions to the index (#1979 I1) — the softening that replaced most omissions. Carried so
|
|
223
|
+
// the dashboard cost panel can explain the index's size, not just the rare true loss.
|
|
224
|
+
demoted: composed.demoted,
|
|
225
|
+
demotedByReason: composed.demotedByReason,
|
|
226
|
+
budgets: composed.budgets,
|
|
227
|
+
scopes: composed.scopes,
|
|
228
|
+
entries: composed.entries,
|
|
229
|
+
// What the SHARED injectability filter refused, with reasons (#1565 P5.4) — a boundary
|
|
230
|
+
// re-inject accounts for its drops exactly like a spawn does, or an entry that stopped being
|
|
231
|
+
// injectable mid-session would just quietly vanish from the next block.
|
|
232
|
+
filtered: composed.filtered,
|
|
233
|
+
filteredByReason: composed.filteredByReason,
|
|
234
|
+
// #3409 — on-touch deferrals and the block's cost without them; outside the hashed bytes.
|
|
235
|
+
areaDeferredCount: composed.areaDeferredCount,
|
|
236
|
+
counterfactualTokens: composed.counterfactualTokens,
|
|
237
|
+
hash: memoryBlockHash(composed.block),
|
|
238
|
+
...extra,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
function renderedCount(composed: ComposedMemoryPreamble): number {
|
|
243
|
+
return composed.entries.filter((entry) => entry.rendered).length;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
function omissionSuffix(composed: ComposedMemoryPreamble): string {
|
|
247
|
+
// A demotion to the index (#1979 I1) is a softening, not a loss — named, but distinct from the
|
|
248
|
+
// rare true omission (the index cap itself overflowed).
|
|
249
|
+
const demoted = composed.demoted ? ` (${composed.demoted} demoted to index — ${describeMemoryDemotions(composed.demotedByReason, composed.budgets)})` : "";
|
|
250
|
+
const entries = composed.omitted ? ` (${composed.omitted} omitted — ${describeMemoryOmissions(composed.omittedByReason, composed.budgets)})` : "";
|
|
251
|
+
// Budget drops and filter refusals have different fixes, so the summary names them separately
|
|
252
|
+
// instead of adding up to one undifferentiated "missing" count (#1602's discipline, #1565 P5.4).
|
|
253
|
+
const filtered = composed.filtered.length
|
|
254
|
+
? ` (${composed.filtered.length} not injectable — ${describeInjectionDrops(composed.filteredByReason)})`
|
|
255
|
+
: "";
|
|
256
|
+
// …and a slug that did not resolve at all is a THIRD, differently-fixed cause (#1626 F4): the
|
|
257
|
+
// instruction is missing from the store or its render threw, which no budget or audience edit
|
|
258
|
+
// repairs. It reads on the delivered summary too, not only the skip: a spawn whose charter
|
|
259
|
+
// vanished still delivers a block, just a silently shorter one.
|
|
260
|
+
return `${demoted}${entries}${describeInstructionTruncation(composed.omittedByReason, composed.budgets)}${filtered}${describeUnresolvedInstructions(composed.instructionSlugs)}`;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Is there anything to ACCOUNT FOR when the composed block came out empty (#1626 F4)?
|
|
265
|
+
*
|
|
266
|
+
* The empty block is the one case with no block of its own to state its omissions in, so this
|
|
267
|
+
* predicate is the whole reporting surface for it — and it used to read `composed.omitted` alone,
|
|
268
|
+
* i.e. BUDGET DROPS ONLY. An agent whose every entry was refused by the injectability filter
|
|
269
|
+
* (`sensitive`, `inject:'never'`, an audience it is not in) and whose instruction slugs resolved to
|
|
270
|
+
* nothing emitted NO event at all: `injected:false` and silence, indistinguishable from a broken
|
|
271
|
+
* seam. That silence was masked by `memory.charter` shipping populated — so the state it actually
|
|
272
|
+
* bit in was the BLANK-SLUG state, §10.3.5's K2 kill switch, the configuration an operator is in
|
|
273
|
+
* precisely while diagnosing an incident.
|
|
274
|
+
*
|
|
275
|
+
* All five causes now count, and each keeps its own name in the event because each has a different
|
|
276
|
+
* fix (#1602's discipline): a budget/ceiling drop, a filter refusal, an instruction truncated at
|
|
277
|
+
* its cap, an instruction slug that did not resolve at all, or a whole project cell excluded by
|
|
278
|
+
* the selected profile's Project Instructions switch.
|
|
279
|
+
*
|
|
280
|
+
* What is deliberately still SILENT is the genuinely-empty identity: no entries, no candidates, no
|
|
281
|
+
* refusals, every slug blank or cleanly rendered. Nothing was dropped there, so there is nothing to
|
|
282
|
+
* report — and emitting anyway would put a skip event on every boundary of every agent that simply
|
|
283
|
+
* has no memory yet, which is how a real signal gets tuned out.
|
|
284
|
+
*/
|
|
285
|
+
function hasEmptyBlockAccounting(seam: ResolvedMemorySeam, composed: ComposedMemoryPreamble): boolean {
|
|
286
|
+
return composed.omitted > 0
|
|
287
|
+
|| composed.filtered.length > 0
|
|
288
|
+
|| composed.omittedByReason.instruction > 0
|
|
289
|
+
|| unresolvedInstructionSlugs(composed.instructionSlugs).length > 0
|
|
290
|
+
|| (seam.identity.projectId !== undefined && !projectMemoryEnabledForSeam(seam));
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* The P4b seam: re-inject the composed memory preamble after a clear/compact, BESIDE the
|
|
295
|
+
* continuation (never merged into it), delta-gated on compact.
|
|
296
|
+
*
|
|
297
|
+
* Returns the created `agent.injectContext` command, or null when nothing was sent — which is a
|
|
298
|
+
* normal outcome (unchanged set, nothing resolvable, provider cannot inject) and is always
|
|
299
|
+
* reported in the `relay-injection` event rather than being inferred from silence.
|
|
300
|
+
*/
|
|
301
|
+
export function enqueueMemoryInjectionAfterContextCommand(command: Command, now: number = Date.now()): Command | null {
|
|
302
|
+
// #2291 — the boundary's status answers "did the runner CONFIRM the destructive step", not "did a
|
|
303
|
+
// boundary HAPPEN". This used to read `!== "succeeded"`, which silently dropped the whole memory
|
|
304
|
+
// block on every unconfirmed clear and every timed-out compact: on the live coordinator that was
|
|
305
|
+
// 14 of 17 boundaries over five days, with no event and no recovery, while the continuation beside
|
|
306
|
+
// it was re-delivered every time. Same set as every other boundary re-delivery, from its ONE home
|
|
307
|
+
// in `self-resume.ts` — a second hand-rolled list here is exactly how this drifted in the first
|
|
308
|
+
// place. Idempotency is unchanged: `injectionAttemptsFor` below is keyed by this command's id, so
|
|
309
|
+
// the widened set costs at most one redundant payload, never a duplicate command.
|
|
310
|
+
if (!boundaryMayHaveCommitted(command)) return null;
|
|
311
|
+
if (command.type !== "agent.clearContext" && command.type !== "agent.compact") return null;
|
|
312
|
+
const agent = getAgent(command.target);
|
|
313
|
+
if (!agent) return null;
|
|
314
|
+
// Idempotent against the reactive path running twice (bus update + HTTP update) for one command —
|
|
315
|
+
// and, since #2293, against the sweep running beside it. The rule is the CONTINUATION seam's rule,
|
|
316
|
+
// read from its one home: an attempt in flight or already succeeded blocks a second payload, an
|
|
317
|
+
// attempt that FAILED is retried under the shared cap. The retry arm is unreachable from the
|
|
318
|
+
// reactive path (the first attempt is created at this settle, so nothing can have failed yet) —
|
|
319
|
+
// it exists for the sweep, and closing #1023 window 3 for memory is the whole reason it is here
|
|
320
|
+
// rather than in a second private list.
|
|
321
|
+
if (injectionAttemptDecision(command, MEMORY_INJECTION_REASON).decision !== "enqueue") return null;
|
|
322
|
+
|
|
323
|
+
const event: MemoryInjectionEvent = command.type === "agent.compact" ? "compact" : "clear";
|
|
324
|
+
// #1625 — resolved ONCE for this boundary and threaded through composition, accounting and the
|
|
325
|
+
// notice. Resolving it per use would let the three disagree with each other as well.
|
|
326
|
+
const seam = memorySeamForAgent(agent);
|
|
327
|
+
const composed = composeMemoryForSeam(seam, now);
|
|
328
|
+
const hash = memoryBlockHash(composed.block);
|
|
329
|
+
// #2591 — the journal sibling side, resolved once beside the memory side. Non-journal
|
|
330
|
+
// profiles get `applicable:false`, which neither delivers nor gates: their boundaries stay
|
|
331
|
+
// byte-identical to pre-#2591. Composition runs through the SAME seam identity, so the
|
|
332
|
+
// journal a boundary re-injects is keyed by exactly the (project, profile) the launch used.
|
|
333
|
+
const journal = journalBoundarySide(agent, seam, event);
|
|
334
|
+
|
|
335
|
+
if (contextInjectUnsupported(agent)) {
|
|
336
|
+
// Declared and logged, never a crash: this agent keeps whatever its spawn put in the system
|
|
337
|
+
// prompt and simply does not get the boundary refresh.
|
|
338
|
+
emitMemorySkip(agent, event, seam, composed, "inject-unsupported", command, now);
|
|
339
|
+
return null;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// An empty composition is only "nothing to do" when the agent is not already CARRYING a block.
|
|
343
|
+
// #2154 made that distinction load-bearing: with the project cell the last one left, switching
|
|
344
|
+
// Project Instructions off composes to nothing — and returning null there would leave the
|
|
345
|
+
// spawn-time block sitting in the prompt as current, forever, with no correction. That is the
|
|
346
|
+
// exact mis-description the supersede notice exists to prevent, so an empty composition against a
|
|
347
|
+
// prompt that IS carrying a block falls through to delivery and retracts it.
|
|
348
|
+
//
|
|
349
|
+
// Carrying it has TWO sources and both must be checked: the launch prompt, and an EARLIER
|
|
350
|
+
// boundary's own injection. An agent that spawned into an empty project (no launch block), got a
|
|
351
|
+
// block at compact #1, then had the switch turned off, is carrying one from the second source
|
|
352
|
+
// alone — and skipping there would leave `readMemoryInjectionState` claiming that hash forever.
|
|
353
|
+
//
|
|
354
|
+
// #2591 — a skip on the MEMORY side no longer returns on its own: a journal side that DELIVERS
|
|
355
|
+
// rescues the boundary with its own payload (the two blocks have independent change clocks, and
|
|
356
|
+
// gating the journal on the memory gate would starve it of updates whenever memory is quiet).
|
|
357
|
+
let memoryDelivers = false;
|
|
358
|
+
if (!composed.block.trim() && !launchCarriesMemoryBlock(agent) && !injectedHashForAgent(agent)) {
|
|
359
|
+
// Nothing resolvable. Still worth an event when anything was DROPPED OR DEFECTIVE (§4.3(2) —
|
|
360
|
+
// the empty block is exactly the case with no block to state its own omissions in). See
|
|
361
|
+
// `hasEmptyBlockAccounting`: budget drops, filter refusals and instruction defects all count
|
|
362
|
+
// (#1626 F4), not budget alone.
|
|
363
|
+
//
|
|
364
|
+
// The gate state is deliberately NOT written here (#1565 F6). This module's own invariant is
|
|
365
|
+
// that only a DELIVERY records state, and nothing was delivered: writing "" would claim an
|
|
366
|
+
// empty block reached the agent when the spawn-time block is in fact still in its prompt.
|
|
367
|
+
// Nothing needs the write either — the recorded hash is the block the agent LAST RECEIVED, and
|
|
368
|
+
// if memory reappears the composed hash differs from it and the next boundary re-injects.
|
|
369
|
+
if (hasEmptyBlockAccounting(seam, composed)) emitMemorySkip(agent, event, seam, composed, "nothing-to-inject", command, now);
|
|
370
|
+
if (!journal.delivers) return null;
|
|
371
|
+
} else if (event === "compact" && launchContextSurvivesCompact(agent) && launchBakedMemoryHash(agent) === hash) {
|
|
372
|
+
// §4.3(4): a native compact preserves a real system prompt, so a block BAKED there and still
|
|
373
|
+
// unchanged is already present. Launch text riding summarizable parts (OpenCode) or a user
|
|
374
|
+
// message (Codex) does not survive: launchContextSurvivesCompact() forces re-injection instead
|
|
375
|
+
// of this delta skip (#3698). A clear destroys the context — nothing survives it to be unchanged. #2596 —
|
|
376
|
+
// this reads `launchBakedMemoryHash`, NOT the "recorded last delivery" hash: a block that only
|
|
377
|
+
// ever rode a transcript message has no such proof (see that function's doc).
|
|
378
|
+
emitMemorySkip(agent, event, seam, composed, "unchanged", command, now);
|
|
379
|
+
if (!journal.delivers) return null;
|
|
380
|
+
} else {
|
|
381
|
+
memoryDelivers = true;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
// Delivered WITH the supersede notice; hashed and gated on the canonical block (§F-REPLACES).
|
|
385
|
+
//
|
|
386
|
+
// #1625 — and the notice only makes its RETRACTION claim when this block can be shown to have
|
|
387
|
+
// been resolved the same way the earlier copy was. The identity must come from the launch record
|
|
388
|
+
// and the current Project switch must match the launch-time witness; otherwise a difference may
|
|
389
|
+
// be a resolution/profile-selection difference. A prompt with no launch memory block has no
|
|
390
|
+
// earlier copy to mis-describe, so it remains safe regardless.
|
|
391
|
+
const currentProjectMemoryEnabled = projectMemoryEnabledForSeam(seam);
|
|
392
|
+
// A legacy launch with no witness predates profile gating, when project memory was included.
|
|
393
|
+
// It therefore agrees only while the current selection is still enabled; an OFF switch must
|
|
394
|
+
// downgrade the notice for that first generation instead of assuming the missing field matches.
|
|
395
|
+
const projectGateMatchesLaunch = seam.projectMemoryEnabled === undefined
|
|
396
|
+
? currentProjectMemoryEnabled
|
|
397
|
+
: seam.projectMemoryEnabled === currentProjectMemoryEnabled;
|
|
398
|
+
// #2264 — a launch that recorded NO project composed its block without a project cell, so the two
|
|
399
|
+
// copies differ for a resolution reason rather than a retraction. Gated on the launch RECORD, not
|
|
400
|
+
// on whether the backfill happened to resolve one this time: a probe-derived gate would flip the
|
|
401
|
+
// hard claim back on the moment a cwd stops resolving, against an agent still carrying the
|
|
402
|
+
// previous block.
|
|
403
|
+
const seamVerified = (seam.fromLaunch && !seam.launchProjectAbsent && projectGateMatchesLaunch)
|
|
404
|
+
|| !launchCarriesMemoryBlock(agent);
|
|
405
|
+
// Empty here means the launch block is being RETRACTED (the guard above only lets an empty
|
|
406
|
+
// composition through when the prompt is carrying one), so the notice needs a block of its own.
|
|
407
|
+
const memoryContent = !memoryDelivers
|
|
408
|
+
? ""
|
|
409
|
+
: composed.block.trim()
|
|
410
|
+
? withMemorySupersedeNotice(composed.block, { seamVerified })
|
|
411
|
+
: memoryRetractionBlock({ seamVerified });
|
|
412
|
+
// #2591 — one payload, two independent blocks beside each other (§7's "beside, never merged"
|
|
413
|
+
// applies to the continuation; the journal rides the same delivery as its sibling block, each
|
|
414
|
+
// keeping its own markers, notice and gate state).
|
|
415
|
+
const content = [memoryContent, journal.content].filter(Boolean).join("\n\n");
|
|
416
|
+
const boundaryKey = command.type === "agent.clearContext" ? { afterClearCommandId: command.id } : { afterCompactCommandId: command.id };
|
|
417
|
+
const inject = createCommand({
|
|
418
|
+
type: "agent.injectContext",
|
|
419
|
+
source: "system",
|
|
420
|
+
target: command.target,
|
|
421
|
+
correlationId: command.id,
|
|
422
|
+
params: {
|
|
423
|
+
reason: MEMORY_INJECTION_REASON,
|
|
424
|
+
content,
|
|
425
|
+
// Each side's metadata rides only when that side actually delivered, so a journal-only
|
|
426
|
+
// delivery never records a phantom memory hash (and vice versa).
|
|
427
|
+
...(memoryDelivers
|
|
428
|
+
? {
|
|
429
|
+
memory: {
|
|
430
|
+
event,
|
|
431
|
+
hash,
|
|
432
|
+
tokens: composed.tokens,
|
|
433
|
+
entries: renderedCount(composed),
|
|
434
|
+
omitted: composed.omitted,
|
|
435
|
+
...boundaryKey,
|
|
436
|
+
},
|
|
437
|
+
}
|
|
438
|
+
: {}),
|
|
439
|
+
...(journal.delivers
|
|
440
|
+
? {
|
|
441
|
+
journal: {
|
|
442
|
+
event,
|
|
443
|
+
hash: journal.hash,
|
|
444
|
+
tokens: journal.composed!.tokens,
|
|
445
|
+
fields: journal.composed!.fields.length,
|
|
446
|
+
...boundaryKey,
|
|
447
|
+
},
|
|
448
|
+
}
|
|
449
|
+
: {}),
|
|
450
|
+
},
|
|
451
|
+
});
|
|
452
|
+
emitCommandEvent(inject, "command.requested");
|
|
453
|
+
emitRelayInjectionEvent({
|
|
454
|
+
agentId: agent.id,
|
|
455
|
+
category: "memory",
|
|
456
|
+
summary: deliverySummary(event, composed, memoryDelivers, journal),
|
|
457
|
+
detail: injectionDetail(agent, event, seam, composed, { commandId: inject.id, content, seamVerified, ...journalEventDetail(journal) }),
|
|
458
|
+
timestamp: now,
|
|
459
|
+
idempotencyKey: memoryBoundaryEventKey("delivered", agent.id, command.id),
|
|
460
|
+
});
|
|
461
|
+
return inject;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
/** The resolved fate of the journal side at one boundary (#2591). */
|
|
465
|
+
interface JournalBoundarySide {
|
|
466
|
+
/** False for every profile outside PROJECT_JOURNAL_PROFILES — the side is inert: no
|
|
467
|
+
* composition, no gate, no payload, no accounting. */
|
|
468
|
+
applicable: boolean;
|
|
469
|
+
composed: ComposedJournalPreamble | null;
|
|
470
|
+
/** The payload this side contributes to the combined content ("" = contributes nothing). */
|
|
471
|
+
content: string;
|
|
472
|
+
delivers: boolean;
|
|
473
|
+
/** The journal contentHash — the delta-gate token (stable content, never rendered times). */
|
|
474
|
+
hash: string;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/** Compose and gate the journal side for a boundary, mirroring the memory side's three
|
|
478
|
+
* outcomes: deliver (block or retraction), skip-unchanged (compact, hash equal), or
|
|
479
|
+
* nothing-to-inject (journal empty AND the agent carries no journal block from launch or an
|
|
480
|
+
* earlier boundary — silent by design; an empty journal is the normal state of a fresh
|
|
481
|
+
* project, not a defect worth an event). A compose throw propagates to the contained caller,
|
|
482
|
+
* which reports it exactly like a memory compose failure. */
|
|
483
|
+
function journalBoundarySide(agent: AgentCard, seam: ResolvedMemorySeam, event: MemoryInjectionEvent): JournalBoundarySide {
|
|
484
|
+
const identity = seam.identity;
|
|
485
|
+
if (!identity.projectId || !journalProfileEnabled(identity.profile)) {
|
|
486
|
+
return { applicable: false, composed: null, content: "", delivers: false, hash: "" };
|
|
487
|
+
}
|
|
488
|
+
// #3698 — rendered at the shared render clock, never the boundary's event clock.
|
|
489
|
+
const composed = composeJournalPreamble({ projectId: identity.projectId, profile: identity.profile });
|
|
490
|
+
const hash = composed.contentHash;
|
|
491
|
+
const carries = launchCarriesJournalBlock(agent) || readJournalInjectionState(agent.id) !== null;
|
|
492
|
+
if (!composed.block.trim() && !carries) {
|
|
493
|
+
return { applicable: true, composed, content: "", delivers: false, hash };
|
|
494
|
+
}
|
|
495
|
+
if (event === "compact" && launchContextSurvivesCompact(agent) && launchBakedJournalHash(agent) === hash) {
|
|
496
|
+
return { applicable: true, composed, content: "", delivers: false, hash };
|
|
497
|
+
}
|
|
498
|
+
const content = composed.block.trim() ? withJournalSupersedeNotice(composed.block) : journalRetractionBlock();
|
|
499
|
+
return { applicable: true, composed, content, delivers: true, hash };
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/** The delivered-boundary summary across both sides. The memory clause is byte-identical to
|
|
503
|
+
* the pre-#2591 sentence (worker boundaries and existing assertions are unchanged); the
|
|
504
|
+
* journal clause appends when the journal side delivered, or stands alone when it rescued a
|
|
505
|
+
* boundary the memory side skipped. */
|
|
506
|
+
function deliverySummary(event: MemoryInjectionEvent, composed: ComposedMemoryPreamble, memoryDelivers: boolean, journal: JournalBoundarySide): string {
|
|
507
|
+
const memoryClause = memoryDelivers
|
|
508
|
+
? `re-injected memory after ${event}: ${entriesLabel(renderedCount(composed))}, ${composed.tokens} tokens${omissionSuffix(composed)}`
|
|
509
|
+
: "";
|
|
510
|
+
const journalClause = journal.delivers
|
|
511
|
+
? `journal: ${journal.composed!.fields.length} field${journal.composed!.fields.length === 1 ? "" : "s"}, ${journal.composed!.tokens} tokens`
|
|
512
|
+
: "";
|
|
513
|
+
if (memoryClause && journalClause) return `${memoryClause} + ${journalClause}`;
|
|
514
|
+
if (journalClause) return `re-injected ${journalClause} after ${event}`;
|
|
515
|
+
return memoryClause;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
/** The `journal` sub-object the delivered/skip event detail carries — only when the side is
|
|
519
|
+
* applicable, so non-journal profiles' events keep their exact pre-#2591 shape. */
|
|
520
|
+
function journalEventDetail(journal: JournalBoundarySide): Record<string, unknown> {
|
|
521
|
+
if (!journal.applicable || !journal.composed) return {};
|
|
522
|
+
return {
|
|
523
|
+
journal: {
|
|
524
|
+
hash: journal.hash,
|
|
525
|
+
tokens: journal.composed.tokens,
|
|
526
|
+
fields: journal.composed.fields.map((field) => ({ field: field.field, tokens: field.tokens, ...(field.truncated ? { truncated: true } : {}) })),
|
|
527
|
+
delivered: journal.delivers,
|
|
528
|
+
},
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* The `relay-injection` idempotency keys for one boundary, in ONE place (#2293).
|
|
534
|
+
*
|
|
535
|
+
* They are no longer only a dedup token: the sweep READS them back to tell "the settle already ran
|
|
536
|
+
* and decided" from "the settle never ran at all". A key spelled twice would drift, the sweep would
|
|
537
|
+
* stop recognising a decided boundary, and it would recompose every candidate on every tick —
|
|
538
|
+
* silently turning a backstop into a per-minute tax on the whole 24h lookback.
|
|
539
|
+
*/
|
|
540
|
+
function memoryBoundaryEventKey(outcome: "delivered" | "skipped" | "failed", agentId: string, commandId: string): string {
|
|
541
|
+
const suffix = outcome === "delivered" ? "" : outcome === "skipped" ? "-skip" : "-error";
|
|
542
|
+
return `memory-injection${suffix}:${agentId}:${commandId}`;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* The whole memory side of settling a lifecycle command, in ONE contained call (#1565 F8).
|
|
547
|
+
*
|
|
548
|
+
* Both settle chains (HTTP `PATCH /commands/:id` and the bus update) run a sequence of independent
|
|
549
|
+
* settles; a throw anywhere in it aborts everything after. Composing a block reaches into the DB,
|
|
550
|
+
* ownership resolution and cwd→project resolution, so it has more ways to throw than its neighbours
|
|
551
|
+
* — and none of them are a reason to skip a restart settle or an interrupt redirect. Reported, not
|
|
552
|
+
* swallowed silently: the operator sees the failure on the agent's timeline. The continuation
|
|
553
|
+
* enqueue runs BEFORE this and is untouched by it, which is the ordering that matters.
|
|
554
|
+
*/
|
|
555
|
+
export function settleMemoryInjectionAfterContextCommand(command: Command, now: number = Date.now()): Command | null {
|
|
556
|
+
return containedMemoryInjection(command, now).inject;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* The contained enqueue, and WHICH of the two null outcomes happened (#2293).
|
|
561
|
+
*
|
|
562
|
+
* The settle chains only need "did anything go out". The sweep needs more: a compose that THREW is
|
|
563
|
+
* a retryable failure, while a compose that legitimately declined is a decision. Told apart here,
|
|
564
|
+
* both callers share one containment and one error report — a second try/catch in the sweep would
|
|
565
|
+
* be a second place for the reporting to drift.
|
|
566
|
+
*/
|
|
567
|
+
function containedMemoryInjection(command: Command, now: number, sweep = false): { inject: Command | null; composeFailed: boolean } {
|
|
568
|
+
try {
|
|
569
|
+
const inject = enqueueMemoryInjectionAfterContextCommand(command, now);
|
|
570
|
+
settleMemoryInjectionCommand(command, now);
|
|
571
|
+
settleAreaMemoryCommand(command, now);
|
|
572
|
+
return { inject, composeFailed: false };
|
|
573
|
+
} catch (error) {
|
|
574
|
+
// #2712 — the sweep runs on a fast-fail connection; a held write lock defers the boundary to the
|
|
575
|
+
// next run rather than counting against its compose-failure cap.
|
|
576
|
+
if (sweep && isSqliteBusyError(error)) throw error;
|
|
577
|
+
emitRelayInjectionEvent({
|
|
578
|
+
agentId: command.target,
|
|
579
|
+
category: "memory",
|
|
580
|
+
summary: `memory re-injection failed to compose after ${command.type === "agent.compact" ? "compact" : command.type === "agent.clearContext" ? "clear" : command.type}: ${errMessage(error)}`,
|
|
581
|
+
detail: { source: "memory-preamble", agentId: command.target, commandId: command.id, failed: true },
|
|
582
|
+
timestamp: now,
|
|
583
|
+
idempotencyKey: memoryBoundaryEventKey("failed", command.target, command.id),
|
|
584
|
+
});
|
|
585
|
+
return { inject: null, composeFailed: true };
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
/**
|
|
590
|
+
* #2293 — the missed-boundary SWEEP for memory, the sibling of `sweepMissedContinuationInjections`.
|
|
591
|
+
*
|
|
592
|
+
* #2291 widened WHICH statuses re-inject, but the memory block still only ever gets composed from
|
|
593
|
+
* the reactive settle chains (HTTP `PATCH /commands/:id`, the bus `command.update`). Two windows
|
|
594
|
+
* have no settle to react to at all, and the continuation survives them only because it has a sweep:
|
|
595
|
+
*
|
|
596
|
+
* 1. `timed_out`. The runner NEVER settles a clear/compact to `timed_out` — it reports
|
|
597
|
+
* succeeded/failed. The only producer is the DB TTL sweep (`expireCommands`, run by the
|
|
598
|
+
* `command-expiration` job), and that loop moves the row terminal without running any settle.
|
|
599
|
+
* So the `timed_out` arm of `boundaryMayHaveCommitted` was DEAD for memory in the field: the
|
|
600
|
+
* two timed-out compacts in #2291's field trace could never have been recovered by F1 alone.
|
|
601
|
+
* 2. #1023 windows 2/3 — a relay crash between persisting the boundary status and enqueuing the
|
|
602
|
+
* inject, and a single inject attempt that fails with no retry.
|
|
603
|
+
*
|
|
604
|
+
* It composes from the DB as it is NOW (recompose, never replay), so a boundary recovered late
|
|
605
|
+
* delivers current memory rather than a stale snapshot.
|
|
606
|
+
*
|
|
607
|
+
* WHAT IT WILL NOT DO is second-guess a settle that already ran. A boundary the reactive path
|
|
608
|
+
* DECIDED — delivered, or skipped as unchanged/nothing-to-inject/inject-unsupported — is left alone,
|
|
609
|
+
* read back from that decision's own `relay-injection` event. Without that check the sweep would
|
|
610
|
+
* recompose every delta-gated compact in the 24h lookback on every tick, which on a busy relay is a
|
|
611
|
+
* per-minute walk of the whole memory store for boundaries that were correctly handled the first
|
|
612
|
+
* time. The same readback is why a compose FAILURE is capped rather than retried forever (below).
|
|
613
|
+
*
|
|
614
|
+
* COST IS BOUNDED BY AGENTS, NOT BY BOUNDARIES. Composition — not the enumeration — is what this
|
|
615
|
+
* job costs on the loop (~1.1ms per candidate even for an agent with NO memory, because an empty
|
|
616
|
+
* identity walks the same cells). Two bounds keep it off the maintenance breaker
|
|
617
|
+
* (`MAINTENANCE_BREAKER_LAG_MS`, which would durably auto-PAUSE this job — the backstop switching
|
|
618
|
+
* itself off on exactly the fleet that needs it):
|
|
619
|
+
* • NEWEST BOUNDARY PER AGENT. Memory is a state refresh — "the block this context should now
|
|
620
|
+
* carry" — not a per-event payload, so an older boundary is moot the moment a newer one exists.
|
|
621
|
+
* One composition per agent per tick instead of one per boundary, and one agent can no longer
|
|
622
|
+
* receive N multi-KB blocks back-to-back from a single tick.
|
|
623
|
+
* • THE DECIDED SET, including the SILENT decisions. A genuinely empty identity composes to
|
|
624
|
+
* nothing and stays silent on purpose (§4.3(2) — a skip event on every boundary of every agent
|
|
625
|
+
* with no memory yet is how a real signal gets tuned out), so it has no event to read back and
|
|
626
|
+
* would otherwise be re-composed every 60s forever, which is precisely the population a fresh
|
|
627
|
+
* relay is made of. `rememberSweepDecision` records those in-process instead.
|
|
628
|
+
*
|
|
629
|
+
* Idempotency is F1's seam, unchanged: `injectionAttemptDecision` keyed by the boundary command id,
|
|
630
|
+
* so the sweep cannot double-inject against the reactive path or against its own previous tick.
|
|
631
|
+
*
|
|
632
|
+
* ACCEPTED WITH EYES OPEN: `agent.injectContext` carries `LIFECYCLE_TTL_MS`, so an inject the runner
|
|
633
|
+
* has queued but not settled within it is expired to `timed_out` and re-delivered here, up to the
|
|
634
|
+
* shared cap — an agent mid-turn for longer than that TTL can receive 2-3 blocks. That is the
|
|
635
|
+
* continuation sweep's existing policy (redundant beats wiped) applied to a larger payload, not a
|
|
636
|
+
* new one; the runner's `ProviderInputQueue` serializes them rather than dropping any.
|
|
637
|
+
*/
|
|
638
|
+
export function sweepMissedMemoryInjections(now: number = Date.now(), signal?: AbortSignal): { enqueuedCommandIds: string[]; aborted?: true } {
|
|
639
|
+
const enqueuedCommandIds: string[] = [];
|
|
640
|
+
// #1819 — one candidate is the unit; bailing between candidates leaves the rest for the next tick.
|
|
641
|
+
for (const command of newestBoundaryPerAgent(now, signal)) {
|
|
642
|
+
if (signal?.aborted) break;
|
|
643
|
+
sweepMemoryBoundary(command, now, enqueuedCommandIds);
|
|
644
|
+
}
|
|
645
|
+
return { enqueuedCommandIds, ...(signal?.aborted ? { aborted: true as const } : {}) };
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
/** #2712 — the job's form of {@link sweepMissedMemoryInjections}: the same units, one macrotask each. */
|
|
649
|
+
async function sweepMissedMemoryInjectionsPaced(now: number, signal?: AbortSignal): Promise<{ enqueuedCommandIds: string[]; aborted?: true; moreWork?: true }> {
|
|
650
|
+
const enqueuedCommandIds: string[] = [];
|
|
651
|
+
const { moreWork } = await pacedInjectionSweep(() => newestBoundaryPerAgent(now, signal), (command) => sweepMemoryBoundary(command, now, enqueuedCommandIds), signal);
|
|
652
|
+
return { enqueuedCommandIds, ...(signal?.aborted ? { aborted: true as const } : {}), ...(moreWork ? { moreWork: true as const } : {}) };
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
function sweepMemoryBoundary(command: Command, now: number, enqueuedCommandIds: string[]): void {
|
|
656
|
+
const { decision, attempts } = injectionAttemptDecision(command, MEMORY_INJECTION_REASON);
|
|
657
|
+
if (decision === "in-flight") return;
|
|
658
|
+
if (decision === "exhausted") {
|
|
659
|
+
notifyMemoryInjectionExhausted(command, attempts, now);
|
|
660
|
+
return;
|
|
661
|
+
}
|
|
662
|
+
if (attempts === 0 && (sweepAlreadyDecided(command) || boundaryAlreadyDecided(command))) return;
|
|
663
|
+
// Through the CONTAINED enqueue: composing reaches into the store, the ownership seam and
|
|
664
|
+
// cwd→project resolution, and a throw on one agent must not abort the sweep for every agent
|
|
665
|
+
// behind it (the #1565 F8 rationale, one level up).
|
|
666
|
+
const { inject, composeFailed } = containedMemoryInjection(command, now, true);
|
|
667
|
+
if (inject) {
|
|
668
|
+
enqueuedCommandIds.push(inject.id);
|
|
669
|
+
return;
|
|
670
|
+
}
|
|
671
|
+
rememberSweepDecision(command, composeFailed, now);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* The candidate set, collapsed to ONE boundary per agent — the newest.
|
|
676
|
+
*
|
|
677
|
+
* `sweepableBoundaryCommands` yields per TYPE (every clear, then every compact), each page ordered
|
|
678
|
+
* `created_at DESC`, so "newest" is a cross-type comparison and cannot be read off the iteration
|
|
679
|
+
* order. Everything older for that agent is dropped, not deferred: whatever the newest boundary
|
|
680
|
+
* decides is the state the context should now be in, and a delivery for an older one would be a
|
|
681
|
+
* block sent in the name of a boundary that is long over.
|
|
682
|
+
*
|
|
683
|
+
* `created_at` is a millisecond stamp, so boundaries can tie. That is a non-event here: tied
|
|
684
|
+
* boundaries describe the same state, the block is composed from the store as it is NOW either way,
|
|
685
|
+
* and the id only decides what the delivery correlates to.
|
|
686
|
+
*/
|
|
687
|
+
function newestBoundaryPerAgent(now: number, signal?: AbortSignal): Command[] {
|
|
688
|
+
const newest = new Map<string, Command>();
|
|
689
|
+
const newestClear = new Map<string, Command>();
|
|
690
|
+
for (const command of sweepableBoundaryCommands(now, signal)) {
|
|
691
|
+
const held = newest.get(command.target);
|
|
692
|
+
if (!held || command.createdAt > held.createdAt) newest.set(command.target, command);
|
|
693
|
+
if (command.type !== "agent.clearContext") continue;
|
|
694
|
+
const heldClear = newestClear.get(command.target);
|
|
695
|
+
if (!heldClear || command.createdAt > heldClear.createdAt) newestClear.set(command.target, command);
|
|
696
|
+
}
|
|
697
|
+
return [...newest.values()].map((command) => boundaryThatMustSpeak(command, newestClear.get(command.target)));
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
/**
|
|
701
|
+
* Which of an agent's collapsed boundaries gets to decide — and why it is not always the newest.
|
|
702
|
+
*
|
|
703
|
+
* A `clear` destroys the transcript the last delivery landed in, which is exactly why §4.3(4) never
|
|
704
|
+
* delta-gates one. A `compact` after it IS gated, against `readMemoryInjectionState` — a delivery
|
|
705
|
+
* that the clear wiped. So collapsing a [missed clear, missed compact] pair to the compact alone
|
|
706
|
+
* would let the gate skip a block the context no longer has, and the agent would keep running on
|
|
707
|
+
* whatever its system prompt happened to carry: the #2291 failure mode, re-entered through an
|
|
708
|
+
* optimisation. When the clear happened after the delivery the gate compares against, the clear is
|
|
709
|
+
* the boundary that must speak.
|
|
710
|
+
*
|
|
711
|
+
* COMPARE SETTLE TIMES, NOT ENQUEUE TIMES. `delivered.at` is when the inject SETTLED; the clear's
|
|
712
|
+
* matching clock is therefore `updatedAt` (its terminal settle), not `createdAt` (its enqueue). An
|
|
713
|
+
* inject enqueued before a clear but landing after it is still wiped by that clear — the runner's
|
|
714
|
+
* `ProviderInputQueue` delivers in enqueue order, so the block goes in and the clear then destroys
|
|
715
|
+
* it. Reading `createdAt` concludes "the delivery survived", hands the decision to the compact, and
|
|
716
|
+
* the compact skips against a hash the context no longer carries: exactly the silent drop this
|
|
717
|
+
* function exists to prevent. `updatedAt` is a strict superset — it can only over-deliver, which is
|
|
718
|
+
* the safe direction.
|
|
719
|
+
*/
|
|
720
|
+
function boundaryThatMustSpeak(newest: Command, clear: Command | undefined): Command {
|
|
721
|
+
if (!clear || clear.id === newest.id) return newest;
|
|
722
|
+
const delivered = readMemoryInjectionState(newest.target);
|
|
723
|
+
return delivered && clear.updatedAt > delivered.at ? clear : newest;
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
/**
|
|
727
|
+
* The sweep's own record of a boundary it decided NOT to deliver, per agent, in this process.
|
|
728
|
+
*
|
|
729
|
+
* It exists for the outcomes that leave no trace anywhere else: an empty identity (silent by
|
|
730
|
+
* design), an agent that has since been removed, and a composition that THREW. Without it those
|
|
731
|
+
* re-compose every tick for the whole 24h lookback — the permanent per-minute tax, and the one that
|
|
732
|
+
* scales with a fleet that has no memory yet.
|
|
733
|
+
*
|
|
734
|
+
* Deliberately in-process, not durable: it is a de-duplicator for a repeating tick, not a decision
|
|
735
|
+
* anyone needs after a restart. A restart pays one composition per agent and re-derives the same
|
|
736
|
+
* answer, which is cheaper and simpler than a config row (and its history) per boundary. Keyed by
|
|
737
|
+
* agent with the boundary id inside, so a NEW boundary always re-decides — a memory edit still takes
|
|
738
|
+
* effect at the next boundary, exactly as it does for the reactive path (§10.1(2)). Command ids are
|
|
739
|
+
* UUIDs, so an entry can only ever suppress the exact boundary it was recorded for.
|
|
740
|
+
*
|
|
741
|
+
* A compose failure is the one retryable case: it keeps its own counter and stops at the SAME cap
|
|
742
|
+
* the inject attempts use, because a deterministic composer throw would otherwise re-run a full
|
|
743
|
+
* compose every tick for 24h and be reported only once.
|
|
744
|
+
*/
|
|
745
|
+
const sweptBoundaryDecisions = new Map<string, { commandId: string; composeFailures: number; done: boolean }>();
|
|
746
|
+
/** One entry per agent, so this only grows with agent CHURN. Dropped wholesale rather than
|
|
747
|
+
* LRU-tracked: the worst a cold memo costs is one re-composition per agent on the next tick. */
|
|
748
|
+
const MAX_SWEPT_DECISIONS = 10_000;
|
|
749
|
+
|
|
750
|
+
function sweepAlreadyDecided(command: Command): boolean {
|
|
751
|
+
const held = sweptBoundaryDecisions.get(command.target);
|
|
752
|
+
return held?.commandId === command.id && held.done;
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
function rememberSweepDecision(command: Command, composeFailed: boolean, now: number): void {
|
|
756
|
+
const held = sweptBoundaryDecisions.get(command.target);
|
|
757
|
+
const composeFailures = (held?.commandId === command.id ? held.composeFailures : 0) + (composeFailed ? 1 : 0);
|
|
758
|
+
const done = !composeFailed || composeFailures >= MAX_INJECTION_ATTEMPTS;
|
|
759
|
+
if (sweptBoundaryDecisions.size >= MAX_SWEPT_DECISIONS && !held) sweptBoundaryDecisions.clear();
|
|
760
|
+
sweptBoundaryDecisions.set(command.target, { commandId: command.id, composeFailures, done });
|
|
761
|
+
if (composeFailed && done) notifyMemoryInjectionExhausted(command, composeFailures, now, "compose");
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
export const MEMORY_INJECTION_SWEEP_JOB = {
|
|
765
|
+
id: "memory-injection-sweep",
|
|
766
|
+
critical: false,
|
|
767
|
+
title: "Memory injection sweep",
|
|
768
|
+
description: "Re-compose the memory preamble for a clear/compact boundary whose inject was never created — a timed_out boundary (settled by the TTL sweep, which runs no settle), a relay crash between persisting the boundary and enqueuing, or a failed inject attempt (#2293, closes the #2291 gap).",
|
|
769
|
+
intervalMs: REAP_INTERVAL_MS,
|
|
770
|
+
backlogIntervalMs: INJECTION_SWEEP_BACKLOG_INTERVAL_MS,
|
|
771
|
+
runOnStart: true,
|
|
772
|
+
handler(context: { signal?: AbortSignal }) {
|
|
773
|
+
return sweepMissedMemoryInjectionsPaced(Date.now(), context.signal);
|
|
774
|
+
},
|
|
775
|
+
};
|
|
776
|
+
|
|
777
|
+
/** Did a settle already decide this boundary — delivered it, or stated why it skipped? Read from
|
|
778
|
+
* the decision's own event, which every non-silent outcome emits (see `memoryBoundaryEventKey`). */
|
|
779
|
+
function boundaryAlreadyDecided(command: Command): boolean {
|
|
780
|
+
return findMessageByIdempotencyKey(command.target, memoryBoundaryEventKey("delivered", command.target, command.id)) !== null
|
|
781
|
+
|| findMessageByIdempotencyKey(command.target, memoryBoundaryEventKey("skipped", command.target, command.id)) !== null;
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
/** The cap is spent: stop retrying and SAY so, once. An agent running without its current block is
|
|
785
|
+
* exactly the state #2291 showed nobody can infer from silence. The two ways to spend it — the
|
|
786
|
+
* DELIVERY failing and the COMPOSITION throwing — carry different keys, or the first one reported
|
|
787
|
+
* would silence the other for the same boundary. */
|
|
788
|
+
function notifyMemoryInjectionExhausted(command: Command, attempts: number, now: number, kind: "delivery" | "compose" = "delivery"): void {
|
|
789
|
+
const idempotencyKey = `memory-injection-exhausted${kind === "compose" ? "-compose" : ""}:${command.target}:${command.id}`;
|
|
790
|
+
if (findMessageByIdempotencyKey(command.target, idempotencyKey)) return;
|
|
791
|
+
const event = command.type === "agent.compact" ? "compact" : "clear";
|
|
792
|
+
const what = kind === "compose" ? "failed to compose" : "could not be delivered";
|
|
793
|
+
emitRelayInjectionEvent({
|
|
794
|
+
agentId: command.target,
|
|
795
|
+
category: "memory",
|
|
796
|
+
summary: `memory re-injection gave up after ${attempts} attempt(s) at a ${event} boundary — it ${what}, so this agent is running without the current block`,
|
|
797
|
+
detail: { source: "memory-preamble", agentId: command.target, commandId: command.id, event, attempts, exhausted: kind },
|
|
798
|
+
timestamp: now,
|
|
799
|
+
idempotencyKey,
|
|
800
|
+
});
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
function emitMemorySkip(
|
|
804
|
+
agent: AgentCard,
|
|
805
|
+
event: MemoryInjectionEvent,
|
|
806
|
+
seam: ResolvedMemorySeam,
|
|
807
|
+
composed: ComposedMemoryPreamble,
|
|
808
|
+
skipped: MemoryInjectionSkip,
|
|
809
|
+
command: Command,
|
|
810
|
+
now: number,
|
|
811
|
+
): void {
|
|
812
|
+
const summaries: Record<MemoryInjectionSkip, string> = {
|
|
813
|
+
unchanged: `memory unchanged after ${event} — re-injection skipped (${entriesLabel(renderedCount(composed))}, ${composed.tokens}t)`,
|
|
814
|
+
"inject-unsupported": `memory NOT re-injected after ${event}: provider declares context.inject:false (spawn-time block only)`,
|
|
815
|
+
"nothing-to-inject": `memory resolved nothing to inject after ${event}${omissionSuffix(composed)}`,
|
|
816
|
+
};
|
|
817
|
+
emitRelayInjectionEvent({
|
|
818
|
+
agentId: agent.id,
|
|
819
|
+
category: "memory",
|
|
820
|
+
summary: summaries[skipped],
|
|
821
|
+
detail: injectionDetail(agent, event, seam, composed, { skipped, commandId: command.id }),
|
|
822
|
+
timestamp: now,
|
|
823
|
+
idempotencyKey: memoryBoundaryEventKey("skipped", agent.id, command.id),
|
|
824
|
+
});
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
/**
|
|
828
|
+
* Record what an `agent.injectContext` actually DELIVERED, once it succeeds.
|
|
829
|
+
*
|
|
830
|
+
* Deliberately not recorded at enqueue time: an inject that fails must not leave a hash claiming
|
|
831
|
+
* it landed, or the next compact would skip a block the agent never received and the memory would
|
|
832
|
+
* stay missing until the set happened to change. Recording on success makes the gate self-healing
|
|
833
|
+
* — a failed delivery simply leaves the previous hash, and the next boundary retries.
|
|
834
|
+
*
|
|
835
|
+
* #2591 — the journal side records its own state from the same command's `params.journal`, under
|
|
836
|
+
* the same only-on-success rule. Each side records only when ITS payload rode the command, so a
|
|
837
|
+
* journal-only delivery never stamps a phantom memory hash (and vice versa).
|
|
838
|
+
*/
|
|
839
|
+
export function settleMemoryInjectionCommand(command: Command, now: number = Date.now()): void {
|
|
840
|
+
if (command.type !== "agent.injectContext" || command.status !== "succeeded") return;
|
|
841
|
+
if (command.params.reason !== MEMORY_INJECTION_REASON) return;
|
|
842
|
+
const memory = command.params.memory;
|
|
843
|
+
if (memory && typeof memory === "object" && !Array.isArray(memory)) {
|
|
844
|
+
const record = memory as Record<string, unknown>;
|
|
845
|
+
const hash = typeof record.hash === "string" ? record.hash : undefined;
|
|
846
|
+
if (hash !== undefined) {
|
|
847
|
+
recordMemoryInjectionState(command.target, {
|
|
848
|
+
hash,
|
|
849
|
+
tokens: typeof record.tokens === "number" ? record.tokens : 0,
|
|
850
|
+
entries: typeof record.entries === "number" ? record.entries : 0,
|
|
851
|
+
event: record.event === "clear" ? "clear" : "compact",
|
|
852
|
+
at: now,
|
|
853
|
+
});
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
const journal = command.params.journal;
|
|
857
|
+
if (journal && typeof journal === "object" && !Array.isArray(journal)) {
|
|
858
|
+
const record = journal as Record<string, unknown>;
|
|
859
|
+
const hash = typeof record.hash === "string" ? record.hash : undefined;
|
|
860
|
+
if (hash !== undefined) {
|
|
861
|
+
recordJournalInjectionState(command.target, {
|
|
862
|
+
hash,
|
|
863
|
+
tokens: typeof record.tokens === "number" ? record.tokens : 0,
|
|
864
|
+
fields: typeof record.fields === "number" ? record.fields : 0,
|
|
865
|
+
event: record.event === "clear" ? "clear" : "compact",
|
|
866
|
+
at: now,
|
|
867
|
+
});
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
/**
|
|
873
|
+
* The hash of the block THIS AGENT'S PROMPT ALREADY CARRIES, for the compact gate.
|
|
874
|
+
*
|
|
875
|
+
* The recorded state (what a previous boundary delivered) is authoritative — but only while the
|
|
876
|
+
* context it describes still exists. A relaunch composes a NEW system prompt from the DB as it is
|
|
877
|
+
* then, so a hash recorded before that launch describes a context that has been thrown away
|
|
878
|
+
* (#1565 F5): memory that changed and changed back across a restart would otherwise skip the next
|
|
879
|
+
* compact against a hash the running prompt never carried, and the agent would keep the block the
|
|
880
|
+
* restart actually gave it. So the recorded state loses to any launch composed after it.
|
|
881
|
+
*
|
|
882
|
+
* Otherwise, and before the first boundary, READ THE LAUNCHED PROMPT — its `systemPromptAppend` is
|
|
883
|
+
* the literal text the provider was started with. Without that read, the first compact of every
|
|
884
|
+
* agent's life would re-inject a block that is verifiably already in its system prompt, the exact
|
|
885
|
+
* unconditional re-payment §4.3(4) exists to avoid.
|
|
886
|
+
*
|
|
887
|
+
* Derived, never bookkept: no spawn path has to remember to write anything (there are four, and
|
|
888
|
+
* a fifth would forget), and the answer cannot drift from the bytes that actually launched. A
|
|
889
|
+
* prompt we cannot resolve yields null ⇒ one redundant injection, never a missing one.
|
|
890
|
+
*/
|
|
891
|
+
function injectedHashForAgent(agent: AgentCard): string | null {
|
|
892
|
+
const recorded = readMemoryInjectionState(agent.id);
|
|
893
|
+
const launch = findLaunchPromptCommandForAgent(agent.id, stringValue(agent.meta?.spawnRequestId));
|
|
894
|
+
if (recorded && !(launch && launch.createdAt > recorded.at)) return recorded.hash;
|
|
895
|
+
return launchBakedMemoryHash(agent, launch);
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
/**
|
|
899
|
+
* #2596 — the ONE hash a compact's "unchanged, skip" gate may trust, for memory and journal alike.
|
|
900
|
+
* §4.3(4)'s "a native compact preserves the system prompt" is true of a block composed there at
|
|
901
|
+
* spawn/restart — it is NOT true of a block a LATER boundary delivered as a plain transcript
|
|
902
|
+
* `agent.injectContext` message. That message rides the conversation history a compact summarizes,
|
|
903
|
+
* with no guarantee the summary keeps it byte-for-byte, or at all. `injectedHashForAgent` (above)
|
|
904
|
+
* and the pre-#2596 `journalHashForAgent` both trusted the "recorded" last-reactive-delivery hash
|
|
905
|
+
* for the identical purpose, which let an infrequently-changing block (journal fields move far less
|
|
906
|
+
* often than memory entries — the visible casualty in a live repro, #2596) get silently
|
|
907
|
+
* summarized away with nothing left to prove it ever needed re-sending. So the compact-skip decision
|
|
908
|
+
* reads ONLY the launch record: a block never baked into a launch — or one that has since diverged
|
|
909
|
+
* from what was — always re-injects on compact, exactly as it always does on clear. Redundant beats
|
|
910
|
+
* wiped (#1565, #2291); this is the same doctrine applied to the one place it was missing it.
|
|
911
|
+
*
|
|
912
|
+
* Accepts the launch command so callers that already resolved it (like `injectedHashForAgent`'s
|
|
913
|
+
* other branch) do not pay a second lookup.
|
|
914
|
+
*/
|
|
915
|
+
function launchBakedMemoryHash(agent: AgentCard, launch = findLaunchPromptCommandForAgent(agent.id, stringValue(agent.meta?.spawnRequestId))): string | null {
|
|
916
|
+
const prompt = launchSystemPromptAppend(launch);
|
|
917
|
+
if (!prompt) return null;
|
|
918
|
+
const block = extractMemoryPreamble(prompt);
|
|
919
|
+
return block === null ? null : memoryBlockHash(block);
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
/**
|
|
923
|
+
* Does the system prompt this agent was LAUNCHED with actually carry a memory block? (#1625)
|
|
924
|
+
*
|
|
925
|
+
* The supersede notice's retraction claim is a claim about a SPECIFIC earlier copy — the one in the
|
|
926
|
+
* system prompt. When there is none (a self-registered runner, a spawn whose identity resolved
|
|
927
|
+
* nothing), there is nothing for a re-derived seam to mis-describe and the claim is vacuously safe.
|
|
928
|
+
* Read from the launched bytes for the same reason `injectedHashForAgent` is: it cannot drift from
|
|
929
|
+
* what the provider was actually started with.
|
|
930
|
+
*/
|
|
931
|
+
function launchCarriesMemoryBlock(agent: AgentCard): boolean {
|
|
932
|
+
const prompt = launchSystemPromptAppend(findLaunchPromptCommandForAgent(agent.id, stringValue(agent.meta?.spawnRequestId)));
|
|
933
|
+
return prompt ? extractMemoryPreamble(prompt) !== null : false;
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
/**
|
|
937
|
+
* #2591/#2596 — the journal twin of {@link launchBakedMemoryHash}, for the identical reason: the
|
|
938
|
+
* ONLY hash a compact-skip may trust. One structural difference from the memory side: the journal
|
|
939
|
+
* block renders wall-clock staleness, so the launched prompt is read through its embedded
|
|
940
|
+
* `journal-state:` content-hash line rather than by hashing the rendered bytes. Never falls back to
|
|
941
|
+
* a "recorded" reactive-delivery hash (see `launchBakedMemoryHash`'s doc for why) — unresolvable ⇒
|
|
942
|
+
* null ⇒ one redundant injection, never a missing one.
|
|
943
|
+
*/
|
|
944
|
+
function launchBakedJournalHash(agent: AgentCard): string | null {
|
|
945
|
+
const prompt = launchSystemPromptAppend(findLaunchPromptCommandForAgent(agent.id, stringValue(agent.meta?.spawnRequestId)));
|
|
946
|
+
return prompt === undefined ? null : extractJournalStateHash(prompt);
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
/** #2591 — does the launched prompt carry a journal block? (The journal retraction branch's
|
|
950
|
+
* carrying check, mirroring {@link launchCarriesMemoryBlock}.) */
|
|
951
|
+
function launchCarriesJournalBlock(agent: AgentCard): boolean {
|
|
952
|
+
const prompt = launchSystemPromptAppend(findLaunchPromptCommandForAgent(agent.id, stringValue(agent.meta?.spawnRequestId)));
|
|
953
|
+
return prompt ? extractJournalPreamble(prompt) !== null : false;
|
|
954
|
+
}
|