toolroll 0.9.103 → 0.9.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +65 -0
- package/README.md +27 -27
- package/dist/accent-colors.js +0 -29
- package/dist/acp-agents.js +0 -3
- package/dist/acp-attest.js +0 -30
- package/dist/acp-check.js +3 -70
- package/dist/acp-client.js +3 -94
- package/dist/acp-inspect.js +1 -20
- package/dist/action-ledger.js +0 -8
- package/dist/activity-line.js +0 -14
- package/dist/actor.js +0 -15
- package/dist/advanced-schema.js +12 -0
- package/dist/advanced-view.js +26 -0
- package/dist/advanced.js +61 -0
- package/dist/agent-board.js +0 -117
- package/dist/agent-fence.js +11 -367
- package/dist/agent-onboard.js +12 -50
- package/dist/agent-pulse.js +5 -38
- package/dist/agent-state-words.js +0 -8
- package/dist/agent-state.js +1 -45
- package/dist/agent-turns.js +3 -17
- package/dist/agentconfig.js +1 -99
- package/dist/agents-board.js +0 -60
- package/dist/agents-live.js +1 -8
- package/dist/api-tokens.js +0 -27
- package/dist/approval-authority.js +0 -59
- package/dist/approval-password.js +0 -10
- package/dist/approval-policy.js +0 -29
- package/dist/approval-rules-ui.js +0 -9
- package/dist/assignment-adapters.js +0 -14
- package/dist/assignment-brief.js +1 -17
- package/dist/assignment-delivery.js +0 -22
- package/dist/assignment-presentation.js +0 -14
- package/dist/assignment-status.js +1 -30
- package/dist/assignment-ui.js +0 -12
- package/dist/assignment.js +117 -103
- package/dist/attest.js +0 -38
- package/dist/audit-cli.js +0 -9
- package/dist/backend.js +0 -59
- package/dist/backup-ui.js +0 -12
- package/dist/backup.js +8 -61
- package/dist/batch-checks.js +0 -20
- package/dist/batch-policy.js +0 -4
- package/dist/beads.js +0 -48
- package/dist/bin.js +0 -8
- package/dist/board.js +1 -36
- package/dist/boot-identity.js +0 -42
- package/dist/bounded-spawn.js +4 -28
- package/dist/brand-mark.js +0 -21
- package/dist/brief-fence.js +0 -16
- package/dist/browser/terminal.css +1 -1
- package/dist/browser/terminal.js +16 -16
- package/dist/browser/workspace.css +2 -2
- package/dist/browser/workspace.js +26 -26
- package/dist/browser-crew.js +0 -8
- package/dist/browser-shell.js +2 -15
- package/dist/browser-workspace.js +6 -30
- package/dist/budget-alerts.js +1 -4
- package/dist/build-review.js +2 -50
- package/dist/builder-restart.js +0 -13
- package/dist/builder.js +21 -1035
- package/dist/canonical-json.js +0 -12
- package/dist/capscan.js +1 -32
- package/dist/card-catalog.js +0 -12
- package/dist/card-cli.js +0 -1
- package/dist/card-render.js +0 -25
- package/dist/card-sources.js +0 -10
- package/dist/chat-acceptance.js +0 -7
- package/dist/chat-actions.js +5 -190
- package/dist/chat-admission.js +0 -7
- package/dist/chat-approval.js +0 -25
- package/dist/chat-ask.js +0 -17
- package/dist/chat-card-part.js +0 -3
- package/dist/chat-card.js +0 -6
- package/dist/chat-channel.js +2 -83
- package/dist/chat-continuity.js +0 -31
- package/dist/chat-controls.js +0 -7
- package/dist/chat-core.js +0 -55
- package/dist/chat-decide.js +2 -153
- package/dist/chat-delivery-state.js +0 -49
- package/dist/chat-delivery.js +2 -143
- package/dist/chat-display.js +0 -2
- package/dist/chat-evidence.js +0 -65
- package/dist/chat-flow.js +0 -72
- package/dist/chat-follow.js +0 -13
- package/dist/chat-inbox.js +0 -34
- package/dist/chat-live-schema.js +0 -14
- package/dist/chat-live.js +2 -87
- package/dist/chat-message-states.js +13 -40
- package/dist/chat-messages.js +0 -153
- package/dist/chat-migration.js +0 -57
- package/dist/chat-polish.js +0 -7
- package/dist/chat-quiet.js +0 -37
- package/dist/chat-review.js +0 -4
- package/dist/chat-rooms.js +0 -22
- package/dist/chat-settings-page.js +0 -4
- package/dist/chat-task-actions.js +0 -7
- package/dist/chat-terms.js +0 -21
- package/dist/chat-voice.js +0 -38
- package/dist/chat-warmth.js +1 -3
- package/dist/check-access.js +0 -30
- package/dist/check-facts.js +2 -62
- package/dist/check-failure.js +0 -98
- package/dist/check-levels-ui.js +4 -10
- package/dist/check-levels.js +3 -35
- package/dist/check-load.js +1 -49
- package/dist/check-only-standing.js +0 -6
- package/dist/check-only.js +0 -22
- package/dist/check-progress.js +0 -32
- package/dist/check-repair.js +2 -35
- package/dist/check-report.js +1 -108
- package/dist/check-stamp.js +0 -20
- package/dist/checkout-cleanup.js +0 -84
- package/dist/checkout-proof.js +1 -13
- package/dist/child-database.js +0 -3
- package/dist/claim.js +4 -508
- package/dist/claude-print.js +0 -10
- package/dist/cli-fast.js +0 -8
- package/dist/cli-help.js +90 -78
- package/dist/cli-http.js +0 -10
- package/dist/cli.js +26 -241
- package/dist/code-extract.js +0 -6
- package/dist/code-map-acts.js +0 -7
- package/dist/code-map-admission.js +2 -26
- package/dist/code-map-build.js +3 -24
- package/dist/code-map-cli.js +0 -4
- package/dist/code-map-main.js +0 -6
- package/dist/code-map-read.js +0 -12
- package/dist/code-map-report.js +0 -9
- package/dist/code-map-shape.js +0 -19
- package/dist/code-map-store.js +0 -26
- package/dist/codex-limits.js +1 -17
- package/dist/coding-context.js +0 -10
- package/dist/coding-handoff.js +0 -14
- package/dist/coding-provider.js +0 -39
- package/dist/coding-shipping-ui.js +0 -1
- package/dist/coding-ui.js +0 -1
- package/dist/coding-update.js +1 -18
- package/dist/coding-workspace.js +0 -27
- package/dist/commit-extract.js +0 -83
- package/dist/connect-cli.js +0 -19
- package/dist/console-chrome.js +1 -34
- package/dist/console-instance.js +2 -91
- package/dist/container-state.js +0 -4
- package/dist/containment.js +2 -105
- package/dist/contract-changes.js +0 -6
- package/dist/contracts/acceptance-terms.js +0 -7
- package/dist/contracts/chat-actions.js +0 -46
- package/dist/contracts/chat-callback-rows.js +0 -8
- package/dist/contracts/chat-card.js +0 -14
- package/dist/contracts/chat-content.js +0 -55
- package/dist/contracts/chat-tables.js +0 -7
- package/dist/contracts/cli.js +0 -59
- package/dist/contracts/coding-activity.js +0 -15
- package/dist/contracts/coding-context.js +0 -15
- package/dist/contracts/coding-handoff.js +0 -11
- package/dist/contracts/coding-workspace.js +0 -14
- package/dist/contracts/console-api.js +3 -54
- package/dist/contracts/contract-test.js +0 -14
- package/dist/contracts/contract.js +0 -48
- package/dist/contracts/decision.js +0 -20
- package/dist/contracts/diff-stat.js +0 -16
- package/dist/contracts/discord-callback.js +0 -9
- package/dist/contracts/flow-card.js +0 -18
- package/dist/contracts/flow-propose.js +0 -8
- package/dist/contracts/flow-send.js +0 -31
- package/dist/contracts/flow.js +0 -112
- package/dist/contracts/gateway-tools.js +0 -22
- package/dist/contracts/handoff.js +0 -22
- package/dist/contracts/integration-metadata.js +0 -39
- package/dist/contracts/lead-context.js +0 -14
- package/dist/contracts/lead-tools.js +0 -49
- package/dist/contracts/mcp-oauth.js +0 -12
- package/dist/contracts/memory-pass.js +0 -21
- package/dist/contracts/model-catalog.js +0 -9
- package/dist/contracts/observation-request.js +0 -11
- package/dist/contracts/plan.js +0 -16
- package/dist/contracts/project-knowledge.js +0 -26
- package/dist/contracts/project-memory.js +0 -16
- package/dist/contracts/project-skills.js +0 -31
- package/dist/contracts/proof.js +0 -23
- package/dist/contracts/provider.js +0 -9
- package/dist/contracts/recipes.js +0 -16
- package/dist/contracts/release-check.js +0 -61
- package/dist/contracts/release-terms.js +0 -27
- package/dist/contracts/retention.js +0 -12
- package/dist/contracts/review-findings.js +0 -13
- package/dist/contracts/route-results.js +0 -15
- package/dist/contracts/route.js +0 -33
- package/dist/contracts/scope.js +0 -29
- package/dist/contracts/scout-report.js +0 -34
- package/dist/contracts/slack-callback.js +0 -11
- package/dist/contracts/sort-answer.js +0 -24
- package/dist/contracts/stage-output.js +0 -46
- package/dist/contracts/storage.js +0 -8
- package/dist/contracts/store-json.js +0 -41
- package/dist/contracts/subagent-turn.js +0 -23
- package/dist/contracts/task-sizing.js +0 -10
- package/dist/contracts/teams-callback.js +0 -7
- package/dist/contracts/telegram-callback.js +0 -27
- package/dist/contracts/trigger-payloads.js +0 -41
- package/dist/contracts/update-journal.js +0 -47
- package/dist/contracts/verification-receipt.js +0 -36
- package/dist/contracts/verification-view.js +0 -15
- package/dist/contracts/youiyoux-request.js +0 -26
- package/dist/control-setup.js +0 -7
- package/dist/control-ui.js +0 -3
- package/dist/controller-service.js +0 -4
- package/dist/controller-supervisor.js +0 -15
- package/dist/converse.js +3 -129
- package/dist/coordinator-proposals.js +1 -6
- package/dist/coordinator.js +0 -65
- package/dist/credentials-ui.js +0 -6
- package/dist/daemon.js +0 -137
- package/dist/database-reclaim.js +0 -3
- package/dist/decision.js +0 -78
- package/dist/demo-chat.js +4 -15
- package/dist/demo-sign-in.js +77 -0
- package/dist/demo.js +5 -194
- package/dist/deploy-gate.js +0 -20
- package/dist/deploy-lock.js +0 -4
- package/dist/deploy-phase.js +0 -22
- package/dist/deploy-rescue.js +0 -21
- package/dist/deprecations.js +0 -12
- package/dist/design/kit.css +9 -6
- package/dist/design/kit.js +2 -33
- package/dist/desktop-access.js +0 -9
- package/dist/desktop-bundle.js +1 -3
- package/dist/desktop-host.js +0 -34
- package/dist/desktop-update-gate.js +0 -8
- package/dist/desktop-update-recovery.js +1 -18
- package/dist/desktop-update.js +2 -48
- package/dist/digest-times.js +0 -2
- package/dist/disclosure.js +0 -5
- package/dist/discord-api.js +0 -6
- package/dist/discord-chat.js +0 -31
- package/dist/discord.js +0 -7
- package/dist/discover.js +0 -50
- package/dist/dispatch.js +61 -60
- package/dist/dispose.js +0 -208
- package/dist/doctor.js +0 -48
- package/dist/easy-start-args.js +7 -7
- package/dist/easy-start.js +32 -45
- package/dist/egress.js +1 -63
- package/dist/email-settings.js +0 -8
- package/dist/envelope.js +50 -86
- package/dist/eval-gate.js +1 -37
- package/dist/eval-hooks.js +0 -120
- package/dist/eval-oracle-main.js +0 -7
- package/dist/eval-oracle.js +3 -42
- package/dist/eval-world.js +1 -23
- package/dist/evals.js +6 -134
- package/dist/evidence-pack.js +0 -29
- package/dist/evidence-pair.js +0 -17
- package/dist/evidence.js +4 -280
- package/dist/exec.js +19 -404
- package/dist/exhaustion.js +0 -30
- package/dist/export-ui.js +0 -7
- package/dist/export.js +1 -38
- package/dist/failing-first.js +0 -6
- package/dist/fallback-schema.js +0 -5
- package/dist/fallback.js +0 -81
- package/dist/fast-start.js +0 -97
- package/dist/fast-terms.js +0 -3
- package/dist/fenced-check-coverage.js +0 -11
- package/dist/findings.js +1 -63
- package/dist/first-run.js +4 -57
- package/dist/first-tasks-child.js +0 -5
- package/dist/flaky-ci.js +1 -24
- package/dist/flaky-cli.js +0 -4
- package/dist/flaky.js +0 -43
- package/dist/fleet-schema.js +0 -11
- package/dist/flow-actions.js +0 -31
- package/dist/flow-browser.js +0 -42
- package/dist/flow-cadence.js +1 -24
- package/dist/flow-card-task.js +0 -11
- package/dist/flow-changed.js +0 -16
- package/dist/flow-code.js +1 -45
- package/dist/flow-draft.js +0 -17
- package/dist/flow-engine.js +2 -76
- package/dist/flow-gallery-ui.js +0 -28
- package/dist/flow-gallery.js +0 -54
- package/dist/flow-insights.js +0 -12
- package/dist/flow-items.js +0 -27
- package/dist/flow-live.js +0 -31
- package/dist/flow-people.js +0 -14
- package/dist/flow-pull-request.js +0 -32
- package/dist/flow-replies.js +0 -9
- package/dist/flow-result-card.js +0 -8
- package/dist/flow-schedule.js +0 -74
- package/dist/flow-scripts.js +0 -13
- package/dist/flow-secrets.js +0 -10
- package/dist/flow-send.js +0 -45
- package/dist/flow-share.js +0 -60
- package/dist/flow-sort.js +1 -24
- package/dist/flow-starters-ui.js +0 -2
- package/dist/flow-starters.js +0 -13
- package/dist/flow-steps.js +0 -80
- package/dist/flow-triggers.js +2 -256
- package/dist/flow-unattended-words.js +0 -13
- package/dist/flow-unattended.js +2 -115
- package/dist/flows-cli.js +2 -36
- package/dist/flows-ui.js +0 -51
- package/dist/flows.js +0 -158
- package/dist/folder-gate.js +0 -21
- package/dist/folder-look.js +0 -42
- package/dist/follow-through-brief.js +0 -6
- package/dist/follow-through-cli.js +0 -5
- package/dist/fonts.js +0 -13
- package/dist/gaps.js +0 -20
- package/dist/gate-failure.js +0 -7
- package/dist/git-floor.js +0 -12
- package/dist/git-incident.js +2 -38
- package/dist/git-views.js +0 -24
- package/dist/git.js +0 -31
- package/dist/github-import.js +0 -22
- package/dist/github-jobs.js +0 -12
- package/dist/google-mail.js +2 -27
- package/dist/grant.js +0 -110
- package/dist/graph.js +0 -108
- package/dist/guides.js +4 -15
- package/dist/handover-note.js +0 -12
- package/dist/health-cli.js +0 -2
- package/dist/home-groups.js +0 -15
- package/dist/html.js +0 -54
- package/dist/install-method.js +0 -12
- package/dist/integrations-ui.js +0 -15
- package/dist/integrations.js +7 -50
- package/dist/invoke.js +1 -381
- package/dist/is-record.js +0 -1
- package/dist/issues.js +0 -48
- package/dist/jsonl-discriminants.js +0 -6
- package/dist/keymap.js +2 -16
- package/dist/keys.js +0 -56
- package/dist/kits-ui.js +0 -3
- package/dist/kits.js +1 -24
- package/dist/knowledge-cli.js +0 -4
- package/dist/knowledge-ui.js +0 -8
- package/dist/landed-cleanup.js +0 -119
- package/dist/laptop-background.js +0 -85
- package/dist/laptop-service.js +0 -67
- package/dist/latency-timeline.js +2 -23
- package/dist/lead-about.js +0 -7
- package/dist/lead-answer-eval.js +0 -39
- package/dist/lead-capabilities.js +0 -19
- package/dist/lead-cli-live.js +0 -22
- package/dist/lead-cli.js +0 -27
- package/dist/lead-commitments.js +1 -27
- package/dist/lead-context.js +2 -42
- package/dist/lead-contract.js +0 -8
- package/dist/lead-doors.js +0 -105
- package/dist/lead-follow.js +0 -41
- package/dist/lead-identity.js +1 -4
- package/dist/lead-latency-schema.js +0 -13
- package/dist/lead-people.js +3 -18
- package/dist/lead-progress.js +0 -12
- package/dist/lead-queue-runtime.js +0 -26
- package/dist/lead-queue.js +0 -35
- package/dist/lead-route.js +0 -33
- package/dist/lead-status.js +0 -37
- package/dist/lead-sweep.js +0 -18
- package/dist/lead-tools.js +0 -160
- package/dist/lead-voice.js +0 -54
- package/dist/lead.js +2 -105
- package/dist/learning-child.js +0 -6
- package/dist/learning-look.js +0 -14
- package/dist/ledger-chain.js +0 -34
- package/dist/ledger-csv.js +0 -2
- package/dist/ledger-view.js +0 -3
- package/dist/lesson-notes.js +0 -56
- package/dist/limits-ui.js +0 -14
- package/dist/link.js +0 -79
- package/dist/live-backup.js +3 -33
- package/dist/live-bus.js +7 -81
- package/dist/live-children-read.js +4 -47
- package/dist/live-children.js +4 -44
- package/dist/live-detail.js +0 -17
- package/dist/live-input.js +5 -68
- package/dist/live-main-read.js +1 -14
- package/dist/live-notes.js +0 -12
- package/dist/live-open.js +1 -23
- package/dist/live-records.js +4 -151
- package/dist/live-reply.js +1 -51
- package/dist/live-terminal.js +12 -111
- package/dist/live.js +4 -130
- package/dist/local-owner-acts.js +168 -0
- package/dist/local-owner.js +15 -80
- package/dist/log.js +0 -8
- package/dist/login-secrets.js +2 -38
- package/dist/machine-check.js +0 -2
- package/dist/machine-identity.js +1 -46
- package/dist/mailbox.js +0 -30
- package/dist/maintenance.js +1 -3
- package/dist/mcp-connect.js +0 -88
- package/dist/mcp-core.js +0 -45
- package/dist/mcp-http.js +0 -13
- package/dist/mcp-oauth.js +0 -37
- package/dist/mcp-person.js +0 -11
- package/dist/mcp.js +3 -73
- package/dist/memory-cli.js +0 -3
- package/dist/memory-pass.js +0 -53
- package/dist/memory-tidy.js +0 -55
- package/dist/memory-use.js +2 -24
- package/dist/merge-checklist.js +21 -29
- package/dist/metrics.js +0 -10
- package/dist/mobile-viewport.js +0 -6
- package/dist/model-catalog.js +1 -33
- package/dist/model-choices.js +9 -84
- package/dist/model-names.js +0 -9
- package/dist/models-cli.js +0 -13
- package/dist/models-ui.js +0 -17
- package/dist/modes.js +0 -35
- package/dist/monitoring-settings.js +2 -27
- package/dist/monitoring-ui.js +2 -14
- package/dist/monitoring.js +2 -38
- package/dist/names.js +0 -39
- package/dist/needs-you.js +7 -70
- package/dist/never-index.js +0 -9
- package/dist/nightly-check.js +0 -74
- package/dist/nightly-github.js +0 -168
- package/dist/notification-delivery.js +0 -3
- package/dist/notification-rows.js +0 -17
- package/dist/oauth-run-token.js +1 -37
- package/dist/observations.js +0 -16
- package/dist/oidc.js +1 -20
- package/dist/onboard.js +4 -57
- package/dist/one-step-chat-schema.js +0 -15
- package/dist/openrouter-models.js +0 -6
- package/dist/operate-remote-arguments.js +2 -17
- package/dist/operate-remote.js +0 -33
- package/dist/operate.js +280 -2304
- package/dist/orphan-sweep.js +3 -37
- package/dist/page-work-contract.js +0 -3
- package/dist/password-bearer.js +1 -11
- package/dist/passwordless.js +0 -3
- package/dist/peek-cli.js +0 -46
- package/dist/peek.js +2 -61
- package/dist/people-audit-ui.js +0 -6
- package/dist/person-proof.js +0 -6
- package/dist/phase-routing.js +8 -183
- package/dist/plain-schema.js +0 -14
- package/dist/plain-words.js +18 -12
- package/dist/plan-auto.js +3 -18
- package/dist/plan-login.js +0 -16
- package/dist/plan.js +0 -68
- package/dist/plane-review.js +0 -56
- package/dist/planner-source.js +0 -96
- package/dist/planner.js +0 -117
- package/dist/policy-ui.js +0 -8
- package/dist/policy.js +0 -47
- package/dist/prepared-evidence.js +0 -5
- package/dist/principal.js +0 -29
- package/dist/probe.js +0 -30
- package/dist/process-custody.js +0 -15
- package/dist/process-liveness.js +0 -32
- package/dist/process-tree.js +3 -29
- package/dist/project-access.js +0 -10
- package/dist/project-admission.js +1 -41
- package/dist/project-cli.js +0 -6
- package/dist/project-concurrency.js +0 -35
- package/dist/project-delete-ui.js +4 -29
- package/dist/project-delete.js +1 -73
- package/dist/project-demo.js +0 -13
- package/dist/project-file.js +0 -2
- package/dist/project-identity.js +0 -41
- package/dist/project-knowledge.js +0 -39
- package/dist/project-learning.js +3 -55
- package/dist/project-memory.js +2 -45
- package/dist/project-outcomes.js +0 -6
- package/dist/project-sandbox.js +0 -23
- package/dist/project-skills.js +0 -12
- package/dist/project-tools.js +6 -184
- package/dist/project.js +0 -48
- package/dist/prompt.js +0 -31
- package/dist/proof.js +0 -220
- package/dist/proposal.js +0 -50
- package/dist/protected-storage-look.js +0 -6
- package/dist/protected-storage.js +1 -84
- package/dist/provider-auth.js +3 -69
- package/dist/provider-capture.js +1 -15
- package/dist/provider-connection.js +0 -8
- package/dist/provider-home.js +0 -25
- package/dist/provider-limits.js +0 -14
- package/dist/provider.js +0 -324
- package/dist/public-access.js +11 -30
- package/dist/public-check.js +0 -16
- package/dist/publish.js +1 -150
- package/dist/pull-request-flow.js +6 -74
- package/dist/pull-request-schema.js +0 -4
- package/dist/pull-request-ui.js +0 -5
- package/dist/pulls.js +0 -80
- package/dist/push.js +5 -89
- package/dist/quick-start.js +1 -23
- package/dist/read-executor-worker.js +0 -1
- package/dist/read-executor.js +0 -10
- package/dist/read-only-request.js +0 -7
- package/dist/recipe-ui.js +0 -6
- package/dist/recipes.js +0 -13
- package/dist/release-adapters.js +6 -214
- package/dist/release-approval.js +0 -74
- package/dist/release-authority.js +0 -42
- package/dist/release-auto.js +0 -142
- package/dist/release-card.js +26 -103
- package/dist/release-carry.js +0 -132
- package/dist/release-ci-hold.js +0 -20
- package/dist/release-cli.js +0 -46
- package/dist/release-coverage.js +0 -16
- package/dist/release-gate.js +0 -30
- package/dist/release-git.js +0 -24
- package/dist/release-links.js +0 -17
- package/dist/release-net.js +0 -42
- package/dist/release-next.js +0 -25
- package/dist/release-recheck.js +0 -89
- package/dist/release-refusal.js +0 -18
- package/dist/release-view.js +0 -5
- package/dist/release.js +7 -341
- package/dist/releases.js +0 -49
- package/dist/remote-audit.js +0 -25
- package/dist/remote-command.js +0 -16
- package/dist/remote-destination.js +5 -26
- package/dist/remote-exec.js +1 -27
- package/dist/remote-main.js +1 -53
- package/dist/remote-run.js +0 -5
- package/dist/remote.js +0 -49
- package/dist/render.js +0 -133
- package/dist/reply-shape.js +0 -85
- package/dist/reply-voice.js +0 -7
- package/dist/report-summary.js +0 -5
- package/dist/reported-usage.js +0 -30
- package/dist/repos.js +9 -62
- package/dist/repository-context.js +1 -24
- package/dist/request-budget-ui.js +0 -4
- package/dist/request-budget.js +0 -23
- package/dist/restart-certification.js +0 -37
- package/dist/result-actions.js +0 -62
- package/dist/result-acts.js +0 -34
- package/dist/result-completion.js +9 -28
- package/dist/result-evidence-readers.js +0 -3
- package/dist/result-follow-ups.js +1 -39
- package/dist/result-review.js +0 -86
- package/dist/result-shots.js +0 -39
- package/dist/retention-ui.js +0 -7
- package/dist/retention.js +2 -46
- package/dist/review-context.js +0 -129
- package/dist/review-evidence.js +0 -4
- package/dist/review-switch.js +1 -7
- package/dist/reviewer.js +0 -35
- package/dist/route-change-check.js +0 -2
- package/dist/route-change.js +0 -16
- package/dist/route-hooks.js +0 -27
- package/dist/route-results.js +2 -58
- package/dist/route-rules.js +1 -106
- package/dist/route-savings.js +0 -36
- package/dist/route-store.js +1 -133
- package/dist/run-closeout.js +2 -50
- package/dist/run-efficiency.js +2 -44
- package/dist/run-ending.js +0 -13
- package/dist/runner-process.js +0 -33
- package/dist/runner.js +17 -189
- package/dist/sample-project.js +2 -27
- package/dist/sandbox-launch.js +4 -25
- package/dist/sandbox-runtime.js +1 -88
- package/dist/scan.js +0 -27
- package/dist/scope.js +88 -566
- package/dist/scout-browser-lock.js +0 -6
- package/dist/scout-browser.js +2 -68
- package/dist/scout-net.js +1 -32
- package/dist/scout-report.js +0 -22
- package/dist/scout.js +1 -116
- package/dist/secret-mint.js +0 -6
- package/dist/serve.js +29 -564
- package/dist/server/agents-computers.js +0 -10
- package/dist/server/agents-live-filed.js +0 -13
- package/dist/server/agents-live-lead.js +0 -19
- package/dist/server/agents-live-room.js +0 -19
- package/dist/server/chat.js +2 -194
- package/dist/server/chrome.js +17 -263
- package/dist/server/console.css +4 -4
- package/dist/server/edge-refusal.js +0 -3
- package/dist/server/flows.js +5 -74
- package/dist/server/guards.js +9 -86
- package/dist/server/handler-registry.js +0 -2
- package/dist/server/home-asks.js +1 -22
- package/dist/server/home.js +1 -30
- package/dist/server/http.js +0 -82
- package/dist/server/in-place.js +0 -15
- package/dist/server/kit-standalone.js +0 -20
- package/dist/server/kit.js +2 -114
- package/dist/server/last-checks.js +0 -2
- package/dist/server/live.js +1 -36
- package/dist/server/merge-ready-view.js +0 -6
- package/dist/server/mutation-key.js +3 -40
- package/dist/server/pages-assets.js +0 -16
- package/dist/server/pages.js +7 -195
- package/dist/server/people-tokens.js +3 -101
- package/dist/server/remote-hooks.js +0 -13
- package/dist/server/remote.js +0 -28
- package/dist/server/render-chat.js +8 -144
- package/dist/server/render-code-map.js +0 -5
- package/dist/server/render-flaky.js +0 -8
- package/dist/server/render-follow-through.js +2 -5
- package/dist/server/render-history.js +2 -34
- package/dist/server/render-new-task.js +2 -29
- package/dist/server/render-pages.js +1 -111
- package/dist/server/render-people.js +2 -46
- package/dist/server/render-projects.js +15 -32
- package/dist/server/render-release.js +1 -14
- package/dist/server/render-results.js +4 -355
- package/dist/server/render-settings.js +0 -15
- package/dist/server/render-tasks.js +17 -497
- package/dist/server/request-context.js +2 -9
- package/dist/server/retired-routes.js +0 -11
- package/dist/server/route-policy.js +0 -3
- package/dist/server/route-table.js +8 -133
- package/dist/server/runtime.js +0 -1
- package/dist/server/session.js +0 -28
- package/dist/server/settings.js +40 -246
- package/dist/server/signup-gate.js +0 -11
- package/dist/server/sweeps.js +0 -6
- package/dist/server/task-views.js +12 -227
- package/dist/server/tasks.js +37 -531
- package/dist/server/terminals.js +2 -46
- package/dist/server/welcome.js +2 -22
- package/dist/server-telemetry.js +0 -9
- package/dist/settings-groups-ui.js +50 -63
- package/dist/settings-kit-script.js +0 -19
- package/dist/settings-kit.js +0 -63
- package/dist/settings-proofs.js +0 -23
- package/dist/setup-guide.js +1 -9
- package/dist/shared-deps.js +9 -84
- package/dist/sign-in-guard.js +0 -27
- package/dist/skills-ui.js +0 -2
- package/dist/skills.js +2 -54
- package/dist/slack-api.js +0 -3
- package/dist/slack-chat.js +0 -25
- package/dist/slack-settings.js +0 -1
- package/dist/slack-socket.js +0 -5
- package/dist/slack.js +0 -4
- package/dist/sleep.js +0 -1
- package/dist/source-key.js +0 -10
- package/dist/spend-report.js +0 -29
- package/dist/spend-ui.js +0 -26
- package/dist/spend.js +0 -40
- package/dist/sqlite-runtime.js +0 -2
- package/dist/sqlite-telemetry.js +0 -9
- package/dist/sso-settings.js +0 -13
- package/dist/sso-ui.js +0 -2
- package/dist/staged-runtimes.js +5 -39
- package/dist/steer-capabilities.js +1 -7
- package/dist/steer-controls.js +0 -10
- package/dist/steer-live.js +0 -31
- package/dist/steer-mailbox.js +4 -65
- package/dist/steer-status.js +0 -7
- package/dist/stop-proof.js +5 -62
- package/dist/storage-sweep-child.js +1 -5
- package/dist/storage-sweep-process.js +2 -20
- package/dist/storage-sweep-schedule.js +0 -32
- package/dist/storage-sweep.js +2 -51
- package/dist/storage-ui.js +0 -18
- package/dist/storage.js +0 -31
- package/dist/store-baseline.js +0 -14
- package/dist/store.js +109 -4763
- package/dist/stream-scope.js +0 -16
- package/dist/structured-output.js +0 -39
- package/dist/style-asset.js +0 -2
- package/dist/subagent-admin.js +0 -9
- package/dist/subagent-desk.js +0 -29
- package/dist/subagent-memory.js +0 -38
- package/dist/subagent-question.js +0 -29
- package/dist/subagent-tools.js +1 -60
- package/dist/subagent-week.js +0 -28
- package/dist/subagent-work.js +1 -39
- package/dist/subagents-ui.js +1 -13
- package/dist/subagents.js +0 -40
- package/dist/subscription-chat.js +1 -42
- package/dist/summary.js +0 -19
- package/dist/surface.js +8 -73
- package/dist/sweep-gate.js +0 -2
- package/dist/sweep-quarantine.js +2 -13
- package/dist/sync.js +0 -47
- package/dist/tailnet.js +0 -9
- package/dist/tamper-scan.js +0 -15
- package/dist/task-activity.js +1 -16
- package/dist/task-aliases.js +0 -3
- package/dist/task-archive.js +0 -7
- package/dist/task-base.js +0 -18
- package/dist/task-composer.js +0 -2
- package/dist/task-control.js +0 -74
- package/dist/task-live.js +0 -23
- package/dist/task-moves.js +0 -28
- package/dist/task-outcome-cli.js +66 -19
- package/dist/task-review-brief.js +0 -7
- package/dist/task-sizing.js +0 -47
- package/dist/task-source.js +0 -23
- package/dist/task-status.js +0 -106
- package/dist/task-text.js +0 -12
- package/dist/team-chat-authorization.js +0 -3
- package/dist/team-contract.js +0 -2
- package/dist/team-http.js +0 -4
- package/dist/team-leads.js +1 -16
- package/dist/team-runtime.js +0 -13
- package/dist/team-ui.js +0 -1
- package/dist/team-updates.js +0 -4
- package/dist/teams-api.js +0 -12
- package/dist/teams-chat.js +0 -28
- package/dist/teams.js +0 -12
- package/dist/teardown-git.js +6 -294
- package/dist/telegram-flow.js +0 -51
- package/dist/telegram-lead.js +2 -203
- package/dist/telegram-live.js +1 -42
- package/dist/telegram-progress.js +0 -18
- package/dist/telegram-settings.js +0 -7
- package/dist/telegram-status.js +0 -46
- package/dist/telegram-team.js +1 -33
- package/dist/telegram.js +6 -454
- package/dist/templates.js +0 -24
- package/dist/terminal-catalog.js +2 -20
- package/dist/terminal-text.js +0 -12
- package/dist/test-infra.js +0 -50
- package/dist/test-temp.js +3 -26
- package/dist/text-limits.js +0 -92
- package/dist/tidy.js +0 -76
- package/dist/tier-report.js +0 -2
- package/dist/token-notices.js +1 -9
- package/dist/tokens-cli.js +0 -13
- package/dist/tool-broker.js +2 -53
- package/dist/tool-launcher.js +0 -14
- package/dist/tool-secret-store.js +3 -125
- package/dist/toolroll-update-cli.js +0 -9
- package/dist/toolroll-update-ui.js +0 -14
- package/dist/toolroll-update.js +13 -252
- package/dist/tools-ui.js +0 -17
- package/dist/transitions-recipes.js +0 -2
- package/dist/tree-proof.js +0 -23
- package/dist/tui-contract.js +0 -8
- package/dist/tui-source.js +91 -40
- package/dist/tui.js +54 -54
- package/dist/typed-start.js +0 -27
- package/dist/unfenced-test-support.js +0 -5
- package/dist/up-processes.js +1 -40
- package/dist/up-role-child.js +1 -13
- package/dist/update-notice.js +0 -1
- package/dist/vanished-retry.js +0 -40
- package/dist/verification-evidence.js +0 -39
- package/dist/version.js +0 -1
- package/dist/wake-hub.js +0 -28
- package/dist/webhook-limits.js +0 -7
- package/dist/webhook-readers.js +0 -30
- package/dist/webhook-signing.js +0 -14
- package/dist/webhooks.js +0 -54
- package/dist/welcome-facts.js +2 -14
- package/dist/when-html.js +0 -27
- package/dist/work-index.js +26 -98
- package/dist/work-summary.js +2 -17
- package/dist/workspace-motion.js +0 -2
- package/dist/workspace-revision.js +1 -21
- package/dist/workspace-ui.js +15 -135
- package/dist/worktree-notices.js +0 -3
- package/dist/worktree.js +0 -308
- package/dist/writes-mode.js +0 -1
- package/dist/youiyoux-intake.js +4 -159
- package/package.json +5 -4
- package/dist/accent-colors.d.ts +0 -51
- package/dist/acp-agents.d.ts +0 -43
- package/dist/acp-attest.d.ts +0 -44
- package/dist/acp-check.d.ts +0 -37
- package/dist/acp-client.d.ts +0 -163
- package/dist/acp-inspect.d.ts +0 -23
- package/dist/action-ledger.d.ts +0 -27
- package/dist/activity-line.d.ts +0 -29
- package/dist/actor.d.ts +0 -11
- package/dist/agent-board.d.ts +0 -229
- package/dist/agent-fence.d.ts +0 -479
- package/dist/agent-onboard.d.ts +0 -158
- package/dist/agent-pulse.d.ts +0 -43
- package/dist/agent-state-words.d.ts +0 -19
- package/dist/agent-state.d.ts +0 -65
- package/dist/agent-turns.d.ts +0 -52
- package/dist/agentconfig.d.ts +0 -191
- package/dist/agents-board.d.ts +0 -145
- package/dist/agents-live.d.ts +0 -31
- package/dist/api-tokens.d.ts +0 -80
- package/dist/approval-authority.d.ts +0 -51
- package/dist/approval-password.d.ts +0 -31
- package/dist/approval-policy.d.ts +0 -69
- package/dist/approval-rules-ui.d.ts +0 -40
- package/dist/assignment-adapters.d.ts +0 -152
- package/dist/assignment-brief.d.ts +0 -83
- package/dist/assignment-delivery.d.ts +0 -86
- package/dist/assignment-presentation.d.ts +0 -37
- package/dist/assignment-status.d.ts +0 -71
- package/dist/assignment-ui.d.ts +0 -68
- package/dist/assignment.d.ts +0 -318
- package/dist/attest.d.ts +0 -59
- package/dist/audit-cli.d.ts +0 -17
- package/dist/backend.d.ts +0 -97
- package/dist/backup-ui.d.ts +0 -32
- package/dist/backup.d.ts +0 -92
- package/dist/batch-checks.d.ts +0 -15
- package/dist/batch-policy.d.ts +0 -23
- package/dist/beads.d.ts +0 -34
- package/dist/bin.d.ts +0 -2
- package/dist/board.d.ts +0 -134
- package/dist/boot-identity.d.ts +0 -64
- package/dist/bounded-spawn.d.ts +0 -57
- package/dist/brand-icons.d.ts +0 -168
- package/dist/brand-mark.d.ts +0 -28
- package/dist/brief-fence.d.ts +0 -9
- package/dist/browser-crew.d.ts +0 -12
- package/dist/browser-shell.d.ts +0 -9
- package/dist/browser-workspace.d.ts +0 -1972
- package/dist/budget-alerts.d.ts +0 -19
- package/dist/build-review.d.ts +0 -38
- package/dist/builder-restart.d.ts +0 -21
- package/dist/builder.d.ts +0 -409
- package/dist/canonical-json.d.ts +0 -14
- package/dist/capscan.d.ts +0 -35
- package/dist/card-catalog.d.ts +0 -209
- package/dist/card-cli.d.ts +0 -43
- package/dist/card-render.d.ts +0 -43
- package/dist/card-sources.d.ts +0 -68
- package/dist/chat-acceptance.d.ts +0 -74
- package/dist/chat-actions.d.ts +0 -460
- package/dist/chat-admission.d.ts +0 -19
- package/dist/chat-approval.d.ts +0 -58
- package/dist/chat-ask.d.ts +0 -32
- package/dist/chat-card-part.d.ts +0 -11
- package/dist/chat-card.d.ts +0 -46
- package/dist/chat-channel.d.ts +0 -126
- package/dist/chat-continuity.d.ts +0 -32
- package/dist/chat-controls.d.ts +0 -117
- package/dist/chat-core.d.ts +0 -177
- package/dist/chat-decide.d.ts +0 -269
- package/dist/chat-delivery-state.d.ts +0 -132
- package/dist/chat-delivery.d.ts +0 -71
- package/dist/chat-display.d.ts +0 -1
- package/dist/chat-evidence.d.ts +0 -123
- package/dist/chat-flow.d.ts +0 -70
- package/dist/chat-follow.d.ts +0 -20
- package/dist/chat-inbox.d.ts +0 -57
- package/dist/chat-live-schema.d.ts +0 -17
- package/dist/chat-live.d.ts +0 -161
- package/dist/chat-message-states.d.ts +0 -75
- package/dist/chat-messages.d.ts +0 -338
- package/dist/chat-migration.d.ts +0 -30
- package/dist/chat-polish.d.ts +0 -17
- package/dist/chat-quiet.d.ts +0 -40
- package/dist/chat-review.d.ts +0 -51
- package/dist/chat-rooms.d.ts +0 -123
- package/dist/chat-settings-page.d.ts +0 -43
- package/dist/chat-task-actions.d.ts +0 -59
- package/dist/chat-terms.d.ts +0 -29
- package/dist/chat-voice.d.ts +0 -69
- package/dist/chat-warmth.d.ts +0 -21
- package/dist/check-access.d.ts +0 -54
- package/dist/check-facts.d.ts +0 -126
- package/dist/check-failure.d.ts +0 -113
- package/dist/check-levels-ui.d.ts +0 -36
- package/dist/check-levels.d.ts +0 -70
- package/dist/check-load.d.ts +0 -85
- package/dist/check-only-standing.d.ts +0 -36
- package/dist/check-only.d.ts +0 -15
- package/dist/check-progress.d.ts +0 -78
- package/dist/check-repair.d.ts +0 -47
- package/dist/check-report.d.ts +0 -177
- package/dist/check-stamp.d.ts +0 -46
- package/dist/checkout-cleanup.d.ts +0 -157
- package/dist/checkout-proof.d.ts +0 -28
- package/dist/child-database.d.ts +0 -12
- package/dist/claim.d.ts +0 -627
- package/dist/claude-print.d.ts +0 -12
- package/dist/cli-fast.d.ts +0 -8
- package/dist/cli-help.d.ts +0 -8
- package/dist/cli-http.d.ts +0 -58
- package/dist/cli.d.ts +0 -149
- package/dist/code-extract.d.ts +0 -44
- package/dist/code-map-acts.d.ts +0 -24
- package/dist/code-map-admission.d.ts +0 -52
- package/dist/code-map-build.d.ts +0 -63
- package/dist/code-map-cli.d.ts +0 -153
- package/dist/code-map-main.d.ts +0 -1
- package/dist/code-map-read.d.ts +0 -106
- package/dist/code-map-report.d.ts +0 -37
- package/dist/code-map-shape.d.ts +0 -172
- package/dist/code-map-store.d.ts +0 -136
- package/dist/codex-limits.d.ts +0 -15
- package/dist/coding-context.d.ts +0 -18
- package/dist/coding-handoff.d.ts +0 -39
- package/dist/coding-provider.d.ts +0 -88
- package/dist/coding-shipping-ui.d.ts +0 -5
- package/dist/coding-types.d.ts +0 -16
- package/dist/coding-ui.d.ts +0 -19
- package/dist/coding-update.d.ts +0 -28
- package/dist/coding-workspace.d.ts +0 -141
- package/dist/commit-extract.d.ts +0 -135
- package/dist/connect-cli.d.ts +0 -34
- package/dist/console-chrome.d.ts +0 -41
- package/dist/console-instance.d.ts +0 -157
- package/dist/container-state.d.ts +0 -5
- package/dist/containment.d.ts +0 -205
- package/dist/contract-changes.d.ts +0 -52
- package/dist/contracts/acceptance-terms.d.ts +0 -14
- package/dist/contracts/chat-actions.d.ts +0 -465
- package/dist/contracts/chat-callback-rows.d.ts +0 -59
- package/dist/contracts/chat-card.d.ts +0 -91
- package/dist/contracts/chat-content.d.ts +0 -551
- package/dist/contracts/chat-tables.d.ts +0 -12
- package/dist/contracts/cli.d.ts +0 -987
- package/dist/contracts/coding-activity.d.ts +0 -64
- package/dist/contracts/coding-context.d.ts +0 -97
- package/dist/contracts/coding-handoff.d.ts +0 -44
- package/dist/contracts/coding-workspace.d.ts +0 -165
- package/dist/contracts/console-api.d.ts +0 -539
- package/dist/contracts/contract-test.d.ts +0 -45
- package/dist/contracts/contract.d.ts +0 -92
- package/dist/contracts/decision.d.ts +0 -45
- package/dist/contracts/diff-stat.d.ts +0 -58
- package/dist/contracts/discord-callback.d.ts +0 -45
- package/dist/contracts/flow-card.d.ts +0 -53
- package/dist/contracts/flow-propose.d.ts +0 -334
- package/dist/contracts/flow-send.d.ts +0 -245
- package/dist/contracts/flow.d.ts +0 -19565
- package/dist/contracts/gateway-tools.d.ts +0 -472
- package/dist/contracts/handoff.d.ts +0 -91
- package/dist/contracts/health.d.ts +0 -82
- package/dist/contracts/integration-metadata.d.ts +0 -100
- package/dist/contracts/lead-context.d.ts +0 -165
- package/dist/contracts/lead-tools.d.ts +0 -2312
- package/dist/contracts/mcp-oauth.d.ts +0 -53
- package/dist/contracts/memory-pass.d.ts +0 -157
- package/dist/contracts/model-catalog.d.ts +0 -21
- package/dist/contracts/observation-request.d.ts +0 -37
- package/dist/contracts/plan.d.ts +0 -58
- package/dist/contracts/project-knowledge.d.ts +0 -159
- package/dist/contracts/project-memory.d.ts +0 -119
- package/dist/contracts/project-skills.d.ts +0 -120
- package/dist/contracts/proof.d.ts +0 -136
- package/dist/contracts/provider.d.ts +0 -40
- package/dist/contracts/recipes.d.ts +0 -166
- package/dist/contracts/release-check.d.ts +0 -371
- package/dist/contracts/release-terms.d.ts +0 -107
- package/dist/contracts/retention.d.ts +0 -42
- package/dist/contracts/review-findings.d.ts +0 -46
- package/dist/contracts/route-results.d.ts +0 -121
- package/dist/contracts/route.d.ts +0 -897
- package/dist/contracts/scope.d.ts +0 -105
- package/dist/contracts/scout-report.d.ts +0 -234
- package/dist/contracts/slack-callback.d.ts +0 -43
- package/dist/contracts/sort-answer.d.ts +0 -83
- package/dist/contracts/stage-output.d.ts +0 -127
- package/dist/contracts/storage.d.ts +0 -37
- package/dist/contracts/store-json.d.ts +0 -313
- package/dist/contracts/subagent-turn.d.ts +0 -43
- package/dist/contracts/task-sizing.d.ts +0 -24
- package/dist/contracts/teams-callback.d.ts +0 -13
- package/dist/contracts/telegram-callback.d.ts +0 -120
- package/dist/contracts/trigger-payloads.d.ts +0 -389
- package/dist/contracts/update-journal.d.ts +0 -254
- package/dist/contracts/verification-receipt.d.ts +0 -200
- package/dist/contracts/verification-view.d.ts +0 -102
- package/dist/contracts/youiyoux-request.d.ts +0 -248
- package/dist/control-setup.d.ts +0 -44
- package/dist/control-ui.d.ts +0 -37
- package/dist/controller-service.d.ts +0 -1
- package/dist/controller-supervisor.d.ts +0 -38
- package/dist/converse.d.ts +0 -316
- package/dist/coordinator-proposals.d.ts +0 -29
- package/dist/coordinator.d.ts +0 -186
- package/dist/credentials-ui.d.ts +0 -33
- package/dist/daemon.d.ts +0 -226
- package/dist/database-reclaim.d.ts +0 -4
- package/dist/decision.d.ts +0 -119
- package/dist/demo-chat.d.ts +0 -32
- package/dist/demo.d.ts +0 -153
- package/dist/deploy-gate.d.ts +0 -20
- package/dist/deploy-lock.d.ts +0 -8
- package/dist/deploy-phase.d.ts +0 -37
- package/dist/deploy-rescue.d.ts +0 -42
- package/dist/deprecations.d.ts +0 -20
- package/dist/design/kit.d.ts +0 -216
- package/dist/desktop-access.d.ts +0 -28
- package/dist/desktop-bundle.d.ts +0 -16
- package/dist/desktop-host.d.ts +0 -54
- package/dist/desktop-update-gate.d.ts +0 -12
- package/dist/desktop-update-recovery.d.ts +0 -14
- package/dist/desktop-update.d.ts +0 -147
- package/dist/digest-times.d.ts +0 -3
- package/dist/disclosure.d.ts +0 -6
- package/dist/discord-api.d.ts +0 -24
- package/dist/discord-chat.d.ts +0 -27
- package/dist/discord-settings.d.ts +0 -4
- package/dist/discord.d.ts +0 -10
- package/dist/discover.d.ts +0 -75
- package/dist/dispatch.d.ts +0 -123
- package/dist/dispose.d.ts +0 -194
- package/dist/doctor.d.ts +0 -67
- package/dist/easy-start-args.d.ts +0 -13
- package/dist/easy-start.d.ts +0 -77
- package/dist/egress.d.ts +0 -121
- package/dist/email-settings.d.ts +0 -34
- package/dist/envelope.d.ts +0 -47
- package/dist/eval-gate.d.ts +0 -51
- package/dist/eval-hooks.d.ts +0 -94
- package/dist/eval-oracle-main.d.ts +0 -1
- package/dist/eval-oracle.d.ts +0 -60
- package/dist/eval-world.d.ts +0 -17
- package/dist/evals.d.ts +0 -299
- package/dist/evidence-pack.d.ts +0 -186
- package/dist/evidence-pair.d.ts +0 -53
- package/dist/evidence.d.ts +0 -371
- package/dist/exec.d.ts +0 -355
- package/dist/exhaustion.d.ts +0 -58
- package/dist/export-ui.d.ts +0 -11
- package/dist/export.d.ts +0 -48
- package/dist/failing-first.d.ts +0 -31
- package/dist/fallback-schema.d.ts +0 -8
- package/dist/fallback.d.ts +0 -138
- package/dist/fast-start.d.ts +0 -213
- package/dist/fast-terms.d.ts +0 -9
- package/dist/fenced-check-coverage.d.ts +0 -62
- package/dist/findings.d.ts +0 -224
- package/dist/first-run.d.ts +0 -197
- package/dist/first-tasks-child.d.ts +0 -1
- package/dist/flaky-ci.d.ts +0 -31
- package/dist/flaky-cli.d.ts +0 -60
- package/dist/flaky.d.ts +0 -83
- package/dist/fleet-schema.d.ts +0 -17
- package/dist/flow-actions.d.ts +0 -79
- package/dist/flow-browser.d.ts +0 -103
- package/dist/flow-cadence.d.ts +0 -48
- package/dist/flow-card-task.d.ts +0 -11
- package/dist/flow-changed.d.ts +0 -14
- package/dist/flow-code.d.ts +0 -84
- package/dist/flow-draft.d.ts +0 -42
- package/dist/flow-engine.d.ts +0 -82
- package/dist/flow-gallery-ui.d.ts +0 -73
- package/dist/flow-gallery.d.ts +0 -147
- package/dist/flow-insights.d.ts +0 -104
- package/dist/flow-items.d.ts +0 -37
- package/dist/flow-live.d.ts +0 -16
- package/dist/flow-people.d.ts +0 -23
- package/dist/flow-pull-request.d.ts +0 -14
- package/dist/flow-replies.d.ts +0 -48
- package/dist/flow-result-card.d.ts +0 -22
- package/dist/flow-schedule.d.ts +0 -154
- package/dist/flow-scripts.d.ts +0 -31
- package/dist/flow-secrets.d.ts +0 -13
- package/dist/flow-send.d.ts +0 -54
- package/dist/flow-share.d.ts +0 -78
- package/dist/flow-sort.d.ts +0 -63
- package/dist/flow-starters-ui.d.ts +0 -15
- package/dist/flow-starters.d.ts +0 -63
- package/dist/flow-steps.d.ts +0 -52
- package/dist/flow-triggers.d.ts +0 -303
- package/dist/flow-unattended-words.d.ts +0 -48
- package/dist/flow-unattended.d.ts +0 -259
- package/dist/flows-cli.d.ts +0 -358
- package/dist/flows-ui.d.ts +0 -70
- package/dist/flows.d.ts +0 -136
- package/dist/folder-gate.d.ts +0 -32
- package/dist/folder-look.d.ts +0 -110
- package/dist/follow-through-brief.d.ts +0 -12
- package/dist/follow-through-cli.d.ts +0 -23
- package/dist/fonts.d.ts +0 -19
- package/dist/gaps.d.ts +0 -35
- package/dist/gate-failure.d.ts +0 -40
- package/dist/git-floor.d.ts +0 -16
- package/dist/git-incident.d.ts +0 -65
- package/dist/git-views.d.ts +0 -20
- package/dist/git.d.ts +0 -54
- package/dist/github-import.d.ts +0 -62
- package/dist/github-jobs.d.ts +0 -25
- package/dist/google-mail.d.ts +0 -59
- package/dist/grant.d.ts +0 -136
- package/dist/graph.d.ts +0 -164
- package/dist/guides.d.ts +0 -22
- package/dist/handover-note.d.ts +0 -33
- package/dist/health-cli.d.ts +0 -3
- package/dist/home-groups.d.ts +0 -39
- package/dist/html.d.ts +0 -85
- package/dist/install-method.d.ts +0 -17
- package/dist/integrations-ui.d.ts +0 -17
- package/dist/integrations.d.ts +0 -138
- package/dist/invoke.d.ts +0 -228
- package/dist/is-record.d.ts +0 -2
- package/dist/issues.d.ts +0 -41
- package/dist/jsonl-discriminants.d.ts +0 -11
- package/dist/keymap.d.ts +0 -41
- package/dist/keys.d.ts +0 -108
- package/dist/kits-ui.d.ts +0 -16
- package/dist/kits.d.ts +0 -88
- package/dist/knowledge-cli.d.ts +0 -132
- package/dist/knowledge-ui.d.ts +0 -45
- package/dist/landed-cleanup.d.ts +0 -175
- package/dist/laptop-background.d.ts +0 -187
- package/dist/laptop-service.d.ts +0 -111
- package/dist/latency-timeline.d.ts +0 -46
- package/dist/lead-about.d.ts +0 -35
- package/dist/lead-answer-eval.d.ts +0 -93
- package/dist/lead-capabilities.d.ts +0 -57
- package/dist/lead-cli-live.d.ts +0 -56
- package/dist/lead-cli.d.ts +0 -58
- package/dist/lead-commitments.d.ts +0 -84
- package/dist/lead-context.d.ts +0 -45
- package/dist/lead-contract.d.ts +0 -10
- package/dist/lead-doors.d.ts +0 -122
- package/dist/lead-follow.d.ts +0 -26
- package/dist/lead-identity.d.ts +0 -23
- package/dist/lead-latency-schema.d.ts +0 -24
- package/dist/lead-people.d.ts +0 -55
- package/dist/lead-progress.d.ts +0 -67
- package/dist/lead-queue-runtime.d.ts +0 -46
- package/dist/lead-queue.d.ts +0 -104
- package/dist/lead-route.d.ts +0 -56
- package/dist/lead-status.d.ts +0 -116
- package/dist/lead-sweep.d.ts +0 -67
- package/dist/lead-tools.d.ts +0 -167
- package/dist/lead-voice.d.ts +0 -85
- package/dist/lead.d.ts +0 -142
- package/dist/learning-child.d.ts +0 -1
- package/dist/learning-look.d.ts +0 -25
- package/dist/ledger-chain.d.ts +0 -46
- package/dist/ledger-csv.d.ts +0 -4
- package/dist/ledger-view.d.ts +0 -27
- package/dist/lesson-notes.d.ts +0 -81
- package/dist/limits-ui.d.ts +0 -34
- package/dist/link.d.ts +0 -72
- package/dist/live-backup.d.ts +0 -39
- package/dist/live-bus.d.ts +0 -141
- package/dist/live-children-read.d.ts +0 -52
- package/dist/live-children.d.ts +0 -73
- package/dist/live-detail.d.ts +0 -27
- package/dist/live-input.d.ts +0 -68
- package/dist/live-main-read.d.ts +0 -19
- package/dist/live-notes.d.ts +0 -20
- package/dist/live-open.d.ts +0 -28
- package/dist/live-records.d.ts +0 -149
- package/dist/live-reply.d.ts +0 -83
- package/dist/live-terminal.d.ts +0 -273
- package/dist/live.d.ts +0 -152
- package/dist/local-owner.d.ts +0 -124
- package/dist/log.d.ts +0 -7
- package/dist/login-secrets.d.ts +0 -60
- package/dist/machine-check.d.ts +0 -16
- package/dist/machine-identity.d.ts +0 -75
- package/dist/mailbox.d.ts +0 -57
- package/dist/maintenance.d.ts +0 -13
- package/dist/mcp-connect.d.ts +0 -181
- package/dist/mcp-core.d.ts +0 -110
- package/dist/mcp-http.d.ts +0 -32
- package/dist/mcp-oauth.d.ts +0 -92
- package/dist/mcp-person.d.ts +0 -22
- package/dist/mcp.d.ts +0 -20
- package/dist/memory-cli.d.ts +0 -768
- package/dist/memory-pass.d.ts +0 -151
- package/dist/memory-tidy.d.ts +0 -181
- package/dist/memory-use.d.ts +0 -35
- package/dist/merge-checklist.d.ts +0 -55
- package/dist/metrics.d.ts +0 -6
- package/dist/mobile-viewport.d.ts +0 -7
- package/dist/model-catalog.d.ts +0 -123
- package/dist/model-choices.d.ts +0 -235
- package/dist/model-names.d.ts +0 -6
- package/dist/models-cli.d.ts +0 -307
- package/dist/models-ui.d.ts +0 -161
- package/dist/modes.d.ts +0 -99
- package/dist/monitoring-settings.d.ts +0 -44
- package/dist/monitoring-ui.d.ts +0 -23
- package/dist/monitoring.d.ts +0 -34
- package/dist/names.d.ts +0 -67
- package/dist/needs-you.d.ts +0 -164
- package/dist/never-index.d.ts +0 -3
- package/dist/nightly-check.d.ts +0 -107
- package/dist/nightly-github.d.ts +0 -318
- package/dist/notification-delivery.d.ts +0 -19
- package/dist/notification-rows.d.ts +0 -30
- package/dist/oauth-run-token.d.ts +0 -51
- package/dist/observations.d.ts +0 -36
- package/dist/oidc.d.ts +0 -71
- package/dist/onboard.d.ts +0 -108
- package/dist/one-step-chat-schema.d.ts +0 -22
- package/dist/openrouter-models.d.ts +0 -34
- package/dist/operate-remote-arguments.d.ts +0 -36
- package/dist/operate-remote.d.ts +0 -98
- package/dist/operate.d.ts +0 -401
- package/dist/orphan-sweep.d.ts +0 -65
- package/dist/page-work-contract.d.ts +0 -21
- package/dist/password-bearer.d.ts +0 -25
- package/dist/passwordless.d.ts +0 -23
- package/dist/peek-cli.d.ts +0 -112
- package/dist/peek.d.ts +0 -110
- package/dist/people-audit-ui.d.ts +0 -16
- package/dist/person-proof.d.ts +0 -2
- package/dist/phase-routing.d.ts +0 -401
- package/dist/plain-schema.d.ts +0 -23
- package/dist/plain-words.d.ts +0 -20
- package/dist/plan-auto.d.ts +0 -25
- package/dist/plan-login.d.ts +0 -14
- package/dist/plan.d.ts +0 -188
- package/dist/plane-review.d.ts +0 -54
- package/dist/planner-source.d.ts +0 -225
- package/dist/planner.d.ts +0 -76
- package/dist/policy-ui.d.ts +0 -22
- package/dist/policy.d.ts +0 -92
- package/dist/prepared-evidence.d.ts +0 -17
- package/dist/principal.d.ts +0 -42
- package/dist/probe.d.ts +0 -46
- package/dist/process-custody.d.ts +0 -17
- package/dist/process-liveness.d.ts +0 -13
- package/dist/process-tree.d.ts +0 -39
- package/dist/project-access.d.ts +0 -17
- package/dist/project-activity.d.ts +0 -20
- package/dist/project-admission.d.ts +0 -105
- package/dist/project-cli.d.ts +0 -19
- package/dist/project-concurrency.d.ts +0 -62
- package/dist/project-delete-ui.d.ts +0 -96
- package/dist/project-delete.d.ts +0 -59
- package/dist/project-demo.d.ts +0 -12
- package/dist/project-file.d.ts +0 -3
- package/dist/project-identity.d.ts +0 -52
- package/dist/project-knowledge.d.ts +0 -124
- package/dist/project-learning.d.ts +0 -120
- package/dist/project-memory.d.ts +0 -70
- package/dist/project-outcomes.d.ts +0 -119
- package/dist/project-sandbox.d.ts +0 -59
- package/dist/project-skills.d.ts +0 -139
- package/dist/project-tools.d.ts +0 -318
- package/dist/project.d.ts +0 -65
- package/dist/prompt.d.ts +0 -33
- package/dist/proof.d.ts +0 -457
- package/dist/proposal.d.ts +0 -70
- package/dist/protected-storage-look.d.ts +0 -1
- package/dist/protected-storage.d.ts +0 -98
- package/dist/provider-auth.d.ts +0 -143
- package/dist/provider-capture.d.ts +0 -34
- package/dist/provider-connection.d.ts +0 -23
- package/dist/provider-home.d.ts +0 -22
- package/dist/provider-limits.d.ts +0 -37
- package/dist/provider.d.ts +0 -369
- package/dist/public-access.d.ts +0 -52
- package/dist/public-check.d.ts +0 -37
- package/dist/publish.d.ts +0 -146
- package/dist/pull-request-flow.d.ts +0 -189
- package/dist/pull-request-schema.d.ts +0 -5
- package/dist/pull-request-ui.d.ts +0 -25
- package/dist/pulls.d.ts +0 -121
- package/dist/push.d.ts +0 -120
- package/dist/quality.d.ts +0 -8
- package/dist/quick-start.d.ts +0 -26
- package/dist/read-executor-worker.d.ts +0 -1
- package/dist/read-executor.d.ts +0 -66
- package/dist/read-only-request.d.ts +0 -4
- package/dist/recipe-ui.d.ts +0 -21
- package/dist/recipes.d.ts +0 -56
- package/dist/release-adapters.d.ts +0 -205
- package/dist/release-approval.d.ts +0 -180
- package/dist/release-authority.d.ts +0 -173
- package/dist/release-auto.d.ts +0 -184
- package/dist/release-card.d.ts +0 -156
- package/dist/release-carry.d.ts +0 -261
- package/dist/release-ci-hold.d.ts +0 -41
- package/dist/release-cli.d.ts +0 -34
- package/dist/release-coverage.d.ts +0 -16
- package/dist/release-gate.d.ts +0 -84
- package/dist/release-git.d.ts +0 -43
- package/dist/release-links.d.ts +0 -29
- package/dist/release-net.d.ts +0 -90
- package/dist/release-next.d.ts +0 -48
- package/dist/release-recheck.d.ts +0 -146
- package/dist/release-refusal.d.ts +0 -32
- package/dist/release-view.d.ts +0 -37
- package/dist/release.d.ts +0 -806
- package/dist/releases.d.ts +0 -94
- package/dist/remote-audit.d.ts +0 -79
- package/dist/remote-command.d.ts +0 -45
- package/dist/remote-destination.d.ts +0 -36
- package/dist/remote-exec.d.ts +0 -38
- package/dist/remote-main.d.ts +0 -111
- package/dist/remote-run.d.ts +0 -20
- package/dist/remote.d.ts +0 -67
- package/dist/render.d.ts +0 -64
- package/dist/reply-shape.d.ts +0 -106
- package/dist/reply-voice.d.ts +0 -23
- package/dist/report-summary.d.ts +0 -22
- package/dist/reported-usage.d.ts +0 -69
- package/dist/repos.d.ts +0 -67
- package/dist/repository-context-ui.d.ts +0 -3
- package/dist/repository-context.d.ts +0 -66
- package/dist/request-budget-ui.d.ts +0 -14
- package/dist/request-budget.d.ts +0 -127
- package/dist/restart-certification.d.ts +0 -133
- package/dist/result-actions.d.ts +0 -36
- package/dist/result-acts.d.ts +0 -112
- package/dist/result-completion.d.ts +0 -35
- package/dist/result-evidence-readers.d.ts +0 -42
- package/dist/result-follow-ups.d.ts +0 -118
- package/dist/result-review.d.ts +0 -220
- package/dist/result-shots.d.ts +0 -59
- package/dist/retention-ui.d.ts +0 -21
- package/dist/retention.d.ts +0 -77
- package/dist/review-context.d.ts +0 -245
- package/dist/review-evidence.d.ts +0 -33
- package/dist/review-switch.d.ts +0 -36
- package/dist/reviewer.d.ts +0 -99
- package/dist/route-change-check.d.ts +0 -4
- package/dist/route-change.d.ts +0 -22
- package/dist/route-hooks.d.ts +0 -54
- package/dist/route-results.d.ts +0 -75
- package/dist/route-rules.d.ts +0 -324
- package/dist/route-savings.d.ts +0 -136
- package/dist/route-store.d.ts +0 -300
- package/dist/run-closeout.d.ts +0 -89
- package/dist/run-efficiency.d.ts +0 -74
- package/dist/run-ending.d.ts +0 -21
- package/dist/runner-process.d.ts +0 -76
- package/dist/runner.d.ts +0 -324
- package/dist/sample-project.d.ts +0 -31
- package/dist/sandbox-launch.d.ts +0 -1
- package/dist/sandbox-runtime.d.ts +0 -128
- package/dist/scan.d.ts +0 -32
- package/dist/scope.d.ts +0 -1067
- package/dist/scout-browser-lock.d.ts +0 -69
- package/dist/scout-browser.d.ts +0 -107
- package/dist/scout-net.d.ts +0 -25
- package/dist/scout-report.d.ts +0 -23
- package/dist/scout.d.ts +0 -142
- package/dist/secret-mint.d.ts +0 -1
- package/dist/serve.d.ts +0 -11
- package/dist/server/agents-computers.d.ts +0 -9
- package/dist/server/agents-live-filed.d.ts +0 -17
- package/dist/server/agents-live-lead.d.ts +0 -47
- package/dist/server/agents-live-room.d.ts +0 -23
- package/dist/server/chat.d.ts +0 -39
- package/dist/server/chrome.d.ts +0 -328
- package/dist/server/edge-refusal.d.ts +0 -7
- package/dist/server/flows.d.ts +0 -8
- package/dist/server/guards.d.ts +0 -80
- package/dist/server/handler-context.d.ts +0 -22
- package/dist/server/handler-registry.d.ts +0 -23
- package/dist/server/home-asks.d.ts +0 -45
- package/dist/server/home.d.ts +0 -65
- package/dist/server/http.d.ts +0 -337
- package/dist/server/in-place.d.ts +0 -15
- package/dist/server/kit-standalone.d.ts +0 -22
- package/dist/server/kit.d.ts +0 -452
- package/dist/server/last-checks.d.ts +0 -17
- package/dist/server/live.d.ts +0 -74
- package/dist/server/merge-ready-view.d.ts +0 -10
- package/dist/server/mutation-key.d.ts +0 -70
- package/dist/server/pages-assets.d.ts +0 -11
- package/dist/server/pages.d.ts +0 -8
- package/dist/server/people-tokens.d.ts +0 -18
- package/dist/server/remote-hooks.d.ts +0 -29
- package/dist/server/remote.d.ts +0 -59
- package/dist/server/render-chat.d.ts +0 -439
- package/dist/server/render-code-map.d.ts +0 -30
- package/dist/server/render-flaky.d.ts +0 -20
- package/dist/server/render-follow-through.d.ts +0 -11
- package/dist/server/render-history.d.ts +0 -51
- package/dist/server/render-new-task.d.ts +0 -54
- package/dist/server/render-pages.d.ts +0 -236
- package/dist/server/render-people.d.ts +0 -102
- package/dist/server/render-projects.d.ts +0 -104
- package/dist/server/render-release.d.ts +0 -19
- package/dist/server/render-results.d.ts +0 -754
- package/dist/server/render-settings.d.ts +0 -93
- package/dist/server/render-tasks.d.ts +0 -774
- package/dist/server/request-context.d.ts +0 -78
- package/dist/server/retired-routes.d.ts +0 -17
- package/dist/server/route-policy.d.ts +0 -18
- package/dist/server/route-table.d.ts +0 -114
- package/dist/server/runtime.d.ts +0 -342
- package/dist/server/session.d.ts +0 -192
- package/dist/server/settings.d.ts +0 -76
- package/dist/server/signup-gate.d.ts +0 -9
- package/dist/server/sweeps.d.ts +0 -4
- package/dist/server/task-views.d.ts +0 -98
- package/dist/server/tasks.d.ts +0 -83
- package/dist/server/terminals.d.ts +0 -31
- package/dist/server/welcome.d.ts +0 -28
- package/dist/server-telemetry.d.ts +0 -87
- package/dist/settings-groups-ui.d.ts +0 -286
- package/dist/settings-kit-script.d.ts +0 -21
- package/dist/settings-kit.d.ts +0 -173
- package/dist/settings-proofs.d.ts +0 -64
- package/dist/setup-guide.d.ts +0 -39
- package/dist/shared-deps.d.ts +0 -115
- package/dist/sign-in-guard.d.ts +0 -70
- package/dist/skills-ui.d.ts +0 -12
- package/dist/skills.d.ts +0 -99
- package/dist/slack-api.d.ts +0 -59
- package/dist/slack-chat.d.ts +0 -37
- package/dist/slack-settings.d.ts +0 -4
- package/dist/slack-socket.d.ts +0 -12
- package/dist/slack.d.ts +0 -6
- package/dist/sleep.d.ts +0 -2
- package/dist/source-key.d.ts +0 -2
- package/dist/spend-report.d.ts +0 -87
- package/dist/spend-ui.d.ts +0 -80
- package/dist/spend.d.ts +0 -142
- package/dist/sqlite-runtime.d.ts +0 -3
- package/dist/sqlite-telemetry.d.ts +0 -9
- package/dist/sso-settings.d.ts +0 -33
- package/dist/sso-ui.d.ts +0 -26
- package/dist/staged-runtimes.d.ts +0 -54
- package/dist/steer-capabilities.d.ts +0 -32
- package/dist/steer-controls.d.ts +0 -14
- package/dist/steer-live.d.ts +0 -19
- package/dist/steer-mailbox.d.ts +0 -46
- package/dist/steer-status.d.ts +0 -25
- package/dist/stop-proof.d.ts +0 -67
- package/dist/storage-sweep-child.d.ts +0 -1
- package/dist/storage-sweep-process.d.ts +0 -55
- package/dist/storage-sweep-schedule.d.ts +0 -30
- package/dist/storage-sweep.d.ts +0 -77
- package/dist/storage-ui.d.ts +0 -23
- package/dist/storage.d.ts +0 -68
- package/dist/store-baseline.d.ts +0 -19
- package/dist/store.d.ts +0 -8613
- package/dist/stream-scope.d.ts +0 -18
- package/dist/structured-output.d.ts +0 -57
- package/dist/style-asset.d.ts +0 -7
- package/dist/subagent-admin.d.ts +0 -53
- package/dist/subagent-desk.d.ts +0 -59
- package/dist/subagent-memory.d.ts +0 -65
- package/dist/subagent-question.d.ts +0 -59
- package/dist/subagent-tools.d.ts +0 -125
- package/dist/subagent-week.d.ts +0 -68
- package/dist/subagent-work.d.ts +0 -76
- package/dist/subagents-ui.d.ts +0 -22
- package/dist/subagents.d.ts +0 -146
- package/dist/subscription-chat.d.ts +0 -54
- package/dist/summary.d.ts +0 -33
- package/dist/surface.d.ts +0 -49
- package/dist/sweep-gate.d.ts +0 -10
- package/dist/sweep-quarantine.d.ts +0 -29
- package/dist/sync.d.ts +0 -94
- package/dist/tailnet.d.ts +0 -11
- package/dist/tamper-scan.d.ts +0 -4
- package/dist/task-activity.d.ts +0 -27
- package/dist/task-aliases.d.ts +0 -5
- package/dist/task-archive.d.ts +0 -13
- package/dist/task-base.d.ts +0 -39
- package/dist/task-composer.d.ts +0 -14
- package/dist/task-control.d.ts +0 -159
- package/dist/task-live.d.ts +0 -8
- package/dist/task-moves.d.ts +0 -90
- package/dist/task-outcome-cli.d.ts +0 -30
- package/dist/task-review-brief.d.ts +0 -69
- package/dist/task-sizing.d.ts +0 -58
- package/dist/task-source.d.ts +0 -77
- package/dist/task-status.d.ts +0 -324
- package/dist/task-text.d.ts +0 -31
- package/dist/team-chat-authorization.d.ts +0 -11
- package/dist/team-contract.d.ts +0 -103
- package/dist/team-http.d.ts +0 -25
- package/dist/team-leads.d.ts +0 -85
- package/dist/team-runtime.d.ts +0 -25
- package/dist/team-ui.d.ts +0 -4
- package/dist/team-updates.d.ts +0 -8
- package/dist/teams-api.d.ts +0 -33
- package/dist/teams-chat.d.ts +0 -36
- package/dist/teams-settings.d.ts +0 -14
- package/dist/teams.d.ts +0 -24
- package/dist/teardown-git.d.ts +0 -164
- package/dist/telegram-flow.d.ts +0 -112
- package/dist/telegram-lead.d.ts +0 -151
- package/dist/telegram-live.d.ts +0 -116
- package/dist/telegram-progress.d.ts +0 -20
- package/dist/telegram-settings.d.ts +0 -9
- package/dist/telegram-status.d.ts +0 -83
- package/dist/telegram-team.d.ts +0 -68
- package/dist/telegram.d.ts +0 -271
- package/dist/templates.d.ts +0 -69
- package/dist/terminal-catalog.d.ts +0 -11
- package/dist/terminal-text.d.ts +0 -11
- package/dist/test-infra.d.ts +0 -34
- package/dist/test-temp.d.ts +0 -40
- package/dist/text-limits.d.ts +0 -297
- package/dist/tidy.d.ts +0 -130
- package/dist/tier-report.d.ts +0 -44
- package/dist/token-notices.d.ts +0 -11
- package/dist/tokens-cli.d.ts +0 -21
- package/dist/tool-broker.d.ts +0 -52
- package/dist/tool-launcher.d.ts +0 -1
- package/dist/tool-secret-store.d.ts +0 -167
- package/dist/toolroll-update-cli.d.ts +0 -15
- package/dist/toolroll-update-ui.d.ts +0 -47
- package/dist/toolroll-update.d.ts +0 -265
- package/dist/tools-ui.d.ts +0 -51
- package/dist/transitions-recipes.d.ts +0 -1
- package/dist/tree-proof.d.ts +0 -34
- package/dist/tui-contract.d.ts +0 -144
- package/dist/tui-source.d.ts +0 -14
- package/dist/typed-start.d.ts +0 -51
- package/dist/unfenced-test-support.d.ts +0 -2
- package/dist/up-processes.d.ts +0 -162
- package/dist/up-role-child.d.ts +0 -1
- package/dist/update-notice.d.ts +0 -5
- package/dist/vanished-retry.d.ts +0 -30
- package/dist/verification-evidence.d.ts +0 -68
- package/dist/version.d.ts +0 -2
- package/dist/wake-hub.d.ts +0 -72
- package/dist/webhook-limits.d.ts +0 -23
- package/dist/webhook-readers.d.ts +0 -56
- package/dist/webhook-signing.d.ts +0 -27
- package/dist/webhooks.d.ts +0 -84
- package/dist/welcome-facts.d.ts +0 -18
- package/dist/when-html.d.ts +0 -40
- package/dist/work-index.d.ts +0 -175
- package/dist/work-summary.d.ts +0 -61
- package/dist/workspace-motion.d.ts +0 -4
- package/dist/workspace-revision.d.ts +0 -48
- package/dist/workspace-ui.d.ts +0 -385
- package/dist/worktree-notices.d.ts +0 -13
- package/dist/worktree.d.ts +0 -365
- package/dist/writes-mode.d.ts +0 -9
- package/dist/youiyoux-intake.d.ts +0 -234
package/dist/release-cli.js
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `toolroll release <branch>` (release.ts): the command line around the release coordinator.
|
|
3
|
-
*
|
|
4
|
-
* `release <lease>` used to return a runner's lease; that is `toolroll worker release <lease>` now. The old form still
|
|
5
|
-
* works for a value shaped like a lease id (a UUID), with a one-line warning, until the next minor version. A
|
|
6
|
-
* UUID-shaped value given with release options is refused rather than guessed at.
|
|
7
|
-
*/
|
|
8
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
9
2
|
import { homedir } from "node:os";
|
|
10
3
|
import { dirname, join, resolve } from "node:path";
|
|
11
4
|
import { createRequire } from "node:module";
|
|
12
|
-
// Loaded on first use, like the store: a static import prints Node's SQLite warning before the CLI can quiet it.
|
|
13
5
|
const sqlite = () => createRequire(import.meta.url)("node:sqlite");
|
|
14
6
|
import { checkedEnvelopeJson } from "./contracts/cli.js";
|
|
15
7
|
import { RELEASE_LIMITS, runRelease } from "./release.js";
|
|
@@ -94,14 +86,11 @@ Options
|
|
|
94
86
|
--json answer with one machine envelope
|
|
95
87
|
|
|
96
88
|
A runner's lease is returned with \`toolroll worker release <lease>\`.`;
|
|
97
|
-
/** A runner lease id (claim.ts mints randomUUID()). */
|
|
98
89
|
export const LEASE_SHAPED = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
99
90
|
export const LEASE_DEPRECATION = "`toolroll release <lease>` is now `toolroll worker release <lease>`; the old form goes in the next minor version.";
|
|
100
91
|
const VALUE_FLAGS = new Set(["--repo", "--limit", "--tap", "--release-gate", "--to", "--request", "--as", "--token", "--schedule", "--stage", "--lane-retire", "--branch"]);
|
|
101
92
|
const BARE_FLAGS = new Set(["--new", "--json", "--help", "--yes", "--no-carry", "--start", "--recover-deploy", "--github"]);
|
|
102
93
|
export async function runReleaseCommand(args, write, deps = {}) {
|
|
103
|
-
// The flag, not a secret's value that happens to read "--json".
|
|
104
|
-
// A secret is never exactly one of these names (the loop below refuses that as a missing value).
|
|
105
94
|
const bare = new Set(args.filter(one => BARE_FLAGS.has(one)));
|
|
106
95
|
const json = bare.has("--json");
|
|
107
96
|
const refuse = (reason, message, code) => {
|
|
@@ -111,15 +100,11 @@ export async function runReleaseCommand(args, write, deps = {}) {
|
|
|
111
100
|
const positional = [];
|
|
112
101
|
const limits = {};
|
|
113
102
|
let stage, laneRetire, laneAlias;
|
|
114
|
-
// `--branch <name>` (or `-- <name>`) names the branch outright, so a branch called "status", "nightly" or "carry" is
|
|
115
|
-
// still a branch and never one of this command's own words.
|
|
116
103
|
let branchFlag, literal = false, branchFlags = 0;
|
|
117
|
-
// Only what follows `--` is literal: it never changes how the words before it read.
|
|
118
104
|
const literalArgs = [];
|
|
119
105
|
let repo, tap, gate, to, request, as, token, scheduleFlag;
|
|
120
106
|
for (let i = 0; i < args.length; i += 1) {
|
|
121
107
|
const raw = args[i];
|
|
122
|
-
// After `--`, every argument is a branch name, never a flag or a subcommand.
|
|
123
108
|
if (raw === "--" && !literal) {
|
|
124
109
|
literal = true;
|
|
125
110
|
continue;
|
|
@@ -130,7 +115,6 @@ export async function runReleaseCommand(args, write, deps = {}) {
|
|
|
130
115
|
}
|
|
131
116
|
if (BARE_FLAGS.has(raw))
|
|
132
117
|
continue;
|
|
133
|
-
// `--lane-alias <lane-id> <new name>`: two values, neither a flag of this command.
|
|
134
118
|
if (raw === "--lane-alias") {
|
|
135
119
|
const [id, name] = [args[i + 1], args[i + 2]];
|
|
136
120
|
if (id === undefined || name === undefined || id.startsWith("--") || name.startsWith("--"))
|
|
@@ -139,12 +123,10 @@ export async function runReleaseCommand(args, write, deps = {}) {
|
|
|
139
123
|
i += 2;
|
|
140
124
|
continue;
|
|
141
125
|
}
|
|
142
|
-
// `--flag=value` for every value flag; a secret (--token) is also the next argument even when it starts with "--".
|
|
143
126
|
const equals = raw.startsWith("--") ? raw.indexOf("=") : -1;
|
|
144
127
|
const arg = equals === -1 ? raw : raw.slice(0, equals);
|
|
145
128
|
if (VALUE_FLAGS.has(arg)) {
|
|
146
129
|
const value = equals === -1 ? args[i + 1] : raw.slice(equals + 1);
|
|
147
|
-
// A secret may start with "--"; it is the value unless it is exactly one of this command's flags (never swallowed).
|
|
148
130
|
const namesFlag = value !== undefined && (BARE_FLAGS.has(value) || VALUE_FLAGS.has(value.split("=")[0]));
|
|
149
131
|
if (value === undefined || (equals === -1 && value.startsWith("--") && (arg !== "--token" || namesFlag)))
|
|
150
132
|
return refuse("usage", `${arg} takes a value.`, 2);
|
|
@@ -212,20 +194,16 @@ export async function runReleaseCommand(args, write, deps = {}) {
|
|
|
212
194
|
return runGithubNightlyCommand({ repo: repo === undefined ? undefined : resolve(deps.cwd ?? process.cwd(), repo), as, token, alias: laneAlias, retire: laneRetire }, write, json, deps);
|
|
213
195
|
}
|
|
214
196
|
const named = branchFlag !== undefined || literalArgs.length > 0;
|
|
215
|
-
// One branch, named one way: never a guess between two.
|
|
216
197
|
if (branchFlags > 1 || literalArgs.length > 1 || (branchFlag !== undefined && (positional.length > 0 || literalArgs.length > 0)) || (literalArgs.length > 0 && positional.length > 0)) {
|
|
217
198
|
return refuse("usage", "Name the branch once: `toolroll release <branch>`, `--branch <name>` or `-- <name>`, never two of them.", 2);
|
|
218
199
|
}
|
|
219
200
|
if (branchFlag !== undefined && branchFlag === "")
|
|
220
201
|
return refuse("usage", "--branch takes a branch name.", 2);
|
|
221
|
-
// `release status [<task>]`: the steps recorded for a release. A branch named "status" is released with
|
|
222
|
-
// `--branch status` (or `-- status`).
|
|
223
202
|
if (!named && positional[0] === "status" && positional.length <= 2) {
|
|
224
203
|
if (args.some(arg => VALUE_FLAGS.has(arg.split("=")[0]) || ["--new", "--no-carry", "--start"].includes(arg)))
|
|
225
204
|
return refuse("usage", "`toolroll release status [<task>]` takes only --json.", 2);
|
|
226
205
|
return runStatusCommand(positional[1], write, json, deps);
|
|
227
206
|
}
|
|
228
|
-
// `release approve` is the toolroll command's own (cli.ts routes it to the operate commands); never a branch here.
|
|
229
207
|
if (!named && positional[0] === "approve")
|
|
230
208
|
return refuse("usage", "Run `toolroll release approve [<branch>]`. A branch named approve is released with `--branch approve`.", 2);
|
|
231
209
|
if (!named && positional[0] === "nightly" && positional.length === 1)
|
|
@@ -257,7 +235,6 @@ export async function runReleaseCommand(args, write, deps = {}) {
|
|
|
257
235
|
const adapters = deps.adapters === undefined
|
|
258
236
|
? releaseAdapters({ checkout, say, ...(tap === undefined ? {} : { tap }), ...(limits["deploy"] === undefined ? {} : { deployMinutes: limits["deploy"] }) })
|
|
259
237
|
: { ...deps.adapters, say };
|
|
260
|
-
// One command: wait out another run of this release, settle what a stopped deployment left, then go on from the journal.
|
|
261
238
|
const taken = await takeReleaseRun(stateDir, branch, say, deps.runLock);
|
|
262
239
|
if (!taken.ok)
|
|
263
240
|
return refuse("running", `Another release of ${branch} is still running on ${taken.holder.host} (process ${taken.holder.pid}). Nothing was changed.`, 3);
|
|
@@ -293,10 +270,8 @@ function report(outcome, write, json, lines) {
|
|
|
293
270
|
write(`✗ Stopped at ${outcome.step}: ${outcome.message}`);
|
|
294
271
|
write(` Continue from there: ${outcome.resume}`);
|
|
295
272
|
}
|
|
296
|
-
// A usage slip or refusal before anything began is 2; a stop along the way is 3 ("no", not "broken"), as elsewhere.
|
|
297
273
|
return outcome.reason === "usage" ? 2 : 3;
|
|
298
274
|
}
|
|
299
|
-
/** The installation's live database, LaunchAgents and processes, for --release-gate. */
|
|
300
275
|
function installedGateWorld() {
|
|
301
276
|
const database = databasePath(process.env, homedir());
|
|
302
277
|
const agents = join(homedir(), "Library", "LaunchAgents");
|
|
@@ -307,12 +282,10 @@ function installedGateWorld() {
|
|
|
307
282
|
db.exec("PRAGMA busy_timeout=5000");
|
|
308
283
|
return db;
|
|
309
284
|
},
|
|
310
|
-
// The laptop service too: two services on one database is a conflict the gate names, never one it skips.
|
|
311
285
|
servicePlists: () => ["com.toolroll.browser", "com.standing-orders.browser", "com.toolroll.up"].map(label => join(agents, `${label}.plist`))
|
|
312
286
|
.filter(path => existsSync(path)).map(path => ({ path, text: readFileSync(path, "utf8") })),
|
|
313
287
|
};
|
|
314
288
|
}
|
|
315
|
-
/** The installation's deployments, its plane's records and the release's own recovery road, for --recover-deploy. */
|
|
316
289
|
function installedRescueWorld(cwd) {
|
|
317
290
|
const database = databasePath(process.env, homedir());
|
|
318
291
|
const stateDir = dirname(database);
|
|
@@ -384,11 +357,6 @@ function runGateRelease(id, yes, write, json, world) {
|
|
|
384
357
|
write(`Lift it: toolroll release --release-gate ${outcome.id} --yes`);
|
|
385
358
|
return 0;
|
|
386
359
|
}
|
|
387
|
-
/**
|
|
388
|
-
* The release's authority from the command line (release-once.md): ask for a carry (anyone may ask, the lead
|
|
389
|
-
* included; only the rules decide), stop carrying (only ever stricter), or change the project's carry setting
|
|
390
|
-
* (turning carrying back on is a person's own command, never the lead's or a remote token's).
|
|
391
|
-
*/
|
|
392
360
|
async function runAuthorityCommand(command, target, flags, write, json, deps) {
|
|
393
361
|
const name = `release ${command}`;
|
|
394
362
|
const answer = (ok, fields, words, code) => {
|
|
@@ -406,8 +374,6 @@ async function runAuthorityCommand(command, target, flags, write, json, deps) {
|
|
|
406
374
|
return answer(false, { reason: "usage", message: "ask-every-commit takes on or off." }, "ask-every-commit takes on or off.", 2);
|
|
407
375
|
if (flags.repo === undefined)
|
|
408
376
|
return answer(false, { reason: "usage", message: "Name the project with --repo <path>." }, "Name the project with --repo <path>.", 2);
|
|
409
|
-
// Turning carrying back on relaxes a release's rules: a person's own ceremony, as an approval needs (a password
|
|
410
|
-
// typed now, a re-check, or their own session), never a lead or remote token. Turning it off is only stricter.
|
|
411
377
|
let actor = "cli";
|
|
412
378
|
if (target === "off") {
|
|
413
379
|
const refused = (message) => answer(false, { reason: "person-only", message }, message, 1);
|
|
@@ -425,8 +391,6 @@ async function runAuthorityCommand(command, target, flags, write, json, deps) {
|
|
|
425
391
|
return answer(true, { repo: flags.repo, ask: target === "on" }, words, 0);
|
|
426
392
|
}
|
|
427
393
|
if (command === "publish-ok") {
|
|
428
|
-
// A person's own decision to go on after an automatic release's checks stopped passing past its merge: never the
|
|
429
|
-
// lead, a remote token or a mode.
|
|
430
394
|
const refused = (message) => answer(false, { reason: "person-only", message }, message, 1);
|
|
431
395
|
if (machineActing() || process.env["TOOLROLL_LEAD_TOKEN"] !== undefined || process.env["TOOLROLL_REMOTE_TOKEN"] !== undefined)
|
|
432
396
|
return refused("Only a person lets a held release go on, never the lead or a remote token.");
|
|
@@ -449,9 +413,6 @@ async function runAuthorityCommand(command, target, flags, write, json, deps) {
|
|
|
449
413
|
const repo = store.listProjects().map(one => one.path).find(path => path === flags.repo) ?? null;
|
|
450
414
|
if (repo === null)
|
|
451
415
|
return answer(false, { reason: "not-found", message: "That isn't a project Toolroll knows." }, "That isn't a project Toolroll knows.", 1);
|
|
452
|
-
// Turning it on lets releases approve themselves: a credential act (docs/plans/passwordless.md), only a password
|
|
453
|
-
// typed now by an approver of this project — never the lead's token, an API token, a remembered login or a session.
|
|
454
|
-
// Turning it off only asks a person again, so it needs no password.
|
|
455
416
|
let actor = flags.as ?? "cli";
|
|
456
417
|
if (target === "on") {
|
|
457
418
|
const refused = (message) => answer(false, { reason: "person-only", message }, message, 1);
|
|
@@ -475,8 +436,6 @@ async function runAuthorityCommand(command, target, flags, write, json, deps) {
|
|
|
475
436
|
return answer(false, { reason: "usage", message: "unsandboxed-carry takes on or off." }, "unsandboxed-carry takes on or off.", 2);
|
|
476
437
|
if (flags.repo === undefined)
|
|
477
438
|
return answer(false, { reason: "usage", message: "Name the project with --repo <path>." }, "Name the project with --repo <path>.", 2);
|
|
478
|
-
// Turning it on relaxes a release's rules: a person's own ceremony, as an approval needs, never a lead or remote
|
|
479
|
-
// token. Turning it off is only stricter.
|
|
480
439
|
let actor = "cli";
|
|
481
440
|
if (target === "on") {
|
|
482
441
|
const refused = (message) => answer(false, { reason: "person-only", message }, message, 1);
|
|
@@ -513,7 +472,6 @@ async function runAuthorityCommand(command, target, flags, write, json, deps) {
|
|
|
513
472
|
store.close();
|
|
514
473
|
}
|
|
515
474
|
}
|
|
516
|
-
/** `toolroll release nightly`: the nightly full check on main, approved with a person's password (nightly-check.ts). */
|
|
517
475
|
async function runNightlyCommand(flags, write, json, deps) {
|
|
518
476
|
const answer = (ok, fields, words, code) => { write(json ? checkedEnvelopeJson({ ok, command: "release nightly", ...fields }) : words); return code; };
|
|
519
477
|
if (flags.repo === undefined)
|
|
@@ -538,8 +496,6 @@ async function runNightlyCommand(flags, write, json, deps) {
|
|
|
538
496
|
store.close();
|
|
539
497
|
}
|
|
540
498
|
}
|
|
541
|
-
/** `toolroll release nightly --github | --lane-alias | --lane-retire`: GitHub's nightly as release debt
|
|
542
|
-
* (nightly-github.ts), each a person's step proved with their password now. */
|
|
543
499
|
async function runGithubNightlyCommand(flags, write, json, deps) {
|
|
544
500
|
const answer = (ok, fields, words, code) => { write(json ? checkedEnvelopeJson({ ok, command: "release nightly", ...fields }) : words); return code; };
|
|
545
501
|
if (flags.repo === undefined)
|
|
@@ -569,7 +525,6 @@ async function runGithubNightlyCommand(flags, write, json, deps) {
|
|
|
569
525
|
store.close();
|
|
570
526
|
}
|
|
571
527
|
}
|
|
572
|
-
/** `toolroll release status [<task>]` (read-only): the release's recorded steps (store.ts release_step, v146). */
|
|
573
528
|
async function runStatusCommand(task, write, json, deps) {
|
|
574
529
|
const command = "release status";
|
|
575
530
|
const refuse = (reason, message, code) => { write(json ? checkedEnvelopeJson({ ok: false, command, reason, message }) : message); return code; };
|
|
@@ -593,7 +548,6 @@ async function runStatusCommand(task, write, json, deps) {
|
|
|
593
548
|
const word = { running: "running", waiting: "waiting", done: "done", failed: "failed" };
|
|
594
549
|
write(`Release ${progress.version} (${progress.tag})${progress.pr === null ? "" : ` · pull request #${progress.pr}`} · task ${taskId}`);
|
|
595
550
|
for (const one of steps) {
|
|
596
|
-
// A failure the release has gone on from is history, as on the task page.
|
|
597
551
|
const passed = one.state === "failed" && progress.stopped === null;
|
|
598
552
|
write(` ${one.step.padEnd(9)} ${(passed ? "went on" : word[one.state]).padEnd(8)} ${one.seconds === null ? "–" : dur(one.seconds)}${one.detail === null ? "" : ` ${one.detail}`}`);
|
|
599
553
|
}
|
package/dist/release-coverage.js
CHANGED
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
/** Whether a release check already covers a result whose checks were Off: a
|
|
2
|
-
* passing FULL release check (run_check.release) on the same project whose
|
|
3
|
-
* checked commit contains the result's commit. Read at read time from the
|
|
4
|
-
* existing records and Git; nothing is written back, so no proof, receipt,
|
|
5
|
-
* scope digest or schema changes. Fails closed: a receipt that can't be read,
|
|
6
|
-
* a missing commit or any Git error leaves the result uncovered. */
|
|
7
1
|
import { viewedGitSync } from "./teardown-git.js";
|
|
8
2
|
import { verificationEvidence } from "./verification-evidence.js";
|
|
9
3
|
import { runCheckLevel } from "./check-levels.js";
|
|
10
|
-
/** How many of the newest passing release checks one read considers. */
|
|
11
4
|
export const RELEASE_SCAN_LIMIT = 20;
|
|
12
5
|
const SHA = /^[a-f0-9]{40}$/;
|
|
13
|
-
/** Ancestry between two fixed commits never changes, so a settled answer is kept; errors are not. */
|
|
14
6
|
const ancestry = new Map();
|
|
15
7
|
const ANCESTRY_LIMIT = 4096;
|
|
16
|
-
/** `git merge-base --is-ancestor`: true, false, or null when Git couldn't say. */
|
|
17
8
|
export const gitIsAncestor = (repo, ancestor, descendant) => {
|
|
18
9
|
if (!SHA.test(ancestor) || !SHA.test(descendant))
|
|
19
10
|
return null;
|
|
@@ -25,14 +16,12 @@ export const gitIsAncestor = (repo, ancestor, descendant) => {
|
|
|
25
16
|
return known;
|
|
26
17
|
let answer;
|
|
27
18
|
try {
|
|
28
|
-
// Every git version through a frozen read view, bounded (eval-harness review 1, finding 7).
|
|
29
19
|
const status = viewedGitSync(repo, ["merge-base", "--is-ancestor", ancestor, descendant], { timeoutMs: 5_000, binding: { repo } }).status;
|
|
30
20
|
if (status !== 0)
|
|
31
21
|
throw Object.assign(new Error("git merge-base"), { status });
|
|
32
22
|
answer = true;
|
|
33
23
|
}
|
|
34
24
|
catch (error) {
|
|
35
|
-
// Exit 1 is Git's "no"; anything else (a missing object, no repository, a timeout) is no answer.
|
|
36
25
|
answer = error.status === 1 ? false : null;
|
|
37
26
|
}
|
|
38
27
|
if (answer !== null) {
|
|
@@ -42,8 +31,6 @@ export const gitIsAncestor = (repo, ancestor, descendant) => {
|
|
|
42
31
|
}
|
|
43
32
|
return answer;
|
|
44
33
|
};
|
|
45
|
-
/** The newest passing full release checks of one project, each with its sealed, verified commit. Read once per
|
|
46
|
-
* caller-held memo, so a list of results reads the receipts once. */
|
|
47
34
|
function passingReleases(store, root, repo) {
|
|
48
35
|
let rows;
|
|
49
36
|
try {
|
|
@@ -58,7 +45,6 @@ function passingReleases(store, root, repo) {
|
|
|
58
45
|
return rows.flatMap(row => {
|
|
59
46
|
const run = Number(row["run"]);
|
|
60
47
|
try {
|
|
61
|
-
// Full only: a quick or Off release check covers nothing.
|
|
62
48
|
const level = runCheckLevel(store, run);
|
|
63
49
|
if (level !== null && level !== "full")
|
|
64
50
|
return [];
|
|
@@ -66,7 +52,6 @@ function passingReleases(store, root, repo) {
|
|
|
66
52
|
if (!gate.ok || gate.bytes === null)
|
|
67
53
|
return [];
|
|
68
54
|
const receipt = JSON.parse(gate.bytes);
|
|
69
|
-
// A release check whose coverage is partial or lost a required test covers nothing.
|
|
70
55
|
if (receipt.coverage !== undefined && receipt.coverage !== "full" && receipt.coverage !== "composed")
|
|
71
56
|
return [];
|
|
72
57
|
const head = store.getRun(run)?.headRevision ?? null;
|
|
@@ -83,7 +68,6 @@ function passingReleases(store, root, repo) {
|
|
|
83
68
|
}
|
|
84
69
|
});
|
|
85
70
|
}
|
|
86
|
-
/** The release check covering `head` in `repo`, or null. `memo` keeps one read's receipts. */
|
|
87
71
|
export function releaseCoverageOf(store, root, repo, head, options = {}) {
|
|
88
72
|
if (root === undefined || repo === null || head === null || !SHA.test(head))
|
|
89
73
|
return null;
|
package/dist/release-gate.js
CHANGED
|
@@ -1,42 +1,18 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `toolroll release --release-gate <id>`: lift one update pause that a browser deployment (scripts/deploy-browser.mjs)
|
|
3
|
-
* left behind when it stopped before the swap and its own exit recovery never ran. The typical case is a deployment
|
|
4
|
-
* killed outright (SIGKILL, a crash or power loss) while paused: nothing lifted the pause, and new work stays paused.
|
|
5
|
-
*
|
|
6
|
-
* The id alone proves nothing, and neither does the journal's phase. The pause is lifted only when every piece of
|
|
7
|
-
* evidence agrees that the service was never swapped:
|
|
8
|
-
*
|
|
9
|
-
* - the live database's update pause is owned by exactly this id
|
|
10
|
-
* - exactly one intact deployment journal names this id and this database, at a phase before the swap, with
|
|
11
|
-
* nothing recorded that only the swap writes (stopping, migration, the new service), and no new service definition
|
|
12
|
-
* staged
|
|
13
|
-
* - the live database is still at the schema that journal recorded
|
|
14
|
-
* - the service definition still names the runtime the journal started from (and is the one it saved), never the
|
|
15
|
-
* staged one
|
|
16
|
-
* - that runtime's service is running, nothing runs from the staged runtime, and no deployment is still running
|
|
17
|
-
*
|
|
18
|
-
* Anything missing, damaged or contradicting refuses and leaves the pause as it is. Without --yes it only shows the
|
|
19
|
-
* proof; with --yes it lifts that one pause (the owner is checked again inside the same write) and journals it.
|
|
20
|
-
*/
|
|
21
1
|
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
22
2
|
import { join } from "node:path";
|
|
23
3
|
import { durableJson } from "./desktop-update.js";
|
|
24
4
|
import { removeUpdateGate, updateGateOwned } from "./desktop-update-gate.js";
|
|
25
5
|
import { acquireDeploymentLock } from "./deploy-lock.js";
|
|
26
6
|
import { BEFORE_SWAP, RELEASED } from "./deploy-phase.js";
|
|
27
|
-
/** The journal phases a deployment passes before it stops the old service (deploy-phase.ts, the one table). */
|
|
28
7
|
export { BEFORE_SWAP };
|
|
29
|
-
/** Journal fields that only the swap and later phases write. */
|
|
30
8
|
const SWAP_FIELDS = ["stoppingService", "codingBackupBeforeSwap", "migration", "newService", "deployedAt", "launchd", "newServiceStop"];
|
|
31
9
|
const GATE_ID = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;
|
|
32
10
|
const refuse = (reason, message) => ({ ok: false, reason, message: `${message} The update pause was left as it is.` });
|
|
33
|
-
/** The owner id written into the live pause's triggers, when there is one pause and it names one id. */
|
|
34
11
|
export function gateOwner(db) {
|
|
35
12
|
const rows = db.prepare("SELECT sql FROM sqlite_master WHERE type='trigger' AND name GLOB 'so_desktop_update_*'").all();
|
|
36
13
|
const ids = new Set(rows.map(row => /\[([a-f0-9-]{36})\]'\)/.exec(String(row["sql"]))?.[1] ?? "?"));
|
|
37
14
|
return ids.size === 1 ? [...ids][0] : null;
|
|
38
15
|
}
|
|
39
|
-
/** Every deployment journal under staged-upgrades/: the stage it is in and what it holds, or why it can't be read. */
|
|
40
16
|
export function journals(stateDir) {
|
|
41
17
|
const root = join(stateDir, "staged-upgrades");
|
|
42
18
|
let stages = [];
|
|
@@ -56,7 +32,6 @@ export function journals(stateDir) {
|
|
|
56
32
|
}
|
|
57
33
|
});
|
|
58
34
|
}
|
|
59
|
-
/** Whether the pause owned by `id` was left by a deployment that never began its swap, and the evidence that says so. */
|
|
60
35
|
export function proveBeforeSwap(id, world) {
|
|
61
36
|
if (!GATE_ID.test(id))
|
|
62
37
|
return refuse("usage", `${id} is not an update id.`);
|
|
@@ -122,7 +97,6 @@ export function proveBeforeSwap(id, world) {
|
|
|
122
97
|
if (staged.length > 0)
|
|
123
98
|
return refuse("after-swap", `Process ${staged.map(one => one.pid).join(", ")} runs from the staged runtime ${r.nextRuntime}.`);
|
|
124
99
|
const supervisor = processes.find(one => one.command.includes(`${r.priorRuntime}/controller-service.js`));
|
|
125
|
-
// The database as a whole argument: an `up` on a path that only begins with this database's is another service's.
|
|
126
100
|
const upHere = `${r.priorRuntime}/cli.js up --db ${world.database}`;
|
|
127
101
|
const worker = processes.find(one => one.command.split(upHere).slice(1).some(rest => rest === "" || /^\s/.test(rest)));
|
|
128
102
|
if (supervisor === undefined || worker === undefined)
|
|
@@ -130,9 +104,7 @@ export function proveBeforeSwap(id, world) {
|
|
|
130
104
|
proof.push(`The service runs from ${r.priorRuntime} (process ${supervisor.pid}); nothing runs from the staged runtime, and no deployment is running.`);
|
|
131
105
|
return { ok: true, id, stage, journal: r, proof };
|
|
132
106
|
}
|
|
133
|
-
/** Prove, then (with `yes`) lift exactly that pause and journal the release in the deployment's own journal. */
|
|
134
107
|
export function releaseGate(id, world, yes) {
|
|
135
|
-
// Discovery is not authority to remove anything. Dry-run remains read-only, even for legacy stages.
|
|
136
108
|
const discovered = proveBeforeSwap(id, world);
|
|
137
109
|
if (!discovered.ok)
|
|
138
110
|
return discovered;
|
|
@@ -154,7 +126,6 @@ export function releaseGate(id, world, yes) {
|
|
|
154
126
|
return refuse("conflict", "The deployment stage changed during release.");
|
|
155
127
|
const db = world.open();
|
|
156
128
|
try {
|
|
157
|
-
// Repeat the entire proof at the mutation boundary, under the same exclusion as deploy/resume/recover.
|
|
158
129
|
const fresh = proveBeforeSwap(id, world);
|
|
159
130
|
if (!fresh.ok)
|
|
160
131
|
return fresh;
|
|
@@ -163,7 +134,6 @@ export function releaseGate(id, world, yes) {
|
|
|
163
134
|
return refuse("conflict", "The deployment journal changed during release.");
|
|
164
135
|
}
|
|
165
136
|
lock.assertHeld(journalFile);
|
|
166
|
-
// The owner is checked again within removeUpdateGate's short write transaction.
|
|
167
137
|
removeUpdateGate(db, id);
|
|
168
138
|
durableJson(journalFile, {
|
|
169
139
|
...fresh.journal, phase: RELEASED, updatedAt: world.now().toISOString(),
|
package/dist/release-git.js
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The release coordinator's Git, as one hardened runner's pieces (docs/plans/chat-management.md §0a.2): the recorded
|
|
3
|
-
* repository's shape, the programs by absolute path, the allowlisted environment, the fixed settings and the checkout
|
|
4
|
-
* config allowlist. Kept apart from release-adapters.ts so the release card (release-card.ts) reads Git the same way
|
|
5
|
-
* without loading the coordinator.
|
|
6
|
-
*/
|
|
7
1
|
import { accessSync, constants as fsConstants, statSync } from "node:fs";
|
|
8
2
|
import { delimiter, isAbsolute, join } from "node:path";
|
|
9
3
|
import { HARDENED_GIT_ARGS } from "./agent-fence.js";
|
|
10
4
|
import { TEARDOWN_FLAGS } from "./teardown-git.js";
|
|
11
|
-
/** owner/name and transport of a recorded GitHub remote, read strictly (https or ssh to github.com, nothing else). */
|
|
12
5
|
export function releaseRemote(url) {
|
|
13
6
|
const part = "([A-Za-z0-9_.-]+)";
|
|
14
7
|
const https = new RegExp(`^https://github\\.com/${part}/${part}?(?:\\.git)?/?$`).exec(url);
|
|
@@ -25,10 +18,7 @@ const executable = (path) => { try {
|
|
|
25
18
|
catch {
|
|
26
19
|
return false;
|
|
27
20
|
} };
|
|
28
|
-
/** Fixed system folders: the only PATH the coordinator's Git and gh run with. */
|
|
29
21
|
export const RELEASE_PATH = "/usr/bin:/bin:/usr/sbin:/sbin";
|
|
30
|
-
/** Git, gh and ssh by absolute path: the system's Git (or the first in the fixed system folders), the installed gh as
|
|
31
|
-
* this process's PATH finds it now, and the system ssh. Resolved once; never looked up again. */
|
|
32
22
|
export function releaseTools(path = process.env["PATH"] ?? "") {
|
|
33
23
|
const find = (name, dirs) => {
|
|
34
24
|
for (const dir of dirs) {
|
|
@@ -47,7 +37,6 @@ export function releaseTools(path = process.env["PATH"] ?? "") {
|
|
|
47
37
|
ssh: find("ssh", ["/usr/bin", "/bin"]) ?? "/usr/bin/ssh",
|
|
48
38
|
};
|
|
49
39
|
}
|
|
50
|
-
/** The coordinator's Git and gh environment: an allowlist, a fixed PATH, no system or global Git config, no prompts. */
|
|
51
40
|
export function releaseGitEnv(base = process.env) {
|
|
52
41
|
const kept = ["HOME", "LANG", "LC_ALL", "LC_CTYPE", "TMPDIR", "USER", "LOGNAME", "SSH_AUTH_SOCK", "GH_CONFIG_DIR", "XDG_CONFIG_HOME", "GH_TOKEN", "GITHUB_TOKEN", "GH_HOST"];
|
|
53
42
|
return {
|
|
@@ -55,25 +44,15 @@ export function releaseGitEnv(base = process.env) {
|
|
|
55
44
|
PATH: RELEASE_PATH, GIT_CONFIG_NOSYSTEM: "1", GIT_CONFIG_GLOBAL: "/dev/null", GIT_TERMINAL_PROMPT: "0", GH_PROMPT_DISABLED: "1", GIT_ASKPASS: "", SSH_ASKPASS: "",
|
|
56
45
|
};
|
|
57
46
|
}
|
|
58
|
-
/** Every coordinator Git command's fixed settings, ahead of its own arguments: the recorded Git directory and checkout,
|
|
59
|
-
* no hooks, fsmonitor, replacement objects, pager or submodule recursion, only https (and ssh for an ssh remote), the
|
|
60
|
-
* system ssh, and gh as the only credential helper. */
|
|
61
47
|
export function releaseGitArgs(repo, tools) {
|
|
62
48
|
return [`--git-dir=${repo.gitDir}`, `--work-tree=${repo.checkout}`, "--no-replace-objects", "--no-pager", ...HARDENED_GIT_ARGS, ...TEARDOWN_FLAGS,
|
|
63
49
|
"-c", "protocol.allow=never", "-c", "protocol.https.allow=always", ...(repo.ssh ? ["-c", "protocol.ssh.allow=always"] : []),
|
|
64
50
|
"-c", `core.sshCommand=${tools.ssh}`, "-c", "core.askPass=", "-c", "fetch.recurseSubmodules=false", "-c", "core.pager=cat",
|
|
65
|
-
// Where it connects and what it sends: verified TLS, no proxy, no extra header or cookie file. (An empty CA file
|
|
66
|
-
// or path can't be given here, Git then trusts nothing; a checkout setting either stops the release instead.)
|
|
67
51
|
"-c", "http.sslVerify=true", "-c", "http.proxy=", "-c", "http.extraHeader=", "-c", "http.cookieFile=",
|
|
68
|
-
// The recorded URL, as a remote that exists only here.
|
|
69
52
|
"-c", `remote.${RELEASE_REMOTE}.url=${repo.remote}`, "-c", `remote.${RELEASE_REMOTE}.pushurl=${repo.remote}`, "-c", `remote.${RELEASE_REMOTE}.proxy=`,
|
|
70
53
|
...(repo.ssh ? [] : ["-c", `credential.helper=!'${tools.gh.replace(/'/g, "'\\''")}' auth git-credential`])];
|
|
71
54
|
}
|
|
72
|
-
/** The named remote the coordinator fetches, looks and pushes through: defined only on its own command line (`-c`), so
|
|
73
|
-
* no checkout setting names or rewrites it. */
|
|
74
55
|
export const RELEASE_REMOTE = "toolroll-release";
|
|
75
|
-
/** The local and worktree settings a gate checkout may hold for a release (an allowlist): plain values Git writes
|
|
76
|
-
* itself and that never decide where it connects, what it sends or what it runs. Anything else stops the release. */
|
|
77
56
|
const RELEASE_KEYS = [
|
|
78
57
|
/^core\.(repositoryformatversion|filemode|bare|logallrefupdates|ignorecase|precomposeunicode|symlinks|autocrlf|eol|safecrlf|quotepath|longpaths|checkstat|trustctime)$/,
|
|
79
58
|
/^extensions\.(worktreeconfig|objectformat|refstorage)$/,
|
|
@@ -81,9 +60,6 @@ const RELEASE_KEYS = [
|
|
|
81
60
|
/^branch\..+\.(remote|merge|rebase|pushremote|description|vscode-merge-base)$/,
|
|
82
61
|
/^(user\.(name|email)|pull\.(rebase|ff)|init\.defaultbranch|lfs\.repositoryformatversion)$/,
|
|
83
62
|
];
|
|
84
|
-
/** The first local or worktree setting a gate checkout's config holds that a release won't run with, or null: one
|
|
85
|
-
* outside the allowlist (an include, a command, a proxy, TLS or header setting, a credential helper, a URL rewrite, a
|
|
86
|
-
* hooks folder), a remote named like a URL or after the coordinator's own, or a remote over a transport helper. */
|
|
87
63
|
export function releaseConfigProblem(listing) {
|
|
88
64
|
const fields = listing.split("\0");
|
|
89
65
|
for (let at = 0; at + 1 < fields.length; at += 2) {
|
package/dist/release-links.js
CHANGED
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Both CLI names, moved to a deployed runtime (release.ts, step `link`): `toolroll` and `standing-orders` are pointed
|
|
3
|
-
* at `<runtime>/bin.js`, each link replaced whole (a new link renamed over the old one). Each name must then resolve to
|
|
4
|
-
* that file and answer with the released version, or every link goes back to where it pointed before.
|
|
5
|
-
*
|
|
6
|
-
* The coordinator saves what `findCliLinks` saw before switching, so a release killed halfway through relinking still
|
|
7
|
-
* knows where to put each name back. A name on PATH that is a file rather than a link is someone else's and never
|
|
8
|
-
* replaced.
|
|
9
|
-
*/
|
|
10
1
|
import { randomUUID } from "node:crypto";
|
|
11
2
|
import { lstatSync, readlinkSync, realpathSync, renameSync, rmSync, symlinkSync } from "node:fs";
|
|
12
3
|
import { delimiter, dirname, join, resolve } from "node:path";
|
|
13
4
|
export const CLI_NAMES = Object.freeze(["toolroll", "standing-orders"]);
|
|
14
|
-
/** Where each name is on PATH. A missing name is made beside the other one; none on PATH at all is an empty list. */
|
|
15
5
|
export function findCliLinks(path = process.env["PATH"] ?? "", names = CLI_NAMES) {
|
|
16
6
|
const found = names.map((name) => {
|
|
17
7
|
for (const dir of path.split(delimiter).filter(Boolean)) {
|
|
@@ -34,7 +24,6 @@ export function findCliLinks(path = process.env["PATH"] ?? "", names = CLI_NAMES
|
|
|
34
24
|
return found.filter((one) => one.path !== null);
|
|
35
25
|
return found.map(one => ({ ...one, path: one.path ?? join(dirname(home.path), one.name) }));
|
|
36
26
|
}
|
|
37
|
-
/** Point `link` at `target`, atomically: a new link beside it, renamed over it. */
|
|
38
27
|
export function pointLink(link, target) {
|
|
39
28
|
const temp = `${link}.${randomUUID().slice(0, 8)}.link`;
|
|
40
29
|
symlinkSync(target, temp);
|
|
@@ -58,11 +47,6 @@ const real = (path) => { try {
|
|
|
58
47
|
catch {
|
|
59
48
|
return null;
|
|
60
49
|
} };
|
|
61
|
-
/**
|
|
62
|
-
* Switch every link to `bin`. `answers(path)` says whether that name now answers as the released build. Any failure
|
|
63
|
-
* puts every link back where `links` says it was, and throws. Switching a link already at `bin` changes nothing, so a
|
|
64
|
-
* resumed relink repeats safely.
|
|
65
|
-
*/
|
|
66
50
|
export function switchCliLinks(links, bin, answers) {
|
|
67
51
|
const foreign = links.find(one => one.foreign === true);
|
|
68
52
|
if (foreign !== undefined)
|
|
@@ -89,7 +73,6 @@ export function switchCliLinks(links, bin, answers) {
|
|
|
89
73
|
throw error;
|
|
90
74
|
}
|
|
91
75
|
}
|
|
92
|
-
/** Each link where it pointed before; a link that wasn't there before is removed. */
|
|
93
76
|
export function restoreCliLinks(links) {
|
|
94
77
|
for (const link of links) {
|
|
95
78
|
if (link.foreign === true)
|
package/dist/release-net.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/** How long one call may keep asking, and how far apart. */
|
|
2
1
|
export const NET_RETRY_BUDGET_MS = 180_000;
|
|
3
2
|
export const NET_RETRY_MAX_ATTEMPTS = 12;
|
|
4
3
|
const BACKOFF_MS = [2_000, 4_000, 8_000, 16_000, 30_000];
|
|
@@ -18,17 +17,13 @@ function retryBudget(options) {
|
|
|
18
17
|
return { remaining, sleep: async (ms) => {
|
|
19
18
|
const before = remaining();
|
|
20
19
|
await options.sleep(ms);
|
|
21
|
-
// A frozen/backward fake clock must not grant more backoff than a real clock.
|
|
22
20
|
const elapsed = before - remaining();
|
|
23
21
|
left = Math.max(0, left - Math.max(0, ms - elapsed));
|
|
24
22
|
} };
|
|
25
23
|
}
|
|
26
24
|
const exhausted = () => ({ code: 124, stdout: "", stderr: "the network retry budget ran out" });
|
|
27
|
-
/** Secondary rate limit or 429: transient, and GitHub may say how long to wait. */
|
|
28
25
|
const RATE_LIMITED = /secondary rate limit|abuse detection|HTTP 429|Too Many Requests/i;
|
|
29
|
-
/** A definitive answer: GitHub (or git) answered, and the answer is no. Checked before the transient phrases. */
|
|
30
26
|
const DEFINITIVE = /Toolroll won't run Git|Not Found|Unauthorized|Forbidden|Bad Request|Bad credentials|Requires authentication|authentication required|Authentication failed|Permission denied|Repository not found|Resource not accessible|Must have admin rights|could not read Username|not protected|not enabled|Reference already exists|Validation Failed|Head branch was modified|not mergeable|API rate limit exceeded|GH00[136]|protected branch update failed|\[rejected\]|updates were rejected|stale info|required status check|repository rule violations/i;
|
|
31
|
-
/** Transport failures and server-side trouble: nothing was answered yet. */
|
|
32
27
|
const TRANSIENT = new RegExp([
|
|
33
28
|
"error connecting to", "Could not resolve host", "no such host", "Temporary failure in name resolution", "nodename nor servname",
|
|
34
29
|
"Connection refused", "Connection reset", "connection reset by peer", "Failed to connect to", "Couldn't connect to server", "Network is unreachable", "No route to host",
|
|
@@ -37,19 +32,12 @@ const TRANSIENT = new RegExp([
|
|
|
37
32
|
"unexpected end of JSON input", "invalid character .{1,12} looking for beginning of value", "Unexpected end of JSON input",
|
|
38
33
|
"HTTP 5\\d\\d", "returned error: 5\\d\\d", "\\b50[0234] (?:Internal Server Error|Bad Gateway|Service Unavailable|Gateway Timeout)", "Server Error", "Bad Gateway", "Service Unavailable", "Gateway Timeout",
|
|
39
34
|
].join("|"), "i");
|
|
40
|
-
/**
|
|
41
|
-
* Whether a failure (its words, and the exit code when it came from a program) is transient: the phrase worth saying,
|
|
42
|
-
* and how long GitHub asked to wait (Retry-After) when it said. Null for a definitive answer or anything unknown —
|
|
43
|
-
* an unknown failure is never retried.
|
|
44
|
-
*/
|
|
45
35
|
export function transientFailure(text, code) {
|
|
46
36
|
if (code === 127)
|
|
47
37
|
return null;
|
|
48
38
|
if (DEFINITIVE.test(text))
|
|
49
39
|
return null;
|
|
50
40
|
const limited = RATE_LIMITED.exec(text);
|
|
51
|
-
// A rate-limit hint never overrides an independent refusal. Only 403/429 may
|
|
52
|
-
// describe a secondary limit; git prints HTTP errors differently from gh.
|
|
53
41
|
const statuses = [...text.matchAll(/(?:HTTP(?:\/[\d.]+)?\s+|returned error:\s*)(4\d\d)\b/gi)].map(match => Number(match[1]));
|
|
54
42
|
if (statuses.some(status => limited === null || (status !== 403 && status !== 429)))
|
|
55
43
|
return null;
|
|
@@ -58,20 +46,16 @@ export function transientFailure(text, code) {
|
|
|
58
46
|
return { words: limited[0], retryAfterMs: after === null ? null : Number(after[1]) * 1000 };
|
|
59
47
|
}
|
|
60
48
|
const found = TRANSIENT.exec(text);
|
|
61
|
-
// The phrase and the rest of its line ("Could not resolve host: github.com"), kept short.
|
|
62
49
|
if (found !== null)
|
|
63
50
|
return { words: text.slice(found.index).split("\n")[0].trim().slice(0, 80), retryAfterMs: null };
|
|
64
|
-
// The coordinator's own time limit on the child (exec answers 124 when it killed it).
|
|
65
51
|
if (code === 124)
|
|
66
52
|
return { words: "the call timed out", retryAfterMs: null };
|
|
67
53
|
return null;
|
|
68
54
|
}
|
|
69
55
|
const failureText = (result) => `${result.stderr}\n${result.stdout}`;
|
|
70
|
-
/** Whether one exec result failed transiently (exit 0 never did, unless its answer doesn't parse; see readOnlyCall). */
|
|
71
56
|
export function transientResult(result) {
|
|
72
57
|
return result.code === 0 ? null : transientFailure(failureText(result), result.code);
|
|
73
58
|
}
|
|
74
|
-
/** The git subcommand among the arguments: the first that isn't an option or an option's value. */
|
|
75
59
|
function gitSubcommand(args) {
|
|
76
60
|
for (let at = 0; at < args.length; at++) {
|
|
77
61
|
const arg = args[at];
|
|
@@ -90,12 +74,6 @@ function gitSubcommand(args) {
|
|
|
90
74
|
}
|
|
91
75
|
return null;
|
|
92
76
|
}
|
|
93
|
-
/**
|
|
94
|
-
* Whether a call only reads (and so may be asked again blindly): `git ls-remote` and `git fetch` (which only moves the
|
|
95
|
-
* coordinator's own remote-tracking refs); REST repository `gh api` reads with only the flags below (gh turns
|
|
96
|
-
* fields or input into a POST); `gh pr list|view|checks`, `gh release view`, `gh repo view`. Anything else is a write, or
|
|
97
|
-
* unknown, and is never retried by `retryingExec`.
|
|
98
|
-
*/
|
|
99
77
|
export function readOnlyCall(command, args) {
|
|
100
78
|
const name = command.split("/").pop() ?? command;
|
|
101
79
|
if (name === "git") {
|
|
@@ -108,8 +86,6 @@ export function readOnlyCall(command, args) {
|
|
|
108
86
|
let endpoint = null, shaped = false;
|
|
109
87
|
for (let at = 1; at < args.length; at++) {
|
|
110
88
|
const arg = args[at];
|
|
111
|
-
// Parse only spellings we know. In particular, pflag accepts -iXPOST and -ifbody=...;
|
|
112
|
-
// a blacklist of tokens beginning with -X/-f cannot prove those calls read-only.
|
|
113
89
|
if (arg === "--paginate" || arg === "--slurp") {
|
|
114
90
|
shaped = true;
|
|
115
91
|
continue;
|
|
@@ -139,7 +115,6 @@ export function readOnlyCall(command, args) {
|
|
|
139
115
|
const shaped = args.some(arg => arg === "--jq" || arg === "-q" || arg === "--template" || arg === "-t" || /^--(?:jq|template)=/.test(arg));
|
|
140
116
|
return { kind: "gh", jsonBody: !shaped && args.some(arg => arg === "--json" || arg.startsWith("--json=")) };
|
|
141
117
|
}
|
|
142
|
-
/** A short name for a call, said once when it is asked again: `gh api repos/…/check-runs`, `git ls-remote`. */
|
|
143
118
|
export function callLabel(command, args) {
|
|
144
119
|
const name = command.split("/").pop() ?? command;
|
|
145
120
|
if (name === "git")
|
|
@@ -150,12 +125,6 @@ export function callLabel(command, args) {
|
|
|
150
125
|
}
|
|
151
126
|
return `gh ${args.slice(0, 2).join(" ")}`;
|
|
152
127
|
}
|
|
153
|
-
/**
|
|
154
|
-
* An Exec that asks a read again after a transient failure, with backoff, for up to `budgetMs` (about three minutes)
|
|
155
|
-
* and `maxAttempts` calls; it says why once per call. When the budget runs out it answers the FIRST failure, exactly as
|
|
156
|
-
* the program gave it, so the caller stops with the original error. A definitive answer or a success is returned at
|
|
157
|
-
* once. A call that isn't provably a read (readOnlyCall) is passed straight through, never retried.
|
|
158
|
-
*/
|
|
159
128
|
export function retryingExec(run, options) {
|
|
160
129
|
return async (command, args, execOptions) => {
|
|
161
130
|
const read = readOnlyCall(command, args);
|
|
@@ -166,7 +135,6 @@ export function retryingExec(run, options) {
|
|
|
166
135
|
}), callLabel(command, args), options, read.jsonBody);
|
|
167
136
|
};
|
|
168
137
|
}
|
|
169
|
-
/** Whether a 0-exit plain JSON body parses; a truncated one is a transient failure. */
|
|
170
138
|
const bodyParses = (stdout) => { try {
|
|
171
139
|
JSON.parse(stdout);
|
|
172
140
|
return true;
|
|
@@ -174,8 +142,6 @@ const bodyParses = (stdout) => { try {
|
|
|
174
142
|
catch {
|
|
175
143
|
return false;
|
|
176
144
|
} };
|
|
177
|
-
/** One read, asked again as retryingExec describes. `call` may do more than the read itself (the release's Git
|
|
178
|
-
* re-checks the checkout's config first); anything it throws ends the read at once. */
|
|
179
145
|
export async function retryCall(call, label, options, jsonBody = false) {
|
|
180
146
|
const budget = retryBudget(options);
|
|
181
147
|
const maxAttempts = options.maxAttempts ?? NET_RETRY_MAX_ATTEMPTS;
|
|
@@ -190,7 +156,6 @@ export async function retryCall(call, label, options, jsonBody = false) {
|
|
|
190
156
|
why = { words: "an answer cut short", retryAfterMs: null };
|
|
191
157
|
if (why === null)
|
|
192
158
|
return result;
|
|
193
|
-
// The original failure is what the caller sees; a truncated 0-exit body becomes an explicit failure.
|
|
194
159
|
first ??= result.code !== 0 ? result : { code: 1, stdout: result.stdout, stderr: "unexpected end of JSON input (GitHub's answer was cut short)" };
|
|
195
160
|
const wait = why.retryAfterMs ?? netBackoff(attempt);
|
|
196
161
|
if (attempt + 1 >= maxAttempts || wait >= budget.remaining())
|
|
@@ -200,13 +165,6 @@ export async function retryCall(call, label, options, jsonBody = false) {
|
|
|
200
165
|
await budget.sleep(wait);
|
|
201
166
|
}
|
|
202
167
|
}
|
|
203
|
-
/**
|
|
204
|
-
* A write that may be asked again only once GitHub says it didn't happen (idempotency). `write` makes the call;
|
|
205
|
-
* `accept` reads a successful answer into the value (a SyntaxError there is an answer cut short: transient);
|
|
206
|
-
* `refuse` throws for a failure. After a transient failure, `recheck` reads the state (its own reads retried): `done`
|
|
207
|
-
* with the value when the write happened, `not-done` when it provably didn't (only then is it asked again), and
|
|
208
|
-
* anything else — or a recheck that can't read — stops with the write's original error.
|
|
209
|
-
*/
|
|
210
168
|
export async function writeWithRecheck(label, options, steps) {
|
|
211
169
|
const budget = retryBudget(options);
|
|
212
170
|
const maxAttempts = options.maxAttempts ?? NET_RETRY_MAX_ATTEMPTS;
|