toolroll 0.9.103 → 0.9.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +65 -0
- package/README.md +27 -27
- package/dist/accent-colors.js +0 -29
- package/dist/acp-agents.js +0 -3
- package/dist/acp-attest.js +0 -30
- package/dist/acp-check.js +3 -70
- package/dist/acp-client.js +3 -94
- package/dist/acp-inspect.js +1 -20
- package/dist/action-ledger.js +0 -8
- package/dist/activity-line.js +0 -14
- package/dist/actor.js +0 -15
- package/dist/advanced-schema.js +12 -0
- package/dist/advanced-view.js +26 -0
- package/dist/advanced.js +61 -0
- package/dist/agent-board.js +0 -117
- package/dist/agent-fence.js +11 -367
- package/dist/agent-onboard.js +12 -50
- package/dist/agent-pulse.js +5 -38
- package/dist/agent-state-words.js +0 -8
- package/dist/agent-state.js +1 -45
- package/dist/agent-turns.js +3 -17
- package/dist/agentconfig.js +1 -99
- package/dist/agents-board.js +0 -60
- package/dist/agents-live.js +1 -8
- package/dist/api-tokens.js +0 -27
- package/dist/approval-authority.js +0 -59
- package/dist/approval-password.js +0 -10
- package/dist/approval-policy.js +0 -29
- package/dist/approval-rules-ui.js +0 -9
- package/dist/assignment-adapters.js +0 -14
- package/dist/assignment-brief.js +1 -17
- package/dist/assignment-delivery.js +0 -22
- package/dist/assignment-presentation.js +0 -14
- package/dist/assignment-status.js +1 -30
- package/dist/assignment-ui.js +0 -12
- package/dist/assignment.js +117 -103
- package/dist/attest.js +0 -38
- package/dist/audit-cli.js +0 -9
- package/dist/backend.js +0 -59
- package/dist/backup-ui.js +0 -12
- package/dist/backup.js +8 -61
- package/dist/batch-checks.js +0 -20
- package/dist/batch-policy.js +0 -4
- package/dist/beads.js +0 -48
- package/dist/bin.js +0 -8
- package/dist/board.js +1 -36
- package/dist/boot-identity.js +0 -42
- package/dist/bounded-spawn.js +4 -28
- package/dist/brand-mark.js +0 -21
- package/dist/brief-fence.js +0 -16
- package/dist/browser/terminal.css +1 -1
- package/dist/browser/terminal.js +16 -16
- package/dist/browser/workspace.css +2 -2
- package/dist/browser/workspace.js +26 -26
- package/dist/browser-crew.js +0 -8
- package/dist/browser-shell.js +2 -15
- package/dist/browser-workspace.js +6 -30
- package/dist/budget-alerts.js +1 -4
- package/dist/build-review.js +2 -50
- package/dist/builder-restart.js +0 -13
- package/dist/builder.js +21 -1035
- package/dist/canonical-json.js +0 -12
- package/dist/capscan.js +1 -32
- package/dist/card-catalog.js +0 -12
- package/dist/card-cli.js +0 -1
- package/dist/card-render.js +0 -25
- package/dist/card-sources.js +0 -10
- package/dist/chat-acceptance.js +0 -7
- package/dist/chat-actions.js +5 -190
- package/dist/chat-admission.js +0 -7
- package/dist/chat-approval.js +0 -25
- package/dist/chat-ask.js +0 -17
- package/dist/chat-card-part.js +0 -3
- package/dist/chat-card.js +0 -6
- package/dist/chat-channel.js +2 -83
- package/dist/chat-continuity.js +0 -31
- package/dist/chat-controls.js +0 -7
- package/dist/chat-core.js +0 -55
- package/dist/chat-decide.js +2 -153
- package/dist/chat-delivery-state.js +0 -49
- package/dist/chat-delivery.js +2 -143
- package/dist/chat-display.js +0 -2
- package/dist/chat-evidence.js +0 -65
- package/dist/chat-flow.js +0 -72
- package/dist/chat-follow.js +0 -13
- package/dist/chat-inbox.js +0 -34
- package/dist/chat-live-schema.js +0 -14
- package/dist/chat-live.js +2 -87
- package/dist/chat-message-states.js +13 -40
- package/dist/chat-messages.js +0 -153
- package/dist/chat-migration.js +0 -57
- package/dist/chat-polish.js +0 -7
- package/dist/chat-quiet.js +0 -37
- package/dist/chat-review.js +0 -4
- package/dist/chat-rooms.js +0 -22
- package/dist/chat-settings-page.js +0 -4
- package/dist/chat-task-actions.js +0 -7
- package/dist/chat-terms.js +0 -21
- package/dist/chat-voice.js +0 -38
- package/dist/chat-warmth.js +1 -3
- package/dist/check-access.js +0 -30
- package/dist/check-facts.js +2 -62
- package/dist/check-failure.js +0 -98
- package/dist/check-levels-ui.js +4 -10
- package/dist/check-levels.js +3 -35
- package/dist/check-load.js +1 -49
- package/dist/check-only-standing.js +0 -6
- package/dist/check-only.js +0 -22
- package/dist/check-progress.js +0 -32
- package/dist/check-repair.js +2 -35
- package/dist/check-report.js +1 -108
- package/dist/check-stamp.js +0 -20
- package/dist/checkout-cleanup.js +0 -84
- package/dist/checkout-proof.js +1 -13
- package/dist/child-database.js +0 -3
- package/dist/claim.js +4 -508
- package/dist/claude-print.js +0 -10
- package/dist/cli-fast.js +0 -8
- package/dist/cli-help.js +90 -78
- package/dist/cli-http.js +0 -10
- package/dist/cli.js +26 -241
- package/dist/code-extract.js +0 -6
- package/dist/code-map-acts.js +0 -7
- package/dist/code-map-admission.js +2 -26
- package/dist/code-map-build.js +3 -24
- package/dist/code-map-cli.js +0 -4
- package/dist/code-map-main.js +0 -6
- package/dist/code-map-read.js +0 -12
- package/dist/code-map-report.js +0 -9
- package/dist/code-map-shape.js +0 -19
- package/dist/code-map-store.js +0 -26
- package/dist/codex-limits.js +1 -17
- package/dist/coding-context.js +0 -10
- package/dist/coding-handoff.js +0 -14
- package/dist/coding-provider.js +0 -39
- package/dist/coding-shipping-ui.js +0 -1
- package/dist/coding-ui.js +0 -1
- package/dist/coding-update.js +1 -18
- package/dist/coding-workspace.js +0 -27
- package/dist/commit-extract.js +0 -83
- package/dist/connect-cli.js +0 -19
- package/dist/console-chrome.js +1 -34
- package/dist/console-instance.js +2 -91
- package/dist/container-state.js +0 -4
- package/dist/containment.js +2 -105
- package/dist/contract-changes.js +0 -6
- package/dist/contracts/acceptance-terms.js +0 -7
- package/dist/contracts/chat-actions.js +0 -46
- package/dist/contracts/chat-callback-rows.js +0 -8
- package/dist/contracts/chat-card.js +0 -14
- package/dist/contracts/chat-content.js +0 -55
- package/dist/contracts/chat-tables.js +0 -7
- package/dist/contracts/cli.js +0 -59
- package/dist/contracts/coding-activity.js +0 -15
- package/dist/contracts/coding-context.js +0 -15
- package/dist/contracts/coding-handoff.js +0 -11
- package/dist/contracts/coding-workspace.js +0 -14
- package/dist/contracts/console-api.js +3 -54
- package/dist/contracts/contract-test.js +0 -14
- package/dist/contracts/contract.js +0 -48
- package/dist/contracts/decision.js +0 -20
- package/dist/contracts/diff-stat.js +0 -16
- package/dist/contracts/discord-callback.js +0 -9
- package/dist/contracts/flow-card.js +0 -18
- package/dist/contracts/flow-propose.js +0 -8
- package/dist/contracts/flow-send.js +0 -31
- package/dist/contracts/flow.js +0 -112
- package/dist/contracts/gateway-tools.js +0 -22
- package/dist/contracts/handoff.js +0 -22
- package/dist/contracts/integration-metadata.js +0 -39
- package/dist/contracts/lead-context.js +0 -14
- package/dist/contracts/lead-tools.js +0 -49
- package/dist/contracts/mcp-oauth.js +0 -12
- package/dist/contracts/memory-pass.js +0 -21
- package/dist/contracts/model-catalog.js +0 -9
- package/dist/contracts/observation-request.js +0 -11
- package/dist/contracts/plan.js +0 -16
- package/dist/contracts/project-knowledge.js +0 -26
- package/dist/contracts/project-memory.js +0 -16
- package/dist/contracts/project-skills.js +0 -31
- package/dist/contracts/proof.js +0 -23
- package/dist/contracts/provider.js +0 -9
- package/dist/contracts/recipes.js +0 -16
- package/dist/contracts/release-check.js +0 -61
- package/dist/contracts/release-terms.js +0 -27
- package/dist/contracts/retention.js +0 -12
- package/dist/contracts/review-findings.js +0 -13
- package/dist/contracts/route-results.js +0 -15
- package/dist/contracts/route.js +0 -33
- package/dist/contracts/scope.js +0 -29
- package/dist/contracts/scout-report.js +0 -34
- package/dist/contracts/slack-callback.js +0 -11
- package/dist/contracts/sort-answer.js +0 -24
- package/dist/contracts/stage-output.js +0 -46
- package/dist/contracts/storage.js +0 -8
- package/dist/contracts/store-json.js +0 -41
- package/dist/contracts/subagent-turn.js +0 -23
- package/dist/contracts/task-sizing.js +0 -10
- package/dist/contracts/teams-callback.js +0 -7
- package/dist/contracts/telegram-callback.js +0 -27
- package/dist/contracts/trigger-payloads.js +0 -41
- package/dist/contracts/update-journal.js +0 -47
- package/dist/contracts/verification-receipt.js +0 -36
- package/dist/contracts/verification-view.js +0 -15
- package/dist/contracts/youiyoux-request.js +0 -26
- package/dist/control-setup.js +0 -7
- package/dist/control-ui.js +0 -3
- package/dist/controller-service.js +0 -4
- package/dist/controller-supervisor.js +0 -15
- package/dist/converse.js +3 -129
- package/dist/coordinator-proposals.js +1 -6
- package/dist/coordinator.js +0 -65
- package/dist/credentials-ui.js +0 -6
- package/dist/daemon.js +0 -137
- package/dist/database-reclaim.js +0 -3
- package/dist/decision.js +0 -78
- package/dist/demo-chat.js +4 -15
- package/dist/demo-sign-in.js +77 -0
- package/dist/demo.js +5 -194
- package/dist/deploy-gate.js +0 -20
- package/dist/deploy-lock.js +0 -4
- package/dist/deploy-phase.js +0 -22
- package/dist/deploy-rescue.js +0 -21
- package/dist/deprecations.js +0 -12
- package/dist/design/kit.css +9 -6
- package/dist/design/kit.js +2 -33
- package/dist/desktop-access.js +0 -9
- package/dist/desktop-bundle.js +1 -3
- package/dist/desktop-host.js +0 -34
- package/dist/desktop-update-gate.js +0 -8
- package/dist/desktop-update-recovery.js +1 -18
- package/dist/desktop-update.js +2 -48
- package/dist/digest-times.js +0 -2
- package/dist/disclosure.js +0 -5
- package/dist/discord-api.js +0 -6
- package/dist/discord-chat.js +0 -31
- package/dist/discord.js +0 -7
- package/dist/discover.js +0 -50
- package/dist/dispatch.js +61 -60
- package/dist/dispose.js +0 -208
- package/dist/doctor.js +0 -48
- package/dist/easy-start-args.js +7 -7
- package/dist/easy-start.js +32 -45
- package/dist/egress.js +1 -63
- package/dist/email-settings.js +0 -8
- package/dist/envelope.js +50 -86
- package/dist/eval-gate.js +1 -37
- package/dist/eval-hooks.js +0 -120
- package/dist/eval-oracle-main.js +0 -7
- package/dist/eval-oracle.js +3 -42
- package/dist/eval-world.js +1 -23
- package/dist/evals.js +6 -134
- package/dist/evidence-pack.js +0 -29
- package/dist/evidence-pair.js +0 -17
- package/dist/evidence.js +4 -280
- package/dist/exec.js +19 -404
- package/dist/exhaustion.js +0 -30
- package/dist/export-ui.js +0 -7
- package/dist/export.js +1 -38
- package/dist/failing-first.js +0 -6
- package/dist/fallback-schema.js +0 -5
- package/dist/fallback.js +0 -81
- package/dist/fast-start.js +0 -97
- package/dist/fast-terms.js +0 -3
- package/dist/fenced-check-coverage.js +0 -11
- package/dist/findings.js +1 -63
- package/dist/first-run.js +4 -57
- package/dist/first-tasks-child.js +0 -5
- package/dist/flaky-ci.js +1 -24
- package/dist/flaky-cli.js +0 -4
- package/dist/flaky.js +0 -43
- package/dist/fleet-schema.js +0 -11
- package/dist/flow-actions.js +0 -31
- package/dist/flow-browser.js +0 -42
- package/dist/flow-cadence.js +1 -24
- package/dist/flow-card-task.js +0 -11
- package/dist/flow-changed.js +0 -16
- package/dist/flow-code.js +1 -45
- package/dist/flow-draft.js +0 -17
- package/dist/flow-engine.js +2 -76
- package/dist/flow-gallery-ui.js +0 -28
- package/dist/flow-gallery.js +0 -54
- package/dist/flow-insights.js +0 -12
- package/dist/flow-items.js +0 -27
- package/dist/flow-live.js +0 -31
- package/dist/flow-people.js +0 -14
- package/dist/flow-pull-request.js +0 -32
- package/dist/flow-replies.js +0 -9
- package/dist/flow-result-card.js +0 -8
- package/dist/flow-schedule.js +0 -74
- package/dist/flow-scripts.js +0 -13
- package/dist/flow-secrets.js +0 -10
- package/dist/flow-send.js +0 -45
- package/dist/flow-share.js +0 -60
- package/dist/flow-sort.js +1 -24
- package/dist/flow-starters-ui.js +0 -2
- package/dist/flow-starters.js +0 -13
- package/dist/flow-steps.js +0 -80
- package/dist/flow-triggers.js +2 -256
- package/dist/flow-unattended-words.js +0 -13
- package/dist/flow-unattended.js +2 -115
- package/dist/flows-cli.js +2 -36
- package/dist/flows-ui.js +0 -51
- package/dist/flows.js +0 -158
- package/dist/folder-gate.js +0 -21
- package/dist/folder-look.js +0 -42
- package/dist/follow-through-brief.js +0 -6
- package/dist/follow-through-cli.js +0 -5
- package/dist/fonts.js +0 -13
- package/dist/gaps.js +0 -20
- package/dist/gate-failure.js +0 -7
- package/dist/git-floor.js +0 -12
- package/dist/git-incident.js +2 -38
- package/dist/git-views.js +0 -24
- package/dist/git.js +0 -31
- package/dist/github-import.js +0 -22
- package/dist/github-jobs.js +0 -12
- package/dist/google-mail.js +2 -27
- package/dist/grant.js +0 -110
- package/dist/graph.js +0 -108
- package/dist/guides.js +4 -15
- package/dist/handover-note.js +0 -12
- package/dist/health-cli.js +0 -2
- package/dist/home-groups.js +0 -15
- package/dist/html.js +0 -54
- package/dist/install-method.js +0 -12
- package/dist/integrations-ui.js +0 -15
- package/dist/integrations.js +7 -50
- package/dist/invoke.js +1 -381
- package/dist/is-record.js +0 -1
- package/dist/issues.js +0 -48
- package/dist/jsonl-discriminants.js +0 -6
- package/dist/keymap.js +2 -16
- package/dist/keys.js +0 -56
- package/dist/kits-ui.js +0 -3
- package/dist/kits.js +1 -24
- package/dist/knowledge-cli.js +0 -4
- package/dist/knowledge-ui.js +0 -8
- package/dist/landed-cleanup.js +0 -119
- package/dist/laptop-background.js +0 -85
- package/dist/laptop-service.js +0 -67
- package/dist/latency-timeline.js +2 -23
- package/dist/lead-about.js +0 -7
- package/dist/lead-answer-eval.js +0 -39
- package/dist/lead-capabilities.js +0 -19
- package/dist/lead-cli-live.js +0 -22
- package/dist/lead-cli.js +0 -27
- package/dist/lead-commitments.js +1 -27
- package/dist/lead-context.js +2 -42
- package/dist/lead-contract.js +0 -8
- package/dist/lead-doors.js +0 -105
- package/dist/lead-follow.js +0 -41
- package/dist/lead-identity.js +1 -4
- package/dist/lead-latency-schema.js +0 -13
- package/dist/lead-people.js +3 -18
- package/dist/lead-progress.js +0 -12
- package/dist/lead-queue-runtime.js +0 -26
- package/dist/lead-queue.js +0 -35
- package/dist/lead-route.js +0 -33
- package/dist/lead-status.js +0 -37
- package/dist/lead-sweep.js +0 -18
- package/dist/lead-tools.js +0 -160
- package/dist/lead-voice.js +0 -54
- package/dist/lead.js +2 -105
- package/dist/learning-child.js +0 -6
- package/dist/learning-look.js +0 -14
- package/dist/ledger-chain.js +0 -34
- package/dist/ledger-csv.js +0 -2
- package/dist/ledger-view.js +0 -3
- package/dist/lesson-notes.js +0 -56
- package/dist/limits-ui.js +0 -14
- package/dist/link.js +0 -79
- package/dist/live-backup.js +3 -33
- package/dist/live-bus.js +7 -81
- package/dist/live-children-read.js +4 -47
- package/dist/live-children.js +4 -44
- package/dist/live-detail.js +0 -17
- package/dist/live-input.js +5 -68
- package/dist/live-main-read.js +1 -14
- package/dist/live-notes.js +0 -12
- package/dist/live-open.js +1 -23
- package/dist/live-records.js +4 -151
- package/dist/live-reply.js +1 -51
- package/dist/live-terminal.js +12 -111
- package/dist/live.js +4 -130
- package/dist/local-owner-acts.js +168 -0
- package/dist/local-owner.js +15 -80
- package/dist/log.js +0 -8
- package/dist/login-secrets.js +2 -38
- package/dist/machine-check.js +0 -2
- package/dist/machine-identity.js +1 -46
- package/dist/mailbox.js +0 -30
- package/dist/maintenance.js +1 -3
- package/dist/mcp-connect.js +0 -88
- package/dist/mcp-core.js +0 -45
- package/dist/mcp-http.js +0 -13
- package/dist/mcp-oauth.js +0 -37
- package/dist/mcp-person.js +0 -11
- package/dist/mcp.js +3 -73
- package/dist/memory-cli.js +0 -3
- package/dist/memory-pass.js +0 -53
- package/dist/memory-tidy.js +0 -55
- package/dist/memory-use.js +2 -24
- package/dist/merge-checklist.js +21 -29
- package/dist/metrics.js +0 -10
- package/dist/mobile-viewport.js +0 -6
- package/dist/model-catalog.js +1 -33
- package/dist/model-choices.js +9 -84
- package/dist/model-names.js +0 -9
- package/dist/models-cli.js +0 -13
- package/dist/models-ui.js +0 -17
- package/dist/modes.js +0 -35
- package/dist/monitoring-settings.js +2 -27
- package/dist/monitoring-ui.js +2 -14
- package/dist/monitoring.js +2 -38
- package/dist/names.js +0 -39
- package/dist/needs-you.js +7 -70
- package/dist/never-index.js +0 -9
- package/dist/nightly-check.js +0 -74
- package/dist/nightly-github.js +0 -168
- package/dist/notification-delivery.js +0 -3
- package/dist/notification-rows.js +0 -17
- package/dist/oauth-run-token.js +1 -37
- package/dist/observations.js +0 -16
- package/dist/oidc.js +1 -20
- package/dist/onboard.js +4 -57
- package/dist/one-step-chat-schema.js +0 -15
- package/dist/openrouter-models.js +0 -6
- package/dist/operate-remote-arguments.js +2 -17
- package/dist/operate-remote.js +0 -33
- package/dist/operate.js +280 -2304
- package/dist/orphan-sweep.js +3 -37
- package/dist/page-work-contract.js +0 -3
- package/dist/password-bearer.js +1 -11
- package/dist/passwordless.js +0 -3
- package/dist/peek-cli.js +0 -46
- package/dist/peek.js +2 -61
- package/dist/people-audit-ui.js +0 -6
- package/dist/person-proof.js +0 -6
- package/dist/phase-routing.js +8 -183
- package/dist/plain-schema.js +0 -14
- package/dist/plain-words.js +18 -12
- package/dist/plan-auto.js +3 -18
- package/dist/plan-login.js +0 -16
- package/dist/plan.js +0 -68
- package/dist/plane-review.js +0 -56
- package/dist/planner-source.js +0 -96
- package/dist/planner.js +0 -117
- package/dist/policy-ui.js +0 -8
- package/dist/policy.js +0 -47
- package/dist/prepared-evidence.js +0 -5
- package/dist/principal.js +0 -29
- package/dist/probe.js +0 -30
- package/dist/process-custody.js +0 -15
- package/dist/process-liveness.js +0 -32
- package/dist/process-tree.js +3 -29
- package/dist/project-access.js +0 -10
- package/dist/project-admission.js +1 -41
- package/dist/project-cli.js +0 -6
- package/dist/project-concurrency.js +0 -35
- package/dist/project-delete-ui.js +4 -29
- package/dist/project-delete.js +1 -73
- package/dist/project-demo.js +0 -13
- package/dist/project-file.js +0 -2
- package/dist/project-identity.js +0 -41
- package/dist/project-knowledge.js +0 -39
- package/dist/project-learning.js +3 -55
- package/dist/project-memory.js +2 -45
- package/dist/project-outcomes.js +0 -6
- package/dist/project-sandbox.js +0 -23
- package/dist/project-skills.js +0 -12
- package/dist/project-tools.js +6 -184
- package/dist/project.js +0 -48
- package/dist/prompt.js +0 -31
- package/dist/proof.js +0 -220
- package/dist/proposal.js +0 -50
- package/dist/protected-storage-look.js +0 -6
- package/dist/protected-storage.js +1 -84
- package/dist/provider-auth.js +3 -69
- package/dist/provider-capture.js +1 -15
- package/dist/provider-connection.js +0 -8
- package/dist/provider-home.js +0 -25
- package/dist/provider-limits.js +0 -14
- package/dist/provider.js +0 -324
- package/dist/public-access.js +11 -30
- package/dist/public-check.js +0 -16
- package/dist/publish.js +1 -150
- package/dist/pull-request-flow.js +6 -74
- package/dist/pull-request-schema.js +0 -4
- package/dist/pull-request-ui.js +0 -5
- package/dist/pulls.js +0 -80
- package/dist/push.js +5 -89
- package/dist/quick-start.js +1 -23
- package/dist/read-executor-worker.js +0 -1
- package/dist/read-executor.js +0 -10
- package/dist/read-only-request.js +0 -7
- package/dist/recipe-ui.js +0 -6
- package/dist/recipes.js +0 -13
- package/dist/release-adapters.js +6 -214
- package/dist/release-approval.js +0 -74
- package/dist/release-authority.js +0 -42
- package/dist/release-auto.js +0 -142
- package/dist/release-card.js +26 -103
- package/dist/release-carry.js +0 -132
- package/dist/release-ci-hold.js +0 -20
- package/dist/release-cli.js +0 -46
- package/dist/release-coverage.js +0 -16
- package/dist/release-gate.js +0 -30
- package/dist/release-git.js +0 -24
- package/dist/release-links.js +0 -17
- package/dist/release-net.js +0 -42
- package/dist/release-next.js +0 -25
- package/dist/release-recheck.js +0 -89
- package/dist/release-refusal.js +0 -18
- package/dist/release-view.js +0 -5
- package/dist/release.js +7 -341
- package/dist/releases.js +0 -49
- package/dist/remote-audit.js +0 -25
- package/dist/remote-command.js +0 -16
- package/dist/remote-destination.js +5 -26
- package/dist/remote-exec.js +1 -27
- package/dist/remote-main.js +1 -53
- package/dist/remote-run.js +0 -5
- package/dist/remote.js +0 -49
- package/dist/render.js +0 -133
- package/dist/reply-shape.js +0 -85
- package/dist/reply-voice.js +0 -7
- package/dist/report-summary.js +0 -5
- package/dist/reported-usage.js +0 -30
- package/dist/repos.js +9 -62
- package/dist/repository-context.js +1 -24
- package/dist/request-budget-ui.js +0 -4
- package/dist/request-budget.js +0 -23
- package/dist/restart-certification.js +0 -37
- package/dist/result-actions.js +0 -62
- package/dist/result-acts.js +0 -34
- package/dist/result-completion.js +9 -28
- package/dist/result-evidence-readers.js +0 -3
- package/dist/result-follow-ups.js +1 -39
- package/dist/result-review.js +0 -86
- package/dist/result-shots.js +0 -39
- package/dist/retention-ui.js +0 -7
- package/dist/retention.js +2 -46
- package/dist/review-context.js +0 -129
- package/dist/review-evidence.js +0 -4
- package/dist/review-switch.js +1 -7
- package/dist/reviewer.js +0 -35
- package/dist/route-change-check.js +0 -2
- package/dist/route-change.js +0 -16
- package/dist/route-hooks.js +0 -27
- package/dist/route-results.js +2 -58
- package/dist/route-rules.js +1 -106
- package/dist/route-savings.js +0 -36
- package/dist/route-store.js +1 -133
- package/dist/run-closeout.js +2 -50
- package/dist/run-efficiency.js +2 -44
- package/dist/run-ending.js +0 -13
- package/dist/runner-process.js +0 -33
- package/dist/runner.js +17 -189
- package/dist/sample-project.js +2 -27
- package/dist/sandbox-launch.js +4 -25
- package/dist/sandbox-runtime.js +1 -88
- package/dist/scan.js +0 -27
- package/dist/scope.js +88 -566
- package/dist/scout-browser-lock.js +0 -6
- package/dist/scout-browser.js +2 -68
- package/dist/scout-net.js +1 -32
- package/dist/scout-report.js +0 -22
- package/dist/scout.js +1 -116
- package/dist/secret-mint.js +0 -6
- package/dist/serve.js +29 -564
- package/dist/server/agents-computers.js +0 -10
- package/dist/server/agents-live-filed.js +0 -13
- package/dist/server/agents-live-lead.js +0 -19
- package/dist/server/agents-live-room.js +0 -19
- package/dist/server/chat.js +2 -194
- package/dist/server/chrome.js +17 -263
- package/dist/server/console.css +4 -4
- package/dist/server/edge-refusal.js +0 -3
- package/dist/server/flows.js +5 -74
- package/dist/server/guards.js +9 -86
- package/dist/server/handler-registry.js +0 -2
- package/dist/server/home-asks.js +1 -22
- package/dist/server/home.js +1 -30
- package/dist/server/http.js +0 -82
- package/dist/server/in-place.js +0 -15
- package/dist/server/kit-standalone.js +0 -20
- package/dist/server/kit.js +2 -114
- package/dist/server/last-checks.js +0 -2
- package/dist/server/live.js +1 -36
- package/dist/server/merge-ready-view.js +0 -6
- package/dist/server/mutation-key.js +3 -40
- package/dist/server/pages-assets.js +0 -16
- package/dist/server/pages.js +7 -195
- package/dist/server/people-tokens.js +3 -101
- package/dist/server/remote-hooks.js +0 -13
- package/dist/server/remote.js +0 -28
- package/dist/server/render-chat.js +8 -144
- package/dist/server/render-code-map.js +0 -5
- package/dist/server/render-flaky.js +0 -8
- package/dist/server/render-follow-through.js +2 -5
- package/dist/server/render-history.js +2 -34
- package/dist/server/render-new-task.js +2 -29
- package/dist/server/render-pages.js +1 -111
- package/dist/server/render-people.js +2 -46
- package/dist/server/render-projects.js +15 -32
- package/dist/server/render-release.js +1 -14
- package/dist/server/render-results.js +4 -355
- package/dist/server/render-settings.js +0 -15
- package/dist/server/render-tasks.js +17 -497
- package/dist/server/request-context.js +2 -9
- package/dist/server/retired-routes.js +0 -11
- package/dist/server/route-policy.js +0 -3
- package/dist/server/route-table.js +8 -133
- package/dist/server/runtime.js +0 -1
- package/dist/server/session.js +0 -28
- package/dist/server/settings.js +40 -246
- package/dist/server/signup-gate.js +0 -11
- package/dist/server/sweeps.js +0 -6
- package/dist/server/task-views.js +12 -227
- package/dist/server/tasks.js +37 -531
- package/dist/server/terminals.js +2 -46
- package/dist/server/welcome.js +2 -22
- package/dist/server-telemetry.js +0 -9
- package/dist/settings-groups-ui.js +50 -63
- package/dist/settings-kit-script.js +0 -19
- package/dist/settings-kit.js +0 -63
- package/dist/settings-proofs.js +0 -23
- package/dist/setup-guide.js +1 -9
- package/dist/shared-deps.js +9 -84
- package/dist/sign-in-guard.js +0 -27
- package/dist/skills-ui.js +0 -2
- package/dist/skills.js +2 -54
- package/dist/slack-api.js +0 -3
- package/dist/slack-chat.js +0 -25
- package/dist/slack-settings.js +0 -1
- package/dist/slack-socket.js +0 -5
- package/dist/slack.js +0 -4
- package/dist/sleep.js +0 -1
- package/dist/source-key.js +0 -10
- package/dist/spend-report.js +0 -29
- package/dist/spend-ui.js +0 -26
- package/dist/spend.js +0 -40
- package/dist/sqlite-runtime.js +0 -2
- package/dist/sqlite-telemetry.js +0 -9
- package/dist/sso-settings.js +0 -13
- package/dist/sso-ui.js +0 -2
- package/dist/staged-runtimes.js +5 -39
- package/dist/steer-capabilities.js +1 -7
- package/dist/steer-controls.js +0 -10
- package/dist/steer-live.js +0 -31
- package/dist/steer-mailbox.js +4 -65
- package/dist/steer-status.js +0 -7
- package/dist/stop-proof.js +5 -62
- package/dist/storage-sweep-child.js +1 -5
- package/dist/storage-sweep-process.js +2 -20
- package/dist/storage-sweep-schedule.js +0 -32
- package/dist/storage-sweep.js +2 -51
- package/dist/storage-ui.js +0 -18
- package/dist/storage.js +0 -31
- package/dist/store-baseline.js +0 -14
- package/dist/store.js +109 -4763
- package/dist/stream-scope.js +0 -16
- package/dist/structured-output.js +0 -39
- package/dist/style-asset.js +0 -2
- package/dist/subagent-admin.js +0 -9
- package/dist/subagent-desk.js +0 -29
- package/dist/subagent-memory.js +0 -38
- package/dist/subagent-question.js +0 -29
- package/dist/subagent-tools.js +1 -60
- package/dist/subagent-week.js +0 -28
- package/dist/subagent-work.js +1 -39
- package/dist/subagents-ui.js +1 -13
- package/dist/subagents.js +0 -40
- package/dist/subscription-chat.js +1 -42
- package/dist/summary.js +0 -19
- package/dist/surface.js +8 -73
- package/dist/sweep-gate.js +0 -2
- package/dist/sweep-quarantine.js +2 -13
- package/dist/sync.js +0 -47
- package/dist/tailnet.js +0 -9
- package/dist/tamper-scan.js +0 -15
- package/dist/task-activity.js +1 -16
- package/dist/task-aliases.js +0 -3
- package/dist/task-archive.js +0 -7
- package/dist/task-base.js +0 -18
- package/dist/task-composer.js +0 -2
- package/dist/task-control.js +0 -74
- package/dist/task-live.js +0 -23
- package/dist/task-moves.js +0 -28
- package/dist/task-outcome-cli.js +66 -19
- package/dist/task-review-brief.js +0 -7
- package/dist/task-sizing.js +0 -47
- package/dist/task-source.js +0 -23
- package/dist/task-status.js +0 -106
- package/dist/task-text.js +0 -12
- package/dist/team-chat-authorization.js +0 -3
- package/dist/team-contract.js +0 -2
- package/dist/team-http.js +0 -4
- package/dist/team-leads.js +1 -16
- package/dist/team-runtime.js +0 -13
- package/dist/team-ui.js +0 -1
- package/dist/team-updates.js +0 -4
- package/dist/teams-api.js +0 -12
- package/dist/teams-chat.js +0 -28
- package/dist/teams.js +0 -12
- package/dist/teardown-git.js +6 -294
- package/dist/telegram-flow.js +0 -51
- package/dist/telegram-lead.js +2 -203
- package/dist/telegram-live.js +1 -42
- package/dist/telegram-progress.js +0 -18
- package/dist/telegram-settings.js +0 -7
- package/dist/telegram-status.js +0 -46
- package/dist/telegram-team.js +1 -33
- package/dist/telegram.js +6 -454
- package/dist/templates.js +0 -24
- package/dist/terminal-catalog.js +2 -20
- package/dist/terminal-text.js +0 -12
- package/dist/test-infra.js +0 -50
- package/dist/test-temp.js +3 -26
- package/dist/text-limits.js +0 -92
- package/dist/tidy.js +0 -76
- package/dist/tier-report.js +0 -2
- package/dist/token-notices.js +1 -9
- package/dist/tokens-cli.js +0 -13
- package/dist/tool-broker.js +2 -53
- package/dist/tool-launcher.js +0 -14
- package/dist/tool-secret-store.js +3 -125
- package/dist/toolroll-update-cli.js +0 -9
- package/dist/toolroll-update-ui.js +0 -14
- package/dist/toolroll-update.js +13 -252
- package/dist/tools-ui.js +0 -17
- package/dist/transitions-recipes.js +0 -2
- package/dist/tree-proof.js +0 -23
- package/dist/tui-contract.js +0 -8
- package/dist/tui-source.js +91 -40
- package/dist/tui.js +54 -54
- package/dist/typed-start.js +0 -27
- package/dist/unfenced-test-support.js +0 -5
- package/dist/up-processes.js +1 -40
- package/dist/up-role-child.js +1 -13
- package/dist/update-notice.js +0 -1
- package/dist/vanished-retry.js +0 -40
- package/dist/verification-evidence.js +0 -39
- package/dist/version.js +0 -1
- package/dist/wake-hub.js +0 -28
- package/dist/webhook-limits.js +0 -7
- package/dist/webhook-readers.js +0 -30
- package/dist/webhook-signing.js +0 -14
- package/dist/webhooks.js +0 -54
- package/dist/welcome-facts.js +2 -14
- package/dist/when-html.js +0 -27
- package/dist/work-index.js +26 -98
- package/dist/work-summary.js +2 -17
- package/dist/workspace-motion.js +0 -2
- package/dist/workspace-revision.js +1 -21
- package/dist/workspace-ui.js +15 -135
- package/dist/worktree-notices.js +0 -3
- package/dist/worktree.js +0 -308
- package/dist/writes-mode.js +0 -1
- package/dist/youiyoux-intake.js +4 -159
- package/package.json +5 -4
- package/dist/accent-colors.d.ts +0 -51
- package/dist/acp-agents.d.ts +0 -43
- package/dist/acp-attest.d.ts +0 -44
- package/dist/acp-check.d.ts +0 -37
- package/dist/acp-client.d.ts +0 -163
- package/dist/acp-inspect.d.ts +0 -23
- package/dist/action-ledger.d.ts +0 -27
- package/dist/activity-line.d.ts +0 -29
- package/dist/actor.d.ts +0 -11
- package/dist/agent-board.d.ts +0 -229
- package/dist/agent-fence.d.ts +0 -479
- package/dist/agent-onboard.d.ts +0 -158
- package/dist/agent-pulse.d.ts +0 -43
- package/dist/agent-state-words.d.ts +0 -19
- package/dist/agent-state.d.ts +0 -65
- package/dist/agent-turns.d.ts +0 -52
- package/dist/agentconfig.d.ts +0 -191
- package/dist/agents-board.d.ts +0 -145
- package/dist/agents-live.d.ts +0 -31
- package/dist/api-tokens.d.ts +0 -80
- package/dist/approval-authority.d.ts +0 -51
- package/dist/approval-password.d.ts +0 -31
- package/dist/approval-policy.d.ts +0 -69
- package/dist/approval-rules-ui.d.ts +0 -40
- package/dist/assignment-adapters.d.ts +0 -152
- package/dist/assignment-brief.d.ts +0 -83
- package/dist/assignment-delivery.d.ts +0 -86
- package/dist/assignment-presentation.d.ts +0 -37
- package/dist/assignment-status.d.ts +0 -71
- package/dist/assignment-ui.d.ts +0 -68
- package/dist/assignment.d.ts +0 -318
- package/dist/attest.d.ts +0 -59
- package/dist/audit-cli.d.ts +0 -17
- package/dist/backend.d.ts +0 -97
- package/dist/backup-ui.d.ts +0 -32
- package/dist/backup.d.ts +0 -92
- package/dist/batch-checks.d.ts +0 -15
- package/dist/batch-policy.d.ts +0 -23
- package/dist/beads.d.ts +0 -34
- package/dist/bin.d.ts +0 -2
- package/dist/board.d.ts +0 -134
- package/dist/boot-identity.d.ts +0 -64
- package/dist/bounded-spawn.d.ts +0 -57
- package/dist/brand-icons.d.ts +0 -168
- package/dist/brand-mark.d.ts +0 -28
- package/dist/brief-fence.d.ts +0 -9
- package/dist/browser-crew.d.ts +0 -12
- package/dist/browser-shell.d.ts +0 -9
- package/dist/browser-workspace.d.ts +0 -1972
- package/dist/budget-alerts.d.ts +0 -19
- package/dist/build-review.d.ts +0 -38
- package/dist/builder-restart.d.ts +0 -21
- package/dist/builder.d.ts +0 -409
- package/dist/canonical-json.d.ts +0 -14
- package/dist/capscan.d.ts +0 -35
- package/dist/card-catalog.d.ts +0 -209
- package/dist/card-cli.d.ts +0 -43
- package/dist/card-render.d.ts +0 -43
- package/dist/card-sources.d.ts +0 -68
- package/dist/chat-acceptance.d.ts +0 -74
- package/dist/chat-actions.d.ts +0 -460
- package/dist/chat-admission.d.ts +0 -19
- package/dist/chat-approval.d.ts +0 -58
- package/dist/chat-ask.d.ts +0 -32
- package/dist/chat-card-part.d.ts +0 -11
- package/dist/chat-card.d.ts +0 -46
- package/dist/chat-channel.d.ts +0 -126
- package/dist/chat-continuity.d.ts +0 -32
- package/dist/chat-controls.d.ts +0 -117
- package/dist/chat-core.d.ts +0 -177
- package/dist/chat-decide.d.ts +0 -269
- package/dist/chat-delivery-state.d.ts +0 -132
- package/dist/chat-delivery.d.ts +0 -71
- package/dist/chat-display.d.ts +0 -1
- package/dist/chat-evidence.d.ts +0 -123
- package/dist/chat-flow.d.ts +0 -70
- package/dist/chat-follow.d.ts +0 -20
- package/dist/chat-inbox.d.ts +0 -57
- package/dist/chat-live-schema.d.ts +0 -17
- package/dist/chat-live.d.ts +0 -161
- package/dist/chat-message-states.d.ts +0 -75
- package/dist/chat-messages.d.ts +0 -338
- package/dist/chat-migration.d.ts +0 -30
- package/dist/chat-polish.d.ts +0 -17
- package/dist/chat-quiet.d.ts +0 -40
- package/dist/chat-review.d.ts +0 -51
- package/dist/chat-rooms.d.ts +0 -123
- package/dist/chat-settings-page.d.ts +0 -43
- package/dist/chat-task-actions.d.ts +0 -59
- package/dist/chat-terms.d.ts +0 -29
- package/dist/chat-voice.d.ts +0 -69
- package/dist/chat-warmth.d.ts +0 -21
- package/dist/check-access.d.ts +0 -54
- package/dist/check-facts.d.ts +0 -126
- package/dist/check-failure.d.ts +0 -113
- package/dist/check-levels-ui.d.ts +0 -36
- package/dist/check-levels.d.ts +0 -70
- package/dist/check-load.d.ts +0 -85
- package/dist/check-only-standing.d.ts +0 -36
- package/dist/check-only.d.ts +0 -15
- package/dist/check-progress.d.ts +0 -78
- package/dist/check-repair.d.ts +0 -47
- package/dist/check-report.d.ts +0 -177
- package/dist/check-stamp.d.ts +0 -46
- package/dist/checkout-cleanup.d.ts +0 -157
- package/dist/checkout-proof.d.ts +0 -28
- package/dist/child-database.d.ts +0 -12
- package/dist/claim.d.ts +0 -627
- package/dist/claude-print.d.ts +0 -12
- package/dist/cli-fast.d.ts +0 -8
- package/dist/cli-help.d.ts +0 -8
- package/dist/cli-http.d.ts +0 -58
- package/dist/cli.d.ts +0 -149
- package/dist/code-extract.d.ts +0 -44
- package/dist/code-map-acts.d.ts +0 -24
- package/dist/code-map-admission.d.ts +0 -52
- package/dist/code-map-build.d.ts +0 -63
- package/dist/code-map-cli.d.ts +0 -153
- package/dist/code-map-main.d.ts +0 -1
- package/dist/code-map-read.d.ts +0 -106
- package/dist/code-map-report.d.ts +0 -37
- package/dist/code-map-shape.d.ts +0 -172
- package/dist/code-map-store.d.ts +0 -136
- package/dist/codex-limits.d.ts +0 -15
- package/dist/coding-context.d.ts +0 -18
- package/dist/coding-handoff.d.ts +0 -39
- package/dist/coding-provider.d.ts +0 -88
- package/dist/coding-shipping-ui.d.ts +0 -5
- package/dist/coding-types.d.ts +0 -16
- package/dist/coding-ui.d.ts +0 -19
- package/dist/coding-update.d.ts +0 -28
- package/dist/coding-workspace.d.ts +0 -141
- package/dist/commit-extract.d.ts +0 -135
- package/dist/connect-cli.d.ts +0 -34
- package/dist/console-chrome.d.ts +0 -41
- package/dist/console-instance.d.ts +0 -157
- package/dist/container-state.d.ts +0 -5
- package/dist/containment.d.ts +0 -205
- package/dist/contract-changes.d.ts +0 -52
- package/dist/contracts/acceptance-terms.d.ts +0 -14
- package/dist/contracts/chat-actions.d.ts +0 -465
- package/dist/contracts/chat-callback-rows.d.ts +0 -59
- package/dist/contracts/chat-card.d.ts +0 -91
- package/dist/contracts/chat-content.d.ts +0 -551
- package/dist/contracts/chat-tables.d.ts +0 -12
- package/dist/contracts/cli.d.ts +0 -987
- package/dist/contracts/coding-activity.d.ts +0 -64
- package/dist/contracts/coding-context.d.ts +0 -97
- package/dist/contracts/coding-handoff.d.ts +0 -44
- package/dist/contracts/coding-workspace.d.ts +0 -165
- package/dist/contracts/console-api.d.ts +0 -539
- package/dist/contracts/contract-test.d.ts +0 -45
- package/dist/contracts/contract.d.ts +0 -92
- package/dist/contracts/decision.d.ts +0 -45
- package/dist/contracts/diff-stat.d.ts +0 -58
- package/dist/contracts/discord-callback.d.ts +0 -45
- package/dist/contracts/flow-card.d.ts +0 -53
- package/dist/contracts/flow-propose.d.ts +0 -334
- package/dist/contracts/flow-send.d.ts +0 -245
- package/dist/contracts/flow.d.ts +0 -19565
- package/dist/contracts/gateway-tools.d.ts +0 -472
- package/dist/contracts/handoff.d.ts +0 -91
- package/dist/contracts/health.d.ts +0 -82
- package/dist/contracts/integration-metadata.d.ts +0 -100
- package/dist/contracts/lead-context.d.ts +0 -165
- package/dist/contracts/lead-tools.d.ts +0 -2312
- package/dist/contracts/mcp-oauth.d.ts +0 -53
- package/dist/contracts/memory-pass.d.ts +0 -157
- package/dist/contracts/model-catalog.d.ts +0 -21
- package/dist/contracts/observation-request.d.ts +0 -37
- package/dist/contracts/plan.d.ts +0 -58
- package/dist/contracts/project-knowledge.d.ts +0 -159
- package/dist/contracts/project-memory.d.ts +0 -119
- package/dist/contracts/project-skills.d.ts +0 -120
- package/dist/contracts/proof.d.ts +0 -136
- package/dist/contracts/provider.d.ts +0 -40
- package/dist/contracts/recipes.d.ts +0 -166
- package/dist/contracts/release-check.d.ts +0 -371
- package/dist/contracts/release-terms.d.ts +0 -107
- package/dist/contracts/retention.d.ts +0 -42
- package/dist/contracts/review-findings.d.ts +0 -46
- package/dist/contracts/route-results.d.ts +0 -121
- package/dist/contracts/route.d.ts +0 -897
- package/dist/contracts/scope.d.ts +0 -105
- package/dist/contracts/scout-report.d.ts +0 -234
- package/dist/contracts/slack-callback.d.ts +0 -43
- package/dist/contracts/sort-answer.d.ts +0 -83
- package/dist/contracts/stage-output.d.ts +0 -127
- package/dist/contracts/storage.d.ts +0 -37
- package/dist/contracts/store-json.d.ts +0 -313
- package/dist/contracts/subagent-turn.d.ts +0 -43
- package/dist/contracts/task-sizing.d.ts +0 -24
- package/dist/contracts/teams-callback.d.ts +0 -13
- package/dist/contracts/telegram-callback.d.ts +0 -120
- package/dist/contracts/trigger-payloads.d.ts +0 -389
- package/dist/contracts/update-journal.d.ts +0 -254
- package/dist/contracts/verification-receipt.d.ts +0 -200
- package/dist/contracts/verification-view.d.ts +0 -102
- package/dist/contracts/youiyoux-request.d.ts +0 -248
- package/dist/control-setup.d.ts +0 -44
- package/dist/control-ui.d.ts +0 -37
- package/dist/controller-service.d.ts +0 -1
- package/dist/controller-supervisor.d.ts +0 -38
- package/dist/converse.d.ts +0 -316
- package/dist/coordinator-proposals.d.ts +0 -29
- package/dist/coordinator.d.ts +0 -186
- package/dist/credentials-ui.d.ts +0 -33
- package/dist/daemon.d.ts +0 -226
- package/dist/database-reclaim.d.ts +0 -4
- package/dist/decision.d.ts +0 -119
- package/dist/demo-chat.d.ts +0 -32
- package/dist/demo.d.ts +0 -153
- package/dist/deploy-gate.d.ts +0 -20
- package/dist/deploy-lock.d.ts +0 -8
- package/dist/deploy-phase.d.ts +0 -37
- package/dist/deploy-rescue.d.ts +0 -42
- package/dist/deprecations.d.ts +0 -20
- package/dist/design/kit.d.ts +0 -216
- package/dist/desktop-access.d.ts +0 -28
- package/dist/desktop-bundle.d.ts +0 -16
- package/dist/desktop-host.d.ts +0 -54
- package/dist/desktop-update-gate.d.ts +0 -12
- package/dist/desktop-update-recovery.d.ts +0 -14
- package/dist/desktop-update.d.ts +0 -147
- package/dist/digest-times.d.ts +0 -3
- package/dist/disclosure.d.ts +0 -6
- package/dist/discord-api.d.ts +0 -24
- package/dist/discord-chat.d.ts +0 -27
- package/dist/discord-settings.d.ts +0 -4
- package/dist/discord.d.ts +0 -10
- package/dist/discover.d.ts +0 -75
- package/dist/dispatch.d.ts +0 -123
- package/dist/dispose.d.ts +0 -194
- package/dist/doctor.d.ts +0 -67
- package/dist/easy-start-args.d.ts +0 -13
- package/dist/easy-start.d.ts +0 -77
- package/dist/egress.d.ts +0 -121
- package/dist/email-settings.d.ts +0 -34
- package/dist/envelope.d.ts +0 -47
- package/dist/eval-gate.d.ts +0 -51
- package/dist/eval-hooks.d.ts +0 -94
- package/dist/eval-oracle-main.d.ts +0 -1
- package/dist/eval-oracle.d.ts +0 -60
- package/dist/eval-world.d.ts +0 -17
- package/dist/evals.d.ts +0 -299
- package/dist/evidence-pack.d.ts +0 -186
- package/dist/evidence-pair.d.ts +0 -53
- package/dist/evidence.d.ts +0 -371
- package/dist/exec.d.ts +0 -355
- package/dist/exhaustion.d.ts +0 -58
- package/dist/export-ui.d.ts +0 -11
- package/dist/export.d.ts +0 -48
- package/dist/failing-first.d.ts +0 -31
- package/dist/fallback-schema.d.ts +0 -8
- package/dist/fallback.d.ts +0 -138
- package/dist/fast-start.d.ts +0 -213
- package/dist/fast-terms.d.ts +0 -9
- package/dist/fenced-check-coverage.d.ts +0 -62
- package/dist/findings.d.ts +0 -224
- package/dist/first-run.d.ts +0 -197
- package/dist/first-tasks-child.d.ts +0 -1
- package/dist/flaky-ci.d.ts +0 -31
- package/dist/flaky-cli.d.ts +0 -60
- package/dist/flaky.d.ts +0 -83
- package/dist/fleet-schema.d.ts +0 -17
- package/dist/flow-actions.d.ts +0 -79
- package/dist/flow-browser.d.ts +0 -103
- package/dist/flow-cadence.d.ts +0 -48
- package/dist/flow-card-task.d.ts +0 -11
- package/dist/flow-changed.d.ts +0 -14
- package/dist/flow-code.d.ts +0 -84
- package/dist/flow-draft.d.ts +0 -42
- package/dist/flow-engine.d.ts +0 -82
- package/dist/flow-gallery-ui.d.ts +0 -73
- package/dist/flow-gallery.d.ts +0 -147
- package/dist/flow-insights.d.ts +0 -104
- package/dist/flow-items.d.ts +0 -37
- package/dist/flow-live.d.ts +0 -16
- package/dist/flow-people.d.ts +0 -23
- package/dist/flow-pull-request.d.ts +0 -14
- package/dist/flow-replies.d.ts +0 -48
- package/dist/flow-result-card.d.ts +0 -22
- package/dist/flow-schedule.d.ts +0 -154
- package/dist/flow-scripts.d.ts +0 -31
- package/dist/flow-secrets.d.ts +0 -13
- package/dist/flow-send.d.ts +0 -54
- package/dist/flow-share.d.ts +0 -78
- package/dist/flow-sort.d.ts +0 -63
- package/dist/flow-starters-ui.d.ts +0 -15
- package/dist/flow-starters.d.ts +0 -63
- package/dist/flow-steps.d.ts +0 -52
- package/dist/flow-triggers.d.ts +0 -303
- package/dist/flow-unattended-words.d.ts +0 -48
- package/dist/flow-unattended.d.ts +0 -259
- package/dist/flows-cli.d.ts +0 -358
- package/dist/flows-ui.d.ts +0 -70
- package/dist/flows.d.ts +0 -136
- package/dist/folder-gate.d.ts +0 -32
- package/dist/folder-look.d.ts +0 -110
- package/dist/follow-through-brief.d.ts +0 -12
- package/dist/follow-through-cli.d.ts +0 -23
- package/dist/fonts.d.ts +0 -19
- package/dist/gaps.d.ts +0 -35
- package/dist/gate-failure.d.ts +0 -40
- package/dist/git-floor.d.ts +0 -16
- package/dist/git-incident.d.ts +0 -65
- package/dist/git-views.d.ts +0 -20
- package/dist/git.d.ts +0 -54
- package/dist/github-import.d.ts +0 -62
- package/dist/github-jobs.d.ts +0 -25
- package/dist/google-mail.d.ts +0 -59
- package/dist/grant.d.ts +0 -136
- package/dist/graph.d.ts +0 -164
- package/dist/guides.d.ts +0 -22
- package/dist/handover-note.d.ts +0 -33
- package/dist/health-cli.d.ts +0 -3
- package/dist/home-groups.d.ts +0 -39
- package/dist/html.d.ts +0 -85
- package/dist/install-method.d.ts +0 -17
- package/dist/integrations-ui.d.ts +0 -17
- package/dist/integrations.d.ts +0 -138
- package/dist/invoke.d.ts +0 -228
- package/dist/is-record.d.ts +0 -2
- package/dist/issues.d.ts +0 -41
- package/dist/jsonl-discriminants.d.ts +0 -11
- package/dist/keymap.d.ts +0 -41
- package/dist/keys.d.ts +0 -108
- package/dist/kits-ui.d.ts +0 -16
- package/dist/kits.d.ts +0 -88
- package/dist/knowledge-cli.d.ts +0 -132
- package/dist/knowledge-ui.d.ts +0 -45
- package/dist/landed-cleanup.d.ts +0 -175
- package/dist/laptop-background.d.ts +0 -187
- package/dist/laptop-service.d.ts +0 -111
- package/dist/latency-timeline.d.ts +0 -46
- package/dist/lead-about.d.ts +0 -35
- package/dist/lead-answer-eval.d.ts +0 -93
- package/dist/lead-capabilities.d.ts +0 -57
- package/dist/lead-cli-live.d.ts +0 -56
- package/dist/lead-cli.d.ts +0 -58
- package/dist/lead-commitments.d.ts +0 -84
- package/dist/lead-context.d.ts +0 -45
- package/dist/lead-contract.d.ts +0 -10
- package/dist/lead-doors.d.ts +0 -122
- package/dist/lead-follow.d.ts +0 -26
- package/dist/lead-identity.d.ts +0 -23
- package/dist/lead-latency-schema.d.ts +0 -24
- package/dist/lead-people.d.ts +0 -55
- package/dist/lead-progress.d.ts +0 -67
- package/dist/lead-queue-runtime.d.ts +0 -46
- package/dist/lead-queue.d.ts +0 -104
- package/dist/lead-route.d.ts +0 -56
- package/dist/lead-status.d.ts +0 -116
- package/dist/lead-sweep.d.ts +0 -67
- package/dist/lead-tools.d.ts +0 -167
- package/dist/lead-voice.d.ts +0 -85
- package/dist/lead.d.ts +0 -142
- package/dist/learning-child.d.ts +0 -1
- package/dist/learning-look.d.ts +0 -25
- package/dist/ledger-chain.d.ts +0 -46
- package/dist/ledger-csv.d.ts +0 -4
- package/dist/ledger-view.d.ts +0 -27
- package/dist/lesson-notes.d.ts +0 -81
- package/dist/limits-ui.d.ts +0 -34
- package/dist/link.d.ts +0 -72
- package/dist/live-backup.d.ts +0 -39
- package/dist/live-bus.d.ts +0 -141
- package/dist/live-children-read.d.ts +0 -52
- package/dist/live-children.d.ts +0 -73
- package/dist/live-detail.d.ts +0 -27
- package/dist/live-input.d.ts +0 -68
- package/dist/live-main-read.d.ts +0 -19
- package/dist/live-notes.d.ts +0 -20
- package/dist/live-open.d.ts +0 -28
- package/dist/live-records.d.ts +0 -149
- package/dist/live-reply.d.ts +0 -83
- package/dist/live-terminal.d.ts +0 -273
- package/dist/live.d.ts +0 -152
- package/dist/local-owner.d.ts +0 -124
- package/dist/log.d.ts +0 -7
- package/dist/login-secrets.d.ts +0 -60
- package/dist/machine-check.d.ts +0 -16
- package/dist/machine-identity.d.ts +0 -75
- package/dist/mailbox.d.ts +0 -57
- package/dist/maintenance.d.ts +0 -13
- package/dist/mcp-connect.d.ts +0 -181
- package/dist/mcp-core.d.ts +0 -110
- package/dist/mcp-http.d.ts +0 -32
- package/dist/mcp-oauth.d.ts +0 -92
- package/dist/mcp-person.d.ts +0 -22
- package/dist/mcp.d.ts +0 -20
- package/dist/memory-cli.d.ts +0 -768
- package/dist/memory-pass.d.ts +0 -151
- package/dist/memory-tidy.d.ts +0 -181
- package/dist/memory-use.d.ts +0 -35
- package/dist/merge-checklist.d.ts +0 -55
- package/dist/metrics.d.ts +0 -6
- package/dist/mobile-viewport.d.ts +0 -7
- package/dist/model-catalog.d.ts +0 -123
- package/dist/model-choices.d.ts +0 -235
- package/dist/model-names.d.ts +0 -6
- package/dist/models-cli.d.ts +0 -307
- package/dist/models-ui.d.ts +0 -161
- package/dist/modes.d.ts +0 -99
- package/dist/monitoring-settings.d.ts +0 -44
- package/dist/monitoring-ui.d.ts +0 -23
- package/dist/monitoring.d.ts +0 -34
- package/dist/names.d.ts +0 -67
- package/dist/needs-you.d.ts +0 -164
- package/dist/never-index.d.ts +0 -3
- package/dist/nightly-check.d.ts +0 -107
- package/dist/nightly-github.d.ts +0 -318
- package/dist/notification-delivery.d.ts +0 -19
- package/dist/notification-rows.d.ts +0 -30
- package/dist/oauth-run-token.d.ts +0 -51
- package/dist/observations.d.ts +0 -36
- package/dist/oidc.d.ts +0 -71
- package/dist/onboard.d.ts +0 -108
- package/dist/one-step-chat-schema.d.ts +0 -22
- package/dist/openrouter-models.d.ts +0 -34
- package/dist/operate-remote-arguments.d.ts +0 -36
- package/dist/operate-remote.d.ts +0 -98
- package/dist/operate.d.ts +0 -401
- package/dist/orphan-sweep.d.ts +0 -65
- package/dist/page-work-contract.d.ts +0 -21
- package/dist/password-bearer.d.ts +0 -25
- package/dist/passwordless.d.ts +0 -23
- package/dist/peek-cli.d.ts +0 -112
- package/dist/peek.d.ts +0 -110
- package/dist/people-audit-ui.d.ts +0 -16
- package/dist/person-proof.d.ts +0 -2
- package/dist/phase-routing.d.ts +0 -401
- package/dist/plain-schema.d.ts +0 -23
- package/dist/plain-words.d.ts +0 -20
- package/dist/plan-auto.d.ts +0 -25
- package/dist/plan-login.d.ts +0 -14
- package/dist/plan.d.ts +0 -188
- package/dist/plane-review.d.ts +0 -54
- package/dist/planner-source.d.ts +0 -225
- package/dist/planner.d.ts +0 -76
- package/dist/policy-ui.d.ts +0 -22
- package/dist/policy.d.ts +0 -92
- package/dist/prepared-evidence.d.ts +0 -17
- package/dist/principal.d.ts +0 -42
- package/dist/probe.d.ts +0 -46
- package/dist/process-custody.d.ts +0 -17
- package/dist/process-liveness.d.ts +0 -13
- package/dist/process-tree.d.ts +0 -39
- package/dist/project-access.d.ts +0 -17
- package/dist/project-activity.d.ts +0 -20
- package/dist/project-admission.d.ts +0 -105
- package/dist/project-cli.d.ts +0 -19
- package/dist/project-concurrency.d.ts +0 -62
- package/dist/project-delete-ui.d.ts +0 -96
- package/dist/project-delete.d.ts +0 -59
- package/dist/project-demo.d.ts +0 -12
- package/dist/project-file.d.ts +0 -3
- package/dist/project-identity.d.ts +0 -52
- package/dist/project-knowledge.d.ts +0 -124
- package/dist/project-learning.d.ts +0 -120
- package/dist/project-memory.d.ts +0 -70
- package/dist/project-outcomes.d.ts +0 -119
- package/dist/project-sandbox.d.ts +0 -59
- package/dist/project-skills.d.ts +0 -139
- package/dist/project-tools.d.ts +0 -318
- package/dist/project.d.ts +0 -65
- package/dist/prompt.d.ts +0 -33
- package/dist/proof.d.ts +0 -457
- package/dist/proposal.d.ts +0 -70
- package/dist/protected-storage-look.d.ts +0 -1
- package/dist/protected-storage.d.ts +0 -98
- package/dist/provider-auth.d.ts +0 -143
- package/dist/provider-capture.d.ts +0 -34
- package/dist/provider-connection.d.ts +0 -23
- package/dist/provider-home.d.ts +0 -22
- package/dist/provider-limits.d.ts +0 -37
- package/dist/provider.d.ts +0 -369
- package/dist/public-access.d.ts +0 -52
- package/dist/public-check.d.ts +0 -37
- package/dist/publish.d.ts +0 -146
- package/dist/pull-request-flow.d.ts +0 -189
- package/dist/pull-request-schema.d.ts +0 -5
- package/dist/pull-request-ui.d.ts +0 -25
- package/dist/pulls.d.ts +0 -121
- package/dist/push.d.ts +0 -120
- package/dist/quality.d.ts +0 -8
- package/dist/quick-start.d.ts +0 -26
- package/dist/read-executor-worker.d.ts +0 -1
- package/dist/read-executor.d.ts +0 -66
- package/dist/read-only-request.d.ts +0 -4
- package/dist/recipe-ui.d.ts +0 -21
- package/dist/recipes.d.ts +0 -56
- package/dist/release-adapters.d.ts +0 -205
- package/dist/release-approval.d.ts +0 -180
- package/dist/release-authority.d.ts +0 -173
- package/dist/release-auto.d.ts +0 -184
- package/dist/release-card.d.ts +0 -156
- package/dist/release-carry.d.ts +0 -261
- package/dist/release-ci-hold.d.ts +0 -41
- package/dist/release-cli.d.ts +0 -34
- package/dist/release-coverage.d.ts +0 -16
- package/dist/release-gate.d.ts +0 -84
- package/dist/release-git.d.ts +0 -43
- package/dist/release-links.d.ts +0 -29
- package/dist/release-net.d.ts +0 -90
- package/dist/release-next.d.ts +0 -48
- package/dist/release-recheck.d.ts +0 -146
- package/dist/release-refusal.d.ts +0 -32
- package/dist/release-view.d.ts +0 -37
- package/dist/release.d.ts +0 -806
- package/dist/releases.d.ts +0 -94
- package/dist/remote-audit.d.ts +0 -79
- package/dist/remote-command.d.ts +0 -45
- package/dist/remote-destination.d.ts +0 -36
- package/dist/remote-exec.d.ts +0 -38
- package/dist/remote-main.d.ts +0 -111
- package/dist/remote-run.d.ts +0 -20
- package/dist/remote.d.ts +0 -67
- package/dist/render.d.ts +0 -64
- package/dist/reply-shape.d.ts +0 -106
- package/dist/reply-voice.d.ts +0 -23
- package/dist/report-summary.d.ts +0 -22
- package/dist/reported-usage.d.ts +0 -69
- package/dist/repos.d.ts +0 -67
- package/dist/repository-context-ui.d.ts +0 -3
- package/dist/repository-context.d.ts +0 -66
- package/dist/request-budget-ui.d.ts +0 -14
- package/dist/request-budget.d.ts +0 -127
- package/dist/restart-certification.d.ts +0 -133
- package/dist/result-actions.d.ts +0 -36
- package/dist/result-acts.d.ts +0 -112
- package/dist/result-completion.d.ts +0 -35
- package/dist/result-evidence-readers.d.ts +0 -42
- package/dist/result-follow-ups.d.ts +0 -118
- package/dist/result-review.d.ts +0 -220
- package/dist/result-shots.d.ts +0 -59
- package/dist/retention-ui.d.ts +0 -21
- package/dist/retention.d.ts +0 -77
- package/dist/review-context.d.ts +0 -245
- package/dist/review-evidence.d.ts +0 -33
- package/dist/review-switch.d.ts +0 -36
- package/dist/reviewer.d.ts +0 -99
- package/dist/route-change-check.d.ts +0 -4
- package/dist/route-change.d.ts +0 -22
- package/dist/route-hooks.d.ts +0 -54
- package/dist/route-results.d.ts +0 -75
- package/dist/route-rules.d.ts +0 -324
- package/dist/route-savings.d.ts +0 -136
- package/dist/route-store.d.ts +0 -300
- package/dist/run-closeout.d.ts +0 -89
- package/dist/run-efficiency.d.ts +0 -74
- package/dist/run-ending.d.ts +0 -21
- package/dist/runner-process.d.ts +0 -76
- package/dist/runner.d.ts +0 -324
- package/dist/sample-project.d.ts +0 -31
- package/dist/sandbox-launch.d.ts +0 -1
- package/dist/sandbox-runtime.d.ts +0 -128
- package/dist/scan.d.ts +0 -32
- package/dist/scope.d.ts +0 -1067
- package/dist/scout-browser-lock.d.ts +0 -69
- package/dist/scout-browser.d.ts +0 -107
- package/dist/scout-net.d.ts +0 -25
- package/dist/scout-report.d.ts +0 -23
- package/dist/scout.d.ts +0 -142
- package/dist/secret-mint.d.ts +0 -1
- package/dist/serve.d.ts +0 -11
- package/dist/server/agents-computers.d.ts +0 -9
- package/dist/server/agents-live-filed.d.ts +0 -17
- package/dist/server/agents-live-lead.d.ts +0 -47
- package/dist/server/agents-live-room.d.ts +0 -23
- package/dist/server/chat.d.ts +0 -39
- package/dist/server/chrome.d.ts +0 -328
- package/dist/server/edge-refusal.d.ts +0 -7
- package/dist/server/flows.d.ts +0 -8
- package/dist/server/guards.d.ts +0 -80
- package/dist/server/handler-context.d.ts +0 -22
- package/dist/server/handler-registry.d.ts +0 -23
- package/dist/server/home-asks.d.ts +0 -45
- package/dist/server/home.d.ts +0 -65
- package/dist/server/http.d.ts +0 -337
- package/dist/server/in-place.d.ts +0 -15
- package/dist/server/kit-standalone.d.ts +0 -22
- package/dist/server/kit.d.ts +0 -452
- package/dist/server/last-checks.d.ts +0 -17
- package/dist/server/live.d.ts +0 -74
- package/dist/server/merge-ready-view.d.ts +0 -10
- package/dist/server/mutation-key.d.ts +0 -70
- package/dist/server/pages-assets.d.ts +0 -11
- package/dist/server/pages.d.ts +0 -8
- package/dist/server/people-tokens.d.ts +0 -18
- package/dist/server/remote-hooks.d.ts +0 -29
- package/dist/server/remote.d.ts +0 -59
- package/dist/server/render-chat.d.ts +0 -439
- package/dist/server/render-code-map.d.ts +0 -30
- package/dist/server/render-flaky.d.ts +0 -20
- package/dist/server/render-follow-through.d.ts +0 -11
- package/dist/server/render-history.d.ts +0 -51
- package/dist/server/render-new-task.d.ts +0 -54
- package/dist/server/render-pages.d.ts +0 -236
- package/dist/server/render-people.d.ts +0 -102
- package/dist/server/render-projects.d.ts +0 -104
- package/dist/server/render-release.d.ts +0 -19
- package/dist/server/render-results.d.ts +0 -754
- package/dist/server/render-settings.d.ts +0 -93
- package/dist/server/render-tasks.d.ts +0 -774
- package/dist/server/request-context.d.ts +0 -78
- package/dist/server/retired-routes.d.ts +0 -17
- package/dist/server/route-policy.d.ts +0 -18
- package/dist/server/route-table.d.ts +0 -114
- package/dist/server/runtime.d.ts +0 -342
- package/dist/server/session.d.ts +0 -192
- package/dist/server/settings.d.ts +0 -76
- package/dist/server/signup-gate.d.ts +0 -9
- package/dist/server/sweeps.d.ts +0 -4
- package/dist/server/task-views.d.ts +0 -98
- package/dist/server/tasks.d.ts +0 -83
- package/dist/server/terminals.d.ts +0 -31
- package/dist/server/welcome.d.ts +0 -28
- package/dist/server-telemetry.d.ts +0 -87
- package/dist/settings-groups-ui.d.ts +0 -286
- package/dist/settings-kit-script.d.ts +0 -21
- package/dist/settings-kit.d.ts +0 -173
- package/dist/settings-proofs.d.ts +0 -64
- package/dist/setup-guide.d.ts +0 -39
- package/dist/shared-deps.d.ts +0 -115
- package/dist/sign-in-guard.d.ts +0 -70
- package/dist/skills-ui.d.ts +0 -12
- package/dist/skills.d.ts +0 -99
- package/dist/slack-api.d.ts +0 -59
- package/dist/slack-chat.d.ts +0 -37
- package/dist/slack-settings.d.ts +0 -4
- package/dist/slack-socket.d.ts +0 -12
- package/dist/slack.d.ts +0 -6
- package/dist/sleep.d.ts +0 -2
- package/dist/source-key.d.ts +0 -2
- package/dist/spend-report.d.ts +0 -87
- package/dist/spend-ui.d.ts +0 -80
- package/dist/spend.d.ts +0 -142
- package/dist/sqlite-runtime.d.ts +0 -3
- package/dist/sqlite-telemetry.d.ts +0 -9
- package/dist/sso-settings.d.ts +0 -33
- package/dist/sso-ui.d.ts +0 -26
- package/dist/staged-runtimes.d.ts +0 -54
- package/dist/steer-capabilities.d.ts +0 -32
- package/dist/steer-controls.d.ts +0 -14
- package/dist/steer-live.d.ts +0 -19
- package/dist/steer-mailbox.d.ts +0 -46
- package/dist/steer-status.d.ts +0 -25
- package/dist/stop-proof.d.ts +0 -67
- package/dist/storage-sweep-child.d.ts +0 -1
- package/dist/storage-sweep-process.d.ts +0 -55
- package/dist/storage-sweep-schedule.d.ts +0 -30
- package/dist/storage-sweep.d.ts +0 -77
- package/dist/storage-ui.d.ts +0 -23
- package/dist/storage.d.ts +0 -68
- package/dist/store-baseline.d.ts +0 -19
- package/dist/store.d.ts +0 -8613
- package/dist/stream-scope.d.ts +0 -18
- package/dist/structured-output.d.ts +0 -57
- package/dist/style-asset.d.ts +0 -7
- package/dist/subagent-admin.d.ts +0 -53
- package/dist/subagent-desk.d.ts +0 -59
- package/dist/subagent-memory.d.ts +0 -65
- package/dist/subagent-question.d.ts +0 -59
- package/dist/subagent-tools.d.ts +0 -125
- package/dist/subagent-week.d.ts +0 -68
- package/dist/subagent-work.d.ts +0 -76
- package/dist/subagents-ui.d.ts +0 -22
- package/dist/subagents.d.ts +0 -146
- package/dist/subscription-chat.d.ts +0 -54
- package/dist/summary.d.ts +0 -33
- package/dist/surface.d.ts +0 -49
- package/dist/sweep-gate.d.ts +0 -10
- package/dist/sweep-quarantine.d.ts +0 -29
- package/dist/sync.d.ts +0 -94
- package/dist/tailnet.d.ts +0 -11
- package/dist/tamper-scan.d.ts +0 -4
- package/dist/task-activity.d.ts +0 -27
- package/dist/task-aliases.d.ts +0 -5
- package/dist/task-archive.d.ts +0 -13
- package/dist/task-base.d.ts +0 -39
- package/dist/task-composer.d.ts +0 -14
- package/dist/task-control.d.ts +0 -159
- package/dist/task-live.d.ts +0 -8
- package/dist/task-moves.d.ts +0 -90
- package/dist/task-outcome-cli.d.ts +0 -30
- package/dist/task-review-brief.d.ts +0 -69
- package/dist/task-sizing.d.ts +0 -58
- package/dist/task-source.d.ts +0 -77
- package/dist/task-status.d.ts +0 -324
- package/dist/task-text.d.ts +0 -31
- package/dist/team-chat-authorization.d.ts +0 -11
- package/dist/team-contract.d.ts +0 -103
- package/dist/team-http.d.ts +0 -25
- package/dist/team-leads.d.ts +0 -85
- package/dist/team-runtime.d.ts +0 -25
- package/dist/team-ui.d.ts +0 -4
- package/dist/team-updates.d.ts +0 -8
- package/dist/teams-api.d.ts +0 -33
- package/dist/teams-chat.d.ts +0 -36
- package/dist/teams-settings.d.ts +0 -14
- package/dist/teams.d.ts +0 -24
- package/dist/teardown-git.d.ts +0 -164
- package/dist/telegram-flow.d.ts +0 -112
- package/dist/telegram-lead.d.ts +0 -151
- package/dist/telegram-live.d.ts +0 -116
- package/dist/telegram-progress.d.ts +0 -20
- package/dist/telegram-settings.d.ts +0 -9
- package/dist/telegram-status.d.ts +0 -83
- package/dist/telegram-team.d.ts +0 -68
- package/dist/telegram.d.ts +0 -271
- package/dist/templates.d.ts +0 -69
- package/dist/terminal-catalog.d.ts +0 -11
- package/dist/terminal-text.d.ts +0 -11
- package/dist/test-infra.d.ts +0 -34
- package/dist/test-temp.d.ts +0 -40
- package/dist/text-limits.d.ts +0 -297
- package/dist/tidy.d.ts +0 -130
- package/dist/tier-report.d.ts +0 -44
- package/dist/token-notices.d.ts +0 -11
- package/dist/tokens-cli.d.ts +0 -21
- package/dist/tool-broker.d.ts +0 -52
- package/dist/tool-launcher.d.ts +0 -1
- package/dist/tool-secret-store.d.ts +0 -167
- package/dist/toolroll-update-cli.d.ts +0 -15
- package/dist/toolroll-update-ui.d.ts +0 -47
- package/dist/toolroll-update.d.ts +0 -265
- package/dist/tools-ui.d.ts +0 -51
- package/dist/transitions-recipes.d.ts +0 -1
- package/dist/tree-proof.d.ts +0 -34
- package/dist/tui-contract.d.ts +0 -144
- package/dist/tui-source.d.ts +0 -14
- package/dist/typed-start.d.ts +0 -51
- package/dist/unfenced-test-support.d.ts +0 -2
- package/dist/up-processes.d.ts +0 -162
- package/dist/up-role-child.d.ts +0 -1
- package/dist/update-notice.d.ts +0 -5
- package/dist/vanished-retry.d.ts +0 -30
- package/dist/verification-evidence.d.ts +0 -68
- package/dist/version.d.ts +0 -2
- package/dist/wake-hub.d.ts +0 -72
- package/dist/webhook-limits.d.ts +0 -23
- package/dist/webhook-readers.d.ts +0 -56
- package/dist/webhook-signing.d.ts +0 -27
- package/dist/webhooks.d.ts +0 -84
- package/dist/welcome-facts.d.ts +0 -18
- package/dist/when-html.d.ts +0 -40
- package/dist/work-index.d.ts +0 -175
- package/dist/work-summary.d.ts +0 -61
- package/dist/workspace-motion.d.ts +0 -4
- package/dist/workspace-revision.d.ts +0 -48
- package/dist/workspace-ui.d.ts +0 -385
- package/dist/worktree-notices.d.ts +0 -13
- package/dist/worktree.d.ts +0 -365
- package/dist/writes-mode.d.ts +0 -9
- package/dist/youiyoux-intake.d.ts +0 -234
package/dist/assignment-ui.js
CHANGED
|
@@ -4,8 +4,6 @@ import { chatResultHref } from './chat-controls.js';
|
|
|
4
4
|
import { startBuilderHref } from './needs-you.js';
|
|
5
5
|
import { statusDetailsHtml, statusWhyHtml } from './task-status.js';
|
|
6
6
|
import { html } from './html.js';
|
|
7
|
-
/** The existing verified receipt reader may discover damage after a verdict
|
|
8
|
-
* was saved. Keep the limitation visible without inventing another work stage. */
|
|
9
7
|
export function assignmentWithEvidence(assignment, resultStatus, resultRunId = assignment.receipt?.runId ?? null) {
|
|
10
8
|
if (resultStatus?.token !== 'evidence-damaged')
|
|
11
9
|
return assignment;
|
|
@@ -18,7 +16,6 @@ export function assignmentStatusOf(assignment, workStatus) {
|
|
|
18
16
|
return assignmentPresentationOf(assignment, workStatus === undefined ? {} : { workStatus }).status;
|
|
19
17
|
}
|
|
20
18
|
const taskHref = (assignment, taskId) => `/t/${encodeURIComponent(assignment.rootId)}?version=${encodeURIComponent(taskId)}`;
|
|
21
|
-
/** Navigation only. A control action still opens its existing exact ceremony. */
|
|
22
19
|
export function assignmentActionHref(assignment) {
|
|
23
20
|
const action = assignment.primaryAction;
|
|
24
21
|
if (action === null)
|
|
@@ -32,7 +29,6 @@ export function assignmentActionHref(assignment) {
|
|
|
32
29
|
return '/';
|
|
33
30
|
if (action.code === 'sign-in')
|
|
34
31
|
return '/settings/agents#providers';
|
|
35
|
-
// The confirmation sits on the task page, behind the password.
|
|
36
32
|
if (action.code === 'recheck-stopped')
|
|
37
33
|
return `/t/${encodeURIComponent(assignment.rootId)}#recheck-stopped`;
|
|
38
34
|
if (action.code === 'open-pr' && /^https:\/\/github\.com\/[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+\/pull\/\d+$/.test(assignment.publication?.prUrl ?? ''))
|
|
@@ -42,19 +38,16 @@ export function assignmentActionHref(assignment) {
|
|
|
42
38
|
}
|
|
43
39
|
if (runId !== null && (action.code === 'inspect-run' || action.code === 'reconcile-run'))
|
|
44
40
|
return `/r/${runId}`;
|
|
45
|
-
// The task page only repeats that no builder is connected: lead to the command that connects one.
|
|
46
41
|
if (action.code === 'start-worker')
|
|
47
42
|
return startBuilderHref(taskId);
|
|
48
43
|
const anchor = action.code === 'approve-scope' ? '#approve'
|
|
49
44
|
: action.code === 'inspect-stop' || action.code === 'resume-run' ? '#task-control'
|
|
50
|
-
// Retry (and Build again) is the task's status card itself, at the top: no anchor to its options.
|
|
51
45
|
: action.code === 'unhold' ? '#task-actions'
|
|
52
46
|
: action.code === 'write-scope' || action.code === 'select-agent' ? '#scope'
|
|
53
47
|
: action.code === 'inspect-hold' ? '#holds'
|
|
54
48
|
: action.code === 'repair-dependency' ? '#run-status' : '';
|
|
55
49
|
return taskHref(assignment, taskId) + anchor;
|
|
56
50
|
}
|
|
57
|
-
/** Every version of the assignment, oldest first, as the card lists them. */
|
|
58
51
|
export function assignmentAttemptsOf(assignment) {
|
|
59
52
|
return assignment.attempts.map((attempt, index) => ({
|
|
60
53
|
taskId: attempt.taskId, label: `${index === 0 ? 'Original' : `Correction ${index}`} · ${attempt.label}`,
|
|
@@ -67,8 +60,6 @@ export function assignmentAttemptsHtml(assignment) {
|
|
|
67
60
|
return html ``;
|
|
68
61
|
return html `<details class="assignment-attempts"><summary>Attempts <span class="meta">${assignment.attempts.length}</span></summary><ol>${assignmentAttemptsOf(assignment).map(attempt => html `<li data-attempt-task="${attempt.taskId}" data-history-version="${attempt.taskId}"><a href="${attempt.href}">${attempt.label}</a>${attempt.runId === null ? '' : html ` <a href="/r/${attempt.runId}">Build #${attempt.runId}</a>`}${attempt.detail === null ? '' : html `<p class="meta">${attempt.detail}</p>`}</li>`)}</ol>${assignment.owner === null ? '' : html `<p class="meta">Lead: ${assignment.owner.label}${assignment.owner.active ? '' : ' · access ended'}</p>`}<p class="work-meta work-id">Task <span class="mono">${assignment.rootId}</span></p></details>`;
|
|
69
62
|
}
|
|
70
|
-
/** Only recognized storage limits and explicitly identified older records are
|
|
71
|
-
* secondary. Unknown findings and damaged current material stay in view. */
|
|
72
63
|
function savedMaterialNotice(detail, assignment) {
|
|
73
64
|
if (shortenedMaterialReason(detail))
|
|
74
65
|
return 'partial';
|
|
@@ -78,8 +69,6 @@ function savedMaterialNotice(detail, assignment) {
|
|
|
78
69
|
}
|
|
79
70
|
export function assignmentCardOf(assignment, options = {}) {
|
|
80
71
|
const receipt = assignment.receipt;
|
|
81
|
-
// The checks live on the one result page (a failed build has one too), where Run checks runs in place; never Chat,
|
|
82
|
-
// which would only lead back to this card.
|
|
83
72
|
const checksPage = receipt === null ? null : `/review?result=${encodeURIComponent(receipt.taskId)}&run=${receipt.runId}&tab=checks`;
|
|
84
73
|
const links = receipt === null ? {} : { result: options.resultHref ?? chatResultHref(receipt.taskId, receipt.runId), checks: checksPage,
|
|
85
74
|
pullRequest: `/t/${encodeURIComponent(assignment.rootId)}#merge`,
|
|
@@ -108,5 +97,4 @@ export function assignmentSummaryHtml(assignment, options = {}) {
|
|
|
108
97
|
const tone = card.status.tone;
|
|
109
98
|
return html `<section class="${options.compact ? 'assignment-summary' : 'card assignment-summary'}" aria-label="assignment progress" data-assignment="${assignment.rootId}" data-work-status="${card.token}" data-tone="${card.tone}" data-headline="${card.status.headline}" data-headline-tone="${tone}"${options.compact ? '' : html ` data-task-status`}>${options.compact ? html `<span class="status-line" data-work-status="${card.token}" data-tone="${card.tone}"><i class="status-dot" aria-hidden="true"></i><span class="status-label">${card.label}</span></span>` : html `<h2 class="assignment-state status-headline"><i aria-hidden="true"></i>${card.label}</h2>`}<p class="meta assignment-detail status-sentence">${options.sentence ?? card.status.sentence}</p>${card.action === null ? '' : html `<a class="${options.compact ? 'work-action' : 'button-link'}" href="${card.action.href}"${card.action.openResult ? html ` data-open-result` : ''}${options.compact ? '' : html ` data-primary-action`}>${card.action.label}${options.compact ? ' →' : ''}</a>`}${options.compact ? '' : statusDetailsHtml(card.status)}${statusWhyHtml(card.status, card.reasons, card.diagnostics)}${card.notices === null ? '' : html `<details class="assignment-notices"><summary>${card.notices.summary}</summary>${card.notices.lines.map(one => html `<p class="meta">${one}</p>`)}</details>`}${assignmentAttemptsHtml(assignment)}</section>`;
|
|
110
99
|
}
|
|
111
|
-
/** Shared assignment layout; actions remain comfortable on touch screens. */
|
|
112
100
|
export const ASSIGNMENT_CSS = `.assignment-summary{min-width:0;overflow-wrap:anywhere}.assignment-summary .assignment-state{font-weight:600;margin:0}.assignment-summary h2.assignment-state{font-size:1.125rem;color:var(--foreground)}.assignment-summary>.assignment-attempts,.assignment-summary>.assignment-notices{border:0;box-shadow:none;padding:0;margin:.25rem 0 0;background:transparent}.assignment-summary>.button-link{margin-top:.7rem;min-height:44px}.assignment-summary>.work-action{display:inline-flex;margin-inline-start:.6rem;min-height:44px;align-items:center}.assignment-detail{margin:.55rem 0}.assignment-attempts summary,.assignment-notices summary{min-height:44px;display:list-item;align-content:center;cursor:pointer}.assignment-notices summary{font-size:.8125rem;color:var(--foreground)}.assignment-notices p{margin:.25rem 0 .5rem}.assignment-attempts ol{padding-left:1.4rem}.assignment-attempts li{margin:.4rem 0}.assignment-attempts li a{display:inline-flex;align-items:center;min-height:44px;margin-right:.7rem}.assignment-attempts li p{margin:0 0 .4rem}`;
|
package/dist/assignment.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/** One assignment follows the existing task family. It owns no execution,
|
|
2
|
-
* approval or proof state. Lead ownership and exact receipt acknowledgments
|
|
3
|
-
* are append-only actions; handoffs use the existing durable outbox. */
|
|
4
1
|
import { fastCompletionProblem } from "./fast-start.js";
|
|
5
2
|
import { createHash } from "node:crypto";
|
|
6
3
|
import { currentActor, withActor } from "./actor.js";
|
|
@@ -8,12 +5,13 @@ import { replacedWords } from "./task-status.js";
|
|
|
8
5
|
import { COMPLETER_ACTOR, COMPLETION_ACTION, COMPLETION_BY_MACHINE, COMPLETION_BY_PERSON, familyChangedFiles, landedReasonOf, personCompletionOwed } from "./result-completion.js";
|
|
9
6
|
import { homedir } from "node:os";
|
|
10
7
|
import { readSchemaVersion, refArchived, stopFactOf } from "./store.js";
|
|
11
|
-
import { approvalOf, liveReleaseOf, machineActing } from "./scope.js";
|
|
8
|
+
import { approvalOf, liveReleaseOf, localWorkEligible, machineActing } from "./scope.js";
|
|
9
|
+
import { LOCAL_OWNER_LAPSED, currentLocalOwner, localActNow, localOwnerInFlight, localOwnerRefusal, localOwnerStandsNow } from "./local-owner.js";
|
|
12
10
|
import { openWorkDecisionOf, taskWorkSummaryOf, workDecisionAction } from "./work-summary.js";
|
|
13
11
|
import { evidenceRoot, readVerifiedArtifact, readVerifiedReport, verifyArtifact } from "./evidence.js";
|
|
14
12
|
import { sweepIfMoved } from "./sweep-gate.js";
|
|
15
13
|
import { verificationEvidence } from "./verification-evidence.js";
|
|
16
|
-
import { reproveApprover } from "./principal.js";
|
|
14
|
+
import { reproveApprover, verifyApproverStanding } from "./principal.js";
|
|
17
15
|
import { noteAssignmentStatus } from "./assignment-status.js";
|
|
18
16
|
import { historicalAssessmentReason } from "./assignment-presentation.js";
|
|
19
17
|
import { manualReviewOnly, shownVerdictOf } from "./proof.js";
|
|
@@ -25,8 +23,6 @@ import { NEEDS, WAITS, processNeedOf, resultHoldUpSentence } from "./needs-you.j
|
|
|
25
23
|
import { assignmentStageOf, checkBackingOf, completionBlockersOf, receiptChecksOf, requirementWordOf } from "./task-status.js";
|
|
26
24
|
import { releaseCoverageOf } from "./release-coverage.js";
|
|
27
25
|
import { leadClaimOf } from "./lead-voice.js";
|
|
28
|
-
/** Status-first handoff for routine reads. Fetch get_assignment only when
|
|
29
|
-
* inspecting its exact evidence; do not repeat a full proof in every poll. */
|
|
30
26
|
export function assignmentBrief(assignment) {
|
|
31
27
|
if (assignment === null)
|
|
32
28
|
return null;
|
|
@@ -41,8 +37,6 @@ export function assignmentBrief(assignment) {
|
|
|
41
37
|
publication: assignment.publication, review: assignment.review, deployment: assignment.deployment, readiness: assignment.readiness ?? null };
|
|
42
38
|
}
|
|
43
39
|
const digest = (value) => createHash("sha256").update(JSON.stringify(value)).digest("hex");
|
|
44
|
-
/** A lookup added with lead-quiet, read safely: a deploy proves completion with this code over the INSTALLED runtime's
|
|
45
|
-
* store, before this version's migration, so the method (or its table) may not exist yet. Absent reads as none. */
|
|
46
40
|
function olderStoreSafe(read, absent) {
|
|
47
41
|
try {
|
|
48
42
|
return read();
|
|
@@ -53,14 +47,11 @@ function olderStoreSafe(read, absent) {
|
|
|
53
47
|
throw error;
|
|
54
48
|
}
|
|
55
49
|
}
|
|
56
|
-
/** A check as the receipt digest seals it: presentation-only fields (check-levels.ts) left out. */
|
|
57
50
|
const sealedChecks = ({ level: _level, running: _running, batch: _batch, release: _release, cause: _cause, ...proof }) => proof;
|
|
58
51
|
const OWNER_ACTION = "assignment claimed";
|
|
59
52
|
const CHECK_ACTION = COMPLETION_ACTION;
|
|
60
53
|
const actorOf = (owner) => `${owner.kind}:${owner.id}`;
|
|
61
54
|
function ownerOf(store, rootId, repo) {
|
|
62
|
-
// The release verifier reads the new projection against the still-running
|
|
63
|
-
// v70 Store before migrating a backup. That read cannot invent team tables.
|
|
64
55
|
const hasTeam = store.handle.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='team_task_owner'").get() !== undefined;
|
|
65
56
|
if (!hasTeam) {
|
|
66
57
|
const version = readSchemaVersion(store.handle);
|
|
@@ -75,18 +66,15 @@ function ownerOf(store, rootId, repo) {
|
|
|
75
66
|
const id = claim === undefined ? origin : String(claim["actor"]).replace(/^coordinator:/, "");
|
|
76
67
|
if (!id)
|
|
77
68
|
return null;
|
|
78
|
-
// A ledger actor names a coordinator by the id it had when it acted (v118 keeps that as public_id).
|
|
79
69
|
const credential = store.handle.prepare("SELECT name,projects_json AS repos,revoked_at FROM credential WHERE kind = 'coordinator' AND (id = ? OR public_id = ?) ORDER BY id = ? DESC LIMIT 1").get(id, id, id);
|
|
80
70
|
let repos = [];
|
|
81
71
|
try {
|
|
82
72
|
repos = JSON.parse(String(credential?.["repos"] ?? "[]"));
|
|
83
73
|
}
|
|
84
|
-
catch {
|
|
74
|
+
catch { }
|
|
85
75
|
return { kind: "coordinator", id, label: String(credential?.["name"] ?? "Former lead"),
|
|
86
76
|
active: credential !== undefined && credential["revoked_at"] === null && repo !== null && Array.isArray(repos) && repos.includes(repo) };
|
|
87
77
|
}
|
|
88
|
-
// Report the recorded check outcome, never turn a model verdict into a check.
|
|
89
|
-
// Follow-up checks on the same commit (Run checks) upgrade a pass and show a failure.
|
|
90
78
|
export function assignmentChecksForRun(store, root, runId, now) {
|
|
91
79
|
const own = recordedFailureStands(store, runId, buildChecks(store, root, runId));
|
|
92
80
|
const run = store.getRun(runId);
|
|
@@ -97,7 +85,6 @@ export function assignmentChecksForRun(store, root, runId, now) {
|
|
|
97
85
|
const latest = [...followUps].reverse().find(one => one.state === "passed" || one.state === "failed");
|
|
98
86
|
const changed = read.status !== own.status || read.level !== (own.level ?? null) || read.exitCode !== own.exitCode;
|
|
99
87
|
const words = read.level === "quick" ? "Quick checks" : "Checks";
|
|
100
|
-
// A batch check: waiting for its batch, or how the latest finished one was checked and on which commit.
|
|
101
88
|
const waitingBatch = followUps.some(one => one.why === "batch" && one.state === "waiting");
|
|
102
89
|
const sealedBatch = latest?.batch ?? null;
|
|
103
90
|
const batch = waitingBatch ? { state: "waiting", tested: null, peers: [] }
|
|
@@ -107,8 +94,6 @@ export function assignmentChecksForRun(store, root, runId, now) {
|
|
|
107
94
|
...(changed ? { status: read.status, level: read.level, exitCode: read.exitCode, logArtifactId: latest?.logArtifactId ?? own.logArtifactId,
|
|
108
95
|
detail: read.status === "passed" ? `${words} passed.` : `${words} failed (exit ${read.exitCode}).` } : {}) };
|
|
109
96
|
}
|
|
110
|
-
/** A failure the builder recorded (run_check) stands when its saved receipt can't be read now or says nothing ran:
|
|
111
|
-
* fail closed, every surface reads the same known failure and its exit code (task-status.ts approvedCheckOf). */
|
|
112
97
|
function recordedFailureStands(store, runId, own) {
|
|
113
98
|
if (own.status !== "unavailable" && own.status !== "not-run")
|
|
114
99
|
return own;
|
|
@@ -127,7 +112,6 @@ function buildChecks(store, root, runId) {
|
|
|
127
112
|
try {
|
|
128
113
|
const gate = verificationEvidence(store, root, runId);
|
|
129
114
|
if (!gate.ok) {
|
|
130
|
-
// The approved command changed since this check ran: nothing is missing, the check just no longer binds to it.
|
|
131
115
|
const run = store.getRun(runId), repo = run === null ? null : store.refById(run.taskRef)?.repo ?? null;
|
|
132
116
|
const live = repo === null ? null : store.liveVerifyCommand(repo);
|
|
133
117
|
const changed = gate.problem === COMMAND_MISSING_OR_CHANGED && live !== null && run !== null && live.approvedAt > run.startedAt;
|
|
@@ -137,14 +121,12 @@ function buildChecks(store, root, runId) {
|
|
|
137
121
|
if (receipt === null)
|
|
138
122
|
return { ...unavailable(level === "off" ? "Checks were off for this build." : "No machine check is recorded."), status: "not-run" };
|
|
139
123
|
const ran = receipt.result.ran === true, exitCode = ran ? receipt.result.exitCode : null;
|
|
140
|
-
// A release check whose coverage fell short (release-once.md) failed, whatever its command exited with.
|
|
141
124
|
if (receipt.result.failure === "coverage-incomplete")
|
|
142
125
|
return { status: "failed", exitCode: null, command: receipt.command.command, logArtifactId: receipt.log.artifactId, level,
|
|
143
126
|
detail: "Checks didn't cover everything this release owed, or a required test went missing." };
|
|
144
127
|
if (receipt.result.failure === "no-result")
|
|
145
128
|
return { status: "failed", exitCode: null, command: receipt.command.command, logArtifactId: receipt.log.artifactId, level,
|
|
146
129
|
detail: "Checks gave no complete result, so they can't count as a pass." };
|
|
147
|
-
// The sealed receipt names the grant that ran: the quick one, or the full one.
|
|
148
130
|
const sealedLevel = typeof receipt.command?.repo === "string" && receipt.command.repo.startsWith("quick:") ? "quick" : "full";
|
|
149
131
|
const words = sealedLevel === "quick" ? "Quick checks" : "Checks";
|
|
150
132
|
return { status: ran ? exitCode === 0 ? "passed" : "failed" : "not-run", exitCode,
|
|
@@ -169,18 +151,13 @@ export function assignmentOf(store, taskId, now, access, root, memo) {
|
|
|
169
151
|
const scope = store.getScope(current.id);
|
|
170
152
|
const owner = ownerOf(store, family.root.id, current.repo);
|
|
171
153
|
const attention = family.problem === null ? [] : [family.problem];
|
|
172
|
-
// Family admission above precedes question bodies. The newest result
|
|
173
|
-
// does not settle an unanswered question on any earlier version.
|
|
174
|
-
// A put-away earlier version (v145) is history: its question and its queue place never hold the current one up.
|
|
175
154
|
const questions = [current, ...family.versions.filter(version => version.id !== current.id && !refArchived(store, version.refId))].flatMap(version => {
|
|
176
155
|
const decision = openWorkDecisionOf(store, version.refId, now);
|
|
177
156
|
return decision === null ? [] : [{ taskId: version.id, decision }];
|
|
178
157
|
});
|
|
179
|
-
// A finished task label cannot hide a lease or an unfinished process record.
|
|
180
158
|
const busy = (version) => version.state === "running" || store.currentLiveLease(version.refId, now) !== null ||
|
|
181
159
|
store.runsFor(version.refId).some(run => run.outcome === null || store.stopQuiescenceProblem(run.id) !== null);
|
|
182
160
|
const earlierActive = family.versions.filter(version => version.id !== current.id && ((version.state === "queued" && !refArchived(store, version.refId)) || busy(version)));
|
|
183
|
-
// Of those, how many have work under way (the rest only wait in the queue).
|
|
184
161
|
const earlierRunning = earlierActive.filter(busy).length;
|
|
185
162
|
const unfinished = store.runsFor(current.refId).find(run => run.outcome === null) ?? null;
|
|
186
163
|
const attempts = family.versions.map(version => {
|
|
@@ -193,13 +170,10 @@ export function assignmentOf(store, taskId, now, access, root, memo) {
|
|
|
193
170
|
const unavailable = family.versions.flatMap(version => store.runsFor(version.refId).flatMap(run => store.artifactsFor(run.id).filter(artifact => root === undefined || !verifyArtifact(root, artifact).ok)
|
|
194
171
|
.map(artifact => `Saved ${artifact.kind} #${artifact.id} (run ${run.id}) is unavailable or changed.`)));
|
|
195
172
|
const ownChecks = result === null ? null : assignmentChecksForRun(store, root, result.id, now);
|
|
196
|
-
// Checks Off: a passing full release check that contains this commit covers it, read now from the existing receipts.
|
|
197
173
|
const checks = ownChecks === null || ownChecks.level !== "off" || ownChecks.status === "passed" || ownChecks.status === "failed" ? ownChecks
|
|
198
174
|
: { ...ownChecks, release: releaseCoverageOf(store, root, current.repo, result.headRevision, memo === undefined ? {} : { memo }) };
|
|
199
175
|
const finishedBuild = result?.role === "builder" && (result.outcome === "built" || result.outcome === "no-change") &&
|
|
200
176
|
result.finishedAt !== null && /^[a-f0-9]{40}$/.test(result.headRevision ?? "");
|
|
201
|
-
// Finished work returns to its lead or user. Strict terms and previous model
|
|
202
|
-
// judgments stay recorded; neither is a second execution stage for handoff.
|
|
203
177
|
const completionKind = result?.role === "scout" && result.outcome === "built" && result.finishedAt !== null ? "research-report"
|
|
204
178
|
: finishedBuild && acceptance !== null ? "accepted-exception"
|
|
205
179
|
: finishedBuild ? checks?.status === "passed" ? "checked-build" : "finished-build" : null;
|
|
@@ -208,17 +182,12 @@ export function assignmentOf(store, taskId, now, access, root, memo) {
|
|
|
208
182
|
head: result.headRevision, scopeDigest: result.scopeDigest ?? null, proof, completionKind, proofAcceptance: acceptance, checks: checks,
|
|
209
183
|
artifacts: artifacts.map(a => ({ id: a.id, kind: a.kind, sha256: a.sha256, bytes: a.bytesStored,
|
|
210
184
|
complete: !a.truncated && a.captureStatus !== "failed" })),
|
|
211
|
-
// Stored verdict limitations are separate from the agent's outcome.
|
|
212
|
-
// Full agent caveats remain in the referenced proof artifact.
|
|
213
185
|
caveats: [...(proof?.reasons ?? []), ...unavailable,
|
|
214
186
|
...(completionKind === "research-report" && reports.length !== 1 ? ["The report artifact is missing or ambiguous."] : []), ...(completionKind === "accepted-exception" && !artifacts.some(a => a.kind === "proof") ? ["No builder proof artifact is recorded."] : []),
|
|
215
187
|
...(artifacts.some(a => a.kind === "check-log" && a.truncated) ? ["The check log was shortened when stored; only the retained output is available."] : []),
|
|
216
188
|
...artifacts.filter(a => a.kind !== "check-log" && (a.truncated || a.captureStatus === "failed")).map(a => `Saved ${a.kind} #${a.id} is ${a.captureStatus === "failed" ? "a failed capture" : "incomplete"}.`)],
|
|
217
189
|
agentReport: result.handoff, evidence: "recorded",
|
|
218
190
|
};
|
|
219
|
-
// The digest seals the proof, not how it is shown: the check's `level` (read from its sealed command) and `running`
|
|
220
|
-
// (a follow-up in flight) stay out of it, so a result completed before check levels keeps its completion, and a
|
|
221
|
-
// follow-up check that is still running never unseals one.
|
|
222
191
|
const sealedBody = receiptBody === null ? null : { ...receiptBody, checks: sealedChecks(receiptBody.checks) };
|
|
223
192
|
const receipt = receiptBody === null ? null : { ...receiptBody, digest: digest({ receipt: sealedBody,
|
|
224
193
|
scope: scope === null ? null : { digest: scope.digest, approved: approvalOf(scope).approved, termsProblem: scope.termsProblem ?? null },
|
|
@@ -231,12 +200,7 @@ export function assignmentOf(store, taskId, now, access, root, memo) {
|
|
|
231
200
|
const processFact = result === null ? null : stopFactOf(store, result.id);
|
|
232
201
|
const processProblem = processFact?.problem ?? null;
|
|
233
202
|
let need = null;
|
|
234
|
-
// The exact completed result, scope, family and custody fences apply to
|
|
235
|
-
// every deliverable. Human acceptance remains its own recorded authority;
|
|
236
|
-
// it never changes a machine verdict or supplies a missing report.
|
|
237
|
-
// Kept out of the sealed receipt (sealedChecks): the review never changes the result's digest.
|
|
238
203
|
const review = result === null ? null : olderStoreSafe(() => buildReviewOf(store, result.id), null);
|
|
239
|
-
// A result under its one automatic review has not reached the person yet.
|
|
240
204
|
const reviewing = review?.state === "pending" && current.state === "done";
|
|
241
205
|
const ready = !reviewing && current.state === "done" && result !== null && completionKind !== null &&
|
|
242
206
|
scope !== null && scope.termsProblem == null && approvalOf(scope).approved && scope.digest === result.scopeDigest &&
|
|
@@ -253,9 +217,6 @@ export function assignmentOf(store, taskId, now, access, root, memo) {
|
|
|
253
217
|
: { code: "inspect-task", label: `Open ${successor}`, target: { taskId: successor, runId: null, decisionId: null }, access: "read", retry: "read-again" };
|
|
254
218
|
}
|
|
255
219
|
else if (!live && processFact !== null && result !== null) {
|
|
256
|
-
// Toolroll hasn't yet proven the build stopped. It proves that itself
|
|
257
|
-
// (stop-proof.ts), so the work waits, needing no one; only when this
|
|
258
|
-
// computer can't look is it held, offering Check again — never a vouch.
|
|
259
220
|
const process = processNeedOf(processFact);
|
|
260
221
|
if ("need" in process) {
|
|
261
222
|
state = "needs-decision";
|
|
@@ -292,9 +253,6 @@ export function assignmentOf(store, taskId, now, access, root, memo) {
|
|
|
292
253
|
primaryAction = { code: "open-result", label: completionKind === "research-report" ? "Read report" : "Open result", target: { taskId: current.id, runId: result.id, decisionId: null }, access: "read", retry: "read-again" };
|
|
293
254
|
const checked = store.handle.prepare("SELECT actor,at,detail FROM action_ledger WHERE task_id = ? AND run_id = ? AND action = ? AND outcome = ? AND source = 'work' ORDER BY id DESC")
|
|
294
255
|
.all(family.root.id, result.id, CHECK_ACTION, receipt.digest).find(row => COMPLETER_ACTOR.test(String(row["actor"])));
|
|
295
|
-
// This ledger fact was authorized when written. Credential rotation,
|
|
296
|
-
// membership changes and ownership transfer cannot revoke past completion.
|
|
297
|
-
// The exact result digest still fences changes to work, scope and history.
|
|
298
256
|
if (checked !== undefined) {
|
|
299
257
|
const rootRef = store.lookupRef(family.root.id);
|
|
300
258
|
const byLead = rootRef !== null && olderStoreSafe(() => store.taskActs(rootRef.id), []).filter(one => one.act === "completed").at(-1)?.lead === true;
|
|
@@ -319,7 +277,6 @@ export function assignmentOf(store, taskId, now, access, root, memo) {
|
|
|
319
277
|
unapproved: scope === null || scope.termsProblem != null || !approvalOf(scope).approved, question: questions.length > 0,
|
|
320
278
|
running: store.currentLiveLease(current.refId, now) !== null, unfinished: unfinished !== null,
|
|
321
279
|
noCommit: result === null || completionKind === null });
|
|
322
|
-
// Built to an earlier plan: the result page can't resolve it (accepting would leave it stuck), building again can.
|
|
323
280
|
if (current.state === "done" && result !== null && scope !== null && scope.termsProblem == null && approvalOf(scope).approved && !!result.scopeDigest && scope.digest !== result.scopeDigest &&
|
|
324
281
|
store.activeHolds(current.refId, now).length === 0 && unfinished === null && store.currentLiveLease(current.refId, now) === null && store.finalResultReason(result.id) === null) {
|
|
325
282
|
detail = NEEDS.rebuild.sentence({ build: result.id });
|
|
@@ -327,9 +284,6 @@ export function assignmentOf(store, taskId, now, access, root, memo) {
|
|
|
327
284
|
access: access.principal === "operator" ? "operator-control" : "operator-handoff", retry: "refresh-before-acting" };
|
|
328
285
|
need = { key: "rebuild", build: result.id };
|
|
329
286
|
}
|
|
330
|
-
// Rewritten after the build and not approved yet: Build again can't start an unapproved plan, so the yes is the
|
|
331
|
-
// one action (approve-scope opens the approval on the task page); Build again follows it.
|
|
332
|
-
// Builds only (a scout's report is not built again), and never ahead of an open question: approving answers neither.
|
|
333
287
|
else if (current.state === "done" && result !== null && result.role === "builder" && questions.length === 0 &&
|
|
334
288
|
scope !== null && scope.termsProblem == null && !approvalOf(scope).approved && !!result.scopeDigest && scope.digest !== result.scopeDigest &&
|
|
335
289
|
store.activeHolds(current.refId, now).length === 0 && unfinished === null && store.currentLiveLease(current.refId, now) === null && store.finalResultReason(result.id) === null) {
|
|
@@ -345,7 +299,6 @@ export function assignmentOf(store, taskId, now, access, root, memo) {
|
|
|
345
299
|
state = "needs-decision";
|
|
346
300
|
detail = "Earlier work is still active. Resolve it before completing this assignment.";
|
|
347
301
|
const earlier = earlierActive[0];
|
|
348
|
-
// The earlier version's act replaces this one's, and with it this version's need (its rebuild or replan).
|
|
349
302
|
need = null;
|
|
350
303
|
primaryAction = taskWorkSummaryOf(store, earlier.id, now, access)?.primaryAction ?? {
|
|
351
304
|
code: "inspect-task", label: "Review active work", target: { taskId: earlier.id, runId: null, decisionId: null }, access: "read", retry: "read-again",
|
|
@@ -354,10 +307,8 @@ export function assignmentOf(store, taskId, now, access, root, memo) {
|
|
|
354
307
|
}
|
|
355
308
|
if (state === "needs-decision")
|
|
356
309
|
attention.push(detail);
|
|
357
|
-
// Every Needs you action wears its need's own words (needs-you.ts), on every surface.
|
|
358
310
|
if (state === "needs-decision" && primaryAction !== null && need === null) {
|
|
359
311
|
const read = assignmentStageOf({ state, primaryAction, review }, { token: work.status.token, views: work.status.views });
|
|
360
|
-
// A result review keeps its own, more specific words (See what is missing, Open the failed check).
|
|
361
312
|
if (read.stage === "needs-you" && read.need !== undefined && read.need !== "other" && read.need !== "review-result")
|
|
362
313
|
primaryAction = { ...primaryAction, label: NEEDS[read.need].action.label };
|
|
363
314
|
}
|
|
@@ -388,8 +339,6 @@ export function assignmentOf(store, taskId, now, access, root, memo) {
|
|
|
388
339
|
const publication = result === null ? null : store.publicationForRun(result.id);
|
|
389
340
|
const lead = state === "complete" || state === "cancelled" || access.principal !== "operator" ? null : leadClaimOf(store, family.root.id, now, access.viewer);
|
|
390
341
|
const readiness = receipt === null ? null : readinessOf(store, receipt, current.repo, review);
|
|
391
|
-
// Existing saved inputs and output, read only after family admission. Keep
|
|
392
|
-
// polling briefs small; full reads disclose exactly which excerpts are shortened.
|
|
393
342
|
const planId = result?.planRevision == null ? null : store.getPlanRevision(result.planRevision)?.artifact;
|
|
394
343
|
const plan = planId == null ? store.latestPlanArtifact(current.refId) : store.getArtifact(planId);
|
|
395
344
|
const selected = [plan, ...["terminal-diff", "check-log", "report", "handoff"].map(kind => artifacts.filter(artifact => artifact.kind === kind).at(-1) ?? null)].filter((one) => one !== null);
|
|
@@ -406,14 +355,11 @@ export function assignmentOf(store, taskId, now, access, root, memo) {
|
|
|
406
355
|
publication: publication === null ? null : { state: publication.state, prUrl: publication.prUrl, remoteState: publication.remoteState },
|
|
407
356
|
review, deployment: { status: "not-recorded" }, readiness, ...(need === null ? {} : { need }), ...(lead === null ? {} : { lead }), ...(earlierActive.length === 0 ? {} : { earlierActive: earlierActive.length, earlierRunning }) };
|
|
408
357
|
}
|
|
409
|
-
/** The result's shown verdict and completion blockers (task-status.ts), from the receipt, the project's approved check
|
|
410
|
-
* and the automatic review. A HIGH finding a revision already took is resolved there. */
|
|
411
358
|
function readinessOf(store, receipt, repo, review) {
|
|
412
359
|
const report = receipt.completionKind === "research-report";
|
|
413
360
|
const high = review === null || review.sentBackAs !== null || review.state !== "reviewed" ? 0 : review.high.length;
|
|
414
361
|
const checkRequired = olderStoreSafe(() => requiredCheckCommandFor(store, repo, receipt.taskId, receipt.checks.level), null) !== null;
|
|
415
362
|
const matrix = receipt.proof?.matrix ?? [];
|
|
416
|
-
// The approved check as every surface reads it: a recorded pass the saved receipt can't show doesn't count.
|
|
417
363
|
const checks = receiptChecksOf(receipt);
|
|
418
364
|
const backing = checkBackingOf(checks);
|
|
419
365
|
const verdict = shownVerdictOf(receipt.proof?.verdict ?? null, { checkFailed: !report && checks?.status === "failed", highFindings: high,
|
|
@@ -424,7 +370,7 @@ function readinessOf(store, receipt, repo, review) {
|
|
|
424
370
|
}
|
|
425
371
|
function admittedOwner(store, taskId, owner, now, root) {
|
|
426
372
|
if (owner.kind !== "coordinator")
|
|
427
|
-
return null;
|
|
373
|
+
return null;
|
|
428
374
|
const row = store.handle.prepare("SELECT projects_json AS repos, revoked_at FROM credential WHERE id = ? AND kind = 'coordinator'").get(owner.id);
|
|
429
375
|
if (row === undefined || row["revoked_at"] !== null)
|
|
430
376
|
return null;
|
|
@@ -457,8 +403,6 @@ export function claimAssignment(store, taskId, owner, now, root) {
|
|
|
457
403
|
return { ok: true, assignment };
|
|
458
404
|
});
|
|
459
405
|
}
|
|
460
|
-
/** Diagnostic only: artifact availability does not authorize or block a human
|
|
461
|
-
* handoff. Deployment independently validates its actual native check. */
|
|
462
406
|
export function assignmentEvidenceIntact(store, root, receipt) {
|
|
463
407
|
try {
|
|
464
408
|
const family = store.taskFamilyOf(receipt.taskId, null, true);
|
|
@@ -479,50 +423,40 @@ function acknowledgeCurrent(store, current, receiptDigest, actor, now, root, acc
|
|
|
479
423
|
if (!/^[a-f0-9]{64}$/.test(receiptDigest) || current.receipt?.digest !== receiptDigest)
|
|
480
424
|
return { ok: false, reason: "stale", message: "The result changed. Read the current assignment before checking it." };
|
|
481
425
|
const receipt = current.receipt;
|
|
482
|
-
// The nightly check of main is a check only (release-once.md, part 3): nobody completes it.
|
|
483
426
|
if (store.handle.prepare("SELECT 1 AS hit FROM nightly_check WHERE task = ?").get(current.receipt.taskId) !== undefined)
|
|
484
427
|
return { ok: false, reason: "check-only", message: "The nightly check of main is only a check; it isn't completed." };
|
|
485
|
-
// Toolroll is still proving its build stopped (stop-proof.ts): a wait that clears on its own, said as one, so a
|
|
486
|
-
// release waits for it instead of stopping.
|
|
487
428
|
if (current.state !== "ready-to-check" && current.state !== "complete" && current.need != null && "wait" in current.need && STOP_WAITS.has(current.need.wait)) {
|
|
488
429
|
return { ok: false, reason: "stopping", message: `Toolroll is still making sure ${current.need.build === null ? "the build" : `build #${current.need.build}`} stopped. This clears on its own.` };
|
|
489
430
|
}
|
|
490
431
|
if (current.state !== "ready-to-check" && current.state !== "complete")
|
|
491
432
|
return { ok: false, reason: "not-ready", message: "This assignment still has unresolved execution, scope or decisions." };
|
|
492
|
-
// A release task completes only while its release approval stands for it (release-once.md, liveReleaseOf).
|
|
493
433
|
const release = liveReleaseOf(store, current.receipt.taskId, "complete", now);
|
|
494
434
|
if (release.applies && !release.ok)
|
|
495
435
|
return { ok: false, reason: "release", message: `This release can't be completed: ${release.why}.` };
|
|
496
|
-
|
|
497
|
-
|
|
436
|
+
const local = localCompletionRefusal(store, actor, [receipt.taskId, current.rootId], receipt.runId, root);
|
|
437
|
+
if (local !== null)
|
|
438
|
+
return local;
|
|
498
439
|
const person = actor.startsWith("operator:") && !machineActing() ? actor.slice("operator:".length) : null;
|
|
499
440
|
const marked = actor.startsWith("operator:") ? (person === null ? COMPLETION_BY_MACHINE : COMPLETION_BY_PERSON) : null;
|
|
500
|
-
// A fast start's Accept backstop (fast-start.ts): a person only, and only a change that stayed small.
|
|
501
441
|
const grown = fastCompletionProblem(store, receipt.taskId, receipt.runId, person);
|
|
502
442
|
if (grown !== null)
|
|
503
443
|
return { ok: false, reason: "not-ready", message: grown };
|
|
504
444
|
if (current.state !== "complete") {
|
|
505
|
-
// The one readiness guard: a failed or missing required check, an unresolved requirement or HIGH finding refuses.
|
|
506
445
|
const blockers = current.readiness?.blockers ?? [];
|
|
507
446
|
if (blockers.length > 0)
|
|
508
447
|
return { ok: false, reason: "not-ready", message: blockers.map(one => one.message).join(" ") };
|
|
509
|
-
// v102: declared paths are only a promise. A result whose actual diff reaches protected files, on a
|
|
510
|
-
// scope one person approved, completes only by someone else — two people have then seen the work.
|
|
511
448
|
const problem = store.protectedResultProblem(receipt.taskId, familyChangedFiles(store, receipt.taskId, receipt.runId, root), person);
|
|
512
449
|
if (problem !== null)
|
|
513
450
|
return { ok: false, reason: "approval-rules", message: problem };
|
|
514
451
|
store.recordAction({ at: now.toISOString(), actor, repo: current.repo,
|
|
515
452
|
taskId: current.rootId, runId: receipt.runId, action: CHECK_ACTION, outcome: receiptDigest, source: "work", detail: marked });
|
|
516
453
|
const ref = store.lookupRef(current.rootId);
|
|
517
|
-
// Whose act this is, even outside a command that named its person: the operator who marked it.
|
|
518
454
|
const by = currentActor() ?? (actor.startsWith("operator:") ? { account: actor.slice("operator:".length), lead: false } : null);
|
|
519
455
|
if (ref !== null)
|
|
520
456
|
store.noteTaskAct(ref.id, "completed", now, undefined, by);
|
|
521
457
|
store.bumpWake();
|
|
522
458
|
}
|
|
523
459
|
else if (person !== null && personCompletionOwed(store, receipt.taskId, receipt.runId, receiptDigest, person, root)) {
|
|
524
|
-
// Already complete, but no person's completion is on record that lets protected work publish (a machine's, or one
|
|
525
|
-
// from before completions said who made them): this person's completion is recorded now (approval policy §1.7a).
|
|
526
460
|
store.recordAction({ at: now.toISOString(), actor, repo: current.repo,
|
|
527
461
|
taskId: current.rootId, runId: receipt.runId, action: CHECK_ACTION, outcome: receiptDigest, source: "work", detail: COMPLETION_BY_PERSON });
|
|
528
462
|
store.bumpWake();
|
|
@@ -541,10 +475,7 @@ export function checkAssignment(store, taskId, receiptDigest, owner, now, root =
|
|
|
541
475
|
return acknowledgeCurrent(store, current, receiptDigest, actorOf(owner), now, root, { principal: "coordinator", repos: [current.repo] });
|
|
542
476
|
});
|
|
543
477
|
}
|
|
544
|
-
/** The signed-in user can mark the same exact receipt handled without taking
|
|
545
|
-
* lead ownership. This records review, never check success or new authority. */
|
|
546
478
|
export function checkAssignmentAsOperator(store, taskId, receiptDigest, who, now, root = evidenceRoot(homedir())) {
|
|
547
|
-
// Completing is this person's act (or their lead's): it never pings them.
|
|
548
479
|
return withActor(currentActor() ?? { account: who.name, lead: false }, () => store.transact(() => {
|
|
549
480
|
if (!reproveApprover(store, who).ok)
|
|
550
481
|
return { ok: false, reason: "unauthenticated", message: "Sign in again before marking this result complete." };
|
|
@@ -555,9 +486,7 @@ export function checkAssignmentAsOperator(store, taskId, receiptDigest, who, now
|
|
|
555
486
|
return acknowledgeCurrent(store, current, receiptDigest, `operator:${who.name}`, now, root, access);
|
|
556
487
|
}));
|
|
557
488
|
}
|
|
558
|
-
/** The acceptance's own ledger act, as a separate Accept request records it. */
|
|
559
489
|
export const ACCEPT_ACTION = "task accept-proof";
|
|
560
|
-
/** Only a person's check stands between this result and done: its proof is short for that alone, and nobody accepted it. */
|
|
561
490
|
export function personCheckPending(receipt) {
|
|
562
491
|
return receipt !== null && receipt.proofAcceptance === null && manualReviewOnly(receipt.proof === null ? null : { verdict: receipt.proof.verdict, reasons: receipt.proof.reasons, matrix: receipt.proof.matrix });
|
|
563
492
|
}
|
|
@@ -568,31 +497,18 @@ class Undone extends Error {
|
|
|
568
497
|
this.result = result;
|
|
569
498
|
}
|
|
570
499
|
}
|
|
571
|
-
/** An acceptance this receipt owes before it finishes, by the result page's own rule: the person's own check
|
|
572
|
-
* (no reason needed), or an exception a report that doesn't match its changes needs a reason for. Null when
|
|
573
|
-
* Accept and finish is a plain completion: nothing is owed (no proof, a failed check, or a verified result),
|
|
574
|
-
* or it was already accepted. */
|
|
575
500
|
export function owedAcceptance(receipt, blockers = []) {
|
|
576
501
|
if (receipt === null || receipt.proofAcceptance !== null)
|
|
577
502
|
return null;
|
|
578
503
|
if (personCheckPending(receipt))
|
|
579
504
|
return "person-check";
|
|
580
|
-
// An unresolved requirement is resolved only by an acceptance that says why.
|
|
581
505
|
if (blockers.some(one => one.key === "criteria"))
|
|
582
506
|
return "exception";
|
|
583
507
|
return cantAcceptYetOf(receipt.proof?.verdict ?? null, receipt.proof?.reasons ?? [], false) === ACCEPT_NEEDS_REASON ? "exception" : null;
|
|
584
508
|
}
|
|
585
|
-
/** Accept and finish: the person's acceptance of the exact result they read and its completion, in one
|
|
586
|
-
* transaction. Whether an acceptance is owed is decided here, against the receipt as it stands: only a
|
|
587
|
-
* person's own check or a reasoned exception records one (with its ledger act); an exception without its
|
|
588
|
-
* reason is refused; anything else is the plain completion Mark complete always was. The completion names the receipt the acceptance produced, under the
|
|
589
|
-
* same digest a separate Accept then Mark complete leave. `receiptDigest` is the receipt as read, before
|
|
590
|
-
* accepting (`runId`, when named, must be its run); any other change refuses both, and a refused completion
|
|
591
|
-
* keeps no acceptance. `finish` completes the receipt (Mark complete by default; Complete and open a pull
|
|
592
|
-
* request passes its own). */
|
|
593
509
|
export function acceptAndCompleteAsOperator(store, taskId, input, who, now, root = evidenceRoot(homedir()), finish = digest => checkAssignmentAsOperator(store, taskId, digest, who, now, root)) {
|
|
594
510
|
try {
|
|
595
|
-
return withActor(currentActor() ?? { account: who.name, lead: false }, () => store.transact(() => {
|
|
511
|
+
return withActor(currentActor() ?? { account: who.name, lead: false }, () => store.transact(() => store.savepoint(() => {
|
|
596
512
|
if (!reproveApprover(store, who).ok)
|
|
597
513
|
return { ok: false, reason: "unauthenticated", message: "Sign in again before accepting this result." };
|
|
598
514
|
const access = { principal: "operator", repos: who.repos };
|
|
@@ -603,11 +519,14 @@ export function acceptAndCompleteAsOperator(store, taskId, input, who, now, root
|
|
|
603
519
|
if (receipt === null || (input.runId !== null && receipt.runId !== input.runId) || !/^[a-f0-9]{64}$/.test(input.receiptDigest) || receipt.digest !== input.receiptDigest) {
|
|
604
520
|
return { ok: false, reason: "stale", message: "This result changed. Open the current result before accepting it." };
|
|
605
521
|
}
|
|
606
|
-
|
|
522
|
+
const local = localCompletionRefusal(store, `operator:${who.name}`, [receipt.taskId, taskId, before.rootId], receipt.runId, root);
|
|
523
|
+
if (local !== null)
|
|
524
|
+
return local;
|
|
607
525
|
const owed = before.state === "ready-to-check" ? owedAcceptance(receipt, before.readiness?.blockers ?? []) : null;
|
|
608
|
-
// An exception is accepted only with its reason: never a completion that skips it.
|
|
609
526
|
if (owed === "exception" && input.note === null)
|
|
610
527
|
return { ok: false, reason: "needs-reason", message: `${ACCEPT_NEEDS_REASON}.` };
|
|
528
|
+
if (owed === "person-check" && machineActing())
|
|
529
|
+
return { ok: false, reason: "person-required", message: MACHINE_CANT_CHECK };
|
|
611
530
|
let digest = receipt.digest;
|
|
612
531
|
if (owed !== null) {
|
|
613
532
|
store.acceptProof(receipt.runId, who.name, input.note, now);
|
|
@@ -621,7 +540,7 @@ export function acceptAndCompleteAsOperator(store, taskId, input, who, now, root
|
|
|
621
540
|
if (!done.ok)
|
|
622
541
|
throw new Undone(done);
|
|
623
542
|
return done;
|
|
624
|
-
}));
|
|
543
|
+
})));
|
|
625
544
|
}
|
|
626
545
|
catch (error) {
|
|
627
546
|
if (error instanceof Undone)
|
|
@@ -639,9 +558,6 @@ function noteAssignmentHandoff(store, assignment, now) {
|
|
|
639
558
|
kind: "assignment-handoff", source: { taskRef: ref.id }, subject: assignment.state === "cancelled" ? "Assignment cancelled" : assignment.state === "ready-to-check" ? "Ready" : "Assignment needs a decision",
|
|
640
559
|
body: assignment.detail, link: `/t/${encodeURIComponent(assignment.rootId)}` }, now);
|
|
641
560
|
}
|
|
642
|
-
/** The ordinary worker reconciles at most 50 owned roots per pass, and skips a
|
|
643
|
-
* pass when nothing moved (sweep-gate.ts). A lost wakeup is recovered after
|
|
644
|
-
* restart; immutable notification keys dedupe it. */
|
|
645
561
|
export function syncAssignmentHandoffs(store, now, repos, root) {
|
|
646
562
|
if (repos.length === 0)
|
|
647
563
|
return;
|
|
@@ -662,9 +578,6 @@ export function syncAssignmentHandoffs(store, now, repos, root) {
|
|
|
662
578
|
store.setServiceCursor(key, rows.length < 50 ? 0 : Number(rows.at(-1)["id"]), now);
|
|
663
579
|
}));
|
|
664
580
|
}
|
|
665
|
-
/** The history of assignment handoffs sent to people (the `assignment-handoff` notifications), read by cursor. It is
|
|
666
|
-
* not a delivery path: nothing is saved, replayed or acknowledged here. Leads receive their updates through the
|
|
667
|
-
* assignment inbox (assignment-delivery.ts), the one road results take to a lead. */
|
|
668
581
|
export function assignmentUpdates(store, now, access, query, root) {
|
|
669
582
|
const after = Number.isSafeInteger(query.after) && query.after >= 0 ? query.after : 0;
|
|
670
583
|
const limit = Math.max(1, Math.min(100, Math.floor(query.limit) || 50));
|
|
@@ -685,5 +598,106 @@ export function assignmentUpdates(store, now, access, query, root) {
|
|
|
685
598
|
});
|
|
686
599
|
return { events, nextCursor: page.length === 0 ? after : Number(page.at(-1)["id"]), hasMore: rows.length > limit };
|
|
687
600
|
}
|
|
688
|
-
/** The waits of a build Toolroll is still proving stopped by itself (needs-you.ts processNeedOf). */
|
|
689
601
|
const STOP_WAITS = new Set(["build-finishing", "build-checking", "build-stopping"]);
|
|
602
|
+
export function personCompletionRefusal(store, taskId, runId, person, root, local = null) {
|
|
603
|
+
const own = local === null || person === null ? null : localOwnerCompletionProblem(store, person, [taskId, local.rootId], runId, root);
|
|
604
|
+
return own ?? fastCompletionProblem(store, taskId, runId, person) ?? store.protectedResultProblem(taskId, familyChangedFiles(store, taskId, runId, root), person);
|
|
605
|
+
}
|
|
606
|
+
function localCompletionRefusal(store, actor, taskIds, runId, root) {
|
|
607
|
+
const local = currentLocalOwner();
|
|
608
|
+
if (local === null)
|
|
609
|
+
return null;
|
|
610
|
+
if (!localOwnerInFlight(local) || !localOwnerStandsNow(store, local))
|
|
611
|
+
return { ok: false, reason: "local-owner", message: LOCAL_OWNER_LAPSED };
|
|
612
|
+
if (local.act !== "complete-task" || actor !== `operator:${local.account}`)
|
|
613
|
+
return { ok: false, reason: "local-owner", message: `This needs your password. ${localOwnerThen(store, local.account)}` };
|
|
614
|
+
const problem = localOwnerCompletionProblem(store, local.account, taskIds, runId, root);
|
|
615
|
+
return problem === null ? null : { ok: false, reason: "local-owner", message: problem };
|
|
616
|
+
}
|
|
617
|
+
function localOwnerThen(store, account) {
|
|
618
|
+
const instead = localOwnerRefusal(store.accountOf(account)?.passwordSet === true, "/");
|
|
619
|
+
return instead.action === "Set a password" ? "Set a password first: run `toolroll password set`." : instead.message;
|
|
620
|
+
}
|
|
621
|
+
export function localOwnerCompletionProblem(store, account, taskIds, runId, root) {
|
|
622
|
+
const changed = familyChangedFiles(store, taskIds[0], runId, root, { missing: "unknown" });
|
|
623
|
+
for (const taskId of new Set(taskIds)) {
|
|
624
|
+
const eligible = localWorkEligible(store, account, taskId, { act: "complete", changed });
|
|
625
|
+
if (!eligible.ok)
|
|
626
|
+
return `${eligible.message} ${localOwnerThen(store, account)}`;
|
|
627
|
+
}
|
|
628
|
+
return null;
|
|
629
|
+
}
|
|
630
|
+
export const MACHINE_CANT_CHECK = "Only a person can say they checked this result. Open it in Toolroll and accept it there.";
|
|
631
|
+
export const LOCAL_ACCEPT_ACTION = "task complete (local owner)";
|
|
632
|
+
const LOCAL_STALE = { ok: false, reason: "stale", message: "This result changed. Look at the new one before accepting it." };
|
|
633
|
+
function localAcceptanceOf(store, rootId, account, runId, digest, request) {
|
|
634
|
+
const rows = store.handle.prepare("SELECT outcome, detail FROM action_ledger WHERE action = ? AND task_id = ? AND actor = ? AND run_id = ? ORDER BY id DESC")
|
|
635
|
+
.all(LOCAL_ACCEPT_ACTION, rootId, `operator:${account}`, runId);
|
|
636
|
+
for (const row of rows) {
|
|
637
|
+
let detail;
|
|
638
|
+
try {
|
|
639
|
+
detail = JSON.parse(String(row["detail"] ?? ""));
|
|
640
|
+
}
|
|
641
|
+
catch {
|
|
642
|
+
continue;
|
|
643
|
+
}
|
|
644
|
+
const bound = detail;
|
|
645
|
+
if (bound.v !== 1 || bound.digest !== digest || typeof bound.completed !== "string")
|
|
646
|
+
continue;
|
|
647
|
+
const outcome = String(row["outcome"]);
|
|
648
|
+
const same = bound.checked === request.checked && (bound.reason ?? null) === request.reason;
|
|
649
|
+
return { completed: bound.completed, accepted: outcome === "person-check" || outcome === "exception" ? outcome : null, same };
|
|
650
|
+
}
|
|
651
|
+
return null;
|
|
652
|
+
}
|
|
653
|
+
export function completeAsLocalOwner(store, taskId, input, now, root = evidenceRoot(homedir())) {
|
|
654
|
+
try {
|
|
655
|
+
return store.transact(() => {
|
|
656
|
+
const local = localActNow(store, "complete-task");
|
|
657
|
+
if (local === null)
|
|
658
|
+
return { ok: false, reason: "local-owner", message: LOCAL_OWNER_LAPSED };
|
|
659
|
+
const standing = verifyApproverStanding(store, local.account, local.accountGeneration, store.knownRepos().filter(repo => store.accountCanAccess(local.account, repo)));
|
|
660
|
+
if (!standing.ok)
|
|
661
|
+
return { ok: false, reason: "local-owner", message: LOCAL_OWNER_LAPSED };
|
|
662
|
+
const who = standing.who;
|
|
663
|
+
const access = { principal: "operator", repos: who.repos };
|
|
664
|
+
const before = assignmentOf(store, taskId, now, access, root);
|
|
665
|
+
if (before === null || !store.accountCanAccess(who.name, before.repo))
|
|
666
|
+
return { ok: false, reason: "not-found", message: "That task is unavailable in your projects." };
|
|
667
|
+
const bound = localAcceptanceOf(store, before.rootId, who.name, input.runId, input.receiptDigest, { checked: input.checked, reason: input.reason });
|
|
668
|
+
if (bound !== null && !bound.same)
|
|
669
|
+
return { ok: false, reason: "already-complete", message: "This result is already accepted." };
|
|
670
|
+
if (bound !== null) {
|
|
671
|
+
return before.state === "complete" && before.receipt?.runId === input.runId && before.receipt.digest === bound.completed
|
|
672
|
+
? { ok: true, replayed: true, accepted: bound.accepted, assignment: before } : LOCAL_STALE;
|
|
673
|
+
}
|
|
674
|
+
const receipt = before.receipt;
|
|
675
|
+
if (receipt === null || receipt.runId !== input.runId || receipt.digest !== input.receiptDigest)
|
|
676
|
+
return LOCAL_STALE;
|
|
677
|
+
if (before.state === "complete")
|
|
678
|
+
return { ok: false, reason: "already-complete", message: "This result is already accepted." };
|
|
679
|
+
const owed = before.state === "ready-to-check" ? owedAcceptance(receipt, before.readiness?.blockers ?? []) : null;
|
|
680
|
+
if (owed === "person-check" && !input.checked)
|
|
681
|
+
return { ok: false, reason: "needs-check", message: "This result needs your own check. Look at it, then say you checked it." };
|
|
682
|
+
if (owed === "exception" && input.reason === null)
|
|
683
|
+
return { ok: false, reason: "needs-reason", message: `${ACCEPT_NEEDS_REASON}.` };
|
|
684
|
+
const done = acceptAndCompleteAsOperator(store, taskId, { runId: input.runId, receiptDigest: input.receiptDigest, note: owed === null ? null : input.reason }, who, now, root);
|
|
685
|
+
if (!done.ok)
|
|
686
|
+
throw new Undone(done);
|
|
687
|
+
const after = assignmentOf(store, taskId, now, access, root);
|
|
688
|
+
if (after === null || after.state !== "complete" || after.receipt?.runId !== input.runId)
|
|
689
|
+
throw new Undone(LOCAL_STALE);
|
|
690
|
+
store.recordAction({ at: now.toISOString(), actor: `operator:${who.name}`, repo: after.repo, taskId: after.rootId, runId: input.runId, action: LOCAL_ACCEPT_ACTION,
|
|
691
|
+
outcome: owed ?? "completed", source: "request",
|
|
692
|
+
detail: JSON.stringify({ v: 1, digest: input.receiptDigest, completed: after.receipt.digest, checked: input.checked, reason: input.reason, via: local.transport }) });
|
|
693
|
+
return { ok: true, replayed: false, accepted: owed, assignment: after };
|
|
694
|
+
});
|
|
695
|
+
}
|
|
696
|
+
catch (error) {
|
|
697
|
+
if (error instanceof Undone)
|
|
698
|
+
return error.result;
|
|
699
|
+
if (error instanceof Error && error.message === LOCAL_OWNER_LAPSED)
|
|
700
|
+
return { ok: false, reason: "local-owner", message: LOCAL_OWNER_LAPSED };
|
|
701
|
+
throw error;
|
|
702
|
+
}
|
|
703
|
+
}
|