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-decide.js
CHANGED
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
/** Decisions finish in the chat app. A pushed card about a result, a failed task, a plan waiting for approval or a
|
|
2
|
-
* pull request ready to merge carries buttons that act in place: Accept and finish, Request changes, Retry,
|
|
3
|
-
* Approve & start, Merge. Every act that changes something asks twice ("Accept and finish 'X'? [Yes] [Cancel]"),
|
|
4
|
-
* and each button is one opaque token bound to the exact result, receipt, plan or commit the card showed: a card a
|
|
5
|
-
* newer result, a finished task or a changed plan has overtaken says so and acts on nothing.
|
|
6
|
-
*
|
|
7
|
-
* A person with the authority approves a plan or merges from their own linked chat by default (owner's decision,
|
|
8
|
-
* docs/plans/toolroll-cards.md); their own off or limits (chat-approval.ts) and a signed mode's chatApprove term still
|
|
9
|
-
* hold. A tap is theirs alone, and the card binds it to the exact terms. The change requests one youiyoux pass filed come as one card that shows every word of each
|
|
10
|
-
* task's terms, with Approve all and each one's own Approve (the requests card, below).
|
|
11
|
-
*
|
|
12
|
-
* The same in every chat app: Telegram's bridge and the shared engine Slack, Discord and Teams run on (chat-delivery.ts)
|
|
13
|
-
* offer, mint and answer these through the same tokens (the `channel` column). Every act runs through the door the
|
|
14
|
-
* console uses. */
|
|
15
1
|
import { routeChangeOf } from "./route-change.js";
|
|
16
2
|
import { CONFIRM_TTL_MS, NIGHTLY_CHECK_ONLY, RELEASE_MERGES_ONLY, nightlyTaskRef, releaseTaskRef } from "./store.js";
|
|
17
3
|
import { isAcpProfile } from "./acp-agents.js";
|
|
@@ -40,7 +26,6 @@ import { FILED_PER_PASS, requestKindWord, requestPassOf } from "./youiyoux-intak
|
|
|
40
26
|
import { discordPlain } from "./reply-shape.js";
|
|
41
27
|
import { PLATFORM_LIMITS } from "./text-limits.js";
|
|
42
28
|
export { permissionPlainWords };
|
|
43
|
-
/** The words, said once. */
|
|
44
29
|
export const DECIDE_LABELS = {
|
|
45
30
|
accept: "Accept",
|
|
46
31
|
changes: "Send back",
|
|
@@ -49,9 +34,7 @@ export const DECIDE_LABELS = {
|
|
|
49
34
|
"not-now": "Not now",
|
|
50
35
|
merge: "Merge",
|
|
51
36
|
look: "Look first",
|
|
52
|
-
/** A result's one link (docs/plans/plain-toolroll.md P1.5). */
|
|
53
37
|
open: "Open result",
|
|
54
|
-
/** A plan card's one button: it shows the full terms, and the Approve sits under them. Never an approval itself. */
|
|
55
38
|
review: "Review plan",
|
|
56
39
|
details: "Details",
|
|
57
40
|
edit: "Edit",
|
|
@@ -65,23 +48,15 @@ export const WHAT_SHOULD_CHANGE = "What should change?";
|
|
|
65
48
|
const sha = (text) => createHash("sha256").update(text).digest("hex");
|
|
66
49
|
const isAct = (one) => "act" in one;
|
|
67
50
|
const title = (store, taskId) => phoneText(chatTitle(store, taskId), 60);
|
|
68
|
-
// ---- the chatApprove term ----------------------------------------------------------
|
|
69
51
|
export { chatApproveMode };
|
|
70
52
|
const money = (micro) => `$${(micro / 1_000_000).toFixed(2)}`;
|
|
71
|
-
|
|
72
|
-
* Toolroll instead. `digest` binds the scope and the plan document the card shows. */
|
|
73
|
-
export function planInChat(store, taskId, approver, now, channel, root,
|
|
74
|
-
/** A youiyoux card asking (requestsOffer): its own words are checked there, every one shown. */
|
|
75
|
-
from) {
|
|
76
|
-
// A change request's terms are outside text: they approve in chat only on its own card, which shows every word.
|
|
53
|
+
export function planInChat(store, taskId, approver, now, channel, root, from) {
|
|
77
54
|
if (from !== "requests" && store.filedViaOf(taskId) === YOUIYOUX_FILED_VIA)
|
|
78
55
|
return { ok: false, why: OUTSIDE_TERMS };
|
|
79
56
|
const ref = store.lookupRef(taskId);
|
|
80
57
|
const scope = store.getScope(taskId);
|
|
81
58
|
if (ref === null || ref.repo === null || scope === null)
|
|
82
59
|
return { ok: false, why: "This plan isn't available now." };
|
|
83
|
-
// Approved only as dispatch reads it (approval policy): an old seal a lead token made, or one whose authority has
|
|
84
|
-
// ended, is no approval, so the person can approve it here.
|
|
85
60
|
if (approvalOf(scope).approved && store.modeApprovalLive(ref.id, now))
|
|
86
61
|
return { ok: false, why: "This plan is already approved." };
|
|
87
62
|
if (ref.plan === "requested")
|
|
@@ -94,7 +69,6 @@ from) {
|
|
|
94
69
|
const family = store.taskFamilyOf(taskId, [ref.repo], false);
|
|
95
70
|
if (family === null || family.problem !== null || family.current.id !== taskId)
|
|
96
71
|
return { ok: false, why: "A newer version of this task is current." };
|
|
97
|
-
// Terms a machine wrote, or checks that reach past the sandbox: a person reads every word before a yes, so the card shows them whole.
|
|
98
72
|
const whole = ref.coordinatorCid !== null || quarantinedAuthor(scope.proposedVia ?? null);
|
|
99
73
|
if (scope.profileState === "unresolved" || scope.routeEra == null || (scope.termsProblem ?? null) !== null)
|
|
100
74
|
return { ok: false, why: "This plan can't say exactly which agents run, so you approve it in Toolroll." };
|
|
@@ -106,7 +80,6 @@ from) {
|
|
|
106
80
|
return { ok: false, why: gateWords(gate) };
|
|
107
81
|
if (store.scopePolicyRefusal(taskId) !== null)
|
|
108
82
|
return { ok: false, why: "Your organisation's policy needs this plan approved in Toolroll." };
|
|
109
|
-
// A revision approves only against notes that still verify, as on the console.
|
|
110
83
|
if (ref.revisionBriefArtifact !== null) {
|
|
111
84
|
const brief = store.getArtifact(ref.revisionBriefArtifact);
|
|
112
85
|
let verified = false;
|
|
@@ -119,7 +92,6 @@ from) {
|
|
|
119
92
|
if (!verified)
|
|
120
93
|
return { ok: false, why: "This revision's notes can't be verified here, so you approve it in Toolroll." };
|
|
121
94
|
}
|
|
122
|
-
// The plan the card shows must be the saved one, verified, as the console's approval reads it.
|
|
123
95
|
const plan = store.latestPlanArtifact(ref.id);
|
|
124
96
|
if (plan !== null) {
|
|
125
97
|
let verified = false;
|
|
@@ -132,16 +104,12 @@ from) {
|
|
|
132
104
|
if (!verified)
|
|
133
105
|
return { ok: false, why: "The saved plan can't be verified here, so you approve it in Toolroll." };
|
|
134
106
|
}
|
|
135
|
-
// Terms shown whole are part of what the card is bound to, so the digest kept on its buttons covers those words.
|
|
136
107
|
return { ok: true, modeDigest: mode.digest, source: mode.source, scope, whole, digest: sha(`${scope.digest}:${plan?.sha256 ?? ""}${whole ? `:${cardTermsDigest(scopeTermsText(scope))}` : ""}`) };
|
|
137
108
|
}
|
|
138
|
-
/** A ready pull request this person's chat may merge now, bound to the exact commit. */
|
|
139
109
|
export function mergeInChat(store, taskId, run, approver, now, channel) {
|
|
140
110
|
const ref = store.lookupRef(taskId);
|
|
141
|
-
// The nightly check of main never merges (release-once.md, part 3).
|
|
142
111
|
if (ref !== null && nightlyTaskRef(store, ref.id))
|
|
143
112
|
return { ok: false, why: NIGHTLY_CHECK_ONLY };
|
|
144
|
-
// A release's result merges only through its coordinator.
|
|
145
113
|
if (ref !== null && releaseTaskRef(store, ref.id))
|
|
146
114
|
return { ok: false, why: RELEASE_MERGES_ONLY };
|
|
147
115
|
const publication = store.publicationForRun(run);
|
|
@@ -157,20 +125,10 @@ export function mergeInChat(store, taskId, run, approver, now, channel) {
|
|
|
157
125
|
return mode;
|
|
158
126
|
return { ok: true, modeDigest: mode.digest, source: mode.source, head: publication.headSha };
|
|
159
127
|
}
|
|
160
|
-
// ---- a youiyoux pass's card -----------------------------------------------------------------
|
|
161
|
-
/**
|
|
162
|
-
* What one youiyoux pass filed (youiyoux-intake.ts), as one card: every task still waiting on this person, Approve all,
|
|
163
|
-
* and each one's own Approve and Open. Its terms are outside text (anyone who can write the project's folder wrote
|
|
164
|
-
* them), so a task is approved here only when this card shows every word of its terms (chat-terms.ts), the whole card
|
|
165
|
-
* arrives as one message every chat app shows as written, and every plan rule holds (planInChat). Its button carries
|
|
166
|
-
* each task with the digest of the words shown; the seal recomputes that digest from the live scope (store.ts). A task
|
|
167
|
-
* that can't be shown whole, or may not be approved here, is named with its link to Toolroll instead.
|
|
168
|
-
*/
|
|
169
128
|
const REQUESTS_DIGEST = "youiyoux:";
|
|
170
129
|
const OPEN_IN_TOOLROLL = "Open in Toolroll";
|
|
171
130
|
const OUTSIDE_TERMS = "A youiyoux request is approved from its own youiyoux card, which shows every word, or in Toolroll.";
|
|
172
131
|
const TOO_LONG = "its full terms don't fit in one chat message";
|
|
173
|
-
/** Room left under each app's limit for the question a tap adds ("Approve 10 tasks?") and the names it leaves out. */
|
|
174
132
|
const ROOM = 400;
|
|
175
133
|
const listedDigest = (list) => `${REQUESTS_DIGEST}${list.map(one => `${one.taskId}=${one.digest}`).join(",")}`;
|
|
176
134
|
const LISTABLE_ID = /^[A-Za-z0-9._-]{1,64}$/;
|
|
@@ -186,9 +144,6 @@ function listedOf(digest) {
|
|
|
186
144
|
}
|
|
187
145
|
return list.length === 0 || list.length > FILED_PER_PASS ? null : list;
|
|
188
146
|
}
|
|
189
|
-
/** Whether a card's words arrive as one message that shows each of them as written: within Telegram's part, Slack's and
|
|
190
|
-
* (after its escapes) Discord's limits, with room for the question a tap adds. Teams draws card text as Markdown, where
|
|
191
|
-
* a link's label hides its address, and Slack turns `:name:` into an emoji: there such words never approve. */
|
|
192
147
|
export function shownWhole(text, channel) {
|
|
193
148
|
if (!shownAsWritten(text, channel))
|
|
194
149
|
return false;
|
|
@@ -199,18 +154,14 @@ export function shownWhole(text, channel) {
|
|
|
199
154
|
case "teams": return false;
|
|
200
155
|
}
|
|
201
156
|
}
|
|
202
|
-
/** Words a chat message never carries (chat-display.ts hides them elsewhere): a key, or an absolute folder on this
|
|
203
|
-
* computer (a home folder, a drive). A project's own relative paths and a page's route are fine. */
|
|
204
157
|
function privateWords(text) {
|
|
205
158
|
return scanForSecrets(text).length > 0 || /\b\d{5,}:[A-Za-z0-9_-]{20,}\b/.test(text) || /(?:^|[\s"'`(<[=:,])(?:\/Users\/|\/home\/|\/root\/|~\/)|(?:[A-Za-z]:[\\/]|\\\\)/.test(text);
|
|
206
159
|
}
|
|
207
|
-
/** Still waiting on a person's yes: not finished, and no approval on its current terms. */
|
|
208
160
|
function waitsForApproval(store, taskId) {
|
|
209
161
|
const state = store.getTask(taskId)?.state;
|
|
210
162
|
const scope = store.getScope(taskId);
|
|
211
163
|
return state !== undefined && state !== "done" && state !== "cancelled" && scope !== null && !(scope.approvedDigest != null && scope.approvedDigest === scope.digest);
|
|
212
164
|
}
|
|
213
|
-
/** The card for the pass `taskId` was filed in, as it stands for this person now; null when nothing waits on them. */
|
|
214
165
|
function requestsOffer(store, taskId, who, now, channel, root, said) {
|
|
215
166
|
const waiting = requestPassOf(store, taskId).filter(id => {
|
|
216
167
|
const ref = store.lookupRef(id);
|
|
@@ -232,10 +183,8 @@ function requestsOffer(store, taskId, who, now, channel, root, said) {
|
|
|
232
183
|
...(open.length === 0 ? [] : [[...(shown.length === 0 ? [] : ["Open in Toolroll to approve:"]), ...open.map(one => `${one.n}. ${one.name}${one.why === null ? "" : `: ${one.why}`}`)].join("\n")])].join("\n\n");
|
|
233
184
|
};
|
|
234
185
|
if (!mode.ok) {
|
|
235
|
-
// Nothing approves here: each task's title, files and goal in short, and its link.
|
|
236
186
|
const summary = items.map(one => {
|
|
237
187
|
const scope = store.getScope(one.taskId);
|
|
238
|
-
// The request's own goal, without the line the intake puts first (which request, on which route).
|
|
239
188
|
const goal = scope.goal.startsWith("From youiyoux request ") && scope.goal.includes("\n\n") ? scope.goal.slice(scope.goal.indexOf("\n\n") + 2) : scope.goal;
|
|
240
189
|
return [`${one.n}. ${one.name}`, `Files: ${scope.touches.length === 0 ? "any file (no file list)" : phoneText(scope.touches.join(", "), 160)}`, phoneText(goal, 200)].join("\n");
|
|
241
190
|
});
|
|
@@ -252,12 +201,10 @@ function requestsOffer(store, taskId, who, now, channel, root, said) {
|
|
|
252
201
|
item.why = "it needs your password in Toolroll";
|
|
253
202
|
continue;
|
|
254
203
|
}
|
|
255
|
-
// Shown whole means shown raw: words chat text otherwise hides (a key, a folder on this computer) stay in Toolroll.
|
|
256
204
|
if (privateWords(scopeTermsText(plan.scope))) {
|
|
257
205
|
item.why = "its terms name a key or a folder on this computer";
|
|
258
206
|
continue;
|
|
259
207
|
}
|
|
260
|
-
// In order, each whole or not at all: one that doesn't fit beside the ones before it is named instead.
|
|
261
208
|
item.listed = { taskId: item.taskId, digest: shownTermsDigest(plan.scope) };
|
|
262
209
|
if (!shownWhole(compose(), channel)) {
|
|
263
210
|
item.listed = null;
|
|
@@ -275,8 +222,6 @@ function requestsOffer(store, taskId, who, now, channel, root, said) {
|
|
|
275
222
|
}
|
|
276
223
|
return { text: compose(), rows };
|
|
277
224
|
}
|
|
278
|
-
/** The tasks a youiyoux card's button names, as they stand now: each still waiting, within every rule, on exactly the
|
|
279
|
-
* words the card showed (ready), or named with why not (skipped). */
|
|
280
225
|
function requestsNow(store, tokenTask, digest, who, now, channel, root) {
|
|
281
226
|
const listed = listedOf(digest);
|
|
282
227
|
const repo = store.lookupRef(tokenTask)?.repo ?? null;
|
|
@@ -311,13 +256,9 @@ function requestsNow(store, tokenTask, digest, who, now, channel, root) {
|
|
|
311
256
|
}
|
|
312
257
|
return { ok: true, ready, skipped };
|
|
313
258
|
}
|
|
314
|
-
/** The owner's own yes from chat, sealed as theirs ("chat"), never as a mode's: it stands like the console's after the
|
|
315
|
-
* mode or setting ends. `terms`: the digest of every word a youiyoux card showed, which the seal checks. */
|
|
316
259
|
function sealPlanInChat(store, who, seat, repo, taskId, plan, now, terms) {
|
|
317
260
|
if (!store.sealScopeApproval(taskId, who.name, now, {}, { kind: "chat", modeDigest: plan.modeDigest, ...(terms === undefined ? {} : { card: "terms", cardDigest: terms }) }))
|
|
318
261
|
return false;
|
|
319
|
-
// The person's proof beside the seal, bound to these exact words (approval policy §1.2): a paired-chat tap, never a
|
|
320
|
-
// password. Release, deploy and the protected counters read it as a person's.
|
|
321
262
|
const sealedDigest = store.getScope(taskId)?.approvedDigest ?? "";
|
|
322
263
|
store.recordAction({ at: now.toISOString(), actor: who.name, repo, taskId, runId: null, action: APPROVAL_PROOF, outcome: "chat",
|
|
323
264
|
source: "request", detail: approvalProofDetail(now.getTime(), store.accountOf(who.name)?.generation ?? 0, sealedDigest) });
|
|
@@ -325,8 +266,6 @@ function sealPlanInChat(store, who, seat, repo, taskId, plan, now, terms) {
|
|
|
325
266
|
source: "request", detail: `via ${seat.channel} · chat binding #${seat.binding} · ${plan.source} ${plan.modeDigest}${terms === undefined ? "" : ` · youiyoux card, terms ${terms}`}` });
|
|
326
267
|
return true;
|
|
327
268
|
}
|
|
328
|
-
/** A youiyoux card's yes: each task it names that still stands as shown is sealed, each with its own proof; the rest are
|
|
329
|
-
* named, never approved. The card then offers what still waits, so one can be approved after another. */
|
|
330
269
|
function approveRequests(store, seat, who, tokenTask, digest, target, body, message, root, now) {
|
|
331
270
|
const read = requestsNow(store, tokenTask, digest, who, now, seat.channel, root);
|
|
332
271
|
if (!read.ok)
|
|
@@ -347,8 +286,6 @@ function approveRequests(store, seat, who, tokenTask, digest, target, body, mess
|
|
|
347
286
|
return { ack, edit: { text: `${body}\n\n${said}`, rows: skipped.length === 0 ? [] : linksFor(target), tokens: [] } };
|
|
348
287
|
return { ack, edit: { text: again.text ?? said, ...mintDecideButtons(store, seat, target, again, now, message) } };
|
|
349
288
|
}
|
|
350
|
-
/** The plan card: title, goal in two lines, what changes, done when, and what the yes allows. On Telegram the yes's
|
|
351
|
-
* terms come second, under the title, and the steps are fewer: the full plan is behind Edit. */
|
|
352
289
|
export function planCardText(store, taskId, scope, root, channel) {
|
|
353
290
|
const ref = store.lookupRef(taskId);
|
|
354
291
|
const artifact = ref === null ? null : store.latestPlanArtifact(ref.id);
|
|
@@ -365,12 +302,10 @@ export function planCardText(store, taskId, scope, root, channel) {
|
|
|
365
302
|
}
|
|
366
303
|
}
|
|
367
304
|
const bullets = (items, cap) => [...items.slice(0, cap).map(one => `• ${phoneText(one, 120)}`), ...(items.length > cap ? [`• and ${items.length - cap} more`] : [])];
|
|
368
|
-
// The goal in two lines at most: its first two, each kept short.
|
|
369
305
|
const goal = scope.goal.split("\n").filter(one => one.trim() !== "").slice(0, 2).map(one => phoneText(one, 160));
|
|
370
306
|
const allowing = [permissionPlainWords(scope.profile), scope.budgetMicrousd === null ? "no attempt limit" : `up to ${money(scope.budgetMicrousd)} per attempt`]
|
|
371
307
|
.filter((one) => one !== null);
|
|
372
308
|
const changed = routeChangeOf(store, taskId);
|
|
373
|
-
// Fallback agents are terms: in full on every card, near the top, and never cut.
|
|
374
309
|
const chain = chainTermsLines(scope);
|
|
375
310
|
if (channel === "telegram") {
|
|
376
311
|
return [
|
|
@@ -404,23 +339,18 @@ export function planCardText(store, taskId, scope, root, channel) {
|
|
|
404
339
|
`You're allowing: ${allowing.join(" · ")}`,
|
|
405
340
|
].join("\n");
|
|
406
341
|
}
|
|
407
|
-
// ---- what a card offers ---------------------------------------------------------------
|
|
408
|
-
/** The acts a card about this target can take in chat right now, or null when none can (the card keeps its own
|
|
409
|
-
* link). Reads only; nothing is minted. */
|
|
410
342
|
export function decideOffer(store, target, who, now, channel, root) {
|
|
411
343
|
const ref = store.lookupRef(target.taskId);
|
|
412
344
|
if (ref === null || ref.repo === null || !who.repos.includes(ref.repo))
|
|
413
345
|
return null;
|
|
414
346
|
switch (target.kind) {
|
|
415
347
|
case "result": {
|
|
416
|
-
// Accepting and requesting changes read the saved result: without it, the card keeps its link.
|
|
417
348
|
if (root === undefined)
|
|
418
349
|
return null;
|
|
419
350
|
const fresh = resultFresh(store, target.taskId, target.run, who, now, root);
|
|
420
351
|
if (!fresh.ok)
|
|
421
352
|
return null;
|
|
422
353
|
const look = { label: DECIDE_LABELS.open, path: chatResultHref(target.taskId, target.run, "changes") };
|
|
423
|
-
// A result accepted only with a reason ("Accept anyway") keeps its link: the reason is typed on the result.
|
|
424
354
|
if (fresh.exception)
|
|
425
355
|
return null;
|
|
426
356
|
return { text: null, rows: [[{ act: "accept", run: target.run, digest: fresh.receipt }, { act: "changes", run: target.run, digest: fresh.source }], [look]] };
|
|
@@ -436,8 +366,6 @@ export function decideOffer(store, target, who, now, channel, root) {
|
|
|
436
366
|
if (!plan.ok)
|
|
437
367
|
return null;
|
|
438
368
|
const release = deployGateScope(plan.scope);
|
|
439
|
-
// Checks beyond the sandbox seal only on the person's password (store.ts sealScopeApproval): the card says so and
|
|
440
|
-
// links to the approval in Toolroll, and offers no Continue or Approve that would dead-end. A release or a plan.
|
|
441
369
|
if (passwordOnlySeal(plan.scope)) {
|
|
442
370
|
let head;
|
|
443
371
|
try {
|
|
@@ -449,7 +377,6 @@ export function decideOffer(store, target, who, now, channel, root) {
|
|
|
449
377
|
}
|
|
450
378
|
return { text: [...head, "", needsFullCard(plan.scope)].join("\n"), rows: [[{ label: "Approve in Toolroll", path: chatControlHref("approval", target.taskId) }]] };
|
|
451
379
|
}
|
|
452
|
-
// A deploy gate is approved from chat only through its release card (chat-management.md §0a.5).
|
|
453
380
|
if (release) {
|
|
454
381
|
const release = releaseInChat(store, target.taskId, who.name, now, channel, "offer", root);
|
|
455
382
|
if (!release.ok)
|
|
@@ -459,8 +386,6 @@ export function decideOffer(store, target, who, now, channel, root) {
|
|
|
459
386
|
rows: [[{ act: "approve", run: null, digest: releaseDigest(card), label: "Continue" }], [{ label: DECIDE_LABELS.edit, path: chatControlHref("approval", target.taskId) }, { act: "not-now", run: null, digest: releaseDigest(card) }]],
|
|
460
387
|
...(channel === "telegram" ? { file: { name: card.fileName, text: card.full } } : {}) };
|
|
461
388
|
}
|
|
462
|
-
// One line, one button and Details (docs/plans/plain-toolroll.md P1.5): Review plan shows the full terms in the
|
|
463
|
-
// card, and only there does Approve appear, bound to the same digest.
|
|
464
389
|
return { text: planLineOf(store, target.taskId, ref.id),
|
|
465
390
|
rows: [[{ act: "approve", run: null, digest: plan.digest, label: DECIDE_LABELS.review }], [{ label: DECIDE_LABELS.details, path: chatControlHref("approval", target.taskId) }]] };
|
|
466
391
|
}
|
|
@@ -473,7 +398,6 @@ export function decideOffer(store, target, who, now, channel, root) {
|
|
|
473
398
|
}
|
|
474
399
|
}
|
|
475
400
|
}
|
|
476
|
-
/** Is the result the card showed still the one waiting to be finished? */
|
|
477
401
|
function resultFresh(store, taskId, run, who, now, root) {
|
|
478
402
|
const assignment = assignmentOf(store, taskId, now, { principal: "operator", repos: who.repos }, root);
|
|
479
403
|
if (assignment === null)
|
|
@@ -495,7 +419,6 @@ function retryStamp(store, taskId, who) {
|
|
|
495
419
|
const stamp = chatTaskStamp(store, who, taskId);
|
|
496
420
|
return stamp === null ? null : sha(stamp);
|
|
497
421
|
}
|
|
498
|
-
/** One fingerprint of what the card offers, without its tokens: a repaint with the same offer keeps its buttons. */
|
|
499
422
|
export function offerFingerprint(offer) {
|
|
500
423
|
return sha(JSON.stringify(offer));
|
|
501
424
|
}
|
|
@@ -512,7 +435,6 @@ function mint(store, seat, message, spec, taskId, phase, now) {
|
|
|
512
435
|
VALUES (?,?,?,?,?,?,?,?,?,?,?,?)`).run(token, seat.channel, seat.binding, seat.chat, message, spec.act, phase, taskId, spec.run, spec.digest, now.toISOString(), new Date(now.getTime() + (phase === "offer" ? OFFER_TTL_MS : CONFIRM_TTL_MS)).toISOString());
|
|
513
436
|
return token;
|
|
514
437
|
}
|
|
515
|
-
/** The card's buttons, minted now (message unknown until it is sent: `placeDecideTokens` puts them on it). */
|
|
516
438
|
export function mintDecideButtons(store, seat, target, offer, now, message = null) {
|
|
517
439
|
const tokens = [];
|
|
518
440
|
const rows = offer.rows.map(row => row.map((one) => {
|
|
@@ -524,25 +446,20 @@ export function mintDecideButtons(store, seat, target, offer, now, message = nul
|
|
|
524
446
|
}));
|
|
525
447
|
return { rows, tokens };
|
|
526
448
|
}
|
|
527
|
-
/** Put freshly minted tokens on the message they ride: a tap on any other message proves itself stale. */
|
|
528
449
|
export function placeDecideTokens(store, tokens, message) {
|
|
529
450
|
const place = store.handle.prepare("UPDATE chat_decide_action SET message = ? WHERE token = ? AND message IS NULL");
|
|
530
451
|
for (const token of tokens)
|
|
531
452
|
place.run(message, token);
|
|
532
453
|
}
|
|
533
|
-
/** Every live button on one message stops working: the card was repainted, or one of its acts was taken. */
|
|
534
454
|
export function retireDecideTokens(store, channel, chat, message, now) {
|
|
535
455
|
store.handle.prepare("UPDATE chat_decide_action SET consumed_at = ? WHERE channel = ? AND chat = ? AND message = ? AND consumed_at IS NULL")
|
|
536
456
|
.run(now.toISOString(), channel, chat, message);
|
|
537
457
|
}
|
|
538
|
-
/** Buttons minted for a send or an edit that didn't land: they never act. */
|
|
539
458
|
export function dropDecideTokens(store, tokens, now) {
|
|
540
459
|
const drop = store.handle.prepare("UPDATE chat_decide_action SET consumed_at = ? WHERE token = ? AND consumed_at IS NULL");
|
|
541
460
|
for (const token of tokens)
|
|
542
461
|
drop.run(now.toISOString(), token);
|
|
543
462
|
}
|
|
544
|
-
/** Whether a message still carries a button that acts (an offer, or an armed Yes or Cancel): a card whose acts were
|
|
545
|
-
* all spent, as by Not now, needs fresh ones. */
|
|
546
463
|
export function hasLiveDecideTokens(store, channel, chat, message, now) {
|
|
547
464
|
return store.handle.prepare("SELECT 1 FROM chat_decide_action WHERE channel = ? AND chat = ? AND message = ? AND consumed_at IS NULL AND expires_at > ? LIMIT 1")
|
|
548
465
|
.get(channel, chat, message, now.toISOString()) !== undefined;
|
|
@@ -550,23 +467,13 @@ export function hasLiveDecideTokens(store, channel, chat, message, now) {
|
|
|
550
467
|
export function isDecideToken(store, token) {
|
|
551
468
|
return token.startsWith("d:") && store.handle.prepare("SELECT 1 FROM chat_decide_action WHERE token = ?").get(token) !== undefined;
|
|
552
469
|
}
|
|
553
|
-
/** A release card's acts carry its card digest (release-card.ts), never a plan's. */
|
|
554
470
|
const RELEASE_DIGEST = "release:";
|
|
555
|
-
/** Why a password-only scope (passwordOnlySeal) isn't approved from chat, for a release or a plan. */
|
|
556
471
|
const needsFullCard = (scope) => `This ${deployGateScope(scope) ? "release" : "plan"}'s checks run outside the sandbox, so this card can't approve it. Approve it in Toolroll, or ask your lead for its approval card, which shows every term.`;
|
|
557
|
-
/** Whether only a person's password ceremony seals this scope (store.ts sealScopeApproval): checks that reach beyond the
|
|
558
|
-
* sandbox (sign-ins, or none at all) or extra macOS services, sealed into its profile. */
|
|
559
472
|
const passwordOnlySeal = (scope) => {
|
|
560
473
|
const profile = scope.profile;
|
|
561
474
|
return profile != null && (profile["checkAccess"] !== undefined || profile["machLookup"] !== undefined);
|
|
562
475
|
};
|
|
563
476
|
const releaseDigest = (card) => `${RELEASE_DIGEST}${card.digest}`;
|
|
564
|
-
/**
|
|
565
|
-
* Whether a release card's tap comes from the person's own private chat with Toolroll (chat-management.md §0a.5), from
|
|
566
|
-
* the binding's own record, failing closed: Telegram, a private chat (a positive id, which Telegram makes equal to the
|
|
567
|
-
* user's own id) that is the binding's chat and its user's; Slack, a direct-message channel (D…) that is the binding's.
|
|
568
|
-
* Any other chat app, a missing chat or binding, or another person's binding is not.
|
|
569
|
-
*/
|
|
570
477
|
export function privateReleaseChat(store, seat) {
|
|
571
478
|
const row = store.handle.prepare("SELECT member, channel, approver FROM chat_binding WHERE provider = ? AND id = ? AND revoked IS NULL").get(seat.channel, seat.binding);
|
|
572
479
|
if (row === undefined || String(row["approver"]) !== seat.approver || seat.chat !== String(row["channel"]))
|
|
@@ -577,15 +484,7 @@ export function privateReleaseChat(store, seat) {
|
|
|
577
484
|
return /^D[A-Z0-9]+$/.test(seat.chat);
|
|
578
485
|
return false;
|
|
579
486
|
}
|
|
580
|
-
|
|
581
|
-
* A deploy gate this person may approve from this chat now, through its release card: every plain-plan rule
|
|
582
|
-
* (planInChat: their Approve from chat setting and limits, no coordinator-, lead- or scout-written text, organisation
|
|
583
|
-
* policy, protected work), never a nightly check, only in their private chat, and the card as the live records say
|
|
584
|
-
* it now (chat-management.md §0a.5).
|
|
585
|
-
*/
|
|
586
|
-
export function releaseInChat(store, taskId, approver, now, channel,
|
|
587
|
-
/** The seat a tap came from, checked strictly; "offer" only where the card is drawn for the binding's own chat (no act). */
|
|
588
|
-
seat, root) {
|
|
487
|
+
export function releaseInChat(store, taskId, approver, now, channel, seat, root) {
|
|
589
488
|
const plan = planInChat(store, taskId, approver, now, channel, root);
|
|
590
489
|
if (!plan.ok)
|
|
591
490
|
return plan;
|
|
@@ -605,7 +504,6 @@ seat, root) {
|
|
|
605
504
|
catch {
|
|
606
505
|
return { ok: false, why: "This release's terms can't be shown here, so you approve it in Toolroll." };
|
|
607
506
|
}
|
|
608
|
-
// What changed is part of what's approved: a list that couldn't be read (or was refused as rewritten history) is no card.
|
|
609
507
|
if (plan.scope.releaseTerms != null && card.changes.commits === null)
|
|
610
508
|
return { ok: false, why: "This release's list of changes couldn't be read, so you approve it in Toolroll." };
|
|
611
509
|
return { ok: true, card, modeDigest: plan.modeDigest, source: plan.source, scope: plan.scope };
|
|
@@ -627,18 +525,11 @@ function targetOf(row) {
|
|
|
627
525
|
default: return { kind: "plan", taskId: row.taskId };
|
|
628
526
|
}
|
|
629
527
|
}
|
|
630
|
-
/** Why the card's act no longer applies, or null while it still does — checked at the offer and again at the yes. */
|
|
631
|
-
/**
|
|
632
|
-
* A release card's terms, then its Approve (Continue, and a release card refreshed after it changed): the full terms
|
|
633
|
-
* (a file on Telegram, where a message is limited; inline elsewhere), Approve and Cancel bound to this card's digest,
|
|
634
|
-
* and on Telegram the card to show instead when the file didn't arrive: no Approve, a Continue to send it again.
|
|
635
|
-
*/
|
|
636
528
|
function releaseContinue(store, seat, message, taskId, name, card, now, ack, lead) {
|
|
637
529
|
const spec = { act: "approve", run: null, digest: releaseDigest(card) };
|
|
638
530
|
const yes = mint(store, seat, message, spec, taskId, "yes", now);
|
|
639
531
|
const cancel = mint(store, seat, message, spec, taskId, "cancel", now);
|
|
640
532
|
const text = `${seat.channel === "telegram" ? card.short : `${card.short}\n\n${card.full}`}${lead === null ? "" : `\n\n${lead}`}`;
|
|
641
|
-
// Telegram carries the terms only as the file: Approve shows only once that file has arrived (telegram.ts).
|
|
642
533
|
const again = seat.channel === "telegram" ? mint(store, seat, message, spec, taskId, "offer", now) : null;
|
|
643
534
|
return { ack, file: { name: card.fileName, text: card.full },
|
|
644
535
|
edit: { text: `${text}\n\nApprove release "${name}"? This approves exactly these terms${seat.channel === "telegram" ? `, every one in ${card.fileName}` : ""}.`,
|
|
@@ -665,7 +556,6 @@ function staleWhy(store, row, who, now, channel, root) {
|
|
|
665
556
|
case "approve":
|
|
666
557
|
case "not-now": {
|
|
667
558
|
if (row.digest.startsWith(RELEASE_DIGEST)) {
|
|
668
|
-
// The button's own seat as it was minted: its binding's chat, checked against the binding's record.
|
|
669
559
|
const release = releaseInChat(store, row.taskId, who.name, now, channel, { channel, binding: row.binding ?? -1, chat: row.chat ?? "", approver: who.name }, root);
|
|
670
560
|
if (!release.ok)
|
|
671
561
|
return release.why;
|
|
@@ -682,7 +572,6 @@ function staleWhy(store, row, who, now, channel, root) {
|
|
|
682
572
|
const plan = planInChat(store, row.taskId, who.name, now, channel, root);
|
|
683
573
|
if (!plan.ok)
|
|
684
574
|
return plan.why;
|
|
685
|
-
// A deploy gate's plain plan card never approves it: only its release card does.
|
|
686
575
|
if (deployGateScope(plan.scope))
|
|
687
576
|
return "This is a release: approve it from its release card.";
|
|
688
577
|
if (passwordOnlySeal(plan.scope))
|
|
@@ -697,7 +586,6 @@ function staleWhy(store, row, who, now, channel, root) {
|
|
|
697
586
|
}
|
|
698
587
|
}
|
|
699
588
|
}
|
|
700
|
-
/** The links a card keeps once its acts are spent or stale: where to look, never a token. */
|
|
701
589
|
export function linksFor(target) {
|
|
702
590
|
switch (target.kind) {
|
|
703
591
|
case "result": return [[{ label: DECIDE_LABELS.open, link: { label: DECIDE_LABELS.open, path: chatResultHref(target.taskId, target.run, "changes") } }]];
|
|
@@ -707,8 +595,6 @@ export function linksFor(target) {
|
|
|
707
595
|
case "requests": return [[{ label: OPEN_IN_TOOLROLL, link: { label: OPEN_IN_TOOLROLL, path: YOUIYOUX_HOME_PATH } }]];
|
|
708
596
|
}
|
|
709
597
|
}
|
|
710
|
-
/** Where a plan card's task is now, for a card whose buttons no longer act: the family's current version, named only
|
|
711
|
-
* inside this person's projects, and linked only while it still waits on them. Never a live button. */
|
|
712
598
|
export function planWhereNow(store, taskId, who, now, root) {
|
|
713
599
|
const family = store.taskFamilyOf(taskId, who.repos, false);
|
|
714
600
|
if (family === null)
|
|
@@ -729,21 +615,15 @@ export function planWhereNow(store, taskId, who, now, root) {
|
|
|
729
615
|
return { said: `"${name}" is under way.`, rows: [] };
|
|
730
616
|
}
|
|
731
617
|
const QUESTION_STARTS = ["Accept \"", "Accept and finish \"", "Retry \"", "Approve and start \"", "Merge \"", "Approve release "];
|
|
732
|
-
/** The card's words without a question this module appended. */
|
|
733
618
|
function cardBody(shown) {
|
|
734
619
|
const at = shown.lastIndexOf("\n\n");
|
|
735
620
|
return at >= 0 && (QUESTION_STARTS.some(start => shown.startsWith(start, at + 2)) || /^Approve \d+ tasks\?/.test(shown.slice(at + 2))) ? shown.slice(0, at) : shown;
|
|
736
621
|
}
|
|
737
|
-
/**
|
|
738
|
-
* One tap on a decide button, inside the caller's transaction. Null: not this module's token. The seat must be the
|
|
739
|
-
* token's own (person, chat, message); a spent, expired or foreign button acts on nothing.
|
|
740
|
-
*/
|
|
741
622
|
export function applyDecideTap(store, seat, input) {
|
|
742
623
|
const raw = input.token.startsWith("d:") ? store.handle.prepare("SELECT * FROM chat_decide_action WHERE token = ?").get(input.token) : undefined;
|
|
743
624
|
if (raw === undefined)
|
|
744
625
|
return null;
|
|
745
626
|
const read = readAction(raw);
|
|
746
|
-
// A saved button that can't be read acts on nothing, and says why.
|
|
747
627
|
if (!read.ok)
|
|
748
628
|
return { ack: `That button can't be read (${read.issues.map(issue => issue.line).join("; ")}). Nothing was done.`, ignored: true };
|
|
749
629
|
const row = read.value;
|
|
@@ -761,17 +641,14 @@ export function applyDecideTap(store, seat, input) {
|
|
|
761
641
|
const name = title(store, row.taskId);
|
|
762
642
|
const body = cardBody(input.shown);
|
|
763
643
|
const spend = () => {
|
|
764
|
-
// This token by its own id (it may never have been placed on a message), then every other button on the card.
|
|
765
644
|
store.handle.prepare("UPDATE chat_decide_action SET consumed_at = ? WHERE token = ? AND consumed_at IS NULL").run(now.toISOString(), row.token);
|
|
766
645
|
retireDecideTokens(store, seat.channel, seat.chat, input.message, now);
|
|
767
646
|
};
|
|
768
|
-
// A plan's card names where its task is now (its newest version, or finished), and links it only while it waits.
|
|
769
647
|
const here = target.kind === "plan" ? planWhereNow(store, row.taskId, who, now, input.root) : null;
|
|
770
648
|
const stale = (why) => {
|
|
771
649
|
spend();
|
|
772
650
|
return { ack: why, edit: { text: `${body}\n\n${why} Nothing was done.${here === null || here.rows.length > 0 && why.startsWith("The plan changed") ? "" : ` ${here.said}`}`, rows: here?.rows ?? linksFor(target), tokens: [] } };
|
|
773
651
|
};
|
|
774
|
-
// An expired button: the card says so and where the work is now, so it is never a dead end; the old button never acts.
|
|
775
652
|
if (row.expiresAt <= now.toISOString()) {
|
|
776
653
|
spend();
|
|
777
654
|
return { ack: "That button expired.", edit: { text: `${body}\n\nThat button expired. Nothing was done.${here === null ? "" : ` ${here.said}`}`, rows: here?.rows ?? linksFor(target), tokens: [] } };
|
|
@@ -786,10 +663,6 @@ export function applyDecideTap(store, seat, input) {
|
|
|
786
663
|
}
|
|
787
664
|
const why = staleWhy(store, row, who, now, seat.channel, input.root);
|
|
788
665
|
if (why !== null) {
|
|
789
|
-
// A release that changed while it was read: the new card, with fresh buttons, so the person reads it again.
|
|
790
|
-
// Through the same gate as Continue: the new terms go first (as a file where the chat app limits a message), and
|
|
791
|
-
// Approve shows only once they arrived; else a Continue to send them again. A release that is now password-only
|
|
792
|
-
// gets its card with the link to Toolroll.
|
|
793
666
|
if (row.digest.startsWith(RELEASE_DIGEST) && row.act === "approve" && why === "This release changed while you were reading.") {
|
|
794
667
|
spend();
|
|
795
668
|
const release = releaseInChat(store, row.taskId, who.name, now, seat.channel, seat, input.root);
|
|
@@ -813,7 +686,6 @@ export function applyDecideTap(store, seat, input) {
|
|
|
813
686
|
return { ack: "Okay, it waits.", edit: { text: `${body}\n\nNot now. It waits for you in Tasks.`,
|
|
814
687
|
rows: [[{ label: DECIDE_LABELS.edit, link: { label: DECIDE_LABELS.edit, path: chatControlHref("approval", row.taskId) } }]], tokens: [] } };
|
|
815
688
|
}
|
|
816
|
-
// A release card's Continue: the card again from the live records, its full terms as a file, then Approve.
|
|
817
689
|
if (row.act === "approve" && row.digest.startsWith(RELEASE_DIGEST)) {
|
|
818
690
|
const release = releaseInChat(store, row.taskId, who.name, now, seat.channel, seat, input.root);
|
|
819
691
|
if (!release.ok)
|
|
@@ -821,7 +693,6 @@ export function applyDecideTap(store, seat, input) {
|
|
|
821
693
|
spend();
|
|
822
694
|
return releaseContinue(store, seat, input.message, row.taskId, name, release.card, now, "Read the terms, then approve.", null);
|
|
823
695
|
}
|
|
824
|
-
// A youiyoux card's Approve: how many still stand as the card showed them, and which don't (named, never approved).
|
|
825
696
|
if (row.act === "approve" && row.digest.startsWith(REQUESTS_DIGEST)) {
|
|
826
697
|
const read = requestsNow(store, row.taskId, row.digest, who, now, seat.channel, input.root);
|
|
827
698
|
if (!read.ok)
|
|
@@ -835,8 +706,6 @@ export function applyDecideTap(store, seat, input) {
|
|
|
835
706
|
return { ack: "Confirm below.", edit: { text: `${body}\n\n${asked}`,
|
|
836
707
|
rows: [[{ label: DECIDE_LABELS.yes, token: yes }, { label: DECIDE_LABELS.cancel, token: cancel }]], tokens: [yes, cancel] } };
|
|
837
708
|
}
|
|
838
|
-
// A plan card's Review plan: the full terms in the card, and under them the Approve (the yes, bound to the same
|
|
839
|
-
// digest the card was minted with, checked again at the tap). Approve is reachable only from here.
|
|
840
709
|
if (row.act === "approve") {
|
|
841
710
|
const plan = planInChat(store, row.taskId, who.name, now, seat.channel, input.root);
|
|
842
711
|
if (!plan.ok)
|
|
@@ -845,13 +714,11 @@ export function applyDecideTap(store, seat, input) {
|
|
|
845
714
|
const spec = { act: "approve", run: null, digest: row.digest };
|
|
846
715
|
const yes = mint(store, seat, input.message, spec, row.taskId, "yes", now);
|
|
847
716
|
const later = mint(store, seat, input.message, { act: "not-now", run: null, digest: row.digest }, row.taskId, "offer", now);
|
|
848
|
-
// Terms a machine wrote go on the card word for word, or the yes isn't to what they say.
|
|
849
717
|
if (plan.whole && scopeTermsText(plan.scope).length > PLATFORM_LIMITS[seat.channel] - ROOM)
|
|
850
718
|
return stale(`This plan's ${TOO_LONG}, so you approve it in Toolroll.`);
|
|
851
719
|
return { ack: "Read the plan, then approve.", edit: { text: `${plan.whole ? `${name}\n\n${scopeTermsText(plan.scope)}` : planCardText(store, row.taskId, plan.scope, input.root, seat.channel)}\n\n${QUESTIONS.approve(name)} This approves exactly this plan.`,
|
|
852
720
|
rows: [[{ label: DECIDE_LABELS.approve, token: yes }], [{ label: DECIDE_LABELS.edit, link: { label: DECIDE_LABELS.edit, path: chatControlHref("approval", row.taskId) } }, { label: DECIDE_LABELS["not-now"], token: later }]], tokens: [yes, later] } };
|
|
853
721
|
}
|
|
854
|
-
// The first tap asks; only the yes acts, bound to exactly what this button was.
|
|
855
722
|
spend();
|
|
856
723
|
const spec = { act: row.act, run: row.run, digest: row.digest };
|
|
857
724
|
const yes = mint(store, seat, input.message, spec, row.taskId, "yes", now);
|
|
@@ -859,7 +726,6 @@ export function applyDecideTap(store, seat, input) {
|
|
|
859
726
|
return { ack: "Confirm below.", edit: { text: `${body}\n\n${QUESTIONS[row.act](name)}`,
|
|
860
727
|
rows: [[{ label: DECIDE_LABELS.yes, token: yes }, { label: DECIDE_LABELS.cancel, token: cancel }]], tokens: [yes, cancel] } };
|
|
861
728
|
}
|
|
862
|
-
// The yes: the act itself, through the door the console uses.
|
|
863
729
|
spend();
|
|
864
730
|
const done = (said, rows = []) => ({ ack: said, edit: { text: `${body}\n\n${said}`, rows, tokens: [] } });
|
|
865
731
|
const notDone = (said) => ({ ack: "Not done.", edit: { text: `${body}\n\n✗ Not done: ${said}`, rows: linksFor(target), tokens: [] } });
|
|
@@ -884,7 +750,6 @@ export function applyDecideTap(store, seat, input) {
|
|
|
884
750
|
if (!release.ok)
|
|
885
751
|
return notDone(release.why);
|
|
886
752
|
const cardDigest = release.card.digest;
|
|
887
|
-
// The seal knows which card it came from: a chat seal of a deploy gate needs this evidence (store.ts).
|
|
888
753
|
if (!store.sealScopeApproval(row.taskId, who.name, now, {}, { kind: "chat", modeDigest: release.modeDigest, card: "release", cardDigest }))
|
|
889
754
|
return notDone("the release couldn't be approved from chat. Open it in Toolroll.");
|
|
890
755
|
const sealedDigest = store.getScope(row.taskId)?.approvedDigest ?? "";
|
|
@@ -893,7 +758,6 @@ export function applyDecideTap(store, seat, input) {
|
|
|
893
758
|
const where = `${CHANNEL_NAMES[seat.channel]} · chat binding #${seat.binding}`;
|
|
894
759
|
store.recordAction({ at: now.toISOString(), actor: who.name, repo: ref.repo, taskId: row.taskId, runId: null, action: "release approved in chat", outcome: "approved",
|
|
895
760
|
source: "request", detail: `via ${where} · ${release.source} ${release.modeDigest} · card ${cardDigest}` });
|
|
896
|
-
// Said everywhere the person hears from Toolroll (their other chats and push), naming the chat it came from.
|
|
897
761
|
const terms = release.scope.releaseTerms ?? null;
|
|
898
762
|
store.enqueueNotification({ dedupeKey: `release-approved-chat:${row.taskId}:${cardDigest}`, kind: "release-approved", recipient: who.name, pushClass: "attention",
|
|
899
763
|
subject: `Release${terms === null ? "" : ` ${terms.packageVersion}`} approved from ${CHANNEL_NAMES[seat.channel]}`,
|
|
@@ -910,8 +774,6 @@ export function applyDecideTap(store, seat, input) {
|
|
|
910
774
|
return notDone("This is a release: approve it from its release card.");
|
|
911
775
|
if (passwordOnlySeal(plan.scope))
|
|
912
776
|
return notDone(needsFullCard(plan.scope));
|
|
913
|
-
// The one approval every road shares (scope.ts approve): the rules, two-person votes and the proof, as this person.
|
|
914
|
-
// plan.digest matched this button's kept digest above (staleWhy), so these are the words its card showed.
|
|
915
777
|
const words = scopeTermsText(plan.scope);
|
|
916
778
|
if (plan.whole && (plan.digest !== row.digest || words.length > PLATFORM_LIMITS[seat.channel] - ROOM))
|
|
917
779
|
return notDone("this plan changed. Open it in Toolroll.");
|
|
@@ -929,8 +791,6 @@ export function applyDecideTap(store, seat, input) {
|
|
|
929
791
|
if (!merge.ok)
|
|
930
792
|
return notDone(merge.why);
|
|
931
793
|
const via = `via ${seat.channel} · chat binding #${seat.binding} · ${merge.source} ${merge.modeDigest} · ${merge.head.slice(0, 12)}`;
|
|
932
|
-
// The approval is ledgered with the tap, so a bridge that stops before GitHub answers still leaves it on record;
|
|
933
|
-
// what GitHub then did is its own line (recordChatMerge).
|
|
934
794
|
store.recordAction({ at: now.toISOString(), actor: who.name, repo: ref.repo, taskId: row.taskId, runId: row.run ?? null, action: "merge approved in chat", outcome: "approved",
|
|
935
795
|
source: "request", detail: via });
|
|
936
796
|
return { ack: "Merging…", edit: { text: `${body}\n\nMerging…`, rows: [], tokens: [] }, merge: { runId: row.run ?? 0, taskId: row.taskId, by: who.name, repo: ref.repo, via } };
|
|
@@ -939,24 +799,20 @@ export function applyDecideTap(store, seat, input) {
|
|
|
939
799
|
return { ack: "That button doesn't do anything now.", ignored: true };
|
|
940
800
|
}
|
|
941
801
|
}
|
|
942
|
-
/** A chat merge's second ledger line, after the GitHub call: merged, or failed and why (its approval is the first). */
|
|
943
802
|
export function recordChatMerge(store, merge, result, now) {
|
|
944
803
|
store.recordAction({ at: now.toISOString(), actor: merge.by, repo: merge.repo, taskId: merge.taskId, runId: merge.runId, action: "merge from chat",
|
|
945
804
|
outcome: result.ok ? "merged" : "failed", source: "request", detail: result.ok ? merge.via : `${merge.via} · ${phoneText(result.message, 160)}` });
|
|
946
805
|
}
|
|
947
|
-
/** What the card says once the merge came back. */
|
|
948
806
|
export function mergedText(shown, result) {
|
|
949
807
|
const body = shown.replace(/\n\nMerging…$/, "");
|
|
950
808
|
return result.ok ? `${body}\n\n✓ Merged.` : `${body}\n\n✗ Not merged: ${result.message}`;
|
|
951
809
|
}
|
|
952
|
-
/** One open "What should change?" per person and chat: a newer one replaces it. */
|
|
953
810
|
export function openDecidePrompt(store, seat, taskId, run, digest, now) {
|
|
954
811
|
store.handle.prepare("UPDATE chat_decide_prompt SET consumed_at = ? WHERE channel = ? AND binding = ? AND chat = ? AND consumed_at IS NULL")
|
|
955
812
|
.run(now.toISOString(), seat.channel, seat.binding, seat.chat);
|
|
956
813
|
return Number(store.handle.prepare("INSERT INTO chat_decide_prompt (channel, binding, chat, task_id, run, digest, created_at, expires_at) VALUES (?,?,?,?,?,?,?,?)")
|
|
957
814
|
.run(seat.channel, seat.binding, seat.chat, taskId, run, digest, now.toISOString(), new Date(now.getTime() + PROMPT_TTL_MS).toISOString()).lastInsertRowid);
|
|
958
815
|
}
|
|
959
|
-
/** The message that asked "What should change?", once it was sent. */
|
|
960
816
|
export function placeDecidePrompt(store, id, message) {
|
|
961
817
|
store.handle.prepare("UPDATE chat_decide_prompt SET message = ? WHERE id = ? AND message IS NULL").run(message, id);
|
|
962
818
|
}
|
|
@@ -966,12 +822,9 @@ export function openPromptFor(store, seat, now) {
|
|
|
966
822
|
return row === undefined ? null : { id: Number(row["id"]), taskId: String(row["task_id"]), run: Number(row["run"]), digest: String(row["digest"]),
|
|
967
823
|
message: row["message"] == null ? null : String(row["message"]) };
|
|
968
824
|
}
|
|
969
|
-
/** Whether this message answers the prompt: the person's next message, unless it replies to some other message. */
|
|
970
825
|
export function answersPrompt(prompt, replyTo) {
|
|
971
826
|
return replyTo === null || (prompt.message !== null && prompt.message === replyTo);
|
|
972
827
|
}
|
|
973
|
-
/** The person's message after "What should change?": a revision of the exact result, with these words as its
|
|
974
|
-
* feedback, through the result page's own service. Says what was sent, once. */
|
|
975
828
|
export function applyDecideFeedback(store, seat, prompt, text, repos, root, now) {
|
|
976
829
|
store.handle.prepare("UPDATE chat_decide_prompt SET consumed_at = ? WHERE id = ?").run(now.toISOString(), prompt.id);
|
|
977
830
|
const name = title(store, prompt.taskId);
|
|
@@ -986,7 +839,6 @@ export function applyDecideFeedback(store, seat, prompt, text, repos, root, now)
|
|
|
986
839
|
const revised = requestResultChanges(store, root, {
|
|
987
840
|
run: prompt.run, batch: "", source: prompt.digest, actor: verified.who.name, repos: verified.who.repos,
|
|
988
841
|
note: text, path: "", line: "", request: sha(`chat-decide:${seat.channel}:${prompt.id}`).slice(0, 32), allowMode: true,
|
|
989
|
-
// The chat's own verified person, answering "What should change?" in their own words.
|
|
990
842
|
origin: "person",
|
|
991
843
|
}, now);
|
|
992
844
|
if (!revised.ok)
|
|
@@ -999,13 +851,11 @@ export function applyDecideFeedback(store, seat, prompt, text, repos, root, now)
|
|
|
999
851
|
link: approved ? { label: "Open task", path: chatControlHref("task", revised.id) } : { label: "Review & start", path: chatControlHref("approval", revised.id) },
|
|
1000
852
|
};
|
|
1001
853
|
}
|
|
1002
|
-
/** The link a card keeps when it can't act in chat: a plan's is Review & start, where the password step lives. */
|
|
1003
854
|
export function decideFallbackLink(target) {
|
|
1004
855
|
if (target?.kind === "requests")
|
|
1005
856
|
return { label: OPEN_IN_TOOLROLL, path: YOUIYOUX_HOME_PATH };
|
|
1006
857
|
return target?.kind === "plan" ? { label: "Review & start", path: chatControlHref("approval", target.taskId) } : null;
|
|
1007
858
|
}
|
|
1008
|
-
/** Which card a pushed notification is, from its recorded kind and task — never from its words. */
|
|
1009
859
|
export function decideTargetOf(row) {
|
|
1010
860
|
if (row.taskId === null)
|
|
1011
861
|
return null;
|
|
@@ -1021,7 +871,6 @@ export function decideTargetOf(row) {
|
|
|
1021
871
|
return { kind: "failed", taskId: row.taskId };
|
|
1022
872
|
return null;
|
|
1023
873
|
}
|
|
1024
|
-
/** A plan card's one line: the task's number, "plan ready", and its title (docs/plans/plain-toolroll.md P1.5). */
|
|
1025
874
|
function planLineOf(store, taskId, number) {
|
|
1026
875
|
return `#${number}: plan ready · ${title(store, taskId)}`;
|
|
1027
876
|
}
|