toolroll 0.9.104 → 0.9.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +62 -5
- package/README.md +18 -20
- package/dist/accent-colors.js +0 -29
- package/dist/acp-agents.js +0 -3
- package/dist/acp-attest.js +0 -30
- package/dist/acp-check.js +3 -70
- package/dist/acp-client.js +3 -94
- package/dist/acp-inspect.js +1 -20
- package/dist/action-ledger.js +0 -8
- package/dist/activity-line.js +0 -14
- package/dist/actor.js +0 -15
- package/dist/advanced-schema.js +12 -0
- package/dist/advanced-view.js +26 -0
- package/dist/advanced.js +61 -0
- package/dist/agent-board.js +0 -117
- package/dist/agent-fence.js +11 -367
- package/dist/agent-onboard.js +12 -50
- package/dist/agent-pulse.js +5 -38
- package/dist/agent-state-words.js +0 -8
- package/dist/agent-state.js +1 -45
- package/dist/agent-turns.js +3 -17
- package/dist/agentconfig.js +1 -99
- package/dist/agents-board.js +0 -60
- package/dist/agents-live.js +1 -8
- package/dist/api-tokens.js +0 -27
- package/dist/approval-authority.js +0 -59
- package/dist/approval-password.js +0 -10
- package/dist/approval-policy.js +0 -29
- package/dist/approval-rules-ui.js +0 -9
- package/dist/assignment-adapters.js +0 -14
- package/dist/assignment-brief.js +1 -17
- package/dist/assignment-delivery.js +0 -22
- package/dist/assignment-presentation.js +0 -14
- package/dist/assignment-status.js +1 -30
- package/dist/assignment-ui.js +0 -12
- package/dist/assignment.js +17 -139
- package/dist/attest.js +0 -38
- package/dist/audit-cli.js +0 -9
- package/dist/backend.js +0 -59
- package/dist/backup-ui.js +0 -12
- package/dist/backup.js +8 -61
- package/dist/batch-checks.js +0 -20
- package/dist/batch-policy.js +0 -4
- package/dist/beads.js +0 -48
- package/dist/bin.js +0 -8
- package/dist/board.js +1 -36
- package/dist/boot-identity.js +0 -42
- package/dist/bounded-spawn.js +4 -28
- package/dist/brand-mark.js +0 -21
- package/dist/brief-fence.js +0 -16
- package/dist/browser/terminal.css +1 -1
- package/dist/browser/terminal.js +16 -16
- package/dist/browser/workspace.css +2 -2
- package/dist/browser/workspace.js +26 -26
- package/dist/browser-crew.js +0 -8
- package/dist/browser-shell.js +2 -15
- package/dist/browser-workspace.js +6 -30
- package/dist/budget-alerts.js +1 -4
- package/dist/build-review.js +2 -50
- package/dist/builder-restart.js +0 -13
- package/dist/builder.js +21 -1035
- package/dist/canonical-json.js +0 -12
- package/dist/capscan.js +1 -32
- package/dist/card-catalog.js +0 -12
- package/dist/card-cli.js +0 -1
- package/dist/card-render.js +0 -25
- package/dist/card-sources.js +0 -10
- package/dist/chat-acceptance.js +0 -7
- package/dist/chat-actions.js +5 -190
- package/dist/chat-admission.js +0 -7
- package/dist/chat-approval.js +0 -25
- package/dist/chat-ask.js +0 -17
- package/dist/chat-card-part.js +0 -3
- package/dist/chat-card.js +0 -6
- package/dist/chat-channel.js +2 -83
- package/dist/chat-continuity.js +0 -31
- package/dist/chat-controls.js +0 -7
- package/dist/chat-core.js +0 -55
- package/dist/chat-decide.js +2 -153
- package/dist/chat-delivery-state.js +0 -49
- package/dist/chat-delivery.js +2 -143
- package/dist/chat-display.js +0 -2
- package/dist/chat-evidence.js +0 -65
- package/dist/chat-flow.js +0 -72
- package/dist/chat-follow.js +0 -13
- package/dist/chat-inbox.js +0 -34
- package/dist/chat-live-schema.js +0 -14
- package/dist/chat-live.js +2 -87
- package/dist/chat-message-states.js +13 -40
- package/dist/chat-messages.js +0 -153
- package/dist/chat-migration.js +0 -57
- package/dist/chat-polish.js +0 -7
- package/dist/chat-quiet.js +0 -37
- package/dist/chat-review.js +0 -4
- package/dist/chat-rooms.js +0 -22
- package/dist/chat-settings-page.js +0 -4
- package/dist/chat-task-actions.js +0 -7
- package/dist/chat-terms.js +0 -21
- package/dist/chat-voice.js +0 -38
- package/dist/chat-warmth.js +1 -3
- package/dist/check-access.js +0 -30
- package/dist/check-facts.js +2 -62
- package/dist/check-failure.js +0 -98
- package/dist/check-levels-ui.js +4 -10
- package/dist/check-levels.js +3 -35
- package/dist/check-load.js +1 -49
- package/dist/check-only-standing.js +0 -6
- package/dist/check-only.js +0 -22
- package/dist/check-progress.js +0 -32
- package/dist/check-repair.js +2 -35
- package/dist/check-report.js +1 -108
- package/dist/check-stamp.js +0 -20
- package/dist/checkout-cleanup.js +0 -84
- package/dist/checkout-proof.js +1 -13
- package/dist/child-database.js +0 -3
- package/dist/claim.js +4 -508
- package/dist/claude-print.js +0 -10
- package/dist/cli-fast.js +0 -8
- package/dist/cli-help.js +90 -78
- package/dist/cli-http.js +0 -10
- package/dist/cli.js +26 -241
- package/dist/code-extract.js +0 -6
- package/dist/code-map-acts.js +0 -7
- package/dist/code-map-admission.js +2 -26
- package/dist/code-map-build.js +3 -24
- package/dist/code-map-cli.js +0 -4
- package/dist/code-map-main.js +0 -6
- package/dist/code-map-read.js +0 -12
- package/dist/code-map-report.js +0 -9
- package/dist/code-map-shape.js +0 -19
- package/dist/code-map-store.js +0 -26
- package/dist/codex-limits.js +1 -17
- package/dist/coding-context.js +0 -10
- package/dist/coding-handoff.js +0 -14
- package/dist/coding-provider.js +0 -39
- package/dist/coding-shipping-ui.js +0 -1
- package/dist/coding-ui.js +0 -1
- package/dist/coding-update.js +1 -18
- package/dist/coding-workspace.js +0 -27
- package/dist/commit-extract.js +0 -83
- package/dist/connect-cli.js +0 -19
- package/dist/console-chrome.js +1 -34
- package/dist/console-instance.js +2 -91
- package/dist/container-state.js +0 -4
- package/dist/containment.js +2 -105
- package/dist/contract-changes.js +0 -6
- package/dist/contracts/acceptance-terms.js +0 -7
- package/dist/contracts/chat-actions.js +0 -46
- package/dist/contracts/chat-callback-rows.js +0 -8
- package/dist/contracts/chat-card.js +0 -14
- package/dist/contracts/chat-content.js +0 -55
- package/dist/contracts/chat-tables.js +0 -7
- package/dist/contracts/cli.js +0 -59
- package/dist/contracts/coding-activity.js +0 -15
- package/dist/contracts/coding-context.js +0 -15
- package/dist/contracts/coding-handoff.js +0 -11
- package/dist/contracts/coding-workspace.js +0 -14
- package/dist/contracts/console-api.js +1 -54
- package/dist/contracts/contract-test.js +0 -14
- package/dist/contracts/contract.js +0 -48
- package/dist/contracts/decision.js +0 -20
- package/dist/contracts/diff-stat.js +0 -16
- package/dist/contracts/discord-callback.js +0 -9
- package/dist/contracts/flow-card.js +0 -18
- package/dist/contracts/flow-propose.js +0 -8
- package/dist/contracts/flow-send.js +0 -31
- package/dist/contracts/flow.js +0 -112
- package/dist/contracts/gateway-tools.js +0 -22
- package/dist/contracts/handoff.js +0 -22
- package/dist/contracts/integration-metadata.js +0 -39
- package/dist/contracts/lead-context.js +0 -14
- package/dist/contracts/lead-tools.js +0 -49
- package/dist/contracts/mcp-oauth.js +0 -12
- package/dist/contracts/memory-pass.js +0 -21
- package/dist/contracts/model-catalog.js +0 -9
- package/dist/contracts/observation-request.js +0 -11
- package/dist/contracts/plan.js +0 -16
- package/dist/contracts/project-knowledge.js +0 -26
- package/dist/contracts/project-memory.js +0 -16
- package/dist/contracts/project-skills.js +0 -31
- package/dist/contracts/proof.js +0 -23
- package/dist/contracts/provider.js +0 -9
- package/dist/contracts/recipes.js +0 -16
- package/dist/contracts/release-check.js +0 -61
- package/dist/contracts/release-terms.js +0 -27
- package/dist/contracts/retention.js +0 -12
- package/dist/contracts/review-findings.js +0 -13
- package/dist/contracts/route-results.js +0 -15
- package/dist/contracts/route.js +0 -33
- package/dist/contracts/scope.js +0 -29
- package/dist/contracts/scout-report.js +0 -34
- package/dist/contracts/slack-callback.js +0 -11
- package/dist/contracts/sort-answer.js +0 -24
- package/dist/contracts/stage-output.js +0 -46
- package/dist/contracts/storage.js +0 -8
- package/dist/contracts/store-json.js +0 -41
- package/dist/contracts/subagent-turn.js +0 -23
- package/dist/contracts/task-sizing.js +0 -10
- package/dist/contracts/teams-callback.js +0 -7
- package/dist/contracts/telegram-callback.js +0 -27
- package/dist/contracts/trigger-payloads.js +0 -41
- package/dist/contracts/update-journal.js +0 -47
- package/dist/contracts/verification-receipt.js +0 -36
- package/dist/contracts/verification-view.js +0 -15
- package/dist/contracts/youiyoux-request.js +0 -26
- package/dist/control-setup.js +0 -7
- package/dist/control-ui.js +0 -3
- package/dist/controller-service.js +0 -4
- package/dist/controller-supervisor.js +0 -15
- package/dist/converse.js +3 -129
- package/dist/coordinator-proposals.js +1 -6
- package/dist/coordinator.js +0 -65
- package/dist/credentials-ui.js +0 -6
- package/dist/daemon.js +0 -137
- package/dist/database-reclaim.js +0 -3
- package/dist/decision.js +0 -78
- package/dist/demo-chat.js +4 -15
- package/dist/demo-sign-in.js +77 -0
- package/dist/demo.js +5 -194
- package/dist/deploy-gate.js +0 -20
- package/dist/deploy-lock.js +0 -4
- package/dist/deploy-phase.js +0 -22
- package/dist/deploy-rescue.js +0 -21
- package/dist/deprecations.js +0 -12
- package/dist/design/kit.css +9 -6
- package/dist/design/kit.js +2 -33
- package/dist/desktop-access.js +0 -9
- package/dist/desktop-bundle.js +1 -3
- package/dist/desktop-host.js +0 -34
- package/dist/desktop-update-gate.js +0 -8
- package/dist/desktop-update-recovery.js +1 -18
- package/dist/desktop-update.js +2 -48
- package/dist/digest-times.js +0 -2
- package/dist/disclosure.js +0 -5
- package/dist/discord-api.js +0 -6
- package/dist/discord-chat.js +0 -31
- package/dist/discord.js +0 -7
- package/dist/discover.js +0 -50
- package/dist/dispatch.js +61 -60
- package/dist/dispose.js +0 -208
- package/dist/doctor.js +0 -48
- package/dist/easy-start-args.js +7 -7
- package/dist/easy-start.js +32 -45
- package/dist/egress.js +1 -63
- package/dist/email-settings.js +0 -8
- package/dist/envelope.js +50 -86
- package/dist/eval-gate.js +1 -37
- package/dist/eval-hooks.js +0 -120
- package/dist/eval-oracle-main.js +0 -7
- package/dist/eval-oracle.js +3 -42
- package/dist/eval-world.js +1 -23
- package/dist/evals.js +6 -134
- package/dist/evidence-pack.js +0 -29
- package/dist/evidence-pair.js +0 -17
- package/dist/evidence.js +4 -280
- package/dist/exec.js +19 -404
- package/dist/exhaustion.js +0 -30
- package/dist/export-ui.js +0 -7
- package/dist/export.js +1 -38
- package/dist/failing-first.js +0 -6
- package/dist/fallback-schema.js +0 -5
- package/dist/fallback.js +0 -81
- package/dist/fast-start.js +0 -97
- package/dist/fast-terms.js +0 -3
- package/dist/fenced-check-coverage.js +0 -11
- package/dist/findings.js +1 -63
- package/dist/first-run.js +4 -57
- package/dist/first-tasks-child.js +0 -5
- package/dist/flaky-ci.js +1 -24
- package/dist/flaky-cli.js +0 -4
- package/dist/flaky.js +0 -43
- package/dist/fleet-schema.js +0 -11
- package/dist/flow-actions.js +0 -31
- package/dist/flow-browser.js +0 -42
- package/dist/flow-cadence.js +1 -24
- package/dist/flow-card-task.js +0 -11
- package/dist/flow-changed.js +0 -16
- package/dist/flow-code.js +1 -45
- package/dist/flow-draft.js +0 -17
- package/dist/flow-engine.js +2 -76
- package/dist/flow-gallery-ui.js +0 -28
- package/dist/flow-gallery.js +0 -54
- package/dist/flow-insights.js +0 -12
- package/dist/flow-items.js +0 -27
- package/dist/flow-live.js +0 -31
- package/dist/flow-people.js +0 -14
- package/dist/flow-pull-request.js +0 -32
- package/dist/flow-replies.js +0 -9
- package/dist/flow-result-card.js +0 -8
- package/dist/flow-schedule.js +0 -74
- package/dist/flow-scripts.js +0 -13
- package/dist/flow-secrets.js +0 -10
- package/dist/flow-send.js +0 -45
- package/dist/flow-share.js +0 -60
- package/dist/flow-sort.js +1 -24
- package/dist/flow-starters-ui.js +0 -2
- package/dist/flow-starters.js +0 -13
- package/dist/flow-steps.js +0 -80
- package/dist/flow-triggers.js +2 -256
- package/dist/flow-unattended-words.js +0 -13
- package/dist/flow-unattended.js +2 -115
- package/dist/flows-cli.js +2 -36
- package/dist/flows-ui.js +0 -51
- package/dist/flows.js +0 -158
- package/dist/folder-gate.js +0 -21
- package/dist/folder-look.js +0 -42
- package/dist/follow-through-brief.js +0 -6
- package/dist/follow-through-cli.js +0 -5
- package/dist/fonts.js +0 -13
- package/dist/gaps.js +0 -20
- package/dist/gate-failure.js +0 -7
- package/dist/git-floor.js +0 -12
- package/dist/git-incident.js +2 -38
- package/dist/git-views.js +0 -24
- package/dist/git.js +0 -31
- package/dist/github-import.js +0 -22
- package/dist/github-jobs.js +0 -12
- package/dist/google-mail.js +2 -27
- package/dist/grant.js +0 -110
- package/dist/graph.js +0 -108
- package/dist/guides.js +4 -15
- package/dist/handover-note.js +0 -12
- package/dist/health-cli.js +0 -2
- package/dist/home-groups.js +0 -15
- package/dist/html.js +0 -54
- package/dist/install-method.js +0 -12
- package/dist/integrations-ui.js +0 -15
- package/dist/integrations.js +7 -50
- package/dist/invoke.js +1 -381
- package/dist/is-record.js +0 -1
- package/dist/issues.js +0 -48
- package/dist/jsonl-discriminants.js +0 -6
- package/dist/keymap.js +0 -17
- package/dist/keys.js +0 -56
- package/dist/kits-ui.js +0 -3
- package/dist/kits.js +1 -24
- package/dist/knowledge-cli.js +0 -4
- package/dist/knowledge-ui.js +0 -8
- package/dist/landed-cleanup.js +0 -119
- package/dist/laptop-background.js +0 -85
- package/dist/laptop-service.js +0 -67
- package/dist/latency-timeline.js +2 -23
- package/dist/lead-about.js +0 -7
- package/dist/lead-answer-eval.js +0 -39
- package/dist/lead-capabilities.js +0 -19
- package/dist/lead-cli-live.js +0 -22
- package/dist/lead-cli.js +0 -27
- package/dist/lead-commitments.js +1 -27
- package/dist/lead-context.js +2 -42
- package/dist/lead-contract.js +0 -8
- package/dist/lead-doors.js +0 -105
- package/dist/lead-follow.js +0 -41
- package/dist/lead-identity.js +1 -4
- package/dist/lead-latency-schema.js +0 -13
- package/dist/lead-people.js +3 -18
- package/dist/lead-progress.js +0 -12
- package/dist/lead-queue-runtime.js +0 -26
- package/dist/lead-queue.js +0 -35
- package/dist/lead-route.js +0 -33
- package/dist/lead-status.js +0 -37
- package/dist/lead-sweep.js +0 -18
- package/dist/lead-tools.js +0 -160
- package/dist/lead-voice.js +0 -54
- package/dist/lead.js +2 -105
- package/dist/learning-child.js +0 -6
- package/dist/learning-look.js +0 -14
- package/dist/ledger-chain.js +0 -34
- package/dist/ledger-csv.js +0 -2
- package/dist/ledger-view.js +0 -3
- package/dist/lesson-notes.js +0 -56
- package/dist/limits-ui.js +0 -14
- package/dist/link.js +0 -79
- package/dist/live-backup.js +3 -33
- package/dist/live-bus.js +7 -81
- package/dist/live-children-read.js +4 -47
- package/dist/live-children.js +4 -44
- package/dist/live-detail.js +0 -17
- package/dist/live-input.js +5 -68
- package/dist/live-main-read.js +1 -14
- package/dist/live-notes.js +0 -12
- package/dist/live-open.js +1 -23
- package/dist/live-records.js +4 -151
- package/dist/live-reply.js +1 -51
- package/dist/live-terminal.js +12 -111
- package/dist/live.js +4 -130
- package/dist/local-owner-acts.js +0 -53
- package/dist/local-owner.js +2 -93
- package/dist/log.js +0 -8
- package/dist/login-secrets.js +2 -38
- package/dist/machine-check.js +0 -2
- package/dist/machine-identity.js +1 -46
- package/dist/mailbox.js +0 -30
- package/dist/maintenance.js +1 -3
- package/dist/mcp-connect.js +0 -88
- package/dist/mcp-core.js +0 -45
- package/dist/mcp-http.js +0 -13
- package/dist/mcp-oauth.js +0 -37
- package/dist/mcp-person.js +0 -11
- package/dist/mcp.js +3 -73
- package/dist/memory-cli.js +0 -3
- package/dist/memory-pass.js +0 -53
- package/dist/memory-tidy.js +0 -55
- package/dist/memory-use.js +2 -24
- package/dist/merge-checklist.js +21 -29
- package/dist/metrics.js +0 -10
- package/dist/mobile-viewport.js +0 -6
- package/dist/model-catalog.js +1 -33
- package/dist/model-choices.js +9 -84
- package/dist/model-names.js +0 -9
- package/dist/models-cli.js +0 -13
- package/dist/models-ui.js +0 -17
- package/dist/modes.js +0 -35
- package/dist/monitoring-settings.js +2 -27
- package/dist/monitoring-ui.js +2 -14
- package/dist/monitoring.js +2 -38
- package/dist/names.js +0 -39
- package/dist/needs-you.js +7 -70
- package/dist/never-index.js +0 -9
- package/dist/nightly-check.js +0 -74
- package/dist/nightly-github.js +0 -168
- package/dist/notification-delivery.js +0 -3
- package/dist/notification-rows.js +0 -17
- package/dist/oauth-run-token.js +1 -37
- package/dist/observations.js +0 -16
- package/dist/oidc.js +1 -20
- package/dist/onboard.js +4 -57
- package/dist/one-step-chat-schema.js +0 -15
- package/dist/openrouter-models.js +0 -6
- package/dist/operate-remote-arguments.js +0 -17
- package/dist/operate-remote.js +0 -33
- package/dist/operate.js +227 -2326
- package/dist/orphan-sweep.js +3 -37
- package/dist/page-work-contract.js +0 -3
- package/dist/password-bearer.js +1 -11
- package/dist/passwordless.js +0 -3
- package/dist/peek-cli.js +0 -46
- package/dist/peek.js +2 -61
- package/dist/people-audit-ui.js +0 -6
- package/dist/person-proof.js +0 -6
- package/dist/phase-routing.js +8 -183
- package/dist/plain-schema.js +0 -14
- package/dist/plain-words.js +18 -12
- package/dist/plan-auto.js +0 -20
- package/dist/plan-login.js +0 -16
- package/dist/plan.js +0 -68
- package/dist/plane-review.js +0 -56
- package/dist/planner-source.js +0 -96
- package/dist/planner.js +0 -117
- package/dist/policy-ui.js +0 -8
- package/dist/policy.js +0 -47
- package/dist/prepared-evidence.js +0 -5
- package/dist/principal.js +0 -29
- package/dist/probe.js +0 -30
- package/dist/process-custody.js +0 -15
- package/dist/process-liveness.js +0 -32
- package/dist/process-tree.js +3 -29
- package/dist/project-access.js +0 -10
- package/dist/project-admission.js +1 -41
- package/dist/project-cli.js +0 -6
- package/dist/project-concurrency.js +0 -35
- package/dist/project-delete-ui.js +4 -29
- package/dist/project-delete.js +1 -73
- package/dist/project-demo.js +0 -13
- package/dist/project-file.js +0 -2
- package/dist/project-identity.js +0 -41
- package/dist/project-knowledge.js +0 -39
- package/dist/project-learning.js +3 -55
- package/dist/project-memory.js +2 -45
- package/dist/project-outcomes.js +0 -6
- package/dist/project-sandbox.js +0 -23
- package/dist/project-skills.js +0 -12
- package/dist/project-tools.js +6 -184
- package/dist/project.js +0 -48
- package/dist/prompt.js +0 -31
- package/dist/proof.js +0 -220
- package/dist/proposal.js +0 -50
- package/dist/protected-storage-look.js +0 -6
- package/dist/protected-storage.js +1 -84
- package/dist/provider-auth.js +3 -69
- package/dist/provider-capture.js +1 -15
- package/dist/provider-connection.js +0 -8
- package/dist/provider-home.js +0 -25
- package/dist/provider-limits.js +0 -14
- package/dist/provider.js +0 -324
- package/dist/public-access.js +0 -34
- package/dist/public-check.js +0 -16
- package/dist/publish.js +1 -150
- package/dist/pull-request-flow.js +0 -77
- package/dist/pull-request-schema.js +0 -4
- package/dist/pull-request-ui.js +0 -5
- package/dist/pulls.js +0 -80
- package/dist/push.js +5 -89
- package/dist/quick-start.js +1 -23
- package/dist/read-executor-worker.js +0 -1
- package/dist/read-executor.js +0 -10
- package/dist/read-only-request.js +0 -7
- package/dist/recipe-ui.js +0 -6
- package/dist/recipes.js +0 -13
- package/dist/release-adapters.js +6 -214
- package/dist/release-approval.js +0 -74
- package/dist/release-authority.js +0 -42
- package/dist/release-auto.js +0 -142
- package/dist/release-card.js +0 -100
- package/dist/release-carry.js +0 -132
- package/dist/release-ci-hold.js +0 -20
- package/dist/release-cli.js +0 -46
- package/dist/release-coverage.js +0 -16
- package/dist/release-gate.js +0 -30
- package/dist/release-git.js +0 -24
- package/dist/release-links.js +0 -17
- package/dist/release-net.js +0 -42
- package/dist/release-next.js +0 -25
- package/dist/release-recheck.js +0 -89
- package/dist/release-refusal.js +0 -18
- package/dist/release-view.js +0 -5
- package/dist/release.js +7 -341
- package/dist/releases.js +0 -49
- package/dist/remote-audit.js +0 -25
- package/dist/remote-command.js +0 -16
- package/dist/remote-destination.js +5 -26
- package/dist/remote-exec.js +1 -27
- package/dist/remote-main.js +1 -53
- package/dist/remote-run.js +0 -5
- package/dist/remote.js +0 -49
- package/dist/render.js +0 -133
- package/dist/reply-shape.js +0 -85
- package/dist/reply-voice.js +0 -7
- package/dist/report-summary.js +0 -5
- package/dist/reported-usage.js +0 -30
- package/dist/repos.js +9 -62
- package/dist/repository-context.js +1 -24
- package/dist/request-budget-ui.js +0 -4
- package/dist/request-budget.js +0 -23
- package/dist/restart-certification.js +0 -37
- package/dist/result-actions.js +0 -62
- package/dist/result-acts.js +0 -34
- package/dist/result-completion.js +0 -25
- package/dist/result-evidence-readers.js +0 -3
- package/dist/result-follow-ups.js +1 -39
- package/dist/result-review.js +0 -86
- package/dist/result-shots.js +0 -39
- package/dist/retention-ui.js +0 -7
- package/dist/retention.js +2 -46
- package/dist/review-context.js +0 -129
- package/dist/review-evidence.js +0 -4
- package/dist/review-switch.js +1 -7
- package/dist/reviewer.js +0 -35
- package/dist/route-change-check.js +0 -2
- package/dist/route-change.js +0 -16
- package/dist/route-hooks.js +0 -27
- package/dist/route-results.js +2 -58
- package/dist/route-rules.js +1 -106
- package/dist/route-savings.js +0 -36
- package/dist/route-store.js +1 -133
- package/dist/run-closeout.js +2 -50
- package/dist/run-efficiency.js +2 -44
- package/dist/run-ending.js +0 -13
- package/dist/runner-process.js +0 -33
- package/dist/runner.js +17 -189
- package/dist/sample-project.js +2 -27
- package/dist/sandbox-launch.js +4 -25
- package/dist/sandbox-runtime.js +1 -88
- package/dist/scan.js +0 -27
- package/dist/scope.js +4 -567
- package/dist/scout-browser-lock.js +0 -6
- package/dist/scout-browser.js +2 -68
- package/dist/scout-net.js +1 -32
- package/dist/scout-report.js +0 -22
- package/dist/scout.js +1 -116
- package/dist/secret-mint.js +0 -6
- package/dist/serve.js +21 -555
- package/dist/server/agents-computers.js +0 -10
- package/dist/server/agents-live-filed.js +0 -13
- package/dist/server/agents-live-lead.js +0 -19
- package/dist/server/agents-live-room.js +0 -19
- package/dist/server/chat.js +2 -194
- package/dist/server/chrome.js +17 -263
- package/dist/server/console.css +4 -4
- package/dist/server/edge-refusal.js +0 -3
- package/dist/server/flows.js +5 -74
- package/dist/server/guards.js +1 -88
- package/dist/server/handler-registry.js +0 -2
- package/dist/server/home-asks.js +1 -22
- package/dist/server/home.js +1 -30
- package/dist/server/http.js +0 -82
- package/dist/server/in-place.js +0 -15
- package/dist/server/kit-standalone.js +0 -20
- package/dist/server/kit.js +2 -114
- package/dist/server/last-checks.js +0 -2
- package/dist/server/live.js +1 -36
- package/dist/server/merge-ready-view.js +0 -6
- package/dist/server/mutation-key.js +3 -40
- package/dist/server/pages-assets.js +0 -16
- package/dist/server/pages.js +7 -195
- package/dist/server/people-tokens.js +3 -101
- package/dist/server/remote-hooks.js +0 -13
- package/dist/server/remote.js +0 -28
- package/dist/server/render-chat.js +8 -144
- package/dist/server/render-code-map.js +0 -5
- package/dist/server/render-flaky.js +0 -8
- package/dist/server/render-follow-through.js +2 -5
- package/dist/server/render-history.js +2 -34
- package/dist/server/render-new-task.js +2 -29
- package/dist/server/render-pages.js +1 -111
- package/dist/server/render-people.js +2 -46
- package/dist/server/render-projects.js +15 -32
- package/dist/server/render-release.js +1 -14
- package/dist/server/render-results.js +4 -355
- package/dist/server/render-settings.js +0 -15
- package/dist/server/render-tasks.js +13 -493
- package/dist/server/request-context.js +2 -9
- package/dist/server/retired-routes.js +0 -11
- package/dist/server/route-policy.js +0 -3
- package/dist/server/route-table.js +6 -135
- package/dist/server/runtime.js +0 -1
- package/dist/server/session.js +0 -28
- package/dist/server/settings.js +40 -246
- package/dist/server/signup-gate.js +0 -11
- package/dist/server/sweeps.js +0 -6
- package/dist/server/task-views.js +9 -227
- package/dist/server/tasks.js +5 -539
- package/dist/server/terminals.js +2 -46
- package/dist/server/welcome.js +2 -22
- package/dist/server-telemetry.js +0 -9
- package/dist/settings-groups-ui.js +50 -63
- package/dist/settings-kit-script.js +0 -19
- package/dist/settings-kit.js +0 -63
- package/dist/settings-proofs.js +0 -23
- package/dist/setup-guide.js +1 -9
- package/dist/shared-deps.js +9 -84
- package/dist/sign-in-guard.js +0 -27
- package/dist/skills-ui.js +0 -2
- package/dist/skills.js +2 -54
- package/dist/slack-api.js +0 -3
- package/dist/slack-chat.js +0 -25
- package/dist/slack-settings.js +0 -1
- package/dist/slack-socket.js +0 -5
- package/dist/slack.js +0 -4
- package/dist/sleep.js +0 -1
- package/dist/source-key.js +0 -10
- package/dist/spend-report.js +0 -29
- package/dist/spend-ui.js +0 -26
- package/dist/spend.js +0 -40
- package/dist/sqlite-runtime.js +0 -2
- package/dist/sqlite-telemetry.js +0 -9
- package/dist/sso-settings.js +0 -13
- package/dist/sso-ui.js +0 -2
- package/dist/staged-runtimes.js +5 -39
- package/dist/steer-capabilities.js +1 -7
- package/dist/steer-controls.js +0 -10
- package/dist/steer-live.js +0 -31
- package/dist/steer-mailbox.js +4 -65
- package/dist/steer-status.js +0 -7
- package/dist/stop-proof.js +5 -62
- package/dist/storage-sweep-child.js +1 -5
- package/dist/storage-sweep-process.js +2 -20
- package/dist/storage-sweep-schedule.js +0 -32
- package/dist/storage-sweep.js +2 -51
- package/dist/storage-ui.js +0 -18
- package/dist/storage.js +0 -31
- package/dist/store-baseline.js +0 -14
- package/dist/store.js +109 -4763
- package/dist/stream-scope.js +0 -16
- package/dist/structured-output.js +0 -39
- package/dist/style-asset.js +0 -2
- package/dist/subagent-admin.js +0 -9
- package/dist/subagent-desk.js +0 -29
- package/dist/subagent-memory.js +0 -38
- package/dist/subagent-question.js +0 -29
- package/dist/subagent-tools.js +1 -60
- package/dist/subagent-week.js +0 -28
- package/dist/subagent-work.js +1 -39
- package/dist/subagents-ui.js +1 -13
- package/dist/subagents.js +0 -40
- package/dist/subscription-chat.js +1 -42
- package/dist/summary.js +0 -19
- package/dist/surface.js +0 -75
- package/dist/sweep-gate.js +0 -2
- package/dist/sweep-quarantine.js +2 -13
- package/dist/sync.js +0 -47
- package/dist/tailnet.js +0 -9
- package/dist/tamper-scan.js +0 -15
- package/dist/task-activity.js +1 -16
- package/dist/task-aliases.js +0 -3
- package/dist/task-archive.js +0 -7
- package/dist/task-base.js +0 -18
- package/dist/task-composer.js +0 -2
- package/dist/task-control.js +0 -74
- package/dist/task-live.js +0 -23
- package/dist/task-moves.js +0 -28
- package/dist/task-outcome-cli.js +17 -28
- package/dist/task-review-brief.js +0 -7
- package/dist/task-sizing.js +0 -47
- package/dist/task-source.js +0 -23
- package/dist/task-status.js +0 -106
- package/dist/task-text.js +0 -12
- package/dist/team-chat-authorization.js +0 -3
- package/dist/team-contract.js +0 -2
- package/dist/team-http.js +0 -4
- package/dist/team-leads.js +1 -16
- package/dist/team-runtime.js +0 -13
- package/dist/team-ui.js +0 -1
- package/dist/team-updates.js +0 -4
- package/dist/teams-api.js +0 -12
- package/dist/teams-chat.js +0 -28
- package/dist/teams.js +0 -12
- package/dist/teardown-git.js +6 -294
- package/dist/telegram-flow.js +0 -51
- package/dist/telegram-lead.js +2 -203
- package/dist/telegram-live.js +1 -42
- package/dist/telegram-progress.js +0 -18
- package/dist/telegram-settings.js +0 -7
- package/dist/telegram-status.js +0 -46
- package/dist/telegram-team.js +1 -33
- package/dist/telegram.js +6 -454
- package/dist/templates.js +0 -24
- package/dist/terminal-catalog.js +2 -20
- package/dist/terminal-text.js +0 -12
- package/dist/test-infra.js +0 -50
- package/dist/test-temp.js +3 -26
- package/dist/text-limits.js +0 -92
- package/dist/tidy.js +0 -76
- package/dist/tier-report.js +0 -2
- package/dist/token-notices.js +1 -9
- package/dist/tokens-cli.js +0 -13
- package/dist/tool-broker.js +2 -53
- package/dist/tool-launcher.js +0 -14
- package/dist/tool-secret-store.js +3 -125
- package/dist/toolroll-update-cli.js +0 -9
- package/dist/toolroll-update-ui.js +0 -14
- package/dist/toolroll-update.js +13 -252
- package/dist/tools-ui.js +0 -17
- package/dist/transitions-recipes.js +0 -2
- package/dist/tree-proof.js +0 -23
- package/dist/tui-contract.js +0 -8
- package/dist/tui-source.js +16 -36
- package/dist/tui.js +1 -1
- package/dist/typed-start.js +0 -27
- package/dist/unfenced-test-support.js +0 -5
- package/dist/up-processes.js +1 -40
- package/dist/up-role-child.js +1 -13
- package/dist/update-notice.js +0 -1
- package/dist/vanished-retry.js +0 -40
- package/dist/verification-evidence.js +0 -39
- package/dist/version.js +0 -1
- package/dist/wake-hub.js +0 -28
- package/dist/webhook-limits.js +0 -7
- package/dist/webhook-readers.js +0 -30
- package/dist/webhook-signing.js +0 -14
- package/dist/webhooks.js +0 -54
- package/dist/welcome-facts.js +2 -14
- package/dist/when-html.js +0 -27
- package/dist/work-index.js +26 -98
- package/dist/work-summary.js +2 -17
- package/dist/workspace-motion.js +0 -2
- package/dist/workspace-revision.js +1 -21
- package/dist/workspace-ui.js +15 -135
- package/dist/worktree-notices.js +0 -3
- package/dist/worktree.js +0 -308
- package/dist/writes-mode.js +0 -1
- package/dist/youiyoux-intake.js +4 -159
- package/package.json +4 -3
- package/dist/accent-colors.d.ts +0 -51
- package/dist/acp-agents.d.ts +0 -43
- package/dist/acp-attest.d.ts +0 -44
- package/dist/acp-check.d.ts +0 -37
- package/dist/acp-client.d.ts +0 -163
- package/dist/acp-inspect.d.ts +0 -23
- package/dist/action-ledger.d.ts +0 -27
- package/dist/activity-line.d.ts +0 -29
- package/dist/actor.d.ts +0 -11
- package/dist/agent-board.d.ts +0 -229
- package/dist/agent-fence.d.ts +0 -479
- package/dist/agent-onboard.d.ts +0 -158
- package/dist/agent-pulse.d.ts +0 -43
- package/dist/agent-state-words.d.ts +0 -19
- package/dist/agent-state.d.ts +0 -65
- package/dist/agent-turns.d.ts +0 -52
- package/dist/agentconfig.d.ts +0 -191
- package/dist/agents-board.d.ts +0 -145
- package/dist/agents-live.d.ts +0 -31
- package/dist/api-tokens.d.ts +0 -80
- package/dist/approval-authority.d.ts +0 -51
- package/dist/approval-password.d.ts +0 -31
- package/dist/approval-policy.d.ts +0 -69
- package/dist/approval-rules-ui.d.ts +0 -40
- package/dist/assignment-adapters.d.ts +0 -152
- package/dist/assignment-brief.d.ts +0 -83
- package/dist/assignment-delivery.d.ts +0 -86
- package/dist/assignment-presentation.d.ts +0 -37
- package/dist/assignment-status.d.ts +0 -71
- package/dist/assignment-ui.d.ts +0 -68
- package/dist/assignment.d.ts +0 -350
- package/dist/attest.d.ts +0 -59
- package/dist/audit-cli.d.ts +0 -17
- package/dist/backend.d.ts +0 -97
- package/dist/backup-ui.d.ts +0 -32
- package/dist/backup.d.ts +0 -92
- package/dist/batch-checks.d.ts +0 -15
- package/dist/batch-policy.d.ts +0 -23
- package/dist/beads.d.ts +0 -34
- package/dist/bin.d.ts +0 -2
- package/dist/board.d.ts +0 -134
- package/dist/boot-identity.d.ts +0 -64
- package/dist/bounded-spawn.d.ts +0 -57
- package/dist/brand-icons.d.ts +0 -168
- package/dist/brand-mark.d.ts +0 -28
- package/dist/brief-fence.d.ts +0 -9
- package/dist/browser-crew.d.ts +0 -12
- package/dist/browser-shell.d.ts +0 -9
- package/dist/browser-workspace.d.ts +0 -1985
- package/dist/budget-alerts.d.ts +0 -19
- package/dist/build-review.d.ts +0 -38
- package/dist/builder-restart.d.ts +0 -21
- package/dist/builder.d.ts +0 -409
- package/dist/canonical-json.d.ts +0 -14
- package/dist/capscan.d.ts +0 -35
- package/dist/card-catalog.d.ts +0 -209
- package/dist/card-cli.d.ts +0 -43
- package/dist/card-render.d.ts +0 -43
- package/dist/card-sources.d.ts +0 -68
- package/dist/chat-acceptance.d.ts +0 -74
- package/dist/chat-actions.d.ts +0 -460
- package/dist/chat-admission.d.ts +0 -19
- package/dist/chat-approval.d.ts +0 -58
- package/dist/chat-ask.d.ts +0 -32
- package/dist/chat-card-part.d.ts +0 -11
- package/dist/chat-card.d.ts +0 -46
- package/dist/chat-channel.d.ts +0 -126
- package/dist/chat-continuity.d.ts +0 -32
- package/dist/chat-controls.d.ts +0 -117
- package/dist/chat-core.d.ts +0 -177
- package/dist/chat-decide.d.ts +0 -269
- package/dist/chat-delivery-state.d.ts +0 -132
- package/dist/chat-delivery.d.ts +0 -71
- package/dist/chat-display.d.ts +0 -1
- package/dist/chat-evidence.d.ts +0 -123
- package/dist/chat-flow.d.ts +0 -70
- package/dist/chat-follow.d.ts +0 -20
- package/dist/chat-inbox.d.ts +0 -57
- package/dist/chat-live-schema.d.ts +0 -17
- package/dist/chat-live.d.ts +0 -161
- package/dist/chat-message-states.d.ts +0 -75
- package/dist/chat-messages.d.ts +0 -338
- package/dist/chat-migration.d.ts +0 -30
- package/dist/chat-polish.d.ts +0 -17
- package/dist/chat-quiet.d.ts +0 -40
- package/dist/chat-review.d.ts +0 -51
- package/dist/chat-rooms.d.ts +0 -123
- package/dist/chat-settings-page.d.ts +0 -43
- package/dist/chat-task-actions.d.ts +0 -59
- package/dist/chat-terms.d.ts +0 -29
- package/dist/chat-voice.d.ts +0 -69
- package/dist/chat-warmth.d.ts +0 -21
- package/dist/check-access.d.ts +0 -54
- package/dist/check-facts.d.ts +0 -126
- package/dist/check-failure.d.ts +0 -113
- package/dist/check-levels-ui.d.ts +0 -36
- package/dist/check-levels.d.ts +0 -70
- package/dist/check-load.d.ts +0 -85
- package/dist/check-only-standing.d.ts +0 -36
- package/dist/check-only.d.ts +0 -15
- package/dist/check-progress.d.ts +0 -78
- package/dist/check-repair.d.ts +0 -47
- package/dist/check-report.d.ts +0 -177
- package/dist/check-stamp.d.ts +0 -46
- package/dist/checkout-cleanup.d.ts +0 -157
- package/dist/checkout-proof.d.ts +0 -28
- package/dist/child-database.d.ts +0 -12
- package/dist/claim.d.ts +0 -627
- package/dist/claude-print.d.ts +0 -12
- package/dist/cli-fast.d.ts +0 -8
- package/dist/cli-help.d.ts +0 -8
- package/dist/cli-http.d.ts +0 -58
- package/dist/cli.d.ts +0 -149
- package/dist/code-extract.d.ts +0 -44
- package/dist/code-map-acts.d.ts +0 -24
- package/dist/code-map-admission.d.ts +0 -52
- package/dist/code-map-build.d.ts +0 -63
- package/dist/code-map-cli.d.ts +0 -153
- package/dist/code-map-main.d.ts +0 -1
- package/dist/code-map-read.d.ts +0 -106
- package/dist/code-map-report.d.ts +0 -37
- package/dist/code-map-shape.d.ts +0 -172
- package/dist/code-map-store.d.ts +0 -136
- package/dist/codex-limits.d.ts +0 -15
- package/dist/coding-context.d.ts +0 -18
- package/dist/coding-handoff.d.ts +0 -39
- package/dist/coding-provider.d.ts +0 -88
- package/dist/coding-shipping-ui.d.ts +0 -5
- package/dist/coding-types.d.ts +0 -16
- package/dist/coding-ui.d.ts +0 -19
- package/dist/coding-update.d.ts +0 -28
- package/dist/coding-workspace.d.ts +0 -141
- package/dist/commit-extract.d.ts +0 -135
- package/dist/connect-cli.d.ts +0 -34
- package/dist/console-chrome.d.ts +0 -41
- package/dist/console-instance.d.ts +0 -157
- package/dist/container-state.d.ts +0 -5
- package/dist/containment.d.ts +0 -205
- package/dist/contract-changes.d.ts +0 -52
- package/dist/contracts/acceptance-terms.d.ts +0 -14
- package/dist/contracts/chat-actions.d.ts +0 -465
- package/dist/contracts/chat-callback-rows.d.ts +0 -59
- package/dist/contracts/chat-card.d.ts +0 -91
- package/dist/contracts/chat-content.d.ts +0 -551
- package/dist/contracts/chat-tables.d.ts +0 -12
- package/dist/contracts/cli.d.ts +0 -987
- package/dist/contracts/coding-activity.d.ts +0 -64
- package/dist/contracts/coding-context.d.ts +0 -97
- package/dist/contracts/coding-handoff.d.ts +0 -44
- package/dist/contracts/coding-workspace.d.ts +0 -165
- package/dist/contracts/console-api.d.ts +0 -540
- package/dist/contracts/contract-test.d.ts +0 -45
- package/dist/contracts/contract.d.ts +0 -92
- package/dist/contracts/decision.d.ts +0 -45
- package/dist/contracts/diff-stat.d.ts +0 -58
- package/dist/contracts/discord-callback.d.ts +0 -45
- package/dist/contracts/flow-card.d.ts +0 -53
- package/dist/contracts/flow-propose.d.ts +0 -334
- package/dist/contracts/flow-send.d.ts +0 -245
- package/dist/contracts/flow.d.ts +0 -19565
- package/dist/contracts/gateway-tools.d.ts +0 -472
- package/dist/contracts/handoff.d.ts +0 -91
- package/dist/contracts/health.d.ts +0 -82
- package/dist/contracts/integration-metadata.d.ts +0 -100
- package/dist/contracts/lead-context.d.ts +0 -165
- package/dist/contracts/lead-tools.d.ts +0 -2312
- package/dist/contracts/mcp-oauth.d.ts +0 -53
- package/dist/contracts/memory-pass.d.ts +0 -157
- package/dist/contracts/model-catalog.d.ts +0 -21
- package/dist/contracts/observation-request.d.ts +0 -37
- package/dist/contracts/plan.d.ts +0 -58
- package/dist/contracts/project-knowledge.d.ts +0 -159
- package/dist/contracts/project-memory.d.ts +0 -119
- package/dist/contracts/project-skills.d.ts +0 -120
- package/dist/contracts/proof.d.ts +0 -136
- package/dist/contracts/provider.d.ts +0 -40
- package/dist/contracts/recipes.d.ts +0 -166
- package/dist/contracts/release-check.d.ts +0 -371
- package/dist/contracts/release-terms.d.ts +0 -107
- package/dist/contracts/retention.d.ts +0 -42
- package/dist/contracts/review-findings.d.ts +0 -46
- package/dist/contracts/route-results.d.ts +0 -121
- package/dist/contracts/route.d.ts +0 -897
- package/dist/contracts/scope.d.ts +0 -105
- package/dist/contracts/scout-report.d.ts +0 -234
- package/dist/contracts/slack-callback.d.ts +0 -43
- package/dist/contracts/sort-answer.d.ts +0 -83
- package/dist/contracts/stage-output.d.ts +0 -127
- package/dist/contracts/storage.d.ts +0 -37
- package/dist/contracts/store-json.d.ts +0 -313
- package/dist/contracts/subagent-turn.d.ts +0 -43
- package/dist/contracts/task-sizing.d.ts +0 -24
- package/dist/contracts/teams-callback.d.ts +0 -13
- package/dist/contracts/telegram-callback.d.ts +0 -120
- package/dist/contracts/trigger-payloads.d.ts +0 -389
- package/dist/contracts/update-journal.d.ts +0 -254
- package/dist/contracts/verification-receipt.d.ts +0 -200
- package/dist/contracts/verification-view.d.ts +0 -102
- package/dist/contracts/youiyoux-request.d.ts +0 -248
- package/dist/control-setup.d.ts +0 -44
- package/dist/control-ui.d.ts +0 -37
- package/dist/controller-service.d.ts +0 -1
- package/dist/controller-supervisor.d.ts +0 -38
- package/dist/converse.d.ts +0 -316
- package/dist/coordinator-proposals.d.ts +0 -29
- package/dist/coordinator.d.ts +0 -186
- package/dist/credentials-ui.d.ts +0 -33
- package/dist/daemon.d.ts +0 -226
- package/dist/database-reclaim.d.ts +0 -4
- package/dist/decision.d.ts +0 -119
- package/dist/demo-chat.d.ts +0 -32
- package/dist/demo.d.ts +0 -153
- package/dist/deploy-gate.d.ts +0 -20
- package/dist/deploy-lock.d.ts +0 -8
- package/dist/deploy-phase.d.ts +0 -37
- package/dist/deploy-rescue.d.ts +0 -42
- package/dist/deprecations.d.ts +0 -20
- package/dist/design/kit.d.ts +0 -216
- package/dist/desktop-access.d.ts +0 -28
- package/dist/desktop-bundle.d.ts +0 -16
- package/dist/desktop-host.d.ts +0 -54
- package/dist/desktop-update-gate.d.ts +0 -12
- package/dist/desktop-update-recovery.d.ts +0 -14
- package/dist/desktop-update.d.ts +0 -147
- package/dist/digest-times.d.ts +0 -3
- package/dist/disclosure.d.ts +0 -6
- package/dist/discord-api.d.ts +0 -24
- package/dist/discord-chat.d.ts +0 -27
- package/dist/discord-settings.d.ts +0 -4
- package/dist/discord.d.ts +0 -10
- package/dist/discover.d.ts +0 -75
- package/dist/dispatch.d.ts +0 -123
- package/dist/dispose.d.ts +0 -194
- package/dist/doctor.d.ts +0 -67
- package/dist/easy-start-args.d.ts +0 -13
- package/dist/easy-start.d.ts +0 -77
- package/dist/egress.d.ts +0 -121
- package/dist/email-settings.d.ts +0 -34
- package/dist/envelope.d.ts +0 -47
- package/dist/eval-gate.d.ts +0 -51
- package/dist/eval-hooks.d.ts +0 -94
- package/dist/eval-oracle-main.d.ts +0 -1
- package/dist/eval-oracle.d.ts +0 -60
- package/dist/eval-world.d.ts +0 -17
- package/dist/evals.d.ts +0 -299
- package/dist/evidence-pack.d.ts +0 -186
- package/dist/evidence-pair.d.ts +0 -53
- package/dist/evidence.d.ts +0 -371
- package/dist/exec.d.ts +0 -355
- package/dist/exhaustion.d.ts +0 -58
- package/dist/export-ui.d.ts +0 -11
- package/dist/export.d.ts +0 -48
- package/dist/failing-first.d.ts +0 -31
- package/dist/fallback-schema.d.ts +0 -8
- package/dist/fallback.d.ts +0 -138
- package/dist/fast-start.d.ts +0 -213
- package/dist/fast-terms.d.ts +0 -9
- package/dist/fenced-check-coverage.d.ts +0 -62
- package/dist/findings.d.ts +0 -224
- package/dist/first-run.d.ts +0 -197
- package/dist/first-tasks-child.d.ts +0 -1
- package/dist/flaky-ci.d.ts +0 -31
- package/dist/flaky-cli.d.ts +0 -60
- package/dist/flaky.d.ts +0 -83
- package/dist/fleet-schema.d.ts +0 -17
- package/dist/flow-actions.d.ts +0 -79
- package/dist/flow-browser.d.ts +0 -103
- package/dist/flow-cadence.d.ts +0 -48
- package/dist/flow-card-task.d.ts +0 -11
- package/dist/flow-changed.d.ts +0 -14
- package/dist/flow-code.d.ts +0 -84
- package/dist/flow-draft.d.ts +0 -42
- package/dist/flow-engine.d.ts +0 -82
- package/dist/flow-gallery-ui.d.ts +0 -73
- package/dist/flow-gallery.d.ts +0 -147
- package/dist/flow-insights.d.ts +0 -104
- package/dist/flow-items.d.ts +0 -37
- package/dist/flow-live.d.ts +0 -16
- package/dist/flow-people.d.ts +0 -23
- package/dist/flow-pull-request.d.ts +0 -14
- package/dist/flow-replies.d.ts +0 -48
- package/dist/flow-result-card.d.ts +0 -22
- package/dist/flow-schedule.d.ts +0 -154
- package/dist/flow-scripts.d.ts +0 -31
- package/dist/flow-secrets.d.ts +0 -13
- package/dist/flow-send.d.ts +0 -54
- package/dist/flow-share.d.ts +0 -78
- package/dist/flow-sort.d.ts +0 -63
- package/dist/flow-starters-ui.d.ts +0 -15
- package/dist/flow-starters.d.ts +0 -63
- package/dist/flow-steps.d.ts +0 -52
- package/dist/flow-triggers.d.ts +0 -303
- package/dist/flow-unattended-words.d.ts +0 -48
- package/dist/flow-unattended.d.ts +0 -259
- package/dist/flows-cli.d.ts +0 -358
- package/dist/flows-ui.d.ts +0 -70
- package/dist/flows.d.ts +0 -136
- package/dist/folder-gate.d.ts +0 -32
- package/dist/folder-look.d.ts +0 -110
- package/dist/follow-through-brief.d.ts +0 -12
- package/dist/follow-through-cli.d.ts +0 -23
- package/dist/fonts.d.ts +0 -19
- package/dist/gaps.d.ts +0 -35
- package/dist/gate-failure.d.ts +0 -40
- package/dist/git-floor.d.ts +0 -16
- package/dist/git-incident.d.ts +0 -65
- package/dist/git-views.d.ts +0 -20
- package/dist/git.d.ts +0 -54
- package/dist/github-import.d.ts +0 -62
- package/dist/github-jobs.d.ts +0 -25
- package/dist/google-mail.d.ts +0 -59
- package/dist/grant.d.ts +0 -136
- package/dist/graph.d.ts +0 -164
- package/dist/guides.d.ts +0 -22
- package/dist/handover-note.d.ts +0 -33
- package/dist/health-cli.d.ts +0 -3
- package/dist/home-groups.d.ts +0 -39
- package/dist/html.d.ts +0 -85
- package/dist/install-method.d.ts +0 -17
- package/dist/integrations-ui.d.ts +0 -17
- package/dist/integrations.d.ts +0 -138
- package/dist/invoke.d.ts +0 -228
- package/dist/is-record.d.ts +0 -2
- package/dist/issues.d.ts +0 -41
- package/dist/jsonl-discriminants.d.ts +0 -11
- package/dist/keymap.d.ts +0 -43
- package/dist/keys.d.ts +0 -108
- package/dist/kits-ui.d.ts +0 -16
- package/dist/kits.d.ts +0 -88
- package/dist/knowledge-cli.d.ts +0 -132
- package/dist/knowledge-ui.d.ts +0 -45
- package/dist/landed-cleanup.d.ts +0 -175
- package/dist/laptop-background.d.ts +0 -187
- package/dist/laptop-service.d.ts +0 -111
- package/dist/latency-timeline.d.ts +0 -46
- package/dist/lead-about.d.ts +0 -35
- package/dist/lead-answer-eval.d.ts +0 -93
- package/dist/lead-capabilities.d.ts +0 -57
- package/dist/lead-cli-live.d.ts +0 -56
- package/dist/lead-cli.d.ts +0 -58
- package/dist/lead-commitments.d.ts +0 -84
- package/dist/lead-context.d.ts +0 -45
- package/dist/lead-contract.d.ts +0 -10
- package/dist/lead-doors.d.ts +0 -122
- package/dist/lead-follow.d.ts +0 -26
- package/dist/lead-identity.d.ts +0 -23
- package/dist/lead-latency-schema.d.ts +0 -24
- package/dist/lead-people.d.ts +0 -55
- package/dist/lead-progress.d.ts +0 -67
- package/dist/lead-queue-runtime.d.ts +0 -46
- package/dist/lead-queue.d.ts +0 -104
- package/dist/lead-route.d.ts +0 -56
- package/dist/lead-status.d.ts +0 -116
- package/dist/lead-sweep.d.ts +0 -67
- package/dist/lead-tools.d.ts +0 -167
- package/dist/lead-voice.d.ts +0 -85
- package/dist/lead.d.ts +0 -142
- package/dist/learning-child.d.ts +0 -1
- package/dist/learning-look.d.ts +0 -25
- package/dist/ledger-chain.d.ts +0 -46
- package/dist/ledger-csv.d.ts +0 -4
- package/dist/ledger-view.d.ts +0 -27
- package/dist/lesson-notes.d.ts +0 -81
- package/dist/limits-ui.d.ts +0 -34
- package/dist/link.d.ts +0 -72
- package/dist/live-backup.d.ts +0 -39
- package/dist/live-bus.d.ts +0 -141
- package/dist/live-children-read.d.ts +0 -52
- package/dist/live-children.d.ts +0 -73
- package/dist/live-detail.d.ts +0 -27
- package/dist/live-input.d.ts +0 -68
- package/dist/live-main-read.d.ts +0 -19
- package/dist/live-notes.d.ts +0 -20
- package/dist/live-open.d.ts +0 -28
- package/dist/live-records.d.ts +0 -149
- package/dist/live-reply.d.ts +0 -83
- package/dist/live-terminal.d.ts +0 -273
- package/dist/live.d.ts +0 -152
- package/dist/local-owner-acts.d.ts +0 -83
- package/dist/local-owner.d.ts +0 -135
- package/dist/log.d.ts +0 -7
- package/dist/login-secrets.d.ts +0 -60
- package/dist/machine-check.d.ts +0 -16
- package/dist/machine-identity.d.ts +0 -75
- package/dist/mailbox.d.ts +0 -57
- package/dist/maintenance.d.ts +0 -13
- package/dist/mcp-connect.d.ts +0 -181
- package/dist/mcp-core.d.ts +0 -110
- package/dist/mcp-http.d.ts +0 -32
- package/dist/mcp-oauth.d.ts +0 -92
- package/dist/mcp-person.d.ts +0 -22
- package/dist/mcp.d.ts +0 -20
- package/dist/memory-cli.d.ts +0 -768
- package/dist/memory-pass.d.ts +0 -151
- package/dist/memory-tidy.d.ts +0 -181
- package/dist/memory-use.d.ts +0 -35
- package/dist/merge-checklist.d.ts +0 -55
- package/dist/metrics.d.ts +0 -6
- package/dist/mobile-viewport.d.ts +0 -7
- package/dist/model-catalog.d.ts +0 -123
- package/dist/model-choices.d.ts +0 -235
- package/dist/model-names.d.ts +0 -6
- package/dist/models-cli.d.ts +0 -307
- package/dist/models-ui.d.ts +0 -161
- package/dist/modes.d.ts +0 -99
- package/dist/monitoring-settings.d.ts +0 -44
- package/dist/monitoring-ui.d.ts +0 -23
- package/dist/monitoring.d.ts +0 -34
- package/dist/names.d.ts +0 -67
- package/dist/needs-you.d.ts +0 -164
- package/dist/never-index.d.ts +0 -3
- package/dist/nightly-check.d.ts +0 -107
- package/dist/nightly-github.d.ts +0 -318
- package/dist/notification-delivery.d.ts +0 -19
- package/dist/notification-rows.d.ts +0 -30
- package/dist/oauth-run-token.d.ts +0 -51
- package/dist/observations.d.ts +0 -36
- package/dist/oidc.d.ts +0 -71
- package/dist/onboard.d.ts +0 -108
- package/dist/one-step-chat-schema.d.ts +0 -22
- package/dist/openrouter-models.d.ts +0 -34
- package/dist/operate-remote-arguments.d.ts +0 -36
- package/dist/operate-remote.d.ts +0 -98
- package/dist/operate.d.ts +0 -401
- package/dist/orphan-sweep.d.ts +0 -65
- package/dist/page-work-contract.d.ts +0 -21
- package/dist/password-bearer.d.ts +0 -25
- package/dist/passwordless.d.ts +0 -23
- package/dist/peek-cli.d.ts +0 -112
- package/dist/peek.d.ts +0 -110
- package/dist/people-audit-ui.d.ts +0 -16
- package/dist/person-proof.d.ts +0 -2
- package/dist/phase-routing.d.ts +0 -401
- package/dist/plain-schema.d.ts +0 -23
- package/dist/plain-words.d.ts +0 -20
- package/dist/plan-auto.d.ts +0 -25
- package/dist/plan-login.d.ts +0 -14
- package/dist/plan.d.ts +0 -188
- package/dist/plane-review.d.ts +0 -54
- package/dist/planner-source.d.ts +0 -225
- package/dist/planner.d.ts +0 -76
- package/dist/policy-ui.d.ts +0 -22
- package/dist/policy.d.ts +0 -92
- package/dist/prepared-evidence.d.ts +0 -17
- package/dist/principal.d.ts +0 -42
- package/dist/probe.d.ts +0 -46
- package/dist/process-custody.d.ts +0 -17
- package/dist/process-liveness.d.ts +0 -13
- package/dist/process-tree.d.ts +0 -39
- package/dist/project-access.d.ts +0 -17
- package/dist/project-activity.d.ts +0 -20
- package/dist/project-admission.d.ts +0 -105
- package/dist/project-cli.d.ts +0 -19
- package/dist/project-concurrency.d.ts +0 -62
- package/dist/project-delete-ui.d.ts +0 -96
- package/dist/project-delete.d.ts +0 -59
- package/dist/project-demo.d.ts +0 -12
- package/dist/project-file.d.ts +0 -3
- package/dist/project-identity.d.ts +0 -52
- package/dist/project-knowledge.d.ts +0 -124
- package/dist/project-learning.d.ts +0 -120
- package/dist/project-memory.d.ts +0 -70
- package/dist/project-outcomes.d.ts +0 -119
- package/dist/project-sandbox.d.ts +0 -59
- package/dist/project-skills.d.ts +0 -139
- package/dist/project-tools.d.ts +0 -318
- package/dist/project.d.ts +0 -65
- package/dist/prompt.d.ts +0 -33
- package/dist/proof.d.ts +0 -457
- package/dist/proposal.d.ts +0 -70
- package/dist/protected-storage-look.d.ts +0 -1
- package/dist/protected-storage.d.ts +0 -98
- package/dist/provider-auth.d.ts +0 -143
- package/dist/provider-capture.d.ts +0 -34
- package/dist/provider-connection.d.ts +0 -23
- package/dist/provider-home.d.ts +0 -22
- package/dist/provider-limits.d.ts +0 -37
- package/dist/provider.d.ts +0 -369
- package/dist/public-access.d.ts +0 -61
- package/dist/public-check.d.ts +0 -37
- package/dist/publish.d.ts +0 -146
- package/dist/pull-request-flow.d.ts +0 -189
- package/dist/pull-request-schema.d.ts +0 -5
- package/dist/pull-request-ui.d.ts +0 -25
- package/dist/pulls.d.ts +0 -121
- package/dist/push.d.ts +0 -120
- package/dist/quality.d.ts +0 -8
- package/dist/quick-start.d.ts +0 -26
- package/dist/read-executor-worker.d.ts +0 -1
- package/dist/read-executor.d.ts +0 -66
- package/dist/read-only-request.d.ts +0 -4
- package/dist/recipe-ui.d.ts +0 -21
- package/dist/recipes.d.ts +0 -56
- package/dist/release-adapters.d.ts +0 -205
- package/dist/release-approval.d.ts +0 -180
- package/dist/release-authority.d.ts +0 -173
- package/dist/release-auto.d.ts +0 -184
- package/dist/release-card.d.ts +0 -170
- package/dist/release-carry.d.ts +0 -261
- package/dist/release-ci-hold.d.ts +0 -41
- package/dist/release-cli.d.ts +0 -34
- package/dist/release-coverage.d.ts +0 -16
- package/dist/release-gate.d.ts +0 -84
- package/dist/release-git.d.ts +0 -43
- package/dist/release-links.d.ts +0 -29
- package/dist/release-net.d.ts +0 -90
- package/dist/release-next.d.ts +0 -48
- package/dist/release-recheck.d.ts +0 -146
- package/dist/release-refusal.d.ts +0 -32
- package/dist/release-view.d.ts +0 -37
- package/dist/release.d.ts +0 -806
- package/dist/releases.d.ts +0 -94
- package/dist/remote-audit.d.ts +0 -79
- package/dist/remote-command.d.ts +0 -45
- package/dist/remote-destination.d.ts +0 -36
- package/dist/remote-exec.d.ts +0 -38
- package/dist/remote-main.d.ts +0 -111
- package/dist/remote-run.d.ts +0 -20
- package/dist/remote.d.ts +0 -67
- package/dist/render.d.ts +0 -64
- package/dist/reply-shape.d.ts +0 -106
- package/dist/reply-voice.d.ts +0 -23
- package/dist/report-summary.d.ts +0 -22
- package/dist/reported-usage.d.ts +0 -69
- package/dist/repos.d.ts +0 -67
- package/dist/repository-context-ui.d.ts +0 -3
- package/dist/repository-context.d.ts +0 -66
- package/dist/request-budget-ui.d.ts +0 -14
- package/dist/request-budget.d.ts +0 -127
- package/dist/restart-certification.d.ts +0 -133
- package/dist/result-actions.d.ts +0 -36
- package/dist/result-acts.d.ts +0 -112
- package/dist/result-completion.d.ts +0 -39
- package/dist/result-evidence-readers.d.ts +0 -42
- package/dist/result-follow-ups.d.ts +0 -118
- package/dist/result-review.d.ts +0 -220
- package/dist/result-shots.d.ts +0 -59
- package/dist/retention-ui.d.ts +0 -21
- package/dist/retention.d.ts +0 -77
- package/dist/review-context.d.ts +0 -245
- package/dist/review-evidence.d.ts +0 -33
- package/dist/review-switch.d.ts +0 -36
- package/dist/reviewer.d.ts +0 -99
- package/dist/route-change-check.d.ts +0 -4
- package/dist/route-change.d.ts +0 -22
- package/dist/route-hooks.d.ts +0 -54
- package/dist/route-results.d.ts +0 -75
- package/dist/route-rules.d.ts +0 -324
- package/dist/route-savings.d.ts +0 -136
- package/dist/route-store.d.ts +0 -300
- package/dist/run-closeout.d.ts +0 -89
- package/dist/run-efficiency.d.ts +0 -74
- package/dist/run-ending.d.ts +0 -21
- package/dist/runner-process.d.ts +0 -76
- package/dist/runner.d.ts +0 -324
- package/dist/sample-project.d.ts +0 -31
- package/dist/sandbox-launch.d.ts +0 -1
- package/dist/sandbox-runtime.d.ts +0 -128
- package/dist/scan.d.ts +0 -32
- package/dist/scope.d.ts +0 -1098
- package/dist/scout-browser-lock.d.ts +0 -69
- package/dist/scout-browser.d.ts +0 -107
- package/dist/scout-net.d.ts +0 -25
- package/dist/scout-report.d.ts +0 -23
- package/dist/scout.d.ts +0 -142
- package/dist/secret-mint.d.ts +0 -1
- package/dist/serve.d.ts +0 -11
- package/dist/server/agents-computers.d.ts +0 -9
- package/dist/server/agents-live-filed.d.ts +0 -17
- package/dist/server/agents-live-lead.d.ts +0 -47
- package/dist/server/agents-live-room.d.ts +0 -23
- package/dist/server/chat.d.ts +0 -39
- package/dist/server/chrome.d.ts +0 -328
- package/dist/server/edge-refusal.d.ts +0 -7
- package/dist/server/flows.d.ts +0 -8
- package/dist/server/guards.d.ts +0 -81
- package/dist/server/handler-context.d.ts +0 -22
- package/dist/server/handler-registry.d.ts +0 -23
- package/dist/server/home-asks.d.ts +0 -45
- package/dist/server/home.d.ts +0 -65
- package/dist/server/http.d.ts +0 -337
- package/dist/server/in-place.d.ts +0 -15
- package/dist/server/kit-standalone.d.ts +0 -22
- package/dist/server/kit.d.ts +0 -452
- package/dist/server/last-checks.d.ts +0 -17
- package/dist/server/live.d.ts +0 -74
- package/dist/server/merge-ready-view.d.ts +0 -10
- package/dist/server/mutation-key.d.ts +0 -70
- package/dist/server/pages-assets.d.ts +0 -11
- package/dist/server/pages.d.ts +0 -8
- package/dist/server/people-tokens.d.ts +0 -18
- package/dist/server/remote-hooks.d.ts +0 -29
- package/dist/server/remote.d.ts +0 -60
- package/dist/server/render-chat.d.ts +0 -439
- package/dist/server/render-code-map.d.ts +0 -30
- package/dist/server/render-flaky.d.ts +0 -20
- package/dist/server/render-follow-through.d.ts +0 -11
- package/dist/server/render-history.d.ts +0 -51
- package/dist/server/render-new-task.d.ts +0 -54
- package/dist/server/render-pages.d.ts +0 -236
- package/dist/server/render-people.d.ts +0 -102
- package/dist/server/render-projects.d.ts +0 -104
- package/dist/server/render-release.d.ts +0 -19
- package/dist/server/render-results.d.ts +0 -758
- package/dist/server/render-settings.d.ts +0 -93
- package/dist/server/render-tasks.d.ts +0 -783
- package/dist/server/request-context.d.ts +0 -78
- package/dist/server/retired-routes.d.ts +0 -17
- package/dist/server/route-policy.d.ts +0 -18
- package/dist/server/route-table.d.ts +0 -114
- package/dist/server/runtime.d.ts +0 -343
- package/dist/server/session.d.ts +0 -192
- package/dist/server/settings.d.ts +0 -76
- package/dist/server/signup-gate.d.ts +0 -9
- package/dist/server/sweeps.d.ts +0 -4
- package/dist/server/task-views.d.ts +0 -98
- package/dist/server/tasks.d.ts +0 -108
- package/dist/server/terminals.d.ts +0 -31
- package/dist/server/welcome.d.ts +0 -28
- package/dist/server-telemetry.d.ts +0 -87
- package/dist/settings-groups-ui.d.ts +0 -286
- package/dist/settings-kit-script.d.ts +0 -21
- package/dist/settings-kit.d.ts +0 -173
- package/dist/settings-proofs.d.ts +0 -64
- package/dist/setup-guide.d.ts +0 -39
- package/dist/shared-deps.d.ts +0 -115
- package/dist/sign-in-guard.d.ts +0 -70
- package/dist/skills-ui.d.ts +0 -12
- package/dist/skills.d.ts +0 -99
- package/dist/slack-api.d.ts +0 -59
- package/dist/slack-chat.d.ts +0 -37
- package/dist/slack-settings.d.ts +0 -4
- package/dist/slack-socket.d.ts +0 -12
- package/dist/slack.d.ts +0 -6
- package/dist/sleep.d.ts +0 -2
- package/dist/source-key.d.ts +0 -2
- package/dist/spend-report.d.ts +0 -87
- package/dist/spend-ui.d.ts +0 -80
- package/dist/spend.d.ts +0 -142
- package/dist/sqlite-runtime.d.ts +0 -3
- package/dist/sqlite-telemetry.d.ts +0 -9
- package/dist/sso-settings.d.ts +0 -33
- package/dist/sso-ui.d.ts +0 -26
- package/dist/staged-runtimes.d.ts +0 -54
- package/dist/steer-capabilities.d.ts +0 -32
- package/dist/steer-controls.d.ts +0 -14
- package/dist/steer-live.d.ts +0 -19
- package/dist/steer-mailbox.d.ts +0 -46
- package/dist/steer-status.d.ts +0 -25
- package/dist/stop-proof.d.ts +0 -67
- package/dist/storage-sweep-child.d.ts +0 -1
- package/dist/storage-sweep-process.d.ts +0 -55
- package/dist/storage-sweep-schedule.d.ts +0 -30
- package/dist/storage-sweep.d.ts +0 -77
- package/dist/storage-ui.d.ts +0 -23
- package/dist/storage.d.ts +0 -68
- package/dist/store-baseline.d.ts +0 -19
- package/dist/store.d.ts +0 -8613
- package/dist/stream-scope.d.ts +0 -18
- package/dist/structured-output.d.ts +0 -57
- package/dist/style-asset.d.ts +0 -7
- package/dist/subagent-admin.d.ts +0 -53
- package/dist/subagent-desk.d.ts +0 -59
- package/dist/subagent-memory.d.ts +0 -65
- package/dist/subagent-question.d.ts +0 -59
- package/dist/subagent-tools.d.ts +0 -125
- package/dist/subagent-week.d.ts +0 -68
- package/dist/subagent-work.d.ts +0 -76
- package/dist/subagents-ui.d.ts +0 -22
- package/dist/subagents.d.ts +0 -146
- package/dist/subscription-chat.d.ts +0 -54
- package/dist/summary.d.ts +0 -33
- package/dist/surface.d.ts +0 -49
- package/dist/sweep-gate.d.ts +0 -10
- package/dist/sweep-quarantine.d.ts +0 -29
- package/dist/sync.d.ts +0 -94
- package/dist/tailnet.d.ts +0 -11
- package/dist/tamper-scan.d.ts +0 -4
- package/dist/task-activity.d.ts +0 -27
- package/dist/task-aliases.d.ts +0 -5
- package/dist/task-archive.d.ts +0 -13
- package/dist/task-base.d.ts +0 -39
- package/dist/task-composer.d.ts +0 -14
- package/dist/task-control.d.ts +0 -159
- package/dist/task-live.d.ts +0 -8
- package/dist/task-moves.d.ts +0 -90
- package/dist/task-outcome-cli.d.ts +0 -48
- package/dist/task-review-brief.d.ts +0 -69
- package/dist/task-sizing.d.ts +0 -58
- package/dist/task-source.d.ts +0 -77
- package/dist/task-status.d.ts +0 -324
- package/dist/task-text.d.ts +0 -31
- package/dist/team-chat-authorization.d.ts +0 -11
- package/dist/team-contract.d.ts +0 -103
- package/dist/team-http.d.ts +0 -25
- package/dist/team-leads.d.ts +0 -85
- package/dist/team-runtime.d.ts +0 -25
- package/dist/team-ui.d.ts +0 -4
- package/dist/team-updates.d.ts +0 -8
- package/dist/teams-api.d.ts +0 -33
- package/dist/teams-chat.d.ts +0 -36
- package/dist/teams-settings.d.ts +0 -14
- package/dist/teams.d.ts +0 -24
- package/dist/teardown-git.d.ts +0 -164
- package/dist/telegram-flow.d.ts +0 -112
- package/dist/telegram-lead.d.ts +0 -151
- package/dist/telegram-live.d.ts +0 -116
- package/dist/telegram-progress.d.ts +0 -20
- package/dist/telegram-settings.d.ts +0 -9
- package/dist/telegram-status.d.ts +0 -83
- package/dist/telegram-team.d.ts +0 -68
- package/dist/telegram.d.ts +0 -271
- package/dist/templates.d.ts +0 -69
- package/dist/terminal-catalog.d.ts +0 -11
- package/dist/terminal-text.d.ts +0 -11
- package/dist/test-infra.d.ts +0 -34
- package/dist/test-temp.d.ts +0 -40
- package/dist/text-limits.d.ts +0 -297
- package/dist/tidy.d.ts +0 -130
- package/dist/tier-report.d.ts +0 -44
- package/dist/token-notices.d.ts +0 -11
- package/dist/tokens-cli.d.ts +0 -21
- package/dist/tool-broker.d.ts +0 -52
- package/dist/tool-launcher.d.ts +0 -1
- package/dist/tool-secret-store.d.ts +0 -167
- package/dist/toolroll-update-cli.d.ts +0 -15
- package/dist/toolroll-update-ui.d.ts +0 -47
- package/dist/toolroll-update.d.ts +0 -265
- package/dist/tools-ui.d.ts +0 -51
- package/dist/transitions-recipes.d.ts +0 -1
- package/dist/tree-proof.d.ts +0 -34
- package/dist/tui-contract.d.ts +0 -202
- package/dist/tui-source.d.ts +0 -14
- package/dist/typed-start.d.ts +0 -51
- package/dist/unfenced-test-support.d.ts +0 -2
- package/dist/up-processes.d.ts +0 -162
- package/dist/up-role-child.d.ts +0 -1
- package/dist/update-notice.d.ts +0 -5
- package/dist/vanished-retry.d.ts +0 -30
- package/dist/verification-evidence.d.ts +0 -68
- package/dist/version.d.ts +0 -2
- package/dist/wake-hub.d.ts +0 -72
- package/dist/webhook-limits.d.ts +0 -23
- package/dist/webhook-readers.d.ts +0 -56
- package/dist/webhook-signing.d.ts +0 -27
- package/dist/webhooks.d.ts +0 -84
- package/dist/welcome-facts.d.ts +0 -18
- package/dist/when-html.d.ts +0 -40
- package/dist/work-index.d.ts +0 -175
- package/dist/work-summary.d.ts +0 -61
- package/dist/workspace-motion.d.ts +0 -4
- package/dist/workspace-revision.d.ts +0 -48
- package/dist/workspace-ui.d.ts +0 -385
- package/dist/worktree-notices.d.ts +0 -13
- package/dist/worktree.d.ts +0 -365
- package/dist/writes-mode.d.ts +0 -9
- package/dist/youiyoux-intake.d.ts +0 -234
package/dist/chat-actions.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/** Shared, exact-state actions. Models may prepare; only the existing human
|
|
2
|
-
* confirmation door executes. Protected actions use a one-use review receipt. */
|
|
3
1
|
import { endHoldout, setCodeMapSwitch } from "./code-map-acts.js";
|
|
4
2
|
import { codeMapOn } from "./code-map-store.js";
|
|
5
3
|
import { dismissSuggestion, ruleById, stopTrial, suggestionsFor, suggestionWords, taskEvidenceWords, trialWords } from "./route-rules.js";
|
|
@@ -60,7 +58,6 @@ import { callWords, checkRule, defaultRule, grantListed, revokeTool, ruleLoosens
|
|
|
60
58
|
import { aboutYouOf, checkAboutYouLine, saveAboutYou, withAboutYouLine } from "./lead-about.js";
|
|
61
59
|
import { CHAT_ACTION_FIELDS, readChatActionRequest, readSharedAction, SHARED_ACTION_VERSION } from "./contracts/chat-actions.js";
|
|
62
60
|
export { CHAT_ACTION_FIELDS };
|
|
63
|
-
/** A tool from the lead's card: a common tool by its id, or the operator's own program or address. */
|
|
64
61
|
function toolSpecFromRequest(input) {
|
|
65
62
|
if (input["catalog"] !== undefined) {
|
|
66
63
|
const chosen = catalogTool(String(input["catalog"]));
|
|
@@ -102,17 +99,11 @@ export const CHAT_ACTIONS = {
|
|
|
102
99
|
protected: false,
|
|
103
100
|
password: false,
|
|
104
101
|
},
|
|
105
|
-
// A tool runs on this computer for every build the operator approves from now on: the password screen, like an approval.
|
|
106
102
|
tool_add: { label: "Add tool", protected: true, password: true },
|
|
107
103
|
tool_remove: { label: "Remove tool", protected: false, password: false },
|
|
108
|
-
// Flows: a drawing and cards on it. Any work a card files is an ordinary task under the usual approvals.
|
|
109
104
|
flow_create: { label: "Create flow", protected: false, password: false },
|
|
110
|
-
// A starter flow: its zones and its trigger, switched on with one yes (flow-starters.ts).
|
|
111
105
|
flow_starter: { label: "Switch on", protected: false, password: false },
|
|
112
|
-
// Lead fan-out (docs/plans/lead-fan-out.md): files N tasks under one brief and approves each one's scope — the
|
|
113
|
-
// person's ceremony (protected, with the password), N ordinary approvals of exactly the scopes shown.
|
|
114
106
|
sweep_file: { label: "Start sweep", protected: true, password: false },
|
|
115
|
-
// Stops every item of a sweep not yet ready; finished results stay. An ordinary act, like cancelling a task.
|
|
116
107
|
sweep_cancel_rest: { label: "Cancel the rest", protected: false, password: false },
|
|
117
108
|
flow_edit: { label: "Save flow", protected: false, password: false },
|
|
118
109
|
flow_card_add: { label: "Add card", protected: false, password: false },
|
|
@@ -129,8 +120,6 @@ export const CHAT_ACTIONS = {
|
|
|
129
120
|
flow_trigger_pause: { label: "Pause trigger", protected: false, password: false },
|
|
130
121
|
flow_trigger_resume: { label: "Turn trigger on", protected: false, password: false },
|
|
131
122
|
flow_trigger_remove: { label: "Remove trigger", protected: false, password: false },
|
|
132
|
-
// Browser use widens a flow's sandbox (flow-browser.ts): the lead may only propose it; a person allows it with their own
|
|
133
|
-
// yes on a card that shows every term, in a chat they are signed in to or linked from. Turning it off lowers authority.
|
|
134
123
|
flow_browser: { label: "Allow browser", protected: true, password: false },
|
|
135
124
|
flow_browser_off: { label: "Turn off browser", protected: false, password: false },
|
|
136
125
|
subagent_create: { label: "Add subagent", protected: false, password: false },
|
|
@@ -146,15 +135,10 @@ export const CHAT_ACTIONS = {
|
|
|
146
135
|
kit_setup: { label: "Set up kit", protected: false, password: false },
|
|
147
136
|
decision_record: { label: "Record decision", protected: false, password: false },
|
|
148
137
|
decision_retire: { label: "Retire decision", protected: false, password: false },
|
|
149
|
-
// Not now only takes a suggestion off the list for 30 days: nothing about which models run changes.
|
|
150
138
|
suggestion_not_now: { label: "Not now", protected: false, password: false },
|
|
151
|
-
// Stopping a trial only lowers: new tasks build on the configured model; approved ones keep theirs.
|
|
152
139
|
trial_stop: { label: "Stop trial", protected: false, password: false },
|
|
153
|
-
// The code map's switch and holdout (docs/plans/code-map.md §5): a person's yes on the card, re-proved in the write.
|
|
154
140
|
code_map_switch: { label: "Change code map", protected: false, password: false },
|
|
155
141
|
code_map_holdout_end: { label: "End holdout", protected: false, password: false },
|
|
156
|
-
// Chat and console parity (docs/plans/toolroll-cards.md): plain acts that lower authority or change no one's reach,
|
|
157
|
-
// each the console's own write. Ending a mode and turning a flow off its own only ever lower authority.
|
|
158
142
|
mode_revoke: { label: "End automatic approvals", protected: false, password: false },
|
|
159
143
|
flow_unattended_off: { label: "Stop running on its own", protected: false, password: false },
|
|
160
144
|
flow_archive: { label: "Archive flow", protected: false, password: false },
|
|
@@ -165,37 +149,25 @@ export const CHAT_ACTIONS = {
|
|
|
165
149
|
task_restore: { label: "Restore task", protected: false, password: false },
|
|
166
150
|
incident_resolve: { label: "Resolve incident", protected: false, password: false },
|
|
167
151
|
memory_decide: { label: "Decide memory proposal", protected: false, password: false },
|
|
168
|
-
// Follow-through (findings.ts): not an approval. A person's yes to words shown on the card sends them to the agent.
|
|
169
152
|
finding_send: { label: "Send finding", protected: false, password: false },
|
|
170
153
|
finding_resend: { label: "Send finding back", protected: false, password: false },
|
|
171
|
-
// The rest of the approvals: a person's own yes on a card that shows every term.
|
|
172
154
|
task_reopen: { label: "Reopen task", protected: true, password: false },
|
|
173
155
|
revision_accept: { label: "Accept plan revision", protected: true, password: false },
|
|
174
156
|
revision_reject: { label: "Reject plan revision", protected: true, password: false },
|
|
175
157
|
flow_unattended: { label: "Let flow run on its own", protected: true, password: false },
|
|
176
|
-
// What the owner's own lead knows about them: theirs alone, in no project (lead-about.ts).
|
|
177
158
|
lead_about_you: { label: "Remember", protected: false, password: false },
|
|
178
159
|
scope_approve: { label: "Approve work", protected: true, password: false },
|
|
179
160
|
result_accept: { label: "Accept", protected: true, password: false },
|
|
180
161
|
task_cancel: { label: "Cancel task", protected: true, password: false },
|
|
181
162
|
task_resume: { label: "Resume task", protected: true, password: false },
|
|
182
|
-
// One-step start from chat (docs/plans/one-step-chat.md C2): files and approves one small task the lead drafted, under
|
|
183
|
-
// exactly the fast start rules. Only the lead's turn loop drafts one (propose_start); a person's own yes starts it.
|
|
184
163
|
task_start: { label: "Start work", protected: true, password: false },
|
|
185
164
|
};
|
|
186
|
-
// Every action has a schema (contracts/chat-actions.ts) and every schema an action: a mismatch fails to compile.
|
|
187
165
|
const SAME_ACTIONS = true;
|
|
188
166
|
void SAME_ACTIONS;
|
|
189
|
-
/** Approvals (owner's decision, docs/plans/toolroll-cards.md): a person's own yes from their chat stands without a password.
|
|
190
|
-
* Only a person's tap in a linked chat, or their click in a signed-in browser, ever runs one. */
|
|
191
167
|
export const APPROVAL_ACTIONS = new Set(["scope_approve", "task_resume", "sweep_file", "flow_browser", "task_reopen", "revision_accept", "revision_reject", "flow_unattended", "task_start"]);
|
|
192
|
-
/** Protected actions a linked chat may confirm behind its own explicit yes/cancel challenge instead of the review screen.
|
|
193
|
-
* Password actions and long or redacted terms never qualify: the card must show the exact terms. */
|
|
194
168
|
export const APPROVAL_TERM_CHARS = 3000;
|
|
195
169
|
export const CHALLENGE_ACTIONS = new Set(["result_accept", ...APPROVAL_ACTIONS]);
|
|
196
|
-
/** Actions about the person themselves, in no project: their card carries no project (repo ""). */
|
|
197
170
|
export const OWNER_ACTIONS = new Set(["lead_about_you", "provider_resume", "worker_note", "lead_identity"]);
|
|
198
|
-
/** Actions the console refuses a project-limited account (route table: limited "deny"): the same here. */
|
|
199
171
|
const INSTANCE_ACTIONS = new Set(["mode_revoke", "flow_unattended_off", "flow_unattended", "provider_resume", "worker_note", "lead_identity", "incident_resolve", "memory_decide"]);
|
|
200
172
|
export function isChatAction(value) {
|
|
201
173
|
return typeof value === "string" && Object.hasOwn(CHAT_ACTIONS, value);
|
|
@@ -205,7 +177,6 @@ const nonceHash = (value) => createHash("sha256").update(value).digest("hex");
|
|
|
205
177
|
function requireActor(store, who, repo, operation) {
|
|
206
178
|
if (!store.schemaCurrent())
|
|
207
179
|
throw Error("The running build changed. Reload before proposing an action.");
|
|
208
|
-
// An action about the person themselves names no project; every other one names one they can reach.
|
|
209
180
|
const owned = repo === "" && operation !== undefined && OWNER_ACTIONS.has(operation);
|
|
210
181
|
if (!isVerifiedApprover(who) ||
|
|
211
182
|
!reproveApprover(store, who).ok ||
|
|
@@ -216,7 +187,6 @@ function text(input, key, cap, optional = false) {
|
|
|
216
187
|
const value = input[key];
|
|
217
188
|
if (optional && value === undefined)
|
|
218
189
|
return "";
|
|
219
|
-
// Over its limit is refused with the limit, never cut.
|
|
220
190
|
if (typeof value === "string" && value.length > cap)
|
|
221
191
|
throw Error(`The ${key} is ${value.length.toLocaleString("en-US")} characters; the limit is ${cap.toLocaleString("en-US")}. Shorten it and propose again.`);
|
|
222
192
|
if (typeof value !== "string" ||
|
|
@@ -259,7 +229,6 @@ function resultOf(store, task, run, repo) {
|
|
|
259
229
|
throw Error("This result changed. Review the current result.");
|
|
260
230
|
return current;
|
|
261
231
|
}
|
|
262
|
-
/** The flow (and card) a flow action names; its project decides who may act. */
|
|
263
232
|
function flowTargetOf(store, input) {
|
|
264
233
|
const card = input["card"] === undefined ? null : store.getFlowCard(integer(input, "card"));
|
|
265
234
|
if (input["card"] !== undefined && (card === null || card.state !== "active"))
|
|
@@ -275,12 +244,10 @@ function flowTargetOf(store, input) {
|
|
|
275
244
|
throw Error("This flow's drawing can't be read. Save it again on its canvas.");
|
|
276
245
|
return { flow, definition, card, trigger };
|
|
277
246
|
}
|
|
278
|
-
/** Where this installation keeps its files: beside the database. */
|
|
279
247
|
function configDirOf(store) {
|
|
280
248
|
const file = store.databaseFile();
|
|
281
249
|
return file === null ? null : dirname(file);
|
|
282
250
|
}
|
|
283
|
-
/** A zone named by id or by its title. */
|
|
284
251
|
function flowZoneOf(definition, input, fallback) {
|
|
285
252
|
const named = input["zone"] === undefined ? fallback : text(input, "zone", 60).trim();
|
|
286
253
|
const stage = named === null ? undefined : definition.stages.find(one => one.id === named || one.title.toLowerCase() === named.toLowerCase());
|
|
@@ -288,7 +255,6 @@ function flowZoneOf(definition, input, fallback) {
|
|
|
288
255
|
throw Error(`This flow has no zone called ${named}.`);
|
|
289
256
|
return stage;
|
|
290
257
|
}
|
|
291
|
-
/** A flow drawing from chat: whole, keyless, plain, and every named decider can decide on the project. */
|
|
292
258
|
function flowDrawingOf(store, input, repo) {
|
|
293
259
|
const definition = validateFlowDefinition(input["definition"]);
|
|
294
260
|
const words = JSON.stringify(definition);
|
|
@@ -300,16 +266,9 @@ function flowDrawingOf(store, input, repo) {
|
|
|
300
266
|
return definition;
|
|
301
267
|
}
|
|
302
268
|
const quoted = (value) => `“${value}”`;
|
|
303
|
-
|
|
304
|
-
* from a model. Rebuilding the same request before execution catches changes. */
|
|
305
|
-
export function prepareSharedAction(store, who, operation, input, root, now = new Date(),
|
|
306
|
-
/** The lead turn the card is (or is being) drafted in: a Start card's preview must have been prepared in it. Read
|
|
307
|
-
* from the proposal row (or the running turn), never from the request. */
|
|
308
|
-
turn) {
|
|
269
|
+
export function prepareSharedAction(store, who, operation, input, root, now = new Date(), turn) {
|
|
309
270
|
if (!isChatAction(operation))
|
|
310
271
|
throw Error("Choose an available action.");
|
|
311
|
-
// The action's own schema: its fields and their kinds, refused by path. The request itself is used as given, so a
|
|
312
|
-
// confirmation rebuilds the same stamp from the same bytes.
|
|
313
272
|
const read = readChatActionRequest(operation, input);
|
|
314
273
|
if (!read.ok)
|
|
315
274
|
throw Error(`This action can't be read — ${read.issues.map(issue => issue.line).join("; ")}.`);
|
|
@@ -322,7 +281,6 @@ turn) {
|
|
|
322
281
|
return { version: SHARED_ACTION_VERSION, operation, request, repo: "", title, terms, stamp, state };
|
|
323
282
|
}
|
|
324
283
|
if (operation === "lead_about_you") {
|
|
325
|
-
// The owner's own note: the card shows the line, and the line it replaces beside it.
|
|
326
284
|
const checked = checkAboutYouLine(input["line"]);
|
|
327
285
|
if (!checked.ok)
|
|
328
286
|
throw Error(checked.message);
|
|
@@ -336,8 +294,6 @@ turn) {
|
|
|
336
294
|
const terms = replaces === 0
|
|
337
295
|
? [checked.line, "Your lead keeps this about you in every project. Change it in Settings → Lead."]
|
|
338
296
|
: [`Was: ${lines[replaces - 1]}`, `Now: ${checked.line}`, "Replaces that line in what your lead knows about you. Change it in Settings → Lead."];
|
|
339
|
-
// An added line goes on the end, so it holds whatever else changed; a replacing card holds only while the line
|
|
340
|
-
// it replaces is still that line.
|
|
341
297
|
const state = replaces === 0 ? {} : { was: lines[replaces - 1] };
|
|
342
298
|
const title = replaces === 0 ? "Remember about you" : "Update what your lead knows about you";
|
|
343
299
|
const stamp = hash({ operation, request, repo: "", state, terms, actor: who.name, generation: who.generation, ceiling: who.ceilingDigest });
|
|
@@ -347,7 +303,6 @@ turn) {
|
|
|
347
303
|
? null
|
|
348
304
|
: text(input, "task", 64);
|
|
349
305
|
const flowTarget = operation.startsWith("flow_") && operation !== "flow_create" && operation !== "flow_script_save" && operation !== "flow_starter" ? flowTargetOf(store, input) : null;
|
|
350
|
-
// v92: a subagent names its project; a question names it through its card's flow.
|
|
351
306
|
const subagentTarget = operation.startsWith("subagent_") && operation !== "subagent_create" && operation !== "subagent_answer" ? store.getSubagent(integer(input, "subagent")) : null;
|
|
352
307
|
if (subagentTarget !== null && subagentTarget.state === "removed")
|
|
353
308
|
throw Error("That subagent is off the team.");
|
|
@@ -420,7 +375,6 @@ turn) {
|
|
|
420
375
|
}
|
|
421
376
|
}
|
|
422
377
|
else if (operation.startsWith("tool_")) {
|
|
423
|
-
// The staleness fence: the project's tools as the card saw them.
|
|
424
378
|
const current = projectToolsOf(store, repo);
|
|
425
379
|
state = { tools: current.map((one) => `${one.name}:${one.digest}`) };
|
|
426
380
|
const project = repo.split(/[\\/]/).filter(Boolean).at(-1) ?? repo;
|
|
@@ -428,7 +382,6 @@ turn) {
|
|
|
428
382
|
const spec = toolSpecFromRequest(input);
|
|
429
383
|
if (current.some((one) => one.name === spec.name))
|
|
430
384
|
throw Error(`${project} already has a tool called ${spec.name}.`);
|
|
431
|
-
// The request is rewritten to exactly what was checked, so confirming re-checks the same words.
|
|
432
385
|
for (const key of ["name", "command", "args", "url", "secrets", "about"])
|
|
433
386
|
delete request[key];
|
|
434
387
|
if (input["catalog"] === undefined)
|
|
@@ -448,7 +401,6 @@ turn) {
|
|
|
448
401
|
}
|
|
449
402
|
}
|
|
450
403
|
else if (operation === "kit_setup") {
|
|
451
|
-
// a starter kit — its subagent, its flow and its buttons.
|
|
452
404
|
const project = repo.split(/[\\/]/).filter(Boolean).at(-1) ?? repo;
|
|
453
405
|
const kit = kitOf(String(input["kit"] ?? ""));
|
|
454
406
|
if (kit === null)
|
|
@@ -505,7 +457,6 @@ turn) {
|
|
|
505
457
|
terms.push(wanted === "paused" ? "Its decisions go to people and the zones it handles wait until you resume it." : wanted === "active" ? "It picks up its zones' cards again." : "It leaves the team: zones that name it go to people.");
|
|
506
458
|
}
|
|
507
459
|
else if (operation === "subagent_tools") {
|
|
508
|
-
// v94: which project tools it may use, and its rule for one action.
|
|
509
460
|
const tool = text(input, "tool", 40);
|
|
510
461
|
const change = input["change"];
|
|
511
462
|
const grant = store.subagentGrant(mate.id, tool);
|
|
@@ -521,7 +472,6 @@ turn) {
|
|
|
521
472
|
throw Error(`${name} can already use ${tool}.`);
|
|
522
473
|
if ((found.lastTest?.tools ?? []).length === 0)
|
|
523
474
|
throw Error(`${tool} hasn't said what it can do yet. Test it on the Tools page first.`);
|
|
524
|
-
// Giving a subagent a tool takes the person's password (chat-management.md §0a.3), which never goes in chat.
|
|
525
475
|
throw Error(`Giving ${name} a tool takes your password. Open ${name}'s page in Toolroll, then Tools → Let ${name} use ${tool}.`);
|
|
526
476
|
}
|
|
527
477
|
else if (change === "revoke") {
|
|
@@ -539,7 +489,6 @@ turn) {
|
|
|
539
489
|
const checked = checkRule(grant, action, { use: input["use"], limit, undo: input["undoWith"] ?? grant.rules[action]?.undo ?? "" });
|
|
540
490
|
if (!checked.ok)
|
|
541
491
|
throw Error(checked.said);
|
|
542
|
-
// Letting it do more on its own takes the person's password (chat-management.md §0a.3), never a card.
|
|
543
492
|
const info = grant.actions.find(one => one.name === action);
|
|
544
493
|
if (ruleLoosens(grant.rules[action] ?? defaultRule(info), checked.rule))
|
|
545
494
|
throw Error(`Letting ${name} do more with ${action} on its own takes your password. Change the rule on ${name}'s page in Toolroll.`);
|
|
@@ -551,7 +500,6 @@ turn) {
|
|
|
551
500
|
throw Error("Choose grant, revoke or rule.");
|
|
552
501
|
}
|
|
553
502
|
else if (operation === "subagent_undo") {
|
|
554
|
-
// v97: undo one of its tool calls with the action its manager named for that.
|
|
555
503
|
const call = store.subagentCall(integer(input, "call"));
|
|
556
504
|
const undo = call === null || call.subagent !== mate.id ? null : undoFor(store, call);
|
|
557
505
|
if (call === null || undo === null)
|
|
@@ -561,7 +509,6 @@ turn) {
|
|
|
561
509
|
state = { call: call.id };
|
|
562
510
|
}
|
|
563
511
|
else if (operation === "subagent_routine") {
|
|
564
|
-
// v96: a routine: on a schedule, a card on its desk saying what to do; its answer goes to its manager.
|
|
565
512
|
const name = nameOf(mate);
|
|
566
513
|
if (input["change"] === "add") {
|
|
567
514
|
const schedule = routineSchedule(text(input, "schedule", 80));
|
|
@@ -587,7 +534,6 @@ turn) {
|
|
|
587
534
|
throw Error("Choose add or remove.");
|
|
588
535
|
}
|
|
589
536
|
else if (operation === "subagent_memory") {
|
|
590
|
-
// v95: edit or forget one thing it remembers.
|
|
591
537
|
const memory = store.subagentMemory(integer(input, "memory"));
|
|
592
538
|
if (memory === null || memory.subagent !== mate.id)
|
|
593
539
|
throw Error(`${nameOf(mate)} doesn't remember that any more.`);
|
|
@@ -608,7 +554,6 @@ turn) {
|
|
|
608
554
|
state = { text: memory.text };
|
|
609
555
|
}
|
|
610
556
|
else if (operation === "subagent_ask") {
|
|
611
|
-
// D5: the lead delegates. The card says exactly what goes to the subagent, which works it within its own rules.
|
|
612
557
|
const asked = text(input, "text", 4000).replace(/\r\n?/g, "\n").trim();
|
|
613
558
|
if (asked === "")
|
|
614
559
|
throw Error(`Say what to ask ${nameOf(mate)}.`);
|
|
@@ -646,11 +591,6 @@ turn) {
|
|
|
646
591
|
}
|
|
647
592
|
}
|
|
648
593
|
else if (operation === "task_start") {
|
|
649
|
-
// A Start card (docs/plans/one-step-chat.md C2). The preview is the one the lead's turn loop prepared in this card's
|
|
650
|
-
// own turn, for this person, on chat (never an id the model chose: the request only names it back), unexpired and
|
|
651
|
-
// unused. Every word below is Toolroll's, from a filing dry-run in a savepoint that is always rolled back, with the
|
|
652
|
-
// fast start rules read on it: the tap files again, and the stamp, approve()'s digest and its whole-terms check refuse
|
|
653
|
-
// anything that differs.
|
|
654
594
|
const preview = text(input, "preview", 64);
|
|
655
595
|
const saved = turn === undefined ? null : chatStartPreview(store, preview, who.name, turn, now);
|
|
656
596
|
if (saved === null || saved.repo !== repo)
|
|
@@ -666,17 +606,12 @@ turn) {
|
|
|
666
606
|
state = { preview, taskId: saved.taskId, digest: read.scope.digest };
|
|
667
607
|
const project = repo.split(/[\\/]/).filter(Boolean).at(-1) ?? repo;
|
|
668
608
|
title = `Start work in ${project}: ${saved.title}`;
|
|
669
|
-
terms.push(`Starts now as a small change. If it grows past ${FAST_MAX_FILES} files or ${FAST_MAX_LINES} changed lines, it waits for you to approve it again.`,
|
|
670
|
-
// The goal and its one success test are the lead's words, shown exactly and labelled as the lead's.
|
|
671
|
-
`Written by the lead from your request: ${quoted(saved.title)}`, scopeTermsText(read.scope), ...fastTermsLines(store, read.scope, repo).map(line => `${line.label}: ${line.words}`), `Agent permissions and limits\n${runtimeTerms(authority.profile)}\n${authority.authMode === "api-key" ? "Uses your API key; spend is charged to that account." : authority.authMode === "subscription" ? "Uses your subscription login." : ""}`);
|
|
609
|
+
terms.push(`Starts now as a small change. If it grows past ${FAST_MAX_FILES} files or ${FAST_MAX_LINES} changed lines, it waits for you to approve it again.`, `Written by the lead from your request: ${quoted(saved.title)}`, scopeTermsText(read.scope), ...fastTermsLines(store, read.scope, repo).map(line => `${line.label}: ${line.words}`), `Agent permissions and limits\n${runtimeTerms(authority.profile)}\n${authority.authMode === "api-key" ? "Uses your API key; spend is charged to that account." : authority.authMode === "subscription" ? "Uses your subscription login." : ""}`);
|
|
672
610
|
}
|
|
673
611
|
else if (operation === "sweep_cancel_rest") {
|
|
674
|
-
// Exactly the items open now: if any settles or starts in between, the card is stale and a fresh one is needed.
|
|
675
612
|
const table = sweepTable(store, integer(input, "sweep"), now, who.repos);
|
|
676
613
|
if (table === null || table.repo !== repo)
|
|
677
614
|
throw Error("That sweep isn't one of yours.");
|
|
678
|
-
// Exactly the items as they stand now — each one's active task (a revision, after one), state, running attempt and
|
|
679
|
-
// last change: any change makes this card stale, so nothing is acted on that wasn't shown.
|
|
680
615
|
const open = sweepOpen(store, table, now);
|
|
681
616
|
if (open.length === 0)
|
|
682
617
|
throw Error("Nothing in that sweep is still unfinished.");
|
|
@@ -686,8 +621,6 @@ turn) {
|
|
|
686
621
|
terms.push(`Cancels ${open.length - running.length} unfinished item${open.length - running.length === 1 ? "" : "s"}${running.length === 0 ? "" : ` and stops ${running.length} running build${running.length === 1 ? "" : "s"}`}: ${open.map(one => `${one.label} (${one.task})`).join(", ")}.`, "Finished results stay.");
|
|
687
622
|
}
|
|
688
623
|
else if (operation === "sweep_file") {
|
|
689
|
-
// Everything the person approves is on this screen: the shared rules, every item, the one success test, the
|
|
690
|
-
// limit. Confirming files exactly these and approves exactly these scopes; anything changed is a new card.
|
|
691
624
|
const sweepTitle = text(input, "title", 200).trim(), brief = text(input, "brief", 8000).trim();
|
|
692
625
|
const items = Array.isArray(input["items"]) ? input["items"] : [];
|
|
693
626
|
if (items.length < 2 || items.length > 20)
|
|
@@ -701,20 +634,13 @@ turn) {
|
|
|
701
634
|
request["items"] = cleaned.map(({ title, item }) => ({ title, item }));
|
|
702
635
|
const project = repo.split(/[\\/]/).filter(Boolean).at(-1) ?? repo;
|
|
703
636
|
title = `Start a sweep in ${project}: ${sweepTitle}`;
|
|
704
|
-
// Every word each child's scope will hold is shown here (the security review: nothing approved off-screen): its
|
|
705
|
-
// goal is the shared rules, then its item, then the verdict line; its success test is the shared acceptance.
|
|
706
637
|
const acceptance = Array.isArray(input["acceptance"]) ? input["acceptance"] : [];
|
|
707
638
|
if (acceptance.length === 0)
|
|
708
639
|
throw Error("A sweep needs a success test every item shares.");
|
|
709
|
-
// Every child's scope exactly as filing would make it — its words AND its agent's permissions, limits and route —
|
|
710
|
-
// found by filing them in a savepoint that is always rolled back (prepare writes nothing). They are on this card and
|
|
711
|
-
// in its state: if a project default changes before confirm, the card is stale and nothing is filed or approved.
|
|
712
640
|
const children = sweepChildScopes(store, who, repo, brief, cleaned.map(({ title, item }) => ({ title, item })), input["acceptance"], now);
|
|
713
641
|
state = { children: children.map(one => one.fingerprint) };
|
|
714
642
|
const tests = acceptance.map((one, index) => `Success test ${index + 1}${typeof one["id"] === "string" ? ` (${one["id"]})` : ""}: ${String(one["statement"] ?? "")}${Array.isArray(one["evidence"]) ? ` — shown by ${one["evidence"].map(String).join(", ")}` : ""}`);
|
|
715
|
-
terms.push(`${cleaned.length} tasks, each in its own worktree on its own branch, at most ${maxParallel} running at once, built directly (no separate planning step).`, `Shared rules for every item: ${brief}`, ...cleaned.map(one => `Item ${one.index + 1} — ${one.title}: ${one.item}`), `Each item's goal is the shared rules, then its own item, then: ${VERDICT_RULE}`, ...tests.map(line => `Every item — ${line}`), ...(children.every(one => one.runtime === children[0].runtime) ? [`Every item — ${children[0].runtime}`] : children.map((one, index) => `Item ${index + 1} — ${one.runtime}`)),
|
|
716
|
-
// Each item's own terms, word for word: its yes is bound to this text.
|
|
717
|
-
...children.map((one, index) => `Item ${index + 1} in full:\n${one.terms}`), "Confirming files all of them and approves each one's scope exactly as shown. An item that needs a second person, or that the project's rules keep from its requester, is filed and waits for its own approval.", "Each ends with a verdict (fixed, not reproducible, blocked or done) and the sweep's table shows them as they land.");
|
|
643
|
+
terms.push(`${cleaned.length} tasks, each in its own worktree on its own branch, at most ${maxParallel} running at once, built directly (no separate planning step).`, `Shared rules for every item: ${brief}`, ...cleaned.map(one => `Item ${one.index + 1} — ${one.title}: ${one.item}`), `Each item's goal is the shared rules, then its own item, then: ${VERDICT_RULE}`, ...tests.map(line => `Every item — ${line}`), ...(children.every(one => one.runtime === children[0].runtime) ? [`Every item — ${children[0].runtime}`] : children.map((one, index) => `Item ${index + 1} — ${one.runtime}`)), ...children.map((one, index) => `Item ${index + 1} in full:\n${one.terms}`), "Confirming files all of them and approves each one's scope exactly as shown. An item that needs a second person, or that the project's rules keep from its requester, is filed and waits for its own approval.", "Each ends with a verdict (fixed, not reproducible, blocked or done) and the sweep's table shows them as they land.");
|
|
718
644
|
}
|
|
719
645
|
else if (operation.startsWith("flow_")) {
|
|
720
646
|
const project = repo.split(/[\\/]/).filter(Boolean).at(-1) ?? repo;
|
|
@@ -729,7 +655,6 @@ turn) {
|
|
|
729
655
|
state = {};
|
|
730
656
|
title = `Create the ${name} flow in ${project}`;
|
|
731
657
|
terms.push(...flowTerms(definition, null));
|
|
732
|
-
// A template's trigger (Issues to PRs: labelled issues) comes with it, checked as the flow will have it.
|
|
733
658
|
if (input["trigger"] !== undefined) {
|
|
734
659
|
const draft = { id: 0, repo, name, definitionJson: JSON.stringify(definition), revision: 1, state: "active", createdBy: who.name, createdAt: now.toISOString(), updatedBy: who.name, updatedAt: now.toISOString(), owner: who.name };
|
|
735
660
|
const config = validateTriggerConfig(input["trigger"], { store, flow: draft, definition, actor: who.name });
|
|
@@ -799,7 +724,6 @@ turn) {
|
|
|
799
724
|
else if (operation === "flow_trigger_add") {
|
|
800
725
|
const { flow, definition } = flowTarget;
|
|
801
726
|
const config = validateTriggerConfig(input["trigger"], { store, flow, definition, actor: who.name });
|
|
802
|
-
// A webhook address is a secret: it is made and shown on the flow's own Triggers panel, never through chat.
|
|
803
727
|
if (takesDeliveries(config))
|
|
804
728
|
throw Error("Webhook addresses are secrets, so they are set up on the flow's Triggers panel. From chat, use a trigger that is checked every 2 minutes.");
|
|
805
729
|
request["trigger"] = config;
|
|
@@ -820,7 +744,6 @@ turn) {
|
|
|
820
744
|
const view = browserViewOf(store, flow);
|
|
821
745
|
if (view === null)
|
|
822
746
|
throw Error(`No zone in ${flow.name} says it starts a browser. Mark its script zone first (edit the flow), then propose this.`);
|
|
823
|
-
// As on the flow page (route table: instance access), a project-limited account can't allow browser use.
|
|
824
747
|
if (operation === "flow_browser" && store.accountOf(who.name)?.projects !== null)
|
|
825
748
|
throw Error("Allowing browser use needs an account with access to every project.");
|
|
826
749
|
if (operation === "flow_browser_off") {
|
|
@@ -835,12 +758,9 @@ turn) {
|
|
|
835
758
|
throw Error(`${view.words}.`);
|
|
836
759
|
if (view.digest === null)
|
|
837
760
|
throw Error(view.problem ?? "This flow's browser zones can't be approved as they are.");
|
|
838
|
-
// The approval the person reads and the one their password signs: the digest is re-derived when they confirm.
|
|
839
761
|
state = { flow: flow.id, revision: flow.revision, digest: view.digest };
|
|
840
762
|
title = `Allow browser use in ${flow.name}`;
|
|
841
|
-
terms.push(`Flow: ${flow.name} · project ${project}`,
|
|
842
|
-
// Each script by its short digest: the whole approval, every script's full digest included, is bound in the state.
|
|
843
|
-
...view.zones.map(zone => `${zone.title} runs ${zone.script} v${zone.version}\nScript ${zone.digest.slice(0, 12)}`), "Each run of these zones starts a headless Chromium.", ...view.terms);
|
|
763
|
+
terms.push(`Flow: ${flow.name} · project ${project}`, ...view.zones.map(zone => `${zone.title} runs ${zone.script} v${zone.version}\nScript ${zone.digest.slice(0, 12)}`), "Each run of these zones starts a headless Chromium.", ...view.terms);
|
|
844
764
|
}
|
|
845
765
|
}
|
|
846
766
|
else if (operation === "flow_trigger_pause" || operation === "flow_trigger_resume" || operation === "flow_trigger_remove") {
|
|
@@ -904,7 +824,6 @@ turn) {
|
|
|
904
824
|
terms.push("The card leaves the flow. Any tasks it filed stay as they are.");
|
|
905
825
|
}
|
|
906
826
|
else if (operation === "flow_card_choose") {
|
|
907
|
-
// "Person chooses" (flow-send.ts): one of the zone's own options, or a reply that becomes the note.
|
|
908
827
|
if (at?.kind !== "choose")
|
|
909
828
|
throw Error("That card isn't waiting for a choice.");
|
|
910
829
|
const person = flowPersonOf(card, flowTarget.flow);
|
|
@@ -917,7 +836,6 @@ turn) {
|
|
|
917
836
|
if (option === undefined)
|
|
918
837
|
throw Error(`Choose one of its ${(at.options ?? []).length} options, by number.`);
|
|
919
838
|
delete request["note"];
|
|
920
|
-
// Bound to the option as shown: if the flow's options change before it is confirmed, it is refused.
|
|
921
839
|
Object.assign(state, { label: option.label, to: option.to });
|
|
922
840
|
title = `Choose “${option.label}” for ${quoted(card.title)}`;
|
|
923
841
|
terms.push(option.to === "end" ? `${at.title}: “${option.label}”. The card is closed as Ignored.` : `${at.title}: “${option.label}”. It moves to ${titleOf(option.to)}.`);
|
|
@@ -968,7 +886,6 @@ turn) {
|
|
|
968
886
|
}
|
|
969
887
|
}
|
|
970
888
|
else if (operation === "suggestion_not_now") {
|
|
971
|
-
// Only a suggestion on offer now, by its exact id (which binds its evidence, prices and Models generations).
|
|
972
889
|
const asked = text(input, "suggestion", 200);
|
|
973
890
|
const offer = suggestionsFor(store, repo, now).find(one => one.id === asked);
|
|
974
891
|
if (offer === undefined)
|
|
@@ -978,7 +895,6 @@ turn) {
|
|
|
978
895
|
terms.push(suggestionWords(offer), "Keeps this suggestion quiet for 30 days. Nothing about which models run changes. To accept it instead, review it in Settings → Models.");
|
|
979
896
|
}
|
|
980
897
|
else if (operation === "trial_stop") {
|
|
981
|
-
// Only a live trial of this project, by its number; the card is stale once the trial moves.
|
|
982
898
|
const asked = integer(input, "trial");
|
|
983
899
|
const trial = Number.isSafeInteger(asked) ? ruleById(store, asked) : null;
|
|
984
900
|
if (trial === null || trial.kind !== "trial" || trial.repo !== repo || (trial.state !== "trialling" && trial.state !== "paused"))
|
|
@@ -999,8 +915,6 @@ turn) {
|
|
|
999
915
|
terms.push("No new builds are enrolled. Builds already enrolled keep their arm, so the results stay comparable.");
|
|
1000
916
|
}
|
|
1001
917
|
else if (operation.startsWith("decision_")) {
|
|
1002
|
-
// The staleness fence: the newest decision id and the active count, so a
|
|
1003
|
-
// card drafted before a subagent recorded or retired one is refused.
|
|
1004
918
|
const stamp = store.handle.prepare("SELECT COALESCE(MAX(id),0) AS newest, COUNT(*) AS active FROM project_decision WHERE repo=? AND status='active'").get(repo);
|
|
1005
919
|
state = { newest: Number(stamp?.["newest"] ?? 0), active: Number(stamp?.["active"] ?? 0) };
|
|
1006
920
|
if (operation === "decision_record") {
|
|
@@ -1079,7 +993,6 @@ turn) {
|
|
|
1079
993
|
if (!authority.ok)
|
|
1080
994
|
throw Error(authority.problem);
|
|
1081
995
|
state["authMode"] = authority.authMode;
|
|
1082
|
-
// The whole terms word for word (the yes is bound to this text: chat-terms.ts cardShowsScope), then everything else.
|
|
1083
996
|
terms.push(scopeTermsText(scope), ...describeScope(scope, undefined, taskEvidenceWords(store, scope.taskId, now))
|
|
1084
997
|
.filter((line) => !/^\s*(reference|approved|goal|not this|touches)\s/.test(line))
|
|
1085
998
|
.map((line) => line
|
|
@@ -1143,7 +1056,6 @@ turn) {
|
|
|
1143
1056
|
terms.push(`Limitation: ${caveat}`);
|
|
1144
1057
|
}
|
|
1145
1058
|
}
|
|
1146
|
-
// An approval keeps the digest of the exact words its card shows, from now on: the yes is to these (scope.ts approve).
|
|
1147
1059
|
if (APPROVAL_ACTIONS.has(operation))
|
|
1148
1060
|
state["shown"] = cardTermsDigest(terms.join("\n"));
|
|
1149
1061
|
const stamp = hash({
|
|
@@ -1158,17 +1070,11 @@ turn) {
|
|
|
1158
1070
|
});
|
|
1159
1071
|
return { version: SHARED_ACTION_VERSION, operation, request, repo, title, terms, stamp, state };
|
|
1160
1072
|
}
|
|
1161
|
-
/** A saved proposal's action, read by its schema (contracts/chat-actions.ts); null when it can't be read. */
|
|
1162
1073
|
export function sharedActionPayload(value) {
|
|
1163
1074
|
const read = readSharedAction(value);
|
|
1164
1075
|
return read.ok ? read.value : null;
|
|
1165
1076
|
}
|
|
1166
|
-
/** A shortened or redacted preview is not complete consent. This rule lives
|
|
1167
|
-
* in the shared door, so a forged transport callback cannot bypass it. */
|
|
1168
1077
|
function sharedActionContentNeedsReview(action) {
|
|
1169
|
-
// An approval's card has room for longer terms. Its words are compared exactly: anything the card would hide or
|
|
1170
|
-
// rewrite (a long hex value, a path, a secret) sends the person to the review page. Toolroll's own digest is bound in
|
|
1171
|
-
// the state, never in the terms, and a commit is written short, so an ordinary approval shows every word as stored.
|
|
1172
1078
|
const approval = APPROVAL_ACTIONS.has(action.operation), cap = approval ? APPROVAL_TERM_CHARS : 1200;
|
|
1173
1079
|
const content = [action.title, ...action.terms];
|
|
1174
1080
|
return (action.terms.join("\n").length > cap ||
|
|
@@ -1178,15 +1084,6 @@ export function sharedActionNeedsReview(action) {
|
|
|
1178
1084
|
return (CHAT_ACTIONS[action.operation].protected ||
|
|
1179
1085
|
sharedActionContentNeedsReview(action));
|
|
1180
1086
|
}
|
|
1181
|
-
/** Whether a linked chat may confirm this protected action behind its own
|
|
1182
|
-
* explicit challenge: the action is on the challenge list, needs no
|
|
1183
|
-
* password, and every term fits the card unshortened. An approval's yes is
|
|
1184
|
-
* a yes to the words the card showed (they are sealed as shown), so it also
|
|
1185
|
-
* needs a chat app that shows them exactly as stored (shownAsWritten: never
|
|
1186
|
-
* Teams, whose card reads Markdown; not Slack when a word would become an
|
|
1187
|
-
* emoji). There the card links to the review page and no tap approves. The
|
|
1188
|
-
* chat app is the one the card is drawn for or the tap came through, never
|
|
1189
|
-
* something the action or a caller's input names. */
|
|
1190
1087
|
export function sharedActionAllowsChallenge(action, channel) {
|
|
1191
1088
|
const config = CHAT_ACTIONS[action.operation];
|
|
1192
1089
|
return (CHALLENGE_ACTIONS.has(action.operation) &&
|
|
@@ -1221,13 +1118,7 @@ function savedActionContext(store, who, id, state) {
|
|
|
1221
1118
|
requireActor(store, who, payload.repo, payload.operation);
|
|
1222
1119
|
return payload;
|
|
1223
1120
|
}
|
|
1224
|
-
/** An action's terms alone, without whose proposal it was (actor, generation, ceiling). */
|
|
1225
1121
|
const termsStampOf = (action) => hash({ operation: action.operation, request: action.request, repo: action.repo, state: action.state, terms: action.terms });
|
|
1226
|
-
/**
|
|
1227
|
-
* Whether the live action is the saved one: the exact stamp; or, for a scope approval already holding another
|
|
1228
|
-
* approver's yes on these exact terms (awaiting the second), the same terms — each reviewer's own nonce and authority
|
|
1229
|
-
* are still bound to them individually.
|
|
1230
|
-
*/
|
|
1231
1122
|
function sameSharedAction(store, who, live, saved) {
|
|
1232
1123
|
if (live.stamp === saved.stamp)
|
|
1233
1124
|
return true;
|
|
@@ -1256,20 +1147,15 @@ export function mintSharedActionReview(store, who, id, root, now) {
|
|
|
1256
1147
|
throw Error("Too many reviews are open. Close older reviews and try again.");
|
|
1257
1148
|
return { payload: live, nonce };
|
|
1258
1149
|
}
|
|
1259
|
-
/** Whether a typed yes may stand in for the challenge's tap on this action: a Start card, on Telegram, a person (never a
|
|
1260
|
-
* machine), terms whole on the card, and an unsettled typed-yes record naming exactly this proposal. */
|
|
1261
1150
|
export function typedStartOpens(store, proposal, action, options) {
|
|
1262
1151
|
const typed = options.typedStart;
|
|
1263
1152
|
return typed !== undefined && action.operation === "task_start" && options.via === "telegram" && typed.provider === "telegram"
|
|
1264
1153
|
&& options.authority !== "local-owner" && !machineActing() && sharedActionAllowsChallenge(action, "telegram") && typedStartNames(store, typed, proposal);
|
|
1265
1154
|
}
|
|
1266
|
-
/** Called inside the proposal door's transaction, after ownership and session
|
|
1267
|
-
* checks. No password or review receipt is ever part of a saved proposal. */
|
|
1268
1155
|
export function executeSharedAction(store, who, id, payload, now, options) {
|
|
1269
1156
|
const refuse = (reason, said) => ({ ok: false, reason, said });
|
|
1270
1157
|
if (store.isDemo())
|
|
1271
1158
|
return refuse("refused", "The demo authorizes nothing.");
|
|
1272
|
-
// Easy-start C1, a belt under the confirm door's own gate: a local owner runs only an operation that is one of its acts.
|
|
1273
1159
|
if ((options.authority === "local-owner" || currentLocalOwner() !== null) && (!isChatAction(payload.operation) || CHAT_ACTION_LOCAL_ACTS[payload.operation] === null))
|
|
1274
1160
|
return refuse("refused", "Set a password to do this.");
|
|
1275
1161
|
let live;
|
|
@@ -1288,11 +1174,9 @@ export function executeSharedAction(store, who, id, payload, now, options) {
|
|
|
1288
1174
|
? error.message
|
|
1289
1175
|
: "This action is no longer available.");
|
|
1290
1176
|
}
|
|
1291
|
-
// The review nonce was minted against the saved proposal's stamp: it is checked against that, whoever reviews.
|
|
1292
1177
|
const savedStamp = payload.stamp;
|
|
1293
1178
|
payload = live;
|
|
1294
1179
|
const config = CHAT_ACTIONS[live.operation], req = live.request;
|
|
1295
|
-
// A typed yes (C5) is checked on the live action and the live record; any use it doesn't open refuses.
|
|
1296
1180
|
const typed = typedStartOpens(store, id, payload, options);
|
|
1297
1181
|
if (options.typedStart !== undefined && !typed)
|
|
1298
1182
|
return refuse("refused", TYPED_START_REFUSED);
|
|
@@ -1301,7 +1185,6 @@ export function executeSharedAction(store, who, id, payload, now, options) {
|
|
|
1301
1185
|
((options.confirm === true && sharedActionAllowsChallenge(payload, options.via)) || typed);
|
|
1302
1186
|
if (APPROVAL_ACTIONS.has(live.operation) && machineActing())
|
|
1303
1187
|
return refuse("needs-confirm", "Only a person approves this.");
|
|
1304
|
-
// A lead's or remote token reaches the same web door: an approval needs a person's own session (or tap, above).
|
|
1305
1188
|
if (APPROVAL_ACTIONS.has(live.operation) && options.via === "web" && options.authority !== "local-owner" && options.person !== true)
|
|
1306
1189
|
return refuse("needs-confirm", "Approve this yourself, in your signed-in chat.");
|
|
1307
1190
|
if (sharedActionNeedsReview(payload) && !challenged) {
|
|
@@ -1314,8 +1197,6 @@ export function executeSharedAction(store, who, id, payload, now, options) {
|
|
|
1314
1197
|
return refuse("needs-confirm", "Confirm with your password in the secure screen.");
|
|
1315
1198
|
}
|
|
1316
1199
|
try {
|
|
1317
|
-
// A scope approval's re-check (sso-now) is spent only if it happens: a refusal or a rolled-back savepoint puts it
|
|
1318
|
-
// back (its every effect is in this transaction). Other actions spend it whatever comes of them.
|
|
1319
1200
|
const act = () => store.savepoint(() => {
|
|
1320
1201
|
const task = typeof req["task"] === "string" ? req["task"] : null, repo = payload.repo, actor = who.name;
|
|
1321
1202
|
let taskId = task;
|
|
@@ -1355,10 +1236,7 @@ export function executeSharedAction(store, who, id, payload, now, options) {
|
|
|
1355
1236
|
: { restore: Number(req["restore"]) }),
|
|
1356
1237
|
}, now);
|
|
1357
1238
|
else if (payload.operation === "flow_browser") {
|
|
1358
|
-
// Only through the secure screen with the person's own password (protected + password above); signFlowBrowser
|
|
1359
|
-
// re-reads the flow, its zones and scripts in this transaction and refuses unless they are what the card showed.
|
|
1360
1239
|
const flow = Number(payload.state["flow"]);
|
|
1361
|
-
// signFlowBrowser re-reads the account's generation and reach in its transaction (it may have narrowed since).
|
|
1362
1240
|
const by = approvalBy(store, who, repo, now, options, drafted);
|
|
1363
1241
|
if (by.ok === false)
|
|
1364
1242
|
throw Error(by.why);
|
|
@@ -1427,8 +1305,6 @@ export function executeSharedAction(store, who, id, payload, now, options) {
|
|
|
1427
1305
|
return { ok: true, taskId: null, said: payload.operation === "code_map_switch" ? `The code map is ${req["on"] === true ? "on" : "off"}.` : "The holdout has ended.", href: `/settings/project?repo=${encodeURIComponent(repo)}#code-map` };
|
|
1428
1306
|
}
|
|
1429
1307
|
else if (payload.operation === "suggestion_not_now") {
|
|
1430
|
-
// The rule door (route-store.ts proveRuleDoor) re-proves who says it: this computer's local owner only inside
|
|
1431
|
-
// its `dismiss-suggestion` act, or the confirming person.
|
|
1432
1308
|
const door = currentLocalOwner() !== null ? { kind: "local-owner", actor } : { kind: "person", person: { actor: who.name, generation: who.generation, method: "session", live: () => true } };
|
|
1433
1309
|
const done = dismissSuggestion(store, { repo, id: String(payload.state["suggestion"]) }, door, now);
|
|
1434
1310
|
if (!done.ok)
|
|
@@ -1456,23 +1332,17 @@ export function executeSharedAction(store, who, id, payload, now, options) {
|
|
|
1456
1332
|
}, now);
|
|
1457
1333
|
else if (payload.operation === "scope_approve") {
|
|
1458
1334
|
const scope = store.getScope(task);
|
|
1459
|
-
// Cockpit B2: classified by the act, not the road — the same standard-approval freshness as /t/:id/approve.
|
|
1460
1335
|
const by = approvalBy(store, who, repo, now, options, drafted);
|
|
1461
1336
|
if (by.ok === false)
|
|
1462
1337
|
throw Error(by.why);
|
|
1463
1338
|
const limited = chatLimitProblem(scope, by.limits, "your chat approval setting");
|
|
1464
1339
|
if (limited !== null)
|
|
1465
1340
|
throw Error(limited);
|
|
1466
|
-
// A local owner keeps its own road (approve proves it again in the seal); everyone else, their own yes from chat,
|
|
1467
|
-
// to the scope and the words the card was made with.
|
|
1468
1341
|
const sawDigest = String(drafted.state["scope"]?.digest ?? "");
|
|
1469
1342
|
const result = withFreshness("approve-standard", () => approve(store, task, actor, now, sawDigest, options.review?.password ?? "", {}, undefined, by.chat));
|
|
1470
1343
|
if (!result.ok) {
|
|
1471
|
-
// A first yes on protected work is kept, with how its person was proved: committed, never rolled back.
|
|
1472
|
-
// The card stays open (`awaiting`) for the second approver; the same person again changes nothing.
|
|
1473
1344
|
if (result.reason === "second-approver")
|
|
1474
1345
|
return { ok: true, taskId, awaiting: true, ...(result.already ? { already: true } : {}), said: gateWords({ verdict: "vote", have: result.have, need: 2, already: result.already }) };
|
|
1475
|
-
// v102: the project's approval rules speak for themselves.
|
|
1476
1346
|
if (result.reason === "requester" || result.reason === "person-required")
|
|
1477
1347
|
throw Error(gateWords({ verdict: "refuse", reason: result.reason }));
|
|
1478
1348
|
if (result.reason === "policy")
|
|
@@ -1481,8 +1351,6 @@ export function executeSharedAction(store, who, id, payload, now, options) {
|
|
|
1481
1351
|
}
|
|
1482
1352
|
}
|
|
1483
1353
|
else if (payload.operation === "result_accept") {
|
|
1484
|
-
// Accept and finish, as on the result page: whether a check only the person makes is accepted
|
|
1485
|
-
// too is decided inside the same transaction, against the receipt as it stands.
|
|
1486
1354
|
const completed = acceptAndCompleteAsOperator(store, task, { runId: null, receiptDigest: String(payload.state["receipt"] ?? ""), note: null }, who, now, options.root);
|
|
1487
1355
|
if (!completed.ok)
|
|
1488
1356
|
throw Error(completed.message);
|
|
@@ -1549,24 +1417,14 @@ export function executeSharedAction(store, who, id, payload, now, options) {
|
|
|
1549
1417
|
: "The action could not be completed.");
|
|
1550
1418
|
}
|
|
1551
1419
|
}
|
|
1552
|
-
/** A confirmed subagent action (v92), through the same helpers the Subagents pages use. */
|
|
1553
|
-
/**
|
|
1554
|
-
* Lead fan-out: file every item (all of them or none — any refusal throws and the savepoint takes the whole sweep
|
|
1555
|
-
* back), link them to one sweep record, then approve each one's scope through the ordinary approval (its own digest,
|
|
1556
|
-
* its own rules). A child the approval refuses stays filed and unapproved; it is named, never retried.
|
|
1557
|
-
*/
|
|
1558
|
-
/** One child as filing makes it (the shared brief, its item, the verdict rule; the shared acceptance; built directly). */
|
|
1559
1420
|
function fileSweepChild(store, who, repo, brief, one, acceptance, now) {
|
|
1560
1421
|
const goal = `${brief}\n\nThis item:\n${one.item}\n\n${VERDICT_RULE}`;
|
|
1561
1422
|
return fileTaskProposal(store, {
|
|
1562
1423
|
title: one.title, repo, goal, acceptance, planning: "skip",
|
|
1563
|
-
// Sized now, by the same heuristic filing would use: no background classifier is started — the card's dry run must
|
|
1564
|
-
// leave nothing running after its rollback, and the approved scope must be the one shown (Codex sweep r2).
|
|
1565
1424
|
sizing: heuristicSizing({ title: one.title, goal, outOfScope: null }),
|
|
1566
1425
|
filedVia: "mate", filedBy: { name: who.name, kind: "person" }, proposedVia: "mate", admittedRepos: [...who.repos],
|
|
1567
1426
|
}, now);
|
|
1568
1427
|
}
|
|
1569
|
-
/** A filed child's scope in the words an approval agrees to (no identity lines), its runtime terms, and their digest. */
|
|
1570
1428
|
function sweepChildScopeOf(store, taskId) {
|
|
1571
1429
|
const scope = store.getScope(taskId);
|
|
1572
1430
|
if (scope === null)
|
|
@@ -1576,16 +1434,12 @@ function sweepChildScopeOf(store, taskId) {
|
|
|
1576
1434
|
throw Error(authority.problem);
|
|
1577
1435
|
const words = describeScope(scope).filter(line => !/^\s*(reference|approved)\s/.test(line)).map(line => line.trim());
|
|
1578
1436
|
const runtime = `Agent permissions and limits: ${runtimeTerms(authority.profile)} ${authority.authMode === "api-key" ? "Uses your API key; spend is charged to that account." : authority.authMode === "subscription" ? "Uses your subscription login." : ""}`.trim();
|
|
1579
|
-
// The fingerprint covers the scope's every field, not only what is rendered (a profile setting no sentence names, such
|
|
1580
|
-
// as an agent's idle timeout, still makes the card stale): its exact terms with only identity left out.
|
|
1581
1437
|
const { taskId: _task, digest: _digest, approvedDigest: _approved, approvedBy: _by, approvedAt: _at, proposedAt: _proposed, approvalBasis: _basis, modeDigest: _mode, approvedProfile: _approvedProfile, approvedProfileJson: _approvedProfileJson, approvedChainJson: _approvedChain, ...terms } = scope;
|
|
1582
1438
|
return { fingerprint: hash({ words, runtime, authMode: authority.authMode, profile: authority.profile, terms }), runtime, words, terms: scopeTermsText(scope) };
|
|
1583
1439
|
}
|
|
1584
|
-
/** Every child as filing would make it, found in a savepoint that is always rolled back: prepare never writes. */
|
|
1585
1440
|
function sweepChildScopes(store, who, repo, brief, items, acceptance, now) {
|
|
1586
1441
|
const dryRun = new Error("sweep dry run");
|
|
1587
1442
|
let found = [];
|
|
1588
|
-
// Inside one transaction (filing opens its own; transact flattens), a savepoint that always rolls back.
|
|
1589
1443
|
store.transact(() => {
|
|
1590
1444
|
try {
|
|
1591
1445
|
store.savepoint(() => {
|
|
@@ -1605,15 +1459,7 @@ function sweepChildScopes(store, who, repo, brief, items, acceptance, now) {
|
|
|
1605
1459
|
});
|
|
1606
1460
|
return found;
|
|
1607
1461
|
}
|
|
1608
|
-
/**
|
|
1609
|
-
* A Start card's yes (docs/plans/one-step-chat.md C2): file and approve in one step through fastStartBuild, in this
|
|
1610
|
-
* action's savepoint. Two proofs of the person and no third: their own yes from chat (approvalBy gives `chat`, with the
|
|
1611
|
-
* card's whole words and their digest), under their own chat limits; or this computer's local owner on web chat, whose
|
|
1612
|
-
* approve() proves the owner itself and allows `build-now` only with a fast marker. Anything else refuses, and a refusal
|
|
1613
|
-
* throws, taking the filing back.
|
|
1614
|
-
*/
|
|
1615
1462
|
function startFromCard(store, who, proposal, drafted, options, now) {
|
|
1616
|
-
// `toolroll chat` keeps refusing approvals; a Start card names the terminal's own fast start instead.
|
|
1617
1463
|
if (options.via === "cli")
|
|
1618
1464
|
throw Error(startFromTerminalWords(store, drafted));
|
|
1619
1465
|
const by = approvalBy(store, who, drafted.repo, now, options, drafted);
|
|
@@ -1623,7 +1469,6 @@ function startFromCard(store, who, proposal, drafted, options, now) {
|
|
|
1623
1469
|
if (by.chat !== undefined) {
|
|
1624
1470
|
const chat = by.chat;
|
|
1625
1471
|
proof = { chat: by.limits };
|
|
1626
|
-
// A typed yes (C5) is recorded beside the fast marker: which message was the yes. The executor's gate has proved it.
|
|
1627
1472
|
const typed = options.typedStart;
|
|
1628
1473
|
approveNow = (taskId, saw, fast) => approve(store, taskId, who.name, now, saw, "", {}, typed === undefined ? fast : { ...fast, typed: { provider: typed.provider, event: typed.event } }, chat);
|
|
1629
1474
|
}
|
|
@@ -1640,12 +1485,6 @@ function startFromCard(store, who, proposal, drafted, options, now) {
|
|
|
1640
1485
|
throw Error(built.message);
|
|
1641
1486
|
return built.taskId;
|
|
1642
1487
|
}
|
|
1643
|
-
/**
|
|
1644
|
-
* A value safe to paste into a shell as ONE word, single-quoted, or null. The value is model- or person-written (the
|
|
1645
|
-
* lead's title, a project path), so only a strict allowlist passes: letters, digits, spaces and `. , : _ / - ( ) + # @`,
|
|
1646
|
-
* 1 to 120 characters, no leading `-`. Anything else (quotes, backticks, `$`, `\`, newlines, globs, redirections…) is
|
|
1647
|
-
* null, and the caller shows a placeholder instead.
|
|
1648
|
-
*/
|
|
1649
1488
|
export function shellWordOrNull(text) {
|
|
1650
1489
|
if (text.length < 1 || text.length > 120 || text.startsWith("-"))
|
|
1651
1490
|
return null;
|
|
@@ -1653,16 +1492,12 @@ export function shellWordOrNull(text) {
|
|
|
1653
1492
|
return null;
|
|
1654
1493
|
return `'${text}'`;
|
|
1655
1494
|
}
|
|
1656
|
-
/** Where `toolroll chat` sends a Start card: the terminal's own fast start, with the words the lead drafted when they are
|
|
1657
|
-
* safe to paste as one shell word, else the placeholders. Never a value unquoted or in double quotes. */
|
|
1658
1495
|
export function startFromTerminalWords(store, action) {
|
|
1659
1496
|
const row = store.handle.prepare("SELECT title FROM fast_preview WHERE id = ?").get(String(action.state["preview"] ?? ""));
|
|
1660
1497
|
const title = row === undefined ? null : shellWordOrNull(String(row["title"]));
|
|
1661
1498
|
const project = shellWordOrNull(action.repo);
|
|
1662
1499
|
return `Start it from the terminal with \`toolroll task new ${title ?? "\"<title>\""} --repo ${project ?? "<project>"}\`.`;
|
|
1663
1500
|
}
|
|
1664
|
-
/** How this yes stands, and under whose limits: a person's own from chat, by their own chat setting, with the words and
|
|
1665
|
-
* digest the card was made with. A local owner's road has none: approve() proves it itself. */
|
|
1666
1501
|
function approvalBy(store, who, repo, now, options, drafted) {
|
|
1667
1502
|
if (options.authority === "local-owner")
|
|
1668
1503
|
return { ok: true, limits: { fullAccess: true, capMicrousd: null } };
|
|
@@ -1692,7 +1527,6 @@ function fileSweep(store, who, proposal, payload, by, now) {
|
|
|
1692
1527
|
const made = fileSweepChild(store, who, payload.repo, brief, one, req["acceptance"], now);
|
|
1693
1528
|
if (!made.ok)
|
|
1694
1529
|
throw Error(`Item ${index + 1} (${one.title}) couldn't be filed: ${made.message}. Nothing was filed.`);
|
|
1695
|
-
// Each filed scope must be exactly the one the card showed (words, permissions, limits, route); else nothing is filed.
|
|
1696
1530
|
if (sweepChildScopeOf(store, made.id).fingerprint !== payload.state["children"]?.[index])
|
|
1697
1531
|
throw Error(`Item ${index + 1} (${one.title}) no longer matches what you reviewed (a project default changed). Nothing was filed; ask for a fresh card.`);
|
|
1698
1532
|
store.addSweepTask(sweep, made.id, index, one.title);
|
|
@@ -1701,7 +1535,6 @@ function fileSweep(store, who, proposal, payload, by, now) {
|
|
|
1701
1535
|
const waiting = [];
|
|
1702
1536
|
for (const one of filed) {
|
|
1703
1537
|
const scope = store.getScope(one.id);
|
|
1704
|
-
// A person's own limits hold for each item: one past them is filed and waits for its own approval.
|
|
1705
1538
|
const approved = scope === null || chatLimitProblem(scope, by.limits, "your chat approval setting") !== null ? null
|
|
1706
1539
|
: withFreshness("approve-standard", () => approve(store, one.id, who.name, now, scope.digest, "", {}, undefined, by.chat));
|
|
1707
1540
|
if (approved === null || !approved.ok)
|
|
@@ -1731,7 +1564,6 @@ function runSubagentAction(store, payload, actor, now) {
|
|
|
1731
1564
|
if (mate === null || mate.state === "removed")
|
|
1732
1565
|
throw Error("That subagent is off the team.");
|
|
1733
1566
|
if (payload.operation === "subagent_ask") {
|
|
1734
|
-
// One card per confirmed proposal: the confirmation runs once, so a retried tap never asks twice.
|
|
1735
1567
|
if (mate.version !== payload.state["version"])
|
|
1736
1568
|
throw Error("Someone changed its soul file since. Ask for a fresh proposal.");
|
|
1737
1569
|
const asked = askSubagent(store, mate, { who: actor, via: "the lead" }, String(req["text"]), now);
|
|
@@ -1767,7 +1599,6 @@ function runSubagentAction(store, payload, actor, now) {
|
|
|
1767
1599
|
if ((grant === null ? "" : JSON.stringify(grant.rules)) !== payload.state["rules"])
|
|
1768
1600
|
throw Error("Someone changed its tools since. Ask for a fresh proposal.");
|
|
1769
1601
|
const found = projectToolsOf(store, mate.repo).find(one => one.name === tool);
|
|
1770
|
-
// A grant takes the person's password on the subagent's page (chat-management.md §0a.3): never from a card.
|
|
1771
1602
|
if (req["change"] === "grant")
|
|
1772
1603
|
throw Error("Giving a subagent a tool takes your password. Do it on its page in Toolroll.");
|
|
1773
1604
|
const done = req["change"] === "grant" ? found === undefined ? { ok: false, said: `There's no tool called ${tool} any more.` } : grantListed(store, mate, found, null, actor, now, {})
|
|
@@ -1787,8 +1618,6 @@ function runSubagentAction(store, payload, actor, now) {
|
|
|
1787
1618
|
throw Error(done.said);
|
|
1788
1619
|
return { said: done.said, href: payload.operation === "subagent_state" && req["state"] === "removed" ? "/settings/lead/subagents" : `/settings/lead/subagents/${mate.id}` };
|
|
1789
1620
|
}
|
|
1790
|
-
/** A confirmed flow action, through the same helpers the canvas uses; then
|
|
1791
|
-
* the flow moves what it can right away, as it does after a canvas change. */
|
|
1792
1621
|
function runFlowAction(store, payload, actor, repos, root, now) {
|
|
1793
1622
|
const req = payload.request;
|
|
1794
1623
|
const settle = (flow, said, card) => {
|
|
@@ -1797,7 +1626,7 @@ function runFlowAction(store, payload, actor, repos, root, now) {
|
|
|
1797
1626
|
try {
|
|
1798
1627
|
advanceFlows(store, repo, now, root === undefined ? {} : { evidenceRoot: root });
|
|
1799
1628
|
}
|
|
1800
|
-
catch {
|
|
1629
|
+
catch { }
|
|
1801
1630
|
}
|
|
1802
1631
|
const after = card === null ? null : store.getFlowCard(card);
|
|
1803
1632
|
const filed = after !== null && after.task !== null && after.state === "active" ? " Its step filed a task under your usual approvals." : "";
|
|
@@ -1868,7 +1697,6 @@ function runFlowAction(store, payload, actor, repos, root, now) {
|
|
|
1868
1697
|
const acted = payload.operation === "flow_card_move" ? moveCardInFlow(store, card, String(req["zone"]), actor, now)
|
|
1869
1698
|
: payload.operation === "flow_card_cancel" ? cancelFlowCard(store, card, actor, now)
|
|
1870
1699
|
: payload.operation === "flow_card_choose" ? (() => {
|
|
1871
|
-
// The option (its words and where it leads) or reply target exactly as proposed; a proposal from before carries neither and is refused.
|
|
1872
1700
|
const bound = payload.state;
|
|
1873
1701
|
if (typeof bound["to"] !== "string" || (Number.isSafeInteger(req["choice"]) && typeof bound["label"] !== "string"))
|
|
1874
1702
|
return { ok: false, message: "Those options changed since; nothing was changed. Ask for a fresh proposal." };
|
|
@@ -1885,7 +1713,6 @@ function runFlowAction(store, payload, actor, repos, root, now) {
|
|
|
1885
1713
|
throw Error(acted.message);
|
|
1886
1714
|
return settle(card.flow, acted.said, card.id);
|
|
1887
1715
|
}
|
|
1888
|
-
// ---- chat and console parity (docs/plans/toolroll-cards.md) ------------------------------------------------------------
|
|
1889
1716
|
const LATE_APPROVALS = new Set(["task_reopen", "revision_accept", "revision_reject", "flow_unattended"]);
|
|
1890
1717
|
const PARITY_ACTIONS = new Set(["mode_revoke", "flow_unattended_off", "flow_archive", "task_archive", "task_restore", "incident_resolve", "memory_decide", "finding_send", "finding_resend", ...LATE_APPROVALS]);
|
|
1891
1718
|
const OWNER_PARITY = new Set(["provider_resume", "worker_note", "lead_identity"]);
|
|
@@ -1901,7 +1728,6 @@ function instanceAction(store, who, operation, input) {
|
|
|
1901
1728
|
const pause = authPauseOf(store, provider);
|
|
1902
1729
|
if (pause === null)
|
|
1903
1730
|
throw Error("That agent isn't paused.");
|
|
1904
|
-
// The pause is the whole installation's: every project with work waiting on it is named, and must be in reach here.
|
|
1905
1731
|
const repos = [...new Set(store.handle.prepare(`SELECT t.repo AS repo FROM run r JOIN task_ref t ON t.id = r.task_ref WHERE r.provider = ? AND r.reason = 'auth-expired' AND r.finished_at >= ?
|
|
1906
1732
|
UNION SELECT repo FROM task_ref WHERE auth_wait_pause = ?`).all(provider, pause.openedAt, pause.id).flatMap(row => row["repo"] === null ? [] : [String(row["repo"])]))].sort();
|
|
1907
1733
|
if (repos.some(one => !who.repos.includes(one)))
|
|
@@ -1928,7 +1754,6 @@ const REOPEN_REFUSED = {
|
|
|
1928
1754
|
claimed: "This task is being built right now.", held: "A hold stands: lift it first.", "question-open": "An unanswered question stands: answer or close it first.",
|
|
1929
1755
|
"incident-open": "An unresolved incident stands: resolve it first.", "bad-state": "This task is not in a state reopen can take.",
|
|
1930
1756
|
};
|
|
1931
|
-
/** The one plan revision waiting on a decision for this task, by its id or as the only one. */
|
|
1932
1757
|
function waitingRevision(store, task, asked) {
|
|
1933
1758
|
const ref = store.lookupRef(task);
|
|
1934
1759
|
const waiting = ref === null ? [] : store.listPlanRevisions(ref.id).filter(one => one.status === "blocked");
|
|
@@ -1937,7 +1762,6 @@ function waitingRevision(store, task, asked) {
|
|
|
1937
1762
|
throw Error("That plan revision isn't waiting on a decision.");
|
|
1938
1763
|
return found;
|
|
1939
1764
|
}
|
|
1940
|
-
/** A finding follows its task's family, so every project the family reaches must be in reach (findings.ts, one gate). */
|
|
1941
1765
|
function familyWithin(store, who, task) {
|
|
1942
1766
|
if (familyInReach(store, who, task) === null)
|
|
1943
1767
|
throw Error("This task's work reaches a project outside your access here.");
|
|
@@ -2030,7 +1854,6 @@ function parityAction(store, who, operation, input, repo, flow, now, request, ro
|
|
|
2030
1854
|
throw Error("Name schedules from this flow's own list.");
|
|
2031
1855
|
if (covered.length === 0)
|
|
2032
1856
|
throw Error("Choose a schedule to include: this flow's schedules bring in outside content, so none is covered unless you pick it.");
|
|
2033
|
-
// Every project its work files in: the person must reach each, and each is named and checked at the yes.
|
|
2034
1857
|
const repos = [...new Set([flow.repo, ...workReposOf(flow)])];
|
|
2035
1858
|
if (repos.some(one => !who.repos.includes(one) || !store.accountCanAccess(who.name, one)))
|
|
2036
1859
|
throw Error("This flow files work in a project outside your access here.");
|
|
@@ -2076,7 +1899,6 @@ function parityAction(store, who, operation, input, repo, flow, now, request, ro
|
|
|
2076
1899
|
const proposal = listProposals(store, repo).find(one => one.id === id);
|
|
2077
1900
|
if (proposal === undefined)
|
|
2078
1901
|
throw Error("That proposal isn't waiting any more.");
|
|
2079
|
-
// A lesson note is accepted in the person's own words (memory-pass.ts): never a model's, so never from a card.
|
|
2080
1902
|
if (decision === "accept" && lessonNoteOf(store, id) !== null)
|
|
2081
1903
|
throw Error("A lesson note is accepted in your own words: write it on the Knowledge page.");
|
|
2082
1904
|
return { state: { proposal: id }, title: `${decision === "accept" ? "Accept" : "Reject"} a memory proposal`, terms: [proposal.title, ...(proposal.beforeText === null ? [] : [`Was: ${proposal.beforeText}`]), `Becomes: ${proposal.afterText}`, `Why: ${proposal.rationale}`, decision === "accept" ? "Later agent sessions in this project read this." : "Nothing is added to project memory."] };
|
|
@@ -2085,12 +1907,9 @@ function parityAction(store, who, operation, input, repo, flow, now, request, ro
|
|
|
2085
1907
|
throw Error("Choose an available action.");
|
|
2086
1908
|
}
|
|
2087
1909
|
}
|
|
2088
|
-
/** Where a yes came from, in the words the other chat approvals' ledger lines use. */
|
|
2089
1910
|
const approvalRoad = (options) => `via ${options.via}${options.binding === undefined ? "" : ` · chat binding #${options.binding}`}`;
|
|
2090
|
-
/** The approvals added last: the console's own write, after the same question every approval asks. */
|
|
2091
1911
|
function runLateApproval(store, who, payload, byFor, road, now) {
|
|
2092
1912
|
const req = payload.request, actor = who.name, by = byFor(payload.repo);
|
|
2093
|
-
// Rejecting lowers: it takes a person's yes, not their approving setting.
|
|
2094
1913
|
if (by.ok === false && payload.operation !== "revision_reject")
|
|
2095
1914
|
throw Error(by.why);
|
|
2096
1915
|
if (payload.operation === "task_reopen") {
|
|
@@ -2101,7 +1920,6 @@ function runLateApproval(store, who, payload, byFor, road, now) {
|
|
|
2101
1920
|
}
|
|
2102
1921
|
if (payload.operation === "flow_unattended") {
|
|
2103
1922
|
const ask = payload.state["ask"];
|
|
2104
|
-
// The person's own setting holds in every project this flow's work files in, not only its own.
|
|
2105
1923
|
for (const repo of payload.state["repos"]) {
|
|
2106
1924
|
const here = byFor(repo);
|
|
2107
1925
|
if (here.ok === false)
|
|
@@ -2115,7 +1933,6 @@ function runLateApproval(store, who, payload, byFor, road, now) {
|
|
|
2115
1933
|
return { ok: true, taskId: null, said: `Runs on its own until ${untilWords(signed.grant.absoluteExpiry)}.`, href: `/flows/${Number(req["flow"])}` };
|
|
2116
1934
|
}
|
|
2117
1935
|
const task = String(req["task"]), revision = waitingRevision(store, task, req["revision"]), accept = payload.operation === "revision_accept";
|
|
2118
|
-
// A saved limit can't be read against a change of authority: that one opens in Toolroll.
|
|
2119
1936
|
if (accept && by.ok && revision.authorityKind === "authority-change" && (!by.limits.fullAccess || by.limits.capMicrousd !== null))
|
|
2120
1937
|
throw Error("This revision changes what was approved, beyond your chat approval limits. Open it in Toolroll.");
|
|
2121
1938
|
if (!store.resolvePlanRevision(revision.id, accept ? "applied" : "rejected", actor, now))
|
|
@@ -2123,7 +1940,6 @@ function runLateApproval(store, who, payload, byFor, road, now) {
|
|
|
2123
1940
|
store.releaseOwnedHold("revision", String(revision.id));
|
|
2124
1941
|
return { ok: true, taskId: task, said: accept ? "Revision accepted." : "Revision rejected." };
|
|
2125
1942
|
}
|
|
2126
|
-
/** Each runs the write the console's own handler calls, as this person, inside the confirm door's transaction. */
|
|
2127
1943
|
function runParityAction(store, who, payload, now, root) {
|
|
2128
1944
|
const req = payload.request, actor = who.name, repo = payload.repo;
|
|
2129
1945
|
const done = (said, href, taskId = null) => ({ ok: true, taskId, said, ...(href === undefined ? {} : { href }) });
|
|
@@ -2134,7 +1950,6 @@ function runParityAction(store, who, payload, now, root) {
|
|
|
2134
1950
|
const sent = payload.operation === "finding_resend" ? resendFinding(store, Number(req["finding"]), now)
|
|
2135
1951
|
: req["pointer"] !== undefined ? sendReviewFinding(store, task, String(req["pointer"]), actor, now)
|
|
2136
1952
|
: req["run"] !== undefined ? sendCheckFinding(store, root ?? "", task, Number(req["run"]), actor, now)
|
|
2137
|
-
// The lead drafted these words and the person confirmed them: recorded as the lead's, sent by the person.
|
|
2138
1953
|
: sendFinding(store, { taskId: task, source: "lead", by: actor, summary: String(req["summary"]), file: typeof req["file"] === "string" ? req["file"] : null, line: typeof req["line"] === "number" ? req["line"] : null }, now);
|
|
2139
1954
|
if (!sent.ok)
|
|
2140
1955
|
throw Error(sent.message);
|