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/up-processes.js
CHANGED
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `toolroll up` as two processes (docs/plans/isolated-checks.md, stage 1): the console (HTTP: serving, reading and the
|
|
3
|
-
* person's ceremonies) and the worker (the watch loops: builds, checks, batch checks, follow-ups, reconcilers, the
|
|
4
|
-
* storage sweep and checkout sizing). `up` itself keeps the identities it minted (the approver's login, the runner and
|
|
5
|
-
* its token), supervises both with controller-supervisor, and relays between them. Nothing here grants authority:
|
|
6
|
-
* each role is handed only what it needs, by message, never on a command line or in the environment.
|
|
7
|
-
*
|
|
8
|
-
* What each holds:
|
|
9
|
-
* console the database, the console's own session and sign-in secrets, the attach (instance) secret, push keys, the
|
|
10
|
-
* port. Never the runner token: it can't claim, lease or build.
|
|
11
|
-
* worker the database and the runner name and token, for the watch leases and claims. It opens no port and mints
|
|
12
|
-
* no console session or attach secret.
|
|
13
|
-
* Both are the same user on the same database folder, so files beside the database (the saved login, tool secrets)
|
|
14
|
-
* are reachable by either: the split keeps secrets out of each other's memory and messages, not out of the folder.
|
|
15
|
-
*/
|
|
16
1
|
import { createHash, randomUUID } from "node:crypto";
|
|
17
2
|
import { readFileSync } from "node:fs";
|
|
18
3
|
const MAX_TEXT = 16_384;
|
|
@@ -23,7 +8,6 @@ const nonEmpty = (value, max = MAX_TEXT) => text(value, max) && value !== "" &&
|
|
|
23
8
|
const texts = (value) => Array.isArray(value) && value.length <= MAX_LIST && value.every(one => nonEmpty(one));
|
|
24
9
|
const whole = (value, min = 0, max = 2_147_483_647) => typeof value === "number" && Number.isSafeInteger(value) && value >= min && value <= max;
|
|
25
10
|
const orNull = (value, check) => value === null || check(value);
|
|
26
|
-
/** The parent's word to a role, checked before anything acts on it. */
|
|
27
11
|
export function parentMessage(value) {
|
|
28
12
|
if (!isObject(value))
|
|
29
13
|
return null;
|
|
@@ -34,7 +18,6 @@ export function parentMessage(value) {
|
|
|
34
18
|
case "sign-in-link": {
|
|
35
19
|
if (!whole(value["id"]))
|
|
36
20
|
return null;
|
|
37
|
-
// Exactly one of two shapes: a kind this build doesn't name, or a local request carrying an account, is no request.
|
|
38
21
|
if (value["kind"] === "full")
|
|
39
22
|
return nonEmpty(value["account"], 256) ? { type: "sign-in-link", id: value["id"], kind: "full", account: value["account"] } : null;
|
|
40
23
|
if (value["kind"] === "local")
|
|
@@ -44,7 +27,6 @@ export function parentMessage(value) {
|
|
|
44
27
|
default: return null;
|
|
45
28
|
}
|
|
46
29
|
}
|
|
47
|
-
/** A role's word to the parent, checked before the parent relays or acts on it. */
|
|
48
30
|
export function roleMessage(value, role) {
|
|
49
31
|
if (!isObject(value))
|
|
50
32
|
return null;
|
|
@@ -54,7 +36,6 @@ export function roleMessage(value, role) {
|
|
|
54
36
|
return null;
|
|
55
37
|
if (!orNull(value["url"], (one) => nonEmpty(one, 2_048)) || !orNull(value["port"], (one) => whole(one, 1, 65_535)))
|
|
56
38
|
return null;
|
|
57
|
-
// Only the console serves: a worker that names an address is not a worker.
|
|
58
39
|
if (role === "worker" && (value["url"] !== null || value["port"] !== null))
|
|
59
40
|
return null;
|
|
60
41
|
if (role === "console" && (value["url"] === null || value["port"] === null))
|
|
@@ -70,7 +51,6 @@ export function roleMessage(value, role) {
|
|
|
70
51
|
default: return null;
|
|
71
52
|
}
|
|
72
53
|
}
|
|
73
|
-
/** The start message a role child waits for. The console's config carries no runner token; anything else refuses. */
|
|
74
54
|
export function startMessage(value) {
|
|
75
55
|
if (!isObject(value) || value["type"] !== "start" || !nonEmpty(value["databaseFile"], 4_096) || !orNull(value["containment"], (one) => nonEmpty(one, 64)) || !nonEmpty(value["build"], 512))
|
|
76
56
|
return null;
|
|
@@ -103,12 +83,10 @@ export function startMessage(value) {
|
|
|
103
83
|
}
|
|
104
84
|
return null;
|
|
105
85
|
}
|
|
106
|
-
/** Two ends of an in-memory channel: one process composing both roles (tests and the desktop host), same messages. */
|
|
107
86
|
export function memoryChannel(role) {
|
|
108
87
|
const toParent = [];
|
|
109
88
|
const toRole = [];
|
|
110
89
|
const stops = [];
|
|
111
|
-
// Delivered on a later turn, as IPC would be, and through the same checks: a role can't lean on synchronous replies.
|
|
112
90
|
const later = (fn) => { queueMicrotask(fn); };
|
|
113
91
|
return {
|
|
114
92
|
port: {
|
|
@@ -128,42 +106,25 @@ export function memoryChannel(role) {
|
|
|
128
106
|
},
|
|
129
107
|
};
|
|
130
108
|
}
|
|
131
|
-
/** A build identity: the version and the exact code of the module that composes `up`. Both roles must report the
|
|
132
|
-
* parent's own, or the parent stops rather than run a console and a worker from different builds. */
|
|
133
109
|
export function buildIdentity(version, moduleFile) {
|
|
134
110
|
let digest = `unreadable-${randomUUID()}`;
|
|
135
111
|
try {
|
|
136
112
|
digest = createHash("sha256").update(readFileSync(moduleFile)).digest("hex").slice(0, 16);
|
|
137
113
|
}
|
|
138
|
-
catch {
|
|
114
|
+
catch { }
|
|
139
115
|
return `${version}+${digest}`;
|
|
140
116
|
}
|
|
141
|
-
/** How many replacements in a row may end before becoming ready, with no refusal said, before `up` stops. */
|
|
142
117
|
export const ROLE_NOT_READY_REPLACEMENTS = 3;
|
|
143
|
-
/**
|
|
144
|
-
* One supervised role's generations (Codex review round 1, finding 5): readiness is per generation, not for the role's
|
|
145
|
-
* whole life. When a generation ends, the verdict is:
|
|
146
|
-
* - `fail-start`: the role never became ready at all; the start fails as one, as before the split;
|
|
147
|
-
* - `restart`: this generation was ready and crashed afterwards (the supervisor starts it again);
|
|
148
|
-
* - `end`: a replacement refused to start (another build, another database, a start refused) — permanent, so the whole
|
|
149
|
-
* `up` stops rather than loop — or ROLE_NOT_READY_REPLACEMENTS replacements in a row ended before readiness.
|
|
150
|
-
*/
|
|
151
118
|
export class RoleGenerations {
|
|
152
119
|
everReady = false;
|
|
153
120
|
generationReady = false;
|
|
154
121
|
refusal = null;
|
|
155
122
|
notReadyStreak = 0;
|
|
156
|
-
/** A new generation was spawned: nothing about it is known yet. */
|
|
157
123
|
spawned() { this.generationReady = false; this.refusal = null; }
|
|
158
|
-
/** This generation became ready; true when it is the role's first readiness ever. */
|
|
159
124
|
ready() { const first = !this.everReady; this.everReady = true; this.generationReady = true; return first; }
|
|
160
|
-
/** This generation refused its start for good (it said why, or its build is another). */
|
|
161
125
|
refused(detail) { this.refusal = detail; }
|
|
162
|
-
/** What this generation said when it refused, if it did. */
|
|
163
126
|
refusedWith() { return this.refusal; }
|
|
164
|
-
/** Whether any generation ever became ready. */
|
|
165
127
|
wasReady() { return this.everReady; }
|
|
166
|
-
/** This generation ended (not stopped by `up`): what happens next. */
|
|
167
128
|
ended() {
|
|
168
129
|
if (!this.everReady)
|
|
169
130
|
return "fail-start";
|
package/dist/up-role-child.js
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Started only by `toolroll up` (up-processes.ts): one of its two roles, the console or the worker, in a process of
|
|
3
|
-
* its own. It takes its whole start from the parent over the IPC channel (never from arguments or the environment, so
|
|
4
|
-
* the runner token is in no process listing), and stops when the parent says so or goes away.
|
|
5
|
-
*/
|
|
6
1
|
import { parentMessage, startMessage } from "./up-processes.js";
|
|
7
2
|
if (process.send === undefined || !process.connected) {
|
|
8
3
|
process.stderr.write("This process is started by `toolroll up`; run `toolroll up` instead.\n");
|
|
9
4
|
process.exit(2);
|
|
10
5
|
}
|
|
11
|
-
// node:sqlite still says it is experimental; the CLI hushes exactly that notice, and so does a role.
|
|
12
6
|
const emitWarning = process.emitWarning.bind(process);
|
|
13
7
|
process.emitWarning = ((warning, ...rest) => {
|
|
14
8
|
const type = typeof rest[0] === "string" ? rest[0] : rest[0]?.type;
|
|
@@ -29,18 +23,14 @@ const port = {
|
|
|
29
23
|
try {
|
|
30
24
|
process.send?.(message);
|
|
31
25
|
}
|
|
32
|
-
catch {
|
|
26
|
+
catch { }
|
|
33
27
|
} },
|
|
34
28
|
onMessage: handler => { handlers.push(handler); },
|
|
35
29
|
onStop: handler => { stops.push(handler); if (stopRequested)
|
|
36
30
|
handler(false); },
|
|
37
31
|
};
|
|
38
|
-
// A terminal's Ctrl-C reaches the whole process group: the parent decides what a signal means (drain, then a hard
|
|
39
|
-
// stop on the second), so a role never acts on SIGINT itself. SIGTERM (the supervisor's stop) drains, once.
|
|
40
32
|
process.on("SIGINT", () => { });
|
|
41
33
|
process.on("SIGTERM", () => stop(false));
|
|
42
|
-
// The parent gone (its channel closed): drain, as a stop would. The worker's own grace timer bounds it; past a minute
|
|
43
|
-
// with nobody left to stop it, the role stops its work outright and ends, never running on as an orphan.
|
|
44
34
|
process.once("disconnect", () => {
|
|
45
35
|
stop(false);
|
|
46
36
|
setTimeout(() => { stop(true); setTimeout(() => process.exit(1), 5_000).unref(); }, 60_000).unref();
|
|
@@ -50,7 +40,6 @@ const start = await new Promise(resolve => {
|
|
|
50
40
|
process.once("message", value => { clearTimeout(timer); resolve(value); });
|
|
51
41
|
});
|
|
52
42
|
const checked = startMessage(start);
|
|
53
|
-
// The role named on the command line (for a process listing) and the one started must be the same.
|
|
54
43
|
if (checked === null || checked.role !== process.argv[2]) {
|
|
55
44
|
process.stderr.write("The start message from `toolroll up` was not understood.\n");
|
|
56
45
|
process.exit(2);
|
|
@@ -74,7 +63,6 @@ try {
|
|
|
74
63
|
catch (error) {
|
|
75
64
|
port.send({ type: "fatal", detail: error instanceof Error ? error.message : String(error) });
|
|
76
65
|
}
|
|
77
|
-
// Everything this role owned is closed; leave promptly even if a stray handle lingers.
|
|
78
66
|
if (process.connected)
|
|
79
67
|
process.disconnect?.();
|
|
80
68
|
setTimeout(() => process.exit(code), 200).unref();
|
package/dist/update-notice.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/** The update notice's words, shared by the server page and the console. Plain text; callers escape. */
|
|
2
1
|
export function updateNoticeWords(notice) {
|
|
3
2
|
return notice.security ? `Toolroll ${notice.version} is available, with security fixes` : `Toolroll ${notice.version} is available`;
|
|
4
3
|
}
|
package/dist/vanished-retry.js
CHANGED
|
@@ -1,39 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A build that vanished: its process died with its runner, so no one settled it (docs/plans/plain-toolroll.md P2.1).
|
|
3
|
-
*
|
|
4
|
-
* Every recovery road (a dead runner, a takeover, a superseded watch) ends here, in its own transaction. The vanished
|
|
5
|
-
* attempt is charged one strike, once, whoever recovers it: `vanished_charge` is keyed by the run, so a second recoverer
|
|
6
|
-
* or a later pass charges nothing, and restarting can no longer evade MAX_STRIKES.
|
|
7
|
-
*
|
|
8
|
-
* Toolroll retries by itself only inside an episode (`retry_episode`: the automatic retries and reserved spend since the
|
|
9
|
-
* last person act), at most RETRY_LIMIT retries and RETRY_SPEND_TIMES the plan's budget, each claim reserving its whole
|
|
10
|
-
* budget against that ceiling. A vanished attempt's spend is unknown, so its reservation is never given back. A plan
|
|
11
|
-
* with no budget bounds nothing and gets no automatic retry. A prepared candidate runs a machine check and no agent, so
|
|
12
|
-
* it spends nothing and needs no budget; it still counts its attempts.
|
|
13
|
-
*
|
|
14
|
-
* Stop, hold, archive and approval standing are re-read here, and each keeps the retry from dispatching: the task stays
|
|
15
|
-
* in the queue where that gate holds it, as a person's stop always has, reserving nothing, until a person acts. A
|
|
16
|
-
* process not yet proven stopped holds the task until it is (retryVanishedWhenStopped, every sweep): the retry never
|
|
17
|
-
* starts beside the old attempt.
|
|
18
|
-
*/
|
|
19
1
|
import { authorityStandsSql } from "./approval-authority.js";
|
|
20
2
|
import { stopFactOf } from "./store.js";
|
|
21
3
|
import { refArchived } from "./task-archive.js";
|
|
22
4
|
import { moveTask } from "./task-moves.js";
|
|
23
|
-
/** The automatic-retry limits, in one place. */
|
|
24
5
|
export const RETRY_LIMIT = 3;
|
|
25
6
|
export const RETRY_SPEND_TIMES = 2;
|
|
26
|
-
/** claim.ts MAX_STRIKES (store.ts loads this file, so the claim road isn't imported here; a test pins them equal). */
|
|
27
7
|
export const VANISHED_MAX_STRIKES = 3;
|
|
28
|
-
/** The newest attempt that spends: repair children ride their parent's attempt, and a reviewer has no task claim. */
|
|
29
8
|
function attemptOf(store, taskRef) {
|
|
30
9
|
const row = store.handle.prepare("SELECT id, role, outcome, reason FROM run WHERE task_ref = ? AND role IN ('builder', 'scout', 'planner') ORDER BY id DESC LIMIT 1").get(taskRef);
|
|
31
|
-
// A planner spends no approved budget and has its own strikes: it goes back to the queue as it always has.
|
|
32
10
|
if (row === undefined || String(row["role"]) === "planner")
|
|
33
11
|
return null;
|
|
34
12
|
return { id: Number(row["id"]), outcome: row["outcome"] === null ? null : String(row["outcome"]), reason: row["reason"] === null ? null : String(row["reason"]) };
|
|
35
13
|
}
|
|
36
|
-
/** Whether any run of this task still has a process no record proves stopped. */
|
|
37
14
|
function processUnsettled(store, taskRef) {
|
|
38
15
|
for (const run of store.runsFor(taskRef)) {
|
|
39
16
|
const fact = stopFactOf(store, run.id);
|
|
@@ -42,7 +19,6 @@ function processUnsettled(store, taskRef) {
|
|
|
42
19
|
}
|
|
43
20
|
return false;
|
|
44
21
|
}
|
|
45
|
-
/** dispatch.ts scopeApprovedForDispatch, read here because store.ts loads this file. */
|
|
46
22
|
function approvalStands(store, taskRef, now) {
|
|
47
23
|
const stamp = now.toISOString();
|
|
48
24
|
return store.handle.prepare(`SELECT 1 AS hit FROM task_scope JOIN task_ref ON task_ref.id = ? AND task_scope.task_id = task_ref.external_id
|
|
@@ -72,13 +48,7 @@ function stopFor(store, input) {
|
|
|
72
48
|
}, input.now);
|
|
73
49
|
return "stopped";
|
|
74
50
|
}
|
|
75
|
-
/** The custody wait's hold: nothing starts beside a process no record proves stopped, and it never lapses by itself. */
|
|
76
51
|
const waitHold = (taskRef) => `vanished:${taskRef}`;
|
|
77
|
-
/**
|
|
78
|
-
* The one recovery decision, once per run. The caller has proved the runner gone; this re-reads everything else. A
|
|
79
|
-
* task a tick claimed never left `queued`, so releasing its lease alone would dispatch it again: what stops a retry here
|
|
80
|
-
* is the state or hold this writes, in this transaction. Safe to call again: the run is charged once, decided once.
|
|
81
|
-
*/
|
|
82
52
|
export function settleVanished(store, taskRef, now) {
|
|
83
53
|
return store.transact(() => {
|
|
84
54
|
if (store.currentLiveLease(taskRef, now) !== null)
|
|
@@ -91,14 +61,10 @@ export function settleVanished(store, taskRef, now) {
|
|
|
91
61
|
if (task === null)
|
|
92
62
|
return "none";
|
|
93
63
|
const attempt = attemptOf(store, taskRef);
|
|
94
|
-
// No attempt, or one a real outcome already settled: nothing vanished here, and recovery only unsticks the task.
|
|
95
64
|
if (attempt === null || (attempt.outcome !== null && attempt.reason !== "interrupted"))
|
|
96
65
|
return requeue(store, taskId, now) ? "queued" : "none";
|
|
97
|
-
// Still open: its recoverer closes it and comes back here, in the same transaction. Nothing is decided on a run that
|
|
98
|
-
// may not be over.
|
|
99
66
|
if (attempt.outcome === null)
|
|
100
67
|
return requeue(store, taskId, now) ? "queued" : "none";
|
|
101
|
-
// A person's stop isn't a vanish: nothing is charged, and its hold keeps the task where the stop always has.
|
|
102
68
|
if (store.handle.prepare("SELECT 1 AS hit FROM run_stop WHERE run = ?").get(attempt.id) !== undefined)
|
|
103
69
|
return requeue(store, taskId, now) ? "queued" : "none";
|
|
104
70
|
const stamp = now.toISOString();
|
|
@@ -114,8 +80,6 @@ export function settleVanished(store, taskRef, now) {
|
|
|
114
80
|
settled();
|
|
115
81
|
return "none";
|
|
116
82
|
}
|
|
117
|
-
// Blocked by something a person holds: back to the queue, where that gate keeps it. Nothing is reserved, because
|
|
118
|
-
// nothing starts until that person acts.
|
|
119
83
|
const held = store.handle.prepare("SELECT 1 AS hit FROM hold WHERE task_ref = ? AND owner_kind <> 'backoff' AND (until IS NULL OR until > ?) LIMIT 1").get(taskRef, stamp);
|
|
120
84
|
if (held !== undefined || refArchived(store, taskRef) || !approvalStands(store, taskRef, now)) {
|
|
121
85
|
settled();
|
|
@@ -146,7 +110,6 @@ export function settleVanished(store, taskRef, now) {
|
|
|
146
110
|
return "queued";
|
|
147
111
|
});
|
|
148
112
|
}
|
|
149
|
-
/** Each sweep: a charged run whose old process wasn't yet proven stopped gets its decision now. */
|
|
150
113
|
export function retryVanishedWhenStopped(store, now) {
|
|
151
114
|
const waiting = store.handle.prepare("SELECT DISTINCT task_ref FROM vanished_charge WHERE settled_at IS NULL").all();
|
|
152
115
|
let moved = 0;
|
|
@@ -159,16 +122,13 @@ export function retryVanishedWhenStopped(store, now) {
|
|
|
159
122
|
store.bumpWake();
|
|
160
123
|
return moved;
|
|
161
124
|
}
|
|
162
|
-
/** A person acted, so a new episode starts. The strikes are theirs to clear on their own road. */
|
|
163
125
|
export function clearRetryEpisode(store, taskRef) {
|
|
164
126
|
store.handle.prepare("DELETE FROM retry_episode WHERE task_ref = ?").run(taskRef);
|
|
165
127
|
}
|
|
166
|
-
/** Why Toolroll stopped retrying this task, or null: it reads as a need until a person acts. */
|
|
167
128
|
export function vanishedStopOf(store, taskRef) {
|
|
168
129
|
const row = store.handle.prepare("SELECT stopped, stopped_run FROM retry_episode WHERE task_ref = ? AND stopped IS NOT NULL").get(taskRef);
|
|
169
130
|
return row === undefined ? null : { why: String(row["stopped"]), run: Number(row["stopped_run"]) };
|
|
170
131
|
}
|
|
171
|
-
/** The need's words: the first stop on a plan with no budget, or a limit reached. */
|
|
172
132
|
export function vanishedStopSentence(stop) {
|
|
173
133
|
const build = stop.run === null ? "This build" : `Build #${stop.run}`;
|
|
174
134
|
return stop.why === "no-budget" ? `${build} stopped unexpectedly. Retry it.` : `${build} keeps stopping. Retry, or change the plan.`;
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
// Verified-build assignment completion reuses these gate checks.
|
|
2
1
|
import { observationBrief, readObservationEvidence } from "./observations.js";
|
|
3
|
-
/** Machine verification receipts use the existing sealed artifact store (schema
|
|
4
|
-
* 60). Verbose output is independently bounded; no agent-authored check claim
|
|
5
|
-
* can create or replace this receipt. */
|
|
6
2
|
import { createHash } from "node:crypto";
|
|
7
3
|
import { adjudicate } from "./proof.js";
|
|
8
4
|
import { parseReviewContext, reviewContextCustodyProblem } from "./review-context.js";
|
|
@@ -18,18 +14,11 @@ export const VERIFICATION_RECEIPT_CAPTURE = "machine verification receipt v1";
|
|
|
18
14
|
const hash = (value) => createHash("sha256").update(JSON.stringify(value)).digest("hex");
|
|
19
15
|
const binding = (a) => ({ artifactId: a.id, sha256: a.sha256, bytesStored: a.bytesStored, bytesOriginal: a.bytesOriginal, truncated: a.truncated, redacted: a.redacted, captureStatus: a.captureStatus });
|
|
20
16
|
export const isVerificationReceipt = (a) => a.kind === "structured-output" && (a.capture === VERIFICATION_RECEIPT_CAPTURE || a.capture === "machine verification reuse v1");
|
|
21
|
-
/** Whether a coverage lets a check pass: only full or composed (absent: a check that isn't a release check). */
|
|
22
17
|
export const coveragePasses = (coverage) => coverage === undefined || coverage === "full" || coverage === "composed";
|
|
23
|
-
/**
|
|
24
|
-
* THE one place a release check's coverage meets its outcome (security review): a check whose coverage is partial or
|
|
25
|
-
* identity-removed is a failed attempt for every reader — the verdict, the run's check, the receipt's `result`, reuse,
|
|
26
|
-
* follow-ups, the deploy gates — whatever its command exited with. The raw exit is kept in the receipt's `check`.
|
|
27
|
-
*/
|
|
28
18
|
export function effectiveCheckFacts(raw, facts) {
|
|
29
19
|
if (facts === null || coveragePasses(facts.coverage))
|
|
30
20
|
return { result: raw, facts };
|
|
31
21
|
const exitCode = raw.configured && raw.ran ? raw.exitCode : null;
|
|
32
|
-
// A check that stopped before it could report keeps its own failure (it timed out, Toolroll stopped it): that is why.
|
|
33
22
|
if (facts.coverage === "no-result" && raw.configured && !raw.ran)
|
|
34
23
|
return { result: raw, facts };
|
|
35
24
|
return { result: { configured: true, ran: false, attemptFailed: true, failure: facts.coverage === "no-result" ? "no-result" : "coverage-incomplete" }, facts: { ...facts, check: { ...facts.check, exitCode } } };
|
|
@@ -48,16 +37,10 @@ export function sealVerificationReceipt(store, root, runId, head, command, resul
|
|
|
48
37
|
const checked = readVerificationReceipt(receipt);
|
|
49
38
|
if (!checked.ok)
|
|
50
39
|
throw new Error(`The verification receipt does not match its contract: ${checked.issues.map(issue => issue.line).join("; ")}`);
|
|
51
|
-
// Sealed in the writer's own key order, as every receipt before the schema: its bytes and digests stay comparable.
|
|
52
40
|
const raw = JSON.stringify(receipt, null, 1);
|
|
53
41
|
const hits = scanForSecrets(raw);
|
|
54
42
|
storeEvidence(store, root, runId, "structured-output", "verification-receipt.json", Buffer.from(hits.length ? redactSecretLines(raw, hits) : raw), reusedFrom === undefined ? VERIFICATION_RECEIPT_CAPTURE : "machine verification reuse v1", now, { captureStatus: "ok", redacted: hits.length > 0 });
|
|
55
43
|
}
|
|
56
|
-
/** Read and bind existing evidence, never backfill historical receipts. A legacy
|
|
57
|
-
* single-attempt machine header is sufficient only with its exact approved grant
|
|
58
|
-
* and sealed candidate endpoints. Recovery logs without a receipt stay explicit. */
|
|
59
|
-
// Recovery reads this existing receipt binding, then requires an actually executed
|
|
60
|
-
// v1 passing gate. This reader does not rerun checks or transfer a prior approval.
|
|
61
44
|
export function verificationEvidence(store, root, runId) {
|
|
62
45
|
const fail = (problem) => ({ ok: false, problem });
|
|
63
46
|
const source = store.getRun(runId);
|
|
@@ -68,10 +51,8 @@ export function verificationEvidence(store, root, runId) {
|
|
|
68
51
|
const receipts = artifacts.filter(isVerificationReceipt);
|
|
69
52
|
const machine = store.proofVerdictFor(runId);
|
|
70
53
|
const verified = (machine?.machineVerdict ?? machine?.verdict) === "verified";
|
|
71
|
-
// A run whose checks were Off recorded no check; that is not a gap.
|
|
72
54
|
if (!receipts.length && !verified && runCheckLevel(store, runId) === "off")
|
|
73
55
|
return { ok: true, bytes: null, digest: hash(null) };
|
|
74
|
-
// A Quick run is bound to the project's approved quick command, a Full one to the full command.
|
|
75
56
|
const command = repo ? sealedCommandKey(root, receipts) === quickVerifyKey(repo) ? liveQuickCommand(store, repo) : store.liveVerifyCommand(repo) : null;
|
|
76
57
|
if (!command && !receipts.length && !verified)
|
|
77
58
|
return { ok: true, bytes: null, digest: hash(null) };
|
|
@@ -100,8 +81,6 @@ export function verificationEvidence(store, root, runId) {
|
|
|
100
81
|
catch {
|
|
101
82
|
return fail("The verification receipt cannot be read.");
|
|
102
83
|
}
|
|
103
|
-
// The schema checks the shape; the bindings below check it against the store. The receipt itself stays exactly
|
|
104
|
-
// as sealed: its bytes are this view's bytes and part of its digest.
|
|
105
84
|
const read = readVerificationReceipt(receipt);
|
|
106
85
|
if (!read.ok)
|
|
107
86
|
return fail(`The verification receipt is malformed: ${read.issues.map(issue => issue.line).join("; ")}`);
|
|
@@ -134,8 +113,6 @@ export function verificationEvidence(store, root, runId) {
|
|
|
134
113
|
}
|
|
135
114
|
else if (checked.reusedFrom !== undefined || checked.executedHere !== undefined)
|
|
136
115
|
return fail("The gate reuse receipt has an unsupported version.");
|
|
137
|
-
// Version 3, a release check (release-once.md): its attempt, sealed before it ran, and its sealed artifacts must be
|
|
138
|
-
// the ones it names; a composed one has every link proved again from sealed artifacts and the store.
|
|
139
116
|
if (receipt.version === 3) {
|
|
140
117
|
if (checked.coverage === undefined || checked.check === undefined)
|
|
141
118
|
return fail("The release check receipt names no coverage.");
|
|
@@ -145,8 +122,6 @@ export function verificationEvidence(store, root, runId) {
|
|
|
145
122
|
const sha = (capture) => { const found = artifacts.filter(a => a.kind === "structured-output" && a.capture === capture); return found.length === 1 ? found[0].sha256 : null; };
|
|
146
123
|
if (sha(CHECK_REPORT_CAPTURE) !== checked.check.report || sha(CHECK_INVENTORY_CAPTURE) !== checked.check.inventory)
|
|
147
124
|
return fail("The release check's sealed report or inventory changed.");
|
|
148
|
-
// Their bytes too, not only their records (eval-harness review 1, finding 3): a report or inventory the receipt
|
|
149
|
-
// names that is missing, cut short or changed on disk no longer verifies.
|
|
150
125
|
for (const capture of [CHECK_REPORT_CAPTURE, CHECK_INVENTORY_CAPTURE]) {
|
|
151
126
|
const one = artifacts.find(a => a.kind === "structured-output" && a.capture === capture);
|
|
152
127
|
if (one === undefined)
|
|
@@ -156,7 +131,6 @@ export function verificationEvidence(store, root, runId) {
|
|
|
156
131
|
}
|
|
157
132
|
if ((checked.coverage === "composed") !== (checked.composed !== undefined))
|
|
158
133
|
return fail("The release check's coverage and its links disagree.");
|
|
159
|
-
// A check that didn't cover what it owed can never read as a pass.
|
|
160
134
|
if (!coveragePasses(checked.coverage) && checked.result.configured && checked.result.ran && checked.result.exitCode === 0)
|
|
161
135
|
return fail("The release check reads as passed, but its coverage fell short.");
|
|
162
136
|
if (checked.composed !== undefined) {
|
|
@@ -217,12 +191,9 @@ export function verificationEvidence(store, root, runId) {
|
|
|
217
191
|
const view = { version: 1, source: LEGACY_GATE_SOURCE, run: runId, head: source.headRevision, base: source.baseRevision, scopeDigest: source.scopeDigest, command, result: { configured: true, ran: true, exitCode }, log: binding(log), candidate: binding(stat[0]) };
|
|
218
192
|
receipt = view;
|
|
219
193
|
}
|
|
220
|
-
// The view preserves shortened/redacted status and does not claim the omitted
|
|
221
|
-
// output exists. Its fingerprint is re-proved before every turn and ingestion.
|
|
222
194
|
const bytes = JSON.stringify(receipt);
|
|
223
195
|
return { ok: true, bytes, digest: hash({ receipt, receipts }) };
|
|
224
196
|
}
|
|
225
|
-
/** The grant key a run's single sealed receipt names, read without trusting it further. */
|
|
226
197
|
function sealedCommandKey(root, receipts) {
|
|
227
198
|
if (receipts.length !== 1)
|
|
228
199
|
return null;
|
|
@@ -237,10 +208,6 @@ function sealedCommandKey(root, receipts) {
|
|
|
237
208
|
return null;
|
|
238
209
|
}
|
|
239
210
|
}
|
|
240
|
-
/** Only a sealed failed check can start unattended diagnosis. Lost custody,
|
|
241
|
-
* changed approvals/trees and incomplete evidence still need attention; they
|
|
242
|
-
* must not become another code-writing attempt. Keep the log out of the small
|
|
243
|
-
* revision artifact and re-read it when the repair builder starts. */
|
|
244
211
|
export function failedVerificationEvidence(store, root, runId) {
|
|
245
212
|
if (!store.artifactsFor(runId).some(isVerificationReceipt))
|
|
246
213
|
return { kind: "none" };
|
|
@@ -265,10 +232,6 @@ export function failedVerificationEvidence(store, root, runId) {
|
|
|
265
232
|
return { kind: "unavailable", problem: "The failed-check log no longer verifies." };
|
|
266
233
|
return { kind: "failed", digest: verified.digest, receipt: verified.bytes, log: read.content.toString("utf8") };
|
|
267
234
|
}
|
|
268
|
-
/** A fresh review may assess a pre-upgrade result which stopped solely because
|
|
269
|
-
* no builder proof was written. Read original sealed facts; never run checks,
|
|
270
|
-
* backfill receipts, rewrite artifacts, or reuse a different candidate's gate.
|
|
271
|
-
* Called inside review ingestion, after its exact bindings have been proved. */
|
|
272
235
|
export function assessmentFromSavedEvidence(store, root, runId) {
|
|
273
236
|
const previous = store.proofVerdictFor(runId);
|
|
274
237
|
if (previous?.verdict !== "short" || previous.reasons.length !== 1 || previous.reasons[0] !== "no proof was written" ||
|
|
@@ -317,8 +280,6 @@ export function assessmentFromSavedEvidence(store, root, runId) {
|
|
|
317
280
|
return null;
|
|
318
281
|
}
|
|
319
282
|
}
|
|
320
|
-
/** Reuse is exclusive to a machine-authored observation revision, with its
|
|
321
|
-
* own current approval and complete new observations. Never synthesize a pass. */
|
|
322
283
|
export function reuseObservationVerification(store, root, runId, now) {
|
|
323
284
|
const run = store.getRun(runId);
|
|
324
285
|
if (!run)
|
package/dist/version.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
|
-
/** The package's own version, read from package.json beside dist/ or src/ — one source, never a literal. */
|
|
3
2
|
export const PACKAGE_VERSION = (() => {
|
|
4
3
|
try {
|
|
5
4
|
return String(JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")).version ?? "0.0.0");
|
package/dist/wake-hub.js
CHANGED
|
@@ -1,29 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* One shared wake poller per process (docs/plans/live-wakeups.md, slice 3).
|
|
3
|
-
*
|
|
4
|
-
* Every dispatch loop and build lane used to doze by reading `wakeSeq()` from SQLite every 50 ms on its own, so a
|
|
5
|
-
* service with twelve projects and eight lanes made hundreds of reads a second while idle. The hub keeps ONE timer
|
|
6
|
-
* per store: it runs only while something waits, reads the counter once per beat, and resolves each waiter whose
|
|
7
|
-
* baseline the counter has passed.
|
|
8
|
-
*
|
|
9
|
-
* - A waiter resolves with why: "wake" (the counter moved past its baseline), "deadline" (its time came), or "poke"
|
|
10
|
-
* (its `until` became true, or someone poked it directly: a stop, a lost lease, a recovered reconciliation).
|
|
11
|
-
* - No lost wakeup. The counter only ever moves forward, so a bump that lands after the caller read its baseline and
|
|
12
|
-
* before it registered is seen on the very next read. Registration is synchronous; nothing yields in between.
|
|
13
|
-
* - Every waiter is checked on every beat (50 ms, well inside the one-second floor the plan asks for), including its
|
|
14
|
-
* `until`, which must be cheap and in-memory: it never reads the database.
|
|
15
|
-
* - The hub only gives promptness, never permission: claim and spawn fences re-prove everything after a wake.
|
|
16
|
-
* - Nothing here watches files or listens to commits. The timer is cleared as soon as nobody waits, so a stopped
|
|
17
|
-
* worker (or a finished test) keeps no timer alive.
|
|
18
|
-
*/
|
|
19
|
-
/** Something a caller can poke to end the waits registered with it, now (a stop, a lost lease, a recovery). */
|
|
20
1
|
export class WakePoker {
|
|
21
2
|
listeners = new Set();
|
|
22
3
|
poke() {
|
|
23
4
|
for (const listener of [...this.listeners])
|
|
24
5
|
listener();
|
|
25
6
|
}
|
|
26
|
-
/** @internal */
|
|
27
7
|
listen(listener) {
|
|
28
8
|
this.listeners.add(listener);
|
|
29
9
|
return () => { this.listeners.delete(listener); };
|
|
@@ -46,7 +26,6 @@ export class WakeHub {
|
|
|
46
26
|
this.setTimer = options.setTimer ?? ((fn, ms) => setTimeout(fn, ms));
|
|
47
27
|
this.clearTimer = options.clearTimer ?? (handle => clearTimeout(handle));
|
|
48
28
|
}
|
|
49
|
-
/** Wait until the counter passes `baseline`, the deadline comes, or the waiter is poked. */
|
|
50
29
|
changed(waiter) {
|
|
51
30
|
return new Promise((resolve, reject) => {
|
|
52
31
|
let unlisten = () => { };
|
|
@@ -70,7 +49,6 @@ export class WakeHub {
|
|
|
70
49
|
this.waiters.add(entry);
|
|
71
50
|
if (waiter.poker !== undefined)
|
|
72
51
|
unlisten = waiter.poker.listen(() => entry.settle("poke"));
|
|
73
|
-
// Already true (a stop that landed before the wait, a deadline in the past): no beat needed.
|
|
74
52
|
if (waiter.until?.() === true) {
|
|
75
53
|
entry.settle("poke");
|
|
76
54
|
return;
|
|
@@ -82,16 +60,12 @@ export class WakeHub {
|
|
|
82
60
|
this.arm();
|
|
83
61
|
});
|
|
84
62
|
}
|
|
85
|
-
/** End every wait in this process now (the service's stop signal). */
|
|
86
63
|
poke() {
|
|
87
64
|
for (const entry of [...this.waiters])
|
|
88
65
|
entry.settle("poke");
|
|
89
66
|
}
|
|
90
|
-
/** How many waits are open (tests and diagnostics). */
|
|
91
67
|
waiting() { return this.waiters.size; }
|
|
92
|
-
/** Whether the beat timer is running (tests). */
|
|
93
68
|
running() { return this.timer !== null; }
|
|
94
|
-
/** How many counter reads the hub has made (tests: one per beat, whatever the number of waiters). */
|
|
95
69
|
reads() { return this.readsMade; }
|
|
96
70
|
arm() {
|
|
97
71
|
if (this.timer !== null || this.waiters.size === 0)
|
|
@@ -114,7 +88,6 @@ export class WakeHub {
|
|
|
114
88
|
seq = this.read();
|
|
115
89
|
}
|
|
116
90
|
catch (error) {
|
|
117
|
-
// A read that fails reaches every waiter, as the loops' own read used to: nothing is silently swallowed.
|
|
118
91
|
for (const entry of [...this.waiters])
|
|
119
92
|
entry.fail(error);
|
|
120
93
|
return;
|
|
@@ -140,7 +113,6 @@ export class WakeHub {
|
|
|
140
113
|
}
|
|
141
114
|
}
|
|
142
115
|
const hubs = new WeakMap();
|
|
143
|
-
/** The one hub for this store (one per process under `up`, which shares a store across project loops). */
|
|
144
116
|
export function wakeHubFor(store) {
|
|
145
117
|
let hub = hubs.get(store);
|
|
146
118
|
if (hub === undefined) {
|
package/dist/webhook-limits.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
/** At most this many unproven deliveries per address a minute; over it, further ones are answered 429 and do nothing. */
|
|
2
1
|
export const UNPROVEN_PER_MINUTE = 60;
|
|
3
2
|
const WINDOW_MS = 60_000;
|
|
4
|
-
/** Addresses that match no trigger share one count. */
|
|
5
3
|
export const UNKNOWN_ADDRESS = "unknown";
|
|
6
4
|
const counters = new WeakMap();
|
|
7
|
-
/** Count one unproven delivery to `address` at `now`. Whether it is over the minute's limit, and when to try again. */
|
|
8
5
|
export function countUnproven(store, address, now) {
|
|
9
6
|
let counter = counters.get(store);
|
|
10
7
|
if (counter === undefined) {
|
|
@@ -14,9 +11,7 @@ export function countUnproven(store, address, now) {
|
|
|
14
11
|
const at = now.getTime();
|
|
15
12
|
const recent = (counter.get(address) ?? []).filter(one => one > at - WINDOW_MS);
|
|
16
13
|
recent.push(at);
|
|
17
|
-
// Keep at most one over the limit: the count only needs to know it is over, and memory stays bounded per address.
|
|
18
14
|
counter.set(address, recent.slice(-(UNPROVEN_PER_MINUTE + 1)));
|
|
19
|
-
// Bounded across addresses too: the oldest addresses are forgotten first.
|
|
20
15
|
if (counter.size > 10_000)
|
|
21
16
|
counter.delete(counter.keys().next().value);
|
|
22
17
|
if (recent.length <= UNPROVEN_PER_MINUTE)
|
|
@@ -24,7 +19,5 @@ export function countUnproven(store, address, now) {
|
|
|
24
19
|
const oldest = recent[recent.length - UNPROVEN_PER_MINUTE - 1];
|
|
25
20
|
return { over: true, retryAfterSeconds: Math.max(1, Math.ceil((oldest + WINDOW_MS - at) / 1000)) };
|
|
26
21
|
}
|
|
27
|
-
/** At most this many cards a trigger makes in a rolling hour (counted when each card is made). */
|
|
28
22
|
export const CARDS_PER_HOUR = 30;
|
|
29
|
-
/** At most this many signed deliveries a trigger holds while it waits for room; beyond it, deliveries are turned away. */
|
|
30
23
|
export const HELD_AT_MOST = 200;
|
package/dist/webhook-readers.js
CHANGED
|
@@ -1,26 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* What a proven webhook delivery says, read by its sender's reader (docs/plans/webhook-tasks.md §2). A signature proves
|
|
3
|
-
* who sent a delivery, not that it belongs in this flow: Sentry's and Vercel's readers check its shape, its action and
|
|
4
|
-
* the configured scope first, and only then give it an identity. Anything else is ignored, with why, and claims no
|
|
5
|
-
* identity. The generic senders pick their fields by dot-paths. Every outside value is screened for secrets before it
|
|
6
|
-
* is used anywhere (a key, a held item, a card, a task), and every link is made safe before it is kept.
|
|
7
|
-
*/
|
|
8
1
|
import { scanForSecrets } from "./evidence.js";
|
|
9
2
|
const HIDDEN = /[\u0000-\u001f\u007f---]/;
|
|
10
3
|
const record = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
11
4
|
const pick = (body, path) => path.split(".").reduce((node, part) => record(node)[part], body);
|
|
12
5
|
const text = (value) => typeof value === "string" && value.trim() !== "" ? value.trim() : null;
|
|
13
|
-
/** A string or a safe integer, as an identity's words exactly as sent; anything else isn't one. */
|
|
14
6
|
const idWords = (value) => typeof value === "string" ? value : typeof value === "number" && Number.isSafeInteger(value) ? String(value) : null;
|
|
15
|
-
/** Whether outside words could hold a key or password (the same check cards' words get). */
|
|
16
7
|
export const looksSecret = (value) => scanForSecrets(value).length > 0;
|
|
17
8
|
export const SENTRY_HOSTS = [{ host: "sentry.io", subdomains: true }];
|
|
18
9
|
export const VERCEL_HOSTS = [{ host: "vercel.com", subdomains: false }];
|
|
19
|
-
/**
|
|
20
|
-
* A link kept from a delivery: absolute https, at most 2,000 characters, no user information, and with its query and
|
|
21
|
-
* fragment dropped (where tokens travel). `hosts` narrows it to a sender's own site (and its subdomains). Null when it
|
|
22
|
-
* isn't one, or when what is left could still hold a secret.
|
|
23
|
-
*/
|
|
24
10
|
export function safeLink(value, hosts) {
|
|
25
11
|
if (typeof value !== "string" || value.length > 2000 || HIDDEN.test(value))
|
|
26
12
|
return null;
|
|
@@ -37,10 +23,8 @@ export function safeLink(value, hosts) {
|
|
|
37
23
|
if (hosts !== null && !hosts.some(one => host === one.host || (one.subdomains && host.endsWith(`.${one.host}`))))
|
|
38
24
|
return null;
|
|
39
25
|
const kept = `${url.origin}${url.pathname}`;
|
|
40
|
-
// Judged as it will be kept: an address that only normalises past 2,000 characters (escaped non-ASCII) isn't kept.
|
|
41
26
|
if (kept.length > 2000)
|
|
42
27
|
return null;
|
|
43
|
-
// Screened as kept and as read: a token spelled with percent-escapes is the same token. A path that won't decode isn't kept.
|
|
44
28
|
let decoded;
|
|
45
29
|
try {
|
|
46
30
|
decoded = decodeURIComponent(url.pathname);
|
|
@@ -50,39 +34,31 @@ export function safeLink(value, hosts) {
|
|
|
50
34
|
}
|
|
51
35
|
return looksSecret(kept) || looksSecret(decoded) || HIDDEN.test(decoded) ? null : kept;
|
|
52
36
|
}
|
|
53
|
-
/** The identity words a key may carry: at most 120 characters, nothing hidden, and nothing that looks like a secret. */
|
|
54
37
|
export function identityOf(value) {
|
|
55
38
|
const sent = idWords(value);
|
|
56
39
|
if (sent === null || sent.trim() === "")
|
|
57
40
|
return { ok: false, why: "its identity is missing" };
|
|
58
|
-
// Judged as sent, before anything is trimmed: padding, hidden characters or length make it unusable, never another id.
|
|
59
41
|
if (sent.length > 120 || HIDDEN.test(sent) || sent !== sent.trim())
|
|
60
42
|
return { ok: false, why: "its identity isn't usable" };
|
|
61
43
|
if (looksSecret(sent))
|
|
62
44
|
return { ok: false, why: "it looked like it held a key or password" };
|
|
63
45
|
return { ok: true, id: sent };
|
|
64
46
|
}
|
|
65
|
-
/** Sentry's API address for an event names its project's slug (…/api/0/projects/<org>/<project>/events/<id>/): read
|
|
66
|
-
* only from that exact shape on Sentry's own host. */
|
|
67
47
|
function sentrySlugOf(value) {
|
|
68
48
|
const link = typeof value === "string" ? value : "";
|
|
69
49
|
const match = /^https:\/\/(?:[a-z0-9-]+\.)?sentry\.io\/api\/0\/projects\/[a-z0-9_-]+\/([a-z0-9_-]+)\/events\/[A-Za-z0-9-]+\/?$/.exec(link);
|
|
70
50
|
return match?.[1] ?? null;
|
|
71
51
|
}
|
|
72
|
-
/** Sentry: an issue alert (action "triggered", with the event) or a new issue (action "created", with the issue). */
|
|
73
52
|
function readSentry(body, settings) {
|
|
74
53
|
const action = text(record(body)["action"]);
|
|
75
54
|
const data = record(record(body)["data"]);
|
|
76
55
|
const alert = action === "triggered" && Object.keys(record(data["event"])).length > 0;
|
|
77
56
|
const created = action === "created" && Object.keys(record(data["issue"])).length > 0;
|
|
78
|
-
// A fixed reason: nothing the sender wrote is kept for an event Toolroll doesn't take.
|
|
79
57
|
if (!alert && !created)
|
|
80
58
|
return { kind: "ignored", why: "not an issue alert or a new issue" };
|
|
81
59
|
const thing = record(alert ? data["event"] : data["issue"]);
|
|
82
|
-
// Scope from the body alone (the resource header isn't signed): the project's id or slug, as Sentry sends it.
|
|
83
60
|
if (settings.project !== null) {
|
|
84
61
|
const project = record(thing["project"]);
|
|
85
|
-
// An alert's event names its project by number, and by slug only in its API address; a new issue names both.
|
|
86
62
|
const names = [idWords(thing["project"]), idWords(project["id"]), text(project["slug"]), sentrySlugOf(thing["url"])].filter((one) => one !== null);
|
|
87
63
|
if (!names.some(one => one.toLowerCase() === settings.project.toLowerCase()))
|
|
88
64
|
return { kind: "ignored", why: "from another Sentry project" };
|
|
@@ -94,7 +70,6 @@ function readSentry(body, settings) {
|
|
|
94
70
|
const culprit = text(thing["culprit"]);
|
|
95
71
|
return { kind: "item", identity: identity.id, url: safeLink(thing["web_url"], SENTRY_HOSTS), title, description: culprit === null ? "From a Sentry issue." : `From a Sentry issue, in ${culprit}.`, label: "Sentry issue" };
|
|
96
72
|
}
|
|
97
|
-
/** Vercel: a failed deployment only, from the configured project and team. */
|
|
98
73
|
function readVercel(body, settings) {
|
|
99
74
|
const type = text(record(body)["type"]);
|
|
100
75
|
if (type !== "deployment.error")
|
|
@@ -112,13 +87,11 @@ function readVercel(body, settings) {
|
|
|
112
87
|
return { kind: "item", identity: identity.id, url: safeLink(record(payload["links"])["deployment"], VERCEL_HOSTS), title: name === null ? settings.title : `${name} failed to deploy`,
|
|
113
88
|
description: "From a failed Vercel deployment.", label: "Vercel deployment" };
|
|
114
89
|
}
|
|
115
|
-
/** Any JSON: the trigger's own paths, then the usual names; shown whole when they find no text. */
|
|
116
90
|
function readGeneric(body, settings) {
|
|
117
91
|
const at = (path) => path === null ? undefined : pick(body, path);
|
|
118
92
|
let identity = null;
|
|
119
93
|
if (settings.idField !== null) {
|
|
120
94
|
const read = identityOf(at(settings.idField));
|
|
121
|
-
// A configured identity that can't be used makes nothing: it never falls back to some other identity.
|
|
122
95
|
if (!read.ok)
|
|
123
96
|
return { kind: "skip", why: read.why };
|
|
124
97
|
identity = read.id;
|
|
@@ -129,10 +102,7 @@ function readGeneric(body, settings) {
|
|
|
129
102
|
title: typeof title === "string" && title.trim() !== "" ? title : settings.title,
|
|
130
103
|
description: `From a webhook:\n\n${typeof details === "string" ? details : JSON.stringify(body, null, 2)}`.slice(0, 4000), label: "Webhook" };
|
|
131
104
|
}
|
|
132
|
-
/** Whether each provider's reader has read a real, captured delivery (test/fixtures/webhooks/*.captured.json), or only
|
|
133
|
-
* its sender's documented examples so far: the panel says which until a captured one is in the suite. */
|
|
134
105
|
export const READER_CAPTURED = { sentry: false, vercel: false };
|
|
135
|
-
/** What a proven delivery says, by its sender's reader. */
|
|
136
106
|
export function readDelivery(body, settings) {
|
|
137
107
|
return settings.sender === "sentry" ? readSentry(body, settings) : settings.sender === "vercel" ? readVercel(body, settings) : readGeneric(body, settings);
|
|
138
108
|
}
|