toolroll 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1113 -0
- package/THIRD_PARTY_NOTICES.md +449 -0
- package/dist/accent-colors.d.ts +48 -0
- package/dist/accent-colors.js +122 -0
- package/dist/action-ledger.d.ts +26 -0
- package/dist/action-ledger.js +75 -0
- package/dist/agent-fence.d.ts +42 -0
- package/dist/agent-fence.js +183 -0
- package/dist/agentconfig.d.ts +216 -0
- package/dist/agentconfig.js +454 -0
- package/dist/api-tokens.d.ts +16 -0
- package/dist/api-tokens.js +27 -0
- package/dist/approval-policy.d.ts +69 -0
- package/dist/approval-policy.js +137 -0
- package/dist/approval-rules-ui.d.ts +25 -0
- package/dist/approval-rules-ui.js +39 -0
- package/dist/assignment-adapters.d.ts +180 -0
- package/dist/assignment-adapters.js +239 -0
- package/dist/assignment-brief.d.ts +71 -0
- package/dist/assignment-brief.js +129 -0
- package/dist/assignment-delivery.d.ts +56 -0
- package/dist/assignment-delivery.js +160 -0
- package/dist/assignment-presentation.d.ts +26 -0
- package/dist/assignment-presentation.js +80 -0
- package/dist/assignment-status.d.ts +62 -0
- package/dist/assignment-status.js +152 -0
- package/dist/assignment-ui.d.ts +71 -0
- package/dist/assignment-ui.js +103 -0
- package/dist/assignment.d.ts +222 -0
- package/dist/assignment.js +399 -0
- package/dist/attest.d.ts +56 -0
- package/dist/attest.js +153 -0
- package/dist/backend.d.ts +97 -0
- package/dist/backend.js +166 -0
- package/dist/backup-ui.d.ts +22 -0
- package/dist/backup-ui.js +59 -0
- package/dist/backup.d.ts +84 -0
- package/dist/backup.js +421 -0
- package/dist/beads.d.ts +34 -0
- package/dist/beads.js +135 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +22 -0
- package/dist/board.d.ts +150 -0
- package/dist/board.js +210 -0
- package/dist/boot-identity.d.ts +63 -0
- package/dist/boot-identity.js +99 -0
- package/dist/browser/THIRD_PARTY_NOTICES.txt +2295 -0
- package/dist/browser/workspace.css +4 -0
- package/dist/browser/workspace.js +225 -0
- package/dist/browser-crew.d.ts +11 -0
- package/dist/browser-crew.js +50 -0
- package/dist/browser-shell.d.ts +8 -0
- package/dist/browser-shell.js +60 -0
- package/dist/browser-workspace.d.ts +780 -0
- package/dist/browser-workspace.js +47 -0
- package/dist/budget-alerts.d.ts +19 -0
- package/dist/budget-alerts.js +46 -0
- package/dist/builder.d.ts +370 -0
- package/dist/builder.js +3262 -0
- package/dist/capscan.d.ts +35 -0
- package/dist/capscan.js +113 -0
- package/dist/chat-acceptance.d.ts +71 -0
- package/dist/chat-acceptance.js +120 -0
- package/dist/chat-actions.d.ts +265 -0
- package/dist/chat-actions.js +1273 -0
- package/dist/chat-channel.d.ts +109 -0
- package/dist/chat-channel.js +652 -0
- package/dist/chat-continuity.d.ts +32 -0
- package/dist/chat-continuity.js +317 -0
- package/dist/chat-controls.d.ts +113 -0
- package/dist/chat-controls.js +53 -0
- package/dist/chat-delivery-state.d.ts +159 -0
- package/dist/chat-delivery-state.js +309 -0
- package/dist/chat-delivery.d.ts +38 -0
- package/dist/chat-delivery.js +693 -0
- package/dist/chat-display.d.ts +1 -0
- package/dist/chat-display.js +18 -0
- package/dist/chat-evidence.d.ts +123 -0
- package/dist/chat-evidence.js +207 -0
- package/dist/chat-flow.d.ts +44 -0
- package/dist/chat-flow.js +215 -0
- package/dist/chat-inbox.d.ts +57 -0
- package/dist/chat-inbox.js +123 -0
- package/dist/chat-polish.d.ts +16 -0
- package/dist/chat-polish.js +135 -0
- package/dist/chat-review.d.ts +46 -0
- package/dist/chat-review.js +98 -0
- package/dist/chat-rooms.d.ts +123 -0
- package/dist/chat-rooms.js +216 -0
- package/dist/chat-task-actions.d.ts +44 -0
- package/dist/chat-task-actions.js +79 -0
- package/dist/check-progress.d.ts +51 -0
- package/dist/check-progress.js +290 -0
- package/dist/child-database.d.ts +12 -0
- package/dist/child-database.js +30 -0
- package/dist/claim.d.ts +688 -0
- package/dist/claim.js +1740 -0
- package/dist/cli.d.ts +137 -0
- package/dist/cli.js +1461 -0
- package/dist/codex-limits.d.ts +15 -0
- package/dist/codex-limits.js +145 -0
- package/dist/coding-context.d.ts +55 -0
- package/dist/coding-context.js +92 -0
- package/dist/coding-handoff.d.ts +57 -0
- package/dist/coding-handoff.js +277 -0
- package/dist/coding-provider.d.ts +72 -0
- package/dist/coding-provider.js +424 -0
- package/dist/coding-shipping-ui.d.ts +4 -0
- package/dist/coding-shipping-ui.js +12 -0
- package/dist/coding-types.d.ts +62 -0
- package/dist/coding-types.js +1 -0
- package/dist/coding-ui.d.ts +17 -0
- package/dist/coding-ui.js +364 -0
- package/dist/coding-update.d.ts +15 -0
- package/dist/coding-update.js +149 -0
- package/dist/coding-workspace.d.ts +124 -0
- package/dist/coding-workspace.js +768 -0
- package/dist/container-state.d.ts +5 -0
- package/dist/container-state.js +62 -0
- package/dist/containment.d.ts +197 -0
- package/dist/containment.js +559 -0
- package/dist/contest.d.ts +318 -0
- package/dist/contest.js +753 -0
- package/dist/control-setup.d.ts +35 -0
- package/dist/control-setup.js +40 -0
- package/dist/control-ui.d.ts +29 -0
- package/dist/control-ui.js +53 -0
- package/dist/controller-service.d.ts +1 -0
- package/dist/controller-service.js +19 -0
- package/dist/controller-supervisor.d.ts +30 -0
- package/dist/controller-supervisor.js +104 -0
- package/dist/converse.d.ts +304 -0
- package/dist/converse.js +849 -0
- package/dist/coordinator-proposals.d.ts +29 -0
- package/dist/coordinator-proposals.js +137 -0
- package/dist/coordinator.d.ts +186 -0
- package/dist/coordinator.js +447 -0
- package/dist/credentials-ui.d.ts +25 -0
- package/dist/credentials-ui.js +48 -0
- package/dist/daemon.d.ts +209 -0
- package/dist/daemon.js +604 -0
- package/dist/decision.d.ts +120 -0
- package/dist/decision.js +388 -0
- package/dist/demo.d.ts +55 -0
- package/dist/demo.js +992 -0
- package/dist/desktop-access.d.ts +28 -0
- package/dist/desktop-access.js +88 -0
- package/dist/desktop-bundle.d.ts +16 -0
- package/dist/desktop-bundle.js +74 -0
- package/dist/desktop-host.d.ts +54 -0
- package/dist/desktop-host.js +508 -0
- package/dist/desktop-update-gate.d.ts +12 -0
- package/dist/desktop-update-gate.js +91 -0
- package/dist/desktop-update-recovery.d.ts +14 -0
- package/dist/desktop-update-recovery.js +243 -0
- package/dist/desktop-update.d.ts +110 -0
- package/dist/desktop-update.js +740 -0
- package/dist/discord-api.d.ts +20 -0
- package/dist/discord-api.js +138 -0
- package/dist/discord-chat.d.ts +16 -0
- package/dist/discord-chat.js +381 -0
- package/dist/discord-settings.d.ts +7 -0
- package/dist/discord-settings.js +75 -0
- package/dist/discord.d.ts +10 -0
- package/dist/discord.js +169 -0
- package/dist/discover.d.ts +75 -0
- package/dist/discover.js +150 -0
- package/dist/dispatch.d.ts +100 -0
- package/dist/dispatch.js +311 -0
- package/dist/dispose.d.ts +161 -0
- package/dist/dispose.js +803 -0
- package/dist/email-settings.d.ts +34 -0
- package/dist/email-settings.js +50 -0
- package/dist/envelope.d.ts +47 -0
- package/dist/envelope.js +105 -0
- package/dist/evidence-pack.d.ts +185 -0
- package/dist/evidence-pack.js +258 -0
- package/dist/evidence.d.ts +345 -0
- package/dist/evidence.js +782 -0
- package/dist/exec.d.ts +285 -0
- package/dist/exec.js +1841 -0
- package/dist/exhaustion.d.ts +85 -0
- package/dist/exhaustion.js +141 -0
- package/dist/export-ui.d.ts +4 -0
- package/dist/export-ui.js +17 -0
- package/dist/export.d.ts +48 -0
- package/dist/export.js +305 -0
- package/dist/flow-actions.d.ts +77 -0
- package/dist/flow-actions.js +203 -0
- package/dist/flow-code.d.ts +50 -0
- package/dist/flow-code.js +159 -0
- package/dist/flow-draft.d.ts +38 -0
- package/dist/flow-draft.js +80 -0
- package/dist/flow-engine.d.ts +66 -0
- package/dist/flow-engine.js +416 -0
- package/dist/flow-insights.d.ts +95 -0
- package/dist/flow-insights.js +149 -0
- package/dist/flow-live.d.ts +24 -0
- package/dist/flow-live.js +150 -0
- package/dist/flow-people.d.ts +24 -0
- package/dist/flow-people.js +91 -0
- package/dist/flow-replies.d.ts +48 -0
- package/dist/flow-replies.js +113 -0
- package/dist/flow-scripts.d.ts +38 -0
- package/dist/flow-scripts.js +73 -0
- package/dist/flow-secrets.d.ts +13 -0
- package/dist/flow-secrets.js +45 -0
- package/dist/flow-sort.d.ts +82 -0
- package/dist/flow-sort.js +153 -0
- package/dist/flow-steps.d.ts +40 -0
- package/dist/flow-steps.js +408 -0
- package/dist/flow-triggers.d.ts +244 -0
- package/dist/flow-triggers.js +959 -0
- package/dist/flows-ui.d.ts +20 -0
- package/dist/flows-ui.js +175 -0
- package/dist/flows.d.ts +229 -0
- package/dist/flows.js +968 -0
- package/dist/fonts.d.ts +19 -0
- package/dist/fonts.js +19 -0
- package/dist/gaps.d.ts +35 -0
- package/dist/gaps.js +101 -0
- package/dist/gate-failure.d.ts +40 -0
- package/dist/gate-failure.js +66 -0
- package/dist/git.d.ts +54 -0
- package/dist/git.js +94 -0
- package/dist/google-mail.d.ts +58 -0
- package/dist/google-mail.js +151 -0
- package/dist/grant.d.ts +136 -0
- package/dist/grant.js +238 -0
- package/dist/graph.d.ts +164 -0
- package/dist/graph.js +383 -0
- package/dist/guides.d.ts +22 -0
- package/dist/guides.js +363 -0
- package/dist/held.d.ts +150 -0
- package/dist/held.js +799 -0
- package/dist/invoke.d.ts +112 -0
- package/dist/invoke.js +780 -0
- package/dist/issues.d.ts +41 -0
- package/dist/issues.js +131 -0
- package/dist/job-object-helper.ps1 +252 -0
- package/dist/jsonl-discriminants.d.ts +11 -0
- package/dist/jsonl-discriminants.js +93 -0
- package/dist/keys.d.ts +104 -0
- package/dist/keys.js +229 -0
- package/dist/kits-ui.d.ts +17 -0
- package/dist/kits-ui.js +46 -0
- package/dist/kits.d.ts +86 -0
- package/dist/kits.js +215 -0
- package/dist/knowledge-cli.d.ts +101 -0
- package/dist/knowledge-cli.js +92 -0
- package/dist/knowledge-ui.d.ts +24 -0
- package/dist/knowledge-ui.js +40 -0
- package/dist/lead-context.d.ts +8 -0
- package/dist/lead-context.js +56 -0
- package/dist/lead-follow.d.ts +22 -0
- package/dist/lead-follow.js +167 -0
- package/dist/lead-status.d.ts +75 -0
- package/dist/lead-status.js +285 -0
- package/dist/ledger-chain.d.ts +46 -0
- package/dist/ledger-chain.js +187 -0
- package/dist/ledger-csv.d.ts +4 -0
- package/dist/ledger-csv.js +11 -0
- package/dist/ledger-view.d.ts +24 -0
- package/dist/ledger-view.js +58 -0
- package/dist/limits-ui.d.ts +26 -0
- package/dist/limits-ui.js +67 -0
- package/dist/link.d.ts +72 -0
- package/dist/link.js +217 -0
- package/dist/live.d.ts +96 -0
- package/dist/live.js +366 -0
- package/dist/liveness.d.ts +30 -0
- package/dist/liveness.js +42 -0
- package/dist/log.d.ts +7 -0
- package/dist/log.js +25 -0
- package/dist/mailbox.d.ts +57 -0
- package/dist/mailbox.js +150 -0
- package/dist/maintenance.d.ts +11 -0
- package/dist/maintenance.js +35 -0
- package/dist/mate-cli.d.ts +52 -0
- package/dist/mate-cli.js +345 -0
- package/dist/mate-contract.d.ts +10 -0
- package/dist/mate-contract.js +30 -0
- package/dist/mate-doors.d.ts +69 -0
- package/dist/mate-doors.js +548 -0
- package/dist/mate-progress.d.ts +29 -0
- package/dist/mate-progress.js +121 -0
- package/dist/mate-tools.d.ts +94 -0
- package/dist/mate-tools.js +1878 -0
- package/dist/mate.d.ts +92 -0
- package/dist/mate.js +435 -0
- package/dist/mcp-connect.d.ts +103 -0
- package/dist/mcp-connect.js +252 -0
- package/dist/mcp.d.ts +27 -0
- package/dist/mcp.js +651 -0
- package/dist/memory-cli.d.ts +466 -0
- package/dist/memory-cli.js +111 -0
- package/dist/memory-pass.d.ts +160 -0
- package/dist/memory-pass.js +409 -0
- package/dist/metrics.d.ts +3 -0
- package/dist/metrics.js +56 -0
- package/dist/mobile-viewport.d.ts +3 -0
- package/dist/mobile-viewport.js +37 -0
- package/dist/model-catalog.d.ts +118 -0
- package/dist/model-catalog.js +376 -0
- package/dist/models-cli.d.ts +102 -0
- package/dist/models-cli.js +66 -0
- package/dist/models-ui.d.ts +34 -0
- package/dist/models-ui.js +68 -0
- package/dist/modes.d.ts +80 -0
- package/dist/modes.js +182 -0
- package/dist/monitoring-settings.d.ts +44 -0
- package/dist/monitoring-settings.js +173 -0
- package/dist/monitoring-ui.d.ts +20 -0
- package/dist/monitoring-ui.js +51 -0
- package/dist/monitoring.d.ts +34 -0
- package/dist/monitoring.js +221 -0
- package/dist/names.d.ts +67 -0
- package/dist/names.js +102 -0
- package/dist/observations.d.ts +40 -0
- package/dist/observations.js +211 -0
- package/dist/oidc.d.ts +71 -0
- package/dist/oidc.js +182 -0
- package/dist/onboard.d.ts +108 -0
- package/dist/onboard.js +325 -0
- package/dist/openrouter-models.d.ts +30 -0
- package/dist/openrouter-models.js +120 -0
- package/dist/operate.d.ts +118 -0
- package/dist/operate.js +11321 -0
- package/dist/peek-cli.d.ts +97 -0
- package/dist/peek-cli.js +215 -0
- package/dist/peek.d.ts +134 -0
- package/dist/peek.js +578 -0
- package/dist/phase-routing.d.ts +307 -0
- package/dist/phase-routing.js +658 -0
- package/dist/plan-auto.d.ts +14 -0
- package/dist/plan-auto.js +92 -0
- package/dist/plan.d.ts +186 -0
- package/dist/plan.js +401 -0
- package/dist/planner-source.d.ts +251 -0
- package/dist/planner-source.js +460 -0
- package/dist/planner.d.ts +75 -0
- package/dist/planner.js +992 -0
- package/dist/policy-ui.d.ts +20 -0
- package/dist/policy-ui.js +41 -0
- package/dist/policy.d.ts +111 -0
- package/dist/policy.js +231 -0
- package/dist/prepared-evidence.d.ts +16 -0
- package/dist/prepared-evidence.js +96 -0
- package/dist/pricing.d.ts +45 -0
- package/dist/pricing.js +77 -0
- package/dist/principal.d.ts +42 -0
- package/dist/principal.js +82 -0
- package/dist/probe.d.ts +46 -0
- package/dist/probe.js +79 -0
- package/dist/process-custody.d.ts +17 -0
- package/dist/process-custody.js +91 -0
- package/dist/process-liveness.d.ts +10 -0
- package/dist/process-liveness.js +81 -0
- package/dist/process-recovery-anchor.d.ts +75 -0
- package/dist/process-recovery-anchor.js +188 -0
- package/dist/process-recovery-coalition.d.ts +25 -0
- package/dist/process-recovery-coalition.js +105 -0
- package/dist/process-recovery-eligibility.d.ts +178 -0
- package/dist/process-recovery-eligibility.js +170 -0
- package/dist/process-recovery-native.d.ts +172 -0
- package/dist/process-recovery-native.js +592 -0
- package/dist/process-recovery-provenance.d.ts +163 -0
- package/dist/process-recovery-provenance.js +292 -0
- package/dist/process-recovery-services.d.ts +56 -0
- package/dist/process-recovery-services.js +191 -0
- package/dist/process-recovery-settlement.d.ts +32 -0
- package/dist/process-recovery-settlement.js +132 -0
- package/dist/process-recovery.d.ts +41 -0
- package/dist/process-recovery.js +91 -0
- package/dist/process-tree.d.ts +41 -0
- package/dist/process-tree.js +264 -0
- package/dist/project-access.d.ts +14 -0
- package/dist/project-access.js +34 -0
- package/dist/project-cli.d.ts +18 -0
- package/dist/project-cli.js +104 -0
- package/dist/project-delete-ui.d.ts +22 -0
- package/dist/project-delete-ui.js +48 -0
- package/dist/project-delete.d.ts +55 -0
- package/dist/project-delete.js +413 -0
- package/dist/project-knowledge.d.ts +111 -0
- package/dist/project-knowledge.js +241 -0
- package/dist/project-learning.d.ts +100 -0
- package/dist/project-learning.js +438 -0
- package/dist/project-memory.d.ts +81 -0
- package/dist/project-memory.js +264 -0
- package/dist/project-skills.d.ts +152 -0
- package/dist/project-skills.js +660 -0
- package/dist/project-tools.d.ts +219 -0
- package/dist/project-tools.js +796 -0
- package/dist/project.d.ts +61 -0
- package/dist/project.js +125 -0
- package/dist/prompt.d.ts +22 -0
- package/dist/prompt.js +72 -0
- package/dist/proof.d.ts +513 -0
- package/dist/proof.js +1140 -0
- package/dist/proposal.d.ts +82 -0
- package/dist/proposal.js +210 -0
- package/dist/provider-connection.d.ts +22 -0
- package/dist/provider-connection.js +98 -0
- package/dist/provider-limits.d.ts +35 -0
- package/dist/provider-limits.js +95 -0
- package/dist/provider.d.ts +279 -0
- package/dist/provider.js +935 -0
- package/dist/publish.d.ts +107 -0
- package/dist/publish.js +650 -0
- package/dist/pulls.d.ts +118 -0
- package/dist/pulls.js +240 -0
- package/dist/push.d.ts +95 -0
- package/dist/push.js +353 -0
- package/dist/quality.d.ts +8 -0
- package/dist/quality.js +6 -0
- package/dist/recipe-ui.d.ts +18 -0
- package/dist/recipe-ui.js +152 -0
- package/dist/recipes.d.ts +81 -0
- package/dist/recipes.js +332 -0
- package/dist/remote.d.ts +67 -0
- package/dist/remote.js +122 -0
- package/dist/render.d.ts +64 -0
- package/dist/render.js +587 -0
- package/dist/report-summary.d.ts +13 -0
- package/dist/report-summary.js +15 -0
- package/dist/repos.d.ts +65 -0
- package/dist/repos.js +277 -0
- package/dist/repository-context-ui.d.ts +2 -0
- package/dist/repository-context-ui.js +10 -0
- package/dist/repository-context.d.ts +67 -0
- package/dist/repository-context.js +376 -0
- package/dist/restart-certification.d.ts +134 -0
- package/dist/restart-certification.js +226 -0
- package/dist/result-actions.d.ts +28 -0
- package/dist/result-actions.js +270 -0
- package/dist/result-completion.d.ts +18 -0
- package/dist/result-completion.js +66 -0
- package/dist/result-review.d.ts +213 -0
- package/dist/result-review.js +430 -0
- package/dist/retention-ui.d.ts +12 -0
- package/dist/retention-ui.js +39 -0
- package/dist/retention.d.ts +72 -0
- package/dist/retention.js +288 -0
- package/dist/review-context.d.ts +243 -0
- package/dist/review-context.js +1043 -0
- package/dist/review-evidence.d.ts +33 -0
- package/dist/review-evidence.js +56 -0
- package/dist/reviewer.d.ts +97 -0
- package/dist/reviewer.js +202 -0
- package/dist/routine.d.ts +228 -0
- package/dist/routine.js +764 -0
- package/dist/runner.d.ts +266 -0
- package/dist/runner.js +399 -0
- package/dist/scan.d.ts +32 -0
- package/dist/scan.js +92 -0
- package/dist/scope.d.ts +695 -0
- package/dist/scope.js +1176 -0
- package/dist/scout-report.d.ts +42 -0
- package/dist/scout-report.js +108 -0
- package/dist/scout.d.ts +69 -0
- package/dist/scout.js +351 -0
- package/dist/serve.d.ts +313 -0
- package/dist/serve.js +21776 -0
- package/dist/session-brief.d.ts +8 -0
- package/dist/session-brief.js +24 -0
- package/dist/session-cli.d.ts +13 -0
- package/dist/session-cli.js +284 -0
- package/dist/session-contract.d.ts +183 -0
- package/dist/session-contract.js +122 -0
- package/dist/session-http.d.ts +19 -0
- package/dist/session-http.js +154 -0
- package/dist/session-server.d.ts +12 -0
- package/dist/session-server.js +37 -0
- package/dist/session-service.d.ts +22 -0
- package/dist/session-service.js +157 -0
- package/dist/setup-guide.d.ts +39 -0
- package/dist/setup-guide.js +93 -0
- package/dist/sign-in-guard.d.ts +45 -0
- package/dist/sign-in-guard.js +74 -0
- package/dist/skills-ui.d.ts +11 -0
- package/dist/skills-ui.js +58 -0
- package/dist/skills.d.ts +97 -0
- package/dist/skills.js +276 -0
- package/dist/slack-api.d.ts +55 -0
- package/dist/slack-api.js +229 -0
- package/dist/slack-chat.d.ts +28 -0
- package/dist/slack-chat.js +413 -0
- package/dist/slack-settings.d.ts +7 -0
- package/dist/slack-settings.js +75 -0
- package/dist/slack-state.d.ts +13 -0
- package/dist/slack-state.js +9 -0
- package/dist/slack.d.ts +13 -0
- package/dist/slack.js +167 -0
- package/dist/spend-ui.d.ts +28 -0
- package/dist/spend-ui.js +95 -0
- package/dist/spend.d.ts +142 -0
- package/dist/spend.js +313 -0
- package/dist/sqlite-runtime.d.ts +3 -0
- package/dist/sqlite-runtime.js +6 -0
- package/dist/sso-settings.d.ts +33 -0
- package/dist/sso-settings.js +103 -0
- package/dist/sso-ui.d.ts +22 -0
- package/dist/sso-ui.js +39 -0
- package/dist/storage.d.ts +15 -0
- package/dist/storage.js +84 -0
- package/dist/store.d.ts +7754 -0
- package/dist/store.js +23279 -0
- package/dist/structured-output.d.ts +58 -0
- package/dist/structured-output.js +103 -0
- package/dist/style-asset.d.ts +7 -0
- package/dist/style-asset.js +41 -0
- package/dist/subscription-chat.d.ts +46 -0
- package/dist/subscription-chat.js +275 -0
- package/dist/summary.d.ts +33 -0
- package/dist/summary.js +71 -0
- package/dist/supervisor.mjs +297 -0
- package/dist/surface.d.ts +63 -0
- package/dist/surface.js +352 -0
- package/dist/sync.d.ts +94 -0
- package/dist/sync.js +279 -0
- package/dist/task-composer.d.ts +13 -0
- package/dist/task-composer.js +52 -0
- package/dist/task-control.d.ts +165 -0
- package/dist/task-control.js +214 -0
- package/dist/task-outcome-cli.d.ts +10 -0
- package/dist/task-outcome-cli.js +92 -0
- package/dist/task-text.d.ts +30 -0
- package/dist/task-text.js +41 -0
- package/dist/team-cli.d.ts +15 -0
- package/dist/team-cli.js +618 -0
- package/dist/team-contract.d.ts +92 -0
- package/dist/team-contract.js +1 -0
- package/dist/team-http.d.ts +17 -0
- package/dist/team-http.js +144 -0
- package/dist/team-leads.d.ts +81 -0
- package/dist/team-leads.js +565 -0
- package/dist/team-runtime.d.ts +27 -0
- package/dist/team-runtime.js +264 -0
- package/dist/team-ui.d.ts +3 -0
- package/dist/team-ui.js +9 -0
- package/dist/team-updates.d.ts +8 -0
- package/dist/team-updates.js +57 -0
- package/dist/teammate-admin.d.ts +53 -0
- package/dist/teammate-admin.js +111 -0
- package/dist/teammate-desk.d.ts +60 -0
- package/dist/teammate-desk.js +154 -0
- package/dist/teammate-memory.d.ts +64 -0
- package/dist/teammate-memory.js +196 -0
- package/dist/teammate-question.d.ts +59 -0
- package/dist/teammate-question.js +175 -0
- package/dist/teammate-tools.d.ts +108 -0
- package/dist/teammate-tools.js +271 -0
- package/dist/teammate-week.d.ts +68 -0
- package/dist/teammate-week.js +132 -0
- package/dist/teammate-work.d.ts +76 -0
- package/dist/teammate-work.js +280 -0
- package/dist/teammates-ui.d.ts +20 -0
- package/dist/teammates-ui.js +166 -0
- package/dist/teammates.d.ts +180 -0
- package/dist/teammates.js +253 -0
- package/dist/teams-api.d.ts +33 -0
- package/dist/teams-api.js +204 -0
- package/dist/teams-chat.d.ts +26 -0
- package/dist/teams-chat.js +215 -0
- package/dist/teams-settings.d.ts +12 -0
- package/dist/teams-settings.js +57 -0
- package/dist/teams.d.ts +21 -0
- package/dist/teams.js +124 -0
- package/dist/telegram-flow.d.ts +49 -0
- package/dist/telegram-flow.js +110 -0
- package/dist/telegram-mate.d.ts +137 -0
- package/dist/telegram-mate.js +707 -0
- package/dist/telegram-progress.d.ts +14 -0
- package/dist/telegram-progress.js +129 -0
- package/dist/telegram-settings.d.ts +9 -0
- package/dist/telegram-settings.js +36 -0
- package/dist/telegram-status.d.ts +75 -0
- package/dist/telegram-status.js +265 -0
- package/dist/telegram-team.d.ts +85 -0
- package/dist/telegram-team.js +359 -0
- package/dist/telegram.d.ts +230 -0
- package/dist/telegram.js +1931 -0
- package/dist/templates.d.ts +65 -0
- package/dist/templates.js +118 -0
- package/dist/tool-launcher.d.ts +1 -0
- package/dist/tool-launcher.js +101 -0
- package/dist/tools-ui.d.ts +30 -0
- package/dist/tools-ui.js +40 -0
- package/dist/transitions-recipes.d.ts +1 -0
- package/dist/transitions-recipes.js +203 -0
- package/dist/tree-proof.d.ts +34 -0
- package/dist/tree-proof.js +58 -0
- package/dist/verification-evidence.d.ts +44 -0
- package/dist/verification-evidence.js +238 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +10 -0
- package/dist/webhooks.d.ts +91 -0
- package/dist/webhooks.js +283 -0
- package/dist/work-index.d.ts +68 -0
- package/dist/work-index.js +384 -0
- package/dist/work-summary.d.ts +57 -0
- package/dist/work-summary.js +116 -0
- package/dist/workspace-motion.d.ts +4 -0
- package/dist/workspace-motion.js +133 -0
- package/dist/workspace-revision.d.ts +19 -0
- package/dist/workspace-revision.js +92 -0
- package/dist/workspace-ui.d.ts +204 -0
- package/dist/workspace-ui.js +411 -0
- package/dist/worktree-notices.d.ts +13 -0
- package/dist/worktree-notices.js +17 -0
- package/dist/worktree.d.ts +249 -0
- package/dist/worktree.js +720 -0
- package/package.json +122 -0
- package/scripts/canary-assertions.mjs +42 -0
- package/scripts/crash-canary.mjs +253 -0
- package/scripts/fixtures/crash-process.mjs +74 -0
- package/scripts/fixtures/pilot-scenarios.mjs +85 -0
- package/scripts/fixtures/restart-service.mjs +27 -0
- package/scripts/launchd-certification.mjs +143 -0
- package/scripts/pilot.mjs +121 -0
- package/scripts/proof-preflight.mjs +140 -0
- package/scripts/provider-canary.mjs +379 -0
- package/scripts/recovery-canary.mjs +135 -0
- package/scripts/restart-certification.mjs +98 -0
package/dist/claim.d.ts
ADDED
|
@@ -0,0 +1,688 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The claim, and the fence around it.
|
|
3
|
+
*
|
|
4
|
+
* This is the record §4 calls the one that matters, and the reason is a
|
|
5
|
+
* specific 3am failure. A runner takes a task, starts work, and then stops
|
|
6
|
+
* being reachable — the machine sleeps, the process is OOM-killed, the network
|
|
7
|
+
* partitions. The scheduler cannot tell "dead" from "slow", so it waits for the
|
|
8
|
+
* lease to expire and gives the task to someone else. Then the first runner
|
|
9
|
+
* wakes up, finishes the work it was doing, and reports success for a task that
|
|
10
|
+
* another runner is now halfway through.
|
|
11
|
+
*
|
|
12
|
+
* Both runners are behaving correctly. Without a fence, the control plane
|
|
13
|
+
* believes the last one to speak.
|
|
14
|
+
*
|
|
15
|
+
* So a lease carries two things. `lease_id` is immutable and identifies one
|
|
16
|
+
* grant of one task to one runner. `lease_generation` counts how many times
|
|
17
|
+
* that task has been granted at all, and it only ever goes up. Acquiring is a
|
|
18
|
+
* compare-and-swap on the generation; every later call carries the lease it
|
|
19
|
+
* thinks it holds, and anything whose generation has been superseded is
|
|
20
|
+
* refused. The late completion above is refused not because we detected the
|
|
21
|
+
* crash — we never did — but because the world moved on without it.
|
|
22
|
+
*
|
|
23
|
+
* Losing a race here is ordinary, not an error. Several runners asking for the
|
|
24
|
+
* same task at the same moment is the system working; exactly one wins.
|
|
25
|
+
*
|
|
26
|
+
* Time is a parameter everywhere. Expiry decided by an implicit clock is
|
|
27
|
+
* untestable, and a lease is exactly the kind of thing that has to be provable
|
|
28
|
+
* rather than probable.
|
|
29
|
+
*/
|
|
30
|
+
import { type Store, type Mutation, type TaskState } from "./store.js";
|
|
31
|
+
import type { ParsedDecision, Problem } from "./decision.js";
|
|
32
|
+
import type { ParsedPlan } from "./plan.js";
|
|
33
|
+
import { type PlannerSource } from "./planner-source.js";
|
|
34
|
+
import type { AuthorityChangeField } from "./plan.js";
|
|
35
|
+
import type { ParsedReport } from "./scout-report.js";
|
|
36
|
+
export type Claim = {
|
|
37
|
+
taskRef: number;
|
|
38
|
+
/** Immutable. Identifies this grant, and no other. */
|
|
39
|
+
leaseId: string;
|
|
40
|
+
/** Monotonic per task. The fencing token. */
|
|
41
|
+
generation: number;
|
|
42
|
+
runner: string;
|
|
43
|
+
acquiredAt: string;
|
|
44
|
+
expiresAt: string;
|
|
45
|
+
heartbeatAt: string;
|
|
46
|
+
};
|
|
47
|
+
export type AcquireResult = {
|
|
48
|
+
ok: true;
|
|
49
|
+
claim: Claim;
|
|
50
|
+
reclaimed: boolean;
|
|
51
|
+
replayed?: boolean;
|
|
52
|
+
} | {
|
|
53
|
+
ok: false;
|
|
54
|
+
reason: "held";
|
|
55
|
+
by: string;
|
|
56
|
+
until: string;
|
|
57
|
+
} | {
|
|
58
|
+
ok: false;
|
|
59
|
+
reason: "reserved";
|
|
60
|
+
reservedFor: string;
|
|
61
|
+
} | {
|
|
62
|
+
ok: false;
|
|
63
|
+
reason: "external";
|
|
64
|
+
detail: "stale-mirror" | "external-closed" | "dispatch-revoked" | "plane-blocked";
|
|
65
|
+
}
|
|
66
|
+
/** An attended authorization holds this task for its named runner (v25).
|
|
67
|
+
* Its OWN reason token — never the `reserved` tag, whose reservedFor field
|
|
68
|
+
* is a documented public contract meaning task_ref.assigned_runner. */
|
|
69
|
+
| {
|
|
70
|
+
ok: false;
|
|
71
|
+
reason: "attended-held";
|
|
72
|
+
runner: string;
|
|
73
|
+
}
|
|
74
|
+
/** The task's only authority is an attended authorization, and the
|
|
75
|
+
* operator is not watching (or the one attempt is spent). Expiry never
|
|
76
|
+
* converts attended work into unattended work. */
|
|
77
|
+
| {
|
|
78
|
+
ok: false;
|
|
79
|
+
reason: "attended-only";
|
|
80
|
+
}
|
|
81
|
+
/** A mode-sealed approval whose signature no longer stands (v29): the
|
|
82
|
+
* approval falls back to a person; nothing dispatches on a dead mode. */
|
|
83
|
+
| {
|
|
84
|
+
ok: false;
|
|
85
|
+
reason: "mode-ended";
|
|
86
|
+
message: string;
|
|
87
|
+
}
|
|
88
|
+
/** The credential presented with this acquisition did not verify against
|
|
89
|
+
* the runner row AT CLAIM TIME (MCP spec v6): stale incarnations never
|
|
90
|
+
* ride a successor's rotation. */
|
|
91
|
+
| {
|
|
92
|
+
ok: false;
|
|
93
|
+
reason: "unauthenticated";
|
|
94
|
+
detail: "unknown" | "bad-token" | "retired" | "expired";
|
|
95
|
+
}
|
|
96
|
+
/** The task is placed nowhere — a repo-scoped runner cannot be
|
|
97
|
+
* authorized for null. Place it, then dispatch. */
|
|
98
|
+
| {
|
|
99
|
+
ok: false;
|
|
100
|
+
reason: "unplaced";
|
|
101
|
+
}
|
|
102
|
+
/** The runner's bound repo list does not contain the task's repo.
|
|
103
|
+
* The refusal names the binding road. */
|
|
104
|
+
| {
|
|
105
|
+
ok: false;
|
|
106
|
+
reason: "unauthorized-repo";
|
|
107
|
+
repo: string;
|
|
108
|
+
}
|
|
109
|
+
/** A coordinator filed this and no password ceremony has sealed its
|
|
110
|
+
* scope yet — nothing claims, plans, or runs it until one does. */
|
|
111
|
+
| {
|
|
112
|
+
ok: false;
|
|
113
|
+
reason: "coordinator-filed";
|
|
114
|
+
};
|
|
115
|
+
/** `fenced` means the lease was superseded; `unknown` means it never existed. */
|
|
116
|
+
export type FenceResult = {
|
|
117
|
+
ok: true;
|
|
118
|
+
claim: Claim;
|
|
119
|
+
duplicate?: boolean;
|
|
120
|
+
} | {
|
|
121
|
+
ok: false;
|
|
122
|
+
reason: "fenced" | "unknown" | "stopped";
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Completion's OWN result (external dispatch, finding 33): `completed` is
|
|
126
|
+
* today's world — the task is done/failed as asked; `disowned` means the
|
|
127
|
+
* tracker closed this mirror while it was being built — the task is
|
|
128
|
+
* cancelled, the branch is kept as evidence, and the caller must never
|
|
129
|
+
* publish. The arm is DURABLE (claim.released_by), so a retried completion
|
|
130
|
+
* returns its original answer forever.
|
|
131
|
+
*/
|
|
132
|
+
export type CompleteResult = {
|
|
133
|
+
ok: true;
|
|
134
|
+
arm: "completed" | "disowned";
|
|
135
|
+
claim: Claim;
|
|
136
|
+
duplicate?: boolean;
|
|
137
|
+
} | {
|
|
138
|
+
ok: false;
|
|
139
|
+
reason: "fenced" | "unknown" | "stopped";
|
|
140
|
+
};
|
|
141
|
+
/** How stale a mirror's last complete sync may be before admission refuses. */
|
|
142
|
+
export declare const SYNC_MAX_AGE_MS: number;
|
|
143
|
+
export type AcquireOptions = {
|
|
144
|
+
now: Date;
|
|
145
|
+
/** The runner's minted credential, re-verified INSIDE the claim
|
|
146
|
+
* transaction (MCP gateway spec v6, Codex round-5 finding 1): a
|
|
147
|
+
* takeover that rotates the credential between the caller's own auth
|
|
148
|
+
* and this CAS must not let the stale process ride its successor's
|
|
149
|
+
* authority. */
|
|
150
|
+
token: string;
|
|
151
|
+
ttlMs?: number;
|
|
152
|
+
/** Injected in tests so a lease id can be asserted on. */
|
|
153
|
+
newLeaseId?: () => string;
|
|
154
|
+
/** The watch incarnation dispatching this claim, for crash recovery keyed to it. */
|
|
155
|
+
incarnation?: string;
|
|
156
|
+
mutation?: Mutation;
|
|
157
|
+
/** External-mirror freshness bound; defaults to SYNC_MAX_AGE_MS. */
|
|
158
|
+
syncMaxAgeMs?: number;
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* Long enough that an ordinary build does not lose its lease mid-thought,
|
|
162
|
+
* short enough that a dead runner's work is picked up the same night rather
|
|
163
|
+
* than at breakfast.
|
|
164
|
+
*/
|
|
165
|
+
export declare const DEFAULT_LEASE_MS: number;
|
|
166
|
+
/**
|
|
167
|
+
* Take the task, if it is free.
|
|
168
|
+
*
|
|
169
|
+
* Free means no claim, or a claim whose lease expired, or one already released.
|
|
170
|
+
* A live lease belonging to somebody else is refused with who holds it and
|
|
171
|
+
* until when, because "no" without a reason is indistinguishable from a bug.
|
|
172
|
+
*/
|
|
173
|
+
export declare function acquire(store: Store, taskRef: number, runner: string, options: AcquireOptions): AcquireResult;
|
|
174
|
+
/**
|
|
175
|
+
* Why `acquireIfReady` said no before the race was even run. `not-ready` is
|
|
176
|
+
* about the task's own state; `capability` is about the machine's — a gap a
|
|
177
|
+
* person can fill, named so the caller can say which.
|
|
178
|
+
*/
|
|
179
|
+
export type NotReady = {
|
|
180
|
+
ok: false;
|
|
181
|
+
reason: "not-ready" | "capability" | "attention-budget" | "capacity" | "quota" | "provider-unavailable";
|
|
182
|
+
message: string;
|
|
183
|
+
};
|
|
184
|
+
/** DESIGN §8 gate 6: above this many open decisions, stop dispatching the parkers.
|
|
185
|
+
* `missingCapability` remains re-exported for callers of the old claim seam. */
|
|
186
|
+
export { DEFAULT_MAX_OPEN_DECISIONS, missingCapability } from "./dispatch.js";
|
|
187
|
+
/**
|
|
188
|
+
* Take the task, if it is free *and still worth taking*.
|
|
189
|
+
*
|
|
190
|
+
* `listReady` then `acquire` is two reads of a world that moves between them:
|
|
191
|
+
* a hold placed, a blocker reopened, the task cancelled — and the CAS admits
|
|
192
|
+
* the claim anyway, because the CAS only defends against other claimants. An
|
|
193
|
+
* unattended pass has nobody watching who would notice the stale dispatch, so
|
|
194
|
+
* the readiness conditions are re-proved inside the same transaction as the
|
|
195
|
+
* acquire, against rows the write lock has already pinned.
|
|
196
|
+
*
|
|
197
|
+
* "Not ready" is a different answer from "held": held means somebody else got
|
|
198
|
+
* it, which is a race being won; not-ready means nobody should have it, and
|
|
199
|
+
* says why.
|
|
200
|
+
*/
|
|
201
|
+
export declare function acquireIfReady(store: Store, taskRef: number, runner: string, options: AcquireOptions & {
|
|
202
|
+
repo?: string;
|
|
203
|
+
maxOpenDecisions?: number;
|
|
204
|
+
/** The provider this dispatch resolved to — the quota key. */
|
|
205
|
+
provider?: string;
|
|
206
|
+
/** The model this dispatch would run — the quota scope. */
|
|
207
|
+
model?: string;
|
|
208
|
+
/** What this dispatch is FOR. Re-proved inside the transaction — the
|
|
209
|
+
* caller's survey is not trusted (Codex planning review, finding 2). */
|
|
210
|
+
dispatchRole?: "builder" | "planner" | "scout";
|
|
211
|
+
}): AcquireResult | NotReady;
|
|
212
|
+
/**
|
|
213
|
+
* The FALLBACK-ADMISSION claim (E3d, review finding 4): the one gate a
|
|
214
|
+
* pending-admission chain cycle dispatches through. It enforces everything
|
|
215
|
+
* `acquireIfReady` enforces — task state, holds, blockers, the approved
|
|
216
|
+
* scope + live-mode belt, capability, capacity, and quota — with EXACTLY
|
|
217
|
+
* ONE deliberate difference: a BACKOFF hold does not gate, because the
|
|
218
|
+
* pending admission IS the system's answer to the predecessor's failure
|
|
219
|
+
* (waiting out the exhausted entry's backoff to run a different credential
|
|
220
|
+
* would be waiting for nothing). Quota is keyed by the PINNED entry's
|
|
221
|
+
* provider, model, and auth mode — the credential that would actually
|
|
222
|
+
* spend — so an exhausted fallback credential refuses here, before any
|
|
223
|
+
* claim exists.
|
|
224
|
+
*/
|
|
225
|
+
export declare function acquireFallback(store: Store, taskRef: number, runner: string, options: AcquireOptions & {
|
|
226
|
+
repo?: string;
|
|
227
|
+
provider: string;
|
|
228
|
+
model: string;
|
|
229
|
+
authMode: "subscription" | "api-key";
|
|
230
|
+
maxOpenDecisions?: number;
|
|
231
|
+
}): AcquireResult | NotReady;
|
|
232
|
+
/**
|
|
233
|
+
* "I am still here." Extends the lease, and tells a superseded runner that it
|
|
234
|
+
* has been superseded — which is the cheapest moment for it to find out, well
|
|
235
|
+
* before it has finished work nobody will accept.
|
|
236
|
+
*/
|
|
237
|
+
export declare function heartbeat(store: Store, leaseId: string, now: Date, ttlMs?: number): FenceResult;
|
|
238
|
+
/**
|
|
239
|
+
* Hand the task back.
|
|
240
|
+
*
|
|
241
|
+
* Accepted only from the lease that currently holds it. A completion arriving
|
|
242
|
+
* on a superseded lease is the failure this whole module exists for, and it is
|
|
243
|
+
* rejected without touching anything — the work is not lost, it is simply not
|
|
244
|
+
* this runner's to report, and the record says so rather than overwriting a
|
|
245
|
+
* live claim with a dead runner's opinion.
|
|
246
|
+
*/
|
|
247
|
+
export declare function release(store: Store, leaseId: string, now: Date): FenceResult;
|
|
248
|
+
/**
|
|
249
|
+
* Release the lease and write the task's terminal state, as one step.
|
|
250
|
+
*
|
|
251
|
+
* Release-then-mark is a window: between the two, the freed task is back in
|
|
252
|
+
* the ready set, and another pass can claim it before the terminal state
|
|
253
|
+
* lands — two builders for one task, the second dispatched by our own
|
|
254
|
+
* bookkeeping. Here the state is written inside the same transaction as the
|
|
255
|
+
* fenced release, so a task is never simultaneously free and unfinished.
|
|
256
|
+
*
|
|
257
|
+
* A fenced or unknown lease writes nothing: a runner the world moved past
|
|
258
|
+
* does not get to say how the task ended. A duplicate release reports
|
|
259
|
+
* `duplicate` and also writes nothing — the first completion already said,
|
|
260
|
+
* and a retry changing the answer would make "done" negotiable.
|
|
261
|
+
*/
|
|
262
|
+
export declare function completeFenced(store: Store, leaseId: string, state: Extract<TaskState, "done" | "failed">, now: Date, mutation?: Mutation): CompleteResult;
|
|
263
|
+
/**
|
|
264
|
+
* Seal a park, fenced at the write (§7).
|
|
265
|
+
*
|
|
266
|
+
* The builder proved its lease after the agent ran; this transaction proves
|
|
267
|
+
* it again *in the same statement that releases it*, because everything a
|
|
268
|
+
* park creates — the decision, its hold, the outbox row — is only true if
|
|
269
|
+
* this lease still spoke for the task at the moment of sealing. A superseded
|
|
270
|
+
* lease creates none of it: no decision, no hold, no notification, and the
|
|
271
|
+
* run is finalized as the fenced refusal it was. A crash anywhere inside
|
|
272
|
+
* rolls all of it back together; there is no instant at which a decision
|
|
273
|
+
* exists without its hold.
|
|
274
|
+
*
|
|
275
|
+
* `released_by = 'parked'` so a late retry from this lease is answered with
|
|
276
|
+
* the fence, not "duplicate": a park hands the task to a person, and nothing
|
|
277
|
+
* the runner says afterwards is that person's answer.
|
|
278
|
+
*/
|
|
279
|
+
/**
|
|
280
|
+
* Continuation admission (Phase 2E, A4 / v3 R7): the AUTHORIZATION is the
|
|
281
|
+
* claimable unit — the finished parent task is never re-queued, its state,
|
|
282
|
+
* strikes, holds, and dependents untouched. Every shared gate still runs
|
|
283
|
+
* (acquireLocked: reservation, external mirror, the attended gates, the
|
|
284
|
+
* lease CAS); the queued-state readiness gate alone is replaced by
|
|
285
|
+
* construction. Liveness, the named runner, and the unspent attempt are
|
|
286
|
+
* re-proved HERE at claim time and again at the final dispatch proof.
|
|
287
|
+
*/
|
|
288
|
+
export declare function acquireContinuation(store: Store, authorization: import("./store.js").AttendedAuthorization, runner: string, options: AcquireOptions): AcquireResult | {
|
|
289
|
+
ok: false;
|
|
290
|
+
reason: "attended-only" | "contest-open" | "continuation-blocked";
|
|
291
|
+
message: string;
|
|
292
|
+
};
|
|
293
|
+
/**
|
|
294
|
+
* The HELD park (Phase 2E, v2 S1f): the decision is recorded, paged, and
|
|
295
|
+
* causally linked to the session turn that produced it — and NOTHING else
|
|
296
|
+
* ends. The lease stays; the run stays open; the process stays held. The
|
|
297
|
+
* conversation continues when the answer is injected as the next turn.
|
|
298
|
+
* The one-unresolved-per-run partial unique refuses a second open park.
|
|
299
|
+
*/
|
|
300
|
+
export declare function finalizeParkHeld(store: Store, args: {
|
|
301
|
+
runId: number;
|
|
302
|
+
taskId: string;
|
|
303
|
+
decision: ParsedDecision;
|
|
304
|
+
artifactIds: readonly number[];
|
|
305
|
+
sessionTurn: number;
|
|
306
|
+
now: Date;
|
|
307
|
+
}): {
|
|
308
|
+
ok: true;
|
|
309
|
+
decisionId: number;
|
|
310
|
+
} | {
|
|
311
|
+
ok: false;
|
|
312
|
+
reason: "decision-open" | "not-held";
|
|
313
|
+
};
|
|
314
|
+
export declare function finalizeParkFenced(store: Store, args: {
|
|
315
|
+
leaseId: string;
|
|
316
|
+
runId: number;
|
|
317
|
+
taskId: string;
|
|
318
|
+
decision: ParsedDecision;
|
|
319
|
+
artifactIds: readonly number[];
|
|
320
|
+
/** Open planner correction that authored the accepted payload. It is
|
|
321
|
+
* settled in this same fence, never earlier. */
|
|
322
|
+
repairRunId?: number | null;
|
|
323
|
+
now: Date;
|
|
324
|
+
}): {
|
|
325
|
+
ok: true;
|
|
326
|
+
decisionId: number;
|
|
327
|
+
} | {
|
|
328
|
+
ok: false;
|
|
329
|
+
reason: "fenced" | "unknown" | "stopped";
|
|
330
|
+
};
|
|
331
|
+
/**
|
|
332
|
+
* Seal a park whose payload never became a decision (§6's bounded repair ran
|
|
333
|
+
* out). Same fence, same atomicity, different record: an incident that stays
|
|
334
|
+
* in every brief until a person resolves it, holding the task so the next
|
|
335
|
+
* pass does not spend the same tokens hitting the same wall nightly. The
|
|
336
|
+
* malformed payload is preserved as evidence — a person may still be able to
|
|
337
|
+
* read what the agent meant.
|
|
338
|
+
*/
|
|
339
|
+
export declare function finalizeMalformedFenced(store: Store, args: {
|
|
340
|
+
leaseId: string;
|
|
341
|
+
runId: number;
|
|
342
|
+
taskId: string;
|
|
343
|
+
problems: readonly Problem[];
|
|
344
|
+
now: Date;
|
|
345
|
+
}): {
|
|
346
|
+
ok: true;
|
|
347
|
+
incidentId: number;
|
|
348
|
+
} | {
|
|
349
|
+
ok: false;
|
|
350
|
+
reason: "fenced" | "unknown" | "stopped";
|
|
351
|
+
};
|
|
352
|
+
/** How a failed attempt is classified, per gnhf. Decides retry, backoff, or stall. */
|
|
353
|
+
export type FailureClass = "agent-reported" | "retryable-infra" | "no-op" | "commit-failure" | "unknown";
|
|
354
|
+
export declare const MAX_STRIKES = 3;
|
|
355
|
+
export type FailureDisposition = {
|
|
356
|
+
ok: true;
|
|
357
|
+
disposition: "backoff";
|
|
358
|
+
strikes: number;
|
|
359
|
+
until: string;
|
|
360
|
+
} | {
|
|
361
|
+
ok: true;
|
|
362
|
+
disposition: "stalled";
|
|
363
|
+
strikes: number;
|
|
364
|
+
incidentId: number;
|
|
365
|
+
} | {
|
|
366
|
+
ok: true;
|
|
367
|
+
disposition: "commit-incident";
|
|
368
|
+
incidentId: number;
|
|
369
|
+
} | {
|
|
370
|
+
ok: false;
|
|
371
|
+
reason: "fenced" | "unknown" | "stopped";
|
|
372
|
+
};
|
|
373
|
+
export type InterruptSeal = {
|
|
374
|
+
ok: true;
|
|
375
|
+
stopRun: number;
|
|
376
|
+
requeued: boolean;
|
|
377
|
+
fenced: false;
|
|
378
|
+
} | {
|
|
379
|
+
ok: true;
|
|
380
|
+
stopRun: number;
|
|
381
|
+
requeued: false;
|
|
382
|
+
fenced: true;
|
|
383
|
+
};
|
|
384
|
+
/**
|
|
385
|
+
* Seal an operator-stopped attempt (v52): ONE fenced transaction for the
|
|
386
|
+
* claim's release as `interrupted`, the run's ending as `failed` /
|
|
387
|
+
* `interrupted` (the same words dead-runner recovery writes, so the
|
|
388
|
+
* recovered-draft road inherits the preserved work exactly as after a
|
|
389
|
+
* crash), every open run the attempt owns, the task's return to the
|
|
390
|
+
* queue under the stop's own hold, and the stop's settlement. Nothing
|
|
391
|
+
* here is a failure: no strike, no backoff, no incident, no automatic
|
|
392
|
+
* repair task, no notification page. A commit the attempt already made
|
|
393
|
+
* is kept as a reviewable artifact — `committed` records that it exists.
|
|
394
|
+
*
|
|
395
|
+
* A lease the world moved past (reaped, recovered, superseded) still
|
|
396
|
+
* ends the run as interrupted — that IS the honest ending — but touches
|
|
397
|
+
* no task state: the task belongs to whoever holds it now.
|
|
398
|
+
*/
|
|
399
|
+
export declare function finalizeInterruptedFenced(store: Store, args: {
|
|
400
|
+
leaseId: string;
|
|
401
|
+
runId: number;
|
|
402
|
+
taskId: string;
|
|
403
|
+
stopRun: number;
|
|
404
|
+
message?: string;
|
|
405
|
+
committed?: boolean;
|
|
406
|
+
now: Date;
|
|
407
|
+
}): InterruptSeal;
|
|
408
|
+
/**
|
|
409
|
+
* THE STOP FENCE at settlement (v52): when a stop applies to the run —
|
|
410
|
+
* its own or an owning ancestor's — seal the attempt as interrupted and
|
|
411
|
+
* answer with the seal; otherwise null, and the caller's own ending
|
|
412
|
+
* proceeds. Every fenced finalizer asks this first, inside its own
|
|
413
|
+
* transaction, so a stop that commits before terminal settlement wins
|
|
414
|
+
* whatever the attempt was about to say.
|
|
415
|
+
*/
|
|
416
|
+
export declare function interruptIfStopped(store: Store, args: {
|
|
417
|
+
leaseId: string;
|
|
418
|
+
runId: number;
|
|
419
|
+
taskId: string;
|
|
420
|
+
message?: string;
|
|
421
|
+
committed?: boolean;
|
|
422
|
+
now: Date;
|
|
423
|
+
}): InterruptSeal | null;
|
|
424
|
+
/**
|
|
425
|
+
* Seal a failed attempt: one fenced transaction for the release, the run,
|
|
426
|
+
* the strike, the hold, and the page (§6, gnhf adopted rather than
|
|
427
|
+
* reinvented).
|
|
428
|
+
*
|
|
429
|
+
* Strikes count only top-level builder attempts; built, no-change, and
|
|
430
|
+
* parked reset them elsewhere; refusals, fenced attempts, and repair
|
|
431
|
+
* children never reach this function. Under three strikes the task
|
|
432
|
+
* requeues behind a doubling backoff hold the failure owns; at three it
|
|
433
|
+
* stalls — an 'attempts-exhausted' incident, the task marked failed, held,
|
|
434
|
+
* and paged once — because a fourth identical attempt at 3am is a token
|
|
435
|
+
* bonfire, not persistence. A commit-stage failure takes neither road: the
|
|
436
|
+
* worktree holds unpreserved work, ordinary re-pooling would refuse it as
|
|
437
|
+
* dirty forever, so it is an immediate incident naming the checkout.
|
|
438
|
+
*/
|
|
439
|
+
export declare function finalizeFailureFenced(store: Store, args: {
|
|
440
|
+
leaseId: string;
|
|
441
|
+
runId: number;
|
|
442
|
+
taskId: string;
|
|
443
|
+
failureClass: FailureClass;
|
|
444
|
+
message: string;
|
|
445
|
+
worktree: string;
|
|
446
|
+
now: Date;
|
|
447
|
+
}): FailureDisposition;
|
|
448
|
+
/** The live claim on a task, if there is one. */
|
|
449
|
+
export declare const MAX_PLAN_STRIKES = 3;
|
|
450
|
+
export type PlanFinalize = {
|
|
451
|
+
ok: true;
|
|
452
|
+
changes: number;
|
|
453
|
+
amendment: string | null;
|
|
454
|
+
} | {
|
|
455
|
+
ok: false;
|
|
456
|
+
reason: "fenced" | "unknown" | "stopped";
|
|
457
|
+
}
|
|
458
|
+
/** The filed request moved while the planner ran (contract handoff,
|
|
459
|
+
* task 1): the draft was planned against terms that no longer exist,
|
|
460
|
+
* so nothing of it is ingested — the newer source stands, the claim
|
|
461
|
+
* releases, and the task stays requested for a fresh attempt. */
|
|
462
|
+
| {
|
|
463
|
+
ok: false;
|
|
464
|
+
reason: "stale-source" | "source-invalid";
|
|
465
|
+
detail: string;
|
|
466
|
+
};
|
|
467
|
+
/**
|
|
468
|
+
* Seal a successful planning run: the proposed scope, the plan document
|
|
469
|
+
* artifact, the drafted state, the run outcome, and the page to the
|
|
470
|
+
* operator exist together or — if the lease was superseded — not at all.
|
|
471
|
+
* The scope proposal is authority-bearing (it is what the approve card
|
|
472
|
+
* will restate), which is why this is the park discipline, not the DONE
|
|
473
|
+
* one (Codex planning review, question 2).
|
|
474
|
+
*/
|
|
475
|
+
export declare function finalizePlanFenced(store: Store, args: {
|
|
476
|
+
leaseId: string;
|
|
477
|
+
runId: number;
|
|
478
|
+
taskId: string;
|
|
479
|
+
plan: ParsedPlan;
|
|
480
|
+
/** The already-captured plan document file, described; null when the
|
|
481
|
+
* capture itself failed (the plan still lands as scope + handoff). */
|
|
482
|
+
artifact: {
|
|
483
|
+
key: string;
|
|
484
|
+
bytesOriginal: number;
|
|
485
|
+
bytesStored: number;
|
|
486
|
+
truncated: boolean;
|
|
487
|
+
sha256: string;
|
|
488
|
+
capture: string;
|
|
489
|
+
} | null;
|
|
490
|
+
/** Open planner correction that authored the accepted payload. */
|
|
491
|
+
repairRunId?: number | null;
|
|
492
|
+
/** The filed request this attempt planned for, and the recorded
|
|
493
|
+
* evidence of it (contract handoff, task 1). The source identity is
|
|
494
|
+
* re-derived from the store INSIDE this transaction and compared:
|
|
495
|
+
* a concurrent scope, authority, or term change refuses the draft
|
|
496
|
+
* atomically rather than letting an old plan overwrite the newer
|
|
497
|
+
* source. Optional only for the pre-source road (tests that seal a
|
|
498
|
+
* hand-built plan); every dispatch presents one. */
|
|
499
|
+
source?: PlannerSource;
|
|
500
|
+
sourceArtifact?: number | null;
|
|
501
|
+
/** Where the plan-contract ingestion record is written. */
|
|
502
|
+
evidenceRoot?: string;
|
|
503
|
+
now: Date;
|
|
504
|
+
}): PlanFinalize;
|
|
505
|
+
export type RevisionFinalize = {
|
|
506
|
+
ok: true;
|
|
507
|
+
revisionId: number;
|
|
508
|
+
authorityKind: "plan-only" | "authority-change";
|
|
509
|
+
} | {
|
|
510
|
+
ok: false;
|
|
511
|
+
reason: "fenced" | "unknown" | "stopped";
|
|
512
|
+
};
|
|
513
|
+
/**
|
|
514
|
+
* Seal a running build's plan-revision proposal (adaptive execution plans).
|
|
515
|
+
*
|
|
516
|
+
* A builder that finds repository evidence invalidating a named dependency,
|
|
517
|
+
* risk, or assumption in the plan it was given files ONE proposal and stops
|
|
518
|
+
* without committing — the park discipline, applied to the road rather than
|
|
519
|
+
* to a question. The ledger row, the hold when one is owed, the run's
|
|
520
|
+
* outcome, and the page exist together or, if the lease was superseded,
|
|
521
|
+
* not at all. Structurally `finalizePlanFenced`'s twin: the same
|
|
522
|
+
* open-attempt assertion, the same fenced release, the same all-or-nothing
|
|
523
|
+
* transaction.
|
|
524
|
+
*
|
|
525
|
+
* Two dispositions, decided by the caller's classification and recorded
|
|
526
|
+
* here:
|
|
527
|
+
*
|
|
528
|
+
* plan-only the signed scope and publication authority are
|
|
529
|
+
* byte-identical to what this build started under, so
|
|
530
|
+
* nothing authority-bearing moved and the revision is
|
|
531
|
+
* APPLIED. The claim releases plainly, the task returns
|
|
532
|
+
* to the ready set, and the next attempt reads the new
|
|
533
|
+
* plan — that is the "resume" the subject line promises.
|
|
534
|
+
*
|
|
535
|
+
* authority-change something else moved the signed scope or the
|
|
536
|
+
* publication authority WHILE this build ran. Whatever
|
|
537
|
+
* the revision proposes, it is never auto-applied: the
|
|
538
|
+
* row lands 'blocked', a `revision` hold keeps the task
|
|
539
|
+
* out of every ready set until a person accepts or
|
|
540
|
+
* rejects it, and the page names exactly which fields
|
|
541
|
+
* changed.
|
|
542
|
+
*
|
|
543
|
+
* The lease is released either way — the attempt is over — and the run is
|
|
544
|
+
* finished as `refused`, reusing the existing outcome vocabulary rather
|
|
545
|
+
* than growing it: no work was committed, and nothing failed.
|
|
546
|
+
*/
|
|
547
|
+
export declare function finalizeRevisionFenced(store: Store, args: {
|
|
548
|
+
leaseId: string;
|
|
549
|
+
runId: number;
|
|
550
|
+
taskId: string;
|
|
551
|
+
taskRef: number;
|
|
552
|
+
/** Every content column of the row about to be appended. `status` is
|
|
553
|
+
* NOT the caller's to set: it follows from `authorityKind`, decided in
|
|
554
|
+
* exactly one place — here — so a caller can never file an
|
|
555
|
+
* authority-changing revision as already applied. */
|
|
556
|
+
revision: {
|
|
557
|
+
revision: number;
|
|
558
|
+
artifact: number;
|
|
559
|
+
parentHash: string | null;
|
|
560
|
+
reason: string;
|
|
561
|
+
evidenceLink: string | null;
|
|
562
|
+
author: string;
|
|
563
|
+
originRun: number | null;
|
|
564
|
+
authorityKind: "plan-only" | "authority-change";
|
|
565
|
+
authorityDigest: string;
|
|
566
|
+
changedFields: readonly AuthorityChangeField[];
|
|
567
|
+
};
|
|
568
|
+
now: Date;
|
|
569
|
+
}): RevisionFinalize;
|
|
570
|
+
export type PlanFailureDisposition = {
|
|
571
|
+
ok: true;
|
|
572
|
+
disposition: "malformed-incident";
|
|
573
|
+
incidentId: number;
|
|
574
|
+
} | {
|
|
575
|
+
ok: true;
|
|
576
|
+
disposition: "backoff";
|
|
577
|
+
strikes: number;
|
|
578
|
+
} | {
|
|
579
|
+
ok: true;
|
|
580
|
+
disposition: "exhausted";
|
|
581
|
+
incidentId: number;
|
|
582
|
+
strikes: number;
|
|
583
|
+
} | {
|
|
584
|
+
ok: false;
|
|
585
|
+
reason: "fenced" | "unknown" | "stopped";
|
|
586
|
+
};
|
|
587
|
+
/**
|
|
588
|
+
* The planner's own fenced failure finalizer (Codex planning review,
|
|
589
|
+
* finding 6): releases exactly the planner claim, finishes the run,
|
|
590
|
+
* counts a SEPARATE planning strike — a planner that cannot finish must
|
|
591
|
+
* never spend the builder's three attempts — and eventually leaves a
|
|
592
|
+
* durable incident + hold + page. It never marks the task done, never
|
|
593
|
+
* touches builder strikes, never commits, never publishes.
|
|
594
|
+
*
|
|
595
|
+
* A malformed payload goes straight to its incident with no strike: the
|
|
596
|
+
* protocol failed, not the weather, and retrying the same session buys
|
|
597
|
+
* nothing without the repair machinery (deliberately not wired for
|
|
598
|
+
* planners in v1).
|
|
599
|
+
*/
|
|
600
|
+
export declare function finalizePlanFailureFenced(store: Store, args: {
|
|
601
|
+
leaseId: string;
|
|
602
|
+
runId: number;
|
|
603
|
+
taskId: string;
|
|
604
|
+
kind: "malformed" | "failure";
|
|
605
|
+
/** Which payload was malformed (v4 review, finding 12): the mailbox is a `malformed-decision`. */
|
|
606
|
+
malformed?: "decision" | "plan";
|
|
607
|
+
message: string;
|
|
608
|
+
now: Date;
|
|
609
|
+
}): PlanFailureDisposition;
|
|
610
|
+
export type ScoutFinalize = {
|
|
611
|
+
ok: true;
|
|
612
|
+
} | {
|
|
613
|
+
ok: false;
|
|
614
|
+
reason: "fenced" | "unknown" | "stopped";
|
|
615
|
+
};
|
|
616
|
+
/**
|
|
617
|
+
* Seal a successful scouting run (mate arc §10): the report artifact, the
|
|
618
|
+
* run outcome, the task's terminal state, and the page to the operator
|
|
619
|
+
* exist together or — if the lease was superseded — not at all. Nothing
|
|
620
|
+
* here touches a branch, a publication, or a scope: the deliverable is
|
|
621
|
+
* the artifact, and the task is done the moment it verifies.
|
|
622
|
+
*/
|
|
623
|
+
export declare function finalizeScoutFenced(store: Store, args: {
|
|
624
|
+
leaseId: string;
|
|
625
|
+
runId: number;
|
|
626
|
+
taskId: string;
|
|
627
|
+
report: ParsedReport;
|
|
628
|
+
/** The already-captured report file, described. Required: a report
|
|
629
|
+
* that was not captured is a FAILED attempt, never a finished task
|
|
630
|
+
* (v4 review, finding 1). */
|
|
631
|
+
artifact: {
|
|
632
|
+
key: string;
|
|
633
|
+
bytesOriginal: number;
|
|
634
|
+
bytesStored: number;
|
|
635
|
+
truncated: boolean;
|
|
636
|
+
sha256: string;
|
|
637
|
+
capture: string;
|
|
638
|
+
redacted: boolean;
|
|
639
|
+
};
|
|
640
|
+
now: Date;
|
|
641
|
+
}): ScoutFinalize;
|
|
642
|
+
export type ScoutFailureDisposition = {
|
|
643
|
+
ok: true;
|
|
644
|
+
disposition: "malformed-incident";
|
|
645
|
+
incidentId: number;
|
|
646
|
+
} | {
|
|
647
|
+
ok: true;
|
|
648
|
+
disposition: "backoff";
|
|
649
|
+
strikes: number;
|
|
650
|
+
} | {
|
|
651
|
+
ok: true;
|
|
652
|
+
disposition: "stalled";
|
|
653
|
+
incidentId: number;
|
|
654
|
+
strikes: number;
|
|
655
|
+
} | {
|
|
656
|
+
ok: false;
|
|
657
|
+
reason: "fenced" | "unknown" | "stopped";
|
|
658
|
+
};
|
|
659
|
+
/**
|
|
660
|
+
* The scout's fenced failure finalizer: the BUILDER's discipline, not the
|
|
661
|
+
* planner's — a scout task has no builder attempts, so its strikes are the
|
|
662
|
+
* task's own (three stall it, `task requeue` clears them), and a malformed
|
|
663
|
+
* report is a straight incident with no strike. Never a branch, never a
|
|
664
|
+
* repair session, never a commit.
|
|
665
|
+
*/
|
|
666
|
+
export declare function finalizeScoutFailureFenced(store: Store, args: {
|
|
667
|
+
leaseId: string;
|
|
668
|
+
runId: number;
|
|
669
|
+
taskId: string;
|
|
670
|
+
kind: "malformed" | "failure";
|
|
671
|
+
/** Which payload was malformed (v4 review, finding 12): the park
|
|
672
|
+
* mailbox is a `malformed-decision` incident, the handoff a
|
|
673
|
+
* `malformed-report` one — the taxonomy says what actually broke. */
|
|
674
|
+
malformed?: "decision" | "report";
|
|
675
|
+
message: string;
|
|
676
|
+
now: Date;
|
|
677
|
+
}): ScoutFailureDisposition;
|
|
678
|
+
export declare function currentClaim(store: Store, taskRef: number, now: Date): Claim | null;
|
|
679
|
+
/**
|
|
680
|
+
* Release every lease that has run out.
|
|
681
|
+
*
|
|
682
|
+
* Expiry alone already frees a task for acquisition, so this is not what makes
|
|
683
|
+
* reclaim work — it is what makes it *visible*. A daemon reaping on a tick
|
|
684
|
+
* turns "this lease is being ignored because its timestamp is in the past" into
|
|
685
|
+
* a released row somebody can read, which is the difference between a system
|
|
686
|
+
* that recovers and a system that appears to have lost the work.
|
|
687
|
+
*/
|
|
688
|
+
export declare function reap(store: Store, now: Date): Claim[];
|