toolroll 0.9.104 → 0.9.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +62 -5
- package/README.md +18 -20
- package/dist/accent-colors.js +0 -29
- package/dist/acp-agents.js +0 -3
- package/dist/acp-attest.js +0 -30
- package/dist/acp-check.js +3 -70
- package/dist/acp-client.js +3 -94
- package/dist/acp-inspect.js +1 -20
- package/dist/action-ledger.js +0 -8
- package/dist/activity-line.js +0 -14
- package/dist/actor.js +0 -15
- package/dist/advanced-schema.js +12 -0
- package/dist/advanced-view.js +26 -0
- package/dist/advanced.js +61 -0
- package/dist/agent-board.js +0 -117
- package/dist/agent-fence.js +11 -367
- package/dist/agent-onboard.js +12 -50
- package/dist/agent-pulse.js +5 -38
- package/dist/agent-state-words.js +0 -8
- package/dist/agent-state.js +1 -45
- package/dist/agent-turns.js +3 -17
- package/dist/agentconfig.js +1 -99
- package/dist/agents-board.js +0 -60
- package/dist/agents-live.js +1 -8
- package/dist/api-tokens.js +0 -27
- package/dist/approval-authority.js +0 -59
- package/dist/approval-password.js +0 -10
- package/dist/approval-policy.js +0 -29
- package/dist/approval-rules-ui.js +0 -9
- package/dist/assignment-adapters.js +0 -14
- package/dist/assignment-brief.js +1 -17
- package/dist/assignment-delivery.js +0 -22
- package/dist/assignment-presentation.js +0 -14
- package/dist/assignment-status.js +1 -30
- package/dist/assignment-ui.js +0 -12
- package/dist/assignment.js +17 -139
- package/dist/attest.js +0 -38
- package/dist/audit-cli.js +0 -9
- package/dist/backend.js +0 -59
- package/dist/backup-ui.js +0 -12
- package/dist/backup.js +8 -61
- package/dist/batch-checks.js +0 -20
- package/dist/batch-policy.js +0 -4
- package/dist/beads.js +0 -48
- package/dist/bin.js +0 -8
- package/dist/board.js +1 -36
- package/dist/boot-identity.js +0 -42
- package/dist/bounded-spawn.js +4 -28
- package/dist/brand-mark.js +0 -21
- package/dist/brief-fence.js +0 -16
- package/dist/browser/terminal.css +1 -1
- package/dist/browser/terminal.js +16 -16
- package/dist/browser/workspace.css +2 -2
- package/dist/browser/workspace.js +26 -26
- package/dist/browser-crew.js +0 -8
- package/dist/browser-shell.js +2 -15
- package/dist/browser-workspace.js +6 -30
- package/dist/budget-alerts.js +1 -4
- package/dist/build-review.js +2 -50
- package/dist/builder-restart.js +0 -13
- package/dist/builder.js +21 -1035
- package/dist/canonical-json.js +0 -12
- package/dist/capscan.js +1 -32
- package/dist/card-catalog.js +0 -12
- package/dist/card-cli.js +0 -1
- package/dist/card-render.js +0 -25
- package/dist/card-sources.js +0 -10
- package/dist/chat-acceptance.js +0 -7
- package/dist/chat-actions.js +5 -190
- package/dist/chat-admission.js +0 -7
- package/dist/chat-approval.js +0 -25
- package/dist/chat-ask.js +0 -17
- package/dist/chat-card-part.js +0 -3
- package/dist/chat-card.js +0 -6
- package/dist/chat-channel.js +2 -83
- package/dist/chat-continuity.js +0 -31
- package/dist/chat-controls.js +0 -7
- package/dist/chat-core.js +0 -55
- package/dist/chat-decide.js +2 -153
- package/dist/chat-delivery-state.js +0 -49
- package/dist/chat-delivery.js +2 -143
- package/dist/chat-display.js +0 -2
- package/dist/chat-evidence.js +0 -65
- package/dist/chat-flow.js +0 -72
- package/dist/chat-follow.js +0 -13
- package/dist/chat-inbox.js +0 -34
- package/dist/chat-live-schema.js +0 -14
- package/dist/chat-live.js +2 -87
- package/dist/chat-message-states.js +13 -40
- package/dist/chat-messages.js +0 -153
- package/dist/chat-migration.js +0 -57
- package/dist/chat-polish.js +0 -7
- package/dist/chat-quiet.js +0 -37
- package/dist/chat-review.js +0 -4
- package/dist/chat-rooms.js +0 -22
- package/dist/chat-settings-page.js +0 -4
- package/dist/chat-task-actions.js +0 -7
- package/dist/chat-terms.js +0 -21
- package/dist/chat-voice.js +0 -38
- package/dist/chat-warmth.js +1 -3
- package/dist/check-access.js +0 -30
- package/dist/check-facts.js +2 -62
- package/dist/check-failure.js +0 -98
- package/dist/check-levels-ui.js +4 -10
- package/dist/check-levels.js +3 -35
- package/dist/check-load.js +1 -49
- package/dist/check-only-standing.js +0 -6
- package/dist/check-only.js +0 -22
- package/dist/check-progress.js +0 -32
- package/dist/check-repair.js +2 -35
- package/dist/check-report.js +1 -108
- package/dist/check-stamp.js +0 -20
- package/dist/checkout-cleanup.js +0 -84
- package/dist/checkout-proof.js +1 -13
- package/dist/child-database.js +0 -3
- package/dist/claim.js +4 -508
- package/dist/claude-print.js +0 -10
- package/dist/cli-fast.js +0 -8
- package/dist/cli-help.js +90 -78
- package/dist/cli-http.js +0 -10
- package/dist/cli.js +26 -241
- package/dist/code-extract.js +0 -6
- package/dist/code-map-acts.js +0 -7
- package/dist/code-map-admission.js +2 -26
- package/dist/code-map-build.js +3 -24
- package/dist/code-map-cli.js +0 -4
- package/dist/code-map-main.js +0 -6
- package/dist/code-map-read.js +0 -12
- package/dist/code-map-report.js +0 -9
- package/dist/code-map-shape.js +0 -19
- package/dist/code-map-store.js +0 -26
- package/dist/codex-limits.js +1 -17
- package/dist/coding-context.js +0 -10
- package/dist/coding-handoff.js +0 -14
- package/dist/coding-provider.js +0 -39
- package/dist/coding-shipping-ui.js +0 -1
- package/dist/coding-ui.js +0 -1
- package/dist/coding-update.js +1 -18
- package/dist/coding-workspace.js +0 -27
- package/dist/commit-extract.js +0 -83
- package/dist/connect-cli.js +0 -19
- package/dist/console-chrome.js +1 -34
- package/dist/console-instance.js +2 -91
- package/dist/container-state.js +0 -4
- package/dist/containment.js +2 -105
- package/dist/contract-changes.js +0 -6
- package/dist/contracts/acceptance-terms.js +0 -7
- package/dist/contracts/chat-actions.js +0 -46
- package/dist/contracts/chat-callback-rows.js +0 -8
- package/dist/contracts/chat-card.js +0 -14
- package/dist/contracts/chat-content.js +0 -55
- package/dist/contracts/chat-tables.js +0 -7
- package/dist/contracts/cli.js +0 -59
- package/dist/contracts/coding-activity.js +0 -15
- package/dist/contracts/coding-context.js +0 -15
- package/dist/contracts/coding-handoff.js +0 -11
- package/dist/contracts/coding-workspace.js +0 -14
- package/dist/contracts/console-api.js +1 -54
- package/dist/contracts/contract-test.js +0 -14
- package/dist/contracts/contract.js +0 -48
- package/dist/contracts/decision.js +0 -20
- package/dist/contracts/diff-stat.js +0 -16
- package/dist/contracts/discord-callback.js +0 -9
- package/dist/contracts/flow-card.js +0 -18
- package/dist/contracts/flow-propose.js +0 -8
- package/dist/contracts/flow-send.js +0 -31
- package/dist/contracts/flow.js +0 -112
- package/dist/contracts/gateway-tools.js +0 -22
- package/dist/contracts/handoff.js +0 -22
- package/dist/contracts/integration-metadata.js +0 -39
- package/dist/contracts/lead-context.js +0 -14
- package/dist/contracts/lead-tools.js +0 -49
- package/dist/contracts/mcp-oauth.js +0 -12
- package/dist/contracts/memory-pass.js +0 -21
- package/dist/contracts/model-catalog.js +0 -9
- package/dist/contracts/observation-request.js +0 -11
- package/dist/contracts/plan.js +0 -16
- package/dist/contracts/project-knowledge.js +0 -26
- package/dist/contracts/project-memory.js +0 -16
- package/dist/contracts/project-skills.js +0 -31
- package/dist/contracts/proof.js +0 -23
- package/dist/contracts/provider.js +0 -9
- package/dist/contracts/recipes.js +0 -16
- package/dist/contracts/release-check.js +0 -61
- package/dist/contracts/release-terms.js +0 -27
- package/dist/contracts/retention.js +0 -12
- package/dist/contracts/review-findings.js +0 -13
- package/dist/contracts/route-results.js +0 -15
- package/dist/contracts/route.js +0 -33
- package/dist/contracts/scope.js +0 -29
- package/dist/contracts/scout-report.js +0 -34
- package/dist/contracts/slack-callback.js +0 -11
- package/dist/contracts/sort-answer.js +0 -24
- package/dist/contracts/stage-output.js +0 -46
- package/dist/contracts/storage.js +0 -8
- package/dist/contracts/store-json.js +0 -41
- package/dist/contracts/subagent-turn.js +0 -23
- package/dist/contracts/task-sizing.js +0 -10
- package/dist/contracts/teams-callback.js +0 -7
- package/dist/contracts/telegram-callback.js +0 -27
- package/dist/contracts/trigger-payloads.js +0 -41
- package/dist/contracts/update-journal.js +0 -47
- package/dist/contracts/verification-receipt.js +0 -36
- package/dist/contracts/verification-view.js +0 -15
- package/dist/contracts/youiyoux-request.js +0 -26
- package/dist/control-setup.js +0 -7
- package/dist/control-ui.js +0 -3
- package/dist/controller-service.js +0 -4
- package/dist/controller-supervisor.js +0 -15
- package/dist/converse.js +3 -129
- package/dist/coordinator-proposals.js +1 -6
- package/dist/coordinator.js +0 -65
- package/dist/credentials-ui.js +0 -6
- package/dist/daemon.js +0 -137
- package/dist/database-reclaim.js +0 -3
- package/dist/decision.js +0 -78
- package/dist/demo-chat.js +4 -15
- package/dist/demo-sign-in.js +77 -0
- package/dist/demo.js +5 -194
- package/dist/deploy-gate.js +0 -20
- package/dist/deploy-lock.js +0 -4
- package/dist/deploy-phase.js +0 -22
- package/dist/deploy-rescue.js +0 -21
- package/dist/deprecations.js +0 -12
- package/dist/design/kit.css +9 -6
- package/dist/design/kit.js +2 -33
- package/dist/desktop-access.js +0 -9
- package/dist/desktop-bundle.js +1 -3
- package/dist/desktop-host.js +0 -34
- package/dist/desktop-update-gate.js +0 -8
- package/dist/desktop-update-recovery.js +1 -18
- package/dist/desktop-update.js +2 -48
- package/dist/digest-times.js +0 -2
- package/dist/disclosure.js +0 -5
- package/dist/discord-api.js +0 -6
- package/dist/discord-chat.js +0 -31
- package/dist/discord.js +0 -7
- package/dist/discover.js +0 -50
- package/dist/dispatch.js +61 -60
- package/dist/dispose.js +0 -208
- package/dist/doctor.js +0 -48
- package/dist/easy-start-args.js +7 -7
- package/dist/easy-start.js +32 -45
- package/dist/egress.js +1 -63
- package/dist/email-settings.js +0 -8
- package/dist/envelope.js +50 -86
- package/dist/eval-gate.js +1 -37
- package/dist/eval-hooks.js +0 -120
- package/dist/eval-oracle-main.js +0 -7
- package/dist/eval-oracle.js +3 -42
- package/dist/eval-world.js +1 -23
- package/dist/evals.js +6 -134
- package/dist/evidence-pack.js +0 -29
- package/dist/evidence-pair.js +0 -17
- package/dist/evidence.js +4 -280
- package/dist/exec.js +19 -404
- package/dist/exhaustion.js +0 -30
- package/dist/export-ui.js +0 -7
- package/dist/export.js +1 -38
- package/dist/failing-first.js +0 -6
- package/dist/fallback-schema.js +0 -5
- package/dist/fallback.js +0 -81
- package/dist/fast-start.js +0 -97
- package/dist/fast-terms.js +0 -3
- package/dist/fenced-check-coverage.js +0 -11
- package/dist/findings.js +1 -63
- package/dist/first-run.js +4 -57
- package/dist/first-tasks-child.js +0 -5
- package/dist/flaky-ci.js +1 -24
- package/dist/flaky-cli.js +0 -4
- package/dist/flaky.js +0 -43
- package/dist/fleet-schema.js +0 -11
- package/dist/flow-actions.js +0 -31
- package/dist/flow-browser.js +0 -42
- package/dist/flow-cadence.js +1 -24
- package/dist/flow-card-task.js +0 -11
- package/dist/flow-changed.js +0 -16
- package/dist/flow-code.js +1 -45
- package/dist/flow-draft.js +0 -17
- package/dist/flow-engine.js +2 -76
- package/dist/flow-gallery-ui.js +0 -28
- package/dist/flow-gallery.js +0 -54
- package/dist/flow-insights.js +0 -12
- package/dist/flow-items.js +0 -27
- package/dist/flow-live.js +0 -31
- package/dist/flow-people.js +0 -14
- package/dist/flow-pull-request.js +0 -32
- package/dist/flow-replies.js +0 -9
- package/dist/flow-result-card.js +0 -8
- package/dist/flow-schedule.js +0 -74
- package/dist/flow-scripts.js +0 -13
- package/dist/flow-secrets.js +0 -10
- package/dist/flow-send.js +0 -45
- package/dist/flow-share.js +0 -60
- package/dist/flow-sort.js +1 -24
- package/dist/flow-starters-ui.js +0 -2
- package/dist/flow-starters.js +0 -13
- package/dist/flow-steps.js +0 -80
- package/dist/flow-triggers.js +2 -256
- package/dist/flow-unattended-words.js +0 -13
- package/dist/flow-unattended.js +2 -115
- package/dist/flows-cli.js +2 -36
- package/dist/flows-ui.js +0 -51
- package/dist/flows.js +0 -158
- package/dist/folder-gate.js +0 -21
- package/dist/folder-look.js +0 -42
- package/dist/follow-through-brief.js +0 -6
- package/dist/follow-through-cli.js +0 -5
- package/dist/fonts.js +0 -13
- package/dist/gaps.js +0 -20
- package/dist/gate-failure.js +0 -7
- package/dist/git-floor.js +0 -12
- package/dist/git-incident.js +2 -38
- package/dist/git-views.js +0 -24
- package/dist/git.js +0 -31
- package/dist/github-import.js +0 -22
- package/dist/github-jobs.js +0 -12
- package/dist/google-mail.js +2 -27
- package/dist/grant.js +0 -110
- package/dist/graph.js +0 -108
- package/dist/guides.js +4 -15
- package/dist/handover-note.js +0 -12
- package/dist/health-cli.js +0 -2
- package/dist/home-groups.js +0 -15
- package/dist/html.js +0 -54
- package/dist/install-method.js +0 -12
- package/dist/integrations-ui.js +0 -15
- package/dist/integrations.js +7 -50
- package/dist/invoke.js +1 -381
- package/dist/is-record.js +0 -1
- package/dist/issues.js +0 -48
- package/dist/jsonl-discriminants.js +0 -6
- package/dist/keymap.js +0 -17
- package/dist/keys.js +0 -56
- package/dist/kits-ui.js +0 -3
- package/dist/kits.js +1 -24
- package/dist/knowledge-cli.js +0 -4
- package/dist/knowledge-ui.js +0 -8
- package/dist/landed-cleanup.js +0 -119
- package/dist/laptop-background.js +0 -85
- package/dist/laptop-service.js +0 -67
- package/dist/latency-timeline.js +2 -23
- package/dist/lead-about.js +0 -7
- package/dist/lead-answer-eval.js +0 -39
- package/dist/lead-capabilities.js +0 -19
- package/dist/lead-cli-live.js +0 -22
- package/dist/lead-cli.js +0 -27
- package/dist/lead-commitments.js +1 -27
- package/dist/lead-context.js +2 -42
- package/dist/lead-contract.js +0 -8
- package/dist/lead-doors.js +0 -105
- package/dist/lead-follow.js +0 -41
- package/dist/lead-identity.js +1 -4
- package/dist/lead-latency-schema.js +0 -13
- package/dist/lead-people.js +3 -18
- package/dist/lead-progress.js +0 -12
- package/dist/lead-queue-runtime.js +0 -26
- package/dist/lead-queue.js +0 -35
- package/dist/lead-route.js +0 -33
- package/dist/lead-status.js +0 -37
- package/dist/lead-sweep.js +0 -18
- package/dist/lead-tools.js +0 -160
- package/dist/lead-voice.js +0 -54
- package/dist/lead.js +2 -105
- package/dist/learning-child.js +0 -6
- package/dist/learning-look.js +0 -14
- package/dist/ledger-chain.js +0 -34
- package/dist/ledger-csv.js +0 -2
- package/dist/ledger-view.js +0 -3
- package/dist/lesson-notes.js +0 -56
- package/dist/limits-ui.js +0 -14
- package/dist/link.js +0 -79
- package/dist/live-backup.js +3 -33
- package/dist/live-bus.js +7 -81
- package/dist/live-children-read.js +4 -47
- package/dist/live-children.js +4 -44
- package/dist/live-detail.js +0 -17
- package/dist/live-input.js +5 -68
- package/dist/live-main-read.js +1 -14
- package/dist/live-notes.js +0 -12
- package/dist/live-open.js +1 -23
- package/dist/live-records.js +4 -151
- package/dist/live-reply.js +1 -51
- package/dist/live-terminal.js +12 -111
- package/dist/live.js +4 -130
- package/dist/local-owner-acts.js +0 -53
- package/dist/local-owner.js +2 -93
- package/dist/log.js +0 -8
- package/dist/login-secrets.js +2 -38
- package/dist/machine-check.js +0 -2
- package/dist/machine-identity.js +1 -46
- package/dist/mailbox.js +0 -30
- package/dist/maintenance.js +1 -3
- package/dist/mcp-connect.js +0 -88
- package/dist/mcp-core.js +0 -45
- package/dist/mcp-http.js +0 -13
- package/dist/mcp-oauth.js +0 -37
- package/dist/mcp-person.js +0 -11
- package/dist/mcp.js +3 -73
- package/dist/memory-cli.js +0 -3
- package/dist/memory-pass.js +0 -53
- package/dist/memory-tidy.js +0 -55
- package/dist/memory-use.js +2 -24
- package/dist/merge-checklist.js +21 -29
- package/dist/metrics.js +0 -10
- package/dist/mobile-viewport.js +0 -6
- package/dist/model-catalog.js +1 -33
- package/dist/model-choices.js +9 -84
- package/dist/model-names.js +0 -9
- package/dist/models-cli.js +0 -13
- package/dist/models-ui.js +0 -17
- package/dist/modes.js +0 -35
- package/dist/monitoring-settings.js +2 -27
- package/dist/monitoring-ui.js +2 -14
- package/dist/monitoring.js +2 -38
- package/dist/names.js +0 -39
- package/dist/needs-you.js +7 -70
- package/dist/never-index.js +0 -9
- package/dist/nightly-check.js +0 -74
- package/dist/nightly-github.js +0 -168
- package/dist/notification-delivery.js +0 -3
- package/dist/notification-rows.js +0 -17
- package/dist/oauth-run-token.js +1 -37
- package/dist/observations.js +0 -16
- package/dist/oidc.js +1 -20
- package/dist/onboard.js +4 -57
- package/dist/one-step-chat-schema.js +0 -15
- package/dist/openrouter-models.js +0 -6
- package/dist/operate-remote-arguments.js +0 -17
- package/dist/operate-remote.js +0 -33
- package/dist/operate.js +227 -2326
- package/dist/orphan-sweep.js +3 -37
- package/dist/page-work-contract.js +0 -3
- package/dist/password-bearer.js +1 -11
- package/dist/passwordless.js +0 -3
- package/dist/peek-cli.js +0 -46
- package/dist/peek.js +2 -61
- package/dist/people-audit-ui.js +0 -6
- package/dist/person-proof.js +0 -6
- package/dist/phase-routing.js +8 -183
- package/dist/plain-schema.js +0 -14
- package/dist/plain-words.js +18 -12
- package/dist/plan-auto.js +0 -20
- package/dist/plan-login.js +0 -16
- package/dist/plan.js +0 -68
- package/dist/plane-review.js +0 -56
- package/dist/planner-source.js +0 -96
- package/dist/planner.js +0 -117
- package/dist/policy-ui.js +0 -8
- package/dist/policy.js +0 -47
- package/dist/prepared-evidence.js +0 -5
- package/dist/principal.js +0 -29
- package/dist/probe.js +0 -30
- package/dist/process-custody.js +0 -15
- package/dist/process-liveness.js +0 -32
- package/dist/process-tree.js +3 -29
- package/dist/project-access.js +0 -10
- package/dist/project-admission.js +1 -41
- package/dist/project-cli.js +0 -6
- package/dist/project-concurrency.js +0 -35
- package/dist/project-delete-ui.js +4 -29
- package/dist/project-delete.js +1 -73
- package/dist/project-demo.js +0 -13
- package/dist/project-file.js +0 -2
- package/dist/project-identity.js +0 -41
- package/dist/project-knowledge.js +0 -39
- package/dist/project-learning.js +3 -55
- package/dist/project-memory.js +2 -45
- package/dist/project-outcomes.js +0 -6
- package/dist/project-sandbox.js +0 -23
- package/dist/project-skills.js +0 -12
- package/dist/project-tools.js +6 -184
- package/dist/project.js +0 -48
- package/dist/prompt.js +0 -31
- package/dist/proof.js +0 -220
- package/dist/proposal.js +0 -50
- package/dist/protected-storage-look.js +0 -6
- package/dist/protected-storage.js +1 -84
- package/dist/provider-auth.js +3 -69
- package/dist/provider-capture.js +1 -15
- package/dist/provider-connection.js +0 -8
- package/dist/provider-home.js +0 -25
- package/dist/provider-limits.js +0 -14
- package/dist/provider.js +0 -324
- package/dist/public-access.js +0 -34
- package/dist/public-check.js +0 -16
- package/dist/publish.js +1 -150
- package/dist/pull-request-flow.js +0 -77
- package/dist/pull-request-schema.js +0 -4
- package/dist/pull-request-ui.js +0 -5
- package/dist/pulls.js +0 -80
- package/dist/push.js +5 -89
- package/dist/quick-start.js +1 -23
- package/dist/read-executor-worker.js +0 -1
- package/dist/read-executor.js +0 -10
- package/dist/read-only-request.js +0 -7
- package/dist/recipe-ui.js +0 -6
- package/dist/recipes.js +0 -13
- package/dist/release-adapters.js +6 -214
- package/dist/release-approval.js +0 -74
- package/dist/release-authority.js +0 -42
- package/dist/release-auto.js +0 -142
- package/dist/release-card.js +0 -100
- package/dist/release-carry.js +0 -132
- package/dist/release-ci-hold.js +0 -20
- package/dist/release-cli.js +0 -46
- package/dist/release-coverage.js +0 -16
- package/dist/release-gate.js +0 -30
- package/dist/release-git.js +0 -24
- package/dist/release-links.js +0 -17
- package/dist/release-net.js +0 -42
- package/dist/release-next.js +0 -25
- package/dist/release-recheck.js +0 -89
- package/dist/release-refusal.js +0 -18
- package/dist/release-view.js +0 -5
- package/dist/release.js +7 -341
- package/dist/releases.js +0 -49
- package/dist/remote-audit.js +0 -25
- package/dist/remote-command.js +0 -16
- package/dist/remote-destination.js +5 -26
- package/dist/remote-exec.js +1 -27
- package/dist/remote-main.js +1 -53
- package/dist/remote-run.js +0 -5
- package/dist/remote.js +0 -49
- package/dist/render.js +0 -133
- package/dist/reply-shape.js +0 -85
- package/dist/reply-voice.js +0 -7
- package/dist/report-summary.js +0 -5
- package/dist/reported-usage.js +0 -30
- package/dist/repos.js +9 -62
- package/dist/repository-context.js +1 -24
- package/dist/request-budget-ui.js +0 -4
- package/dist/request-budget.js +0 -23
- package/dist/restart-certification.js +0 -37
- package/dist/result-actions.js +0 -62
- package/dist/result-acts.js +0 -34
- package/dist/result-completion.js +0 -25
- package/dist/result-evidence-readers.js +0 -3
- package/dist/result-follow-ups.js +1 -39
- package/dist/result-review.js +0 -86
- package/dist/result-shots.js +0 -39
- package/dist/retention-ui.js +0 -7
- package/dist/retention.js +2 -46
- package/dist/review-context.js +0 -129
- package/dist/review-evidence.js +0 -4
- package/dist/review-switch.js +1 -7
- package/dist/reviewer.js +0 -35
- package/dist/route-change-check.js +0 -2
- package/dist/route-change.js +0 -16
- package/dist/route-hooks.js +0 -27
- package/dist/route-results.js +2 -58
- package/dist/route-rules.js +1 -106
- package/dist/route-savings.js +0 -36
- package/dist/route-store.js +1 -133
- package/dist/run-closeout.js +2 -50
- package/dist/run-efficiency.js +2 -44
- package/dist/run-ending.js +0 -13
- package/dist/runner-process.js +0 -33
- package/dist/runner.js +17 -189
- package/dist/sample-project.js +2 -27
- package/dist/sandbox-launch.js +4 -25
- package/dist/sandbox-runtime.js +1 -88
- package/dist/scan.js +0 -27
- package/dist/scope.js +4 -567
- package/dist/scout-browser-lock.js +0 -6
- package/dist/scout-browser.js +2 -68
- package/dist/scout-net.js +1 -32
- package/dist/scout-report.js +0 -22
- package/dist/scout.js +1 -116
- package/dist/secret-mint.js +0 -6
- package/dist/serve.js +21 -555
- package/dist/server/agents-computers.js +0 -10
- package/dist/server/agents-live-filed.js +0 -13
- package/dist/server/agents-live-lead.js +0 -19
- package/dist/server/agents-live-room.js +0 -19
- package/dist/server/chat.js +2 -194
- package/dist/server/chrome.js +17 -263
- package/dist/server/console.css +4 -4
- package/dist/server/edge-refusal.js +0 -3
- package/dist/server/flows.js +5 -74
- package/dist/server/guards.js +1 -88
- package/dist/server/handler-registry.js +0 -2
- package/dist/server/home-asks.js +1 -22
- package/dist/server/home.js +1 -30
- package/dist/server/http.js +0 -82
- package/dist/server/in-place.js +0 -15
- package/dist/server/kit-standalone.js +0 -20
- package/dist/server/kit.js +2 -114
- package/dist/server/last-checks.js +0 -2
- package/dist/server/live.js +1 -36
- package/dist/server/merge-ready-view.js +0 -6
- package/dist/server/mutation-key.js +3 -40
- package/dist/server/pages-assets.js +0 -16
- package/dist/server/pages.js +7 -195
- package/dist/server/people-tokens.js +3 -101
- package/dist/server/remote-hooks.js +0 -13
- package/dist/server/remote.js +0 -28
- package/dist/server/render-chat.js +8 -144
- package/dist/server/render-code-map.js +0 -5
- package/dist/server/render-flaky.js +0 -8
- package/dist/server/render-follow-through.js +2 -5
- package/dist/server/render-history.js +2 -34
- package/dist/server/render-new-task.js +2 -29
- package/dist/server/render-pages.js +1 -111
- package/dist/server/render-people.js +2 -46
- package/dist/server/render-projects.js +15 -32
- package/dist/server/render-release.js +1 -14
- package/dist/server/render-results.js +4 -355
- package/dist/server/render-settings.js +0 -15
- package/dist/server/render-tasks.js +13 -493
- package/dist/server/request-context.js +2 -9
- package/dist/server/retired-routes.js +0 -11
- package/dist/server/route-policy.js +0 -3
- package/dist/server/route-table.js +6 -135
- package/dist/server/runtime.js +0 -1
- package/dist/server/session.js +0 -28
- package/dist/server/settings.js +40 -246
- package/dist/server/signup-gate.js +0 -11
- package/dist/server/sweeps.js +0 -6
- package/dist/server/task-views.js +9 -227
- package/dist/server/tasks.js +5 -539
- package/dist/server/terminals.js +2 -46
- package/dist/server/welcome.js +2 -22
- package/dist/server-telemetry.js +0 -9
- package/dist/settings-groups-ui.js +50 -63
- package/dist/settings-kit-script.js +0 -19
- package/dist/settings-kit.js +0 -63
- package/dist/settings-proofs.js +0 -23
- package/dist/setup-guide.js +1 -9
- package/dist/shared-deps.js +9 -84
- package/dist/sign-in-guard.js +0 -27
- package/dist/skills-ui.js +0 -2
- package/dist/skills.js +2 -54
- package/dist/slack-api.js +0 -3
- package/dist/slack-chat.js +0 -25
- package/dist/slack-settings.js +0 -1
- package/dist/slack-socket.js +0 -5
- package/dist/slack.js +0 -4
- package/dist/sleep.js +0 -1
- package/dist/source-key.js +0 -10
- package/dist/spend-report.js +0 -29
- package/dist/spend-ui.js +0 -26
- package/dist/spend.js +0 -40
- package/dist/sqlite-runtime.js +0 -2
- package/dist/sqlite-telemetry.js +0 -9
- package/dist/sso-settings.js +0 -13
- package/dist/sso-ui.js +0 -2
- package/dist/staged-runtimes.js +5 -39
- package/dist/steer-capabilities.js +1 -7
- package/dist/steer-controls.js +0 -10
- package/dist/steer-live.js +0 -31
- package/dist/steer-mailbox.js +4 -65
- package/dist/steer-status.js +0 -7
- package/dist/stop-proof.js +5 -62
- package/dist/storage-sweep-child.js +1 -5
- package/dist/storage-sweep-process.js +2 -20
- package/dist/storage-sweep-schedule.js +0 -32
- package/dist/storage-sweep.js +2 -51
- package/dist/storage-ui.js +0 -18
- package/dist/storage.js +0 -31
- package/dist/store-baseline.js +0 -14
- package/dist/store.js +109 -4763
- package/dist/stream-scope.js +0 -16
- package/dist/structured-output.js +0 -39
- package/dist/style-asset.js +0 -2
- package/dist/subagent-admin.js +0 -9
- package/dist/subagent-desk.js +0 -29
- package/dist/subagent-memory.js +0 -38
- package/dist/subagent-question.js +0 -29
- package/dist/subagent-tools.js +1 -60
- package/dist/subagent-week.js +0 -28
- package/dist/subagent-work.js +1 -39
- package/dist/subagents-ui.js +1 -13
- package/dist/subagents.js +0 -40
- package/dist/subscription-chat.js +1 -42
- package/dist/summary.js +0 -19
- package/dist/surface.js +0 -75
- package/dist/sweep-gate.js +0 -2
- package/dist/sweep-quarantine.js +2 -13
- package/dist/sync.js +0 -47
- package/dist/tailnet.js +0 -9
- package/dist/tamper-scan.js +0 -15
- package/dist/task-activity.js +1 -16
- package/dist/task-aliases.js +0 -3
- package/dist/task-archive.js +0 -7
- package/dist/task-base.js +0 -18
- package/dist/task-composer.js +0 -2
- package/dist/task-control.js +0 -74
- package/dist/task-live.js +0 -23
- package/dist/task-moves.js +0 -28
- package/dist/task-outcome-cli.js +17 -28
- package/dist/task-review-brief.js +0 -7
- package/dist/task-sizing.js +0 -47
- package/dist/task-source.js +0 -23
- package/dist/task-status.js +0 -106
- package/dist/task-text.js +0 -12
- package/dist/team-chat-authorization.js +0 -3
- package/dist/team-contract.js +0 -2
- package/dist/team-http.js +0 -4
- package/dist/team-leads.js +1 -16
- package/dist/team-runtime.js +0 -13
- package/dist/team-ui.js +0 -1
- package/dist/team-updates.js +0 -4
- package/dist/teams-api.js +0 -12
- package/dist/teams-chat.js +0 -28
- package/dist/teams.js +0 -12
- package/dist/teardown-git.js +6 -294
- package/dist/telegram-flow.js +0 -51
- package/dist/telegram-lead.js +2 -203
- package/dist/telegram-live.js +1 -42
- package/dist/telegram-progress.js +0 -18
- package/dist/telegram-settings.js +0 -7
- package/dist/telegram-status.js +0 -46
- package/dist/telegram-team.js +1 -33
- package/dist/telegram.js +6 -454
- package/dist/templates.js +0 -24
- package/dist/terminal-catalog.js +2 -20
- package/dist/terminal-text.js +0 -12
- package/dist/test-infra.js +0 -50
- package/dist/test-temp.js +3 -26
- package/dist/text-limits.js +0 -92
- package/dist/tidy.js +0 -76
- package/dist/tier-report.js +0 -2
- package/dist/token-notices.js +1 -9
- package/dist/tokens-cli.js +0 -13
- package/dist/tool-broker.js +2 -53
- package/dist/tool-launcher.js +0 -14
- package/dist/tool-secret-store.js +3 -125
- package/dist/toolroll-update-cli.js +0 -9
- package/dist/toolroll-update-ui.js +0 -14
- package/dist/toolroll-update.js +13 -252
- package/dist/tools-ui.js +0 -17
- package/dist/transitions-recipes.js +0 -2
- package/dist/tree-proof.js +0 -23
- package/dist/tui-contract.js +0 -8
- package/dist/tui-source.js +16 -36
- package/dist/tui.js +1 -1
- package/dist/typed-start.js +0 -27
- package/dist/unfenced-test-support.js +0 -5
- package/dist/up-processes.js +1 -40
- package/dist/up-role-child.js +1 -13
- package/dist/update-notice.js +0 -1
- package/dist/vanished-retry.js +0 -40
- package/dist/verification-evidence.js +0 -39
- package/dist/version.js +0 -1
- package/dist/wake-hub.js +0 -28
- package/dist/webhook-limits.js +0 -7
- package/dist/webhook-readers.js +0 -30
- package/dist/webhook-signing.js +0 -14
- package/dist/webhooks.js +0 -54
- package/dist/welcome-facts.js +2 -14
- package/dist/when-html.js +0 -27
- package/dist/work-index.js +26 -98
- package/dist/work-summary.js +2 -17
- package/dist/workspace-motion.js +0 -2
- package/dist/workspace-revision.js +1 -21
- package/dist/workspace-ui.js +15 -135
- package/dist/worktree-notices.js +0 -3
- package/dist/worktree.js +0 -308
- package/dist/writes-mode.js +0 -1
- package/dist/youiyoux-intake.js +4 -159
- package/package.json +4 -3
- package/dist/accent-colors.d.ts +0 -51
- package/dist/acp-agents.d.ts +0 -43
- package/dist/acp-attest.d.ts +0 -44
- package/dist/acp-check.d.ts +0 -37
- package/dist/acp-client.d.ts +0 -163
- package/dist/acp-inspect.d.ts +0 -23
- package/dist/action-ledger.d.ts +0 -27
- package/dist/activity-line.d.ts +0 -29
- package/dist/actor.d.ts +0 -11
- package/dist/agent-board.d.ts +0 -229
- package/dist/agent-fence.d.ts +0 -479
- package/dist/agent-onboard.d.ts +0 -158
- package/dist/agent-pulse.d.ts +0 -43
- package/dist/agent-state-words.d.ts +0 -19
- package/dist/agent-state.d.ts +0 -65
- package/dist/agent-turns.d.ts +0 -52
- package/dist/agentconfig.d.ts +0 -191
- package/dist/agents-board.d.ts +0 -145
- package/dist/agents-live.d.ts +0 -31
- package/dist/api-tokens.d.ts +0 -80
- package/dist/approval-authority.d.ts +0 -51
- package/dist/approval-password.d.ts +0 -31
- package/dist/approval-policy.d.ts +0 -69
- package/dist/approval-rules-ui.d.ts +0 -40
- package/dist/assignment-adapters.d.ts +0 -152
- package/dist/assignment-brief.d.ts +0 -83
- package/dist/assignment-delivery.d.ts +0 -86
- package/dist/assignment-presentation.d.ts +0 -37
- package/dist/assignment-status.d.ts +0 -71
- package/dist/assignment-ui.d.ts +0 -68
- package/dist/assignment.d.ts +0 -350
- package/dist/attest.d.ts +0 -59
- package/dist/audit-cli.d.ts +0 -17
- package/dist/backend.d.ts +0 -97
- package/dist/backup-ui.d.ts +0 -32
- package/dist/backup.d.ts +0 -92
- package/dist/batch-checks.d.ts +0 -15
- package/dist/batch-policy.d.ts +0 -23
- package/dist/beads.d.ts +0 -34
- package/dist/bin.d.ts +0 -2
- package/dist/board.d.ts +0 -134
- package/dist/boot-identity.d.ts +0 -64
- package/dist/bounded-spawn.d.ts +0 -57
- package/dist/brand-icons.d.ts +0 -168
- package/dist/brand-mark.d.ts +0 -28
- package/dist/brief-fence.d.ts +0 -9
- package/dist/browser-crew.d.ts +0 -12
- package/dist/browser-shell.d.ts +0 -9
- package/dist/browser-workspace.d.ts +0 -1985
- package/dist/budget-alerts.d.ts +0 -19
- package/dist/build-review.d.ts +0 -38
- package/dist/builder-restart.d.ts +0 -21
- package/dist/builder.d.ts +0 -409
- package/dist/canonical-json.d.ts +0 -14
- package/dist/capscan.d.ts +0 -35
- package/dist/card-catalog.d.ts +0 -209
- package/dist/card-cli.d.ts +0 -43
- package/dist/card-render.d.ts +0 -43
- package/dist/card-sources.d.ts +0 -68
- package/dist/chat-acceptance.d.ts +0 -74
- package/dist/chat-actions.d.ts +0 -460
- package/dist/chat-admission.d.ts +0 -19
- package/dist/chat-approval.d.ts +0 -58
- package/dist/chat-ask.d.ts +0 -32
- package/dist/chat-card-part.d.ts +0 -11
- package/dist/chat-card.d.ts +0 -46
- package/dist/chat-channel.d.ts +0 -126
- package/dist/chat-continuity.d.ts +0 -32
- package/dist/chat-controls.d.ts +0 -117
- package/dist/chat-core.d.ts +0 -177
- package/dist/chat-decide.d.ts +0 -269
- package/dist/chat-delivery-state.d.ts +0 -132
- package/dist/chat-delivery.d.ts +0 -71
- package/dist/chat-display.d.ts +0 -1
- package/dist/chat-evidence.d.ts +0 -123
- package/dist/chat-flow.d.ts +0 -70
- package/dist/chat-follow.d.ts +0 -20
- package/dist/chat-inbox.d.ts +0 -57
- package/dist/chat-live-schema.d.ts +0 -17
- package/dist/chat-live.d.ts +0 -161
- package/dist/chat-message-states.d.ts +0 -75
- package/dist/chat-messages.d.ts +0 -338
- package/dist/chat-migration.d.ts +0 -30
- package/dist/chat-polish.d.ts +0 -17
- package/dist/chat-quiet.d.ts +0 -40
- package/dist/chat-review.d.ts +0 -51
- package/dist/chat-rooms.d.ts +0 -123
- package/dist/chat-settings-page.d.ts +0 -43
- package/dist/chat-task-actions.d.ts +0 -59
- package/dist/chat-terms.d.ts +0 -29
- package/dist/chat-voice.d.ts +0 -69
- package/dist/chat-warmth.d.ts +0 -21
- package/dist/check-access.d.ts +0 -54
- package/dist/check-facts.d.ts +0 -126
- package/dist/check-failure.d.ts +0 -113
- package/dist/check-levels-ui.d.ts +0 -36
- package/dist/check-levels.d.ts +0 -70
- package/dist/check-load.d.ts +0 -85
- package/dist/check-only-standing.d.ts +0 -36
- package/dist/check-only.d.ts +0 -15
- package/dist/check-progress.d.ts +0 -78
- package/dist/check-repair.d.ts +0 -47
- package/dist/check-report.d.ts +0 -177
- package/dist/check-stamp.d.ts +0 -46
- package/dist/checkout-cleanup.d.ts +0 -157
- package/dist/checkout-proof.d.ts +0 -28
- package/dist/child-database.d.ts +0 -12
- package/dist/claim.d.ts +0 -627
- package/dist/claude-print.d.ts +0 -12
- package/dist/cli-fast.d.ts +0 -8
- package/dist/cli-help.d.ts +0 -8
- package/dist/cli-http.d.ts +0 -58
- package/dist/cli.d.ts +0 -149
- package/dist/code-extract.d.ts +0 -44
- package/dist/code-map-acts.d.ts +0 -24
- package/dist/code-map-admission.d.ts +0 -52
- package/dist/code-map-build.d.ts +0 -63
- package/dist/code-map-cli.d.ts +0 -153
- package/dist/code-map-main.d.ts +0 -1
- package/dist/code-map-read.d.ts +0 -106
- package/dist/code-map-report.d.ts +0 -37
- package/dist/code-map-shape.d.ts +0 -172
- package/dist/code-map-store.d.ts +0 -136
- package/dist/codex-limits.d.ts +0 -15
- package/dist/coding-context.d.ts +0 -18
- package/dist/coding-handoff.d.ts +0 -39
- package/dist/coding-provider.d.ts +0 -88
- package/dist/coding-shipping-ui.d.ts +0 -5
- package/dist/coding-types.d.ts +0 -16
- package/dist/coding-ui.d.ts +0 -19
- package/dist/coding-update.d.ts +0 -28
- package/dist/coding-workspace.d.ts +0 -141
- package/dist/commit-extract.d.ts +0 -135
- package/dist/connect-cli.d.ts +0 -34
- package/dist/console-chrome.d.ts +0 -41
- package/dist/console-instance.d.ts +0 -157
- package/dist/container-state.d.ts +0 -5
- package/dist/containment.d.ts +0 -205
- package/dist/contract-changes.d.ts +0 -52
- package/dist/contracts/acceptance-terms.d.ts +0 -14
- package/dist/contracts/chat-actions.d.ts +0 -465
- package/dist/contracts/chat-callback-rows.d.ts +0 -59
- package/dist/contracts/chat-card.d.ts +0 -91
- package/dist/contracts/chat-content.d.ts +0 -551
- package/dist/contracts/chat-tables.d.ts +0 -12
- package/dist/contracts/cli.d.ts +0 -987
- package/dist/contracts/coding-activity.d.ts +0 -64
- package/dist/contracts/coding-context.d.ts +0 -97
- package/dist/contracts/coding-handoff.d.ts +0 -44
- package/dist/contracts/coding-workspace.d.ts +0 -165
- package/dist/contracts/console-api.d.ts +0 -540
- package/dist/contracts/contract-test.d.ts +0 -45
- package/dist/contracts/contract.d.ts +0 -92
- package/dist/contracts/decision.d.ts +0 -45
- package/dist/contracts/diff-stat.d.ts +0 -58
- package/dist/contracts/discord-callback.d.ts +0 -45
- package/dist/contracts/flow-card.d.ts +0 -53
- package/dist/contracts/flow-propose.d.ts +0 -334
- package/dist/contracts/flow-send.d.ts +0 -245
- package/dist/contracts/flow.d.ts +0 -19565
- package/dist/contracts/gateway-tools.d.ts +0 -472
- package/dist/contracts/handoff.d.ts +0 -91
- package/dist/contracts/health.d.ts +0 -82
- package/dist/contracts/integration-metadata.d.ts +0 -100
- package/dist/contracts/lead-context.d.ts +0 -165
- package/dist/contracts/lead-tools.d.ts +0 -2312
- package/dist/contracts/mcp-oauth.d.ts +0 -53
- package/dist/contracts/memory-pass.d.ts +0 -157
- package/dist/contracts/model-catalog.d.ts +0 -21
- package/dist/contracts/observation-request.d.ts +0 -37
- package/dist/contracts/plan.d.ts +0 -58
- package/dist/contracts/project-knowledge.d.ts +0 -159
- package/dist/contracts/project-memory.d.ts +0 -119
- package/dist/contracts/project-skills.d.ts +0 -120
- package/dist/contracts/proof.d.ts +0 -136
- package/dist/contracts/provider.d.ts +0 -40
- package/dist/contracts/recipes.d.ts +0 -166
- package/dist/contracts/release-check.d.ts +0 -371
- package/dist/contracts/release-terms.d.ts +0 -107
- package/dist/contracts/retention.d.ts +0 -42
- package/dist/contracts/review-findings.d.ts +0 -46
- package/dist/contracts/route-results.d.ts +0 -121
- package/dist/contracts/route.d.ts +0 -897
- package/dist/contracts/scope.d.ts +0 -105
- package/dist/contracts/scout-report.d.ts +0 -234
- package/dist/contracts/slack-callback.d.ts +0 -43
- package/dist/contracts/sort-answer.d.ts +0 -83
- package/dist/contracts/stage-output.d.ts +0 -127
- package/dist/contracts/storage.d.ts +0 -37
- package/dist/contracts/store-json.d.ts +0 -313
- package/dist/contracts/subagent-turn.d.ts +0 -43
- package/dist/contracts/task-sizing.d.ts +0 -24
- package/dist/contracts/teams-callback.d.ts +0 -13
- package/dist/contracts/telegram-callback.d.ts +0 -120
- package/dist/contracts/trigger-payloads.d.ts +0 -389
- package/dist/contracts/update-journal.d.ts +0 -254
- package/dist/contracts/verification-receipt.d.ts +0 -200
- package/dist/contracts/verification-view.d.ts +0 -102
- package/dist/contracts/youiyoux-request.d.ts +0 -248
- package/dist/control-setup.d.ts +0 -44
- package/dist/control-ui.d.ts +0 -37
- package/dist/controller-service.d.ts +0 -1
- package/dist/controller-supervisor.d.ts +0 -38
- package/dist/converse.d.ts +0 -316
- package/dist/coordinator-proposals.d.ts +0 -29
- package/dist/coordinator.d.ts +0 -186
- package/dist/credentials-ui.d.ts +0 -33
- package/dist/daemon.d.ts +0 -226
- package/dist/database-reclaim.d.ts +0 -4
- package/dist/decision.d.ts +0 -119
- package/dist/demo-chat.d.ts +0 -32
- package/dist/demo.d.ts +0 -153
- package/dist/deploy-gate.d.ts +0 -20
- package/dist/deploy-lock.d.ts +0 -8
- package/dist/deploy-phase.d.ts +0 -37
- package/dist/deploy-rescue.d.ts +0 -42
- package/dist/deprecations.d.ts +0 -20
- package/dist/design/kit.d.ts +0 -216
- package/dist/desktop-access.d.ts +0 -28
- package/dist/desktop-bundle.d.ts +0 -16
- package/dist/desktop-host.d.ts +0 -54
- package/dist/desktop-update-gate.d.ts +0 -12
- package/dist/desktop-update-recovery.d.ts +0 -14
- package/dist/desktop-update.d.ts +0 -147
- package/dist/digest-times.d.ts +0 -3
- package/dist/disclosure.d.ts +0 -6
- package/dist/discord-api.d.ts +0 -24
- package/dist/discord-chat.d.ts +0 -27
- package/dist/discord-settings.d.ts +0 -4
- package/dist/discord.d.ts +0 -10
- package/dist/discover.d.ts +0 -75
- package/dist/dispatch.d.ts +0 -123
- package/dist/dispose.d.ts +0 -194
- package/dist/doctor.d.ts +0 -67
- package/dist/easy-start-args.d.ts +0 -13
- package/dist/easy-start.d.ts +0 -77
- package/dist/egress.d.ts +0 -121
- package/dist/email-settings.d.ts +0 -34
- package/dist/envelope.d.ts +0 -47
- package/dist/eval-gate.d.ts +0 -51
- package/dist/eval-hooks.d.ts +0 -94
- package/dist/eval-oracle-main.d.ts +0 -1
- package/dist/eval-oracle.d.ts +0 -60
- package/dist/eval-world.d.ts +0 -17
- package/dist/evals.d.ts +0 -299
- package/dist/evidence-pack.d.ts +0 -186
- package/dist/evidence-pair.d.ts +0 -53
- package/dist/evidence.d.ts +0 -371
- package/dist/exec.d.ts +0 -355
- package/dist/exhaustion.d.ts +0 -58
- package/dist/export-ui.d.ts +0 -11
- package/dist/export.d.ts +0 -48
- package/dist/failing-first.d.ts +0 -31
- package/dist/fallback-schema.d.ts +0 -8
- package/dist/fallback.d.ts +0 -138
- package/dist/fast-start.d.ts +0 -213
- package/dist/fast-terms.d.ts +0 -9
- package/dist/fenced-check-coverage.d.ts +0 -62
- package/dist/findings.d.ts +0 -224
- package/dist/first-run.d.ts +0 -197
- package/dist/first-tasks-child.d.ts +0 -1
- package/dist/flaky-ci.d.ts +0 -31
- package/dist/flaky-cli.d.ts +0 -60
- package/dist/flaky.d.ts +0 -83
- package/dist/fleet-schema.d.ts +0 -17
- package/dist/flow-actions.d.ts +0 -79
- package/dist/flow-browser.d.ts +0 -103
- package/dist/flow-cadence.d.ts +0 -48
- package/dist/flow-card-task.d.ts +0 -11
- package/dist/flow-changed.d.ts +0 -14
- package/dist/flow-code.d.ts +0 -84
- package/dist/flow-draft.d.ts +0 -42
- package/dist/flow-engine.d.ts +0 -82
- package/dist/flow-gallery-ui.d.ts +0 -73
- package/dist/flow-gallery.d.ts +0 -147
- package/dist/flow-insights.d.ts +0 -104
- package/dist/flow-items.d.ts +0 -37
- package/dist/flow-live.d.ts +0 -16
- package/dist/flow-people.d.ts +0 -23
- package/dist/flow-pull-request.d.ts +0 -14
- package/dist/flow-replies.d.ts +0 -48
- package/dist/flow-result-card.d.ts +0 -22
- package/dist/flow-schedule.d.ts +0 -154
- package/dist/flow-scripts.d.ts +0 -31
- package/dist/flow-secrets.d.ts +0 -13
- package/dist/flow-send.d.ts +0 -54
- package/dist/flow-share.d.ts +0 -78
- package/dist/flow-sort.d.ts +0 -63
- package/dist/flow-starters-ui.d.ts +0 -15
- package/dist/flow-starters.d.ts +0 -63
- package/dist/flow-steps.d.ts +0 -52
- package/dist/flow-triggers.d.ts +0 -303
- package/dist/flow-unattended-words.d.ts +0 -48
- package/dist/flow-unattended.d.ts +0 -259
- package/dist/flows-cli.d.ts +0 -358
- package/dist/flows-ui.d.ts +0 -70
- package/dist/flows.d.ts +0 -136
- package/dist/folder-gate.d.ts +0 -32
- package/dist/folder-look.d.ts +0 -110
- package/dist/follow-through-brief.d.ts +0 -12
- package/dist/follow-through-cli.d.ts +0 -23
- package/dist/fonts.d.ts +0 -19
- package/dist/gaps.d.ts +0 -35
- package/dist/gate-failure.d.ts +0 -40
- package/dist/git-floor.d.ts +0 -16
- package/dist/git-incident.d.ts +0 -65
- package/dist/git-views.d.ts +0 -20
- package/dist/git.d.ts +0 -54
- package/dist/github-import.d.ts +0 -62
- package/dist/github-jobs.d.ts +0 -25
- package/dist/google-mail.d.ts +0 -59
- package/dist/grant.d.ts +0 -136
- package/dist/graph.d.ts +0 -164
- package/dist/guides.d.ts +0 -22
- package/dist/handover-note.d.ts +0 -33
- package/dist/health-cli.d.ts +0 -3
- package/dist/home-groups.d.ts +0 -39
- package/dist/html.d.ts +0 -85
- package/dist/install-method.d.ts +0 -17
- package/dist/integrations-ui.d.ts +0 -17
- package/dist/integrations.d.ts +0 -138
- package/dist/invoke.d.ts +0 -228
- package/dist/is-record.d.ts +0 -2
- package/dist/issues.d.ts +0 -41
- package/dist/jsonl-discriminants.d.ts +0 -11
- package/dist/keymap.d.ts +0 -43
- package/dist/keys.d.ts +0 -108
- package/dist/kits-ui.d.ts +0 -16
- package/dist/kits.d.ts +0 -88
- package/dist/knowledge-cli.d.ts +0 -132
- package/dist/knowledge-ui.d.ts +0 -45
- package/dist/landed-cleanup.d.ts +0 -175
- package/dist/laptop-background.d.ts +0 -187
- package/dist/laptop-service.d.ts +0 -111
- package/dist/latency-timeline.d.ts +0 -46
- package/dist/lead-about.d.ts +0 -35
- package/dist/lead-answer-eval.d.ts +0 -93
- package/dist/lead-capabilities.d.ts +0 -57
- package/dist/lead-cli-live.d.ts +0 -56
- package/dist/lead-cli.d.ts +0 -58
- package/dist/lead-commitments.d.ts +0 -84
- package/dist/lead-context.d.ts +0 -45
- package/dist/lead-contract.d.ts +0 -10
- package/dist/lead-doors.d.ts +0 -122
- package/dist/lead-follow.d.ts +0 -26
- package/dist/lead-identity.d.ts +0 -23
- package/dist/lead-latency-schema.d.ts +0 -24
- package/dist/lead-people.d.ts +0 -55
- package/dist/lead-progress.d.ts +0 -67
- package/dist/lead-queue-runtime.d.ts +0 -46
- package/dist/lead-queue.d.ts +0 -104
- package/dist/lead-route.d.ts +0 -56
- package/dist/lead-status.d.ts +0 -116
- package/dist/lead-sweep.d.ts +0 -67
- package/dist/lead-tools.d.ts +0 -167
- package/dist/lead-voice.d.ts +0 -85
- package/dist/lead.d.ts +0 -142
- package/dist/learning-child.d.ts +0 -1
- package/dist/learning-look.d.ts +0 -25
- package/dist/ledger-chain.d.ts +0 -46
- package/dist/ledger-csv.d.ts +0 -4
- package/dist/ledger-view.d.ts +0 -27
- package/dist/lesson-notes.d.ts +0 -81
- package/dist/limits-ui.d.ts +0 -34
- package/dist/link.d.ts +0 -72
- package/dist/live-backup.d.ts +0 -39
- package/dist/live-bus.d.ts +0 -141
- package/dist/live-children-read.d.ts +0 -52
- package/dist/live-children.d.ts +0 -73
- package/dist/live-detail.d.ts +0 -27
- package/dist/live-input.d.ts +0 -68
- package/dist/live-main-read.d.ts +0 -19
- package/dist/live-notes.d.ts +0 -20
- package/dist/live-open.d.ts +0 -28
- package/dist/live-records.d.ts +0 -149
- package/dist/live-reply.d.ts +0 -83
- package/dist/live-terminal.d.ts +0 -273
- package/dist/live.d.ts +0 -152
- package/dist/local-owner-acts.d.ts +0 -83
- package/dist/local-owner.d.ts +0 -135
- package/dist/log.d.ts +0 -7
- package/dist/login-secrets.d.ts +0 -60
- package/dist/machine-check.d.ts +0 -16
- package/dist/machine-identity.d.ts +0 -75
- package/dist/mailbox.d.ts +0 -57
- package/dist/maintenance.d.ts +0 -13
- package/dist/mcp-connect.d.ts +0 -181
- package/dist/mcp-core.d.ts +0 -110
- package/dist/mcp-http.d.ts +0 -32
- package/dist/mcp-oauth.d.ts +0 -92
- package/dist/mcp-person.d.ts +0 -22
- package/dist/mcp.d.ts +0 -20
- package/dist/memory-cli.d.ts +0 -768
- package/dist/memory-pass.d.ts +0 -151
- package/dist/memory-tidy.d.ts +0 -181
- package/dist/memory-use.d.ts +0 -35
- package/dist/merge-checklist.d.ts +0 -55
- package/dist/metrics.d.ts +0 -6
- package/dist/mobile-viewport.d.ts +0 -7
- package/dist/model-catalog.d.ts +0 -123
- package/dist/model-choices.d.ts +0 -235
- package/dist/model-names.d.ts +0 -6
- package/dist/models-cli.d.ts +0 -307
- package/dist/models-ui.d.ts +0 -161
- package/dist/modes.d.ts +0 -99
- package/dist/monitoring-settings.d.ts +0 -44
- package/dist/monitoring-ui.d.ts +0 -23
- package/dist/monitoring.d.ts +0 -34
- package/dist/names.d.ts +0 -67
- package/dist/needs-you.d.ts +0 -164
- package/dist/never-index.d.ts +0 -3
- package/dist/nightly-check.d.ts +0 -107
- package/dist/nightly-github.d.ts +0 -318
- package/dist/notification-delivery.d.ts +0 -19
- package/dist/notification-rows.d.ts +0 -30
- package/dist/oauth-run-token.d.ts +0 -51
- package/dist/observations.d.ts +0 -36
- package/dist/oidc.d.ts +0 -71
- package/dist/onboard.d.ts +0 -108
- package/dist/one-step-chat-schema.d.ts +0 -22
- package/dist/openrouter-models.d.ts +0 -34
- package/dist/operate-remote-arguments.d.ts +0 -36
- package/dist/operate-remote.d.ts +0 -98
- package/dist/operate.d.ts +0 -401
- package/dist/orphan-sweep.d.ts +0 -65
- package/dist/page-work-contract.d.ts +0 -21
- package/dist/password-bearer.d.ts +0 -25
- package/dist/passwordless.d.ts +0 -23
- package/dist/peek-cli.d.ts +0 -112
- package/dist/peek.d.ts +0 -110
- package/dist/people-audit-ui.d.ts +0 -16
- package/dist/person-proof.d.ts +0 -2
- package/dist/phase-routing.d.ts +0 -401
- package/dist/plain-schema.d.ts +0 -23
- package/dist/plain-words.d.ts +0 -20
- package/dist/plan-auto.d.ts +0 -25
- package/dist/plan-login.d.ts +0 -14
- package/dist/plan.d.ts +0 -188
- package/dist/plane-review.d.ts +0 -54
- package/dist/planner-source.d.ts +0 -225
- package/dist/planner.d.ts +0 -76
- package/dist/policy-ui.d.ts +0 -22
- package/dist/policy.d.ts +0 -92
- package/dist/prepared-evidence.d.ts +0 -17
- package/dist/principal.d.ts +0 -42
- package/dist/probe.d.ts +0 -46
- package/dist/process-custody.d.ts +0 -17
- package/dist/process-liveness.d.ts +0 -13
- package/dist/process-tree.d.ts +0 -39
- package/dist/project-access.d.ts +0 -17
- package/dist/project-activity.d.ts +0 -20
- package/dist/project-admission.d.ts +0 -105
- package/dist/project-cli.d.ts +0 -19
- package/dist/project-concurrency.d.ts +0 -62
- package/dist/project-delete-ui.d.ts +0 -96
- package/dist/project-delete.d.ts +0 -59
- package/dist/project-demo.d.ts +0 -12
- package/dist/project-file.d.ts +0 -3
- package/dist/project-identity.d.ts +0 -52
- package/dist/project-knowledge.d.ts +0 -124
- package/dist/project-learning.d.ts +0 -120
- package/dist/project-memory.d.ts +0 -70
- package/dist/project-outcomes.d.ts +0 -119
- package/dist/project-sandbox.d.ts +0 -59
- package/dist/project-skills.d.ts +0 -139
- package/dist/project-tools.d.ts +0 -318
- package/dist/project.d.ts +0 -65
- package/dist/prompt.d.ts +0 -33
- package/dist/proof.d.ts +0 -457
- package/dist/proposal.d.ts +0 -70
- package/dist/protected-storage-look.d.ts +0 -1
- package/dist/protected-storage.d.ts +0 -98
- package/dist/provider-auth.d.ts +0 -143
- package/dist/provider-capture.d.ts +0 -34
- package/dist/provider-connection.d.ts +0 -23
- package/dist/provider-home.d.ts +0 -22
- package/dist/provider-limits.d.ts +0 -37
- package/dist/provider.d.ts +0 -369
- package/dist/public-access.d.ts +0 -61
- package/dist/public-check.d.ts +0 -37
- package/dist/publish.d.ts +0 -146
- package/dist/pull-request-flow.d.ts +0 -189
- package/dist/pull-request-schema.d.ts +0 -5
- package/dist/pull-request-ui.d.ts +0 -25
- package/dist/pulls.d.ts +0 -121
- package/dist/push.d.ts +0 -120
- package/dist/quality.d.ts +0 -8
- package/dist/quick-start.d.ts +0 -26
- package/dist/read-executor-worker.d.ts +0 -1
- package/dist/read-executor.d.ts +0 -66
- package/dist/read-only-request.d.ts +0 -4
- package/dist/recipe-ui.d.ts +0 -21
- package/dist/recipes.d.ts +0 -56
- package/dist/release-adapters.d.ts +0 -205
- package/dist/release-approval.d.ts +0 -180
- package/dist/release-authority.d.ts +0 -173
- package/dist/release-auto.d.ts +0 -184
- package/dist/release-card.d.ts +0 -170
- package/dist/release-carry.d.ts +0 -261
- package/dist/release-ci-hold.d.ts +0 -41
- package/dist/release-cli.d.ts +0 -34
- package/dist/release-coverage.d.ts +0 -16
- package/dist/release-gate.d.ts +0 -84
- package/dist/release-git.d.ts +0 -43
- package/dist/release-links.d.ts +0 -29
- package/dist/release-net.d.ts +0 -90
- package/dist/release-next.d.ts +0 -48
- package/dist/release-recheck.d.ts +0 -146
- package/dist/release-refusal.d.ts +0 -32
- package/dist/release-view.d.ts +0 -37
- package/dist/release.d.ts +0 -806
- package/dist/releases.d.ts +0 -94
- package/dist/remote-audit.d.ts +0 -79
- package/dist/remote-command.d.ts +0 -45
- package/dist/remote-destination.d.ts +0 -36
- package/dist/remote-exec.d.ts +0 -38
- package/dist/remote-main.d.ts +0 -111
- package/dist/remote-run.d.ts +0 -20
- package/dist/remote.d.ts +0 -67
- package/dist/render.d.ts +0 -64
- package/dist/reply-shape.d.ts +0 -106
- package/dist/reply-voice.d.ts +0 -23
- package/dist/report-summary.d.ts +0 -22
- package/dist/reported-usage.d.ts +0 -69
- package/dist/repos.d.ts +0 -67
- package/dist/repository-context-ui.d.ts +0 -3
- package/dist/repository-context.d.ts +0 -66
- package/dist/request-budget-ui.d.ts +0 -14
- package/dist/request-budget.d.ts +0 -127
- package/dist/restart-certification.d.ts +0 -133
- package/dist/result-actions.d.ts +0 -36
- package/dist/result-acts.d.ts +0 -112
- package/dist/result-completion.d.ts +0 -39
- package/dist/result-evidence-readers.d.ts +0 -42
- package/dist/result-follow-ups.d.ts +0 -118
- package/dist/result-review.d.ts +0 -220
- package/dist/result-shots.d.ts +0 -59
- package/dist/retention-ui.d.ts +0 -21
- package/dist/retention.d.ts +0 -77
- package/dist/review-context.d.ts +0 -245
- package/dist/review-evidence.d.ts +0 -33
- package/dist/review-switch.d.ts +0 -36
- package/dist/reviewer.d.ts +0 -99
- package/dist/route-change-check.d.ts +0 -4
- package/dist/route-change.d.ts +0 -22
- package/dist/route-hooks.d.ts +0 -54
- package/dist/route-results.d.ts +0 -75
- package/dist/route-rules.d.ts +0 -324
- package/dist/route-savings.d.ts +0 -136
- package/dist/route-store.d.ts +0 -300
- package/dist/run-closeout.d.ts +0 -89
- package/dist/run-efficiency.d.ts +0 -74
- package/dist/run-ending.d.ts +0 -21
- package/dist/runner-process.d.ts +0 -76
- package/dist/runner.d.ts +0 -324
- package/dist/sample-project.d.ts +0 -31
- package/dist/sandbox-launch.d.ts +0 -1
- package/dist/sandbox-runtime.d.ts +0 -128
- package/dist/scan.d.ts +0 -32
- package/dist/scope.d.ts +0 -1098
- package/dist/scout-browser-lock.d.ts +0 -69
- package/dist/scout-browser.d.ts +0 -107
- package/dist/scout-net.d.ts +0 -25
- package/dist/scout-report.d.ts +0 -23
- package/dist/scout.d.ts +0 -142
- package/dist/secret-mint.d.ts +0 -1
- package/dist/serve.d.ts +0 -11
- package/dist/server/agents-computers.d.ts +0 -9
- package/dist/server/agents-live-filed.d.ts +0 -17
- package/dist/server/agents-live-lead.d.ts +0 -47
- package/dist/server/agents-live-room.d.ts +0 -23
- package/dist/server/chat.d.ts +0 -39
- package/dist/server/chrome.d.ts +0 -328
- package/dist/server/edge-refusal.d.ts +0 -7
- package/dist/server/flows.d.ts +0 -8
- package/dist/server/guards.d.ts +0 -81
- package/dist/server/handler-context.d.ts +0 -22
- package/dist/server/handler-registry.d.ts +0 -23
- package/dist/server/home-asks.d.ts +0 -45
- package/dist/server/home.d.ts +0 -65
- package/dist/server/http.d.ts +0 -337
- package/dist/server/in-place.d.ts +0 -15
- package/dist/server/kit-standalone.d.ts +0 -22
- package/dist/server/kit.d.ts +0 -452
- package/dist/server/last-checks.d.ts +0 -17
- package/dist/server/live.d.ts +0 -74
- package/dist/server/merge-ready-view.d.ts +0 -10
- package/dist/server/mutation-key.d.ts +0 -70
- package/dist/server/pages-assets.d.ts +0 -11
- package/dist/server/pages.d.ts +0 -8
- package/dist/server/people-tokens.d.ts +0 -18
- package/dist/server/remote-hooks.d.ts +0 -29
- package/dist/server/remote.d.ts +0 -60
- package/dist/server/render-chat.d.ts +0 -439
- package/dist/server/render-code-map.d.ts +0 -30
- package/dist/server/render-flaky.d.ts +0 -20
- package/dist/server/render-follow-through.d.ts +0 -11
- package/dist/server/render-history.d.ts +0 -51
- package/dist/server/render-new-task.d.ts +0 -54
- package/dist/server/render-pages.d.ts +0 -236
- package/dist/server/render-people.d.ts +0 -102
- package/dist/server/render-projects.d.ts +0 -104
- package/dist/server/render-release.d.ts +0 -19
- package/dist/server/render-results.d.ts +0 -758
- package/dist/server/render-settings.d.ts +0 -93
- package/dist/server/render-tasks.d.ts +0 -783
- package/dist/server/request-context.d.ts +0 -78
- package/dist/server/retired-routes.d.ts +0 -17
- package/dist/server/route-policy.d.ts +0 -18
- package/dist/server/route-table.d.ts +0 -114
- package/dist/server/runtime.d.ts +0 -343
- package/dist/server/session.d.ts +0 -192
- package/dist/server/settings.d.ts +0 -76
- package/dist/server/signup-gate.d.ts +0 -9
- package/dist/server/sweeps.d.ts +0 -4
- package/dist/server/task-views.d.ts +0 -98
- package/dist/server/tasks.d.ts +0 -108
- package/dist/server/terminals.d.ts +0 -31
- package/dist/server/welcome.d.ts +0 -28
- package/dist/server-telemetry.d.ts +0 -87
- package/dist/settings-groups-ui.d.ts +0 -286
- package/dist/settings-kit-script.d.ts +0 -21
- package/dist/settings-kit.d.ts +0 -173
- package/dist/settings-proofs.d.ts +0 -64
- package/dist/setup-guide.d.ts +0 -39
- package/dist/shared-deps.d.ts +0 -115
- package/dist/sign-in-guard.d.ts +0 -70
- package/dist/skills-ui.d.ts +0 -12
- package/dist/skills.d.ts +0 -99
- package/dist/slack-api.d.ts +0 -59
- package/dist/slack-chat.d.ts +0 -37
- package/dist/slack-settings.d.ts +0 -4
- package/dist/slack-socket.d.ts +0 -12
- package/dist/slack.d.ts +0 -6
- package/dist/sleep.d.ts +0 -2
- package/dist/source-key.d.ts +0 -2
- package/dist/spend-report.d.ts +0 -87
- package/dist/spend-ui.d.ts +0 -80
- package/dist/spend.d.ts +0 -142
- package/dist/sqlite-runtime.d.ts +0 -3
- package/dist/sqlite-telemetry.d.ts +0 -9
- package/dist/sso-settings.d.ts +0 -33
- package/dist/sso-ui.d.ts +0 -26
- package/dist/staged-runtimes.d.ts +0 -54
- package/dist/steer-capabilities.d.ts +0 -32
- package/dist/steer-controls.d.ts +0 -14
- package/dist/steer-live.d.ts +0 -19
- package/dist/steer-mailbox.d.ts +0 -46
- package/dist/steer-status.d.ts +0 -25
- package/dist/stop-proof.d.ts +0 -67
- package/dist/storage-sweep-child.d.ts +0 -1
- package/dist/storage-sweep-process.d.ts +0 -55
- package/dist/storage-sweep-schedule.d.ts +0 -30
- package/dist/storage-sweep.d.ts +0 -77
- package/dist/storage-ui.d.ts +0 -23
- package/dist/storage.d.ts +0 -68
- package/dist/store-baseline.d.ts +0 -19
- package/dist/store.d.ts +0 -8613
- package/dist/stream-scope.d.ts +0 -18
- package/dist/structured-output.d.ts +0 -57
- package/dist/style-asset.d.ts +0 -7
- package/dist/subagent-admin.d.ts +0 -53
- package/dist/subagent-desk.d.ts +0 -59
- package/dist/subagent-memory.d.ts +0 -65
- package/dist/subagent-question.d.ts +0 -59
- package/dist/subagent-tools.d.ts +0 -125
- package/dist/subagent-week.d.ts +0 -68
- package/dist/subagent-work.d.ts +0 -76
- package/dist/subagents-ui.d.ts +0 -22
- package/dist/subagents.d.ts +0 -146
- package/dist/subscription-chat.d.ts +0 -54
- package/dist/summary.d.ts +0 -33
- package/dist/surface.d.ts +0 -49
- package/dist/sweep-gate.d.ts +0 -10
- package/dist/sweep-quarantine.d.ts +0 -29
- package/dist/sync.d.ts +0 -94
- package/dist/tailnet.d.ts +0 -11
- package/dist/tamper-scan.d.ts +0 -4
- package/dist/task-activity.d.ts +0 -27
- package/dist/task-aliases.d.ts +0 -5
- package/dist/task-archive.d.ts +0 -13
- package/dist/task-base.d.ts +0 -39
- package/dist/task-composer.d.ts +0 -14
- package/dist/task-control.d.ts +0 -159
- package/dist/task-live.d.ts +0 -8
- package/dist/task-moves.d.ts +0 -90
- package/dist/task-outcome-cli.d.ts +0 -48
- package/dist/task-review-brief.d.ts +0 -69
- package/dist/task-sizing.d.ts +0 -58
- package/dist/task-source.d.ts +0 -77
- package/dist/task-status.d.ts +0 -324
- package/dist/task-text.d.ts +0 -31
- package/dist/team-chat-authorization.d.ts +0 -11
- package/dist/team-contract.d.ts +0 -103
- package/dist/team-http.d.ts +0 -25
- package/dist/team-leads.d.ts +0 -85
- package/dist/team-runtime.d.ts +0 -25
- package/dist/team-ui.d.ts +0 -4
- package/dist/team-updates.d.ts +0 -8
- package/dist/teams-api.d.ts +0 -33
- package/dist/teams-chat.d.ts +0 -36
- package/dist/teams-settings.d.ts +0 -14
- package/dist/teams.d.ts +0 -24
- package/dist/teardown-git.d.ts +0 -164
- package/dist/telegram-flow.d.ts +0 -112
- package/dist/telegram-lead.d.ts +0 -151
- package/dist/telegram-live.d.ts +0 -116
- package/dist/telegram-progress.d.ts +0 -20
- package/dist/telegram-settings.d.ts +0 -9
- package/dist/telegram-status.d.ts +0 -83
- package/dist/telegram-team.d.ts +0 -68
- package/dist/telegram.d.ts +0 -271
- package/dist/templates.d.ts +0 -69
- package/dist/terminal-catalog.d.ts +0 -11
- package/dist/terminal-text.d.ts +0 -11
- package/dist/test-infra.d.ts +0 -34
- package/dist/test-temp.d.ts +0 -40
- package/dist/text-limits.d.ts +0 -297
- package/dist/tidy.d.ts +0 -130
- package/dist/tier-report.d.ts +0 -44
- package/dist/token-notices.d.ts +0 -11
- package/dist/tokens-cli.d.ts +0 -21
- package/dist/tool-broker.d.ts +0 -52
- package/dist/tool-launcher.d.ts +0 -1
- package/dist/tool-secret-store.d.ts +0 -167
- package/dist/toolroll-update-cli.d.ts +0 -15
- package/dist/toolroll-update-ui.d.ts +0 -47
- package/dist/toolroll-update.d.ts +0 -265
- package/dist/tools-ui.d.ts +0 -51
- package/dist/transitions-recipes.d.ts +0 -1
- package/dist/tree-proof.d.ts +0 -34
- package/dist/tui-contract.d.ts +0 -202
- package/dist/tui-source.d.ts +0 -14
- package/dist/typed-start.d.ts +0 -51
- package/dist/unfenced-test-support.d.ts +0 -2
- package/dist/up-processes.d.ts +0 -162
- package/dist/up-role-child.d.ts +0 -1
- package/dist/update-notice.d.ts +0 -5
- package/dist/vanished-retry.d.ts +0 -30
- package/dist/verification-evidence.d.ts +0 -68
- package/dist/version.d.ts +0 -2
- package/dist/wake-hub.d.ts +0 -72
- package/dist/webhook-limits.d.ts +0 -23
- package/dist/webhook-readers.d.ts +0 -56
- package/dist/webhook-signing.d.ts +0 -27
- package/dist/webhooks.d.ts +0 -84
- package/dist/welcome-facts.d.ts +0 -18
- package/dist/when-html.d.ts +0 -40
- package/dist/work-index.d.ts +0 -175
- package/dist/work-summary.d.ts +0 -61
- package/dist/workspace-motion.d.ts +0 -4
- package/dist/workspace-revision.d.ts +0 -48
- package/dist/workspace-ui.d.ts +0 -385
- package/dist/worktree-notices.d.ts +0 -13
- package/dist/worktree.d.ts +0 -365
- package/dist/writes-mode.d.ts +0 -9
- package/dist/youiyoux-intake.d.ts +0 -234
package/dist/nightly-github.js
CHANGED
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GitHub's nightly as release debt (docs/plans/evals-nightly.md, part A). The plane reads every Nightly run and every
|
|
3
|
-
* attempt on main itself, through its own gh, and a lane that failed its tests becomes debt.
|
|
4
|
-
*
|
|
5
|
-
* - Opting in (`toolroll release nightly --github`) is a person's step, proved now: it records the GitHub repository
|
|
6
|
-
* from the project's recorded remote and seeds one stable lane per required check (release.ts REQUIRED_PR_CHECKS).
|
|
7
|
-
* A rename needs a person's alias; a lane retires only when no required check names it, by a person.
|
|
8
|
-
* - Reading keeps a paging cursor (at most NIGHTLY_PAGES_PER_READ pages a read, resumed on the next) and a watch list
|
|
9
|
-
* of every counted run created in the last 30 days (GitHub's re-run horizon), each re-read for new attempts; a run
|
|
10
|
-
* that hasn't finished stays watched whatever its age. A run counts only from `.github/workflows/nightly.yml`
|
|
11
|
-
* exactly, in the project's own repository, on main, by schedule or dispatch, at a commit on main's first-parent
|
|
12
|
-
* history as the plane read it (nightly-check.ts trustedMainOf). Every attempt's completed jobs are recorded once.
|
|
13
|
-
* - A lane's failure is a test failure unless GitHub's own step records show the runner failed (github-jobs.ts):
|
|
14
|
-
* before the lane's own steps, or, for an aggregate lane failing only at "Every shard passed", a positively
|
|
15
|
-
* established chain of readable shard failures in the same attempt, each before its tests. The coverage verifier
|
|
16
|
-
* ("Every shard ran the whole suite") failing is always a test failure. A cause that can't be read is a failure.
|
|
17
|
-
* - A failure clears only when a different counted nightly run, started after the failure completed, passes the same
|
|
18
|
-
* lane on a commit that contains the failed one. Nothing read later — a cancellation, a missing job, an unreadable
|
|
19
|
-
* page, a newer attempt — ever removes a recorded failure.
|
|
20
|
-
*
|
|
21
|
-
* Trust: a lane's conclusion is GitHub's record of the job, not independent evidence (the tests are the repository's
|
|
22
|
-
* code). It only ever adds holds, and never trusts more than the required-checks gate already does.
|
|
23
|
-
*/
|
|
24
1
|
import { authenticateApprover, personProof } from "./scope.js";
|
|
25
2
|
import { verifiedFirstParentAncestry } from "./commit-extract.js";
|
|
26
3
|
import { projectGitDir } from "./check-report.js";
|
|
@@ -30,34 +7,22 @@ import { REQUIRED_PR_CHECKS, REQUIRED_PR_CHECKS_WORKFLOW } from "./release.js";
|
|
|
30
7
|
import { releaseRemote } from "./release-git.js";
|
|
31
8
|
import { TRUSTED_MAIN_ACTION, releaseAuthorityOfTask, trustedRemoteIdentity } from "./store.js";
|
|
32
9
|
export { GITHUB_NIGHTLY_ON };
|
|
33
|
-
/** The one workflow file whose runs count: exactly this path, never one with an `@` suffix or another folder's. */
|
|
34
10
|
export const NIGHTLY_WORKFLOW_PATH = ".github/workflows/nightly.yml";
|
|
35
|
-
/** GitHub's re-run horizon: a counted run is read again for new attempts for this long. */
|
|
36
11
|
export const NIGHTLY_WATCH_MS = 30 * 24 * 60 * 60_000;
|
|
37
|
-
/** Listing never goes further back than this: no run older than it can still be unfinished. */
|
|
38
12
|
export const NIGHTLY_LIST_HORIZON_MS = 40 * 24 * 60 * 60_000;
|
|
39
|
-
/** Pages of runs one read lists at most; a longer backlog resumes on the next read. */
|
|
40
13
|
export const NIGHTLY_PAGES_PER_READ = 10;
|
|
41
14
|
const PAGE = 100;
|
|
42
|
-
/** GitHub answers at most this many runs to one filtered listing. */
|
|
43
15
|
const LISTING_CAP = 1000;
|
|
44
|
-
/** A boundary's one bounded read (deploy, merge, pre-tag), and the background read's overall deadline. */
|
|
45
16
|
export const NIGHTLY_BOUNDARY_READ_MS = 20_000;
|
|
46
17
|
export const NIGHTLY_BACKGROUND_READ_MS = 60_000;
|
|
47
|
-
/** How often the watch loop reads each opted-in project's nightly. */
|
|
48
18
|
export const NIGHTLY_BACKGROUND_EVERY_MS = 30 * 60_000;
|
|
49
|
-
/** One call never waits longer than this, inside the read's deadline. */
|
|
50
19
|
const CALL_MS = 15_000;
|
|
51
|
-
/** How far back main's first-parent history is walked. */
|
|
52
20
|
const MAIN_WALK = 20_000;
|
|
53
21
|
const SHA = /^[0-9a-f]{40}$/;
|
|
54
|
-
/** The job-name prefix GitHub gives a lane of each called workflow inside nightly.yml (its job names "nightly" and
|
|
55
|
-
* "nightly floor"). */
|
|
56
22
|
const LANE_PREFIX = {
|
|
57
23
|
".github/workflows/ci.yml": "nightly / ",
|
|
58
24
|
".github/workflows/release-candidate.yml": "nightly floor / ",
|
|
59
25
|
};
|
|
60
|
-
/** An aggregate lane: the join of a sharded unit suite. */
|
|
61
26
|
const AGGREGATE = /^node (\d+) · (ubuntu|macos)-latest$/;
|
|
62
27
|
export const SHARDS_PASSED_STEP = "Every shard passed";
|
|
63
28
|
export const SHARDS_COVERED_STEP = "Every shard ran the whole suite";
|
|
@@ -69,8 +34,6 @@ const isoOf = (value) => {
|
|
|
69
34
|
return Number.isFinite(at) ? new Date(at).toISOString() : null;
|
|
70
35
|
};
|
|
71
36
|
const positive = (value) => Number.isSafeInteger(value) && value > 0;
|
|
72
|
-
// ---- opting in, lanes and aliases ----------------------------------------------------------------------------------
|
|
73
|
-
/** Whether a project opted in, as the plane recorded a person's step: the newest such ledger row, read strictly. */
|
|
74
37
|
export function githubNightlyOf(store, repo) {
|
|
75
38
|
const row = store.handle.prepare("SELECT detail FROM action_ledger WHERE repo = ? AND action = ? ORDER BY id DESC LIMIT 1").get(repo, GITHUB_NIGHTLY_ON);
|
|
76
39
|
if (row === undefined)
|
|
@@ -86,14 +49,10 @@ export function githubNightlyOf(store, repo) {
|
|
|
86
49
|
return null;
|
|
87
50
|
}
|
|
88
51
|
}
|
|
89
|
-
/** Every project that ever opted in (a broken or superseded record still counts here: its debt still holds). */
|
|
90
52
|
export function githubNightlyRepos(store) {
|
|
91
53
|
return store.handle.prepare("SELECT DISTINCT repo FROM action_ledger WHERE action = ? AND repo IS NOT NULL").all(GITHUB_NIGHTLY_ON).map(row => String(row["repo"]));
|
|
92
54
|
}
|
|
93
|
-
/** A lane's stable id: its workflow file and the required check's name when it was seeded. */
|
|
94
55
|
export const laneIdOf = (workflow, name) => `${workflow.replace(/^\.github\/workflows\//, "")}:${name}`;
|
|
95
|
-
/** One lane per required check whose name no lane (by its name or an alias) answers to yet. A retired lane whose name
|
|
96
|
-
* is required again opens again. */
|
|
97
56
|
export function seedLanes(store, repo, now) {
|
|
98
57
|
for (const name of REQUIRED_PR_CHECKS) {
|
|
99
58
|
const workflow = REQUIRED_PR_CHECKS_WORKFLOW[name];
|
|
@@ -104,8 +63,6 @@ export function seedLanes(store, repo, now) {
|
|
|
104
63
|
.run(repo, laneIdOf(workflow, name), workflow, name, now.toISOString());
|
|
105
64
|
}
|
|
106
65
|
}
|
|
107
|
-
/** The live lane a job of `workflow` named `name` belongs to: a person's alias first (the newest for that name), then
|
|
108
|
-
* the lane seeded under it. Never a guess: anything else is no lane. */
|
|
109
66
|
export function resolveLane(store, repo, workflow, name) {
|
|
110
67
|
const aliased = store.handle.prepare(`SELECT a.lane_id FROM nightly_lane_alias a JOIN nightly_lane l ON l.repo = a.repo AND l.lane_id = a.lane_id
|
|
111
68
|
WHERE a.repo = ? AND a.name = ? AND l.workflow = ? AND l.retired_at IS NULL ORDER BY a.id DESC LIMIT 1`).get(repo, name, workflow);
|
|
@@ -114,13 +71,11 @@ export function resolveLane(store, repo, workflow, name) {
|
|
|
114
71
|
const own = store.handle.prepare("SELECT lane_id FROM nightly_lane WHERE repo = ? AND workflow = ? AND display_name = ? AND retired_at IS NULL").get(repo, workflow, name);
|
|
115
72
|
return own === undefined ? null : String(own["lane_id"]);
|
|
116
73
|
}
|
|
117
|
-
/** Every name a lane answers to: its seeded name and each alias. */
|
|
118
74
|
function laneNames(store, repo, laneId) {
|
|
119
75
|
const lane = store.handle.prepare("SELECT display_name FROM nightly_lane WHERE repo = ? AND lane_id = ?").get(repo, laneId);
|
|
120
76
|
const aliases = store.handle.prepare("SELECT name FROM nightly_lane_alias WHERE repo = ? AND lane_id = ? ORDER BY id").all(repo, laneId).map(row => String(row["name"]));
|
|
121
77
|
return [...new Set([...(lane === undefined ? [] : [String(lane["display_name"])]), ...aliases])];
|
|
122
78
|
}
|
|
123
|
-
/** The name a lane is shown by: its newest alias, else the name it was seeded under. */
|
|
124
79
|
export function laneName(store, repo, laneId) {
|
|
125
80
|
const alias = store.handle.prepare("SELECT name FROM nightly_lane_alias WHERE repo = ? AND lane_id = ? ORDER BY id DESC LIMIT 1").get(repo, laneId);
|
|
126
81
|
if (alias !== undefined)
|
|
@@ -128,23 +83,17 @@ export function laneName(store, repo, laneId) {
|
|
|
128
83
|
const lane = store.handle.prepare("SELECT display_name FROM nightly_lane WHERE repo = ? AND lane_id = ?").get(repo, laneId);
|
|
129
84
|
return lane === undefined ? laneId : String(lane["display_name"]);
|
|
130
85
|
}
|
|
131
|
-
/** A person proved now — called INSIDE the mutation's own transaction (Codex rounds 1 and 2, finding 7): the password
|
|
132
|
-
* is checked, and the approver's standing and access read, under the same lock as the write, so nothing (a
|
|
133
|
-
* revocation, a credential rotation, an access change) can land between the proof and the change. */
|
|
134
86
|
function provePerson(store, repo, as, token, what) {
|
|
135
87
|
const proved = authenticateApprover(store, as, token, repo);
|
|
136
88
|
if (!proved.ok || !personProof(proved.method))
|
|
137
89
|
return { ok: false, message: `Only an approver of this project, proved as a person, ${what}.` };
|
|
138
90
|
return { ok: true, by: as, proof: proved.method };
|
|
139
91
|
}
|
|
140
|
-
/** `toolroll release nightly --github`: a person turns GitHub's nightly into release debt for this project. The
|
|
141
|
-
* repository is the project's recorded remote's, never the checkout's. */
|
|
142
92
|
export function optInGithubNightly(store, input, now) {
|
|
143
93
|
return store.transact(() => {
|
|
144
94
|
const proved = provePerson(store, input.repo, input.as, input.token, "turns on GitHub's nightly");
|
|
145
95
|
if (!proved.ok)
|
|
146
96
|
return proved;
|
|
147
|
-
// The recorded remote as it stands inside this transaction.
|
|
148
97
|
const identity = trustedRemoteIdentity(store, input.repo);
|
|
149
98
|
const remote = identity === null ? null : releaseRemote(identity.url);
|
|
150
99
|
if (identity === null || remote === null)
|
|
@@ -157,7 +106,6 @@ export function optInGithubNightly(store, input, now) {
|
|
|
157
106
|
return { ok: true, slug: remote.slug, lanes };
|
|
158
107
|
});
|
|
159
108
|
}
|
|
160
|
-
/** `--lane-alias <old-id> <new name>`: a person says a renamed job is the same lane. Open debt goes with the lane. */
|
|
161
109
|
export function aliasNightlyLane(store, input, now) {
|
|
162
110
|
const name = input.name.trim();
|
|
163
111
|
if (name === "" || name.length > 200 || /[\u0000-\u001f\u007f]/.test(name))
|
|
@@ -169,8 +117,6 @@ export function aliasNightlyLane(store, input, now) {
|
|
|
169
117
|
const lane = store.handle.prepare("SELECT workflow, retired_at FROM nightly_lane WHERE repo = ? AND lane_id = ?").get(input.repo, input.laneId);
|
|
170
118
|
if (lane === undefined || lane["retired_at"] !== null)
|
|
171
119
|
return { ok: false, message: `No live lane ${input.laneId} in this project.` };
|
|
172
|
-
// Only a name no other lane answers to: never one another live lane resolves (whatever its debt), nor a required
|
|
173
|
-
// check's name that another lane owns, so a rename can't re-route a live lane's results onto this one.
|
|
174
120
|
const workflow = String(lane["workflow"]);
|
|
175
121
|
const other = resolveLane(store, input.repo, workflow, name);
|
|
176
122
|
if (other !== null && other !== input.laneId)
|
|
@@ -183,8 +129,6 @@ export function aliasNightlyLane(store, input, now) {
|
|
|
183
129
|
return { ok: true };
|
|
184
130
|
});
|
|
185
131
|
}
|
|
186
|
-
/** `--lane-retire <lane-id>`: a person retires a lane no required check names any more; its open debt closes,
|
|
187
|
-
* recorded as theirs. */
|
|
188
132
|
export function retireNightlyLane(store, input, now) {
|
|
189
133
|
return store.transact(() => {
|
|
190
134
|
const proved = provePerson(store, input.repo, input.as, input.token, "retires a nightly lane");
|
|
@@ -233,22 +177,16 @@ function jobOf(value) {
|
|
|
233
177
|
startedAt: isoOf(one["started_at"]), completedAt: isoOf(one["completed_at"]), headSha: one["head_sha"], runId: Number(one["run_id"]),
|
|
234
178
|
runAttempt: positive(one["run_attempt"]) ? Number(one["run_attempt"]) : null, steps };
|
|
235
179
|
}
|
|
236
|
-
/** Whether a run is one of the project's own nightly runs on main (everything but main's history, checked apart). */
|
|
237
180
|
export function nightlyRunBinds(run, slug) {
|
|
238
181
|
return run.path === NIGHTLY_WORKFLOW_PATH && run.repository === slug && run.headRepository === slug && run.headBranch === "main"
|
|
239
182
|
&& (run.event === "schedule" || run.event === "workflow_dispatch") && SHA.test(run.headSha);
|
|
240
183
|
}
|
|
241
|
-
/** A lane job's workflow and its name inside that workflow, from its name in the nightly ("nightly / node 24 · …"). */
|
|
242
184
|
function laneJobName(name) {
|
|
243
185
|
for (const [workflow, prefix] of Object.entries(LANE_PREFIX))
|
|
244
186
|
if (name.startsWith(prefix))
|
|
245
187
|
return { workflow, name: name.slice(prefix.length) };
|
|
246
188
|
return null;
|
|
247
189
|
}
|
|
248
|
-
/**
|
|
249
|
-
* Why a completed lane job ended as it did, from GitHub's own job and step records in the same attempt
|
|
250
|
-
* (evals-nightly.md, "Cause of a failure"). Fails closed: anything not positively the runner's is a test failure.
|
|
251
|
-
*/
|
|
252
190
|
export function causeOf(job, attempt) {
|
|
253
191
|
if (job.conclusion === "success")
|
|
254
192
|
return "passed";
|
|
@@ -263,12 +201,9 @@ export function causeOf(job, attempt) {
|
|
|
263
201
|
const aggregate = lane === null ? null : AGGREGATE.exec(lane.name);
|
|
264
202
|
if (lane === null || aggregate === null)
|
|
265
203
|
return "test-failure";
|
|
266
|
-
// The coverage verifier failing is always the tests' (it can fail with every shard green: a file that ran nowhere).
|
|
267
204
|
const failedSteps = job.steps.filter(step => step.conclusion !== null && step.conclusion !== "success" && step.conclusion !== "skipped");
|
|
268
205
|
if (failedSteps.length !== 1 || failedSteps[0].name !== SHARDS_PASSED_STEP || failedSteps[0].conclusion !== "failure")
|
|
269
206
|
return "test-failure";
|
|
270
|
-
// Only "Every shard passed" failed: the runner's only on a positively established, non-empty chain — every failed
|
|
271
|
-
// shard of the same attempt readable and ended before its tests.
|
|
272
207
|
const prefix = LANE_PREFIX[lane.workflow];
|
|
273
208
|
const shard = new RegExp(`^node ${aggregate[1]} · ${aggregate[2] === "macos" ? "macos " : ""}shard \\d+/\\d+$`);
|
|
274
209
|
const shards = attempt.filter(one => one.name.startsWith(prefix) && shard.test(one.name.slice(prefix.length)));
|
|
@@ -298,7 +233,6 @@ function cursorOf(store, repo) {
|
|
|
298
233
|
function saveCursor(store, repo, cursor) {
|
|
299
234
|
store.handle.prepare("INSERT INTO github_nightly_cursor (repo, page_cursor) VALUES (?, ?) ON CONFLICT (repo) DO UPDATE SET page_cursor = excluded.page_cursor").run(repo, JSON.stringify(cursor));
|
|
300
235
|
}
|
|
301
|
-
/** Why the project's nightly can't be read now (not opted in, or its remote changed since), or its repository. */
|
|
302
236
|
function readableSlug(store, repo) {
|
|
303
237
|
const on = githubNightlyOf(store, repo);
|
|
304
238
|
if (on === null)
|
|
@@ -308,11 +242,6 @@ function readableSlug(store, repo) {
|
|
|
308
242
|
return { ok: false, why: "the project's recorded remote changed since GitHub's nightly was turned on; turn it on again" };
|
|
309
243
|
return { ok: true, slug: on.slug };
|
|
310
244
|
}
|
|
311
|
-
/**
|
|
312
|
-
* One read of the project's GitHub nightly within `budgetMs`: list runs from the cursor, re-read the watch list (new
|
|
313
|
-
* and unfinished runs first, then the oldest-checked), record every completed lane job, open and clear failures. A
|
|
314
|
-
* failed call stops where it is; what was recorded stays, and the cursor never moves past a page it couldn't read.
|
|
315
|
-
*/
|
|
316
245
|
export async function readGithubNightly(store, repo, deps, budgetMs) {
|
|
317
246
|
const started = deps.now();
|
|
318
247
|
const deadline = started.getTime() + budgetMs;
|
|
@@ -334,7 +263,6 @@ export async function readGithubNightly(store, repo, deps, budgetMs) {
|
|
|
334
263
|
return { ok: false, why: String(error?.message ?? error).slice(0, 200) };
|
|
335
264
|
}
|
|
336
265
|
};
|
|
337
|
-
// Local history work (main's first-parent walks) is bounded by the same budget on the wall clock.
|
|
338
266
|
const wall = Date.now() + budgetMs;
|
|
339
267
|
let problem = null;
|
|
340
268
|
const listing = await listRuns(store, repo, slug, get, deps.now);
|
|
@@ -345,8 +273,6 @@ export async function readGithubNightly(store, repo, deps, budgetMs) {
|
|
|
345
273
|
problem = watched.why;
|
|
346
274
|
const settled = settleGithubNightly(store, repo, deps, deps.now(), wall);
|
|
347
275
|
const complete = listing.ok && listing.complete && watched.ok && watched.complete && settled.complete;
|
|
348
|
-
// Partial progress is never a whole read (Codex round 1, finding 5): what is still unresolved is said, and the last
|
|
349
|
-
// whole read's time stays as it was.
|
|
350
276
|
const unresolved = problem ?? (complete ? null : watched.ok && watched.unresolved !== null ? watched.unresolved : settled.unresolved ?? "some runs are still to be read");
|
|
351
277
|
noteRead(store, repo, unresolved, deps.now());
|
|
352
278
|
return problem === null ? { ok: true, listed: listing.listed, checked: watched.checked, complete } : { ok: false, why: problem };
|
|
@@ -356,8 +282,6 @@ function noteRead(store, repo, why, now) {
|
|
|
356
282
|
ON CONFLICT (repo) DO UPDATE SET last_ok_at = COALESCE(excluded.last_ok_at, last_ok_at), last_why = excluded.last_why`)
|
|
357
283
|
.run(repo, JSON.stringify(EMPTY_CURSOR), why === null ? now.toISOString() : null, why === null ? null : why.slice(0, 300));
|
|
358
284
|
}
|
|
359
|
-
/** List nightly.yml's runs on main from the cursor, at most NIGHTLY_PAGES_PER_READ pages, putting every run that binds
|
|
360
|
-
* on the watch list page by page. A page that can't be read whole stops here, the cursor before it. */
|
|
361
285
|
async function listRuns(store, repo, slug, get, now) {
|
|
362
286
|
const cursor = cursorOf(store, repo);
|
|
363
287
|
const filter = cursor.scan?.below ?? null;
|
|
@@ -409,7 +333,6 @@ async function listRuns(store, repo, slug, get, now) {
|
|
|
409
333
|
}
|
|
410
334
|
return { ok: true, listed, complete: false };
|
|
411
335
|
}
|
|
412
|
-
/** Read one run by id, strictly. */
|
|
413
336
|
export async function readRun(get, slug, id) {
|
|
414
337
|
const got = await get(`repos/${slug}/actions/runs/${id}`);
|
|
415
338
|
if (!got.ok)
|
|
@@ -417,8 +340,6 @@ export async function readRun(get, slug, id) {
|
|
|
417
340
|
const run = runOf(got.body);
|
|
418
341
|
return run !== null && run.id === id ? run : null;
|
|
419
342
|
}
|
|
420
|
-
/** Every job of one exact attempt of one run, every page, each GitHub's record of that run, attempt and commit. Null
|
|
421
|
-
* when any page can't be read whole. */
|
|
422
343
|
export async function readAttemptJobs(get, slug, run, attempt, sha) {
|
|
423
344
|
const all = [];
|
|
424
345
|
let total = null;
|
|
@@ -445,11 +366,7 @@ export async function readAttemptJobs(get, slug, run, attempt, sha) {
|
|
|
445
366
|
return null;
|
|
446
367
|
return all;
|
|
447
368
|
}
|
|
448
|
-
/** Re-read every watched run within the budget (never-checked first, then unfinished, then the oldest-checked): new
|
|
449
|
-
* attempts' jobs are recorded; a run leaves once it is 30 days old, finished and fully read. */
|
|
450
369
|
async function revisitWatchList(store, repo, slug, get, deps, outOfTime, wall) {
|
|
451
|
-
// Never-checked first, then strictly the oldest-checked (Codex round 1, finding 4: unfinished runs never starve a
|
|
452
|
-
// finished one whose rerun is waiting to be seen).
|
|
453
370
|
const rows = store.handle.prepare(`SELECT gh_run, created_at, attempts_read, finished FROM github_nightly_watch WHERE repo = ?
|
|
454
371
|
ORDER BY last_checked_at IS NOT NULL, last_checked_at, gh_run`).all(repo);
|
|
455
372
|
let problem = null, checked = 0, complete = true, unresolved = null;
|
|
@@ -470,14 +387,11 @@ async function revisitWatchList(store, repo, slug, get, deps, outOfTime, wall) {
|
|
|
470
387
|
continue;
|
|
471
388
|
}
|
|
472
389
|
checked++;
|
|
473
|
-
// A run that doesn't bind never counts; one not on main's history (as the plane read main) never counts either.
|
|
474
390
|
if (!nightlyRunBinds(first, slug)) {
|
|
475
391
|
drop();
|
|
476
392
|
continue;
|
|
477
393
|
}
|
|
478
394
|
const old = deps.now().getTime() - Date.parse(first.createdAt) > NIGHTLY_WATCH_MS;
|
|
479
|
-
// "No" only from a read of main made after the run was created, and only for a finished run; anything less certain
|
|
480
|
-
// keeps the run watched (never dropped on a stale read of main: its failure would never be recorded).
|
|
481
395
|
const onMain = deps.onMain(first.headSha, first.createdAt, wall);
|
|
482
396
|
if (onMain === "no" && first.status === "completed") {
|
|
483
397
|
drop();
|
|
@@ -504,13 +418,11 @@ async function revisitWatchList(store, repo, slug, get, deps, outOfTime, wall) {
|
|
|
504
418
|
break;
|
|
505
419
|
}
|
|
506
420
|
recordAttempt(store, repo, { run: id, attempt, sha: first.headSha, createdAt: first.createdAt, jobs }, deps.now());
|
|
507
|
-
// An earlier attempt than the newest is over: GitHub re-runs only a finished run.
|
|
508
421
|
if (attempt < first.runAttempt)
|
|
509
422
|
read = attempt;
|
|
510
423
|
}
|
|
511
424
|
let finished = false;
|
|
512
425
|
if (whole) {
|
|
513
|
-
// Read again: an attempt or status that changed mid-read is read whole next time; what was recorded stays.
|
|
514
426
|
const again = await readRun(get, slug, id);
|
|
515
427
|
if (again !== null && again.runAttempt === first.runAttempt && again.status === first.status && first.status === "completed") {
|
|
516
428
|
read = first.runAttempt;
|
|
@@ -531,7 +443,6 @@ async function revisitWatchList(store, repo, slug, get, deps, outOfTime, wall) {
|
|
|
531
443
|
}
|
|
532
444
|
return problem === null ? { ok: true, checked, complete, unresolved } : { ok: false, why: problem, checked };
|
|
533
445
|
}
|
|
534
|
-
/** Record one attempt's completed lane jobs once each, and open a failure for each test failure. */
|
|
535
446
|
function recordAttempt(store, repo, attempt, now) {
|
|
536
447
|
const at = now.toISOString();
|
|
537
448
|
store.transact(() => {
|
|
@@ -547,15 +458,12 @@ function recordAttempt(store, repo, attempt, now) {
|
|
|
547
458
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(repo, laneId, attempt.run, attempt.createdAt, attempt.attempt, job.id, attempt.sha, job.startedAt, job.completedAt, job.conclusion, cause, at);
|
|
548
459
|
if (cause !== "test-failure")
|
|
549
460
|
continue;
|
|
550
|
-
// No completion time on record: the failure counts as completed now, so only a pass started later clears it.
|
|
551
461
|
const opened = store.handle.prepare(`INSERT OR IGNORE INTO nightly_lane_failure (repo, lane_id, gh_run, run_created_at, attempt, job_id, sha, completed_at, opened_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
552
462
|
.run(repo, laneId, attempt.run, attempt.createdAt, attempt.attempt, job.id, attempt.sha, job.completedAt ?? at, at);
|
|
553
|
-
// One attention notice per failure, when it is first recorded.
|
|
554
463
|
if (Number(opened.changes) === 1) {
|
|
555
464
|
const lane = laneName(store, repo, laneId);
|
|
556
465
|
store.enqueueNotification({ dedupeKey: `github-nightly-failed:${Number(opened.lastInsertRowid)}`, kind: "github-nightly-failed", subject: "GitHub's nightly failed on main",
|
|
557
466
|
body: `Nightly checks failed: ${lane}, on main at ${attempt.sha.slice(0, 7)}. Releases wait until it passes again.`, pushClass: "attention",
|
|
558
|
-
// The project it belongs to, so its people's chats may carry it (Codex round 1, finding 8).
|
|
559
467
|
source: { project: repo }, link: "/tasks?view=board" }, now);
|
|
560
468
|
}
|
|
561
469
|
}
|
|
@@ -567,12 +475,6 @@ export function openFailures(store, repo) {
|
|
|
567
475
|
sha: String(row["sha"]), completedAt: String(row["completed_at"]), openedAt: String(row["opened_at"]),
|
|
568
476
|
}));
|
|
569
477
|
}
|
|
570
|
-
/**
|
|
571
|
-
* Clear each open failure that a later counted nightly run passed: a run created after the failed run (a rerun of an
|
|
572
|
-
* older run never clears newer debt; Codex round 1, finding 2), the same lane, a job started after the failed one
|
|
573
|
-
* completed, on a commit that contains the failed one. A re-run inside the same run never clears. Local history work
|
|
574
|
-
* stops at `wall` (wall-clock ms); what is left is settled on a later read.
|
|
575
|
-
*/
|
|
576
478
|
export function settleGithubNightly(store, repo, history, now, wall = Date.now() + NIGHTLY_BACKGROUND_READ_MS) {
|
|
577
479
|
let cleared = 0, unresolved = null;
|
|
578
480
|
const late = () => ({ cleared, complete: false, unresolved: unresolved ?? "settling the open failures ran out of time; the rest is settled on the next read" });
|
|
@@ -582,8 +484,6 @@ export function settleGithubNightly(store, repo, history, now, wall = Date.now()
|
|
|
582
484
|
const passes = store.handle.prepare(`SELECT j.gh_run, j.attempt, j.job_id, j.sha FROM nightly_lane_job j JOIN nightly_lane_failure f ON f.id = ?
|
|
583
485
|
WHERE j.repo = ? AND j.lane_id = ? AND j.cause = 'passed' AND j.gh_run <> f.gh_run AND j.run_created_at > f.run_created_at
|
|
584
486
|
AND j.started_at IS NOT NULL AND j.started_at > f.completed_at ORDER BY j.started_at, j.id`).all(failure.id, repo, failure.laneId);
|
|
585
|
-
// Three-state, candidate by candidate: an unreadable or timed-out ancestry is never "doesn't contain" (Codex round 2,
|
|
586
|
-
// finding 5) — the failure stays open and the read says it is unresolved.
|
|
587
487
|
let pass;
|
|
588
488
|
for (const one of passes) {
|
|
589
489
|
if (Date.now() >= wall)
|
|
@@ -611,11 +511,8 @@ export function settleGithubNightly(store, repo, history, now, wall = Date.now()
|
|
|
611
511
|
}
|
|
612
512
|
return unresolved === null ? { cleared, complete: true, unresolved: null } : { cleared, complete: false, unresolved };
|
|
613
513
|
}
|
|
614
|
-
/** Main's history as the plane read it from the project's recorded remote (nightly-check.ts trustedMainOf), from the
|
|
615
|
-
* verified objects in the project's own Git store; never a ref a build could move. */
|
|
616
514
|
export function mainHistoryOf(store, repo, now) {
|
|
617
515
|
const main = trustedMainOf(store, repo, now, TRUSTED_MAIN_CLEAR_MS);
|
|
618
|
-
// When that read of main was made: the same ledger row trustedMainOf stands on.
|
|
619
516
|
const readAt = main === null ? null : String(store.handle.prepare("SELECT at FROM action_ledger WHERE repo = ? AND action = ? ORDER BY id DESC LIMIT 1").get(repo, TRUSTED_MAIN_ACTION)?.["at"] ?? "");
|
|
620
517
|
const gitDir = projectGitDir(repo);
|
|
621
518
|
return {
|
|
@@ -624,9 +521,6 @@ export function mainHistoryOf(store, repo, now) {
|
|
|
624
521
|
return "unknown";
|
|
625
522
|
if (sha === main)
|
|
626
523
|
return "yes";
|
|
627
|
-
// "No" only when proven: every commit back to the root read and verified without meeting it (Codex round 1,
|
|
628
|
-
// finding 1) — and only by a read of main made after the run was created. A missing or unreadable object, the
|
|
629
|
-
// walk's limit or the deadline is "unknown": the run stays watched.
|
|
630
524
|
const walked = verifiedFirstParentAncestry(gitDir, main, sha, { deadline, max: MAIN_WALK });
|
|
631
525
|
if (walked !== "no")
|
|
632
526
|
return walked;
|
|
@@ -639,10 +533,6 @@ export function mainHistoryOf(store, repo, now) {
|
|
|
639
533
|
},
|
|
640
534
|
};
|
|
641
535
|
}
|
|
642
|
-
/**
|
|
643
|
-
* The watch loop's background read (operate.ts refreshGithubNightlies): each opted-in project at most every
|
|
644
|
-
* NIGHTLY_BACKGROUND_EVERY_MS, claimed in the store so two processes don't both read, within one overall deadline.
|
|
645
|
-
*/
|
|
646
536
|
export async function readGithubNightlies(store, deps, budgetMs = NIGHTLY_BACKGROUND_READ_MS) {
|
|
647
537
|
const started = deps.now();
|
|
648
538
|
const deadline = started.getTime() + budgetMs;
|
|
@@ -665,39 +555,26 @@ export async function readGithubNightlies(store, deps, budgetMs = NIGHTLY_BACKGR
|
|
|
665
555
|
}
|
|
666
556
|
return read;
|
|
667
557
|
}
|
|
668
|
-
/** How long a boundary's re-read of a candidate's exemption stands for the stored checks inside the reservation, the
|
|
669
|
-
* deployment gate and the installed runtime's deploy check after it. */
|
|
670
558
|
export const EXEMPTION_FRESH_MS = 10 * 60_000;
|
|
671
559
|
const STAMP = new Intl.DateTimeFormat("en-US", { month: "short", day: "numeric", hour: "2-digit", minute: "2-digit", hourCycle: "h23", timeZone: "UTC" });
|
|
672
|
-
/** "Oct 30, 06:17 UTC". */
|
|
673
560
|
export const nightlyStamp = (iso) => `${STAMP.format(new Date(iso))} UTC`;
|
|
674
|
-
/** The words of a nightly hold: the first open failure, how many more, and the way out at this point. */
|
|
675
561
|
export function nightlyDebtWords(store, held, phase, release) {
|
|
676
562
|
const first = held[0];
|
|
677
563
|
const more = held.length - 1;
|
|
678
564
|
const lanes = `GitHub's nightly failed "${laneName(store, first.repo, first.laneId)}" on main at ${first.sha.slice(0, 7)} (${nightlyStamp(first.completedAt)})${more > 0 ? `, and ${more} more lane${more === 1 ? "" : "s"}` : ""}.`;
|
|
679
565
|
const who = release ? "This release" : "This candidate";
|
|
680
566
|
const what = phase === "deploy" ? "can't deploy" : phase === "merge" ? "can't merge" : phase === "tag" ? "can't be tagged or published" : "can't be approved automatically";
|
|
681
|
-
// After the merge the release's own CI can't help (the release proof refuses jobs finished after the merge).
|
|
682
567
|
const way = release && phase !== "tag" ? "re-run this release's CI, or wait for tonight's nightly" : "wait for tonight's nightly, or dispatch Nightly on main";
|
|
683
568
|
return `${lanes} ${who} ${what} until ${more > 0 ? "those lanes pass" : "that lane passes"} again: ${way}.`;
|
|
684
569
|
}
|
|
685
|
-
/** Whether this exact candidate of this task holds a fresh exemption for one failure. */
|
|
686
570
|
function exempted(store, taskId, candidate, failure, now) {
|
|
687
571
|
const row = store.handle.prepare("SELECT read_at FROM nightly_exemption WHERE task = ? AND candidate = ? AND failure_id = ?").get(taskId, candidate, failure);
|
|
688
572
|
return row !== undefined && Date.parse(String(row["read_at"])) >= now.getTime() - EXEMPTION_FRESH_MS && Date.parse(String(row["read_at"])) <= now.getTime() + 60_000;
|
|
689
573
|
}
|
|
690
|
-
/**
|
|
691
|
-
* The stored check every boundary makes, inside the caller's own transaction where it has one (the deployment gate, the
|
|
692
|
-
* deploy and merge reservations, the pre-tag step, an automatic approval): the project's open lane failures, less those
|
|
693
|
-
* this exact task and candidate hold a fresh exemption for. Null when nothing holds. A project that never opted in has
|
|
694
|
-
* no lane failures.
|
|
695
|
-
*/
|
|
696
574
|
export function nightlyDebtHold(store, input) {
|
|
697
575
|
const held = openFailures(store, input.repo).filter(failure => input.taskId === null || input.candidate === null || !exempted(store, input.taskId, input.candidate, failure.id, input.now));
|
|
698
576
|
return held.length === 0 ? null : { why: nightlyDebtWords(store, held, input.phase, input.release), failures: held };
|
|
699
577
|
}
|
|
700
|
-
/** No nightly run seen for this long reads "hasn't run since". */
|
|
701
578
|
export const NIGHTLY_STALE_MS = 36 * 60 * 60_000;
|
|
702
579
|
export function githubNightlyStatus(store, repo, now) {
|
|
703
580
|
const on = githubNightlyOf(store, repo);
|
|
@@ -715,7 +592,6 @@ const agoWords = (iso, now) => {
|
|
|
715
592
|
const minutes = Math.max(0, Math.round((now.getTime() - Date.parse(iso)) / 60_000));
|
|
716
593
|
return minutes < 60 ? `last read ${minutes} min ago` : minutes < 48 * 60 ? `last read ${Math.round(minutes / 60)} h ago` : `last read ${Math.round(minutes / 1440)} days ago`;
|
|
717
594
|
};
|
|
718
|
-
/** A warning that never holds anything (Decision 1): GitHub couldn't be read, or the nightly hasn't run lately. */
|
|
719
595
|
export function nightlyWarning(status, now) {
|
|
720
596
|
if (!status.on)
|
|
721
597
|
return null;
|
|
@@ -725,13 +601,6 @@ export function nightlyWarning(status, now) {
|
|
|
725
601
|
return status.lastRunAt === null ? "GitHub nightly: hasn't run since it was turned on. Not holding the release." : `GitHub nightly: hasn't run since ${nightlyStamp(status.lastRunAt)}. Not holding the release.`;
|
|
726
602
|
return null;
|
|
727
603
|
}
|
|
728
|
-
/**
|
|
729
|
-
* A release candidate's own pull-request CI, as an exemption needs it (modelled on scripts/release-proof.mjs): for each
|
|
730
|
-
* workflow, the newest run on `head` from that pull request's `pull_request` event, that run's latest attempt's jobs
|
|
731
|
-
* with their times, then the run read again. The newest run is chosen first: one that doesn't bind to this pull
|
|
732
|
-
* request never lets an older run stand. `null` for a workflow with no such run; "unreadable" when anything can't be
|
|
733
|
-
* read whole or changed during the read.
|
|
734
|
-
*/
|
|
735
604
|
export async function readLaneJobs(get, slug, pr, head, workflows) {
|
|
736
605
|
const listed = [];
|
|
737
606
|
const raw = new Map();
|
|
@@ -786,7 +655,6 @@ export async function readLaneJobs(get, slug, pr, head, workflows) {
|
|
|
786
655
|
return "unreadable";
|
|
787
656
|
found.set(workflow, { run: newest.id, attempt: newest.runAttempt, status: newest.status, jobs });
|
|
788
657
|
}
|
|
789
|
-
// The runs again: a newer run or attempt that appeared mid-read voids the read.
|
|
790
658
|
const relisted = await get(`repos/${slug}/actions/runs?head_sha=${head}&event=pull_request&per_page=${PAGE}&page=1`);
|
|
791
659
|
const relistedBody = relisted.ok ? object(relisted.body) : null;
|
|
792
660
|
const relistedRows = relistedBody === null ? null : relistedBody["workflow_runs"];
|
|
@@ -802,13 +670,7 @@ export async function readLaneJobs(get, slug, pr, head, workflows) {
|
|
|
802
670
|
}
|
|
803
671
|
return found;
|
|
804
672
|
}
|
|
805
|
-
/** The files a lane's job runs that the candidate could otherwise rewrite to make a job of that name pass: its workflow
|
|
806
|
-
* file and the CI scripts the workflows call. An exemption stands only when each is byte-identical (the same Git
|
|
807
|
-
* blob) on the candidate and at the failed commit. The tests themselves are the candidate's, as for every required
|
|
808
|
-
* check (the trust the required-checks gate already places in them). */
|
|
809
673
|
export const LANE_PINNED_FILES = ["scripts/ci-shards.mjs", "scripts/ci-scope.mjs", "scripts/ci-git.sh", "scripts/ci-no-skips.mjs"];
|
|
810
|
-
/** Whether every pinned file of a lane's workflow is the same blob on `candidate` as at `failed`, by GitHub's own
|
|
811
|
-
* contents API; null when any can't be read. */
|
|
812
674
|
async function lanePinned(get, slug, workflow, candidate, failed) {
|
|
813
675
|
for (const path of [workflow, ...LANE_PINNED_FILES]) {
|
|
814
676
|
const blobs = [];
|
|
@@ -824,7 +686,6 @@ async function lanePinned(get, slug, workflow, candidate, failed) {
|
|
|
824
686
|
}
|
|
825
687
|
return { same: true };
|
|
826
688
|
}
|
|
827
|
-
/** Whether `candidate` contains `ancestor`, by GitHub's own comparison; null when it can't be read. */
|
|
828
689
|
async function candidateContains(get, slug, candidate, ancestor) {
|
|
829
690
|
if (candidate === ancestor)
|
|
830
691
|
return true;
|
|
@@ -836,14 +697,7 @@ async function candidateContains(get, slug, candidate, ancestor) {
|
|
|
836
697
|
return null;
|
|
837
698
|
return body["behind_by"] === 0 && (body["status"] === "ahead" || body["status"] === "identical");
|
|
838
699
|
}
|
|
839
|
-
/** A read time no stored check accepts: an exemption whose last re-read failed. */
|
|
840
700
|
const STALE_READ = "1970-01-01T00:00:00.000Z";
|
|
841
|
-
/**
|
|
842
|
-
* A boundary (the coordinator's deploy, merge and pre-tag steps): one bounded read of GitHub's nightly, then this
|
|
843
|
-
* candidate's exemptions read again from its own pull-request CI — minted only before the merge (`deploy`, `merge`);
|
|
844
|
-
* at the tag an exemption obtained before the merge is re-read, never made — then the stored debt. A read that fails is
|
|
845
|
-
* a warning and the stored debt still holds; an exemption that can't be re-read is no exemption here.
|
|
846
|
-
*/
|
|
847
701
|
export async function nightlyBoundary(store, input, deps, budgetMs = NIGHTLY_BOUNDARY_READ_MS) {
|
|
848
702
|
const started = deps.now().getTime();
|
|
849
703
|
const deadline = started + budgetMs;
|
|
@@ -860,17 +714,13 @@ export async function nightlyBoundary(store, input, deps, budgetMs = NIGHTLY_BOU
|
|
|
860
714
|
return { ok: false, why: String(error?.message ?? error).slice(0, 200) };
|
|
861
715
|
}
|
|
862
716
|
};
|
|
863
|
-
// The nightly itself, within about two thirds of the budget; the rest is the candidate's own CI.
|
|
864
717
|
if (githubNightlyOf(store, input.repo) !== null)
|
|
865
718
|
await readGithubNightly(store, input.repo, deps, Math.max(0, Math.floor(budgetMs * 2 / 3) - (deps.now().getTime() - started)));
|
|
866
719
|
const warning = nightlyWarning(githubNightlyStatus(store, input.repo, deps.now()), deps.now());
|
|
867
720
|
const open = openFailures(store, input.repo);
|
|
868
721
|
const unverified = new Set();
|
|
869
|
-
// A re-read that fails takes the stored permission away too (Codex round 1, finding 3): the row stays, so a later
|
|
870
|
-
// boundary that reads it whole again (the tag included) can restore it, but no stored check accepts it meanwhile.
|
|
871
722
|
const invalidate = (failure) => store.handle.prepare("UPDATE nightly_exemption SET read_at = ? WHERE task = ? AND candidate = ? AND failure_id = ?")
|
|
872
723
|
.run(STALE_READ, input.taskId, input.candidate, failure);
|
|
873
|
-
/** Failures this candidate can't be exempted from: it changes how the lane runs (the path that differs). */
|
|
874
724
|
const changed = new Map();
|
|
875
725
|
const slug = githubNightlyOf(store, input.repo)?.slug ?? null;
|
|
876
726
|
if (open.length > 0 && slug !== null && SHA.test(input.candidate) && positive(input.pr)) {
|
|
@@ -892,7 +742,6 @@ export async function nightlyBoundary(store, input, deps, budgetMs = NIGHTLY_BOU
|
|
|
892
742
|
&& job.startedAt !== null && job.completedAt !== null && job.startedAt > failure.completedAt;
|
|
893
743
|
const same = row !== undefined && found !== null && job !== null && Number(row["gh_run"]) === found.run && Number(row["attempt"]) === found.attempt && Number(row["job_id"]) === job.id;
|
|
894
744
|
const at = deps.now().toISOString();
|
|
895
|
-
// The newest run or attempt differs, is pending, or holds a failure for that lane: the exemption is void.
|
|
896
745
|
if (row !== undefined && !(same && valid))
|
|
897
746
|
store.handle.prepare("DELETE FROM nightly_exemption WHERE task = ? AND candidate = ? AND failure_id = ?").run(input.taskId, input.candidate, failure.id);
|
|
898
747
|
if (!valid)
|
|
@@ -911,7 +760,6 @@ export async function nightlyBoundary(store, input, deps, budgetMs = NIGHTLY_BOU
|
|
|
911
760
|
}
|
|
912
761
|
continue;
|
|
913
762
|
}
|
|
914
|
-
// A job named like the lane proves nothing if the candidate rewrote what that job runs.
|
|
915
763
|
const pinned = await lanePinned(get, slug, workflow, input.candidate, failure.sha);
|
|
916
764
|
if (pinned === null) {
|
|
917
765
|
unverified.add(failure.id);
|
|
@@ -931,7 +779,6 @@ export async function nightlyBoundary(store, input, deps, budgetMs = NIGHTLY_BOU
|
|
|
931
779
|
const now = deps.now();
|
|
932
780
|
const hold = store.transact(() => {
|
|
933
781
|
const stored = nightlyDebtHold(store, { repo: input.repo, taskId: input.taskId, candidate: input.candidate, phase: input.phase, release: true, now });
|
|
934
|
-
// An exemption that couldn't be re-read now never counts at this boundary, whatever is stored.
|
|
935
782
|
const held = openFailures(store, input.repo).filter(failure => unverified.has(failure.id) || stored?.failures.some(one => one.id === failure.id) === true);
|
|
936
783
|
if (held.length === 0)
|
|
937
784
|
return null;
|
|
@@ -941,11 +788,6 @@ export async function nightlyBoundary(store, input, deps, budgetMs = NIGHTLY_BOU
|
|
|
941
788
|
});
|
|
942
789
|
return hold === null ? { ok: true, warning } : { ok: false, why: hold, warning };
|
|
943
790
|
}
|
|
944
|
-
/**
|
|
945
|
-
* Needs you, for the projects `shown` admits: one item per open GitHub nightly lane failure (linking to its job on
|
|
946
|
-
* GitHub, under the opted-in repository the plane recorded), and one per nightly check of main with open failures
|
|
947
|
-
* (linking to its task). Oldest first.
|
|
948
|
-
*/
|
|
949
791
|
export function nightlyNeedsYou(store, shown) {
|
|
950
792
|
const needs = [];
|
|
951
793
|
const failed = store.handle.prepare("SELECT DISTINCT repo FROM nightly_lane_failure WHERE cleared_at IS NULL").all().map(row => String(row["repo"])).filter(shown);
|
|
@@ -957,7 +799,6 @@ export function nightlyNeedsYou(store, shown) {
|
|
|
957
799
|
href: slug === null ? "/tasks?view=board" : `https://github.com/${slug}/actions/runs/${failure.ghRun}/job/${failure.jobId}`, since: failure.openedAt });
|
|
958
800
|
}
|
|
959
801
|
}
|
|
960
|
-
// The plane's own nightly check of main (nightly-check.ts): one item per failed check, its items summed up.
|
|
961
802
|
const rows = store.handle.prepare("SELECT repo, run, sha, MIN(opened_at) AS since, COUNT(*) AS n FROM main_check_failure WHERE cleared_at IS NULL GROUP BY repo, run, sha ORDER BY since").all();
|
|
962
803
|
for (const row of rows) {
|
|
963
804
|
const repo = String(row["repo"]);
|
|
@@ -972,8 +813,6 @@ export function nightlyNeedsYou(store, shown) {
|
|
|
972
813
|
}
|
|
973
814
|
return needs.sort((a, b) => a.since.localeCompare(b.since));
|
|
974
815
|
}
|
|
975
|
-
/** The release card's GitHub nightly lines: each open lane failure (held, or exempted for this candidate), then a
|
|
976
|
-
* warning when GitHub couldn't be read or the nightly hasn't run lately. Empty when there is nothing to say. */
|
|
977
816
|
export function nightlyReleaseLines(store, input) {
|
|
978
817
|
const lines = openFailures(store, input.repo).map(failure => {
|
|
979
818
|
const lane = `GitHub nightly: failed ${laneName(store, input.repo, failure.laneId)} (${nightlyStamp(failure.completedAt)}).`;
|
|
@@ -983,13 +822,6 @@ export function nightlyReleaseLines(store, input) {
|
|
|
983
822
|
const warning = nightlyWarning(githubNightlyStatus(store, input.repo, input.now), input.now);
|
|
984
823
|
return warning === null ? lines : [...lines, warning];
|
|
985
824
|
}
|
|
986
|
-
/**
|
|
987
|
-
* A deploy run's own boundary (scripts/deploy-browser.mjs, through the installed runtime; Codex round 1, finding 3):
|
|
988
|
-
* the same bounded read as the coordinator's — GitHub's nightly, then this candidate's exemptions re-read — before the
|
|
989
|
-
* stored check, so a deploy started by hand neither misses a new failure nor rides an exemption its CI no longer
|
|
990
|
-
* supports. A task no release covers has no exemption to re-read; its nightly is still read. Anything that fails here
|
|
991
|
-
* takes away the candidate's stored exemptions; the stored check that follows decides.
|
|
992
|
-
*/
|
|
993
825
|
export async function refreshNightlyForDeploy(store, input) {
|
|
994
826
|
const run = store.getRun(input.runId);
|
|
995
827
|
const ref = run === null ? null : store.refById(run.taskRef);
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
/** URLs and shell commands can contain secrets. Only a destination hash enters saved receipts. */
|
|
3
2
|
export function notificationDestination(kind, target) {
|
|
4
3
|
return `${kind}:${createHash("sha256").update(target).digest("hex")}`;
|
|
5
4
|
}
|
|
6
|
-
/** One-release compatibility for operator-configured, installation-wide senders. Personal notifications never leave here. */
|
|
7
5
|
export function claimNotifications(store, destination, owner, now) {
|
|
8
6
|
return store.transact(() => {
|
|
9
7
|
const db = store.handle, stamp = now.toISOString();
|
|
@@ -28,7 +26,6 @@ export function finalizeNotification(store, row, owner, outcome, now) {
|
|
|
28
26
|
WHERE notification = ? AND destination = ? AND claim_owner = ? AND claim_generation = ?
|
|
29
27
|
AND claim_expires_at > ? AND delivered_at IS NULL`).run(now.toISOString(), outcome.ok && !skipped ? now.toISOString() : null, outcome.ok ? outcome.receipt : null, outcome.ok ? null : outcome.error, row.id, row.destination, owner, row.generation, now.toISOString()).changes) === 1;
|
|
30
28
|
}
|
|
31
|
-
/** Recheck after earlier network sends: expiry or resolution must stop this send, not just its receipt. */
|
|
32
29
|
export function notificationClaimHeld(store, row, owner, now) {
|
|
33
30
|
return store.handle.prepare(`SELECT 1 FROM notification_delivery d JOIN notification n ON n.id = d.notification
|
|
34
31
|
WHERE d.notification = ? AND d.destination = ? AND d.claim_owner = ? AND d.claim_generation = ?
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/** The one task a card is about: a task its confirmation created (a new
|
|
2
|
-
* task, a revision), else the task it names (and, for feedback on a result,
|
|
3
|
-
* that result). Null for a card about no single task. A pointer for
|
|
4
|
-
* replies, never an authority. */
|
|
5
1
|
export function proposalTaskOf(proposal) {
|
|
6
2
|
if (proposal === null)
|
|
7
3
|
return null;
|
|
@@ -15,16 +11,7 @@ export function proposalTaskOf(proposal) {
|
|
|
15
11
|
const run = proposal.kind === "review" ? proposal.payload["run"] : null;
|
|
16
12
|
return { task: named, run: typeof run === "number" && Number.isSafeInteger(run) ? run : null };
|
|
17
13
|
}
|
|
18
|
-
/** Every lifecycle dedupe key starts here: `life:<kind>:<identity>:<ordinal>`. */
|
|
19
14
|
export const LIFECYCLE_KEY_PREFIX = "life:";
|
|
20
|
-
/**
|
|
21
|
-
* Task lifecycle updates (Telegram task updates, 2026-09-16): the CLOSED
|
|
22
|
-
* vocabulary of routine progress facts the shared mutations record beside
|
|
23
|
-
* the change that made them true. None carries a push class — they are
|
|
24
|
-
* digest-eligible progress, never a page — and every one is project-bound
|
|
25
|
-
* through the task it names. A decision, incident, gap, stall, publication
|
|
26
|
-
* or merge page keeps its own producer; nothing here repeats one.
|
|
27
|
-
*/
|
|
28
15
|
export const LIFECYCLE_KINDS = [
|
|
29
16
|
"task-filed",
|
|
30
17
|
"scope-approved",
|
|
@@ -46,12 +33,9 @@ export const LIFECYCLE_KINDS = [
|
|
|
46
33
|
"acceptance-evidence",
|
|
47
34
|
"acceptance-ready",
|
|
48
35
|
];
|
|
49
|
-
/** A progress fact, told apart by its durable key — never by display text. */
|
|
50
36
|
export function isLifecycleNotification(row) {
|
|
51
37
|
return row.dedupeKey.startsWith(LIFECYCLE_KEY_PREFIX);
|
|
52
38
|
}
|
|
53
|
-
/** Only known progress producers can repaint a card. Decisions and urgent
|
|
54
|
-
* incidents keep their own alerts; a routine retry updates its saved attempt. */
|
|
55
39
|
export function isTelegramProgressNotification(row) {
|
|
56
40
|
if (row.kind === "check-progress" && row.pushClass === "progress" && row.run !== null)
|
|
57
41
|
return isLifecycleNotification(row);
|
|
@@ -59,7 +43,6 @@ export function isTelegramProgressNotification(row) {
|
|
|
59
43
|
return false;
|
|
60
44
|
if (row.kind === "build-failed" && row.run !== null && row.dedupeKey === `run:${row.run}:failed`)
|
|
61
45
|
return true;
|
|
62
|
-
// The owner's lead took the attempt on, or let it lapse (lead-voice.ts): its card repaints in place.
|
|
63
46
|
if ((row.kind === "lead-on-it" || row.kind === "lead-lapsed") && row.run !== null)
|
|
64
47
|
return true;
|
|
65
48
|
return isLifecycleNotification(row) &&
|