toolroll 0.9.104 → 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 +62 -5
- package/README.md +18 -20
- 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 +17 -139
- 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 +1 -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 +0 -17
- 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 +0 -53
- package/dist/local-owner.js +2 -93
- 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 +0 -17
- package/dist/operate-remote.js +0 -33
- package/dist/operate.js +227 -2326
- 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 +0 -20
- 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 +0 -34
- package/dist/public-check.js +0 -16
- package/dist/publish.js +1 -150
- package/dist/pull-request-flow.js +0 -77
- 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 +0 -100
- 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 +0 -25
- 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 +4 -567
- 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 +21 -555
- 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 +1 -88
- 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 +13 -493
- 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 +6 -135
- 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 +9 -227
- package/dist/server/tasks.js +5 -539
- 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 +0 -75
- 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 +17 -28
- 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 +16 -36
- package/dist/tui.js +1 -1
- 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 +4 -3
- 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 -350
- 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 -1985
- 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 -540
- 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 -43
- 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-acts.d.ts +0 -83
- package/dist/local-owner.d.ts +0 -135
- 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 -61
- 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 -170
- 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 -39
- 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 -1098
- 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 -81
- 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 -60
- 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 -758
- package/dist/server/render-settings.d.ts +0 -93
- package/dist/server/render-tasks.d.ts +0 -783
- 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 -343
- 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 -108
- 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 -48
- 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 -202
- 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/attest.js
CHANGED
|
@@ -1,28 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tier-2 attestation (Parity II Phase 3, spec v1 D6 + v2 A2 + v3 B3 + v4 C3):
|
|
3
|
-
* a provider outside tier 1 runs ONLY at versions its conformance fixtures
|
|
4
|
-
* were proven against. The check is enforced at the one spawning gateway —
|
|
5
|
-
* this module only states ranges and probes binaries; it spawns no agent.
|
|
6
|
-
*
|
|
7
|
-
* Guarantee, stated exactly (v4 C3): attestation proves the version of the
|
|
8
|
-
* binary OBSERVED AT SPAWN TIME — probe and spawn share one resolved
|
|
9
|
-
* absolute path, revalidated by a fresh stat immediately before use. A
|
|
10
|
-
* concurrent atomic replacement between that stat and the kernel exec is
|
|
11
|
-
* acknowledged as unprovable without content-addressed snapshots, and
|
|
12
|
-
* nothing here claims otherwise.
|
|
13
|
-
*
|
|
14
|
-
* Re-attestation is a release act: run the conformance suite against the
|
|
15
|
-
* new CLI, move `ceiling` in a reviewed commit. Removal criterion (ruling
|
|
16
|
-
* 13's N, fixed): three consecutive minor releases failing conformance
|
|
17
|
-
* without a fixable adapter change retire the adapter, typed.
|
|
18
|
-
*/
|
|
19
1
|
import { ACP_AGENTS, isAcpProvider } from "./acp-agents.js";
|
|
20
2
|
import { execFile } from "node:child_process";
|
|
21
3
|
import { realpathSync, statSync, accessSync, constants } from "node:fs";
|
|
22
4
|
import { delimiter, isAbsolute, join } from "node:path";
|
|
23
5
|
import { ALL_CREDENTIAL_ENV } from "./provider.js";
|
|
24
|
-
/** Tier-1 providers deliberately have NO entry: no probe, no new refusal —
|
|
25
|
-
* their spawn road stays byte-identical (spec A2). */
|
|
26
6
|
export const ATTESTATIONS = {
|
|
27
7
|
gemini: { floor: "0.57.0", ceiling: "0.58.0", fixturesAt: "0.57.0" },
|
|
28
8
|
};
|
|
@@ -30,8 +10,6 @@ export function attestationOf(provider) {
|
|
|
30
10
|
return ATTESTATIONS[provider] ?? null;
|
|
31
11
|
}
|
|
32
12
|
const PROBE_TIMEOUT_MS = 5_000;
|
|
33
|
-
/** Only a PLAIN release attests (v2 A2): prerelease, nightly, malformed,
|
|
34
|
-
* or empty version strings are out of range BY RULE, not by comparison. */
|
|
35
13
|
const PLAIN_SEMVER = /^(\d+)\.(\d+)\.(\d+)$/;
|
|
36
14
|
function parsePlain(version) {
|
|
37
15
|
const match = PLAIN_SEMVER.exec(version.trim());
|
|
@@ -54,8 +32,6 @@ export function versionInRange(version, range) {
|
|
|
54
32
|
return false;
|
|
55
33
|
return atLeast(v, floor) && !atLeast(v, ceiling);
|
|
56
34
|
}
|
|
57
|
-
/** PATH resolution to ONE absolute realpath — the path the probe runs and
|
|
58
|
-
* the path the gateway spawns (v3 B3: no second resolution). */
|
|
59
35
|
export function resolveExecutable(binary) {
|
|
60
36
|
const candidates = [];
|
|
61
37
|
if (binary.includes("/") || isAbsolute(binary)) {
|
|
@@ -79,14 +55,10 @@ export function resolveExecutable(binary) {
|
|
|
79
55
|
return null;
|
|
80
56
|
}
|
|
81
57
|
const cache = new Map();
|
|
82
|
-
/** Tests only. */
|
|
83
58
|
export function resetAttestationCache() {
|
|
84
59
|
cache.clear();
|
|
85
60
|
}
|
|
86
61
|
const defaultProbe = (file, args, timeoutMs) => new Promise(resolve => {
|
|
87
|
-
// A version probe needs NO credential (Codex gemini verify, finding
|
|
88
|
-
// 2): strip every provider key from the child so an authoritative
|
|
89
|
-
// attestation spawn cannot leak one.
|
|
90
62
|
const env = { ...process.env };
|
|
91
63
|
for (const name of ALL_CREDENTIAL_ENV)
|
|
92
64
|
delete env[name];
|
|
@@ -94,15 +66,7 @@ const defaultProbe = (file, args, timeoutMs) => new Promise(resolve => {
|
|
|
94
66
|
resolve({ code: error === null ? 0 : 1, stdout: String(stdout ?? "") });
|
|
95
67
|
});
|
|
96
68
|
});
|
|
97
|
-
/**
|
|
98
|
-
* The pre-spawn check (v2 A2): resolve, revalidate, probe if anything
|
|
99
|
-
* moved, compare. Every failure is a typed refusal with words — never a
|
|
100
|
-
* throw, never a silent pass. Returns null for tier-1 providers.
|
|
101
|
-
*/
|
|
102
69
|
export async function attestProvider(provider, binary, probe = defaultProbe) {
|
|
103
|
-
// An ACP agent runs only on a passed conformance check of the exact binary here (docs/plans/acp-adapter.md
|
|
104
|
-
// § Admission). Absence is denial: there is no "tier 1, allow" for it. The check itself arrives with layer E;
|
|
105
|
-
// until then no ACP agent runs.
|
|
106
70
|
if (isAcpProvider(provider)) {
|
|
107
71
|
return { ok: false, problem: `${ACP_AGENTS[provider].name} isn't checked on this computer — run \`toolroll agents check ${provider}\``, version: null };
|
|
108
72
|
}
|
|
@@ -158,8 +122,6 @@ export async function attestProvider(provider, binary, probe = defaultProbe) {
|
|
|
158
122
|
}
|
|
159
123
|
return { ok: true, executable: resolved, version };
|
|
160
124
|
}
|
|
161
|
-
/** What the installed CLI says its version is, with no range attached: a recogniser's own check (exhaustion.ts), asked of
|
|
162
|
-
* the exact executable PATH resolves on this runner, only when a terminal already reads as a plan limit. Null: no answer. */
|
|
163
125
|
export async function reportedVersion(binary, probe = defaultProbe) {
|
|
164
126
|
const resolved = resolveExecutable(binary);
|
|
165
127
|
if (resolved === null)
|
package/dist/audit-cli.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `toolroll audit`: who did what on this server with their API tokens (remote-audit.ts). On the server's own machine
|
|
3
|
-
* it lists everyone; run remotely it is the caller's own view — an approver sees everyone within their projects, a
|
|
4
|
-
* viewer only themselves. `--token` names a token locally; remotely, where `--token` is always a refused credential
|
|
5
|
-
* flag, the same filter is `--token-name`.
|
|
6
|
-
*/
|
|
7
1
|
import { basename } from "node:path";
|
|
8
2
|
import { checkedEnvelopeJson } from "./contracts/cli.js";
|
|
9
3
|
import { AUDIT_LIMIT, AUDIT_SOURCES, cursorOf, OWNER_READER, remoteAudit, sinceOf } from "./remote-audit.js";
|
|
@@ -11,7 +5,6 @@ const EXIT = { ok: 0, usage: 2, refused: 3 };
|
|
|
11
5
|
const COMMAND = "audit";
|
|
12
6
|
const FLAGS = new Set(["person", "token", "token-name", "source", "since", "limit", "cursor", "json", "db"]);
|
|
13
7
|
export const AUDIT_USAGE = "Use audit [--person <name>] [--token <name>] [--source api|mcp] [--since <days>d] [--limit <n>] [--cursor <id>] [--json].";
|
|
14
|
-
/** The reader a run is: the machine's owner locally, else the remote caller with their role and projects. */
|
|
15
8
|
export function readerOf(store, remote) {
|
|
16
9
|
if (remote === undefined)
|
|
17
10
|
return OWNER_READER;
|
|
@@ -70,13 +63,11 @@ export function auditCommand(positional, flags, context) {
|
|
|
70
63
|
context.write(lines.join("\n"));
|
|
71
64
|
return EXIT.ok;
|
|
72
65
|
}
|
|
73
|
-
/** One line per action: outcome first, then who, token, source, what and where. */
|
|
74
66
|
export function auditLine(action) {
|
|
75
67
|
const outcome = action.outcome === "ok" ? "ok" : `${action.outcome}${action.reason === null ? "" : ` (${action.reason})`}`;
|
|
76
68
|
const where = action.repo === null ? "" : ` ${basename(action.repo)}`;
|
|
77
69
|
return `${action.at.slice(0, 16).replace("T", " ")} ${outcome} ${action.person} ${action.token ?? "unknown token"} ${action.source} ${action.name}${where}`;
|
|
78
70
|
}
|
|
79
|
-
/** The filters again for the next page, quoted when they need it. */
|
|
80
71
|
function flagsAgain(flags) {
|
|
81
72
|
const quote = (one) => /^[A-Za-z0-9_./:@-]+$/.test(one) ? one : `'${one.replaceAll("'", "'\\''")}'`;
|
|
82
73
|
return ["person", "token", "token-name", "source", "since", "limit"].flatMap(name => {
|
package/dist/backend.js
CHANGED
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The contract every work graph is driven through, and the guard around it.
|
|
3
|
-
*
|
|
4
|
-
* §4's interface, with one deliberate omission: `hold` is not here. A hold is
|
|
5
|
-
* an operational pause — "not tonight, we are waiting on a person" — and not a
|
|
6
|
-
* claim about how the work is structured, so it lives in the overlay where it
|
|
7
|
-
* costs nobody else's tracker anything. Dependency edges are the opposite, and
|
|
8
|
-
* that asymmetry is the whole rule:
|
|
9
|
-
*
|
|
10
|
-
* **Scheduling edges are never emulated.** A backend with no native edges is
|
|
11
|
-
* *ineligible for dependency scheduling*, not repaired with invisible ones. A
|
|
12
|
-
* private graph is shadow data: teammates and other tools read a task as ready
|
|
13
|
-
* while our overlay privately calls it blocked, and the divergence becomes
|
|
14
|
-
* migration-critical the moment anybody wants out. So `addEdge` on a backend
|
|
15
|
-
* whose edges are unverified refuses, and says why, rather than storing
|
|
16
|
-
* something only we can see.
|
|
17
|
-
*
|
|
18
|
-
* Every method answers with an outcome rather than throwing. These call other
|
|
19
|
-
* people's binaries over other people's networks; failure is a normal Tuesday,
|
|
20
|
-
* and one unreachable backend must not end a run covering four others.
|
|
21
|
-
*/
|
|
22
1
|
import { BUILT_IN } from "./store.js";
|
|
23
2
|
import { permits } from "./grant.js";
|
|
24
3
|
export const ok = (value) => ({ ok: true, value });
|
|
@@ -27,14 +6,9 @@ export const no = (reason, message) => ({
|
|
|
27
6
|
reason,
|
|
28
7
|
message,
|
|
29
8
|
});
|
|
30
|
-
/**
|
|
31
|
-
* The refusal a backend without confirmed edges gives, spelled once so every
|
|
32
|
-
* adapter says the same thing and nobody is tempted to soften it.
|
|
33
|
-
*/
|
|
34
9
|
export function edgesNotEmulated(name) {
|
|
35
10
|
return no("unsupported", `${name} dependency edges are not confirmed here, and Toolroll does not invent them — a graph only we can see would read as ready to everyone else`);
|
|
36
11
|
}
|
|
37
|
-
/** Turn a failed command into words, without pretending to know more than we do. */
|
|
38
12
|
export function describeFailure(result) {
|
|
39
13
|
if (result.notFound)
|
|
40
14
|
return "the command is not installed";
|
|
@@ -51,17 +25,6 @@ export function parseJson(text) {
|
|
|
51
25
|
return null;
|
|
52
26
|
}
|
|
53
27
|
}
|
|
54
|
-
/**
|
|
55
|
-
* The built-in store, behind the same contract as everyone else.
|
|
56
|
-
*
|
|
57
|
-
* Worth the wrapper even though it is ours: the scheduler should not be able
|
|
58
|
-
* to tell which backend it is driving, and the day this is the only one with a
|
|
59
|
-
* privileged shortcut is the day the interface stops being tested.
|
|
60
|
-
*
|
|
61
|
-
* It is the only backend here whose edges are both native and ours to write,
|
|
62
|
-
* so it is also the only one where dependency scheduling is unconditionally
|
|
63
|
-
* available.
|
|
64
|
-
*/
|
|
65
28
|
export function builtIn(store, now = () => new Date()) {
|
|
66
29
|
return {
|
|
67
30
|
name: BUILT_IN,
|
|
@@ -78,9 +41,6 @@ export function builtIn(store, now = () => new Date()) {
|
|
|
78
41
|
return ok(task === null ? null : { id: task.id, title: task.title, state: task.state });
|
|
79
42
|
},
|
|
80
43
|
async create(spec) {
|
|
81
|
-
// The id is derived from the title here rather than by the caller, so
|
|
82
|
-
// that every backend's `create` has the same shape: hand it a spec, get
|
|
83
|
-
// an id back.
|
|
84
44
|
const id = `${slug(spec.title)}-${now().toISOString().slice(11, 19).replace(/:/g, "")}`;
|
|
85
45
|
if (store.getTask(id) !== null)
|
|
86
46
|
return no("rejected", `\`${id}\` already exists`);
|
|
@@ -114,18 +74,6 @@ function slug(title) {
|
|
|
114
74
|
.join("-");
|
|
115
75
|
return words === "" ? "task" : words;
|
|
116
76
|
}
|
|
117
|
-
/**
|
|
118
|
-
* Wrap a backend so nothing can write through it without a grant.
|
|
119
|
-
*
|
|
120
|
-
* Applied once, at construction, rather than checked inside each adapter — an
|
|
121
|
-
* authorization that every implementation has to remember to call is one that
|
|
122
|
-
* a future adapter will forget, and it will forget it silently. Here the only
|
|
123
|
-
* way to reach a mutating method is through the wrapper, and adding a backend
|
|
124
|
-
* later inherits the check by construction.
|
|
125
|
-
*
|
|
126
|
-
* Reads pass straight through. Discovery has always been read-only and needs
|
|
127
|
-
* no permission; it is writing to somebody else's tracker that requires one.
|
|
128
|
-
*/
|
|
129
77
|
export function guarded(backend, options) {
|
|
130
78
|
const { store, repo } = options;
|
|
131
79
|
const allowed = (mutation, id) => {
|
|
@@ -133,8 +81,6 @@ export function guarded(backend, options) {
|
|
|
133
81
|
repo,
|
|
134
82
|
backend: backend.name,
|
|
135
83
|
mutation,
|
|
136
|
-
// Read from the overlay, never from the caller. A task we have merely
|
|
137
|
-
// seen is `theirs` until something explicitly makes it ours.
|
|
138
84
|
origin: id === undefined ? "ours" : store.originOf(backend.name, id),
|
|
139
85
|
});
|
|
140
86
|
return verdict.ok ? null : no("denied", verdict.message);
|
|
@@ -145,15 +91,10 @@ export function guarded(backend, options) {
|
|
|
145
91
|
listReady: () => backend.listReady(),
|
|
146
92
|
get: id => backend.get(id),
|
|
147
93
|
async create(spec) {
|
|
148
|
-
// A task we are about to create is ours by definition; there is no id to
|
|
149
|
-
// ask the overlay about yet, and the selector cannot be what stops it.
|
|
150
94
|
const denied = allowed("create");
|
|
151
95
|
return denied ?? backend.create(spec);
|
|
152
96
|
},
|
|
153
97
|
async setState(id, state) {
|
|
154
|
-
// Closing somebody's issue and moving our own task along are different
|
|
155
|
-
// acts to a person, however alike they look to a database, so they check
|
|
156
|
-
// against different mutation classes.
|
|
157
98
|
const terminal = state === "done" || state === "failed" || state === "cancelled";
|
|
158
99
|
const denied = allowed(terminal ? "close" : "transition", id);
|
|
159
100
|
return denied ?? backend.setState(id, state);
|
package/dist/backup-ui.js
CHANGED
|
@@ -1,25 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Settings → Backups (sprint 8): how the last backup went and one button to
|
|
3
|
-
* back up now, then the schedule, past backups and how to restore. Built from
|
|
4
|
-
* the revamp kit (src/design/KIT.md); the Settings frame adds the title.
|
|
5
|
-
*/
|
|
6
1
|
import { html, joinHtml, postForm } from "./html.js";
|
|
7
2
|
import { bytesWords } from "./storage.js";
|
|
8
3
|
import { whenUtc } from "./when-html.js";
|
|
9
4
|
import { btn, chip, codeLine, formRow, infoLine, input, note, notice, select, settingsRecord, settingsSection } from "./server/kit.js";
|
|
10
5
|
import { kitSectionForm } from "./settings-kit.js";
|
|
11
|
-
/** The schedules on offer and the most copies kept. Here rather than in backup.ts so the page never loads `node:sqlite`. */
|
|
12
6
|
export const BACKUP_EVERY_HOURS = [1, 6, 12, 24];
|
|
13
|
-
/** The continuous copy's choices, in minutes (live-backup.ts LIVE_EVERY_MINUTES; here so the page never loads it). */
|
|
14
7
|
export const LIVE_EVERY = [1, 5, 15, 30];
|
|
15
8
|
export const MAX_KEEP = 100;
|
|
16
9
|
const when = (at) => whenUtc(at);
|
|
17
10
|
const whenWords = (at) => `${at.slice(0, 16).replace("T", " ")} UTC`;
|
|
18
11
|
const everyWords = (hours) => hours === 1 ? "Every hour" : hours === 24 ? "Every day" : `Every ${hours} hours`;
|
|
19
12
|
const fileName = (path) => path.slice(path.lastIndexOf("/") + 1);
|
|
20
|
-
/** The page is kit pieces now; nothing of the old look is left. Kept as an export for the shared stylesheet. */
|
|
21
13
|
export const BACKUP_CSS = "";
|
|
22
|
-
/** The continuous copy in one line: its latest verified copy, or why there is none. */
|
|
23
14
|
function liveLine(view) {
|
|
24
15
|
const live = view.live;
|
|
25
16
|
if (live === undefined)
|
|
@@ -32,7 +23,6 @@ function liveLine(view) {
|
|
|
32
23
|
return note("The first continuous copy is made within a few minutes of Toolroll starting.");
|
|
33
24
|
return html `<p class="k-note" data-live-copy>Continuous copy checked ${when(live.state.latest.madeAt)}, every ${live.state.settings.everyMinutes === 1 ? "minute" : `${live.state.settings.everyMinutes} minutes`}.</p>`;
|
|
34
25
|
}
|
|
35
|
-
/** The last backup as one record: what happened, the next one, and Back up now. */
|
|
36
26
|
function state(view) {
|
|
37
27
|
const last = view.runs[0];
|
|
38
28
|
const good = view.runs.find(one => one.ok === true);
|
|
@@ -52,7 +42,6 @@ function state(view) {
|
|
|
52
42
|
return settingsRecord({ title: html `Backed up ${when(last.startedAt)}`, attrs: { "data-backup-state": "ok" }, action: now,
|
|
53
43
|
sub: `${last.bytes === null ? "" : `${bytesWords(last.bytes)} · `}${next}` });
|
|
54
44
|
}
|
|
55
|
-
/** One past backup: when, how it went, its file, and whether it was by hand. */
|
|
56
45
|
function runRow(run) {
|
|
57
46
|
const how = run.trigger === "manual" ? "By hand" : "Scheduled";
|
|
58
47
|
const attrs = { "data-backup-run": run.id };
|
|
@@ -92,7 +81,6 @@ export function backupHtml(view, said) {
|
|
|
92
81
|
]) });
|
|
93
82
|
return joinHtml([now, schedule, history, restore]);
|
|
94
83
|
}
|
|
95
|
-
/** The continuous copy's two choices, beside the schedule's: how often, and where (blank: beside the database). */
|
|
96
84
|
function liveFields(view) {
|
|
97
85
|
const live = view.live;
|
|
98
86
|
if (live === undefined)
|
package/dist/backup.js
CHANGED
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Backups (sprint 8): the database, copied on a schedule with SQLite's online
|
|
3
|
-
* backup (one read snapshot, so the console and workers keep writing), into
|
|
4
|
-
* a folder the operator chooses (by default `backups` beside the database),
|
|
5
|
-
* keeping the newest N. Each backup is checked (it opens, it passes SQLite's
|
|
6
|
-
* quick check) before it counts, and each one's outcome is kept.
|
|
7
|
-
*
|
|
8
|
-
* Only the database is copied. Provider keys, sign-in files and other secrets
|
|
9
|
-
* live in their own files beside it and are never part of a backup.
|
|
10
|
-
*
|
|
11
|
-
* `restore` puts a backup back, only with Toolroll stopped: it checks
|
|
12
|
-
* the backup's schema version and walks its ledger chain first, keeps the
|
|
13
|
-
* current database as a copy, and with --dry-run changes nothing.
|
|
14
|
-
*/
|
|
15
1
|
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
16
2
|
import { chmodSync, closeSync, constants, copyFileSync, existsSync, fsyncSync, lstatSync, mkdirSync, openSync, readdirSync, realpathSync, renameSync, rmSync, statSync } from "node:fs";
|
|
17
3
|
import { hostname } from "node:os";
|
|
@@ -21,23 +7,15 @@ import { BACKUP_EVERY_HOURS, MAX_KEEP } from "./backup-ui.js";
|
|
|
21
7
|
import { verifyLedgerChain } from "./ledger-chain.js";
|
|
22
8
|
import { DEFAULT_LIVENESS_MS } from "./runner.js";
|
|
23
9
|
import { openStore, readSchemaVersion, SCHEMA_VERSION } from "./store.js";
|
|
24
|
-
|
|
25
|
-
* before the tag was added have none. Retention only ever removes files named like this. */
|
|
26
|
-
const BACKUP_NAME = /^standing-orders-(?:([0-9a-f]{8})-)?(\d{4}-\d{2}-\d{2}-\d{6})(?:-(\d+))?\.db$/;
|
|
27
|
-
/** The oldest schema whose ledger has a hash chain to verify. */
|
|
10
|
+
const BACKUP_NAME = /^(?:toolroll|standing-orders)-(?:([0-9a-f]{8})-)?(\d{4}-\d{2}-\d{2}-\d{6})(?:-(\d+))?\.db$/;
|
|
28
11
|
export const OLDEST_RESTORABLE = 103;
|
|
29
12
|
export { BACKUP_EVERY_HOURS, MAX_KEEP };
|
|
30
|
-
/** How long the console's lease lasts without a renewal: a console that stopped holds it no longer than this. */
|
|
31
13
|
const LEASE_MS = 3 * 60_000;
|
|
32
|
-
/** A worker that heartbeat this recently is taken to be running (runner.ts DEFAULT_LIVENESS_MS). */
|
|
33
14
|
const RUNNER_FRESH_MS = DEFAULT_LIVENESS_MS;
|
|
34
15
|
export const defaultBackupFolder = (databaseFile) => join(dirname(databaseFile), "backups");
|
|
35
16
|
export const backupFolderOf = (settings, databaseFile) => settings.folder ?? defaultBackupFolder(databaseFile);
|
|
36
|
-
/** 2026-09-28T05:34:39.123Z → 2026-09-28-053439 (UTC). */
|
|
37
17
|
const stampOf = (now) => now.toISOString().replace(/\.\d+Z$/, "").replace("T", "-").replace(/:/g, "");
|
|
38
18
|
const message = (error) => error instanceof Error ? error.message : String(error);
|
|
39
|
-
/** Loaded on first use, as store.ts does, so modules that only import this one (the console, and tests that load it
|
|
40
|
-
* in a browser-like environment) never need `node:sqlite` itself. */
|
|
41
19
|
function sqlite() {
|
|
42
20
|
return createRequire(import.meta.url)("node:sqlite");
|
|
43
21
|
}
|
|
@@ -46,11 +24,8 @@ function connect(file) {
|
|
|
46
24
|
db.exec("PRAGMA busy_timeout = 5000");
|
|
47
25
|
return db;
|
|
48
26
|
}
|
|
49
|
-
/** Copy `sourceFile` into `target` with the online backup (all pages in one step: one consistent snapshot, and
|
|
50
|
-
* writers carry on meanwhile), then make the copy one self-contained file and check it. */
|
|
51
27
|
export async function onlineCopy(sourceFile, target) {
|
|
52
28
|
const source = connect(sourceFile);
|
|
53
|
-
// Every page in one step (SQLite's -1 means that too, but newer Node builds take only a positive rate).
|
|
54
29
|
try {
|
|
55
30
|
await sqlite().backup(source, target, { rate: 1_000_000 });
|
|
56
31
|
}
|
|
@@ -80,33 +55,28 @@ export async function onlineCopy(sourceFile, target) {
|
|
|
80
55
|
}
|
|
81
56
|
return { bytes: statSync(target).size, schemaVersion };
|
|
82
57
|
}
|
|
83
|
-
/** A folder the operator may choose: a full path, outside every project and build checkout (agents work there). */
|
|
84
58
|
export function checkBackupFolder(path, forbidden) {
|
|
85
59
|
const folder = path.trim();
|
|
86
60
|
if (!isAbsolute(folder) || folder.length > 500 || /[\u0000-\u001f]/.test(folder))
|
|
87
|
-
return "The folder is a full path, like /Volumes/Backup/
|
|
61
|
+
return "The folder is a full path, like /Volumes/Backup/toolroll.";
|
|
88
62
|
const at = resolve(folder);
|
|
89
63
|
const inside = (one, parent) => one === parent || one.startsWith(`${parent}/`);
|
|
90
64
|
if (forbidden.some(one => inside(at, resolve(one)) || inside(resolve(one), at)))
|
|
91
65
|
return "Choose a folder outside your projects and build checkouts: agents work there.";
|
|
92
66
|
return null;
|
|
93
67
|
}
|
|
94
|
-
/** A short tag for one database, from its full path, so databases that share a backup folder tell their backups apart. */
|
|
95
68
|
export function databaseTag(databaseFile) {
|
|
96
69
|
let path = resolve(databaseFile);
|
|
97
70
|
try {
|
|
98
71
|
path = realpathSync(path);
|
|
99
72
|
}
|
|
100
|
-
catch {
|
|
73
|
+
catch { }
|
|
101
74
|
return createHash("sha256").update(path).digest("hex").slice(0, 8);
|
|
102
75
|
}
|
|
103
76
|
export function backupOwner(store, databaseFile) {
|
|
104
77
|
const made = store.handle.prepare("SELECT file FROM backup_run WHERE ok = 1 AND file IS NOT NULL").all().map(row => resolve(String(row["file"])));
|
|
105
78
|
return { tag: databaseTag(databaseFile), made: new Set(made) };
|
|
106
79
|
}
|
|
107
|
-
/** This database's backups in a folder, made on a schedule or by `backup now`, newest first. A backup tagged for
|
|
108
|
-
* another database is never this one's. An untagged one (made before backups were tagged) is this one's only when its
|
|
109
|
-
* own history records making it: pruning deletes, so what can't be proved ours is left alone. */
|
|
110
80
|
export function backupFiles(folder, owner) {
|
|
111
81
|
let names;
|
|
112
82
|
try {
|
|
@@ -130,7 +100,6 @@ export function backupFiles(folder, owner) {
|
|
|
130
100
|
}
|
|
131
101
|
});
|
|
132
102
|
}
|
|
133
|
-
/** Remove all but this database's newest `keep` backups. Never touches another database's, or anything else in the folder. */
|
|
134
103
|
export function pruneBackups(folder, keep, owner) {
|
|
135
104
|
let removed = 0;
|
|
136
105
|
for (const one of backupFiles(folder, owner).slice(Math.max(1, keep))) {
|
|
@@ -138,11 +107,10 @@ export function pruneBackups(folder, keep, owner) {
|
|
|
138
107
|
rmSync(one.path);
|
|
139
108
|
removed++;
|
|
140
109
|
}
|
|
141
|
-
catch {
|
|
110
|
+
catch { }
|
|
142
111
|
}
|
|
143
112
|
return removed;
|
|
144
113
|
}
|
|
145
|
-
/** A failure in plain words: the common file-system ones by name, anything else as SQLite or Node said it. */
|
|
146
114
|
function failureWords(error, folder) {
|
|
147
115
|
const code = error?.code;
|
|
148
116
|
if (code === "EACCES" || code === "EPERM" || code === "EROFS")
|
|
@@ -153,7 +121,6 @@ function failureWords(error, folder) {
|
|
|
153
121
|
return `${folder} isn't a folder.`;
|
|
154
122
|
return message(error);
|
|
155
123
|
}
|
|
156
|
-
/** Back the database up now, keep the newest N, and record how it went. */
|
|
157
124
|
export async function backupNow(store, databaseFile, trigger, clock = () => new Date()) {
|
|
158
125
|
const settings = store.backupSettings();
|
|
159
126
|
const folder = backupFolderOf(settings, databaseFile);
|
|
@@ -162,11 +129,9 @@ export async function backupNow(store, databaseFile, trigger, clock = () => new
|
|
|
162
129
|
try {
|
|
163
130
|
mkdirSync(folder, { recursive: true, mode: 0o700 });
|
|
164
131
|
const stamp = `${databaseTag(databaseFile)}-${stampOf(clock())}`;
|
|
165
|
-
let name = `
|
|
132
|
+
let name = `toolroll-${stamp}.db`;
|
|
166
133
|
for (let n = 2; existsSync(join(folder, name)); n++)
|
|
167
|
-
name = `
|
|
168
|
-
// The whole chain walked and its head checkpointed first, so the copy carries the checkpoint. A broken chain gets
|
|
169
|
-
// none (the walk raises the console's chain alarm, as any whole walk does); the backup goes ahead either way.
|
|
134
|
+
name = `toolroll-${stamp}-${n}.db`;
|
|
170
135
|
let checkpoint;
|
|
171
136
|
try {
|
|
172
137
|
checkpoint = store.ledgerCheckpoint("system", clock(), {});
|
|
@@ -196,7 +161,6 @@ export async function backupNow(store, databaseFile, trigger, clock = () => new
|
|
|
196
161
|
return { ok: false, id, error: words };
|
|
197
162
|
}
|
|
198
163
|
}
|
|
199
|
-
/** Whether a scheduled backup is due: the last good one is older than the schedule, and the last try over an hour ago. */
|
|
200
164
|
export function backupDue(store, now) {
|
|
201
165
|
const settings = store.backupSettings();
|
|
202
166
|
if (!settings.enabled)
|
|
@@ -211,7 +175,6 @@ export function backupDue(store, now) {
|
|
|
211
175
|
return false;
|
|
212
176
|
return last === undefined || now.getTime() - Date.parse(last.startedAt) >= Math.min(every, 60 * 60_000);
|
|
213
177
|
}
|
|
214
|
-
/** One pass of the loop beside the console: renew the lease (a restore sees it), and back up when due. */
|
|
215
178
|
export async function backupPass(store, databaseFile, holder, clock = () => new Date()) {
|
|
216
179
|
const now = clock();
|
|
217
180
|
if (!store.holdBackupLease(holder, now, new Date(now.getTime() + LEASE_MS)))
|
|
@@ -220,7 +183,6 @@ export async function backupPass(store, databaseFile, holder, clock = () => new
|
|
|
220
183
|
return null;
|
|
221
184
|
return backupNow(store, databaseFile, "scheduled", clock);
|
|
222
185
|
}
|
|
223
|
-
/** The loop beside the console: a pass a minute. */
|
|
224
186
|
export function startBackups(store, databaseFile, everyMs = 60_000) {
|
|
225
187
|
const holder = `${hostname()}:${process.pid}:${randomUUID().slice(0, 8)}`;
|
|
226
188
|
let stopped = false, timer = null;
|
|
@@ -230,7 +192,7 @@ export function startBackups(store, databaseFile, everyMs = 60_000) {
|
|
|
230
192
|
try {
|
|
231
193
|
await backupPass(store, databaseFile, holder);
|
|
232
194
|
}
|
|
233
|
-
catch {
|
|
195
|
+
catch { }
|
|
234
196
|
if (!stopped) {
|
|
235
197
|
timer = setTimeout(() => void pass(), everyMs);
|
|
236
198
|
timer.unref?.();
|
|
@@ -245,10 +207,9 @@ export function startBackups(store, databaseFile, everyMs = 60_000) {
|
|
|
245
207
|
try {
|
|
246
208
|
store.releaseBackupLease(holder);
|
|
247
209
|
}
|
|
248
|
-
catch {
|
|
210
|
+
catch { }
|
|
249
211
|
};
|
|
250
212
|
}
|
|
251
|
-
/** What's running against the database now: the console (its backup lease), and workers (watch leases, runner heartbeats). */
|
|
252
213
|
export function runningNow(store, now) {
|
|
253
214
|
const running = [];
|
|
254
215
|
if (store.backupLease(now) !== null)
|
|
@@ -260,11 +221,6 @@ export function runningNow(store, now) {
|
|
|
260
221
|
running.push(runners.length === 0 ? "a worker" : `the worker ${runners.join(", ")}`);
|
|
261
222
|
return running;
|
|
262
223
|
}
|
|
263
|
-
/**
|
|
264
|
-
* Put a backup back in place of the database. Refuses while Toolroll is running, when the backup isn't a
|
|
265
|
-
* Toolroll database this build can read (its schema version), or when its ledger chain doesn't verify. The
|
|
266
|
-
* backup is copied beside the database first and every check runs on that copy, so what was checked is what goes in.
|
|
267
|
-
*/
|
|
268
224
|
export async function restoreDatabase(options) {
|
|
269
225
|
const { databaseFile, dryRun, now } = options;
|
|
270
226
|
const file = resolve(options.file);
|
|
@@ -281,7 +237,6 @@ export async function restoreDatabase(options) {
|
|
|
281
237
|
return refuse("not-found", `${file} isn't a plain file.`);
|
|
282
238
|
if (existsSync(databaseFile) && resolve(databaseFile) === file)
|
|
283
239
|
return refuse("same-file", "That's the database in use now, not a backup.");
|
|
284
|
-
// What's running, and where the copy of the current database goes, from the database as it is.
|
|
285
240
|
let folder;
|
|
286
241
|
{
|
|
287
242
|
const store = openStore(databaseFile);
|
|
@@ -338,8 +293,6 @@ export async function restoreDatabase(options) {
|
|
|
338
293
|
finally {
|
|
339
294
|
db.close();
|
|
340
295
|
}
|
|
341
|
-
// It must open as this build's database (every table it needs, every step up to this schema) before it may replace
|
|
342
|
-
// the live one: a sound file with the right version can still be missing what Toolroll reads.
|
|
343
296
|
if (report.refusals.length === 0) {
|
|
344
297
|
const probe = `${staged}.probe`;
|
|
345
298
|
try {
|
|
@@ -360,7 +313,6 @@ export async function restoreDatabase(options) {
|
|
|
360
313
|
report.ok = report.refusals.length === 0;
|
|
361
314
|
return report;
|
|
362
315
|
}
|
|
363
|
-
// Keep the database as it is now, checked like any backup, before anything replaces it.
|
|
364
316
|
mkdirSync(folder, { recursive: true, mode: 0o700 });
|
|
365
317
|
const saved = join(folder, `before-restore-${stampOf(now)}-${randomBytes(3).toString("hex")}.db`);
|
|
366
318
|
const partial = `${saved}.partial`;
|
|
@@ -373,7 +325,6 @@ export async function restoreDatabase(options) {
|
|
|
373
325
|
throw new Error(`the current database couldn't be saved first, so nothing was replaced (${message(error)})`);
|
|
374
326
|
}
|
|
375
327
|
report.savedAs = saved;
|
|
376
|
-
// Again, just before the swap: nothing may have started meanwhile.
|
|
377
328
|
const store = openStore(databaseFile);
|
|
378
329
|
try {
|
|
379
330
|
const running = runningNow(store, new Date());
|
|
@@ -383,7 +334,6 @@ export async function restoreDatabase(options) {
|
|
|
383
334
|
finally {
|
|
384
335
|
store.close();
|
|
385
336
|
}
|
|
386
|
-
// Fold the write-ahead log in and drop it, so nothing of the old database is left beside the new one.
|
|
387
337
|
const live = connect(databaseFile);
|
|
388
338
|
try {
|
|
389
339
|
live.exec("PRAGMA wal_checkpoint(TRUNCATE)");
|
|
@@ -396,8 +346,6 @@ export async function restoreDatabase(options) {
|
|
|
396
346
|
rmSync(`${databaseFile}${suffix}`, { force: true });
|
|
397
347
|
renameSync(staged, databaseFile);
|
|
398
348
|
keepStaged = true;
|
|
399
|
-
// The restored database brought up to this build, and the restore in its ledger. Should it still not open, the
|
|
400
|
-
// database it replaced goes back, and the restore says so.
|
|
401
349
|
let restored;
|
|
402
350
|
try {
|
|
403
351
|
restored = openStore(databaseFile);
|
|
@@ -425,7 +373,6 @@ export async function restoreDatabase(options) {
|
|
|
425
373
|
rmSync(staged, { force: true });
|
|
426
374
|
}
|
|
427
375
|
}
|
|
428
|
-
/** An error's first line, for a sentence. */
|
|
429
376
|
function firstLine(error) {
|
|
430
377
|
return (error instanceof Error ? error.message : String(error)).split("\n")[0].slice(0, 200);
|
|
431
378
|
}
|
package/dist/batch-checks.js
CHANGED
|
@@ -10,7 +10,6 @@ import { boundStreamHeadTail, redactSecretLines, scanForSecrets, storeEvidence }
|
|
|
10
10
|
import { repoClause } from "./check-levels.js";
|
|
11
11
|
import { projectBatchChecks } from "./batch-policy.js";
|
|
12
12
|
import { CHECKS_FINISHED, CHECKS_REQUESTED, CHECKS_STARTED, FOLLOW_UP_LOG, FOLLOW_UP_RECEIPT, followUpChecksOf, waitingRequestsOfAnyKind, } from "./result-follow-ups.js";
|
|
13
|
-
/** Queue a finished build's commit for a batch check, bound to the exact approved command. Once per commit. */
|
|
14
13
|
export function queueBatchCheck(store, input, now) {
|
|
15
14
|
return store.transact(() => {
|
|
16
15
|
const [where, params] = repoClause(input.repo);
|
|
@@ -24,7 +23,6 @@ export function queueBatchCheck(store, input, now) {
|
|
|
24
23
|
return id;
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
|
-
/** The batch pass: settle what can't be checked, then check every cohort that is ready. Returns how many results it settled. */
|
|
28
26
|
export async function runBatchChecks(store, root, deps = {}) {
|
|
29
27
|
const now = deps.now ?? (() => new Date());
|
|
30
28
|
const waiting = waitingRequestsOfAnyKind(store, now()).filter(one => one.why === "batch");
|
|
@@ -35,7 +33,6 @@ export async function runBatchChecks(store, root, deps = {}) {
|
|
|
35
33
|
const ref = run === null ? null : store.refById(run.taskRef);
|
|
36
34
|
if (run === null || ref === null || ref.repo === null)
|
|
37
35
|
continue;
|
|
38
|
-
// Not finished yet: the build is still sealing its result.
|
|
39
36
|
if (run.finishedAt === null)
|
|
40
37
|
continue;
|
|
41
38
|
const finish = (detail) => { claim(store, one, ref.repo, ref.externalId, 0, now()) && finishOne(store, one, ref.repo, ref.externalId, "not-run", detail, now()); settled++; };
|
|
@@ -48,7 +45,6 @@ export async function runBatchChecks(store, root, deps = {}) {
|
|
|
48
45
|
finish("The approved check changed while it waited. Run checks to check it now.");
|
|
49
46
|
continue;
|
|
50
47
|
}
|
|
51
|
-
// A cohort shares one check level: results whose own checks ran at different levels are checked apart (check-access.ts).
|
|
52
48
|
const key = `${ref.repo}\u0000${one.digest}\u0000${store.runCheckAccess(one.runId)}`;
|
|
53
49
|
cohorts.set(key, [...(cohorts.get(key) ?? []), { request: one.request, runId: one.runId, task: ref.externalId, head: one.head, base: one.base ?? null, at: one.at }]);
|
|
54
50
|
}
|
|
@@ -58,8 +54,6 @@ export async function runBatchChecks(store, root, deps = {}) {
|
|
|
58
54
|
const repo = key.split("\u0000")[0];
|
|
59
55
|
const policy = projectBatchChecks(store, repo);
|
|
60
56
|
const oldest = Math.min(...members.map(one => Date.parse(one.at)));
|
|
61
|
-
// A cohort closes when a second result joins it, or when its oldest has waited the window.
|
|
62
|
-
// Turned off while waiting: no point waiting any longer.
|
|
63
57
|
if (members.length < 2 && policy.on && now().getTime() - oldest < policy.windowMs)
|
|
64
58
|
continue;
|
|
65
59
|
if (policy.on)
|
|
@@ -83,35 +77,28 @@ function finishOne(store, one, repo, task, status, detail, at) {
|
|
|
83
77
|
store.bumpWake();
|
|
84
78
|
return true;
|
|
85
79
|
}
|
|
86
|
-
/** Check one cohort. Every member is claimed first; every claimed member ends with a sealed receipt. */
|
|
87
80
|
async function checkCohort(store, root, repo, cohort, deps) {
|
|
88
81
|
const now = deps.now ?? (() => new Date());
|
|
89
82
|
const runner = deps.runner ?? execRun;
|
|
90
|
-
// The project's repository and checkouts of builds' commits, both agent-writable: the hardened git (teardown-git.ts).
|
|
91
83
|
const git = deps.git ?? hardenedGit(execRun);
|
|
92
84
|
const command = store.liveVerifyCommand(repo);
|
|
93
85
|
if (command === null)
|
|
94
86
|
return 0;
|
|
95
87
|
const setup = store.liveWorktreeSetup(repo);
|
|
96
|
-
// The longest a full split could take: every subset checked once, with its setup.
|
|
97
88
|
const limit = (command.timeoutMs + (setup?.timeoutMs ?? 0) + 240_000) * Math.max(1, 2 * cohort.length - 1);
|
|
98
89
|
const members = cohort.filter(one => claim(store, one, repo, one.task, limit, now())).sort((a, b) => a.request - b.request);
|
|
99
90
|
if (members.length === 0)
|
|
100
91
|
return 0;
|
|
101
|
-
// The project base: the oldest member's recorded base, else its own parent.
|
|
102
92
|
const base = members[0].base;
|
|
103
93
|
const logs = new Map(members.map(one => [one.request, []]));
|
|
104
94
|
const attempts = new Map(members.map(one => [one.request, []]));
|
|
105
95
|
const bound = (text) => { const hits = scanForSecrets(text); return boundStreamHeadTail(hits.length > 0 ? redactSecretLines(text, hits) : text, 12 * 1024); };
|
|
106
96
|
const section = (label, shown, result) => `=== ${label} ===\n$ ${shown}\n(exit ${result.code}${result.notFound ? ", could not start" : ""}${result.timedOut ? ", timed out" : ""})\n\n--- stdout ---\n${bound(result.stdout)}\n\n--- stderr ---\n${bound(result.stderr)}`;
|
|
107
|
-
// How each command actually ran (check-access.ts), per result: only the commands it was part of count for its receipt.
|
|
108
97
|
const ranAtOf = new Map();
|
|
109
98
|
const note = (set, text) => { for (const one of set)
|
|
110
99
|
logs.get(one.request).push(text); };
|
|
111
100
|
const attempt = (set, tested, outcome) => { for (const one of set)
|
|
112
101
|
attempts.get(one.request).push({ members: set.map(m => m.task), tested, outcome }); };
|
|
113
|
-
/** One approved check of `set` in a temporary detached checkout: the merge of every member onto the base,
|
|
114
|
-
* or a single member's own commit. Never a real ref: the checkout is detached and always removed. */
|
|
115
102
|
const checkOnce = async (set) => {
|
|
116
103
|
const folder = mkdtempSync(join(deps.scratch ?? tmpdir(), "toolroll-batch-"));
|
|
117
104
|
const checkout = join(folder, "checkout");
|
|
@@ -125,7 +112,6 @@ async function checkCohort(store, root, repo, cohort, deps) {
|
|
|
125
112
|
}
|
|
126
113
|
if (set.length > 1) {
|
|
127
114
|
for (const one of set) {
|
|
128
|
-
// A local merge commit in the detached checkout only: no hooks, no signing, no branch.
|
|
129
115
|
const merged = await git("git", ["-C", checkout, "-c", "user.name=Toolroll batch check", "-c", "user.email=batch-check@toolroll.invalid", "-c", "commit.gpgsign=false",
|
|
130
116
|
"-c", "core.hooksPath=/dev/null", "merge", "--no-ff", "--no-edit", "--no-verify", "-m", `Batch check: ${one.task}`, one.head], { timeoutMs: 120_000 });
|
|
131
117
|
if (merged.code !== 0) {
|
|
@@ -141,10 +127,7 @@ async function checkCohort(store, root, repo, cohort, deps) {
|
|
|
141
127
|
return { conflict: false, tested: null, outcome: { ran: false, failure: "The batch commit couldn't be read." }, setupFailed: false };
|
|
142
128
|
if (deps.shouldStop?.() === true)
|
|
143
129
|
return { conflict: false, tested, outcome: { ran: false, failure: "Stopped before the check started." }, setupFailed: false };
|
|
144
|
-
// The approvals are re-read before every spawn: a revoked or changed command never runs.
|
|
145
130
|
const liveSetup = store.liveWorktreeSetup(repo);
|
|
146
|
-
// Worked out again right before each command (check-access.ts): a narrowing meanwhile applies to the next one. Each
|
|
147
|
-
// member is credited with exactly the commands of this set.
|
|
148
131
|
const setRan = (level) => { for (const one of set)
|
|
149
132
|
ranAtOf.set(one.request, [...(ranAtOf.get(one.request) ?? []), level]); };
|
|
150
133
|
if ((liveSetup?.digest ?? null) !== (setup?.digest ?? null))
|
|
@@ -213,20 +196,17 @@ async function checkCohort(store, root, repo, cohort, deps) {
|
|
|
213
196
|
return;
|
|
214
197
|
}
|
|
215
198
|
if ((outcome.ran && outcome.exitCode !== 0) || result.setupFailed) {
|
|
216
|
-
// Something in this batch breaks the check: split it until the result that breaks it is found.
|
|
217
199
|
attempt(set, tested, "failed");
|
|
218
200
|
const half = Math.ceil(set.length / 2);
|
|
219
201
|
await checkSet(set.slice(0, half), "split");
|
|
220
202
|
await checkSet(set.slice(half), "split");
|
|
221
203
|
return;
|
|
222
204
|
}
|
|
223
|
-
// It couldn't run at all (time, approvals, a stop): nothing is known about any member.
|
|
224
205
|
attempt(set, tested, "not-run");
|
|
225
206
|
for (const one of set)
|
|
226
207
|
seal(one, mode, [one], null, outcome);
|
|
227
208
|
};
|
|
228
209
|
await checkSet(members, "alone").catch(error => {
|
|
229
|
-
// An unexpected failure still ends every claimed member, visibly.
|
|
230
210
|
for (const one of members)
|
|
231
211
|
if (followUpChecksOf(store, one.runId, now()).find(f => f.request === one.request)?.state === "running")
|
|
232
212
|
finishOne(store, one, repo, one.task, "not-run", `The batch check failed to run: ${String(error).slice(0, 200)}`, now());
|
package/dist/batch-policy.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
/** Ledger action for the project setting. The newest entry wins; none means off. */
|
|
2
1
|
export const BATCH_POLICY_ACTION = "batch checks changed";
|
|
3
2
|
export const BATCH_WINDOW_MS = 10 * 60_000;
|
|
4
3
|
export const BATCH_HINT = "Results that finish within 10 minutes of each other share one full check.";
|
|
5
|
-
/** A project's batch setting. Off unless an approver turned it on. */
|
|
6
4
|
export function projectBatchChecks(store, repo) {
|
|
7
5
|
const row = store.handle.prepare("SELECT actor, at, outcome FROM action_ledger WHERE repo = ? AND task_id IS NULL AND action = ? ORDER BY id DESC LIMIT 1").get(repo, BATCH_POLICY_ACTION);
|
|
8
6
|
if (row === undefined || (row["outcome"] !== "on" && row["outcome"] !== "off"))
|
|
9
7
|
return { on: false, windowMs: BATCH_WINDOW_MS, setBy: null, at: null };
|
|
10
8
|
return { on: row["outcome"] === "on", windowMs: BATCH_WINDOW_MS, setBy: String(row["actor"]), at: String(row["at"]) };
|
|
11
9
|
}
|
|
12
|
-
/** An approver's act: turn batching on or off for one project. The ledger keeps before → after. */
|
|
13
10
|
export function setProjectBatchChecks(store, repo, on, by, now) {
|
|
14
11
|
const before = projectBatchChecks(store, repo);
|
|
15
12
|
if (before.on === on)
|
|
@@ -19,7 +16,6 @@ export function setProjectBatchChecks(store, repo, on, by, now) {
|
|
|
19
16
|
store.bumpWake();
|
|
20
17
|
return { changed: true, before: before.on };
|
|
21
18
|
}
|
|
22
|
-
/** The builder's question at its gate: does this Full check wait for a batch? */
|
|
23
19
|
export function batchesFullCheck(store, repo, level, command) {
|
|
24
20
|
return repo !== null && level === "full" && command !== null && command.repo === repo && projectBatchChecks(store, repo).on;
|
|
25
21
|
}
|