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/evals.js
CHANGED
|
@@ -1,27 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The eval set (docs/plans/evals-nightly.md, part C1): versioned cases run by the installed plane, each attempt in a
|
|
3
|
-
* throwaway world of its own, graded by a trusted oracle outside the fence, every provider dispatch through a gate
|
|
4
|
-
* and every dispatch's spending recorded as it was reported.
|
|
5
|
-
*
|
|
6
|
-
* - **Cases** live in `evals/` (shipped in the package): `manifest.json` lists them; each `cases/<id>/` holds
|
|
7
|
-
* `case.json`, `fixture/` (the project the agent starts from, plain files), `oracle.mjs` + `probe.mjs` (the hidden
|
|
8
|
-
* check) and `source.md` (where it came from). A case's version is the sha256 of its folder; a link or anything but a
|
|
9
|
-
* regular file in it refuses the whole set. A case is a draft until a person validates its expected outcome
|
|
10
|
-
* (`validatedBy` in case.json, changed only in a release a person approves: `evals/` is a policy path).
|
|
11
|
-
* - **Campaigns**: canonical (no flags) seals every case, its version, its pin, k = 3 and the installed build; it is
|
|
12
|
-
* refused while any case is a draft or any pin isn't an exact model id. Anything else is diagnostic. Admission is one
|
|
13
|
-
* transaction with a person's proof: no release operation reserved, no deploy draining, one canonical campaign at a
|
|
14
|
-
* time (settlement order). The runner that owns a campaign is recorded, so an interrupted one can be recovered.
|
|
15
|
-
* - **Attempts** run as `toolroll evals attempt …`, a child process of the installed binary in its own process group,
|
|
16
|
-
* with its own world (database, repository, worktrees, dispatch gate). The runner waits for the whole process tree to
|
|
17
|
-
* be gone, reads the world's database (read only), extracts the built files from verified Git objects, and only then
|
|
18
|
-
* asks the oracle (eval-oracle.ts).
|
|
19
|
-
* - **Money**: no limit (the owner, 2026-10-30). What every dispatch spent is recorded on every exit path: API dollars,
|
|
20
|
-
* subscription usage and unknown kept apart and never added together; a dispatch the world's records don't account
|
|
21
|
-
* for, or one that went around the gate, makes the attempt an error with unknown spending.
|
|
22
|
-
*
|
|
23
|
-
* Result-writing authority is this module's alone: a world never gets a handle on the plane's database.
|
|
24
|
-
*/
|
|
25
1
|
import { execFileSync, spawn } from "node:child_process";
|
|
26
2
|
import { createHash, randomBytes } from "node:crypto";
|
|
27
3
|
import { closeSync, constants, lstatSync, mkdirSync, mkdtempSync, openSync, readdirSync, realpathSync, rmSync, writeSync } from "node:fs";
|
|
@@ -41,23 +17,17 @@ import { combineReportedModels } from "./reported-usage.js";
|
|
|
41
17
|
import { authenticateApprover } from "./scope.js";
|
|
42
18
|
import { deriveRunEfficiency } from "./run-efficiency.js";
|
|
43
19
|
import { chatTurnAccounting, runAccounting, Store } from "./store.js";
|
|
44
|
-
// Loaded on first use, like the store: a static import prints Node's SQLite warning and can't be bundled.
|
|
45
20
|
const sqlite = () => createRequire(import.meta.url)("node:sqlite");
|
|
46
21
|
export const EVALS_ROOT = fileURLToPath(new URL("../evals/", import.meta.url));
|
|
47
22
|
export const EVAL_K = 3;
|
|
48
|
-
/** An errored attempt gets one replacement when the plane confirms the error; at most this many a campaign. */
|
|
49
23
|
export const EVAL_MAX_REPLACEMENTS = 3;
|
|
50
|
-
/** Attempts at once within one campaign. */
|
|
51
24
|
export const EVAL_CONCURRENCY = 2;
|
|
52
25
|
const CASE_ID = /^[a-z0-9][a-z0-9-]{0,47}$/;
|
|
53
26
|
const FIXTURE_PATH = /^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}(\/[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}){0,3}$/;
|
|
54
|
-
/** Names that pick a model for you: never a pin. */
|
|
55
27
|
const MODEL_ALIASES = new Set(["sonnet", "opus", "haiku", "default", "best", "opusplan", "sonnet[1m]", "opus[1m]"]);
|
|
56
28
|
const MAX_CASE_FILES = 64;
|
|
57
29
|
const MAX_CASE_FILE_BYTES = 256 * 1024;
|
|
58
30
|
const sha256 = (value) => createHash("sha256").update(value).digest("hex");
|
|
59
|
-
/** Every regular file under `dir` (relative path → bytes), never through a link; null with why when anything else is
|
|
60
|
-
* there or a limit is passed. */
|
|
61
31
|
function folderFiles(dir, limit = MAX_CASE_FILES) {
|
|
62
32
|
const files = new Map();
|
|
63
33
|
const walk = (at, depth) => {
|
|
@@ -93,14 +63,12 @@ function folderFiles(dir, limit = MAX_CASE_FILES) {
|
|
|
93
63
|
const problem = walk(dir, 0);
|
|
94
64
|
return problem === null ? { ok: true, files } : { ok: false, problem };
|
|
95
65
|
}
|
|
96
|
-
/** A folder's digest: every file's path and bytes, in path order. */
|
|
97
66
|
function digestOf(files) {
|
|
98
67
|
const hash = createHash("sha256");
|
|
99
68
|
for (const [path, bytes] of [...files].sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0))
|
|
100
69
|
hash.update(path).update("\0").update(sha256(bytes)).update("\0");
|
|
101
70
|
return hash.digest("hex");
|
|
102
71
|
}
|
|
103
|
-
/** Why a pin isn't an exact model id, or null. An alias, an empty or odd value, or a non-Claude provider is no pin. */
|
|
104
72
|
export function exactModelProblem(pin) {
|
|
105
73
|
if (pin === null || pin === undefined || pin.provider !== "claude")
|
|
106
74
|
return "its pin names no provider an eval can cap and read the exact model of (claude)";
|
|
@@ -171,8 +139,6 @@ function caseOf(id, dir, files) {
|
|
|
171
139
|
return { ok: true, value: { id, version: digestOf(files), dir, kind, title, goal, touches, pin: { provider: "claude", model: pin.model },
|
|
172
140
|
maxDispatches, timeoutMinutes, grade: graded, validatedBy, fixture } };
|
|
173
141
|
}
|
|
174
|
-
/** The installed eval set: the manifest's cases, each read whole and versioned. Any case that can't be read, and any
|
|
175
|
-
* folder the manifest doesn't list, refuses the whole set. */
|
|
176
142
|
export function loadEvalSet(root = EVALS_ROOT) {
|
|
177
143
|
const manifestBytes = readNoFollow(join(root, "manifest.json"), 64 * 1024);
|
|
178
144
|
if (manifestBytes === null)
|
|
@@ -217,8 +183,6 @@ export function loadEvalSet(root = EVALS_ROOT) {
|
|
|
217
183
|
}
|
|
218
184
|
return { ok: true, root, manifestDigest: sha256(JSON.stringify({ manifest: sha256(manifestBytes), cases: cases.map(one => [one.id, one.version]) })), cases };
|
|
219
185
|
}
|
|
220
|
-
/** What a campaign runs. Canonical (nothing asked): every case, k = 3, refused while any case is a draft. Diagnostic
|
|
221
|
-
* (anything asked): a report only. Either way every case runs under an exact model pin. */
|
|
222
186
|
export function planCampaign(set, ask) {
|
|
223
187
|
const canonical = ask.cases === undefined && ask.k === undefined && ask.diagnostic !== true;
|
|
224
188
|
const k = ask.k ?? EVAL_K;
|
|
@@ -242,14 +206,8 @@ export function planCampaign(set, ask) {
|
|
|
242
206
|
}
|
|
243
207
|
return { ok: true, plan: { canonical, k, cases } };
|
|
244
208
|
}
|
|
245
|
-
/**
|
|
246
|
-
* Admit a campaign (eval or reviewer): a person proved now, nothing releasing or deploying, and no other canonical
|
|
247
|
-
* campaign running (canonical campaigns settle in the order they were admitted). One transaction: the proof, the checks
|
|
248
|
-
* and the row, with the runner that owns it (this process, on this computer) for recovery.
|
|
249
|
-
*/
|
|
250
209
|
export function admitEvalCampaign(store, input) {
|
|
251
210
|
const id = input.id ?? `ev-${input.now.toISOString().slice(0, 10).replace(/-/g, "")}-${randomBytes(4).toString("hex")}`;
|
|
252
|
-
// The runner's process start time too: recovery never takes a later process that reuses its pid for the runner.
|
|
253
211
|
const runner = input.runner ?? { host: hostname(), pid: process.pid, started: processStartOf(process.pid) };
|
|
254
212
|
try {
|
|
255
213
|
return store.transact(() => {
|
|
@@ -273,13 +231,11 @@ export function admitEvalCampaign(store, input) {
|
|
|
273
231
|
});
|
|
274
232
|
}
|
|
275
233
|
catch (error) {
|
|
276
|
-
// The unique running index is the last word on "one canonical at a time" when two admissions race.
|
|
277
234
|
if (/UNIQUE constraint failed: eval_campaign/.test(String(error.message)))
|
|
278
235
|
return { ok: false, reason: "already-running", message: "Another canonical campaign started at the same moment; they run one at a time." };
|
|
279
236
|
throw error;
|
|
280
237
|
}
|
|
281
238
|
}
|
|
282
|
-
/** Record one attempt's start (its identity is unique). Refused when the campaign isn't running. */
|
|
283
239
|
export function startEvalAttempt(store, input) {
|
|
284
240
|
return store.transact(() => {
|
|
285
241
|
const campaign = store.handle.prepare("SELECT state FROM eval_campaign WHERE id = ?").get(input.campaign);
|
|
@@ -290,15 +246,12 @@ export function startEvalAttempt(store, input) {
|
|
|
290
246
|
return { ok: true, attempt: Number(made.lastInsertRowid) };
|
|
291
247
|
});
|
|
292
248
|
}
|
|
293
|
-
/** Where an attempt's world is, and its process group once spawned: what recovery reads if the runner stops. */
|
|
294
249
|
function markAttemptWorld(store, attempt, worldDir, pgid) {
|
|
295
250
|
store.handle.prepare("UPDATE eval_attempt SET world_dir = ?, world_pgid = COALESCE(?, world_pgid) WHERE id = ? AND outcome IS NULL").run(worldDir, pgid, attempt);
|
|
296
251
|
}
|
|
297
|
-
/** Saved outside the world: recovery must check detached groups as well as the world's original group. */
|
|
298
252
|
function recordWorldProcesses(store, attempt, processes) {
|
|
299
253
|
store.handle.prepare("UPDATE eval_attempt SET world_processes_json = ? WHERE id = ? AND outcome IS NULL").run(JSON.stringify(processes), attempt);
|
|
300
254
|
}
|
|
301
|
-
/** Record a finished attempt, once: its outcome, each dispatch as it was billed, and its totals. */
|
|
302
255
|
export function recordEvalAttempt(store, attempt, result, now) {
|
|
303
256
|
store.transact(() => {
|
|
304
257
|
const row = store.handle.prepare("SELECT outcome FROM eval_attempt WHERE id = ?").get(attempt);
|
|
@@ -318,25 +271,17 @@ export function recordEvalAttempt(store, attempt, result, now) {
|
|
|
318
271
|
.run(result.outcome, result.why === null ? null : result.why.slice(0, 500), result.modelReported, result.dispatches, result.apiMicrousd, result.subscriptionMicrousd, result.usageUnknown ? 1 : 0, result.turns, result.tokensIn, result.cacheRead, result.cacheWrite, result.tokensOut, result.toolCalls, result.wallMs, now.toISOString(), attempt);
|
|
319
272
|
});
|
|
320
273
|
}
|
|
321
|
-
/** End a campaign, once: complete or incomplete. */
|
|
322
274
|
export function finishEvalCampaign(store, id, state, why, now) {
|
|
323
275
|
store.handle.prepare("UPDATE eval_campaign SET state = ?, why = ?, finished_at = ? WHERE id = ? AND state = 'running'").run(state, why, now.toISOString(), id);
|
|
324
276
|
}
|
|
325
|
-
/** What a campaign spent, from its attempts as recorded: API dollars (null when any dispatch's money is unknown),
|
|
326
|
-
* subscription usage (null when any is unknown or unreported), and how many attempts had unknown spending. Never one
|
|
327
|
-
* total of the three. */
|
|
328
277
|
export function campaignSpending(store, id) {
|
|
329
278
|
const rows = store.handle.prepare("SELECT api_microusd, subscription_microusd, usage_unknown FROM eval_attempt WHERE campaign = ? AND outcome IS NOT NULL").all(id);
|
|
330
|
-
// An abandoned campaign's spending is unknown whatever its finished attempts recorded: its runner may have gone on.
|
|
331
279
|
const abandoned = Number(store.handle.prepare("SELECT spending_unknown FROM eval_campaign WHERE id = ?").get(id)?.["spending_unknown"] ?? 0) !== 0;
|
|
332
280
|
const total = (column) => abandoned || rows.some(row => row[column] === null) ? null : rows.reduce((sum, row) => sum + Number(row[column]), 0);
|
|
333
281
|
return { apiMicrousd: total("api_microusd"), subscriptionMicrousd: total("subscription_microusd"), unknownAttempts: rows.filter(row => Number(row["usage_unknown"]) === 1).length, attempts: rows.length };
|
|
334
282
|
}
|
|
335
283
|
const sum = (values) => values.some(one => one === null) ? null : values.reduce((total, one) => total + one, 0);
|
|
336
284
|
const UNKNOWN = { kind: "unknown" };
|
|
337
|
-
/** Every provider dispatch a world made, from its own records (its database, opened read only; null when there is none
|
|
338
|
-
* or it can't be read) and its gate's slots: each with what it was billed as and the model it reported. A slot no
|
|
339
|
-
* record accounts for, and a record no slot does, is a dispatch with unknown money and an unknown model. */
|
|
340
285
|
export function collectWorld(world, gateDir, maxDispatches, evidenceRoot, now) {
|
|
341
286
|
const slots = evalGateSlots(gateDir);
|
|
342
287
|
const invocations = [];
|
|
@@ -379,13 +324,10 @@ export function collectWorld(world, gateDir, maxDispatches, evidenceRoot, now) {
|
|
|
379
324
|
cacheRead.push(read?.cacheReadTokens ?? null);
|
|
380
325
|
cacheWrite.push(read?.cacheWriteTokens ?? null);
|
|
381
326
|
tokensOut.push(read?.tokensOut ?? null);
|
|
382
|
-
// A chat request's own tool calls aren't step-recorded: unknown.
|
|
383
327
|
toolCalls.push(null);
|
|
384
328
|
}
|
|
385
329
|
if (chats.length > chatSlots.length)
|
|
386
330
|
unaccounted = true;
|
|
387
|
-
// A run slot whose run never reached its provider spent nothing; a run slot with no run at all, or a chat slot past
|
|
388
|
-
// the recorded chat requests, may have been sent.
|
|
389
331
|
for (const slot of slots ?? []) {
|
|
390
332
|
if (!slot.kind.startsWith("run:"))
|
|
391
333
|
continue;
|
|
@@ -401,8 +343,6 @@ export function collectWorld(world, gateDir, maxDispatches, evidenceRoot, now) {
|
|
|
401
343
|
}
|
|
402
344
|
}
|
|
403
345
|
catch {
|
|
404
|
-
// Keep every charge already read. A damaged or older world must not prevent settlement or turn missing
|
|
405
|
-
// dispatches into zero spending. The synthetic slot is explicitly unknown, never a measured call.
|
|
406
346
|
unrecorded({ n: 0, kind: "unreadable" });
|
|
407
347
|
unaccounted = true;
|
|
408
348
|
}
|
|
@@ -423,8 +363,6 @@ export function collectWorld(world, gateDir, maxDispatches, evidenceRoot, now) {
|
|
|
423
363
|
usageUnknown, turns: unaccounted ? null : sum(turns), tokensIn: unaccounted ? null : sum(tokensIn), cacheRead: unaccounted ? null : sum(cacheRead), cacheWrite: unaccounted ? null : sum(cacheWrite), tokensOut: unaccounted ? null : sum(tokensOut), toolCalls: unaccounted ? null : sum(toolCalls),
|
|
424
364
|
};
|
|
425
365
|
}
|
|
426
|
-
/** A run's tool calls from its step records (run-efficiency.ts stepsOf), read before the world is removed; null when
|
|
427
|
-
* the records are absent, expired or incomplete. */
|
|
428
366
|
function toolCallsOf(world, runId, evidenceRoot, now) {
|
|
429
367
|
const run = world.getRun(runId);
|
|
430
368
|
if (run === null)
|
|
@@ -438,7 +376,6 @@ function toolCallsOf(world, runId, evidenceRoot, now) {
|
|
|
438
376
|
return null;
|
|
439
377
|
}
|
|
440
378
|
}
|
|
441
|
-
/** A world's records, read only; null when there is no database or it can't be read. */
|
|
442
379
|
function openWorld(databaseFile) {
|
|
443
380
|
try {
|
|
444
381
|
lstatSync(databaseFile);
|
|
@@ -453,11 +390,6 @@ function openWorld(databaseFile) {
|
|
|
453
390
|
return null;
|
|
454
391
|
}
|
|
455
392
|
}
|
|
456
|
-
// ------------------------------------------------------------------ one attempt
|
|
457
|
-
/** The installed build's identity: its version, a digest of every file of the code that is running (dist when
|
|
458
|
-
* installed, the sources in a checkout), and the service definitions that say which runtime the plane runs (a deploy
|
|
459
|
-
* rewrites them to another runtime's folder). A change between attempts, or before the end, stops the campaign as
|
|
460
|
-
* incomplete. */
|
|
461
393
|
export function installedBuildDigest(version, home = homedir()) {
|
|
462
394
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
463
395
|
const units = [];
|
|
@@ -492,29 +424,23 @@ function folderFilesDeep(dir) {
|
|
|
492
424
|
walk(dir);
|
|
493
425
|
return hash.digest("hex");
|
|
494
426
|
}
|
|
495
|
-
/** Whether every process witness is gone: the child's own group, and each descendant the observer saw, checked as what
|
|
496
|
-
* it was seen as (a process, or a group whose leader it was). */
|
|
497
427
|
function treeGone(pgid, seen) {
|
|
498
428
|
return pgid > 0 && !processMayBeAlive(pgid, true) && [...seen].every(([pid, group]) => !processMayBeAlive(pid, group));
|
|
499
429
|
}
|
|
500
|
-
/** Stop what is left of a world: the child's group, and each witness as what it was seen as. Its own processes only. */
|
|
501
430
|
function stopWorld(pgid, seen) {
|
|
502
431
|
if (pgid > 0) {
|
|
503
432
|
try {
|
|
504
433
|
process.kill(-pgid, "SIGKILL");
|
|
505
434
|
}
|
|
506
|
-
catch {
|
|
435
|
+
catch { }
|
|
507
436
|
}
|
|
508
437
|
for (const [pid, group] of seen) {
|
|
509
438
|
try {
|
|
510
439
|
process.kill(group ? -pid : pid, "SIGKILL");
|
|
511
440
|
}
|
|
512
|
-
catch {
|
|
441
|
+
catch { }
|
|
513
442
|
}
|
|
514
443
|
}
|
|
515
|
-
/** Run the child and wait for its whole process tree: the child's exit, its process group gone, and every descendant
|
|
516
|
-
* (and every group one led) the process-tree observer saw gone. A tree that won't end, or one whose ancestry couldn't
|
|
517
|
-
* be observed, is stopped and reported (`lingering`), never graded. */
|
|
518
444
|
async function runWorldProcess(spec, cwd, timeoutMs, settleMs, onSpawn, persist) {
|
|
519
445
|
persist({ state: "starting", witnesses: [] });
|
|
520
446
|
const child = spawn(spec.file, spec.args, { cwd, env: spec.env, detached: true, stdio: ["ignore", "pipe", "pipe"] });
|
|
@@ -522,7 +448,6 @@ async function runWorldProcess(spec, cwd, timeoutMs, settleMs, onSpawn, persist)
|
|
|
522
448
|
let unknownAncestry = false;
|
|
523
449
|
const pgid = child.pid ?? -1;
|
|
524
450
|
const save = () => persist({ state: unknownAncestry ? "unknown" : "watching", witnesses: [...(pgid > 0 ? [[pgid, true]] : []), ...seen] });
|
|
525
|
-
// A persistence failure after spawn must still stop the owned child and await its exit.
|
|
526
451
|
try {
|
|
527
452
|
if (pgid > 0)
|
|
528
453
|
onSpawn(pgid);
|
|
@@ -553,7 +478,7 @@ async function runWorldProcess(spec, cwd, timeoutMs, settleMs, onSpawn, persist)
|
|
|
553
478
|
try {
|
|
554
479
|
process.kill(-pgid, "SIGKILL");
|
|
555
480
|
}
|
|
556
|
-
catch {
|
|
481
|
+
catch { }
|
|
557
482
|
}
|
|
558
483
|
}, timeoutMs);
|
|
559
484
|
child.once("error", () => { clearTimeout(timer); done(null); });
|
|
@@ -573,7 +498,6 @@ async function runWorldProcess(spec, cwd, timeoutMs, settleMs, onSpawn, persist)
|
|
|
573
498
|
while (pgid > 0 && !treeGone(pgid, seen) && Date.now() < last)
|
|
574
499
|
await new Promise(done => setTimeout(done, 50));
|
|
575
500
|
}
|
|
576
|
-
// Its report: the whole output as one JSON document (the CLI's envelope), or its last line. None: the agent's stage.
|
|
577
501
|
let report = null;
|
|
578
502
|
for (const candidate of [stdout.trim(), stdout.trim().split("\n").pop() ?? ""]) {
|
|
579
503
|
try {
|
|
@@ -584,14 +508,12 @@ async function runWorldProcess(spec, cwd, timeoutMs, settleMs, onSpawn, persist)
|
|
|
584
508
|
break;
|
|
585
509
|
}
|
|
586
510
|
}
|
|
587
|
-
catch {
|
|
511
|
+
catch { }
|
|
588
512
|
}
|
|
589
513
|
const stopped = pgid < 0 || (!unknownAncestry && treeGone(pgid, seen));
|
|
590
514
|
persist({ state: stopped ? "stopped" : "unknown", witnesses: [...(pgid > 0 ? [[pgid, true]] : []), ...seen] });
|
|
591
515
|
return { timedOut, report, lingering, stopped, why, code };
|
|
592
516
|
}
|
|
593
|
-
/** Write each graded file of the built commit, from verified Git objects (never the checkout, never a link), into a
|
|
594
|
-
* fresh folder for the oracle. */
|
|
595
517
|
function extractGraded(repo, head, files, into) {
|
|
596
518
|
let gitDir;
|
|
597
519
|
try {
|
|
@@ -611,7 +533,7 @@ function extractGraded(repo, head, files, into) {
|
|
|
611
533
|
for (const file of files) {
|
|
612
534
|
const blob = blobs.value.get(file);
|
|
613
535
|
if (blob === undefined)
|
|
614
|
-
continue;
|
|
536
|
+
continue;
|
|
615
537
|
mkdirSync(dirname(join(into, file)), { recursive: true });
|
|
616
538
|
const fd = openSync(join(into, file), constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | constants.O_NOFOLLOW, 0o600);
|
|
617
539
|
try {
|
|
@@ -623,21 +545,12 @@ function extractGraded(repo, head, files, into) {
|
|
|
623
545
|
}
|
|
624
546
|
return { ok: true };
|
|
625
547
|
}
|
|
626
|
-
/** An attempt's result from what its world recorded, with the outcome and why. */
|
|
627
548
|
const resultOf = (outcome, why, collected, wallMs) => ({
|
|
628
549
|
outcome, why, modelReported: collected.modelReported, dispatches: collected.dispatches,
|
|
629
550
|
apiMicrousd: collected.apiMicrousd, subscriptionMicrousd: collected.subscriptionMicrousd, usageUnknown: collected.usageUnknown,
|
|
630
551
|
turns: collected.turns, tokensIn: collected.tokensIn, cacheRead: collected.cacheRead, cacheWrite: collected.cacheWrite, tokensOut: collected.tokensOut, toolCalls: collected.toolCalls,
|
|
631
552
|
wallMs, invocations: collected.invocations
|
|
632
553
|
});
|
|
633
|
-
/**
|
|
634
|
-
* One attempt: record its start, make the world, run its child to the end of its whole process tree, read what it
|
|
635
|
-
* did, grade it, record it. What the world dispatched is collected and recorded on every road out, the runner's own
|
|
636
|
-
* failure included, before the world is removed. Outcomes (plan, "Grading"): an error only where the plane itself
|
|
637
|
-
* recorded one (the world failed before the agent started, the provider refused or was down, the oracle failed, the
|
|
638
|
-
* world's processes wouldn't end, a dispatch the gate and the records don't agree on); the agent timing out, crashing
|
|
639
|
-
* or going past its dispatch limit is a fail; a reported model other than the pin is unevaluated.
|
|
640
|
-
*/
|
|
641
554
|
export async function runEvalAttempt(store, input, deps) {
|
|
642
555
|
const now = deps.now ?? (() => new Date());
|
|
643
556
|
const { one } = input;
|
|
@@ -650,8 +563,6 @@ export async function runEvalAttempt(store, input, deps) {
|
|
|
650
563
|
let ran = null;
|
|
651
564
|
let failure = null;
|
|
652
565
|
let spawned = false;
|
|
653
|
-
// The world's state folder is named as Toolroll's own, so every agent fence in the world denies it whole: the
|
|
654
|
-
// database, the worker's token and the dispatch gate (agent-fence.ts agentFence, a dedicated state folder).
|
|
655
566
|
const paths = (dir) => ({ stateDir: join(dir, "toolroll"), gateDir: join(dir, "toolroll", "eval-gate"), databaseFile: join(dir, "toolroll", "orders.db") });
|
|
656
567
|
try {
|
|
657
568
|
mkdirSync(deps.workRoot, { recursive: true, mode: 0o700 });
|
|
@@ -670,9 +581,7 @@ export async function runEvalAttempt(store, input, deps) {
|
|
|
670
581
|
catch (error) {
|
|
671
582
|
failure = `the eval runner failed: ${error instanceof Error ? error.message.slice(0, 200) : String(error)}`;
|
|
672
583
|
}
|
|
673
|
-
// Whatever happened, what the world recorded is read before anything is decided or removed.
|
|
674
584
|
const where = worldDir === null ? null : paths(worldDir);
|
|
675
|
-
// A lingering tree has been stopped by now: its records are read all the same, so known spending is kept.
|
|
676
585
|
const world = where === null ? null : openWorld(where.databaseFile);
|
|
677
586
|
let result;
|
|
678
587
|
const collected = where === null
|
|
@@ -696,8 +605,6 @@ export async function runEvalAttempt(store, input, deps) {
|
|
|
696
605
|
const startedRuns = Number(world.handle.prepare("SELECT COUNT(*) AS n FROM run WHERE provider_started_at IS NOT NULL").get()?.["n"] ?? 0);
|
|
697
606
|
const refused = Number(world.handle.prepare("SELECT COUNT(*) AS n FROM run WHERE outcome = 'refused' AND provider_started_at IS NULL").get()?.["n"] ?? 0);
|
|
698
607
|
if (collected.invocations.length === 0 && startedRuns === 0) {
|
|
699
|
-
// Nothing reached a provider: the world failed before the agent started (its child said so), or the provider
|
|
700
|
-
// refused (a plane-side record); anything else is the agent's (a fail).
|
|
701
608
|
const why = ran.report?.stage === "world-start" ? `the world failed before the agent started: ${ran.report.why ?? "no reason given"}`
|
|
702
609
|
: refused > 0 ? "the provider refused or was unavailable before the agent started" : null;
|
|
703
610
|
result = why !== null ? resultOf("error", why, collected, wall()) : resultOf("fail", ran.timedOut ? "timed out before the agent started" : "the agent never started", collected, wall());
|
|
@@ -732,9 +639,6 @@ export async function runEvalAttempt(store, input, deps) {
|
|
|
732
639
|
finally {
|
|
733
640
|
world?.close();
|
|
734
641
|
}
|
|
735
|
-
// PR #263 review: a world whose process tree isn't proven stopped (its ancestry unknown, a process that outlived
|
|
736
|
-
// SIGKILL, or a runner failure after the spawn) may still be dispatching. What it spent is unknown, never the part
|
|
737
|
-
// its records show, and the campaign ends incomplete.
|
|
738
642
|
let stopCampaign = null;
|
|
739
643
|
if ((ran !== null && !ran.stopped) || (ran === null && spawned)) {
|
|
740
644
|
result = { ...result, apiMicrousd: null, subscriptionMicrousd: null, usageUnknown: true,
|
|
@@ -742,13 +646,10 @@ export async function runEvalAttempt(store, input, deps) {
|
|
|
742
646
|
stopCampaign = `${one.id} #${input.n}'s world couldn't be proven stopped, so what it spent is unknown`;
|
|
743
647
|
}
|
|
744
648
|
recordEvalAttempt(store, attempt, result, now());
|
|
745
|
-
// Only once it is recorded is the world removed.
|
|
746
649
|
if (worldDir !== null && ran?.stopped === true && deps.keepWorlds !== true)
|
|
747
650
|
rmSync(worldDir, { recursive: true, force: true });
|
|
748
651
|
return { attempt, result, stopCampaign };
|
|
749
652
|
}
|
|
750
|
-
/** Grade from what the world's installed code recorded: the built commit's files through the oracle (build), or the
|
|
751
|
-
* question a run parked with (ask). The agent's own words are never read as a verdict. */
|
|
752
653
|
async function grade(world, worldDir, one, deps, deny) {
|
|
753
654
|
if ("options" in one.grade) {
|
|
754
655
|
const asked = world.handle.prepare("SELECT d.options FROM decision d JOIN run r ON r.id = d.run WHERE r.role = 'builder' ORDER BY d.id LIMIT 1").get();
|
|
@@ -771,10 +672,6 @@ async function grade(world, worldDir, one, deps, deny) {
|
|
|
771
672
|
const verdict = await (deps.oracle ?? runOracle)({ caseDir: one.dir, inputDir, timeoutMs: 60_000, deny });
|
|
772
673
|
return { outcome: verdict.outcome, why: verdict.why };
|
|
773
674
|
}
|
|
774
|
-
/** Run an admitted campaign to its end: every sealed attempt (EVAL_CONCURRENCY at once), one replacement for an
|
|
775
|
-
* attempt the plane recorded an error for (at most EVAL_MAX_REPLACEMENTS a campaign), then complete — or incomplete
|
|
776
|
-
* when the installed build or eval set changed (checked before every attempt and again at the end), a deploy is
|
|
777
|
-
* draining, or the runner itself failed. */
|
|
778
675
|
export async function runEvalCampaign(store, campaign, cases, deps) {
|
|
779
676
|
const now = deps.now ?? (() => new Date());
|
|
780
677
|
const row = store.handle.prepare("SELECT k, build_digest, manifest_digest, state FROM eval_campaign WHERE id = ?").get(campaign);
|
|
@@ -819,7 +716,6 @@ export async function runEvalCampaign(store, campaign, cases, deps) {
|
|
|
819
716
|
stop ??= `the eval runner failed: ${error instanceof Error ? error.message.slice(0, 200) : String(error)}`;
|
|
820
717
|
}
|
|
821
718
|
}))));
|
|
822
|
-
// The identity again at the end: a change during the last attempts leaves the campaign incomplete too.
|
|
823
719
|
stop ??= changed();
|
|
824
720
|
}
|
|
825
721
|
catch (error) {
|
|
@@ -829,12 +725,6 @@ export async function runEvalCampaign(store, campaign, cases, deps) {
|
|
|
829
725
|
finishEvalCampaign(store, campaign, state, stop, now());
|
|
830
726
|
return { state, why: stop };
|
|
831
727
|
}
|
|
832
|
-
/**
|
|
833
|
-
* Recover campaigns whose runner stopped (Codex round 1 #12): a running campaign whose runner was this computer's and
|
|
834
|
-
* whose process is gone. Each unfinished attempt is recorded as an error with whatever its world recorded (its spending
|
|
835
|
-
* unknown where the records can't say), once its world's process group is proven gone; then the campaign ends
|
|
836
|
-
* incomplete. A campaign whose runner is alive, ran on another computer, or still has a world running stays as it is.
|
|
837
|
-
*/
|
|
838
728
|
export function recoverEvalCampaigns(store, now, options = {}) {
|
|
839
729
|
const host = options.host ?? hostname();
|
|
840
730
|
const alive = options.alive ?? runnerMayBeAlive;
|
|
@@ -857,7 +747,7 @@ export function recoverEvalCampaigns(store, now, options = {}) {
|
|
|
857
747
|
}
|
|
858
748
|
const unproven = open.find(one => {
|
|
859
749
|
if (one["world_dir"] === null)
|
|
860
|
-
return false;
|
|
750
|
+
return false;
|
|
861
751
|
try {
|
|
862
752
|
const saved = JSON.parse(String(one["world_processes_json"]));
|
|
863
753
|
if (saved === null || !Array.isArray(saved.witnesses))
|
|
@@ -882,7 +772,6 @@ export function recoverEvalCampaigns(store, now, options = {}) {
|
|
|
882
772
|
const dir = one["world_dir"] === null ? null : String(one["world_dir"]);
|
|
883
773
|
const world = dir === null ? null : openWorld(join(dir, "toolroll", "orders.db"));
|
|
884
774
|
try {
|
|
885
|
-
// No world folder recorded: the attempt never got as far as making one (its gate reads as unreadable: unknown).
|
|
886
775
|
const collected = collectWorld(world, dir === null ? "" : join(dir, "toolroll", "eval-gate"), Number.MAX_SAFE_INTEGER, dir === null ? "" : join(dir, "toolroll", "evidence"), now);
|
|
887
776
|
recordEvalAttempt(store, Number(one["id"]), resultOf("error", "interrupted: its runner stopped before the attempt finished", collected, 0), now);
|
|
888
777
|
}
|
|
@@ -895,9 +784,6 @@ export function recoverEvalCampaigns(store, now, options = {}) {
|
|
|
895
784
|
}
|
|
896
785
|
return out;
|
|
897
786
|
}
|
|
898
|
-
/** A process's start time as the system reports it (`ps -o lstart`, whole seconds, in UTC and the C locale), or null
|
|
899
|
-
* when it can't be read: the identity a saved pid is compared by, so a later process that reuses the number is never
|
|
900
|
-
* taken for the one recorded. */
|
|
901
787
|
export function processStartOf(pid) {
|
|
902
788
|
if (process.platform === "win32" || !Number.isSafeInteger(pid) || pid <= 0)
|
|
903
789
|
return null;
|
|
@@ -911,20 +797,14 @@ export function processStartOf(pid) {
|
|
|
911
797
|
return null;
|
|
912
798
|
}
|
|
913
799
|
}
|
|
914
|
-
/** Whether a campaign's runner may still be running (PR #263 review): its pid is held, and by the same process — its
|
|
915
|
-
* start time, where one was recorded, matches. A pid now held by a process that started at another time is someone
|
|
916
|
-
* else's. A start that can't be read now counts as alive (a person ends such a campaign: `evals recover --abandon`). */
|
|
917
800
|
export function runnerMayBeAlive(pid, started) {
|
|
918
801
|
if (!processMayBeAlive(pid, false))
|
|
919
802
|
return false;
|
|
920
803
|
const was = started === null ? null : startMs(started);
|
|
921
804
|
const now = processStartOf(pid);
|
|
922
805
|
const is = now === null ? null : startMs(now);
|
|
923
|
-
// Within two seconds is the same process: a system that derives the start from its boot time can shift it by a
|
|
924
|
-
// second, and a pid can't be reused while the process holding it lives.
|
|
925
806
|
return was === null || is === null || Math.abs(is - was) <= 2_000;
|
|
926
807
|
}
|
|
927
|
-
/** A `ps -o lstart` reading (UTC, C locale) as epoch milliseconds, or null when it isn't one exactly. */
|
|
928
808
|
function startMs(raw) {
|
|
929
809
|
const match = /^(Sun|Mon|Tue|Wed|Thu|Fri|Sat) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{1,2}) (\d{2}:\d{2}:\d{2}) (\d{4})$/.exec(raw);
|
|
930
810
|
if (match === null)
|
|
@@ -933,13 +813,6 @@ function startMs(raw) {
|
|
|
933
813
|
const ms = Date.parse(utc);
|
|
934
814
|
return Number.isFinite(ms) && new Date(ms).toUTCString() === utc ? ms : null;
|
|
935
815
|
}
|
|
936
|
-
/**
|
|
937
|
-
* End a stuck campaign by a person's word (PR #263 review): a campaign recovery can't settle (its runner can't be
|
|
938
|
-
* proven gone, or a world's processes can't). A person proved now with their password (a lead token or remembered
|
|
939
|
-
* login is no proof); in one transaction every unfinished attempt is recorded as an error with unknown spending, the
|
|
940
|
-
* campaign's spending is marked unknown, and it ends incomplete. No process is signalled and no world is read or
|
|
941
|
-
* removed: whatever is still running is left to the person.
|
|
942
|
-
*/
|
|
943
816
|
export function abandonEvalCampaign(store, input) {
|
|
944
817
|
return store.transact(() => {
|
|
945
818
|
const proved = authenticateApprover(store, input.as, input.token, null);
|
|
@@ -961,5 +834,4 @@ export function abandonEvalCampaign(store, input) {
|
|
|
961
834
|
return { ok: true, attempts: open.length };
|
|
962
835
|
});
|
|
963
836
|
}
|
|
964
|
-
/** A random hex id, for the world's throwaway approver password. */
|
|
965
837
|
export const worldSecret = () => randomBytes(24).toString("hex");
|
package/dist/evidence-pack.js
CHANGED
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* v103: a change's evidence pack. It is everything an auditor asks about one
|
|
3
|
-
* piece of work, in one place: who asked for it, the exact terms and who
|
|
4
|
-
* approved them (under which rules), which agents ran and what they cost,
|
|
5
|
-
* what changed, the checks, who marked it complete, where it was published,
|
|
6
|
-
* and every ledger entry about it with its seal. JSON for tools; the same
|
|
7
|
-
* facts as a printable page for people.
|
|
8
|
-
*
|
|
9
|
-
* Each ledger entry carries its seal (`prev`, `hash`), so anyone can
|
|
10
|
-
* recompute it; the chain report and the latest checkpoint tie those
|
|
11
|
-
* entries to the whole ledger.
|
|
12
|
-
*/
|
|
13
1
|
import { createHash } from "node:crypto";
|
|
14
2
|
import { rulesWords } from "./approval-policy.js";
|
|
15
3
|
import { assignmentOf } from "./assignment.js";
|
|
@@ -18,12 +6,9 @@ import { changedFilesOf } from "./result-completion.js";
|
|
|
18
6
|
import { approvalProofOf, personProof } from "./scope.js";
|
|
19
7
|
import { html, htmlString, joinHtml, styleElement } from "./html.js";
|
|
20
8
|
export const EVIDENCE_PACK_FORMAT = "standing-orders/evidence-pack/v1";
|
|
21
|
-
/** How to recheck one entry's seal, for whoever reads the JSON. */
|
|
22
9
|
export const SEAL_RECIPE = 'hash = sha256(prev + "\\n" + JSON.stringify([id, at, actor, repo, taskId, runId, action, outcome, source, detail]))';
|
|
23
|
-
/** A pack carries up to this many of the task's own entries, and the newest this many requests made about it. */
|
|
24
10
|
const MAX_ENTRIES = 5000;
|
|
25
11
|
const MAX_REQUESTS = 500;
|
|
26
|
-
/** The pack for one task (the whole family: the task and every revision), as `who` may see it. null when they can't. */
|
|
27
12
|
export function evidencePack(store, taskId, access, who, now, evidenceRoot, checked) {
|
|
28
13
|
const family = store.taskFamilyOf(taskId, access.repos, access.principal === "operator" && access.includeUnplaced === true);
|
|
29
14
|
if (family === null)
|
|
@@ -102,7 +87,6 @@ export function evidencePack(store, taskId, access, who, now, evidenceRoot, chec
|
|
|
102
87
|
export function packDigest(body) {
|
|
103
88
|
return createHash("sha256").update(JSON.stringify(body), "utf8").digest("hex");
|
|
104
89
|
}
|
|
105
|
-
/** A day as the export takes it (YYYY-MM-DD, UTC), or null. */
|
|
106
90
|
export function exportDay(value) {
|
|
107
91
|
if (value === null || !/^\d{4}-\d{2}-\d{2}$/.test(value))
|
|
108
92
|
return null;
|
|
@@ -110,14 +94,9 @@ export function exportDay(value) {
|
|
|
110
94
|
return Number.isNaN(day.getTime()) || day.toISOString().slice(0, 10) !== value ? null : day.toISOString();
|
|
111
95
|
}
|
|
112
96
|
const EXPORT_ENTRIES = 100_000;
|
|
113
|
-
/** Entries per piece of an export: small enough that a slow, steady reader finishes each well inside the server's minute. */
|
|
114
97
|
const EXPORT_PAGE = 250;
|
|
115
98
|
const EXPORT_PACKS = 200;
|
|
116
|
-
/** Every ledger entry in [from, to) that `who` may read, sealed, with a pack for each task they name: one JSON
|
|
117
|
-
* document (a `LedgerExport`), a piece at a time (a page of entries, or one pack), so an export never holds
|
|
118
|
-
* the whole range at once. */
|
|
119
99
|
export function* ledgerExportChunks(store, range, scope, access, who, now, evidenceRoot) {
|
|
120
|
-
// An export is the record someone takes away: the whole chain is walked for it (or was, within the last minute).
|
|
121
100
|
const chain = store.ledgerChain({ full: true, fresh: 60_000 });
|
|
122
101
|
const latest = store.ledgerCheckpoints(1)[0] ?? null;
|
|
123
102
|
const head = {
|
|
@@ -174,11 +153,9 @@ export function* ledgerExportChunks(store, range, scope, access, who, now, evide
|
|
|
174
153
|
}
|
|
175
154
|
yield `],"truncated":${JSON.stringify({ entries: moreEntries, packs: morePacks })}}`;
|
|
176
155
|
}
|
|
177
|
-
// ---- The printable page -----------------------------------------------------
|
|
178
156
|
const when = (at) => at === null ? html `—` : html `${at.slice(0, 16).replace("T", " ")} UTC`;
|
|
179
157
|
const short = (hash) => hash === null ? html `—` : html `<code title="${hash}">${hash.slice(0, 12)}</code>`;
|
|
180
158
|
const usd = (value) => value === null ? "—" : `$${value.toFixed(value < 1 ? 4 : 2)}`;
|
|
181
|
-
/** Only a web address links; anything else (a stored value that isn't one) is shown as text. */
|
|
182
159
|
const link = (url) => /^https:\/\/[^\s"'<>]+$/.test(url) ? html `<a href="${url}">${url}</a>` : html `${url}`;
|
|
183
160
|
const filer = (who) => who === null || who.name === null ? html `automation` : who.kind === "person" ? html `${who.name}` : html `${who.name} (${who.kind})`;
|
|
184
161
|
export const EVIDENCE_PACK_CSS = `.evidence-pack{max-width:960px;min-width:0}.evidence-pack h1{margin:0}.evidence-pack h2{font-size:.9375rem;margin:24px 0 8px}.evidence-pack h3{font-size:.875rem;margin:16px 0 6px}` +
|
|
@@ -190,7 +167,6 @@ export const EVIDENCE_PACK_CSS = `.evidence-pack{max-width:960px;min-width:0}.ev
|
|
|
190
167
|
`@media(max-width:600px){.evidence-pack dl{grid-template-columns:minmax(0,1fr)}.evidence-pack dd{margin-bottom:6px}}` +
|
|
191
168
|
`@media print{.side,.tabbar,.mobile-top,.scope-bar,.banner,.evidence-actions{display:none!important}body,.app,.content,.detail,main{background:#fff!important;color:#000!important;margin:0!important;padding:0!important;box-shadow:none!important;border:0!important}` +
|
|
192
169
|
`.evidence-pack{max-width:none}.evidence-pack section{break-inside:avoid-page}.evidence-pack a{color:#000;text-decoration:none}}`;
|
|
193
|
-
/** The pack as a page: the same facts, in the order an auditor reads them. No script. */
|
|
194
170
|
export function evidencePackHtml(pack) {
|
|
195
171
|
const task = pack.task;
|
|
196
172
|
const chain = pack.ledger.chain.ok
|
|
@@ -232,7 +208,6 @@ export function evidencePackHtml(pack) {
|
|
|
232
208
|
const ledger = html `<section><h2>Ledger</h2>${decisions.length === 0 ? html `<p class="meta">No entries.</p>` :
|
|
233
209
|
html `<div class="evidence-table"><table><thead><tr><th>#</th><th>Time</th><th>Who</th><th>What</th><th>Outcome</th><th>Seal</th></tr></thead><tbody>${decisions.map(one => html `<tr data-ledger-id="${one.id}"><td>${one.id}</td><td>${when(one.at)}</td><td>${one.actor}</td><td>${one.action}${one.detail ? html `<br><span class="meta">${one.detail}</span>` : ""}</td><td>${one.outcome}</td><td>${short(one.seal?.hash ?? null)}</td></tr>`)}</tbody></table></div>`}${requests > 0 ? html `<p class="meta">Plus ${askedWords}, listed in the JSON.</p>` : ""}${pack.ledger.truncated ? html `<p class="meta">This pack holds ${decisions.length} of the task's entries and the newest ${requests} requests; the ledger export has the rest.</p>` : ""}</section>`;
|
|
234
210
|
const cost = pack.totals.runs === 0 ? "None ran" : `${pack.totals.runs} ${pack.totals.runs === 1 ? "run" : "runs"} · ${usd(pack.totals.costUsd)}`;
|
|
235
|
-
// The rules as they stand, and each change to them (the approval above was under whichever applied then).
|
|
236
211
|
const rules = pack.rules === null ? html `None` : html `${pack.rules.now}${pack.rules.changes.length === 0 ? "" :
|
|
237
212
|
html `<ul class="criteria">${pack.rules.changes.slice(-5).map(one => html `<li class="meta">${when(one.at)} · ${one.by}: ${one.change}</li>`)}</ul>`}`;
|
|
238
213
|
return joinHtml([html `<article class="evidence-pack" data-evidence-pack="${task.id}">`,
|
|
@@ -244,16 +219,13 @@ export function evidencePackHtml(pack) {
|
|
|
244
219
|
versions, outcome, ledger,
|
|
245
220
|
html `<p class="evidence-foot">Pack digest <code>${pack.digest}</code>. Each ledger entry's seal can be rechecked from the JSON: ${pack.ledger.recipe}.</p></article>`]);
|
|
246
221
|
}
|
|
247
|
-
/** The page as a file on its own (the CLI's --html): the same facts with just enough style to print. */
|
|
248
222
|
export function standaloneEvidenceHtml(pack) {
|
|
249
223
|
const css = `:root{--muted-foreground:#5c5c5c;--border:#dedede;--success:#1a7f37;--font-mono:ui-monospace,SFMono-Regular,Menlo,monospace}` +
|
|
250
224
|
`body{font:14px/1.5 system-ui,-apple-system,sans-serif;margin:32px auto;padding:0 16px;max-width:960px;color:#171717;background:#fff}.meta{color:var(--muted-foreground);font-size:.8125rem}.evidence-actions{display:none}` +
|
|
251
225
|
EVIDENCE_PACK_CSS;
|
|
252
|
-
// The file is the sink: its bytes.
|
|
253
226
|
return htmlString(html `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Evidence pack · ${pack.task.id}</title>${styleElement(css)}</head><body>${evidencePackHtml(pack)}</body></html>
|
|
254
227
|
`);
|
|
255
228
|
}
|
|
256
|
-
/** Who approved, in the pack's words (approval policy §1.5): `person` only when a person's proof stands behind it. */
|
|
257
229
|
function approvalBasisWord(store, taskId, basis, by, digest) {
|
|
258
230
|
if (basis === "mode")
|
|
259
231
|
return "mode";
|
|
@@ -261,7 +233,6 @@ function approvalBasisWord(store, taskId, basis, by, digest) {
|
|
|
261
233
|
return "flow";
|
|
262
234
|
if (basis === "schedule")
|
|
263
235
|
return "schedule";
|
|
264
|
-
// A later release commit carried under a person's release approval (release-once.md): never a person's own yes.
|
|
265
236
|
if (basis === "carried")
|
|
266
237
|
return "carried";
|
|
267
238
|
if (basis === "lead")
|
package/dist/evidence-pair.js
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Before-and-after evidence (docs/plans/fleet-follow-through.md, part 4), and a bug fix's optional failing test first.
|
|
3
|
-
*
|
|
4
|
-
* The before side is saved from a sealed failed check: its run, commit, receipt digest and command digest. The after
|
|
5
|
-
* side is never stored. It is read each time from the family's newest result, so a newer commit reads as out of date
|
|
6
|
-
* without anything having to notice. Rerunning uses the follow-up check road (result-follow-ups.ts): the same approved
|
|
7
|
-
* command, in a fresh checkout, on the latest commit, with no agent.
|
|
8
|
-
*
|
|
9
|
-
* A failing-test-first report is the agent's own words, shown as that. It is not a check Toolroll ran.
|
|
10
|
-
*/
|
|
11
1
|
import { readVerificationView } from "./contracts/verification-view.js";
|
|
12
2
|
import { followUpChecksOf, requestFollowUpChecks } from "./result-follow-ups.js";
|
|
13
3
|
import { readingFleet } from "./fleet-schema.js";
|
|
14
4
|
import { cleanFindingText, familyRootOf, NOT_ON_TASK, runOnTask } from "./findings.js";
|
|
15
5
|
import { runCheckLevel } from "./check-levels.js";
|
|
16
6
|
import { failedVerificationEvidence, verificationEvidence } from "./verification-evidence.js";
|
|
17
|
-
/** The family's builder runs that finished with a commit, newest first. */
|
|
18
7
|
function familyRuns(store, taskId) {
|
|
19
8
|
const family = store.taskFamilyOf(taskId, null, true);
|
|
20
9
|
const ids = family === null || family.problem !== null ? [taskId] : family.versions.map(one => one.id);
|
|
@@ -24,7 +13,6 @@ function familyRuns(store, taskId) {
|
|
|
24
13
|
}).sort((a, b) => b.id - a.id);
|
|
25
14
|
}
|
|
26
15
|
const screenshotsOf = (store, runId) => store.artifactsFor(runId).filter(one => one.kind === "screenshot").map(one => one.id);
|
|
27
|
-
/** The command a run's sealed receipt ran, and whether it passed. Null when it has no readable receipt. */
|
|
28
16
|
function sealedCheck(store, root, runId) {
|
|
29
17
|
const gate = verificationEvidence(store, root, runId);
|
|
30
18
|
if (!gate.ok || gate.bytes === null)
|
|
@@ -35,7 +23,6 @@ function sealedCheck(store, root, runId) {
|
|
|
35
23
|
const result = view.value.result;
|
|
36
24
|
return { digest: view.value.command.digest, passed: result.configured && result.ran === true && result.exitCode === 0 };
|
|
37
25
|
}
|
|
38
|
-
/** The newest result of the family that ran `digest`, by the build's own check or a follow-up check on its commit. */
|
|
39
26
|
function afterSide(store, root, runs, beforeRun, digest, now) {
|
|
40
27
|
let otherCommand = false;
|
|
41
28
|
for (const run of runs) {
|
|
@@ -80,12 +67,10 @@ function pairOf(store, root, row, taskId, now) {
|
|
|
80
67
|
export function evidencePairsOf(store, root, taskId, now) {
|
|
81
68
|
return readingFleet(() => store.handle.prepare("SELECT * FROM evidence_pair WHERE family_root = ? ORDER BY id DESC").all(familyRootOf(store, taskId)).map(row => pairOf(store, root, row, taskId, now)), []);
|
|
82
69
|
}
|
|
83
|
-
/** Save a run's failed check as the before side. Only a sealed failure can be saved: there's nothing else to compare. */
|
|
84
70
|
export function saveEvidencePair(store, root, input, now) {
|
|
85
71
|
const ref = store.lookupRef(input.taskId);
|
|
86
72
|
if (ref === null)
|
|
87
73
|
return { ok: false, reason: "unknown", message: `no task \`${input.taskId}\`` };
|
|
88
|
-
// A run named by a caller is checked first, and said plainly: every road (the CLI's --run, the console's form) comes here.
|
|
89
74
|
if (input.runId !== undefined && !runOnTask(store, input.runId, input.taskId))
|
|
90
75
|
return { ok: false, reason: "not-on-task", message: NOT_ON_TASK };
|
|
91
76
|
const runId = input.runId ?? familyRuns(store, input.taskId)[0]?.id;
|
|
@@ -104,7 +89,6 @@ export function saveEvidencePair(store, root, input, now) {
|
|
|
104
89
|
const row = store.handle.prepare("SELECT id FROM evidence_pair WHERE family_root = ? AND before_run = ?").get(root1, run.id);
|
|
105
90
|
return { ok: true, id: Number(row?.["id"]), existing: true };
|
|
106
91
|
}
|
|
107
|
-
/** Ask for the same check on the latest commit. Its level is the one the saved failure ran at. The caller proves the person. */
|
|
108
92
|
export function rerunEvidence(store, taskId, actor, now) {
|
|
109
93
|
const latest = familyRuns(store, taskId)[0];
|
|
110
94
|
if (latest === undefined)
|
|
@@ -114,7 +98,6 @@ export function rerunEvidence(store, taskId, actor, now) {
|
|
|
114
98
|
return asked.ok ? { ok: true, run: latest.id, head: latest.headRevision, request: asked.request, existing: asked.existing } : { ok: false, message: asked.message };
|
|
115
99
|
}
|
|
116
100
|
const short = (head) => head === null ? "no commit" : head.slice(0, 7);
|
|
117
|
-
/** How a pair reads, in one sentence. */
|
|
118
101
|
export function evidenceWords(pair) {
|
|
119
102
|
const before = `Failed on ${short(pair.before.head)} (build #${pair.before.run})`;
|
|
120
103
|
switch (pair.reading) {
|