toolroll 0.9.103 → 0.9.105
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/CHANGELOG.md +65 -0
- package/README.md +27 -27
- package/dist/accent-colors.js +0 -29
- package/dist/acp-agents.js +0 -3
- package/dist/acp-attest.js +0 -30
- package/dist/acp-check.js +3 -70
- package/dist/acp-client.js +3 -94
- package/dist/acp-inspect.js +1 -20
- package/dist/action-ledger.js +0 -8
- package/dist/activity-line.js +0 -14
- package/dist/actor.js +0 -15
- package/dist/advanced-schema.js +12 -0
- package/dist/advanced-view.js +26 -0
- package/dist/advanced.js +61 -0
- package/dist/agent-board.js +0 -117
- package/dist/agent-fence.js +11 -367
- package/dist/agent-onboard.js +12 -50
- package/dist/agent-pulse.js +5 -38
- package/dist/agent-state-words.js +0 -8
- package/dist/agent-state.js +1 -45
- package/dist/agent-turns.js +3 -17
- package/dist/agentconfig.js +1 -99
- package/dist/agents-board.js +0 -60
- package/dist/agents-live.js +1 -8
- package/dist/api-tokens.js +0 -27
- package/dist/approval-authority.js +0 -59
- package/dist/approval-password.js +0 -10
- package/dist/approval-policy.js +0 -29
- package/dist/approval-rules-ui.js +0 -9
- package/dist/assignment-adapters.js +0 -14
- package/dist/assignment-brief.js +1 -17
- package/dist/assignment-delivery.js +0 -22
- package/dist/assignment-presentation.js +0 -14
- package/dist/assignment-status.js +1 -30
- package/dist/assignment-ui.js +0 -12
- package/dist/assignment.js +117 -103
- package/dist/attest.js +0 -38
- package/dist/audit-cli.js +0 -9
- package/dist/backend.js +0 -59
- package/dist/backup-ui.js +0 -12
- package/dist/backup.js +8 -61
- package/dist/batch-checks.js +0 -20
- package/dist/batch-policy.js +0 -4
- package/dist/beads.js +0 -48
- package/dist/bin.js +0 -8
- package/dist/board.js +1 -36
- package/dist/boot-identity.js +0 -42
- package/dist/bounded-spawn.js +4 -28
- package/dist/brand-mark.js +0 -21
- package/dist/brief-fence.js +0 -16
- package/dist/browser/terminal.css +1 -1
- package/dist/browser/terminal.js +16 -16
- package/dist/browser/workspace.css +2 -2
- package/dist/browser/workspace.js +26 -26
- package/dist/browser-crew.js +0 -8
- package/dist/browser-shell.js +2 -15
- package/dist/browser-workspace.js +6 -30
- package/dist/budget-alerts.js +1 -4
- package/dist/build-review.js +2 -50
- package/dist/builder-restart.js +0 -13
- package/dist/builder.js +21 -1035
- package/dist/canonical-json.js +0 -12
- package/dist/capscan.js +1 -32
- package/dist/card-catalog.js +0 -12
- package/dist/card-cli.js +0 -1
- package/dist/card-render.js +0 -25
- package/dist/card-sources.js +0 -10
- package/dist/chat-acceptance.js +0 -7
- package/dist/chat-actions.js +5 -190
- package/dist/chat-admission.js +0 -7
- package/dist/chat-approval.js +0 -25
- package/dist/chat-ask.js +0 -17
- package/dist/chat-card-part.js +0 -3
- package/dist/chat-card.js +0 -6
- package/dist/chat-channel.js +2 -83
- package/dist/chat-continuity.js +0 -31
- package/dist/chat-controls.js +0 -7
- package/dist/chat-core.js +0 -55
- package/dist/chat-decide.js +2 -153
- package/dist/chat-delivery-state.js +0 -49
- package/dist/chat-delivery.js +2 -143
- package/dist/chat-display.js +0 -2
- package/dist/chat-evidence.js +0 -65
- package/dist/chat-flow.js +0 -72
- package/dist/chat-follow.js +0 -13
- package/dist/chat-inbox.js +0 -34
- package/dist/chat-live-schema.js +0 -14
- package/dist/chat-live.js +2 -87
- package/dist/chat-message-states.js +13 -40
- package/dist/chat-messages.js +0 -153
- package/dist/chat-migration.js +0 -57
- package/dist/chat-polish.js +0 -7
- package/dist/chat-quiet.js +0 -37
- package/dist/chat-review.js +0 -4
- package/dist/chat-rooms.js +0 -22
- package/dist/chat-settings-page.js +0 -4
- package/dist/chat-task-actions.js +0 -7
- package/dist/chat-terms.js +0 -21
- package/dist/chat-voice.js +0 -38
- package/dist/chat-warmth.js +1 -3
- package/dist/check-access.js +0 -30
- package/dist/check-facts.js +2 -62
- package/dist/check-failure.js +0 -98
- package/dist/check-levels-ui.js +4 -10
- package/dist/check-levels.js +3 -35
- package/dist/check-load.js +1 -49
- package/dist/check-only-standing.js +0 -6
- package/dist/check-only.js +0 -22
- package/dist/check-progress.js +0 -32
- package/dist/check-repair.js +2 -35
- package/dist/check-report.js +1 -108
- package/dist/check-stamp.js +0 -20
- package/dist/checkout-cleanup.js +0 -84
- package/dist/checkout-proof.js +1 -13
- package/dist/child-database.js +0 -3
- package/dist/claim.js +4 -508
- package/dist/claude-print.js +0 -10
- package/dist/cli-fast.js +0 -8
- package/dist/cli-help.js +90 -78
- package/dist/cli-http.js +0 -10
- package/dist/cli.js +26 -241
- package/dist/code-extract.js +0 -6
- package/dist/code-map-acts.js +0 -7
- package/dist/code-map-admission.js +2 -26
- package/dist/code-map-build.js +3 -24
- package/dist/code-map-cli.js +0 -4
- package/dist/code-map-main.js +0 -6
- package/dist/code-map-read.js +0 -12
- package/dist/code-map-report.js +0 -9
- package/dist/code-map-shape.js +0 -19
- package/dist/code-map-store.js +0 -26
- package/dist/codex-limits.js +1 -17
- package/dist/coding-context.js +0 -10
- package/dist/coding-handoff.js +0 -14
- package/dist/coding-provider.js +0 -39
- package/dist/coding-shipping-ui.js +0 -1
- package/dist/coding-ui.js +0 -1
- package/dist/coding-update.js +1 -18
- package/dist/coding-workspace.js +0 -27
- package/dist/commit-extract.js +0 -83
- package/dist/connect-cli.js +0 -19
- package/dist/console-chrome.js +1 -34
- package/dist/console-instance.js +2 -91
- package/dist/container-state.js +0 -4
- package/dist/containment.js +2 -105
- package/dist/contract-changes.js +0 -6
- package/dist/contracts/acceptance-terms.js +0 -7
- package/dist/contracts/chat-actions.js +0 -46
- package/dist/contracts/chat-callback-rows.js +0 -8
- package/dist/contracts/chat-card.js +0 -14
- package/dist/contracts/chat-content.js +0 -55
- package/dist/contracts/chat-tables.js +0 -7
- package/dist/contracts/cli.js +0 -59
- package/dist/contracts/coding-activity.js +0 -15
- package/dist/contracts/coding-context.js +0 -15
- package/dist/contracts/coding-handoff.js +0 -11
- package/dist/contracts/coding-workspace.js +0 -14
- package/dist/contracts/console-api.js +3 -54
- package/dist/contracts/contract-test.js +0 -14
- package/dist/contracts/contract.js +0 -48
- package/dist/contracts/decision.js +0 -20
- package/dist/contracts/diff-stat.js +0 -16
- package/dist/contracts/discord-callback.js +0 -9
- package/dist/contracts/flow-card.js +0 -18
- package/dist/contracts/flow-propose.js +0 -8
- package/dist/contracts/flow-send.js +0 -31
- package/dist/contracts/flow.js +0 -112
- package/dist/contracts/gateway-tools.js +0 -22
- package/dist/contracts/handoff.js +0 -22
- package/dist/contracts/integration-metadata.js +0 -39
- package/dist/contracts/lead-context.js +0 -14
- package/dist/contracts/lead-tools.js +0 -49
- package/dist/contracts/mcp-oauth.js +0 -12
- package/dist/contracts/memory-pass.js +0 -21
- package/dist/contracts/model-catalog.js +0 -9
- package/dist/contracts/observation-request.js +0 -11
- package/dist/contracts/plan.js +0 -16
- package/dist/contracts/project-knowledge.js +0 -26
- package/dist/contracts/project-memory.js +0 -16
- package/dist/contracts/project-skills.js +0 -31
- package/dist/contracts/proof.js +0 -23
- package/dist/contracts/provider.js +0 -9
- package/dist/contracts/recipes.js +0 -16
- package/dist/contracts/release-check.js +0 -61
- package/dist/contracts/release-terms.js +0 -27
- package/dist/contracts/retention.js +0 -12
- package/dist/contracts/review-findings.js +0 -13
- package/dist/contracts/route-results.js +0 -15
- package/dist/contracts/route.js +0 -33
- package/dist/contracts/scope.js +0 -29
- package/dist/contracts/scout-report.js +0 -34
- package/dist/contracts/slack-callback.js +0 -11
- package/dist/contracts/sort-answer.js +0 -24
- package/dist/contracts/stage-output.js +0 -46
- package/dist/contracts/storage.js +0 -8
- package/dist/contracts/store-json.js +0 -41
- package/dist/contracts/subagent-turn.js +0 -23
- package/dist/contracts/task-sizing.js +0 -10
- package/dist/contracts/teams-callback.js +0 -7
- package/dist/contracts/telegram-callback.js +0 -27
- package/dist/contracts/trigger-payloads.js +0 -41
- package/dist/contracts/update-journal.js +0 -47
- package/dist/contracts/verification-receipt.js +0 -36
- package/dist/contracts/verification-view.js +0 -15
- package/dist/contracts/youiyoux-request.js +0 -26
- package/dist/control-setup.js +0 -7
- package/dist/control-ui.js +0 -3
- package/dist/controller-service.js +0 -4
- package/dist/controller-supervisor.js +0 -15
- package/dist/converse.js +3 -129
- package/dist/coordinator-proposals.js +1 -6
- package/dist/coordinator.js +0 -65
- package/dist/credentials-ui.js +0 -6
- package/dist/daemon.js +0 -137
- package/dist/database-reclaim.js +0 -3
- package/dist/decision.js +0 -78
- package/dist/demo-chat.js +4 -15
- package/dist/demo-sign-in.js +77 -0
- package/dist/demo.js +5 -194
- package/dist/deploy-gate.js +0 -20
- package/dist/deploy-lock.js +0 -4
- package/dist/deploy-phase.js +0 -22
- package/dist/deploy-rescue.js +0 -21
- package/dist/deprecations.js +0 -12
- package/dist/design/kit.css +9 -6
- package/dist/design/kit.js +2 -33
- package/dist/desktop-access.js +0 -9
- package/dist/desktop-bundle.js +1 -3
- package/dist/desktop-host.js +0 -34
- package/dist/desktop-update-gate.js +0 -8
- package/dist/desktop-update-recovery.js +1 -18
- package/dist/desktop-update.js +2 -48
- package/dist/digest-times.js +0 -2
- package/dist/disclosure.js +0 -5
- package/dist/discord-api.js +0 -6
- package/dist/discord-chat.js +0 -31
- package/dist/discord.js +0 -7
- package/dist/discover.js +0 -50
- package/dist/dispatch.js +61 -60
- package/dist/dispose.js +0 -208
- package/dist/doctor.js +0 -48
- package/dist/easy-start-args.js +7 -7
- package/dist/easy-start.js +32 -45
- package/dist/egress.js +1 -63
- package/dist/email-settings.js +0 -8
- package/dist/envelope.js +50 -86
- package/dist/eval-gate.js +1 -37
- package/dist/eval-hooks.js +0 -120
- package/dist/eval-oracle-main.js +0 -7
- package/dist/eval-oracle.js +3 -42
- package/dist/eval-world.js +1 -23
- package/dist/evals.js +6 -134
- package/dist/evidence-pack.js +0 -29
- package/dist/evidence-pair.js +0 -17
- package/dist/evidence.js +4 -280
- package/dist/exec.js +19 -404
- package/dist/exhaustion.js +0 -30
- package/dist/export-ui.js +0 -7
- package/dist/export.js +1 -38
- package/dist/failing-first.js +0 -6
- package/dist/fallback-schema.js +0 -5
- package/dist/fallback.js +0 -81
- package/dist/fast-start.js +0 -97
- package/dist/fast-terms.js +0 -3
- package/dist/fenced-check-coverage.js +0 -11
- package/dist/findings.js +1 -63
- package/dist/first-run.js +4 -57
- package/dist/first-tasks-child.js +0 -5
- package/dist/flaky-ci.js +1 -24
- package/dist/flaky-cli.js +0 -4
- package/dist/flaky.js +0 -43
- package/dist/fleet-schema.js +0 -11
- package/dist/flow-actions.js +0 -31
- package/dist/flow-browser.js +0 -42
- package/dist/flow-cadence.js +1 -24
- package/dist/flow-card-task.js +0 -11
- package/dist/flow-changed.js +0 -16
- package/dist/flow-code.js +1 -45
- package/dist/flow-draft.js +0 -17
- package/dist/flow-engine.js +2 -76
- package/dist/flow-gallery-ui.js +0 -28
- package/dist/flow-gallery.js +0 -54
- package/dist/flow-insights.js +0 -12
- package/dist/flow-items.js +0 -27
- package/dist/flow-live.js +0 -31
- package/dist/flow-people.js +0 -14
- package/dist/flow-pull-request.js +0 -32
- package/dist/flow-replies.js +0 -9
- package/dist/flow-result-card.js +0 -8
- package/dist/flow-schedule.js +0 -74
- package/dist/flow-scripts.js +0 -13
- package/dist/flow-secrets.js +0 -10
- package/dist/flow-send.js +0 -45
- package/dist/flow-share.js +0 -60
- package/dist/flow-sort.js +1 -24
- package/dist/flow-starters-ui.js +0 -2
- package/dist/flow-starters.js +0 -13
- package/dist/flow-steps.js +0 -80
- package/dist/flow-triggers.js +2 -256
- package/dist/flow-unattended-words.js +0 -13
- package/dist/flow-unattended.js +2 -115
- package/dist/flows-cli.js +2 -36
- package/dist/flows-ui.js +0 -51
- package/dist/flows.js +0 -158
- package/dist/folder-gate.js +0 -21
- package/dist/folder-look.js +0 -42
- package/dist/follow-through-brief.js +0 -6
- package/dist/follow-through-cli.js +0 -5
- package/dist/fonts.js +0 -13
- package/dist/gaps.js +0 -20
- package/dist/gate-failure.js +0 -7
- package/dist/git-floor.js +0 -12
- package/dist/git-incident.js +2 -38
- package/dist/git-views.js +0 -24
- package/dist/git.js +0 -31
- package/dist/github-import.js +0 -22
- package/dist/github-jobs.js +0 -12
- package/dist/google-mail.js +2 -27
- package/dist/grant.js +0 -110
- package/dist/graph.js +0 -108
- package/dist/guides.js +4 -15
- package/dist/handover-note.js +0 -12
- package/dist/health-cli.js +0 -2
- package/dist/home-groups.js +0 -15
- package/dist/html.js +0 -54
- package/dist/install-method.js +0 -12
- package/dist/integrations-ui.js +0 -15
- package/dist/integrations.js +7 -50
- package/dist/invoke.js +1 -381
- package/dist/is-record.js +0 -1
- package/dist/issues.js +0 -48
- package/dist/jsonl-discriminants.js +0 -6
- package/dist/keymap.js +2 -16
- package/dist/keys.js +0 -56
- package/dist/kits-ui.js +0 -3
- package/dist/kits.js +1 -24
- package/dist/knowledge-cli.js +0 -4
- package/dist/knowledge-ui.js +0 -8
- package/dist/landed-cleanup.js +0 -119
- package/dist/laptop-background.js +0 -85
- package/dist/laptop-service.js +0 -67
- package/dist/latency-timeline.js +2 -23
- package/dist/lead-about.js +0 -7
- package/dist/lead-answer-eval.js +0 -39
- package/dist/lead-capabilities.js +0 -19
- package/dist/lead-cli-live.js +0 -22
- package/dist/lead-cli.js +0 -27
- package/dist/lead-commitments.js +1 -27
- package/dist/lead-context.js +2 -42
- package/dist/lead-contract.js +0 -8
- package/dist/lead-doors.js +0 -105
- package/dist/lead-follow.js +0 -41
- package/dist/lead-identity.js +1 -4
- package/dist/lead-latency-schema.js +0 -13
- package/dist/lead-people.js +3 -18
- package/dist/lead-progress.js +0 -12
- package/dist/lead-queue-runtime.js +0 -26
- package/dist/lead-queue.js +0 -35
- package/dist/lead-route.js +0 -33
- package/dist/lead-status.js +0 -37
- package/dist/lead-sweep.js +0 -18
- package/dist/lead-tools.js +0 -160
- package/dist/lead-voice.js +0 -54
- package/dist/lead.js +2 -105
- package/dist/learning-child.js +0 -6
- package/dist/learning-look.js +0 -14
- package/dist/ledger-chain.js +0 -34
- package/dist/ledger-csv.js +0 -2
- package/dist/ledger-view.js +0 -3
- package/dist/lesson-notes.js +0 -56
- package/dist/limits-ui.js +0 -14
- package/dist/link.js +0 -79
- package/dist/live-backup.js +3 -33
- package/dist/live-bus.js +7 -81
- package/dist/live-children-read.js +4 -47
- package/dist/live-children.js +4 -44
- package/dist/live-detail.js +0 -17
- package/dist/live-input.js +5 -68
- package/dist/live-main-read.js +1 -14
- package/dist/live-notes.js +0 -12
- package/dist/live-open.js +1 -23
- package/dist/live-records.js +4 -151
- package/dist/live-reply.js +1 -51
- package/dist/live-terminal.js +12 -111
- package/dist/live.js +4 -130
- package/dist/local-owner-acts.js +168 -0
- package/dist/local-owner.js +15 -80
- package/dist/log.js +0 -8
- package/dist/login-secrets.js +2 -38
- package/dist/machine-check.js +0 -2
- package/dist/machine-identity.js +1 -46
- package/dist/mailbox.js +0 -30
- package/dist/maintenance.js +1 -3
- package/dist/mcp-connect.js +0 -88
- package/dist/mcp-core.js +0 -45
- package/dist/mcp-http.js +0 -13
- package/dist/mcp-oauth.js +0 -37
- package/dist/mcp-person.js +0 -11
- package/dist/mcp.js +3 -73
- package/dist/memory-cli.js +0 -3
- package/dist/memory-pass.js +0 -53
- package/dist/memory-tidy.js +0 -55
- package/dist/memory-use.js +2 -24
- package/dist/merge-checklist.js +21 -29
- package/dist/metrics.js +0 -10
- package/dist/mobile-viewport.js +0 -6
- package/dist/model-catalog.js +1 -33
- package/dist/model-choices.js +9 -84
- package/dist/model-names.js +0 -9
- package/dist/models-cli.js +0 -13
- package/dist/models-ui.js +0 -17
- package/dist/modes.js +0 -35
- package/dist/monitoring-settings.js +2 -27
- package/dist/monitoring-ui.js +2 -14
- package/dist/monitoring.js +2 -38
- package/dist/names.js +0 -39
- package/dist/needs-you.js +7 -70
- package/dist/never-index.js +0 -9
- package/dist/nightly-check.js +0 -74
- package/dist/nightly-github.js +0 -168
- package/dist/notification-delivery.js +0 -3
- package/dist/notification-rows.js +0 -17
- package/dist/oauth-run-token.js +1 -37
- package/dist/observations.js +0 -16
- package/dist/oidc.js +1 -20
- package/dist/onboard.js +4 -57
- package/dist/one-step-chat-schema.js +0 -15
- package/dist/openrouter-models.js +0 -6
- package/dist/operate-remote-arguments.js +2 -17
- package/dist/operate-remote.js +0 -33
- package/dist/operate.js +280 -2304
- package/dist/orphan-sweep.js +3 -37
- package/dist/page-work-contract.js +0 -3
- package/dist/password-bearer.js +1 -11
- package/dist/passwordless.js +0 -3
- package/dist/peek-cli.js +0 -46
- package/dist/peek.js +2 -61
- package/dist/people-audit-ui.js +0 -6
- package/dist/person-proof.js +0 -6
- package/dist/phase-routing.js +8 -183
- package/dist/plain-schema.js +0 -14
- package/dist/plain-words.js +18 -12
- package/dist/plan-auto.js +3 -18
- package/dist/plan-login.js +0 -16
- package/dist/plan.js +0 -68
- package/dist/plane-review.js +0 -56
- package/dist/planner-source.js +0 -96
- package/dist/planner.js +0 -117
- package/dist/policy-ui.js +0 -8
- package/dist/policy.js +0 -47
- package/dist/prepared-evidence.js +0 -5
- package/dist/principal.js +0 -29
- package/dist/probe.js +0 -30
- package/dist/process-custody.js +0 -15
- package/dist/process-liveness.js +0 -32
- package/dist/process-tree.js +3 -29
- package/dist/project-access.js +0 -10
- package/dist/project-admission.js +1 -41
- package/dist/project-cli.js +0 -6
- package/dist/project-concurrency.js +0 -35
- package/dist/project-delete-ui.js +4 -29
- package/dist/project-delete.js +1 -73
- package/dist/project-demo.js +0 -13
- package/dist/project-file.js +0 -2
- package/dist/project-identity.js +0 -41
- package/dist/project-knowledge.js +0 -39
- package/dist/project-learning.js +3 -55
- package/dist/project-memory.js +2 -45
- package/dist/project-outcomes.js +0 -6
- package/dist/project-sandbox.js +0 -23
- package/dist/project-skills.js +0 -12
- package/dist/project-tools.js +6 -184
- package/dist/project.js +0 -48
- package/dist/prompt.js +0 -31
- package/dist/proof.js +0 -220
- package/dist/proposal.js +0 -50
- package/dist/protected-storage-look.js +0 -6
- package/dist/protected-storage.js +1 -84
- package/dist/provider-auth.js +3 -69
- package/dist/provider-capture.js +1 -15
- package/dist/provider-connection.js +0 -8
- package/dist/provider-home.js +0 -25
- package/dist/provider-limits.js +0 -14
- package/dist/provider.js +0 -324
- package/dist/public-access.js +11 -30
- package/dist/public-check.js +0 -16
- package/dist/publish.js +1 -150
- package/dist/pull-request-flow.js +6 -74
- package/dist/pull-request-schema.js +0 -4
- package/dist/pull-request-ui.js +0 -5
- package/dist/pulls.js +0 -80
- package/dist/push.js +5 -89
- package/dist/quick-start.js +1 -23
- package/dist/read-executor-worker.js +0 -1
- package/dist/read-executor.js +0 -10
- package/dist/read-only-request.js +0 -7
- package/dist/recipe-ui.js +0 -6
- package/dist/recipes.js +0 -13
- package/dist/release-adapters.js +6 -214
- package/dist/release-approval.js +0 -74
- package/dist/release-authority.js +0 -42
- package/dist/release-auto.js +0 -142
- package/dist/release-card.js +26 -103
- package/dist/release-carry.js +0 -132
- package/dist/release-ci-hold.js +0 -20
- package/dist/release-cli.js +0 -46
- package/dist/release-coverage.js +0 -16
- package/dist/release-gate.js +0 -30
- package/dist/release-git.js +0 -24
- package/dist/release-links.js +0 -17
- package/dist/release-net.js +0 -42
- package/dist/release-next.js +0 -25
- package/dist/release-recheck.js +0 -89
- package/dist/release-refusal.js +0 -18
- package/dist/release-view.js +0 -5
- package/dist/release.js +7 -341
- package/dist/releases.js +0 -49
- package/dist/remote-audit.js +0 -25
- package/dist/remote-command.js +0 -16
- package/dist/remote-destination.js +5 -26
- package/dist/remote-exec.js +1 -27
- package/dist/remote-main.js +1 -53
- package/dist/remote-run.js +0 -5
- package/dist/remote.js +0 -49
- package/dist/render.js +0 -133
- package/dist/reply-shape.js +0 -85
- package/dist/reply-voice.js +0 -7
- package/dist/report-summary.js +0 -5
- package/dist/reported-usage.js +0 -30
- package/dist/repos.js +9 -62
- package/dist/repository-context.js +1 -24
- package/dist/request-budget-ui.js +0 -4
- package/dist/request-budget.js +0 -23
- package/dist/restart-certification.js +0 -37
- package/dist/result-actions.js +0 -62
- package/dist/result-acts.js +0 -34
- package/dist/result-completion.js +9 -28
- package/dist/result-evidence-readers.js +0 -3
- package/dist/result-follow-ups.js +1 -39
- package/dist/result-review.js +0 -86
- package/dist/result-shots.js +0 -39
- package/dist/retention-ui.js +0 -7
- package/dist/retention.js +2 -46
- package/dist/review-context.js +0 -129
- package/dist/review-evidence.js +0 -4
- package/dist/review-switch.js +1 -7
- package/dist/reviewer.js +0 -35
- package/dist/route-change-check.js +0 -2
- package/dist/route-change.js +0 -16
- package/dist/route-hooks.js +0 -27
- package/dist/route-results.js +2 -58
- package/dist/route-rules.js +1 -106
- package/dist/route-savings.js +0 -36
- package/dist/route-store.js +1 -133
- package/dist/run-closeout.js +2 -50
- package/dist/run-efficiency.js +2 -44
- package/dist/run-ending.js +0 -13
- package/dist/runner-process.js +0 -33
- package/dist/runner.js +17 -189
- package/dist/sample-project.js +2 -27
- package/dist/sandbox-launch.js +4 -25
- package/dist/sandbox-runtime.js +1 -88
- package/dist/scan.js +0 -27
- package/dist/scope.js +88 -566
- package/dist/scout-browser-lock.js +0 -6
- package/dist/scout-browser.js +2 -68
- package/dist/scout-net.js +1 -32
- package/dist/scout-report.js +0 -22
- package/dist/scout.js +1 -116
- package/dist/secret-mint.js +0 -6
- package/dist/serve.js +29 -564
- package/dist/server/agents-computers.js +0 -10
- package/dist/server/agents-live-filed.js +0 -13
- package/dist/server/agents-live-lead.js +0 -19
- package/dist/server/agents-live-room.js +0 -19
- package/dist/server/chat.js +2 -194
- package/dist/server/chrome.js +17 -263
- package/dist/server/console.css +4 -4
- package/dist/server/edge-refusal.js +0 -3
- package/dist/server/flows.js +5 -74
- package/dist/server/guards.js +9 -86
- package/dist/server/handler-registry.js +0 -2
- package/dist/server/home-asks.js +1 -22
- package/dist/server/home.js +1 -30
- package/dist/server/http.js +0 -82
- package/dist/server/in-place.js +0 -15
- package/dist/server/kit-standalone.js +0 -20
- package/dist/server/kit.js +2 -114
- package/dist/server/last-checks.js +0 -2
- package/dist/server/live.js +1 -36
- package/dist/server/merge-ready-view.js +0 -6
- package/dist/server/mutation-key.js +3 -40
- package/dist/server/pages-assets.js +0 -16
- package/dist/server/pages.js +7 -195
- package/dist/server/people-tokens.js +3 -101
- package/dist/server/remote-hooks.js +0 -13
- package/dist/server/remote.js +0 -28
- package/dist/server/render-chat.js +8 -144
- package/dist/server/render-code-map.js +0 -5
- package/dist/server/render-flaky.js +0 -8
- package/dist/server/render-follow-through.js +2 -5
- package/dist/server/render-history.js +2 -34
- package/dist/server/render-new-task.js +2 -29
- package/dist/server/render-pages.js +1 -111
- package/dist/server/render-people.js +2 -46
- package/dist/server/render-projects.js +15 -32
- package/dist/server/render-release.js +1 -14
- package/dist/server/render-results.js +4 -355
- package/dist/server/render-settings.js +0 -15
- package/dist/server/render-tasks.js +17 -497
- package/dist/server/request-context.js +2 -9
- package/dist/server/retired-routes.js +0 -11
- package/dist/server/route-policy.js +0 -3
- package/dist/server/route-table.js +8 -133
- package/dist/server/runtime.js +0 -1
- package/dist/server/session.js +0 -28
- package/dist/server/settings.js +40 -246
- package/dist/server/signup-gate.js +0 -11
- package/dist/server/sweeps.js +0 -6
- package/dist/server/task-views.js +12 -227
- package/dist/server/tasks.js +37 -531
- package/dist/server/terminals.js +2 -46
- package/dist/server/welcome.js +2 -22
- package/dist/server-telemetry.js +0 -9
- package/dist/settings-groups-ui.js +50 -63
- package/dist/settings-kit-script.js +0 -19
- package/dist/settings-kit.js +0 -63
- package/dist/settings-proofs.js +0 -23
- package/dist/setup-guide.js +1 -9
- package/dist/shared-deps.js +9 -84
- package/dist/sign-in-guard.js +0 -27
- package/dist/skills-ui.js +0 -2
- package/dist/skills.js +2 -54
- package/dist/slack-api.js +0 -3
- package/dist/slack-chat.js +0 -25
- package/dist/slack-settings.js +0 -1
- package/dist/slack-socket.js +0 -5
- package/dist/slack.js +0 -4
- package/dist/sleep.js +0 -1
- package/dist/source-key.js +0 -10
- package/dist/spend-report.js +0 -29
- package/dist/spend-ui.js +0 -26
- package/dist/spend.js +0 -40
- package/dist/sqlite-runtime.js +0 -2
- package/dist/sqlite-telemetry.js +0 -9
- package/dist/sso-settings.js +0 -13
- package/dist/sso-ui.js +0 -2
- package/dist/staged-runtimes.js +5 -39
- package/dist/steer-capabilities.js +1 -7
- package/dist/steer-controls.js +0 -10
- package/dist/steer-live.js +0 -31
- package/dist/steer-mailbox.js +4 -65
- package/dist/steer-status.js +0 -7
- package/dist/stop-proof.js +5 -62
- package/dist/storage-sweep-child.js +1 -5
- package/dist/storage-sweep-process.js +2 -20
- package/dist/storage-sweep-schedule.js +0 -32
- package/dist/storage-sweep.js +2 -51
- package/dist/storage-ui.js +0 -18
- package/dist/storage.js +0 -31
- package/dist/store-baseline.js +0 -14
- package/dist/store.js +109 -4763
- package/dist/stream-scope.js +0 -16
- package/dist/structured-output.js +0 -39
- package/dist/style-asset.js +0 -2
- package/dist/subagent-admin.js +0 -9
- package/dist/subagent-desk.js +0 -29
- package/dist/subagent-memory.js +0 -38
- package/dist/subagent-question.js +0 -29
- package/dist/subagent-tools.js +1 -60
- package/dist/subagent-week.js +0 -28
- package/dist/subagent-work.js +1 -39
- package/dist/subagents-ui.js +1 -13
- package/dist/subagents.js +0 -40
- package/dist/subscription-chat.js +1 -42
- package/dist/summary.js +0 -19
- package/dist/surface.js +8 -73
- package/dist/sweep-gate.js +0 -2
- package/dist/sweep-quarantine.js +2 -13
- package/dist/sync.js +0 -47
- package/dist/tailnet.js +0 -9
- package/dist/tamper-scan.js +0 -15
- package/dist/task-activity.js +1 -16
- package/dist/task-aliases.js +0 -3
- package/dist/task-archive.js +0 -7
- package/dist/task-base.js +0 -18
- package/dist/task-composer.js +0 -2
- package/dist/task-control.js +0 -74
- package/dist/task-live.js +0 -23
- package/dist/task-moves.js +0 -28
- package/dist/task-outcome-cli.js +66 -19
- package/dist/task-review-brief.js +0 -7
- package/dist/task-sizing.js +0 -47
- package/dist/task-source.js +0 -23
- package/dist/task-status.js +0 -106
- package/dist/task-text.js +0 -12
- package/dist/team-chat-authorization.js +0 -3
- package/dist/team-contract.js +0 -2
- package/dist/team-http.js +0 -4
- package/dist/team-leads.js +1 -16
- package/dist/team-runtime.js +0 -13
- package/dist/team-ui.js +0 -1
- package/dist/team-updates.js +0 -4
- package/dist/teams-api.js +0 -12
- package/dist/teams-chat.js +0 -28
- package/dist/teams.js +0 -12
- package/dist/teardown-git.js +6 -294
- package/dist/telegram-flow.js +0 -51
- package/dist/telegram-lead.js +2 -203
- package/dist/telegram-live.js +1 -42
- package/dist/telegram-progress.js +0 -18
- package/dist/telegram-settings.js +0 -7
- package/dist/telegram-status.js +0 -46
- package/dist/telegram-team.js +1 -33
- package/dist/telegram.js +6 -454
- package/dist/templates.js +0 -24
- package/dist/terminal-catalog.js +2 -20
- package/dist/terminal-text.js +0 -12
- package/dist/test-infra.js +0 -50
- package/dist/test-temp.js +3 -26
- package/dist/text-limits.js +0 -92
- package/dist/tidy.js +0 -76
- package/dist/tier-report.js +0 -2
- package/dist/token-notices.js +1 -9
- package/dist/tokens-cli.js +0 -13
- package/dist/tool-broker.js +2 -53
- package/dist/tool-launcher.js +0 -14
- package/dist/tool-secret-store.js +3 -125
- package/dist/toolroll-update-cli.js +0 -9
- package/dist/toolroll-update-ui.js +0 -14
- package/dist/toolroll-update.js +13 -252
- package/dist/tools-ui.js +0 -17
- package/dist/transitions-recipes.js +0 -2
- package/dist/tree-proof.js +0 -23
- package/dist/tui-contract.js +0 -8
- package/dist/tui-source.js +91 -40
- package/dist/tui.js +54 -54
- package/dist/typed-start.js +0 -27
- package/dist/unfenced-test-support.js +0 -5
- package/dist/up-processes.js +1 -40
- package/dist/up-role-child.js +1 -13
- package/dist/update-notice.js +0 -1
- package/dist/vanished-retry.js +0 -40
- package/dist/verification-evidence.js +0 -39
- package/dist/version.js +0 -1
- package/dist/wake-hub.js +0 -28
- package/dist/webhook-limits.js +0 -7
- package/dist/webhook-readers.js +0 -30
- package/dist/webhook-signing.js +0 -14
- package/dist/webhooks.js +0 -54
- package/dist/welcome-facts.js +2 -14
- package/dist/when-html.js +0 -27
- package/dist/work-index.js +26 -98
- package/dist/work-summary.js +2 -17
- package/dist/workspace-motion.js +0 -2
- package/dist/workspace-revision.js +1 -21
- package/dist/workspace-ui.js +15 -135
- package/dist/worktree-notices.js +0 -3
- package/dist/worktree.js +0 -308
- package/dist/writes-mode.js +0 -1
- package/dist/youiyoux-intake.js +4 -159
- package/package.json +5 -4
- package/dist/accent-colors.d.ts +0 -51
- package/dist/acp-agents.d.ts +0 -43
- package/dist/acp-attest.d.ts +0 -44
- package/dist/acp-check.d.ts +0 -37
- package/dist/acp-client.d.ts +0 -163
- package/dist/acp-inspect.d.ts +0 -23
- package/dist/action-ledger.d.ts +0 -27
- package/dist/activity-line.d.ts +0 -29
- package/dist/actor.d.ts +0 -11
- package/dist/agent-board.d.ts +0 -229
- package/dist/agent-fence.d.ts +0 -479
- package/dist/agent-onboard.d.ts +0 -158
- package/dist/agent-pulse.d.ts +0 -43
- package/dist/agent-state-words.d.ts +0 -19
- package/dist/agent-state.d.ts +0 -65
- package/dist/agent-turns.d.ts +0 -52
- package/dist/agentconfig.d.ts +0 -191
- package/dist/agents-board.d.ts +0 -145
- package/dist/agents-live.d.ts +0 -31
- package/dist/api-tokens.d.ts +0 -80
- package/dist/approval-authority.d.ts +0 -51
- package/dist/approval-password.d.ts +0 -31
- package/dist/approval-policy.d.ts +0 -69
- package/dist/approval-rules-ui.d.ts +0 -40
- package/dist/assignment-adapters.d.ts +0 -152
- package/dist/assignment-brief.d.ts +0 -83
- package/dist/assignment-delivery.d.ts +0 -86
- package/dist/assignment-presentation.d.ts +0 -37
- package/dist/assignment-status.d.ts +0 -71
- package/dist/assignment-ui.d.ts +0 -68
- package/dist/assignment.d.ts +0 -318
- package/dist/attest.d.ts +0 -59
- package/dist/audit-cli.d.ts +0 -17
- package/dist/backend.d.ts +0 -97
- package/dist/backup-ui.d.ts +0 -32
- package/dist/backup.d.ts +0 -92
- package/dist/batch-checks.d.ts +0 -15
- package/dist/batch-policy.d.ts +0 -23
- package/dist/beads.d.ts +0 -34
- package/dist/bin.d.ts +0 -2
- package/dist/board.d.ts +0 -134
- package/dist/boot-identity.d.ts +0 -64
- package/dist/bounded-spawn.d.ts +0 -57
- package/dist/brand-icons.d.ts +0 -168
- package/dist/brand-mark.d.ts +0 -28
- package/dist/brief-fence.d.ts +0 -9
- package/dist/browser-crew.d.ts +0 -12
- package/dist/browser-shell.d.ts +0 -9
- package/dist/browser-workspace.d.ts +0 -1972
- package/dist/budget-alerts.d.ts +0 -19
- package/dist/build-review.d.ts +0 -38
- package/dist/builder-restart.d.ts +0 -21
- package/dist/builder.d.ts +0 -409
- package/dist/canonical-json.d.ts +0 -14
- package/dist/capscan.d.ts +0 -35
- package/dist/card-catalog.d.ts +0 -209
- package/dist/card-cli.d.ts +0 -43
- package/dist/card-render.d.ts +0 -43
- package/dist/card-sources.d.ts +0 -68
- package/dist/chat-acceptance.d.ts +0 -74
- package/dist/chat-actions.d.ts +0 -460
- package/dist/chat-admission.d.ts +0 -19
- package/dist/chat-approval.d.ts +0 -58
- package/dist/chat-ask.d.ts +0 -32
- package/dist/chat-card-part.d.ts +0 -11
- package/dist/chat-card.d.ts +0 -46
- package/dist/chat-channel.d.ts +0 -126
- package/dist/chat-continuity.d.ts +0 -32
- package/dist/chat-controls.d.ts +0 -117
- package/dist/chat-core.d.ts +0 -177
- package/dist/chat-decide.d.ts +0 -269
- package/dist/chat-delivery-state.d.ts +0 -132
- package/dist/chat-delivery.d.ts +0 -71
- package/dist/chat-display.d.ts +0 -1
- package/dist/chat-evidence.d.ts +0 -123
- package/dist/chat-flow.d.ts +0 -70
- package/dist/chat-follow.d.ts +0 -20
- package/dist/chat-inbox.d.ts +0 -57
- package/dist/chat-live-schema.d.ts +0 -17
- package/dist/chat-live.d.ts +0 -161
- package/dist/chat-message-states.d.ts +0 -75
- package/dist/chat-messages.d.ts +0 -338
- package/dist/chat-migration.d.ts +0 -30
- package/dist/chat-polish.d.ts +0 -17
- package/dist/chat-quiet.d.ts +0 -40
- package/dist/chat-review.d.ts +0 -51
- package/dist/chat-rooms.d.ts +0 -123
- package/dist/chat-settings-page.d.ts +0 -43
- package/dist/chat-task-actions.d.ts +0 -59
- package/dist/chat-terms.d.ts +0 -29
- package/dist/chat-voice.d.ts +0 -69
- package/dist/chat-warmth.d.ts +0 -21
- package/dist/check-access.d.ts +0 -54
- package/dist/check-facts.d.ts +0 -126
- package/dist/check-failure.d.ts +0 -113
- package/dist/check-levels-ui.d.ts +0 -36
- package/dist/check-levels.d.ts +0 -70
- package/dist/check-load.d.ts +0 -85
- package/dist/check-only-standing.d.ts +0 -36
- package/dist/check-only.d.ts +0 -15
- package/dist/check-progress.d.ts +0 -78
- package/dist/check-repair.d.ts +0 -47
- package/dist/check-report.d.ts +0 -177
- package/dist/check-stamp.d.ts +0 -46
- package/dist/checkout-cleanup.d.ts +0 -157
- package/dist/checkout-proof.d.ts +0 -28
- package/dist/child-database.d.ts +0 -12
- package/dist/claim.d.ts +0 -627
- package/dist/claude-print.d.ts +0 -12
- package/dist/cli-fast.d.ts +0 -8
- package/dist/cli-help.d.ts +0 -8
- package/dist/cli-http.d.ts +0 -58
- package/dist/cli.d.ts +0 -149
- package/dist/code-extract.d.ts +0 -44
- package/dist/code-map-acts.d.ts +0 -24
- package/dist/code-map-admission.d.ts +0 -52
- package/dist/code-map-build.d.ts +0 -63
- package/dist/code-map-cli.d.ts +0 -153
- package/dist/code-map-main.d.ts +0 -1
- package/dist/code-map-read.d.ts +0 -106
- package/dist/code-map-report.d.ts +0 -37
- package/dist/code-map-shape.d.ts +0 -172
- package/dist/code-map-store.d.ts +0 -136
- package/dist/codex-limits.d.ts +0 -15
- package/dist/coding-context.d.ts +0 -18
- package/dist/coding-handoff.d.ts +0 -39
- package/dist/coding-provider.d.ts +0 -88
- package/dist/coding-shipping-ui.d.ts +0 -5
- package/dist/coding-types.d.ts +0 -16
- package/dist/coding-ui.d.ts +0 -19
- package/dist/coding-update.d.ts +0 -28
- package/dist/coding-workspace.d.ts +0 -141
- package/dist/commit-extract.d.ts +0 -135
- package/dist/connect-cli.d.ts +0 -34
- package/dist/console-chrome.d.ts +0 -41
- package/dist/console-instance.d.ts +0 -157
- package/dist/container-state.d.ts +0 -5
- package/dist/containment.d.ts +0 -205
- package/dist/contract-changes.d.ts +0 -52
- package/dist/contracts/acceptance-terms.d.ts +0 -14
- package/dist/contracts/chat-actions.d.ts +0 -465
- package/dist/contracts/chat-callback-rows.d.ts +0 -59
- package/dist/contracts/chat-card.d.ts +0 -91
- package/dist/contracts/chat-content.d.ts +0 -551
- package/dist/contracts/chat-tables.d.ts +0 -12
- package/dist/contracts/cli.d.ts +0 -987
- package/dist/contracts/coding-activity.d.ts +0 -64
- package/dist/contracts/coding-context.d.ts +0 -97
- package/dist/contracts/coding-handoff.d.ts +0 -44
- package/dist/contracts/coding-workspace.d.ts +0 -165
- package/dist/contracts/console-api.d.ts +0 -539
- package/dist/contracts/contract-test.d.ts +0 -45
- package/dist/contracts/contract.d.ts +0 -92
- package/dist/contracts/decision.d.ts +0 -45
- package/dist/contracts/diff-stat.d.ts +0 -58
- package/dist/contracts/discord-callback.d.ts +0 -45
- package/dist/contracts/flow-card.d.ts +0 -53
- package/dist/contracts/flow-propose.d.ts +0 -334
- package/dist/contracts/flow-send.d.ts +0 -245
- package/dist/contracts/flow.d.ts +0 -19565
- package/dist/contracts/gateway-tools.d.ts +0 -472
- package/dist/contracts/handoff.d.ts +0 -91
- package/dist/contracts/health.d.ts +0 -82
- package/dist/contracts/integration-metadata.d.ts +0 -100
- package/dist/contracts/lead-context.d.ts +0 -165
- package/dist/contracts/lead-tools.d.ts +0 -2312
- package/dist/contracts/mcp-oauth.d.ts +0 -53
- package/dist/contracts/memory-pass.d.ts +0 -157
- package/dist/contracts/model-catalog.d.ts +0 -21
- package/dist/contracts/observation-request.d.ts +0 -37
- package/dist/contracts/plan.d.ts +0 -58
- package/dist/contracts/project-knowledge.d.ts +0 -159
- package/dist/contracts/project-memory.d.ts +0 -119
- package/dist/contracts/project-skills.d.ts +0 -120
- package/dist/contracts/proof.d.ts +0 -136
- package/dist/contracts/provider.d.ts +0 -40
- package/dist/contracts/recipes.d.ts +0 -166
- package/dist/contracts/release-check.d.ts +0 -371
- package/dist/contracts/release-terms.d.ts +0 -107
- package/dist/contracts/retention.d.ts +0 -42
- package/dist/contracts/review-findings.d.ts +0 -46
- package/dist/contracts/route-results.d.ts +0 -121
- package/dist/contracts/route.d.ts +0 -897
- package/dist/contracts/scope.d.ts +0 -105
- package/dist/contracts/scout-report.d.ts +0 -234
- package/dist/contracts/slack-callback.d.ts +0 -43
- package/dist/contracts/sort-answer.d.ts +0 -83
- package/dist/contracts/stage-output.d.ts +0 -127
- package/dist/contracts/storage.d.ts +0 -37
- package/dist/contracts/store-json.d.ts +0 -313
- package/dist/contracts/subagent-turn.d.ts +0 -43
- package/dist/contracts/task-sizing.d.ts +0 -24
- package/dist/contracts/teams-callback.d.ts +0 -13
- package/dist/contracts/telegram-callback.d.ts +0 -120
- package/dist/contracts/trigger-payloads.d.ts +0 -389
- package/dist/contracts/update-journal.d.ts +0 -254
- package/dist/contracts/verification-receipt.d.ts +0 -200
- package/dist/contracts/verification-view.d.ts +0 -102
- package/dist/contracts/youiyoux-request.d.ts +0 -248
- package/dist/control-setup.d.ts +0 -44
- package/dist/control-ui.d.ts +0 -37
- package/dist/controller-service.d.ts +0 -1
- package/dist/controller-supervisor.d.ts +0 -38
- package/dist/converse.d.ts +0 -316
- package/dist/coordinator-proposals.d.ts +0 -29
- package/dist/coordinator.d.ts +0 -186
- package/dist/credentials-ui.d.ts +0 -33
- package/dist/daemon.d.ts +0 -226
- package/dist/database-reclaim.d.ts +0 -4
- package/dist/decision.d.ts +0 -119
- package/dist/demo-chat.d.ts +0 -32
- package/dist/demo.d.ts +0 -153
- package/dist/deploy-gate.d.ts +0 -20
- package/dist/deploy-lock.d.ts +0 -8
- package/dist/deploy-phase.d.ts +0 -37
- package/dist/deploy-rescue.d.ts +0 -42
- package/dist/deprecations.d.ts +0 -20
- package/dist/design/kit.d.ts +0 -216
- package/dist/desktop-access.d.ts +0 -28
- package/dist/desktop-bundle.d.ts +0 -16
- package/dist/desktop-host.d.ts +0 -54
- package/dist/desktop-update-gate.d.ts +0 -12
- package/dist/desktop-update-recovery.d.ts +0 -14
- package/dist/desktop-update.d.ts +0 -147
- package/dist/digest-times.d.ts +0 -3
- package/dist/disclosure.d.ts +0 -6
- package/dist/discord-api.d.ts +0 -24
- package/dist/discord-chat.d.ts +0 -27
- package/dist/discord-settings.d.ts +0 -4
- package/dist/discord.d.ts +0 -10
- package/dist/discover.d.ts +0 -75
- package/dist/dispatch.d.ts +0 -123
- package/dist/dispose.d.ts +0 -194
- package/dist/doctor.d.ts +0 -67
- package/dist/easy-start-args.d.ts +0 -13
- package/dist/easy-start.d.ts +0 -77
- package/dist/egress.d.ts +0 -121
- package/dist/email-settings.d.ts +0 -34
- package/dist/envelope.d.ts +0 -47
- package/dist/eval-gate.d.ts +0 -51
- package/dist/eval-hooks.d.ts +0 -94
- package/dist/eval-oracle-main.d.ts +0 -1
- package/dist/eval-oracle.d.ts +0 -60
- package/dist/eval-world.d.ts +0 -17
- package/dist/evals.d.ts +0 -299
- package/dist/evidence-pack.d.ts +0 -186
- package/dist/evidence-pair.d.ts +0 -53
- package/dist/evidence.d.ts +0 -371
- package/dist/exec.d.ts +0 -355
- package/dist/exhaustion.d.ts +0 -58
- package/dist/export-ui.d.ts +0 -11
- package/dist/export.d.ts +0 -48
- package/dist/failing-first.d.ts +0 -31
- package/dist/fallback-schema.d.ts +0 -8
- package/dist/fallback.d.ts +0 -138
- package/dist/fast-start.d.ts +0 -213
- package/dist/fast-terms.d.ts +0 -9
- package/dist/fenced-check-coverage.d.ts +0 -62
- package/dist/findings.d.ts +0 -224
- package/dist/first-run.d.ts +0 -197
- package/dist/first-tasks-child.d.ts +0 -1
- package/dist/flaky-ci.d.ts +0 -31
- package/dist/flaky-cli.d.ts +0 -60
- package/dist/flaky.d.ts +0 -83
- package/dist/fleet-schema.d.ts +0 -17
- package/dist/flow-actions.d.ts +0 -79
- package/dist/flow-browser.d.ts +0 -103
- package/dist/flow-cadence.d.ts +0 -48
- package/dist/flow-card-task.d.ts +0 -11
- package/dist/flow-changed.d.ts +0 -14
- package/dist/flow-code.d.ts +0 -84
- package/dist/flow-draft.d.ts +0 -42
- package/dist/flow-engine.d.ts +0 -82
- package/dist/flow-gallery-ui.d.ts +0 -73
- package/dist/flow-gallery.d.ts +0 -147
- package/dist/flow-insights.d.ts +0 -104
- package/dist/flow-items.d.ts +0 -37
- package/dist/flow-live.d.ts +0 -16
- package/dist/flow-people.d.ts +0 -23
- package/dist/flow-pull-request.d.ts +0 -14
- package/dist/flow-replies.d.ts +0 -48
- package/dist/flow-result-card.d.ts +0 -22
- package/dist/flow-schedule.d.ts +0 -154
- package/dist/flow-scripts.d.ts +0 -31
- package/dist/flow-secrets.d.ts +0 -13
- package/dist/flow-send.d.ts +0 -54
- package/dist/flow-share.d.ts +0 -78
- package/dist/flow-sort.d.ts +0 -63
- package/dist/flow-starters-ui.d.ts +0 -15
- package/dist/flow-starters.d.ts +0 -63
- package/dist/flow-steps.d.ts +0 -52
- package/dist/flow-triggers.d.ts +0 -303
- package/dist/flow-unattended-words.d.ts +0 -48
- package/dist/flow-unattended.d.ts +0 -259
- package/dist/flows-cli.d.ts +0 -358
- package/dist/flows-ui.d.ts +0 -70
- package/dist/flows.d.ts +0 -136
- package/dist/folder-gate.d.ts +0 -32
- package/dist/folder-look.d.ts +0 -110
- package/dist/follow-through-brief.d.ts +0 -12
- package/dist/follow-through-cli.d.ts +0 -23
- package/dist/fonts.d.ts +0 -19
- package/dist/gaps.d.ts +0 -35
- package/dist/gate-failure.d.ts +0 -40
- package/dist/git-floor.d.ts +0 -16
- package/dist/git-incident.d.ts +0 -65
- package/dist/git-views.d.ts +0 -20
- package/dist/git.d.ts +0 -54
- package/dist/github-import.d.ts +0 -62
- package/dist/github-jobs.d.ts +0 -25
- package/dist/google-mail.d.ts +0 -59
- package/dist/grant.d.ts +0 -136
- package/dist/graph.d.ts +0 -164
- package/dist/guides.d.ts +0 -22
- package/dist/handover-note.d.ts +0 -33
- package/dist/health-cli.d.ts +0 -3
- package/dist/home-groups.d.ts +0 -39
- package/dist/html.d.ts +0 -85
- package/dist/install-method.d.ts +0 -17
- package/dist/integrations-ui.d.ts +0 -17
- package/dist/integrations.d.ts +0 -138
- package/dist/invoke.d.ts +0 -228
- package/dist/is-record.d.ts +0 -2
- package/dist/issues.d.ts +0 -41
- package/dist/jsonl-discriminants.d.ts +0 -11
- package/dist/keymap.d.ts +0 -41
- package/dist/keys.d.ts +0 -108
- package/dist/kits-ui.d.ts +0 -16
- package/dist/kits.d.ts +0 -88
- package/dist/knowledge-cli.d.ts +0 -132
- package/dist/knowledge-ui.d.ts +0 -45
- package/dist/landed-cleanup.d.ts +0 -175
- package/dist/laptop-background.d.ts +0 -187
- package/dist/laptop-service.d.ts +0 -111
- package/dist/latency-timeline.d.ts +0 -46
- package/dist/lead-about.d.ts +0 -35
- package/dist/lead-answer-eval.d.ts +0 -93
- package/dist/lead-capabilities.d.ts +0 -57
- package/dist/lead-cli-live.d.ts +0 -56
- package/dist/lead-cli.d.ts +0 -58
- package/dist/lead-commitments.d.ts +0 -84
- package/dist/lead-context.d.ts +0 -45
- package/dist/lead-contract.d.ts +0 -10
- package/dist/lead-doors.d.ts +0 -122
- package/dist/lead-follow.d.ts +0 -26
- package/dist/lead-identity.d.ts +0 -23
- package/dist/lead-latency-schema.d.ts +0 -24
- package/dist/lead-people.d.ts +0 -55
- package/dist/lead-progress.d.ts +0 -67
- package/dist/lead-queue-runtime.d.ts +0 -46
- package/dist/lead-queue.d.ts +0 -104
- package/dist/lead-route.d.ts +0 -56
- package/dist/lead-status.d.ts +0 -116
- package/dist/lead-sweep.d.ts +0 -67
- package/dist/lead-tools.d.ts +0 -167
- package/dist/lead-voice.d.ts +0 -85
- package/dist/lead.d.ts +0 -142
- package/dist/learning-child.d.ts +0 -1
- package/dist/learning-look.d.ts +0 -25
- package/dist/ledger-chain.d.ts +0 -46
- package/dist/ledger-csv.d.ts +0 -4
- package/dist/ledger-view.d.ts +0 -27
- package/dist/lesson-notes.d.ts +0 -81
- package/dist/limits-ui.d.ts +0 -34
- package/dist/link.d.ts +0 -72
- package/dist/live-backup.d.ts +0 -39
- package/dist/live-bus.d.ts +0 -141
- package/dist/live-children-read.d.ts +0 -52
- package/dist/live-children.d.ts +0 -73
- package/dist/live-detail.d.ts +0 -27
- package/dist/live-input.d.ts +0 -68
- package/dist/live-main-read.d.ts +0 -19
- package/dist/live-notes.d.ts +0 -20
- package/dist/live-open.d.ts +0 -28
- package/dist/live-records.d.ts +0 -149
- package/dist/live-reply.d.ts +0 -83
- package/dist/live-terminal.d.ts +0 -273
- package/dist/live.d.ts +0 -152
- package/dist/local-owner.d.ts +0 -124
- package/dist/log.d.ts +0 -7
- package/dist/login-secrets.d.ts +0 -60
- package/dist/machine-check.d.ts +0 -16
- package/dist/machine-identity.d.ts +0 -75
- package/dist/mailbox.d.ts +0 -57
- package/dist/maintenance.d.ts +0 -13
- package/dist/mcp-connect.d.ts +0 -181
- package/dist/mcp-core.d.ts +0 -110
- package/dist/mcp-http.d.ts +0 -32
- package/dist/mcp-oauth.d.ts +0 -92
- package/dist/mcp-person.d.ts +0 -22
- package/dist/mcp.d.ts +0 -20
- package/dist/memory-cli.d.ts +0 -768
- package/dist/memory-pass.d.ts +0 -151
- package/dist/memory-tidy.d.ts +0 -181
- package/dist/memory-use.d.ts +0 -35
- package/dist/merge-checklist.d.ts +0 -55
- package/dist/metrics.d.ts +0 -6
- package/dist/mobile-viewport.d.ts +0 -7
- package/dist/model-catalog.d.ts +0 -123
- package/dist/model-choices.d.ts +0 -235
- package/dist/model-names.d.ts +0 -6
- package/dist/models-cli.d.ts +0 -307
- package/dist/models-ui.d.ts +0 -161
- package/dist/modes.d.ts +0 -99
- package/dist/monitoring-settings.d.ts +0 -44
- package/dist/monitoring-ui.d.ts +0 -23
- package/dist/monitoring.d.ts +0 -34
- package/dist/names.d.ts +0 -67
- package/dist/needs-you.d.ts +0 -164
- package/dist/never-index.d.ts +0 -3
- package/dist/nightly-check.d.ts +0 -107
- package/dist/nightly-github.d.ts +0 -318
- package/dist/notification-delivery.d.ts +0 -19
- package/dist/notification-rows.d.ts +0 -30
- package/dist/oauth-run-token.d.ts +0 -51
- package/dist/observations.d.ts +0 -36
- package/dist/oidc.d.ts +0 -71
- package/dist/onboard.d.ts +0 -108
- package/dist/one-step-chat-schema.d.ts +0 -22
- package/dist/openrouter-models.d.ts +0 -34
- package/dist/operate-remote-arguments.d.ts +0 -36
- package/dist/operate-remote.d.ts +0 -98
- package/dist/operate.d.ts +0 -401
- package/dist/orphan-sweep.d.ts +0 -65
- package/dist/page-work-contract.d.ts +0 -21
- package/dist/password-bearer.d.ts +0 -25
- package/dist/passwordless.d.ts +0 -23
- package/dist/peek-cli.d.ts +0 -112
- package/dist/peek.d.ts +0 -110
- package/dist/people-audit-ui.d.ts +0 -16
- package/dist/person-proof.d.ts +0 -2
- package/dist/phase-routing.d.ts +0 -401
- package/dist/plain-schema.d.ts +0 -23
- package/dist/plain-words.d.ts +0 -20
- package/dist/plan-auto.d.ts +0 -25
- package/dist/plan-login.d.ts +0 -14
- package/dist/plan.d.ts +0 -188
- package/dist/plane-review.d.ts +0 -54
- package/dist/planner-source.d.ts +0 -225
- package/dist/planner.d.ts +0 -76
- package/dist/policy-ui.d.ts +0 -22
- package/dist/policy.d.ts +0 -92
- package/dist/prepared-evidence.d.ts +0 -17
- package/dist/principal.d.ts +0 -42
- package/dist/probe.d.ts +0 -46
- package/dist/process-custody.d.ts +0 -17
- package/dist/process-liveness.d.ts +0 -13
- package/dist/process-tree.d.ts +0 -39
- package/dist/project-access.d.ts +0 -17
- package/dist/project-activity.d.ts +0 -20
- package/dist/project-admission.d.ts +0 -105
- package/dist/project-cli.d.ts +0 -19
- package/dist/project-concurrency.d.ts +0 -62
- package/dist/project-delete-ui.d.ts +0 -96
- package/dist/project-delete.d.ts +0 -59
- package/dist/project-demo.d.ts +0 -12
- package/dist/project-file.d.ts +0 -3
- package/dist/project-identity.d.ts +0 -52
- package/dist/project-knowledge.d.ts +0 -124
- package/dist/project-learning.d.ts +0 -120
- package/dist/project-memory.d.ts +0 -70
- package/dist/project-outcomes.d.ts +0 -119
- package/dist/project-sandbox.d.ts +0 -59
- package/dist/project-skills.d.ts +0 -139
- package/dist/project-tools.d.ts +0 -318
- package/dist/project.d.ts +0 -65
- package/dist/prompt.d.ts +0 -33
- package/dist/proof.d.ts +0 -457
- package/dist/proposal.d.ts +0 -70
- package/dist/protected-storage-look.d.ts +0 -1
- package/dist/protected-storage.d.ts +0 -98
- package/dist/provider-auth.d.ts +0 -143
- package/dist/provider-capture.d.ts +0 -34
- package/dist/provider-connection.d.ts +0 -23
- package/dist/provider-home.d.ts +0 -22
- package/dist/provider-limits.d.ts +0 -37
- package/dist/provider.d.ts +0 -369
- package/dist/public-access.d.ts +0 -52
- package/dist/public-check.d.ts +0 -37
- package/dist/publish.d.ts +0 -146
- package/dist/pull-request-flow.d.ts +0 -189
- package/dist/pull-request-schema.d.ts +0 -5
- package/dist/pull-request-ui.d.ts +0 -25
- package/dist/pulls.d.ts +0 -121
- package/dist/push.d.ts +0 -120
- package/dist/quality.d.ts +0 -8
- package/dist/quick-start.d.ts +0 -26
- package/dist/read-executor-worker.d.ts +0 -1
- package/dist/read-executor.d.ts +0 -66
- package/dist/read-only-request.d.ts +0 -4
- package/dist/recipe-ui.d.ts +0 -21
- package/dist/recipes.d.ts +0 -56
- package/dist/release-adapters.d.ts +0 -205
- package/dist/release-approval.d.ts +0 -180
- package/dist/release-authority.d.ts +0 -173
- package/dist/release-auto.d.ts +0 -184
- package/dist/release-card.d.ts +0 -156
- package/dist/release-carry.d.ts +0 -261
- package/dist/release-ci-hold.d.ts +0 -41
- package/dist/release-cli.d.ts +0 -34
- package/dist/release-coverage.d.ts +0 -16
- package/dist/release-gate.d.ts +0 -84
- package/dist/release-git.d.ts +0 -43
- package/dist/release-links.d.ts +0 -29
- package/dist/release-net.d.ts +0 -90
- package/dist/release-next.d.ts +0 -48
- package/dist/release-recheck.d.ts +0 -146
- package/dist/release-refusal.d.ts +0 -32
- package/dist/release-view.d.ts +0 -37
- package/dist/release.d.ts +0 -806
- package/dist/releases.d.ts +0 -94
- package/dist/remote-audit.d.ts +0 -79
- package/dist/remote-command.d.ts +0 -45
- package/dist/remote-destination.d.ts +0 -36
- package/dist/remote-exec.d.ts +0 -38
- package/dist/remote-main.d.ts +0 -111
- package/dist/remote-run.d.ts +0 -20
- package/dist/remote.d.ts +0 -67
- package/dist/render.d.ts +0 -64
- package/dist/reply-shape.d.ts +0 -106
- package/dist/reply-voice.d.ts +0 -23
- package/dist/report-summary.d.ts +0 -22
- package/dist/reported-usage.d.ts +0 -69
- package/dist/repos.d.ts +0 -67
- package/dist/repository-context-ui.d.ts +0 -3
- package/dist/repository-context.d.ts +0 -66
- package/dist/request-budget-ui.d.ts +0 -14
- package/dist/request-budget.d.ts +0 -127
- package/dist/restart-certification.d.ts +0 -133
- package/dist/result-actions.d.ts +0 -36
- package/dist/result-acts.d.ts +0 -112
- package/dist/result-completion.d.ts +0 -35
- package/dist/result-evidence-readers.d.ts +0 -42
- package/dist/result-follow-ups.d.ts +0 -118
- package/dist/result-review.d.ts +0 -220
- package/dist/result-shots.d.ts +0 -59
- package/dist/retention-ui.d.ts +0 -21
- package/dist/retention.d.ts +0 -77
- package/dist/review-context.d.ts +0 -245
- package/dist/review-evidence.d.ts +0 -33
- package/dist/review-switch.d.ts +0 -36
- package/dist/reviewer.d.ts +0 -99
- package/dist/route-change-check.d.ts +0 -4
- package/dist/route-change.d.ts +0 -22
- package/dist/route-hooks.d.ts +0 -54
- package/dist/route-results.d.ts +0 -75
- package/dist/route-rules.d.ts +0 -324
- package/dist/route-savings.d.ts +0 -136
- package/dist/route-store.d.ts +0 -300
- package/dist/run-closeout.d.ts +0 -89
- package/dist/run-efficiency.d.ts +0 -74
- package/dist/run-ending.d.ts +0 -21
- package/dist/runner-process.d.ts +0 -76
- package/dist/runner.d.ts +0 -324
- package/dist/sample-project.d.ts +0 -31
- package/dist/sandbox-launch.d.ts +0 -1
- package/dist/sandbox-runtime.d.ts +0 -128
- package/dist/scan.d.ts +0 -32
- package/dist/scope.d.ts +0 -1067
- package/dist/scout-browser-lock.d.ts +0 -69
- package/dist/scout-browser.d.ts +0 -107
- package/dist/scout-net.d.ts +0 -25
- package/dist/scout-report.d.ts +0 -23
- package/dist/scout.d.ts +0 -142
- package/dist/secret-mint.d.ts +0 -1
- package/dist/serve.d.ts +0 -11
- package/dist/server/agents-computers.d.ts +0 -9
- package/dist/server/agents-live-filed.d.ts +0 -17
- package/dist/server/agents-live-lead.d.ts +0 -47
- package/dist/server/agents-live-room.d.ts +0 -23
- package/dist/server/chat.d.ts +0 -39
- package/dist/server/chrome.d.ts +0 -328
- package/dist/server/edge-refusal.d.ts +0 -7
- package/dist/server/flows.d.ts +0 -8
- package/dist/server/guards.d.ts +0 -80
- package/dist/server/handler-context.d.ts +0 -22
- package/dist/server/handler-registry.d.ts +0 -23
- package/dist/server/home-asks.d.ts +0 -45
- package/dist/server/home.d.ts +0 -65
- package/dist/server/http.d.ts +0 -337
- package/dist/server/in-place.d.ts +0 -15
- package/dist/server/kit-standalone.d.ts +0 -22
- package/dist/server/kit.d.ts +0 -452
- package/dist/server/last-checks.d.ts +0 -17
- package/dist/server/live.d.ts +0 -74
- package/dist/server/merge-ready-view.d.ts +0 -10
- package/dist/server/mutation-key.d.ts +0 -70
- package/dist/server/pages-assets.d.ts +0 -11
- package/dist/server/pages.d.ts +0 -8
- package/dist/server/people-tokens.d.ts +0 -18
- package/dist/server/remote-hooks.d.ts +0 -29
- package/dist/server/remote.d.ts +0 -59
- package/dist/server/render-chat.d.ts +0 -439
- package/dist/server/render-code-map.d.ts +0 -30
- package/dist/server/render-flaky.d.ts +0 -20
- package/dist/server/render-follow-through.d.ts +0 -11
- package/dist/server/render-history.d.ts +0 -51
- package/dist/server/render-new-task.d.ts +0 -54
- package/dist/server/render-pages.d.ts +0 -236
- package/dist/server/render-people.d.ts +0 -102
- package/dist/server/render-projects.d.ts +0 -104
- package/dist/server/render-release.d.ts +0 -19
- package/dist/server/render-results.d.ts +0 -754
- package/dist/server/render-settings.d.ts +0 -93
- package/dist/server/render-tasks.d.ts +0 -774
- package/dist/server/request-context.d.ts +0 -78
- package/dist/server/retired-routes.d.ts +0 -17
- package/dist/server/route-policy.d.ts +0 -18
- package/dist/server/route-table.d.ts +0 -114
- package/dist/server/runtime.d.ts +0 -342
- package/dist/server/session.d.ts +0 -192
- package/dist/server/settings.d.ts +0 -76
- package/dist/server/signup-gate.d.ts +0 -9
- package/dist/server/sweeps.d.ts +0 -4
- package/dist/server/task-views.d.ts +0 -98
- package/dist/server/tasks.d.ts +0 -83
- package/dist/server/terminals.d.ts +0 -31
- package/dist/server/welcome.d.ts +0 -28
- package/dist/server-telemetry.d.ts +0 -87
- package/dist/settings-groups-ui.d.ts +0 -286
- package/dist/settings-kit-script.d.ts +0 -21
- package/dist/settings-kit.d.ts +0 -173
- package/dist/settings-proofs.d.ts +0 -64
- package/dist/setup-guide.d.ts +0 -39
- package/dist/shared-deps.d.ts +0 -115
- package/dist/sign-in-guard.d.ts +0 -70
- package/dist/skills-ui.d.ts +0 -12
- package/dist/skills.d.ts +0 -99
- package/dist/slack-api.d.ts +0 -59
- package/dist/slack-chat.d.ts +0 -37
- package/dist/slack-settings.d.ts +0 -4
- package/dist/slack-socket.d.ts +0 -12
- package/dist/slack.d.ts +0 -6
- package/dist/sleep.d.ts +0 -2
- package/dist/source-key.d.ts +0 -2
- package/dist/spend-report.d.ts +0 -87
- package/dist/spend-ui.d.ts +0 -80
- package/dist/spend.d.ts +0 -142
- package/dist/sqlite-runtime.d.ts +0 -3
- package/dist/sqlite-telemetry.d.ts +0 -9
- package/dist/sso-settings.d.ts +0 -33
- package/dist/sso-ui.d.ts +0 -26
- package/dist/staged-runtimes.d.ts +0 -54
- package/dist/steer-capabilities.d.ts +0 -32
- package/dist/steer-controls.d.ts +0 -14
- package/dist/steer-live.d.ts +0 -19
- package/dist/steer-mailbox.d.ts +0 -46
- package/dist/steer-status.d.ts +0 -25
- package/dist/stop-proof.d.ts +0 -67
- package/dist/storage-sweep-child.d.ts +0 -1
- package/dist/storage-sweep-process.d.ts +0 -55
- package/dist/storage-sweep-schedule.d.ts +0 -30
- package/dist/storage-sweep.d.ts +0 -77
- package/dist/storage-ui.d.ts +0 -23
- package/dist/storage.d.ts +0 -68
- package/dist/store-baseline.d.ts +0 -19
- package/dist/store.d.ts +0 -8613
- package/dist/stream-scope.d.ts +0 -18
- package/dist/structured-output.d.ts +0 -57
- package/dist/style-asset.d.ts +0 -7
- package/dist/subagent-admin.d.ts +0 -53
- package/dist/subagent-desk.d.ts +0 -59
- package/dist/subagent-memory.d.ts +0 -65
- package/dist/subagent-question.d.ts +0 -59
- package/dist/subagent-tools.d.ts +0 -125
- package/dist/subagent-week.d.ts +0 -68
- package/dist/subagent-work.d.ts +0 -76
- package/dist/subagents-ui.d.ts +0 -22
- package/dist/subagents.d.ts +0 -146
- package/dist/subscription-chat.d.ts +0 -54
- package/dist/summary.d.ts +0 -33
- package/dist/surface.d.ts +0 -49
- package/dist/sweep-gate.d.ts +0 -10
- package/dist/sweep-quarantine.d.ts +0 -29
- package/dist/sync.d.ts +0 -94
- package/dist/tailnet.d.ts +0 -11
- package/dist/tamper-scan.d.ts +0 -4
- package/dist/task-activity.d.ts +0 -27
- package/dist/task-aliases.d.ts +0 -5
- package/dist/task-archive.d.ts +0 -13
- package/dist/task-base.d.ts +0 -39
- package/dist/task-composer.d.ts +0 -14
- package/dist/task-control.d.ts +0 -159
- package/dist/task-live.d.ts +0 -8
- package/dist/task-moves.d.ts +0 -90
- package/dist/task-outcome-cli.d.ts +0 -30
- package/dist/task-review-brief.d.ts +0 -69
- package/dist/task-sizing.d.ts +0 -58
- package/dist/task-source.d.ts +0 -77
- package/dist/task-status.d.ts +0 -324
- package/dist/task-text.d.ts +0 -31
- package/dist/team-chat-authorization.d.ts +0 -11
- package/dist/team-contract.d.ts +0 -103
- package/dist/team-http.d.ts +0 -25
- package/dist/team-leads.d.ts +0 -85
- package/dist/team-runtime.d.ts +0 -25
- package/dist/team-ui.d.ts +0 -4
- package/dist/team-updates.d.ts +0 -8
- package/dist/teams-api.d.ts +0 -33
- package/dist/teams-chat.d.ts +0 -36
- package/dist/teams-settings.d.ts +0 -14
- package/dist/teams.d.ts +0 -24
- package/dist/teardown-git.d.ts +0 -164
- package/dist/telegram-flow.d.ts +0 -112
- package/dist/telegram-lead.d.ts +0 -151
- package/dist/telegram-live.d.ts +0 -116
- package/dist/telegram-progress.d.ts +0 -20
- package/dist/telegram-settings.d.ts +0 -9
- package/dist/telegram-status.d.ts +0 -83
- package/dist/telegram-team.d.ts +0 -68
- package/dist/telegram.d.ts +0 -271
- package/dist/templates.d.ts +0 -69
- package/dist/terminal-catalog.d.ts +0 -11
- package/dist/terminal-text.d.ts +0 -11
- package/dist/test-infra.d.ts +0 -34
- package/dist/test-temp.d.ts +0 -40
- package/dist/text-limits.d.ts +0 -297
- package/dist/tidy.d.ts +0 -130
- package/dist/tier-report.d.ts +0 -44
- package/dist/token-notices.d.ts +0 -11
- package/dist/tokens-cli.d.ts +0 -21
- package/dist/tool-broker.d.ts +0 -52
- package/dist/tool-launcher.d.ts +0 -1
- package/dist/tool-secret-store.d.ts +0 -167
- package/dist/toolroll-update-cli.d.ts +0 -15
- package/dist/toolroll-update-ui.d.ts +0 -47
- package/dist/toolroll-update.d.ts +0 -265
- package/dist/tools-ui.d.ts +0 -51
- package/dist/transitions-recipes.d.ts +0 -1
- package/dist/tree-proof.d.ts +0 -34
- package/dist/tui-contract.d.ts +0 -144
- package/dist/tui-source.d.ts +0 -14
- package/dist/typed-start.d.ts +0 -51
- package/dist/unfenced-test-support.d.ts +0 -2
- package/dist/up-processes.d.ts +0 -162
- package/dist/up-role-child.d.ts +0 -1
- package/dist/update-notice.d.ts +0 -5
- package/dist/vanished-retry.d.ts +0 -30
- package/dist/verification-evidence.d.ts +0 -68
- package/dist/version.d.ts +0 -2
- package/dist/wake-hub.d.ts +0 -72
- package/dist/webhook-limits.d.ts +0 -23
- package/dist/webhook-readers.d.ts +0 -56
- package/dist/webhook-signing.d.ts +0 -27
- package/dist/webhooks.d.ts +0 -84
- package/dist/welcome-facts.d.ts +0 -18
- package/dist/when-html.d.ts +0 -40
- package/dist/work-index.d.ts +0 -175
- package/dist/work-summary.d.ts +0 -61
- package/dist/workspace-motion.d.ts +0 -4
- package/dist/workspace-revision.d.ts +0 -48
- package/dist/workspace-ui.d.ts +0 -385
- package/dist/worktree-notices.d.ts +0 -13
- package/dist/worktree.d.ts +0 -365
- package/dist/writes-mode.d.ts +0 -9
- package/dist/youiyoux-intake.d.ts +0 -234
package/dist/check-only.js
CHANGED
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Automatic recheck under a check-only authorization (docs/plans/plain-toolroll.md P2.2).
|
|
3
|
-
*
|
|
4
|
-
* When a build finishes, the approval that built its commit writes one authorization: this task, this exact commit, the
|
|
5
|
-
* approved check command's digest, the access the build's own check had, one automatic run, and an expiry. It never
|
|
6
|
-
* seals anything and starts no build and no agent: it asks the follow-up check road (result-follow-ups.ts), which checks
|
|
7
|
-
* the commit out in a fresh folder and runs the approved command, nothing else.
|
|
8
|
-
*
|
|
9
|
-
* The sweep uses it only when the result's verdict is missing or unreadable. A failed, passed or running check needs
|
|
10
|
-
* nothing, and closes it. The claim (used_at, compare-and-swap in the transaction that asks) is the cap: a second worker
|
|
11
|
-
* or a crash after the claim finds it spent, and the need stays with the person. A changed command is a different
|
|
12
|
-
* digest, so the old authorization covers nothing: Run checks on the new command is the person's act.
|
|
13
|
-
*/
|
|
14
1
|
import { assignmentChecksForRun } from "./assignment.js";
|
|
15
2
|
import { runCheckLevel, repoOfRun, checkCommandFor } from "./check-levels.js";
|
|
16
3
|
import { approvedScopeStands, authorizationProblem, readAuthorization } from "./check-only-standing.js";
|
|
@@ -18,13 +5,8 @@ import { requestFollowUpChecks } from "./result-follow-ups.js";
|
|
|
18
5
|
import { releaseCheckScope } from "./scope.js";
|
|
19
6
|
import { refArchived } from "./task-archive.js";
|
|
20
7
|
import { approvedCheckStateOf } from "./task-status.js";
|
|
21
|
-
/** How long a recheck may still start after its build finished. */
|
|
22
8
|
export const CHECK_ONLY_WINDOW_MS = 24 * 60 * 60_000;
|
|
23
9
|
export const RECHECK_ACTOR = "Toolroll";
|
|
24
|
-
/**
|
|
25
|
-
* Written only from the existing approval of this exact commit: the seal this run was admitted under, still standing,
|
|
26
|
-
* on the bytes this run built. Null when anything is missing, and the person's Run checks stays the only road.
|
|
27
|
-
*/
|
|
28
10
|
export function authorizeCheckOnly(store, runId, now) {
|
|
29
11
|
return store.transact(() => {
|
|
30
12
|
const run = store.getRun(runId);
|
|
@@ -36,7 +18,6 @@ export function authorizeCheckOnly(store, runId, now) {
|
|
|
36
18
|
const scope = store.getScope(ref.externalId);
|
|
37
19
|
if (scope === null || scope.approvedDigest !== scope.digest || run.scopeDigest !== scope.digest)
|
|
38
20
|
return null;
|
|
39
|
-
// A release's check has its own road (check-failure.ts), and the nightly's its own.
|
|
40
21
|
if (releaseCheckScope(scope) || scope.releaseTerms != null)
|
|
41
22
|
return null;
|
|
42
23
|
if (!approvedScopeStands(store, ref.id, scope.digest, now))
|
|
@@ -53,7 +34,6 @@ export function authorizeCheckOnly(store, runId, now) {
|
|
|
53
34
|
return Number(written.changes) > 0 ? Number(written.lastInsertRowid) : null;
|
|
54
35
|
});
|
|
55
36
|
}
|
|
56
|
-
/** Claim one authorization and ask for its check, in one transaction. Null: nothing was asked. */
|
|
57
37
|
export function claimRecheck(store, authorization, now) {
|
|
58
38
|
return store.transact(() => {
|
|
59
39
|
const row = store.handle.prepare("SELECT * FROM check_authorization WHERE id = ? AND used_at IS NULL AND closed_at IS NULL AND expires_at > ?").get(authorization, now.toISOString());
|
|
@@ -68,7 +48,6 @@ export function claimRecheck(store, authorization, now) {
|
|
|
68
48
|
if (live === null || authorizationProblem(store, auth, { head: run.headRevision ?? "", digest: live.digest }, now) !== null)
|
|
69
49
|
return null;
|
|
70
50
|
const asked = requestFollowUpChecks(store, { runId: auth.run, level: auth.level, actor: RECHECK_ACTOR, why: "recheck" }, now);
|
|
71
|
-
// An existing request is the person's own: it stands, and this authorization isn't spent on it.
|
|
72
51
|
if (!asked.ok || asked.existing)
|
|
73
52
|
return null;
|
|
74
53
|
const spent = store.handle.prepare("UPDATE check_authorization SET used_at = ?, used_request = ? WHERE id = ? AND used_at IS NULL").run(now.toISOString(), asked.request, auth.id);
|
|
@@ -77,7 +56,6 @@ export function claimRecheck(store, authorization, now) {
|
|
|
77
56
|
return { request: asked.request };
|
|
78
57
|
});
|
|
79
58
|
}
|
|
80
|
-
/** Each sweep: a standing authorization whose result has no readable verdict asks for its one check. */
|
|
81
59
|
export function requestMissingRechecks(store, root, now) {
|
|
82
60
|
const open = store.handle.prepare("SELECT * FROM check_authorization WHERE used_at IS NULL AND closed_at IS NULL AND expires_at > ? ORDER BY id").all(now.toISOString());
|
|
83
61
|
let asked = 0;
|
package/dist/check-progress.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/** Live facts extracted from the approved check's ordinary output. */
|
|
2
1
|
export const CHECK_SUITES = ["unit", "flows", "app"];
|
|
3
2
|
const emptySuite = () => ({ state: "pending", passed: 0, failed: 0, skipped: 0, total: null });
|
|
4
3
|
function cleanLine(value) {
|
|
@@ -35,7 +34,6 @@ function countWords(name, suite) {
|
|
|
35
34
|
export function checkProgressLine(suites) {
|
|
36
35
|
return CHECK_SUITES.map(name => suiteWords(name, suites[name])).join(" · ");
|
|
37
36
|
}
|
|
38
|
-
/** A machine-only count line that is safe to send through a push provider. */
|
|
39
37
|
export function isCheckProgressLine(value) {
|
|
40
38
|
const suite = String.raw `(?:unit|flows|app) (?:…|\?(?: [0-9]{1,9})?|[0-9]{1,9}(?:\/[0-9]{1,9})?|✓ [0-9]{1,9}(?:\/[0-9]{1,9})?|✕ [0-9]{1,9}(?:\/[0-9]{1,9})?)(?: · [0-9]{1,9}\/[0-9]{1,9} groups)?`;
|
|
41
39
|
return new RegExp(`^${suite}(?: · ${suite}){2}$`).test(value);
|
|
@@ -77,10 +75,6 @@ export function parseCheckProgressSnapshot(raw) {
|
|
|
77
75
|
return null;
|
|
78
76
|
}
|
|
79
77
|
}
|
|
80
|
-
/**
|
|
81
|
-
* Incrementally reads stdout and stderr. Each stream keeps its own partial
|
|
82
|
-
* line so simultaneous journey output cannot splice two records together.
|
|
83
|
-
*/
|
|
84
78
|
export class CheckProgressTracker {
|
|
85
79
|
update;
|
|
86
80
|
suites = {
|
|
@@ -92,8 +86,6 @@ export class CheckProgressTracker {
|
|
|
92
86
|
events = new Set();
|
|
93
87
|
last = "";
|
|
94
88
|
recognized = false;
|
|
95
|
-
/** Each part's parallel journey run (scripts/e2e-parallel.mjs), by its release-check tag ("" for untagged output):
|
|
96
|
-
* the scripted flows and app parts run at once, so one shared run would mix their groups. */
|
|
97
89
|
parallels = new Map();
|
|
98
90
|
constructor(update) {
|
|
99
91
|
this.update = update;
|
|
@@ -132,8 +124,6 @@ export class CheckProgressTracker {
|
|
|
132
124
|
emit(final = false, force = false) {
|
|
133
125
|
const snapshot = this.snapshot(final);
|
|
134
126
|
const identity = JSON.stringify(snapshot);
|
|
135
|
-
// Live progress is advisory: a snapshot the store would refuse (output read in a way that counted past a total) is
|
|
136
|
-
// never handed on, so reading output can't break the check that prints it (release check 3264).
|
|
137
127
|
if ((force || identity !== this.last) && parseCheckProgressSnapshot(identity) !== null) {
|
|
138
128
|
this.last = identity;
|
|
139
129
|
this.update(snapshot);
|
|
@@ -144,9 +134,6 @@ export class CheckProgressTracker {
|
|
|
144
134
|
const cleaned = cleanLine(raw);
|
|
145
135
|
if (cleaned === "")
|
|
146
136
|
return;
|
|
147
|
-
// scripts/release-check.mjs streams each part's lines as they come, tagged `<part> | ` (partTag). The unit part and
|
|
148
|
-
// the scripted journeys are read as their own output; the other parts (the build, the real-model journeys, the
|
|
149
|
-
// upgrade path) count toward no suite here.
|
|
150
137
|
const tagged = /^(typecheck|build|unit|flows|app|flows-real|app-real|upgrade) \| ?(.*)$/.exec(cleaned);
|
|
151
138
|
if (tagged !== null && !["unit", "flows", "app"].includes(tagged[1]))
|
|
152
139
|
return;
|
|
@@ -167,12 +154,8 @@ export class CheckProgressTracker {
|
|
|
167
154
|
}
|
|
168
155
|
return;
|
|
169
156
|
}
|
|
170
|
-
// The unit part speaks only through its Vitest summary; a test's own print is never a journey's.
|
|
171
157
|
if (key === "unit")
|
|
172
158
|
return;
|
|
173
|
-
// scripts/e2e-parallel.mjs: "Running 7 groups, at most 4 at once (12.0 GB available, about 400 MB each): console,
|
|
174
|
-
// task, …" (before: "Running 7 groups at once: …"), then every group's lines as "[group] [app] …", then
|
|
175
|
-
// "✅ group 3.1 min" per group and "N of M groups passed …".
|
|
176
159
|
const starting = /^Running ([0-9]+) groups(?:, at most [0-9]+)? at once(?: \([^)]*\))?: (.+)$/.exec(line);
|
|
177
160
|
if (starting !== null) {
|
|
178
161
|
const total = safeCount(starting[1]);
|
|
@@ -249,7 +232,6 @@ export class CheckProgressTracker {
|
|
|
249
232
|
};
|
|
250
233
|
this.emit();
|
|
251
234
|
}
|
|
252
|
-
/** One group's journey line: count its events, and take its own totals line as that group's result. */
|
|
253
235
|
readGroup(parallel, name, suite, body) {
|
|
254
236
|
if (parallel.suite !== null && parallel.suite !== suite)
|
|
255
237
|
return;
|
|
@@ -281,7 +263,6 @@ export class CheckProgressTracker {
|
|
|
281
263
|
group.skipped += 1;
|
|
282
264
|
this.summarize(parallel);
|
|
283
265
|
}
|
|
284
|
-
/** The suite is the sum of its groups; its total is known once every group has reported one. */
|
|
285
266
|
summarize(parallel, allPassed) {
|
|
286
267
|
const name = parallel.suite;
|
|
287
268
|
if (name === null)
|
|
@@ -306,17 +287,7 @@ export class CheckProgressTracker {
|
|
|
306
287
|
}
|
|
307
288
|
}
|
|
308
289
|
const emptyGroup = () => ({ passed: 0, failed: 0, skipped: 0, total: null, result: null });
|
|
309
|
-
/** How often a running check's display snapshot may be written: the page and the phone read it, nobody needs more. */
|
|
310
290
|
export const CHECK_PROGRESS_WRITE_MS = 1_000;
|
|
311
|
-
/**
|
|
312
|
-
* Coalesced display writes for a running check (isolated-checks.md, stage 1): a test runner can print thousands of
|
|
313
|
-
* lines a second, and every changed snapshot was its own write transaction. Display snapshots are now written at most
|
|
314
|
-
* once per interval, the latest one winning; the final snapshot is written at once, exactly, and nothing older is ever
|
|
315
|
-
* written after it. A final snapshot whose write fails is kept until a write of it succeeds (the next flush, or a later
|
|
316
|
-
* final push replacing it): Codex review round 1, finding 6. A failing display store never throws out of the writer,
|
|
317
|
-
* so it can't keep the check's outcome from being sealed. The check's evidence (its log, exit and report) never passes
|
|
318
|
-
* through here.
|
|
319
|
-
*/
|
|
320
291
|
export function coalescedProgressWriter(save, options = {}) {
|
|
321
292
|
const intervalMs = options.intervalMs ?? CHECK_PROGRESS_WRITE_MS;
|
|
322
293
|
const now = options.now ?? (() => Date.now());
|
|
@@ -325,12 +296,10 @@ export function coalescedProgressWriter(save, options = {}) {
|
|
|
325
296
|
let lastWrite = Number.NEGATIVE_INFINITY;
|
|
326
297
|
let pending = null;
|
|
327
298
|
let timer = null;
|
|
328
|
-
// Once a final snapshot arrives nothing older is written; `unsavedFinal` holds it until a write of it succeeds.
|
|
329
299
|
let finished = false;
|
|
330
300
|
let unsavedFinal = null;
|
|
331
301
|
const cancel = () => { if (timer !== null)
|
|
332
302
|
clearTimer(timer); timer = null; };
|
|
333
|
-
/** One display write; false when the store refused it (display only: never thrown). */
|
|
334
303
|
const write = (snapshot) => {
|
|
335
304
|
lastWrite = now();
|
|
336
305
|
try {
|
|
@@ -352,7 +321,6 @@ export function coalescedProgressWriter(save, options = {}) {
|
|
|
352
321
|
timer = null;
|
|
353
322
|
const snapshot = pending;
|
|
354
323
|
pending = null;
|
|
355
|
-
// A display write that fails here only leaves the page one snapshot behind; the next one (or the final) follows.
|
|
356
324
|
if (snapshot !== null && !finished)
|
|
357
325
|
write(snapshot);
|
|
358
326
|
};
|
package/dist/check-repair.js
CHANGED
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A failed check gets one owner and a bounded repair (docs/plans/fleet-follow-through.md, part 2).
|
|
3
|
-
*
|
|
4
|
-
* One `check_repair` row per task family, revision and failure: the UNIQUE key is what keeps the same failure on the
|
|
5
|
-
* same revision from starting a second repair, however many times it is seen. The row's owner is the task that built
|
|
6
|
-
* the revision. The repair itself is the existing ledger's (`maybeTriggerRepair`, `repair_chain`), so it is an ordinary
|
|
7
|
-
* revision: the source scope verbatim, the ordinary rails, the ordinary approval.
|
|
8
|
-
*
|
|
9
|
-
* Who says yes doesn't change here. A mode a person signed with automatic repair and a limit drafts and approves through
|
|
10
|
-
* the seal that already exists. Without that signature nothing is drafted and nothing spends: the row waits for a person,
|
|
11
|
-
* and a person's repair is a draft that takes the normal plan approval. A model never moves a row past that.
|
|
12
|
-
*
|
|
13
|
-
* Failure text never reaches this file's decisions: the failure key comes from the sealed receipt and the log's failing
|
|
14
|
-
* file names, and it only ever matches rows, it grants nothing.
|
|
15
|
-
*/
|
|
16
1
|
import { createHash } from "node:crypto";
|
|
17
2
|
import { maybeTriggerRepair } from "./dispose.js";
|
|
18
3
|
import { readingFleet } from "./fleet-schema.js";
|
|
@@ -37,8 +22,6 @@ export function checkRepairOfRun(store, runId) {
|
|
|
37
22
|
return row === undefined ? null : repairOf(row);
|
|
38
23
|
}, null);
|
|
39
24
|
}
|
|
40
|
-
/** What makes this failure this failure: the command, how it ended, and which files failed. Never the log's own bytes,
|
|
41
|
-
* which differ on every run. */
|
|
42
25
|
export function failureKeyOf(receipt, log) {
|
|
43
26
|
const view = readVerificationView(receipt);
|
|
44
27
|
const facts = view.ok ? view.value : null;
|
|
@@ -46,7 +29,6 @@ export function failureKeyOf(receipt, log) {
|
|
|
46
29
|
const result = facts === null ? null : facts.result;
|
|
47
30
|
return createHash("sha256").update(JSON.stringify(["toolroll:check-failure", facts?.command.digest ?? null, result?.exitCode ?? null, result?.failure ?? null, failing])).digest("hex").slice(0, 32);
|
|
48
31
|
}
|
|
49
|
-
/** Parked work stays quiet: a person already has this task, or it is stopped. */
|
|
50
32
|
function parkedWhy(store, taskRef, runId, now) {
|
|
51
33
|
if (store.activeHolds(taskRef, now).length > 0)
|
|
52
34
|
return "This task is on hold.";
|
|
@@ -58,7 +40,6 @@ function parkedWhy(store, taskRef, runId, now) {
|
|
|
58
40
|
return "This task has a note waiting for its next attempt.";
|
|
59
41
|
return null;
|
|
60
42
|
}
|
|
61
|
-
/** Why an approved plan can't cover a repair of this result, or null when it can. */
|
|
62
43
|
function notCovered(store, taskId, runId) {
|
|
63
44
|
const scope = store.getScope(taskId);
|
|
64
45
|
if (scope === null)
|
|
@@ -72,7 +53,6 @@ function notCovered(store, taskId, runId) {
|
|
|
72
53
|
return "This result is published. Fix it through its pull request.";
|
|
73
54
|
return null;
|
|
74
55
|
}
|
|
75
|
-
/** The attempts this family's repair chain has spent. */
|
|
76
56
|
const attemptsUsed = (store, taskId) => store.repairLineageOf(taskId).attempts.reduce((highest, row) => Math.max(highest, row.attempt), 0);
|
|
77
57
|
function move(store, id, state, why, now, draft) {
|
|
78
58
|
store.handle.prepare("UPDATE check_repair SET state = ?, why = ?, updated_at = ?, repair_task = COALESCE(?, repair_task), attempt = COALESCE(?, attempt) WHERE id = ?")
|
|
@@ -82,7 +62,6 @@ function move(store, id, state, why, now, draft) {
|
|
|
82
62
|
function askPerson(store, row, subject, body, now) {
|
|
83
63
|
store.enqueueNotification({ source: { run: row.sourceRun }, dedupeKey: `check-repair:${row.id}:${subject}`, kind: "check-repair", pushClass: "attention", subject, body, link: `/t/${encodeURIComponent(row.ownerTask)}` }, now);
|
|
84
64
|
}
|
|
85
|
-
/** Take the row one step, from where it stands now. A person's yes is never decided here: `person` only says a person asked for the draft. */
|
|
86
65
|
function advance(store, repo, root, row, now, person) {
|
|
87
66
|
const run = store.getRun(row.sourceRun);
|
|
88
67
|
const ref = run === null ? null : store.refById(run.taskRef);
|
|
@@ -99,7 +78,6 @@ function advance(store, repo, root, row, now, person) {
|
|
|
99
78
|
const uncovered = notCovered(store, row.ownerTask, run.id);
|
|
100
79
|
if (uncovered !== null) {
|
|
101
80
|
move(store, row.id, "with-person", uncovered, now);
|
|
102
|
-
// A release's check speaks for itself (release-adapters.ts): one voice for one failure.
|
|
103
81
|
if (store.getScope(row.ownerTask)?.releaseTerms == null)
|
|
104
82
|
askPerson(store, row, "A failed check needs you", `The check failed on ${row.revision.slice(0, 7)}, and a repair can't run under this plan. ${uncovered}`, now);
|
|
105
83
|
return null;
|
|
@@ -141,10 +119,6 @@ const stopWords = (reason) => ({
|
|
|
141
119
|
"repair-no-progress": "Two repairs in a row didn't reduce what's failing, so Toolroll stopped.",
|
|
142
120
|
"repair-refused-integrity": "The result disagrees with its approved terms, so a person reads it first.",
|
|
143
121
|
}[reason]);
|
|
144
|
-
/**
|
|
145
|
-
* Route one failed check. Runs at disposition. A failure already on record for this family and revision changes nothing,
|
|
146
|
-
* unless it was the one rerun of an unrelated failure, which now goes to a person through the ledger's own rerun stop.
|
|
147
|
-
*/
|
|
148
122
|
export function routeFailedCheck(store, repo, root, runId, now) {
|
|
149
123
|
const run = store.getRun(runId);
|
|
150
124
|
if (run === null || run.role !== "builder" || run.finishedAt === null || !run.headRevision)
|
|
@@ -168,7 +142,6 @@ export function routeFailedCheck(store, repo, root, runId, now) {
|
|
|
168
142
|
}
|
|
169
143
|
return repairOf(store.handle.prepare("SELECT * FROM check_repair WHERE id = ?").get(row.id));
|
|
170
144
|
}
|
|
171
|
-
// A newer failure replaces an older one nobody took up.
|
|
172
145
|
store.handle.prepare("UPDATE check_repair SET state = 'closed', why = 'A newer attempt replaced this result.', updated_at = ? WHERE family_root = ? AND state IN ('waiting', 'parked', 'rerunning')").run(now.toISOString(), familyRoot);
|
|
173
146
|
const made = store.handle.prepare(`INSERT INTO check_repair (family_root, owner_task, repo, revision, failure_key, source_run, state, why, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, 'waiting', '', ?, ?)`)
|
|
174
147
|
.run(familyRoot, taskId, repo, run.headRevision, key, runId, now.toISOString(), now.toISOString());
|
|
@@ -177,7 +150,6 @@ export function routeFailedCheck(store, repo, root, runId, now) {
|
|
|
177
150
|
return repairOf(store.handle.prepare("SELECT * FROM check_repair WHERE id = ?").get(row.id));
|
|
178
151
|
});
|
|
179
152
|
}
|
|
180
|
-
/** A person asks for the repair. The draft takes the normal plan approval: this is not that approval. */
|
|
181
153
|
export function startCheckRepair(store, root, runId, now) {
|
|
182
154
|
const row = checkRepairOfRun(store, runId);
|
|
183
155
|
if (row === null)
|
|
@@ -191,13 +163,11 @@ export function startCheckRepair(store, root, runId, now) {
|
|
|
191
163
|
return { ok: false, reason: "refused", message: repairOf(store.handle.prepare("SELECT * FROM check_repair WHERE id = ?").get(row.id)).why };
|
|
192
164
|
});
|
|
193
165
|
}
|
|
194
|
-
/** A passing result in the family ends its failed-check rows. Rows the person already holds end too: the code passes now. */
|
|
195
166
|
export function settleCheckRepairs(store, taskId, verdict, now) {
|
|
196
167
|
if (verdict !== "verified" && verdict !== "attested")
|
|
197
168
|
return;
|
|
198
169
|
readingFleet(() => store.handle.prepare("UPDATE check_repair SET state = 'fixed', why = 'A later result passed its check.', updated_at = ? WHERE family_root = ? AND state NOT IN ('fixed', 'closed')").run(now.toISOString(), familyRootOf(store, taskId)), null);
|
|
199
170
|
}
|
|
200
|
-
/** Each sweep: a parked failure whose task is free again takes its next step, unless a newer attempt replaced it. */
|
|
201
171
|
export function resumeParkedRepairs(store, root, now) {
|
|
202
172
|
return readingFleet(() => {
|
|
203
173
|
let moved = 0;
|
|
@@ -219,19 +189,16 @@ export function resumeParkedRepairs(store, root, now) {
|
|
|
219
189
|
return moved;
|
|
220
190
|
}, 0);
|
|
221
191
|
}
|
|
222
|
-
/** A build was accepted as finished: count what it answered, then route its check if it failed. Bookkeeping that never
|
|
223
|
-
* costs the build its result: a problem here leaves the finding open and the failed check on the result. */
|
|
224
192
|
export function followBuiltRun(store, repo, root, runId, worktree, now) {
|
|
225
193
|
try {
|
|
226
194
|
settleFindingAnswers(store, runId, worktree, now);
|
|
227
195
|
}
|
|
228
|
-
catch {
|
|
196
|
+
catch { }
|
|
229
197
|
try {
|
|
230
198
|
store.transact(() => store.savepoint(() => routeFailedCheck(store, repo, root, runId, now)));
|
|
231
199
|
}
|
|
232
|
-
catch {
|
|
200
|
+
catch { }
|
|
233
201
|
}
|
|
234
|
-
/** How a failed check stands, for a person, in one line. */
|
|
235
202
|
export function checkRepairWords(row) {
|
|
236
203
|
const head = `Check failed on ${row.revision.slice(0, 7)} (build #${row.sourceRun})`;
|
|
237
204
|
if (row.state === "with-person")
|
package/dist/check-report.js
CHANGED
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The release check's structured report, on the plane's side (docs/plans/release-once.md, part 2 and rollout phase A).
|
|
3
|
-
*
|
|
4
|
-
* Before a Full check of a prepared candidate runs, the builder seals a `release_check_attempt` row: the intended mode
|
|
5
|
-
* (`full`, or `targeted` with its plan and obligation snapshot), the hash of a fresh nonce, the inventory the check must
|
|
6
|
-
* account for (the unit files, from the verified tree and Vitest's include globs, and the parts selected) and the
|
|
7
|
-
* execution context. It then writes `{"nonce","mode","plan","watch"}` on the check's stdin and closes it.
|
|
8
|
-
*
|
|
9
|
-
* After the check, the report is the last `TOOLROLL_CHECK_REPORT <json>` line of its output that carries that nonce
|
|
10
|
-
* (a line a test prints, or one a leftover process writes, has no nonce and is ignored). It is read strictly and sealed
|
|
11
|
-
* as `check-report.json`, beside `check-inventory.json` (what was sealed, and the groups and versions the check
|
|
12
|
-
* declared). A Full release check qualifies only with all of it (fullCheckProblem): a valid report carrying this run's
|
|
13
|
-
* nonce, a complete inventory, a terminal result for every part, file, journey group and upgrade version it owed, and a
|
|
14
|
-
* successful exit. Anything less — no report, a malformed or cut-short one, one whose exit disagrees, a part that never
|
|
15
|
-
* finished, a file with no result — is an error, "no result", and never a pass. A failed check's report only has to be
|
|
16
|
-
* valid: what it failed on is its result.
|
|
17
|
-
*
|
|
18
|
-
* Coverage trusts test code (the trust decision in the plan). Nothing here decides who may release or deploy.
|
|
19
|
-
*/
|
|
20
1
|
import { createHash, randomBytes } from "node:crypto";
|
|
21
2
|
import { lstatSync, realpathSync } from "node:fs";
|
|
22
3
|
import { join } from "node:path";
|
|
@@ -25,26 +6,20 @@ import { CHECK_PARTS, CHECK_REPORT_MAX_BYTES, CHECK_REPORT_PREFIX, learnRequest,
|
|
|
25
6
|
import { readVerifiedArtifact, storeEvidence } from "./evidence.js";
|
|
26
7
|
import { releaseBaselineRecord } from "./release-card.js";
|
|
27
8
|
import { checkAttemptOf, recordCheckAttempt } from "./store.js";
|
|
28
|
-
/** The sealed artifacts' capture labels: what a reader looks for, by exact name. */
|
|
29
9
|
export const CHECK_REPORT_CAPTURE = "release check report v1";
|
|
30
10
|
export const CHECK_INVENTORY_CAPTURE = "release check inventory v1";
|
|
31
11
|
export const TARGETED_PLAN_CAPTURE = "release check targeted plan v1";
|
|
32
12
|
export const OBLIGATION_SNAPSHOT_CAPTURE = "release check obligation snapshot v1";
|
|
33
13
|
export const CHECK_CONTEXT_CAPTURE = "release check context v1";
|
|
34
|
-
/** How large a sealed check artifact may be (the report's own bound). */
|
|
35
14
|
export const CHECK_ARTIFACT_CAP = CHECK_REPORT_MAX_BYTES;
|
|
36
|
-
/** The release check's harness, named: the orchestrator, its runners and helpers, Vitest's configuration and setup, and
|
|
37
|
-
* the reporter. These never carry (release-carry.ts). The execution context digests far more (inHarnessDigest). */
|
|
38
15
|
export const HARNESS_FILES = Object.freeze([
|
|
39
16
|
"scripts/release-check.mjs", "scripts/release-check-ci.mjs", "scripts/upgrade-rule.mjs", "scripts/suite-lifecycle.mjs", "scripts/provider-gate.mjs",
|
|
40
17
|
"scripts/e2e-parallel.mjs", "scripts/e2e-kit.mjs", "scripts/upgrade-path.mjs", "scripts/check-results.mjs",
|
|
41
18
|
"vitest.config.ts", "test/attacks/vitest.config.ts",
|
|
42
19
|
"test/setup-state.ts", "test/fresh-store.ts", "test/temp-root.ts", "test/ensure-build.ts", "test/release-reporter.ts",
|
|
43
20
|
]);
|
|
44
|
-
/** Vitest's include globs (vitest.config.ts), as the plane reads them: a change to that file is a harness change. */
|
|
45
21
|
export const UNIT_INCLUDE = Object.freeze([/^src\/.+\.test\.ts$/, /^test\/attacks\/.+\.test\.ts$/]);
|
|
46
22
|
export const isUnitFile = (path) => UNIT_INCLUDE.some(one => one.test(path));
|
|
47
|
-
/** The project's own Git directory as Toolroll records it: `<realpath(repo)>/.git`, a real directory. */
|
|
48
23
|
export function projectGitDir(repo) {
|
|
49
24
|
try {
|
|
50
25
|
const named = join(realpathSync(repo), ".git");
|
|
@@ -55,14 +30,7 @@ export function projectGitDir(repo) {
|
|
|
55
30
|
}
|
|
56
31
|
}
|
|
57
32
|
const sha256 = (value) => createHash("sha256").update(value).digest("hex");
|
|
58
|
-
/** A digest of a payload, over its canonical JSON. */
|
|
59
33
|
export const payloadDigest = (value) => sha256(JSON.stringify(value));
|
|
60
|
-
/**
|
|
61
|
-
* Whether a tree path is part of the harness for the execution context: every file EXCEPT the unit test files
|
|
62
|
-
* themselves, the two journey scripts, docs and Markdown. No import tracing: a harness dependency reached by any road
|
|
63
|
-
* (a `require`, a computed `import()`, a side-effect import, a `src/` helper, a config file) is inside this set, so a
|
|
64
|
-
* change to it always changes the digest (fail closed).
|
|
65
|
-
*/
|
|
66
34
|
export function inHarnessDigest(path) {
|
|
67
35
|
if (isUnitFile(path))
|
|
68
36
|
return false;
|
|
@@ -72,7 +40,6 @@ export function inHarnessDigest(path) {
|
|
|
72
40
|
return false;
|
|
73
41
|
return true;
|
|
74
42
|
}
|
|
75
|
-
/** The tree facts of `sha`, from objects hashed here (never the checkout). Null with why when they can't be read. */
|
|
76
43
|
export function treeFactsOf(gitDir, sha) {
|
|
77
44
|
const commit = readVerifiedCommit(gitDir, sha);
|
|
78
45
|
if (!commit.ok)
|
|
@@ -91,24 +58,17 @@ export function treeFactsOf(gitDir, sha) {
|
|
|
91
58
|
lockfile: ids.get("package-lock.json") ?? null,
|
|
92
59
|
} };
|
|
93
60
|
}
|
|
94
|
-
/** The execution context a check runs in: what must match for results to stand beside each other. The machine's load
|
|
95
|
-
* budget is left out: it changes how fast a check runs, never what passes (scripts/release-check.mjs checkBudget). */
|
|
96
61
|
export function checkContextOf(facts, command, access) {
|
|
97
62
|
return { version: 1, node: process.version, platform: process.platform, arch: process.arch, lockfile: facts.lockfile, harness: facts.harnessDigest, grant: { id: command.id, digest: command.digest }, access };
|
|
98
63
|
}
|
|
99
|
-
/** Every part a check can have. */
|
|
100
64
|
export const FULL_PARTS = CHECK_PARTS;
|
|
101
|
-
/** Changes no test reads: the plane's copy of scripts/release-check.mjs NOTHING (check-report.test.ts holds them equal). */
|
|
102
65
|
export const NOTHING_PATHS = Object.freeze([/\.md$/, /^docs\//, /^evidence\//, /^design\//, /^output\//, /^LICENSE$/, /\.png$/]);
|
|
103
|
-
/** Model-facing code, whose change runs the real-model journeys: the plane's copy of scripts/release-check.mjs MODEL. */
|
|
104
66
|
export const MODEL_PATHS = Object.freeze([
|
|
105
67
|
/^src\/(lead|converse|subscription-chat|chat-[a-z-]+|lead-[a-z-]+|memory-pass)\.ts$/,
|
|
106
68
|
/^src\/(planner|planner-[a-z-]+|plan|builder|build-review|reviewer|scout|scout-[a-z-]+|decision|evidence)\.ts$/,
|
|
107
69
|
/^src\/(subagents|subagent-work|task-sizing|flow-sort|flow-draft)\.ts$/,
|
|
108
70
|
/^src\/(provider|provider-[a-z-]+|invoke|exec|attest|coding-provider|assignment-adapters|subscription-[a-z-]+)\.ts$/,
|
|
109
71
|
]);
|
|
110
|
-
/** Whether a changed path can affect an upgrade: the plane's copy of scripts/release-check.mjs needsUpgrade. Its
|
|
111
|
-
* version-only exception is decided apart, from verified blobs (versionOnlyChange), never from the path alone. */
|
|
112
72
|
export function upgradeRelevant(file) {
|
|
113
73
|
if (/^(docs|evidence|design|output)\//.test(file) || /\.md$/.test(file) || file === "LICENSE")
|
|
114
74
|
return false;
|
|
@@ -120,27 +80,12 @@ export function upgradeRelevant(file) {
|
|
|
120
80
|
return false;
|
|
121
81
|
return true;
|
|
122
82
|
}
|
|
123
|
-
/** The paths that differ between two verified trees: added, removed, or with another mode or blob. */
|
|
124
83
|
export function changedPaths(facts, base) {
|
|
125
84
|
const before = new Map(base.entries.map(one => [one.path, `${one.mode} ${one.id}`]));
|
|
126
85
|
const after = new Map(facts.entries.map(one => [one.path, `${one.mode} ${one.id}`]));
|
|
127
86
|
return [...new Set([...before.keys(), ...after.keys()])].filter(path => before.get(path) !== after.get(path)).sort();
|
|
128
87
|
}
|
|
129
|
-
|
|
130
|
-
* The parts a Full check owes, decided by the plane before it runs (eval-harness review 1, finding 2), never by the
|
|
131
|
-
* check's own report: the typecheck and the build always; the unit suite when anything a test reads changed since
|
|
132
|
-
* `base` (the plane's own record of the last release, both trees verified here) and the tree has unit files; the
|
|
133
|
-
* scripted journeys likewise when the tree has the journey scripts; the real-model journeys when model-facing code
|
|
134
|
-
* changed; the upgrade path when a change can affect an upgrade and the tree has it. With no base every one the tree
|
|
135
|
-
* can run is owed. The check is told these on its handshake and runs at least them.
|
|
136
|
-
*/
|
|
137
|
-
export function fullObligationsOf(facts, base,
|
|
138
|
-
/** package.json / package-lock.json paths whose change since `base` is only the project's own version, proved by the
|
|
139
|
-
* plane from both verified blobs (versionBumpsOf): such a change alone doesn't owe the upgrade path. */
|
|
140
|
-
versionBumps = []) {
|
|
141
|
-
// What the tree can run is read from the candidate AND the last release (security scan): a candidate that deletes a
|
|
142
|
-
// journey script, the upgrade path or its unit files doesn't take away what was owed at the base — the part stays
|
|
143
|
-
// owed, and a check that can't run it has no result. Any entry counts, a symlink included, never only a regular file.
|
|
88
|
+
export function fullObligationsOf(facts, base, versionBumps = []) {
|
|
144
89
|
const trees = [facts, ...(base === null ? [] : [base])];
|
|
145
90
|
const has = (path) => trees.some(tree => tree.entries.some(one => one.path === path));
|
|
146
91
|
const units = trees.some(tree => tree.units.length > 0 || tree.entries.some(one => isUnitFile(one.path)));
|
|
@@ -159,24 +104,13 @@ versionBumps = []) {
|
|
|
159
104
|
...(upgrade ? ["upgrade"] : []),
|
|
160
105
|
];
|
|
161
106
|
}
|
|
162
|
-
/** What a check must account for, sealed before it runs: every unit file of the tree, whatever runs (a targeted
|
|
163
|
-
* check accounts for the rest through its base), and the parts it owes (a full check's from fullObligationsOf), and
|
|
164
|
-
* whether CI may stand in for its unit suite. */
|
|
165
107
|
export function inventoryOf(facts, plan, full = { owed: FULL_PARTS, release: true }) {
|
|
166
108
|
if (plan !== null)
|
|
167
109
|
return { version: 1, units: facts.units, parts: ["typecheck", "build", ...plan.parts.filter(one => one !== "typecheck" && one !== "build")] };
|
|
168
110
|
return { version: 1, units: facts.units, parts: [...full.owed], ciSubstitute: !full.release, release: full.release };
|
|
169
111
|
}
|
|
170
|
-
/** A Full check's preparation refused (eval-harness review 2, finding 4): the plane recorded a release whose commit it
|
|
171
|
-
* can't verify now, so the check's obligations can't be decided. The check isn't run (builder.ts: `baseline-unverifiable`). */
|
|
172
112
|
export class CheckBaselineUnverifiable extends Error {
|
|
173
113
|
}
|
|
174
|
-
/**
|
|
175
|
-
* Seal a check's attempt row before its command is spawned: intended mode, nonce hash, inventory and context (and for a
|
|
176
|
-
* targeted check its plan and obligation snapshot, sealed as artifacts first). Null when the plane can't read the
|
|
177
|
-
* commit, which leaves the check running exactly as it always has, with no handshake. Throws CheckBaselineUnverifiable,
|
|
178
|
-
* having sealed nothing, when a recorded last release can't be verified.
|
|
179
|
-
*/
|
|
180
114
|
export function prepareCheckAttempt(store, root, input, now) {
|
|
181
115
|
if (checkAttemptOf(store, input.runId) !== null)
|
|
182
116
|
return null;
|
|
@@ -187,9 +121,6 @@ export function prepareCheckAttempt(store, root, input, now) {
|
|
|
187
121
|
if (!read.ok)
|
|
188
122
|
return null;
|
|
189
123
|
const plan = input.plan ?? null, snapshot = input.snapshot ?? null;
|
|
190
|
-
// A full check owes what the plane decides here, from the last release it recorded (never a tag the checkout holds).
|
|
191
|
-
// No release recorded owes everything the candidate can run; a recorded one that can't be verified refuses the
|
|
192
|
-
// preparation (eval-harness review 2, finding 4): read as "no release", it would drop what the last release could run.
|
|
193
124
|
const baseline = plan === null ? releaseBaselineRecord(store, input.repo) : { recorded: false };
|
|
194
125
|
let baseFacts = null;
|
|
195
126
|
if (baseline.recorded) {
|
|
@@ -216,24 +147,16 @@ export function prepareCheckAttempt(store, root, input, now) {
|
|
|
216
147
|
planDigest: plan === null ? null : payloadDigest(plan), snapshotDigest: snapshot === null ? null : payloadDigest(snapshot),
|
|
217
148
|
inventoryDigest: payloadDigest(inventory), contextDigest: payloadDigest(context), nonceHash: sha256(nonce),
|
|
218
149
|
}, now);
|
|
219
|
-
// The command's own limit rides along, so the check ends itself (logs and report printed) before the plane stops it.
|
|
220
|
-
// `reportBytes`: the largest report this plane reads back once sealed. A plane that doesn't say (0.9.77 and older) reads
|
|
221
|
-
// only 64 KiB, so the check gives it no larger report rather than one that poisons the receipt (scripts/release-check.mjs).
|
|
222
150
|
const learn = learnRequest(input.learn ?? []);
|
|
223
151
|
const stdin = JSON.stringify({ nonce, mode, plan, watch: [...(input.watch ?? [])], limitMs: Number.isSafeInteger(input.limitMs) && input.limitMs >= input.command.timeoutMs ? input.limitMs : input.command.timeoutMs, reportBytes: CHECK_ARTIFACT_CAP, ...(plan === null ? { owed, ciSubstitute } : {}), ...(learn.length > 0 ? { learn } : {}) });
|
|
224
152
|
return { runId: input.runId, nonce, stdin, mode, inventory, context, plan, snapshot, watch: [...(input.watch ?? [])], learn };
|
|
225
153
|
}
|
|
226
|
-
/** Seal one JSON payload as a structured-output artifact under its capture label. */
|
|
227
154
|
export function sealJson(store, root, runId, name, value, capture, now) {
|
|
228
155
|
const bytes = Buffer.from(JSON.stringify(value), "utf8");
|
|
229
156
|
if (bytes.length > CHECK_ARTIFACT_CAP)
|
|
230
157
|
throw new Error(`${name} is over ${CHECK_ARTIFACT_CAP} bytes`);
|
|
231
158
|
return storeEvidence(store, root, runId, "structured-output", name, bytes, capture, now, { captureStatus: "ok", cap: CHECK_ARTIFACT_CAP });
|
|
232
159
|
}
|
|
233
|
-
/**
|
|
234
|
-
* The check's report from its output: the LAST `TOOLROLL_CHECK_REPORT <json>` line carrying this nonce, at most 256 KiB,
|
|
235
|
-
* that matches the contract. Lines without the nonce (a test's print, a leftover process's write) are passed over.
|
|
236
|
-
*/
|
|
237
160
|
export function reportFromOutput(stdout, nonce) {
|
|
238
161
|
const lines = stdout.split("\n");
|
|
239
162
|
for (let at = lines.length - 1; at >= 0; at--) {
|
|
@@ -259,10 +182,6 @@ export function reportFromOutput(stdout, nonce) {
|
|
|
259
182
|
}
|
|
260
183
|
return { ok: false, problem: "The check gave no report for this run." };
|
|
261
184
|
}
|
|
262
|
-
/**
|
|
263
|
-
* After the check: seal its report (when it gave a valid one) and the inventory artifact. `exitCode` is the check's own
|
|
264
|
-
* exit; a report that disagrees with it is no report. Returns the report, or null.
|
|
265
|
-
*/
|
|
266
185
|
export function sealCheckOutcome(store, root, attempt, output, now) {
|
|
267
186
|
const read = reportFromOutput(output.stdout, attempt.nonce);
|
|
268
187
|
const report = read.ok && read.report.mode === attempt.mode && read.report.exitCode === output.exitCode &&
|
|
@@ -277,7 +196,6 @@ export function sealCheckOutcome(store, root, attempt, output, now) {
|
|
|
277
196
|
sealJson(store, root, attempt.runId, "check-report.json", report, CHECK_REPORT_CAPTURE, now);
|
|
278
197
|
return report;
|
|
279
198
|
}
|
|
280
|
-
/** One sealed check artifact of a run, read back and verified, or null (missing, ambiguous, cut short or changed). */
|
|
281
199
|
export function readSealedJson(store, root, runId, capture) {
|
|
282
200
|
const found = store.artifactsFor(runId).filter(one => one.kind === "structured-output" && one.capture === capture);
|
|
283
201
|
if (found.length !== 1)
|
|
@@ -295,17 +213,6 @@ export function readSealedJson(store, root, runId, capture) {
|
|
|
295
213
|
return null;
|
|
296
214
|
}
|
|
297
215
|
}
|
|
298
|
-
/**
|
|
299
|
-
* Why a Full release check has no result it can count — or null when it qualifies as one. The plane's own facts are the
|
|
300
|
-
* exit it saw (`exitCode`, null when the check didn't exit on its own: timed out or stopped) and the inventory it sealed
|
|
301
|
-
* before the check ran; the report must agree with both. A failed check (a nonzero exit) needs only a valid report: what
|
|
302
|
-
* it failed on is its result. A passing exit needs every obligation the plane sealed (the inventory's parts, never the
|
|
303
|
-
* report's own "selected") to have an outcome, and every part the report ran too: every part once, each run to its
|
|
304
|
-
* end; the unit suite finished with a result for every sealed unit file (CI stands in only when the sealed plan allowed
|
|
305
|
-
* it); every journey run finished, its groups listed before they ran, each passed group with a journey result; and the
|
|
306
|
-
* upgrade path finished, its versions listed, every one run. An explicitly empty inventory (no groups of that kind) is
|
|
307
|
-
* an outcome; a missing one is not. Missing, malformed, truncated or skipped-required results never read as a pass.
|
|
308
|
-
*/
|
|
309
216
|
export function fullCheckProblem(input) {
|
|
310
217
|
const { report, inventory, exitCode } = input;
|
|
311
218
|
if (exitCode === null)
|
|
@@ -318,8 +225,6 @@ export function fullCheckProblem(input) {
|
|
|
318
225
|
return `the check's report says exit ${report.exitCode}, but it exited ${exitCode}`;
|
|
319
226
|
if (inventory === null)
|
|
320
227
|
return "the check's sealed inventory can't be read";
|
|
321
|
-
// Sealed before it ran as a release's check, or it isn't one this can count (security scan: the decision is recorded
|
|
322
|
-
// with the attempt and a mismatch is no result).
|
|
323
228
|
if (inventory.sealed.release !== true)
|
|
324
229
|
return "the check wasn't sealed as a release's check before it ran";
|
|
325
230
|
if (exitCode !== 0)
|
|
@@ -327,7 +232,6 @@ export function fullCheckProblem(input) {
|
|
|
327
232
|
const parts = new Map(report.parts.map(one => [one.part, one]));
|
|
328
233
|
if (parts.size !== report.parts.length || CHECK_PARTS.some(part => !parts.has(part)))
|
|
329
234
|
return "the report doesn't account for every part of the check exactly once";
|
|
330
|
-
// The obligations are the plane's, sealed before the run: the typecheck and build always, and every part it owed.
|
|
331
235
|
const owed = new Set(["typecheck", "build", ...inventory.sealed.parts]);
|
|
332
236
|
for (const part of CHECK_PARTS)
|
|
333
237
|
if (owed.has(part) && parts.get(part).selected !== true)
|
|
@@ -352,7 +256,6 @@ export function fullCheckProblem(input) {
|
|
|
352
256
|
return `the unit suite had ${units.runErrors} errors no test owned`;
|
|
353
257
|
if (units.files.some(one => one.state === "failed"))
|
|
354
258
|
return "a unit file failed, yet the check exited 0";
|
|
355
|
-
// A release's check runs its own units, whatever was sealed (security scan): CI never stands in here.
|
|
356
259
|
if (units.reusedFromCI)
|
|
357
260
|
return "CI's run stood in for the unit suite, which a release's check never allows";
|
|
358
261
|
if (!units.reusedFromCI) {
|
|
@@ -395,21 +298,13 @@ export function fullCheckProblem(input) {
|
|
|
395
298
|
}
|
|
396
299
|
return null;
|
|
397
300
|
}
|
|
398
|
-
/** Where a release bumps the project's own version: the plane's copy of scripts/release-check.mjs VERSIONED. */
|
|
399
301
|
export const VERSIONED_PATHS = Object.freeze(["package.json", "package-lock.json"]);
|
|
400
|
-
/**
|
|
401
|
-
* Whether `path` changed from `before` to `after` only in the project's own version (pipeline-speed.md, item 4): the
|
|
402
|
-
* plane's copy of scripts/release-check.mjs versionOnly — the top-level "version", and in the lockfile the root
|
|
403
|
-
* package's. Anything else (a dependency, a script, a reordering, a duplicate key, a file added or removed, bytes that
|
|
404
|
-
* aren't one JSON object) is a real change.
|
|
405
|
-
*/
|
|
406
302
|
export function versionOnlyChange(path, before, after) {
|
|
407
303
|
if (!VERSIONED_PATHS.includes(path) || before === null || after === null)
|
|
408
304
|
return false;
|
|
409
305
|
const rest = (bytes) => {
|
|
410
306
|
const text = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
|
|
411
307
|
const json = JSON.parse(text);
|
|
412
|
-
// Parsing is lossy for duplicate keys and rounded numbers. Such bytes never earn an exemption.
|
|
413
308
|
const tokens = (value) => JSON.stringify(value.match(/"(?:\\.|[^"\\])*"|[^\s"{}\[\]:,]+|[{}\[\]:,]/g));
|
|
414
309
|
if (tokens(text) !== tokens(JSON.stringify(json)))
|
|
415
310
|
throw new Error("ambiguous JSON");
|
|
@@ -437,8 +332,6 @@ export function versionOnlyChange(path, before, after) {
|
|
|
437
332
|
return false;
|
|
438
333
|
}
|
|
439
334
|
}
|
|
440
|
-
/** The versioned files whose change from `base` to `facts` is only the version, read from verified blobs in the
|
|
441
|
-
* project's own Git directory. Anything unreadable is a real change (owes more, never less). */
|
|
442
335
|
export function versionBumpsOf(gitDir, base, facts) {
|
|
443
336
|
const before = verifiedBlobs(gitDir, base.tree, VERSIONED_PATHS);
|
|
444
337
|
const after = verifiedBlobs(gitDir, facts.tree, VERSIONED_PATHS);
|
package/dist/check-stamp.js
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A check's execution stamp (docs/plans/trusted-release-reports.md, H2): what actually ran, written at launch by the code
|
|
3
|
-
* that launched it. Before this, a run's `sandbox_access` was all there was, and a missing or unreadable value read as
|
|
4
|
-
* "sandboxed". That reading is right for one thing only, choosing how a later check may run (narrowest), and wrong for
|
|
5
|
-
* saying how a check DID run. Anything that relies on how a check ran reads a stamp here: a missing, old or damaged one
|
|
6
|
-
* is `unknown`, which refuses where it matters and is never said to be sandboxed.
|
|
7
|
-
*
|
|
8
|
-
* Reading a stamp is strict, and a new shape takes a new version: an older build's stamp is `unknown` to a newer one.
|
|
9
|
-
*/
|
|
10
1
|
import { createHash } from "node:crypto";
|
|
11
2
|
import { canonicalJson } from "./canonical-json.js";
|
|
12
3
|
import { isCheckAccess, widerThan } from "./check-access.js";
|
|
13
4
|
export const CHECK_STAMP_VERSION = 1;
|
|
14
|
-
/** Every path: the launch had no write or read fence of that kind. */
|
|
15
5
|
export const EVERYWHERE = "*";
|
|
16
|
-
/** A launch with no fence at all. */
|
|
17
6
|
export const unfencedStamp = () => ({ version: CHECK_STAMP_VERSION, level: "unsandboxed", policyDigest: null, writable: [EVERYWHERE], readable: [EVERYWHERE], network: { mode: "machine" } });
|
|
18
7
|
export const stampDigest = (stamp) => createHash("sha256").update(`toolroll:check-stamp:${canonicalJson(stamp)}`).digest("hex").slice(0, 32);
|
|
19
8
|
const paths = (value) => Array.isArray(value) && value.every(one => typeof one === "string" && one !== "");
|
|
@@ -25,7 +14,6 @@ const networkIs = (value) => {
|
|
|
25
14
|
return Object.keys(one).length === 1;
|
|
26
15
|
return (one["mode"] === "open" || one["mode"] === "allowlist") && paths(one["hosts"]) && Object.keys(one).length === 2;
|
|
27
16
|
};
|
|
28
|
-
/** One saved stamp, exactly its shape or unknown. */
|
|
29
17
|
export function readStamp(text) {
|
|
30
18
|
if (typeof text !== "string")
|
|
31
19
|
return { state: "unknown", why: "missing" };
|
|
@@ -46,15 +34,10 @@ export function readStamp(text) {
|
|
|
46
34
|
&& paths(one["writable"]) && paths(one["readable"]) && networkIs(one["network"]) && Object.keys(one).length === 6;
|
|
47
35
|
if (!whole)
|
|
48
36
|
return { state: "unknown", why: "unreadable" };
|
|
49
|
-
// No fence and a narrow level can't both be true: a stamp that says so is damaged.
|
|
50
37
|
if (digest === null && one["level"] !== "unsandboxed")
|
|
51
38
|
return { state: "unknown", why: "unreadable" };
|
|
52
39
|
return { state: "current", stamp: value };
|
|
53
40
|
}
|
|
54
|
-
/**
|
|
55
|
-
* A run's whole account of its checks: every launch it stamped. Any it can't read makes the whole unknown (one launch of
|
|
56
|
-
* unknown reach is reach unknown); otherwise the widest stands, so a narrow command never hides a wider one. None: unknown.
|
|
57
|
-
*/
|
|
58
41
|
export function readStamps(texts) {
|
|
59
42
|
if (texts.length === 0)
|
|
60
43
|
return { state: "unknown", why: "missing" };
|
|
@@ -68,19 +51,16 @@ export function readStamps(texts) {
|
|
|
68
51
|
}
|
|
69
52
|
return { state: "current", stamp: widest };
|
|
70
53
|
}
|
|
71
|
-
/** Why relying on `reading` for a check that had to stay within `sealed` isn't possible, or null when it can be. */
|
|
72
54
|
export function stampRefusal(reading, sealed) {
|
|
73
55
|
if (reading.state === "unknown")
|
|
74
56
|
return reading.why === "old" ? "its check's record is from an older Toolroll, so how it ran can't be shown" : "how its check ran wasn't recorded";
|
|
75
57
|
return widerThan(reading.stamp.level, sealed) ? `its check ran ${reading.stamp.level}, wider than the ${sealed} it was approved for` : null;
|
|
76
58
|
}
|
|
77
|
-
/** How a check ran, as a person reads it after the fact; null for a current sandboxed one, which needs no line. */
|
|
78
59
|
export function ranWords(reading) {
|
|
79
60
|
if (reading.state === "unknown")
|
|
80
61
|
return "How these checks ran wasn't recorded";
|
|
81
62
|
return reading.stamp.level === "sandboxed" ? null : reading.stamp.level === "unsandboxed" ? "Checks ran without a sandbox" : "Checks ran with model and GitHub sign-ins";
|
|
82
63
|
}
|
|
83
|
-
/** v154: one row per distinct launch of a run's commands (a run's repeats of one launch are one row). */
|
|
84
64
|
export const V154_SCHEMA = `
|
|
85
65
|
CREATE TABLE IF NOT EXISTS check_stamp (
|
|
86
66
|
id INTEGER PRIMARY KEY,
|