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
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/** Optional repository context. Callers admit project access; this module grants no authority.
|
|
2
|
-
* The index is disposable. Every read hashes the current bounded tracked source set;
|
|
3
|
-
* a missing/changed/unreadable index falls back to ordinary text search, never a task gate. */
|
|
4
1
|
import { checkoutGitSync, viewedGitSync } from './teardown-git.js';
|
|
5
2
|
import { createHash, randomUUID } from 'node:crypto';
|
|
6
3
|
import { existsSync, lstatSync, mkdirSync, readFileSync, realpathSync, renameSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
@@ -13,17 +10,11 @@ const CODE = /\.(?:[cm]?[jt]sx?)$/i;
|
|
|
13
10
|
const TEXT = /\.(?:[cm]?[jt]sx?|md|txt|css|html|json)$/i;
|
|
14
11
|
const MAX_NODES = 16_000, MAX_EDGES = 12_000;
|
|
15
12
|
const sha = (value) => createHash('sha256').update(value).digest('hex');
|
|
16
|
-
// Read-only and bounded, and always the hardened checkout git (a crew worktree is agent-written, and a page read or a
|
|
17
|
-
// lead's refresh reads it alike): no filter, hook, program or network, its config and info frozen in a view of the
|
|
18
|
-
// plane's own before they're inspected (teardown-git.ts checkoutGitSync).
|
|
19
|
-
// Bound to the project's record, so a pointer or commondir can't turn the read to another repository.
|
|
20
13
|
const git = (repo, args, binding) => checkoutGitSync(repo, args, { timeoutMs: 10_000, maxBuffer: 2_000_000, binding }).trimEnd();
|
|
21
14
|
const inside = (root, path) => { const r = relative(root, path); return r !== '..' && !r.startsWith('..' + sep) && !isAbsolute(r); };
|
|
22
|
-
/** Whether a tracked path is one the index reads, by its name alone. */
|
|
23
15
|
const skippedPath = (file) => !TEXT.test(file) || /(?:^|\/)(?:node_modules|vendor|dist|build|coverage|\.git)(?:\/|$)/.test(file);
|
|
24
16
|
const unsafePath = (file) => file.split('/').some(p => p === '..') || /[\x00-\x1f]/.test(file);
|
|
25
17
|
const unreadableText = (data, text) => data.length > MAX_FILE_BYTES || /[\x00-\x08\x0b\x0c\x0e-\x1f\x7f\ufffd]/u.test(text) || scanForSecrets(text).length > 0;
|
|
26
|
-
/** The working tree's tracked files, for a lead or a person looking at the project's own checkout. */
|
|
27
18
|
function workingTreeSources(repo, binding) {
|
|
28
19
|
const files = git(repo, ['ls-files', '-z', '--cached'], binding).split('\0').filter(Boolean).sort();
|
|
29
20
|
const sources = [];
|
|
@@ -38,7 +29,6 @@ function workingTreeSources(repo, binding) {
|
|
|
38
29
|
}
|
|
39
30
|
try {
|
|
40
31
|
const stat = lstatSync(path);
|
|
41
|
-
// Never follow even an internal symlink: the index is scoped to tracked ordinary files.
|
|
42
32
|
if (!stat.isFile() || stat.isSymbolicLink() || realpathSync(path) !== path) {
|
|
43
33
|
omitted++;
|
|
44
34
|
continue;
|
|
@@ -64,10 +54,6 @@ function workingTreeSources(repo, binding) {
|
|
|
64
54
|
}
|
|
65
55
|
return { sources, omitted, omittedBytes };
|
|
66
56
|
}
|
|
67
|
-
/**
|
|
68
|
-
* A crew's sources: the task base's tree and raw blobs, never the working tree an agent writes. A dirty tracked file,
|
|
69
|
-
* a symlink swapped in or a replace ref is not read; no filter runs on a raw blob.
|
|
70
|
-
*/
|
|
71
57
|
function baseCommitSources(repo, base, binding) {
|
|
72
58
|
const read = (args, maxBuffer, input) => {
|
|
73
59
|
const ran = viewedGitSync(repo, ['--no-replace-objects', ...args], { timeoutMs: 10_000, maxBuffer, binding, buffer: true, ...(input === undefined ? {} : { input }) });
|
|
@@ -125,8 +111,6 @@ function capture(request) {
|
|
|
125
111
|
const repo = realpathSync(request.repo);
|
|
126
112
|
if (repo !== resolve(request.repo))
|
|
127
113
|
throw Error('The project location changed.');
|
|
128
|
-
// The project's record, never the checkout's own pointer files: the admitted project, or the one a crew worktree
|
|
129
|
-
// belongs to. Only a person's local look at an unrecorded folder has none.
|
|
130
114
|
const binding = { repo: request.project ?? null };
|
|
131
115
|
if (realpathSync(git(repo, ['rev-parse', '--show-toplevel'], binding)) !== repo)
|
|
132
116
|
throw Error('Choose the project checkout root.');
|
|
@@ -150,7 +134,6 @@ function capture(request) {
|
|
|
150
134
|
}
|
|
151
135
|
function cacheFile(root, checkout) {
|
|
152
136
|
const absolute = resolve(root);
|
|
153
|
-
// Reject an existing symlink anywhere in the cache path, and caches inside the repo.
|
|
154
137
|
let parent = absolute;
|
|
155
138
|
while (!existsSync(parent) && dirname(parent) !== parent)
|
|
156
139
|
parent = dirname(parent);
|
|
@@ -190,7 +173,7 @@ function writeIndex(path, index) {
|
|
|
190
173
|
try {
|
|
191
174
|
unlinkSync(tmp);
|
|
192
175
|
}
|
|
193
|
-
catch {
|
|
176
|
+
catch { }
|
|
194
177
|
}
|
|
195
178
|
}
|
|
196
179
|
async function buildIndex(snapshot) {
|
|
@@ -348,8 +331,6 @@ function finishContext(request, result, snapshot, index) {
|
|
|
348
331
|
return boundContext(result, budget);
|
|
349
332
|
}
|
|
350
333
|
function boundContext(result, budget) {
|
|
351
|
-
// Metadata is part of the same budget: a Unicode query alone can exceed
|
|
352
|
-
// a small crew allocation even when every excerpt was already omitted.
|
|
353
334
|
if (Buffer.byteLength(JSON.stringify(result)) > budget) {
|
|
354
335
|
result.query = result.query.slice(0, 128);
|
|
355
336
|
result.warnings.push('Response size limited the selection and shortened the displayed query.');
|
|
@@ -362,7 +343,6 @@ function boundContext(result, budget) {
|
|
|
362
343
|
result.omissions.relationships++;
|
|
363
344
|
}
|
|
364
345
|
if (Buffer.byteLength(JSON.stringify(result)) > budget) {
|
|
365
|
-
// Never truncate path identity and then imply it still pins source.
|
|
366
346
|
result.checkout = null;
|
|
367
347
|
result.index = { engine: 'text-search', status: 'unavailable', generation: null, extractor: null };
|
|
368
348
|
result.warnings = ['Repository context identity exceeded the response limit. Continue with ordinary file reading.'];
|
|
@@ -370,8 +350,6 @@ function boundContext(result, budget) {
|
|
|
370
350
|
}
|
|
371
351
|
return result;
|
|
372
352
|
}
|
|
373
|
-
/** Synchronous, read-only capture for DB transaction and provider-admission callers.
|
|
374
|
-
* Call once and persist the returned selection; resume uses that capture, never fresh source. */
|
|
375
353
|
export function repositoryContextRead(request) {
|
|
376
354
|
const result = initialResult(request), snapshot = captureForResult(request, result);
|
|
377
355
|
if (!snapshot)
|
|
@@ -390,7 +368,6 @@ export function repositoryContextRead(request) {
|
|
|
390
368
|
}
|
|
391
369
|
return finishContext(request, result, snapshot, index);
|
|
392
370
|
}
|
|
393
|
-
/** Explicit refresh is the only cache-writing path. It never changes project/task records. */
|
|
394
371
|
export async function repositoryContext(request) {
|
|
395
372
|
if (!request.refresh)
|
|
396
373
|
return repositoryContextRead(request);
|
|
@@ -3,15 +3,11 @@ import { btn, disclose, formRow, input, note, select, settingsSection } from "./
|
|
|
3
3
|
import { kitSectionForm } from "./settings-kit.js";
|
|
4
4
|
import { effectiveLimits, limitOverrides, PER_DAY_MAX, PER_MINUTE_MAX, REQUEST_BUDGET_DEFAULTS } from "./request-budget.js";
|
|
5
5
|
const n = (value) => value.toLocaleString("en-US");
|
|
6
|
-
/** The old card look; the section is built from the kit now. Kept for chrome.ts, which still concatenates it. */
|
|
7
6
|
export const REQUEST_LIMITS_CSS = "";
|
|
8
|
-
/** "120 requests a minute · 10,000 a day" for one token's line. */
|
|
9
7
|
export function tokenLimitWords(db, token) {
|
|
10
8
|
const limits = effectiveLimits(db, token.id, token.access);
|
|
11
9
|
return `${n(limits.perMinute)} requests a minute · ${n(limits.perDay)} a day`;
|
|
12
10
|
}
|
|
13
|
-
/** The operator's section: everyone's tokens, or one token. Blank fields use the default shown. Saving takes the
|
|
14
|
-
* operator's password (or Passwordless, or a fresh identity-provider sign-in). */
|
|
15
11
|
export function requestLimitsHtml(db, tokens, now) {
|
|
16
12
|
const overrides = limitOverrides(db);
|
|
17
13
|
const everyone = overrides.get("*") ?? { readPerMinute: null, actPerMinute: null, perDay: null };
|
package/dist/request-budget.js
CHANGED
|
@@ -22,9 +22,7 @@ export const PER_DAY_MAX = 100_000;
|
|
|
22
22
|
export const TRACKED_TOKENS = 1024;
|
|
23
23
|
export const FLUSH_MS = 5_000;
|
|
24
24
|
const MINUTE = 60_000, DAY = 86_400_000;
|
|
25
|
-
/** The words for a 429, in one line. */
|
|
26
25
|
export const limitWords = (limit, retryAfter) => `Request limit reached (${limit === "per-day" ? "requests per day" : limit === "read-per-minute" ? "read requests per minute" : limit === "act-per-minute" ? "act requests per minute" : "requests per minute"}). Try again in ${retryAfter} second${retryAfter === 1 ? "" : "s"}.`;
|
|
27
|
-
/** A limit typed into a form: a whole number within bounds, "" for none, or a problem. */
|
|
28
26
|
export function parseLimit(raw, max) {
|
|
29
27
|
const text = raw.trim();
|
|
30
28
|
if (text === "")
|
|
@@ -48,7 +46,6 @@ function readOverride(db, target) {
|
|
|
48
46
|
return null;
|
|
49
47
|
return { readPerMinute: within(row["read_per_minute"], PER_MINUTE_MAX), actPerMinute: within(row["act_per_minute"], PER_MINUTE_MAX), perDay: within(row["per_day"], PER_DAY_MAX) };
|
|
50
48
|
}
|
|
51
|
-
/** Every override: the installation's under "*", each token's under its id. */
|
|
52
49
|
export function limitOverrides(db) {
|
|
53
50
|
const out = new Map();
|
|
54
51
|
for (const row of db.prepare("SELECT target FROM request_budget_limit ORDER BY target").all()) {
|
|
@@ -57,7 +54,6 @@ export function limitOverrides(db) {
|
|
|
57
54
|
}
|
|
58
55
|
return out;
|
|
59
56
|
}
|
|
60
|
-
/** Token override, then the installation's, then the default — per limit. */
|
|
61
57
|
export function effectiveLimits(db, tokenId, access) {
|
|
62
58
|
const token = readOverride(db, tokenId), installation = readOverride(db, "*");
|
|
63
59
|
const pick = (of, fallback) => (token === null ? null : of(token)) ?? (installation === null ? null : of(installation)) ?? fallback;
|
|
@@ -65,7 +61,6 @@ export function effectiveLimits(db, tokenId, access) {
|
|
|
65
61
|
const perMinute = pick(minute, REQUEST_BUDGET_DEFAULTS[access]), perDay = pick(one => one.perDay, REQUEST_BUDGET_DEFAULTS.day);
|
|
66
62
|
return { perMinute, perDay, overridden: perMinute !== REQUEST_BUDGET_DEFAULTS[access] || perDay !== REQUEST_BUDGET_DEFAULTS.day };
|
|
67
63
|
}
|
|
68
|
-
/** Set (or, all null, clear) an override, with the change in the policy ledger. The caller checks who may. */
|
|
69
64
|
export function setLimitOverride(store, target, next, by, now) {
|
|
70
65
|
const db = store.handle;
|
|
71
66
|
if (target !== "*" && !/^[0-9a-f]{12}$/.test(target))
|
|
@@ -102,7 +97,6 @@ function prune(usage, now) {
|
|
|
102
97
|
usage.dirty = true;
|
|
103
98
|
}
|
|
104
99
|
}
|
|
105
|
-
/** One per server: both routes share it, so a token's allowance is never doubled. */
|
|
106
100
|
export class RequestBudget {
|
|
107
101
|
store;
|
|
108
102
|
clock;
|
|
@@ -117,12 +111,7 @@ export class RequestBudget {
|
|
|
117
111
|
this.flushMs = options.flushMs ?? FLUSH_MS;
|
|
118
112
|
this.lastFlush = this.clock();
|
|
119
113
|
}
|
|
120
|
-
/** How many tokens are tracked in memory now (never more than `tracked`). */
|
|
121
114
|
get size() { return this.usage.size; }
|
|
122
|
-
/**
|
|
123
|
-
* Admit one request by an authenticated token, or say why not. Called once per HTTP request, before its body is
|
|
124
|
-
* read. Anything unreadable refuses with 503 and nothing runs.
|
|
125
|
-
*/
|
|
126
115
|
admit(tokenId, route) {
|
|
127
116
|
const result = this.check(tokenId, route);
|
|
128
117
|
if (!result.ok)
|
|
@@ -163,7 +152,6 @@ export class RequestBudget {
|
|
|
163
152
|
if (limit !== null) {
|
|
164
153
|
const retryAfter = Math.max(1, Math.ceil(wait / 1000));
|
|
165
154
|
const window = limit === "per-day" ? "day" : "minute";
|
|
166
|
-
// Once per exhausted window: the marker lasts until the window has room again, and is saved with the entry.
|
|
167
155
|
if (usage.noted[window] <= now) {
|
|
168
156
|
usage.noted[window] = now + retryAfter * 1000;
|
|
169
157
|
usage.dirty = true;
|
|
@@ -186,14 +174,12 @@ export class RequestBudget {
|
|
|
186
174
|
return { ok: false, status: 503 };
|
|
187
175
|
}
|
|
188
176
|
}
|
|
189
|
-
/** Save every changed entry. A server calls this on a timer and when it closes. */
|
|
190
177
|
flush() {
|
|
191
178
|
const now = this.clock();
|
|
192
179
|
this.lastFlush = now;
|
|
193
180
|
for (const [id, usage] of this.usage)
|
|
194
181
|
if (usage.dirty)
|
|
195
182
|
this.save(id, usage, now);
|
|
196
|
-
// Saved rows whose every count has expired are no use to anyone.
|
|
197
183
|
this.store.handle.prepare("DELETE FROM request_budget_usage WHERE saved_at <= ?").run(now - DAY - MINUTE);
|
|
198
184
|
}
|
|
199
185
|
save(id, usage, now) {
|
|
@@ -202,7 +188,6 @@ export class RequestBudget {
|
|
|
202
188
|
.run(id, JSON.stringify(usage.minute), JSON.stringify([...usage.day]), JSON.stringify(usage.noted), now);
|
|
203
189
|
usage.dirty = false;
|
|
204
190
|
}
|
|
205
|
-
/** The tracked entry (now the most recently used), from memory or as last saved; the least recently used is saved and let go. */
|
|
206
191
|
load(id, now) {
|
|
207
192
|
let usage = this.usage.get(id);
|
|
208
193
|
if (usage !== undefined) {
|
|
@@ -232,15 +217,7 @@ export class RequestBudget {
|
|
|
232
217
|
return usage;
|
|
233
218
|
}
|
|
234
219
|
}
|
|
235
|
-
/** Per-minute allowances for non-person-token identities and unauthenticated ingress. Password accounts get room
|
|
236
|
-
* for two-second follower polling plus ordinary commands; OAuth exchanges stay keyed by source address. */
|
|
237
220
|
export const SOURCE_BUDGET_DEFAULTS = Object.freeze({ password: 120, oauthToken: 30, coordinator: 120, teamsSource: 120, teamsTenant: 600 });
|
|
238
|
-
/**
|
|
239
|
-
* A sliding minute per source or proved account, with bounded in-memory LRU history. Expired entries are
|
|
240
|
-
* pruned first; at capacity the least recently used entry is evicted so new callers are never globally locked out.
|
|
241
|
-
* Unverified account names must never be keys. Person API tokens use the persisted RequestBudget above. An address
|
|
242
|
-
* key counts by sourceKey (a native IPv6 caller by its /64). Verified identities must explicitly use exact keys.
|
|
243
|
-
*/
|
|
244
221
|
export class SourceAdmission {
|
|
245
222
|
perMinute;
|
|
246
223
|
clock;
|
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Restart certification (plan acceptance 7): a BASELINE of the boot, the
|
|
3
|
-
* runtime, the installed service and the database's live custody, taken
|
|
4
|
-
* before a login or reboot; and a VERIFICATION afterwards against the same
|
|
5
|
-
* database — boot identity as the OS reports it, service liveness by a
|
|
6
|
-
* fresh heartbeat, recovery of what the old boot left pending, task
|
|
7
|
-
* completion — without printing a secret and without rebooting anything.
|
|
8
|
-
*
|
|
9
|
-
* The precise limits, written into every baseline so nobody reads more
|
|
10
|
-
* into a pass than it proves:
|
|
11
|
-
* - macOS LaunchAgents resume at USER LOGIN after a reboot, not before
|
|
12
|
-
* FileVault unlock / login; a machine that sits at the login window
|
|
13
|
-
* runs nothing.
|
|
14
|
-
* - Linux user services depend on a login session or `loginctl
|
|
15
|
-
* enable-linger`; without linger the user manager stops at logout.
|
|
16
|
-
* - The Windows Task Scheduler logon trigger is a LOGON trigger, not a
|
|
17
|
-
* boot service.
|
|
18
|
-
* - This tool never reboots, logs out, or restarts a service itself. A
|
|
19
|
-
* physical reboot that has not happened is not claimed: `bootChanged`
|
|
20
|
-
* is the OS's own word, and `unknown` stays unknown.
|
|
21
|
-
*/
|
|
22
1
|
import { hostname } from "node:os";
|
|
23
2
|
import { createHash, randomUUID } from "node:crypto";
|
|
24
3
|
import { dirname, join } from "node:path";
|
|
@@ -61,7 +40,6 @@ export function restartRuntimeDigest(executable = process.execPath, root = dirna
|
|
|
61
40
|
hash.update(name).update(readFileSync(join(root, name)));
|
|
62
41
|
return hash.digest("hex");
|
|
63
42
|
}
|
|
64
|
-
/** Everything a person needs to compare later, none of what they must not see. */
|
|
65
43
|
export async function recordRestartBaseline(inputs) {
|
|
66
44
|
const { store } = inputs;
|
|
67
45
|
const now = inputs.now ?? new Date();
|
|
@@ -107,14 +85,6 @@ function readPackageVersion() {
|
|
|
107
85
|
return null;
|
|
108
86
|
}
|
|
109
87
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Compare now against the baseline. Recovery is judged by the SAME rules
|
|
112
|
-
* the controller uses (stopQuiescenceProblem, settleQuiescentStops): a
|
|
113
|
-
* stop the old boot left pending settles only when its witnesses are
|
|
114
|
-
* proven gone — by the verified boot change, or by the probes — and a
|
|
115
|
-
* stop that still cannot settle is reported with the exact reason, never
|
|
116
|
-
* forced.
|
|
117
|
-
*/
|
|
118
88
|
export async function verifyRestartRecovery(inputs) {
|
|
119
89
|
const { store, baseline } = inputs;
|
|
120
90
|
const expectation = inputs.expect ?? "either";
|
|
@@ -123,8 +93,6 @@ export async function verifyRestartRecovery(inputs) {
|
|
|
123
93
|
const current = await recordRestartBaseline({ ...inputs, ...(baseline.runnerName ? { runnerName: baseline.runnerName } : {}), completionTasks: baseline.completionTasks ?? [], boot: identity });
|
|
124
94
|
const sameDatabase = baseline.version === 2 && baseline.database.identity === current.database.identity;
|
|
125
95
|
checks.push({ name: "database", ok: sameDatabase, detail: sameDatabase ? "same database file identity" : "database identity differs or baseline predates identity verification; no recovery mutations performed" });
|
|
126
|
-
// 1. Boot identity, as the OS reports it.
|
|
127
|
-
// This machine under any of its own names (machine-identity.ts): a reboot onto another network can move the hostname.
|
|
128
96
|
const sameHost = sameMachineHost(baseline.host, current.host);
|
|
129
97
|
const bootChanged = !sameHost || baseline.boot.id === null || current.boot.id === null
|
|
130
98
|
? null
|
|
@@ -139,11 +107,9 @@ export async function verifyRestartRecovery(inputs) {
|
|
|
139
107
|
? `verified boot change ${baseline.boot.id} → ${current.boot.id}${expectation === "login" ? " — but a login without reboot was expected" : ""}`
|
|
140
108
|
: `same boot ${current.boot.id}${expectation === "reboot" ? " — the reboot has NOT happened" : ""}`,
|
|
141
109
|
});
|
|
142
|
-
// 2. Runtime identity.
|
|
143
110
|
const sameRuntime = baseline.runtime.digest === current.runtime.digest && baseline.runtime.execPath === current.runtime.execPath && baseline.runtime.nodeVersion === current.runtime.nodeVersion && baseline.runtime.packageVersion === current.runtime.packageVersion;
|
|
144
111
|
checks.push({ name: "runtime", ok: sameRuntime, detail: sameRuntime ? `same runtime node ${current.runtime.nodeVersion} at ${current.runtime.execPath}, package ${current.runtime.packageVersion ?? "?"}` : `runtime changed: ${baseline.runtime.nodeVersion}@${baseline.runtime.execPath} (${baseline.runtime.packageVersion ?? "?"}) → ${current.runtime.nodeVersion}@${current.runtime.execPath} (${current.runtime.packageVersion ?? "?"})` });
|
|
145
112
|
checks.push({ name: "schema", ok: current.database.schemaVersion === baseline.database.schemaVersion, detail: `schema v${baseline.database.schemaVersion} → v${current.database.schemaVersion}` });
|
|
146
|
-
// 3. Service liveness: loaded is not working; a working controller shows a running process AND a fresh heartbeat.
|
|
147
113
|
if (baseline.service !== null || current.service !== null) {
|
|
148
114
|
const service = current.service;
|
|
149
115
|
if (service === null)
|
|
@@ -165,7 +131,6 @@ export async function verifyRestartRecovery(inputs) {
|
|
|
165
131
|
? "no live runner is registered — the controller has not come back"
|
|
166
132
|
: `no runner has beaten since the baseline (${liveRunners.map(one => `${one.name}: ${one.heartbeatAt}${one.alive ? "" : " (stale)"}`).join(", ")}) — a loaded service is not a working controller`,
|
|
167
133
|
});
|
|
168
|
-
// 4. Recovery of what the old boot left pending.
|
|
169
134
|
if (sameDatabase && inputs.recover !== false)
|
|
170
135
|
store.settleQuiescentStops(inputs.now ?? new Date());
|
|
171
136
|
const remaining = baseline.database.pendingStops.map(stop => ({ run: stop.run, settled: store.stopOf(stop.run)?.settledAt != null, problem: store.stopQuiescenceProblem(stop.run) }));
|
|
@@ -198,7 +163,6 @@ export async function verifyRestartRecovery(inputs) {
|
|
|
198
163
|
? `${oldWitnesses.length} witness(es) of the previous boot are proven gone by boot identity`
|
|
199
164
|
: `${baseline.database.witnesses.length} open witness(es) at the baseline are judged by their probes, not by a boot change`,
|
|
200
165
|
});
|
|
201
|
-
// 5. Task completion since the baseline.
|
|
202
166
|
const stillRunning = current.database.runningTasks.filter(id => baseline.database.runningTasks.includes(id));
|
|
203
167
|
checks.push({
|
|
204
168
|
name: "tasks",
|
|
@@ -215,7 +179,6 @@ export async function verifyRestartRecovery(inputs) {
|
|
|
215
179
|
}
|
|
216
180
|
return { ok: checks.every(check => check.ok), bootChanged, expectation, checks, current, limits: RESTART_LIMITS };
|
|
217
181
|
}
|
|
218
|
-
/** The baseline and verification are meant to be printed; this keeps a secret from ever entering them. */
|
|
219
182
|
export function assertNoSecret(json, secrets) {
|
|
220
183
|
for (const secret of secrets) {
|
|
221
184
|
if (secret !== "" && json.includes(secret))
|
package/dist/result-actions.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import { verifyResultImage } from "./chat-evidence.js";
|
|
2
|
-
/** Shared result-to-revision action for the result form and chat.
|
|
3
|
-
* The caller authenticates; this service checks project access and the exact
|
|
4
|
-
* displayed note batch, then uses the existing atomic revision/approval boundary.
|
|
5
|
-
*/
|
|
6
2
|
import { createHash, randomBytes } from "node:crypto";
|
|
7
3
|
import { EVIDENCE_CAPS, readVerifiedArtifact, writeEvidenceFile } from "./evidence.js";
|
|
8
4
|
import { parseFeedbackImage, sameFeedbackImage, isRevisionFeedback, parseRevisionBatch, revisionSourceOf, commentSourceKey, REQUEST_TOKEN } from "./result-review.js";
|
|
@@ -10,7 +6,6 @@ import { validateNote, hasForbiddenControls } from "./decision.js";
|
|
|
10
6
|
import { TASK_TEXT_LIMITS, validateTaskText } from "./task-text.js";
|
|
11
7
|
import { modeFilingCoverage } from "./scope.js";
|
|
12
8
|
import { recordRevisionOrigin } from "./route-store.js";
|
|
13
|
-
/** Re-prove image custody and current result at each write. No file paths supplied by callers. */
|
|
14
9
|
export function feedbackImageProblem(store, root, runId, image) {
|
|
15
10
|
if (image == null)
|
|
16
11
|
return null;
|
|
@@ -29,8 +24,6 @@ export function feedbackImageProblem(store, root, runId, image) {
|
|
|
29
24
|
const verified = verifyResultImage(store, root, [repo], { taskId: task, ...image });
|
|
30
25
|
return verified.ok ? null : "This screenshot is unavailable or changed. Restore it or remove it from your feedback. Your draft is unchanged.";
|
|
31
26
|
}
|
|
32
|
-
/** One user action: add the typed change and seal exactly the displayed
|
|
33
|
-
* saved notes. A refusal rolls back the note; a replay returns the same task. */
|
|
34
27
|
export function requestResultChanges(store, evidenceRoot, input, now) {
|
|
35
28
|
try {
|
|
36
29
|
return store.transact(() => store.savepoint(() => {
|
|
@@ -67,8 +60,6 @@ export function requestResultChanges(store, evidenceRoot, input, now) {
|
|
|
67
60
|
const earlier = store.diffCommentBySourceKey(sourceKey);
|
|
68
61
|
if (earlier && (earlier.run !== run.id || earlier.path !== path || earlier.line !== line || earlier.note !== valid.note || !sameFeedbackImage(earlier.image, input.image)))
|
|
69
62
|
return fail(409, "This submission already saved different feedback. Reopen the result and try again.");
|
|
70
|
-
// An exact consumed replay only returns its existing revision. Every new
|
|
71
|
-
// use proves the image before insertion, so malformed targets refuse cleanly.
|
|
72
63
|
if (earlier?.consumedBy == null) {
|
|
73
64
|
const problem = feedbackImageProblem(store, evidenceRoot, run.id, input.image);
|
|
74
65
|
if (problem !== null)
|
|
@@ -110,11 +101,6 @@ export function createResultRevision(store, evidenceRoot, input, now) {
|
|
|
110
101
|
if (sourceFamily === null || sourceFamily.problem !== null)
|
|
111
102
|
return fail(409, "The revision history cannot be verified in this project.");
|
|
112
103
|
const repo = store.refById(found.taskRef)?.repo ?? null;
|
|
113
|
-
// THE DISPLAYED BATCH (repair 2026-09-14, finding 2): the form names
|
|
114
|
-
// the exact note ids its reader saw and the source terms it was
|
|
115
|
-
// rendered against. The seal binds to those ids and nothing else —
|
|
116
|
-
// "every live note at POST time" would let an old submission, a
|
|
117
|
-
// replay, or a second tab consume notes its reader never displayed.
|
|
118
104
|
const batchIds = parseRevisionBatch(input.batch);
|
|
119
105
|
const postedSource = input.source;
|
|
120
106
|
if (batchIds === null || postedSource === null || postedSource === "") {
|
|
@@ -126,9 +112,6 @@ export function createResultRevision(store, evidenceRoot, input, now) {
|
|
|
126
112
|
return fail(400, "this batch names notes that are not on this result — reload the result");
|
|
127
113
|
}
|
|
128
114
|
const batch = named;
|
|
129
|
-
// A replay must match the immutable brief's entire batch and source,
|
|
130
|
-
// not just a subset whose notes happen to name the same child. Read-only
|
|
131
|
-
// replay can return its original child even after the source is rescoped.
|
|
132
115
|
const replayChild = (notes) => {
|
|
133
116
|
const child = notes[0]?.consumedBy;
|
|
134
117
|
if (!child || notes.length !== batchIds.length || notes.some(one => one.consumedBy !== child))
|
|
@@ -150,9 +133,6 @@ export function createResultRevision(store, evidenceRoot, input, now) {
|
|
|
150
133
|
return null;
|
|
151
134
|
}
|
|
152
135
|
};
|
|
153
|
-
// A retry of an OLD request: every note it names is already sealed
|
|
154
|
-
// into one revision — that revision is the answer, and no note added
|
|
155
|
-
// since is touched. A batch partly sealed elsewhere is refused whole.
|
|
156
136
|
const consumers = new Set(batch.map(one => one.consumedBy).filter((one) => one !== null));
|
|
157
137
|
const replay = replayChild(batch);
|
|
158
138
|
if (replay !== null)
|
|
@@ -174,8 +154,6 @@ export function createResultRevision(store, evidenceRoot, input, now) {
|
|
|
174
154
|
return fail(409, problem);
|
|
175
155
|
}
|
|
176
156
|
const comments = batch;
|
|
177
|
-
// Keep the subject recognizable, including when revising a revision.
|
|
178
|
-
// Reserve the suffix before truncating, at whole grapheme boundaries.
|
|
179
157
|
const suffix = " — revision";
|
|
180
158
|
const subject = (store.getTask(sourceTaskId)?.title ?? "").trim().replace(/(?: — revision)+$/u, "").trim() || "Task";
|
|
181
159
|
let prefix = "";
|
|
@@ -194,10 +172,6 @@ export function createResultRevision(store, evidenceRoot, input, now) {
|
|
|
194
172
|
return fail(409, `the reviewed diff no longer verifies (${proven.problem}) — the batch cannot seal against it`);
|
|
195
173
|
}
|
|
196
174
|
}
|
|
197
|
-
// The brief is serialized and size-checked BEFORE anything is created
|
|
198
|
-
// (Codex M5-M8 audit, IV-3): a structured artifact must never pass
|
|
199
|
-
// through byte truncation — truncated JSON is not a smaller brief,
|
|
200
|
-
// it is no brief wearing one's name.
|
|
201
175
|
const brief = {
|
|
202
176
|
schema: 1,
|
|
203
177
|
sourceTask: sourceTaskId,
|
|
@@ -219,29 +193,10 @@ export function createResultRevision(store, evidenceRoot, input, now) {
|
|
|
219
193
|
if (briefBytes.length > EVIDENCE_CAPS["revision-brief"]) {
|
|
220
194
|
return fail(400, "this batch is too large for one brief — seal it in parts");
|
|
221
195
|
}
|
|
222
|
-
// The file first, under a nonce name — a file whose seal fails is an
|
|
223
|
-
// orphan on disk, never authority. Then ONE transaction: task with
|
|
224
|
-
// the source scope's limits INHERITED (audit IV-2 — a revision that
|
|
225
|
-
// drops the exclusions is an approval screen telling a lie), the
|
|
226
|
-
// artifact row, the relation, and exactly this comment batch.
|
|
227
196
|
const briefName = `revision-brief-${randomBytes(6).toString("hex")}.json`;
|
|
228
197
|
const key = writeEvidenceFile(evidenceRoot, id, briefName, briefBytes);
|
|
229
|
-
// C1's revision arm: when the SEALER is the mode's signer and the
|
|
230
|
-
// mode auto-approves their filings, the revision task approves
|
|
231
|
-
// inside the same transaction, with mode provenance. Everything
|
|
232
|
-
// else about the seal is unchanged; without coverage, the revision
|
|
233
|
-
// keeps its own approval ceremony.
|
|
234
198
|
const sealed = store.transact(() => {
|
|
235
|
-
// Coverage first (cookie road only): its budget and escalated
|
|
236
|
-
// posture ride the FILING so the digest binds them (surfaces
|
|
237
|
-
// round 1, finding 2) — never a stamp after the fact.
|
|
238
199
|
const coverage = input.allowMode === true ? modeFilingCoverage(store, repo, input.actor, now) : null;
|
|
239
|
-
// ONE revision boundary (contract handoff task 2): the source's
|
|
240
|
-
// goal, exclusions, touches, rubric, risk, quality, posture,
|
|
241
|
-
// budget, overrides and pins are read from the SOURCE ROWS inside
|
|
242
|
-
// the seal, which re-proves the task/run/scope-digest binding and
|
|
243
|
-
// the brief's custody first — the scope read above only names the
|
|
244
|
-
// digest this batch was drafted against.
|
|
245
200
|
const result = store.sealRevision({
|
|
246
201
|
source: { task: sourceTaskId, run: id, scopeDigest: sourceScope?.digest ?? null },
|
|
247
202
|
brief: { evidenceRoot, key, sha256: createHash("sha256").update(briefBytes).digest("hex"), bytes: briefBytes.length, capture: "machine-authored revision brief (exit 0)" },
|
|
@@ -254,40 +209,23 @@ export function createResultRevision(store, evidenceRoot, input, now) {
|
|
|
254
209
|
requestedBy: input.actor,
|
|
255
210
|
}, now);
|
|
256
211
|
if (result.ok) {
|
|
257
|
-
// The unchanged legacy title above feeds the store's existing slug
|
|
258
|
-
// and collision handling. Set only this new row's display title,
|
|
259
|
-
// atomically with its seal; retries returned earlier, untouched.
|
|
260
212
|
store.raw().prepare("UPDATE task SET title = ? WHERE id = ?").run(title, result.id);
|
|
261
|
-
// Who it comes from, with its seal (route-store.ts: written once, on a revision only).
|
|
262
213
|
recordRevisionOrigin(store, result.id, input.origin);
|
|
263
214
|
}
|
|
264
|
-
// Planned afresh: the planner reads the copied terms and these notes, and a note asking for
|
|
265
|
-
// more than the old plan allows becomes an amendment the person approves before anything
|
|
266
|
-
// builds. Under a live mode the filing is approved at once instead, as every signer filing
|
|
267
|
-
// is; revisions never inherit the mode's planner authority (docs/AUTO_APPROVAL.md).
|
|
268
215
|
if (result.ok && coverage === null) {
|
|
269
216
|
const ref = store.lookupRef(result.id);
|
|
270
217
|
if (ref !== null)
|
|
271
218
|
store.requestPlan(ref.id, now);
|
|
272
219
|
}
|
|
273
220
|
if (result.ok && coverage !== null) {
|
|
274
|
-
// A scope whose profile could not resolve is unapprovable by the
|
|
275
|
-
// human road (approve() refuses) — the mode road refuses too.
|
|
276
221
|
const filedScope = store.getScope(result.id);
|
|
277
222
|
if (filedScope?.profileState === "resolved") {
|
|
278
|
-
// A false answer here is the coordinator quarantine (review
|
|
279
|
-
// finding 7): the revision stays honestly unapproved and the
|
|
280
|
-
// task page it redirects to says so in the quarantine words.
|
|
281
223
|
void store.sealScopeApproval(result.id, input.actor, now, {}, { kind: "mode", modeDigest: coverage.digest });
|
|
282
224
|
}
|
|
283
225
|
}
|
|
284
226
|
return result;
|
|
285
227
|
});
|
|
286
228
|
if (!sealed.ok) {
|
|
287
|
-
// Two sealers of one batch race on the consumption count; the
|
|
288
|
-
// loser is sent to the winner's revision — the one that consumed
|
|
289
|
-
// EXACTLY this batch, never merely the newest child of the run — so
|
|
290
|
-
// a double click or a two-tab submission lands on ONE revision.
|
|
291
229
|
if (sealed.reason === "duplicate" || sealed.reason === "comments-taken") {
|
|
292
230
|
const settled = store.allDiffComments(id).filter(one => batchIds.includes(one.id));
|
|
293
231
|
const takers = new Set(settled.map(one => one.consumedBy).filter((one) => one !== null));
|
package/dist/result-acts.js
CHANGED
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
/** The result page's acts (2026-10-02; docs/plans/plain-toolroll.md P1.3), chosen in one place: three verbs, each a
|
|
2
|
-
* relabel over the post it has always made. Exactly one ink act at most, the one that resolves the result's state,
|
|
3
|
-
* and never navigation; at most one outline act beside it. A result that can't be accepted says why in one line
|
|
4
|
-
* before them. Run checks stays in the Checks row, and a person's own checks in the Checks list: neither is an act here.
|
|
5
|
-
*
|
|
6
|
-
* everything met → Accept
|
|
7
|
-
* a "You check this one" unanswered → (the check itself, above), then Accept without your check
|
|
8
|
-
* a check you marked Not right → Send back, then Accept anyway
|
|
9
|
-
* checks queued or running → (Checks running, in its row), then Accept without checks
|
|
10
|
-
* checks didn't run, a check exists → (Run checks, in its row), then Accept without checks
|
|
11
|
-
* report and changes disagree,
|
|
12
|
-
* or the proof is refuted → Send back, then Accept (as allowed);
|
|
13
|
-
* never Accept as ink, even with no form here
|
|
14
|
-
* a Needs you form resolves it → that form (Retry: Build again; Check again)
|
|
15
|
-
* saved notes or a failing PR → Send back (the revision from the notes, or the repair of the PR)
|
|
16
|
-
* a failed build → Retry (its note starts with what to change); never Accept: a failed build
|
|
17
|
-
* is not a result to accept
|
|
18
|
-
* a failed task's delivered result → Retry, then Accept anyway (in outline, with a reason) where it may be
|
|
19
|
-
* accepted
|
|
20
|
-
*
|
|
21
|
-
* Accepting finishes the task in one request: the person's acceptance, when one is owed, and the completion
|
|
22
|
-
* together. This only decides which act is ink; the page recomputes it as the person answers each check. */
|
|
23
|
-
/** The words over the reason field an Accept of a refuted result requires. */
|
|
24
1
|
export const ACCEPT_NEEDS_REASON = "Accepting needs a reason";
|
|
25
2
|
export const FAILED_CHECK = /^the repository's approved verification command exited (-?[0-9]+)/;
|
|
26
3
|
export function evidenceProblemOf(verdict, reasons) {
|
|
@@ -30,13 +7,9 @@ export function evidenceProblemOf(verdict, reasons) {
|
|
|
30
7
|
return reasons.some(reason => FAILED_CHECK.test(reason)) ? "checks-failed" : "mismatched";
|
|
31
8
|
return "missing";
|
|
32
9
|
}
|
|
33
|
-
/** Why a result can't be accepted as it stands, in one plain line, or null
|
|
34
|
-
* when nothing refutes it (a person's acceptance settles it). The result page
|
|
35
|
-
* shows it before Request changes, its one ink act. */
|
|
36
10
|
export function cantAcceptYetOf(verdict, reasons, accepted) {
|
|
37
11
|
if (accepted || verdict !== "refuted")
|
|
38
12
|
return null;
|
|
39
|
-
// A mismatch is the status card's own headline; here only what accepting takes.
|
|
40
13
|
return evidenceProblemOf(verdict, reasons) === "checks-failed"
|
|
41
14
|
? "Can't accept yet: the project's check failed on these changes."
|
|
42
15
|
: ACCEPT_NEEDS_REASON;
|
|
@@ -46,10 +19,8 @@ export const RESULT_VERB = {
|
|
|
46
19
|
"request-changes": "Send back", revise: "Send back", "draft-repair": "Send back",
|
|
47
20
|
retry: "Retry", rebuild: "Retry",
|
|
48
21
|
"recheck-stopped": null,
|
|
49
|
-
// Never in the act row: Run checks lives in the Checks row, and a person's own checks in the Checks list.
|
|
50
22
|
"next-check": null, "checks-running": null, "run-checks": null,
|
|
51
23
|
};
|
|
52
|
-
/** What Send back does, said on its own confirm line: the rule is fixed by whether the result is already published. */
|
|
53
24
|
export const SEND_BACK_UNPUBLISHED = "Sends it back with your notes. The same task builds again once you approve the revision.";
|
|
54
25
|
export const SEND_BACK_PUBLISHED = "It's already published, so this files a fix as a new version for you to approve.";
|
|
55
26
|
export function resultActsOf(facts) {
|
|
@@ -61,18 +32,14 @@ export function resultActsOf(facts) {
|
|
|
61
32
|
}
|
|
62
33
|
if (facts.need !== null)
|
|
63
34
|
return { primary: facts.need, secondary: request, line: null };
|
|
64
|
-
// Saved notes or a failing pull request: Send back is ink, and Accept the quiet other way.
|
|
65
35
|
if (facts.next !== null)
|
|
66
36
|
return { primary: facts.next, secondary: accept, line: null };
|
|
67
|
-
// Can't be accepted yet: Accept is never the ink act, even when the feedback form isn't here.
|
|
68
37
|
if (facts.blocked !== null)
|
|
69
38
|
return { primary: request, secondary: accept, line: facts.blocked };
|
|
70
|
-
// The person's own checks come first, in the Checks list above: nothing here is ink until each is answered.
|
|
71
39
|
if (accept !== null && (facts.unanswered ?? 0) > 0)
|
|
72
40
|
return { primary: null, secondary: accept, line: null };
|
|
73
41
|
if (accept !== null && (facts.notRight ?? 0) > 0)
|
|
74
42
|
return { primary: request, secondary: accept, line: null };
|
|
75
|
-
// Checks running, or not run: their row says so and offers Run checks; Accept waits in outline.
|
|
76
43
|
if (facts.checksRunning)
|
|
77
44
|
return { primary: null, secondary: accept ?? request, line: null };
|
|
78
45
|
if (facts.accept === null)
|
|
@@ -91,7 +58,6 @@ export function acceptWithChecksOf(base, checks) {
|
|
|
91
58
|
return { label: "Accept anyway", ready: false, why: `You marked ${named(checks.notRight)} not right.` };
|
|
92
59
|
return base;
|
|
93
60
|
}
|
|
94
|
-
/** The Requirements row as the person answers their checks: each Looks right is met, each answer leaves "You check". */
|
|
95
61
|
export function requirementsWordsOf(req, looked, notRight) {
|
|
96
62
|
const met = req.met + looked;
|
|
97
63
|
const yours = Math.max(0, req.yours - looked - notRight);
|
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import { readVerifiedArtifact } from "./evidence.js";
|
|
2
|
-
/** The ledger action a person's (or lead's) completion of a result writes. */
|
|
3
2
|
export const COMPLETION_ACTION = "assignment handoff checked";
|
|
4
|
-
/** The actor of an automatic completion: the result's work already landed (landed-cleanup.ts). Its ledger detail is
|
|
5
|
-
* the plain-English reason ("its pull request merged"), the one place every surface reads it from. */
|
|
6
3
|
export const LANDED_ACTOR = "system:landed";
|
|
7
|
-
/** Who may complete a result, as a completion's ledger actor: a person, a lead, or Toolroll when the work landed. */
|
|
8
4
|
export const COMPLETER_ACTOR = /^(?:(?:operator|coordinator|lead):.+|system:landed)$/;
|
|
9
|
-
/** Why Toolroll marked a result complete, from its completion's actor and detail; null for a person's completion. */
|
|
10
5
|
export function landedReasonOf(actor, detail) {
|
|
11
6
|
return actor === LANDED_ACTOR ? detail?.trim() || "its work is already in main" : null;
|
|
12
7
|
}
|
|
13
|
-
/** Whether a task's family is marked complete. Completion is recorded on the
|
|
14
|
-
* family's root against its current version's latest result, so the root, a
|
|
15
|
-
* superseded revision and the current version all read Complete together. */
|
|
16
8
|
export function familyCompleted(store, taskId) {
|
|
17
9
|
const family = store.taskFamilyOf(taskId, null, true);
|
|
18
10
|
return store.handle.prepare(`SELECT 1 AS hit FROM action_ledger INDEXED BY work_completion
|
|
@@ -21,7 +13,6 @@ export function familyCompleted(store, taskId) {
|
|
|
21
13
|
AND run.finished_at IS NOT NULL AND run.role IN ('builder','scout') ORDER BY run.id DESC LIMIT 1) LIMIT 1`)
|
|
22
14
|
.get(taskId, family?.root.id ?? taskId, COMPLETION_ACTION, family?.current.refId ?? store.lookupRef(taskId)?.id ?? -1) !== undefined;
|
|
23
15
|
}
|
|
24
|
-
/** The files a build changed, renames on both sides; null when the inventory can't be read whole. */
|
|
25
16
|
export function changedFilesOf(store, runId, root) {
|
|
26
17
|
const stat = store.artifactsFor(runId).find(one => one.kind === "diff-stat");
|
|
27
18
|
if (stat === undefined || stat.truncated || stat.captureStatus !== "ok")
|
|
@@ -33,18 +24,12 @@ export function changedFilesOf(store, runId, root) {
|
|
|
33
24
|
const inventory = JSON.parse(read.content.toString("utf8"));
|
|
34
25
|
if (inventory.filesTruncated !== false || !Array.isArray(inventory.files))
|
|
35
26
|
return null;
|
|
36
|
-
// A rename changes both places: moving a protected file out of its folder touches it.
|
|
37
27
|
return inventory.files.flatMap(one => [one.path, one.renamedFrom]).filter((path) => typeof path === "string" && path !== "");
|
|
38
28
|
}
|
|
39
29
|
catch {
|
|
40
30
|
return null;
|
|
41
31
|
}
|
|
42
32
|
}
|
|
43
|
-
/** Everything a result's branch carries: this build's changes and every build of every task it revises (a
|
|
44
|
-
* revision builds on its source's head, so its branch holds the source's commits too). null when any of
|
|
45
|
-
* them can't be read whole. An earlier build with no recorded diff is skipped by default; with
|
|
46
|
-
* `missing: "unknown"` (the local owner's boundary) it is skipped only when its run record proves it committed
|
|
47
|
-
* nothing, and any other one makes the whole answer unknown. */
|
|
48
33
|
export function familyChangedFiles(store, taskId, runId, root, options = {}) {
|
|
49
34
|
const files = new Set();
|
|
50
35
|
const runs = new Map([[runId, null]]);
|
|
@@ -58,8 +43,6 @@ export function familyChangedFiles(store, taskId, runId, root, options = {}) {
|
|
|
58
43
|
runs.set(run.id, run);
|
|
59
44
|
}
|
|
60
45
|
for (const [id, run] of runs) {
|
|
61
|
-
// A build that never recorded a diff contributed nothing to the branch; one whose diff can't be read counts as protected.
|
|
62
|
-
// Under "unknown", a missing inventory proves nothing by itself: only a finished run that committed nothing is skipped.
|
|
63
46
|
if (!store.artifactsFor(id).some(one => one.kind === "diff-stat") && id !== runId) {
|
|
64
47
|
if (options.missing !== "unknown" || (run?.committed === false && run.finishedAt !== null))
|
|
65
48
|
continue;
|
|
@@ -73,9 +56,6 @@ export function familyChangedFiles(store, taskId, runId, root, options = {}) {
|
|
|
73
56
|
}
|
|
74
57
|
return [...files];
|
|
75
58
|
}
|
|
76
|
-
/** Why a build's branch must wait before it's pushed (and so before any PR or merge): it (or a task it
|
|
77
|
-
* revises) changed protected files on a one-person approval, and nobody but its approver and requesters
|
|
78
|
-
* has marked it complete. */
|
|
79
59
|
export function protectedPublicationHold(store, runId, root) {
|
|
80
60
|
const run = store.getRun(runId);
|
|
81
61
|
const taskId = run === null ? null : store.externalIdFor(run.taskRef);
|
|
@@ -84,19 +64,14 @@ export function protectedPublicationHold(store, runId, root) {
|
|
|
84
64
|
const changed = familyChangedFiles(store, taskId, runId, root);
|
|
85
65
|
if (store.protectedResultProblem(taskId, changed, null) === null)
|
|
86
66
|
return null;
|
|
87
|
-
// Only a person's completion counts here (approval policy §1.7a): one a machine credential made, or one from before
|
|
88
|
-
// completions said who made them, never stands as the second person.
|
|
89
67
|
const completers = store.handle.prepare("SELECT DISTINCT actor FROM action_ledger WHERE run_id = ? AND action = ? AND detail = ?").all(runId, COMPLETION_ACTION, COMPLETION_BY_PERSON)
|
|
90
68
|
.map(row => String(row["actor"])).filter(actor => actor.startsWith("operator:")).map(actor => actor.slice("operator:".length));
|
|
91
69
|
if (completers.some(name => store.protectedResultProblem(taskId, changed, name) === null))
|
|
92
70
|
return null;
|
|
93
71
|
return "held: it changed protected files on a one-person approval, so it publishes once someone other than its approver marks it complete";
|
|
94
72
|
}
|
|
95
|
-
/** A completion's mark (v134, approval policy §1.7a): whether a person or a machine credential made it. */
|
|
96
73
|
export const COMPLETION_BY_PERSON = "proof person";
|
|
97
74
|
export const COMPLETION_BY_MACHINE = "proof machine";
|
|
98
|
-
/** Whether this person completing an already-complete result would release a protected publication hold: protected
|
|
99
|
-
* work needs someone other than its approver, no person's completion on record provides it, and this person can. */
|
|
100
75
|
export function personCompletionOwed(store, taskId, runId, receiptDigest, person, root) {
|
|
101
76
|
const changed = familyChangedFiles(store, taskId, runId, root);
|
|
102
77
|
if (store.protectedResultProblem(taskId, changed, null) === null || store.protectedResultProblem(taskId, changed, person) !== null)
|
|
@@ -27,7 +27,6 @@ export function structuredHandoffView(artifacts, root, displayText = text => tex
|
|
|
27
27
|
.map(one => oneLineOf(one, 240));
|
|
28
28
|
return { conclusion, changes: list(handoff.changes), verification: list(handoff.verification), followUps: list(handoff.followUps) };
|
|
29
29
|
}
|
|
30
|
-
/** A failed capture or unverifiable bytes keep their problem; absence returns null. */
|
|
31
30
|
export function terminalDiffView(artifacts, root) {
|
|
32
31
|
const patchArtifact = artifacts.find(one => one.kind === "terminal-diff");
|
|
33
32
|
const statArtifact = artifacts.find(one => one.kind === "diff-stat");
|
|
@@ -59,8 +58,6 @@ export function terminalDiffView(artifacts, root) {
|
|
|
59
58
|
else {
|
|
60
59
|
try {
|
|
61
60
|
const parsed = JSON.parse(read.content.toString("utf8"));
|
|
62
|
-
// Every field this page renders is type-proved (arc 6, finding 7):
|
|
63
|
-
// "an object with a base key" was accepting any shape at all.
|
|
64
61
|
const count = (value) => typeof value === "number" && Number.isFinite(value);
|
|
65
62
|
const wellFormed = parsed !== null &&
|
|
66
63
|
typeof parsed === "object" &&
|