toolroll 0.9.103 → 0.9.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +65 -0
- package/README.md +27 -27
- package/dist/accent-colors.js +0 -29
- package/dist/acp-agents.js +0 -3
- package/dist/acp-attest.js +0 -30
- package/dist/acp-check.js +3 -70
- package/dist/acp-client.js +3 -94
- package/dist/acp-inspect.js +1 -20
- package/dist/action-ledger.js +0 -8
- package/dist/activity-line.js +0 -14
- package/dist/actor.js +0 -15
- package/dist/advanced-schema.js +12 -0
- package/dist/advanced-view.js +26 -0
- package/dist/advanced.js +61 -0
- package/dist/agent-board.js +0 -117
- package/dist/agent-fence.js +11 -367
- package/dist/agent-onboard.js +12 -50
- package/dist/agent-pulse.js +5 -38
- package/dist/agent-state-words.js +0 -8
- package/dist/agent-state.js +1 -45
- package/dist/agent-turns.js +3 -17
- package/dist/agentconfig.js +1 -99
- package/dist/agents-board.js +0 -60
- package/dist/agents-live.js +1 -8
- package/dist/api-tokens.js +0 -27
- package/dist/approval-authority.js +0 -59
- package/dist/approval-password.js +0 -10
- package/dist/approval-policy.js +0 -29
- package/dist/approval-rules-ui.js +0 -9
- package/dist/assignment-adapters.js +0 -14
- package/dist/assignment-brief.js +1 -17
- package/dist/assignment-delivery.js +0 -22
- package/dist/assignment-presentation.js +0 -14
- package/dist/assignment-status.js +1 -30
- package/dist/assignment-ui.js +0 -12
- package/dist/assignment.js +117 -103
- package/dist/attest.js +0 -38
- package/dist/audit-cli.js +0 -9
- package/dist/backend.js +0 -59
- package/dist/backup-ui.js +0 -12
- package/dist/backup.js +8 -61
- package/dist/batch-checks.js +0 -20
- package/dist/batch-policy.js +0 -4
- package/dist/beads.js +0 -48
- package/dist/bin.js +0 -8
- package/dist/board.js +1 -36
- package/dist/boot-identity.js +0 -42
- package/dist/bounded-spawn.js +4 -28
- package/dist/brand-mark.js +0 -21
- package/dist/brief-fence.js +0 -16
- package/dist/browser/terminal.css +1 -1
- package/dist/browser/terminal.js +16 -16
- package/dist/browser/workspace.css +2 -2
- package/dist/browser/workspace.js +26 -26
- package/dist/browser-crew.js +0 -8
- package/dist/browser-shell.js +2 -15
- package/dist/browser-workspace.js +6 -30
- package/dist/budget-alerts.js +1 -4
- package/dist/build-review.js +2 -50
- package/dist/builder-restart.js +0 -13
- package/dist/builder.js +21 -1035
- package/dist/canonical-json.js +0 -12
- package/dist/capscan.js +1 -32
- package/dist/card-catalog.js +0 -12
- package/dist/card-cli.js +0 -1
- package/dist/card-render.js +0 -25
- package/dist/card-sources.js +0 -10
- package/dist/chat-acceptance.js +0 -7
- package/dist/chat-actions.js +5 -190
- package/dist/chat-admission.js +0 -7
- package/dist/chat-approval.js +0 -25
- package/dist/chat-ask.js +0 -17
- package/dist/chat-card-part.js +0 -3
- package/dist/chat-card.js +0 -6
- package/dist/chat-channel.js +2 -83
- package/dist/chat-continuity.js +0 -31
- package/dist/chat-controls.js +0 -7
- package/dist/chat-core.js +0 -55
- package/dist/chat-decide.js +2 -153
- package/dist/chat-delivery-state.js +0 -49
- package/dist/chat-delivery.js +2 -143
- package/dist/chat-display.js +0 -2
- package/dist/chat-evidence.js +0 -65
- package/dist/chat-flow.js +0 -72
- package/dist/chat-follow.js +0 -13
- package/dist/chat-inbox.js +0 -34
- package/dist/chat-live-schema.js +0 -14
- package/dist/chat-live.js +2 -87
- package/dist/chat-message-states.js +13 -40
- package/dist/chat-messages.js +0 -153
- package/dist/chat-migration.js +0 -57
- package/dist/chat-polish.js +0 -7
- package/dist/chat-quiet.js +0 -37
- package/dist/chat-review.js +0 -4
- package/dist/chat-rooms.js +0 -22
- package/dist/chat-settings-page.js +0 -4
- package/dist/chat-task-actions.js +0 -7
- package/dist/chat-terms.js +0 -21
- package/dist/chat-voice.js +0 -38
- package/dist/chat-warmth.js +1 -3
- package/dist/check-access.js +0 -30
- package/dist/check-facts.js +2 -62
- package/dist/check-failure.js +0 -98
- package/dist/check-levels-ui.js +4 -10
- package/dist/check-levels.js +3 -35
- package/dist/check-load.js +1 -49
- package/dist/check-only-standing.js +0 -6
- package/dist/check-only.js +0 -22
- package/dist/check-progress.js +0 -32
- package/dist/check-repair.js +2 -35
- package/dist/check-report.js +1 -108
- package/dist/check-stamp.js +0 -20
- package/dist/checkout-cleanup.js +0 -84
- package/dist/checkout-proof.js +1 -13
- package/dist/child-database.js +0 -3
- package/dist/claim.js +4 -508
- package/dist/claude-print.js +0 -10
- package/dist/cli-fast.js +0 -8
- package/dist/cli-help.js +90 -78
- package/dist/cli-http.js +0 -10
- package/dist/cli.js +26 -241
- package/dist/code-extract.js +0 -6
- package/dist/code-map-acts.js +0 -7
- package/dist/code-map-admission.js +2 -26
- package/dist/code-map-build.js +3 -24
- package/dist/code-map-cli.js +0 -4
- package/dist/code-map-main.js +0 -6
- package/dist/code-map-read.js +0 -12
- package/dist/code-map-report.js +0 -9
- package/dist/code-map-shape.js +0 -19
- package/dist/code-map-store.js +0 -26
- package/dist/codex-limits.js +1 -17
- package/dist/coding-context.js +0 -10
- package/dist/coding-handoff.js +0 -14
- package/dist/coding-provider.js +0 -39
- package/dist/coding-shipping-ui.js +0 -1
- package/dist/coding-ui.js +0 -1
- package/dist/coding-update.js +1 -18
- package/dist/coding-workspace.js +0 -27
- package/dist/commit-extract.js +0 -83
- package/dist/connect-cli.js +0 -19
- package/dist/console-chrome.js +1 -34
- package/dist/console-instance.js +2 -91
- package/dist/container-state.js +0 -4
- package/dist/containment.js +2 -105
- package/dist/contract-changes.js +0 -6
- package/dist/contracts/acceptance-terms.js +0 -7
- package/dist/contracts/chat-actions.js +0 -46
- package/dist/contracts/chat-callback-rows.js +0 -8
- package/dist/contracts/chat-card.js +0 -14
- package/dist/contracts/chat-content.js +0 -55
- package/dist/contracts/chat-tables.js +0 -7
- package/dist/contracts/cli.js +0 -59
- package/dist/contracts/coding-activity.js +0 -15
- package/dist/contracts/coding-context.js +0 -15
- package/dist/contracts/coding-handoff.js +0 -11
- package/dist/contracts/coding-workspace.js +0 -14
- package/dist/contracts/console-api.js +3 -54
- package/dist/contracts/contract-test.js +0 -14
- package/dist/contracts/contract.js +0 -48
- package/dist/contracts/decision.js +0 -20
- package/dist/contracts/diff-stat.js +0 -16
- package/dist/contracts/discord-callback.js +0 -9
- package/dist/contracts/flow-card.js +0 -18
- package/dist/contracts/flow-propose.js +0 -8
- package/dist/contracts/flow-send.js +0 -31
- package/dist/contracts/flow.js +0 -112
- package/dist/contracts/gateway-tools.js +0 -22
- package/dist/contracts/handoff.js +0 -22
- package/dist/contracts/integration-metadata.js +0 -39
- package/dist/contracts/lead-context.js +0 -14
- package/dist/contracts/lead-tools.js +0 -49
- package/dist/contracts/mcp-oauth.js +0 -12
- package/dist/contracts/memory-pass.js +0 -21
- package/dist/contracts/model-catalog.js +0 -9
- package/dist/contracts/observation-request.js +0 -11
- package/dist/contracts/plan.js +0 -16
- package/dist/contracts/project-knowledge.js +0 -26
- package/dist/contracts/project-memory.js +0 -16
- package/dist/contracts/project-skills.js +0 -31
- package/dist/contracts/proof.js +0 -23
- package/dist/contracts/provider.js +0 -9
- package/dist/contracts/recipes.js +0 -16
- package/dist/contracts/release-check.js +0 -61
- package/dist/contracts/release-terms.js +0 -27
- package/dist/contracts/retention.js +0 -12
- package/dist/contracts/review-findings.js +0 -13
- package/dist/contracts/route-results.js +0 -15
- package/dist/contracts/route.js +0 -33
- package/dist/contracts/scope.js +0 -29
- package/dist/contracts/scout-report.js +0 -34
- package/dist/contracts/slack-callback.js +0 -11
- package/dist/contracts/sort-answer.js +0 -24
- package/dist/contracts/stage-output.js +0 -46
- package/dist/contracts/storage.js +0 -8
- package/dist/contracts/store-json.js +0 -41
- package/dist/contracts/subagent-turn.js +0 -23
- package/dist/contracts/task-sizing.js +0 -10
- package/dist/contracts/teams-callback.js +0 -7
- package/dist/contracts/telegram-callback.js +0 -27
- package/dist/contracts/trigger-payloads.js +0 -41
- package/dist/contracts/update-journal.js +0 -47
- package/dist/contracts/verification-receipt.js +0 -36
- package/dist/contracts/verification-view.js +0 -15
- package/dist/contracts/youiyoux-request.js +0 -26
- package/dist/control-setup.js +0 -7
- package/dist/control-ui.js +0 -3
- package/dist/controller-service.js +0 -4
- package/dist/controller-supervisor.js +0 -15
- package/dist/converse.js +3 -129
- package/dist/coordinator-proposals.js +1 -6
- package/dist/coordinator.js +0 -65
- package/dist/credentials-ui.js +0 -6
- package/dist/daemon.js +0 -137
- package/dist/database-reclaim.js +0 -3
- package/dist/decision.js +0 -78
- package/dist/demo-chat.js +4 -15
- package/dist/demo-sign-in.js +77 -0
- package/dist/demo.js +5 -194
- package/dist/deploy-gate.js +0 -20
- package/dist/deploy-lock.js +0 -4
- package/dist/deploy-phase.js +0 -22
- package/dist/deploy-rescue.js +0 -21
- package/dist/deprecations.js +0 -12
- package/dist/design/kit.css +9 -6
- package/dist/design/kit.js +2 -33
- package/dist/desktop-access.js +0 -9
- package/dist/desktop-bundle.js +1 -3
- package/dist/desktop-host.js +0 -34
- package/dist/desktop-update-gate.js +0 -8
- package/dist/desktop-update-recovery.js +1 -18
- package/dist/desktop-update.js +2 -48
- package/dist/digest-times.js +0 -2
- package/dist/disclosure.js +0 -5
- package/dist/discord-api.js +0 -6
- package/dist/discord-chat.js +0 -31
- package/dist/discord.js +0 -7
- package/dist/discover.js +0 -50
- package/dist/dispatch.js +61 -60
- package/dist/dispose.js +0 -208
- package/dist/doctor.js +0 -48
- package/dist/easy-start-args.js +7 -7
- package/dist/easy-start.js +32 -45
- package/dist/egress.js +1 -63
- package/dist/email-settings.js +0 -8
- package/dist/envelope.js +50 -86
- package/dist/eval-gate.js +1 -37
- package/dist/eval-hooks.js +0 -120
- package/dist/eval-oracle-main.js +0 -7
- package/dist/eval-oracle.js +3 -42
- package/dist/eval-world.js +1 -23
- package/dist/evals.js +6 -134
- package/dist/evidence-pack.js +0 -29
- package/dist/evidence-pair.js +0 -17
- package/dist/evidence.js +4 -280
- package/dist/exec.js +19 -404
- package/dist/exhaustion.js +0 -30
- package/dist/export-ui.js +0 -7
- package/dist/export.js +1 -38
- package/dist/failing-first.js +0 -6
- package/dist/fallback-schema.js +0 -5
- package/dist/fallback.js +0 -81
- package/dist/fast-start.js +0 -97
- package/dist/fast-terms.js +0 -3
- package/dist/fenced-check-coverage.js +0 -11
- package/dist/findings.js +1 -63
- package/dist/first-run.js +4 -57
- package/dist/first-tasks-child.js +0 -5
- package/dist/flaky-ci.js +1 -24
- package/dist/flaky-cli.js +0 -4
- package/dist/flaky.js +0 -43
- package/dist/fleet-schema.js +0 -11
- package/dist/flow-actions.js +0 -31
- package/dist/flow-browser.js +0 -42
- package/dist/flow-cadence.js +1 -24
- package/dist/flow-card-task.js +0 -11
- package/dist/flow-changed.js +0 -16
- package/dist/flow-code.js +1 -45
- package/dist/flow-draft.js +0 -17
- package/dist/flow-engine.js +2 -76
- package/dist/flow-gallery-ui.js +0 -28
- package/dist/flow-gallery.js +0 -54
- package/dist/flow-insights.js +0 -12
- package/dist/flow-items.js +0 -27
- package/dist/flow-live.js +0 -31
- package/dist/flow-people.js +0 -14
- package/dist/flow-pull-request.js +0 -32
- package/dist/flow-replies.js +0 -9
- package/dist/flow-result-card.js +0 -8
- package/dist/flow-schedule.js +0 -74
- package/dist/flow-scripts.js +0 -13
- package/dist/flow-secrets.js +0 -10
- package/dist/flow-send.js +0 -45
- package/dist/flow-share.js +0 -60
- package/dist/flow-sort.js +1 -24
- package/dist/flow-starters-ui.js +0 -2
- package/dist/flow-starters.js +0 -13
- package/dist/flow-steps.js +0 -80
- package/dist/flow-triggers.js +2 -256
- package/dist/flow-unattended-words.js +0 -13
- package/dist/flow-unattended.js +2 -115
- package/dist/flows-cli.js +2 -36
- package/dist/flows-ui.js +0 -51
- package/dist/flows.js +0 -158
- package/dist/folder-gate.js +0 -21
- package/dist/folder-look.js +0 -42
- package/dist/follow-through-brief.js +0 -6
- package/dist/follow-through-cli.js +0 -5
- package/dist/fonts.js +0 -13
- package/dist/gaps.js +0 -20
- package/dist/gate-failure.js +0 -7
- package/dist/git-floor.js +0 -12
- package/dist/git-incident.js +2 -38
- package/dist/git-views.js +0 -24
- package/dist/git.js +0 -31
- package/dist/github-import.js +0 -22
- package/dist/github-jobs.js +0 -12
- package/dist/google-mail.js +2 -27
- package/dist/grant.js +0 -110
- package/dist/graph.js +0 -108
- package/dist/guides.js +4 -15
- package/dist/handover-note.js +0 -12
- package/dist/health-cli.js +0 -2
- package/dist/home-groups.js +0 -15
- package/dist/html.js +0 -54
- package/dist/install-method.js +0 -12
- package/dist/integrations-ui.js +0 -15
- package/dist/integrations.js +7 -50
- package/dist/invoke.js +1 -381
- package/dist/is-record.js +0 -1
- package/dist/issues.js +0 -48
- package/dist/jsonl-discriminants.js +0 -6
- package/dist/keymap.js +2 -16
- package/dist/keys.js +0 -56
- package/dist/kits-ui.js +0 -3
- package/dist/kits.js +1 -24
- package/dist/knowledge-cli.js +0 -4
- package/dist/knowledge-ui.js +0 -8
- package/dist/landed-cleanup.js +0 -119
- package/dist/laptop-background.js +0 -85
- package/dist/laptop-service.js +0 -67
- package/dist/latency-timeline.js +2 -23
- package/dist/lead-about.js +0 -7
- package/dist/lead-answer-eval.js +0 -39
- package/dist/lead-capabilities.js +0 -19
- package/dist/lead-cli-live.js +0 -22
- package/dist/lead-cli.js +0 -27
- package/dist/lead-commitments.js +1 -27
- package/dist/lead-context.js +2 -42
- package/dist/lead-contract.js +0 -8
- package/dist/lead-doors.js +0 -105
- package/dist/lead-follow.js +0 -41
- package/dist/lead-identity.js +1 -4
- package/dist/lead-latency-schema.js +0 -13
- package/dist/lead-people.js +3 -18
- package/dist/lead-progress.js +0 -12
- package/dist/lead-queue-runtime.js +0 -26
- package/dist/lead-queue.js +0 -35
- package/dist/lead-route.js +0 -33
- package/dist/lead-status.js +0 -37
- package/dist/lead-sweep.js +0 -18
- package/dist/lead-tools.js +0 -160
- package/dist/lead-voice.js +0 -54
- package/dist/lead.js +2 -105
- package/dist/learning-child.js +0 -6
- package/dist/learning-look.js +0 -14
- package/dist/ledger-chain.js +0 -34
- package/dist/ledger-csv.js +0 -2
- package/dist/ledger-view.js +0 -3
- package/dist/lesson-notes.js +0 -56
- package/dist/limits-ui.js +0 -14
- package/dist/link.js +0 -79
- package/dist/live-backup.js +3 -33
- package/dist/live-bus.js +7 -81
- package/dist/live-children-read.js +4 -47
- package/dist/live-children.js +4 -44
- package/dist/live-detail.js +0 -17
- package/dist/live-input.js +5 -68
- package/dist/live-main-read.js +1 -14
- package/dist/live-notes.js +0 -12
- package/dist/live-open.js +1 -23
- package/dist/live-records.js +4 -151
- package/dist/live-reply.js +1 -51
- package/dist/live-terminal.js +12 -111
- package/dist/live.js +4 -130
- package/dist/local-owner-acts.js +168 -0
- package/dist/local-owner.js +15 -80
- package/dist/log.js +0 -8
- package/dist/login-secrets.js +2 -38
- package/dist/machine-check.js +0 -2
- package/dist/machine-identity.js +1 -46
- package/dist/mailbox.js +0 -30
- package/dist/maintenance.js +1 -3
- package/dist/mcp-connect.js +0 -88
- package/dist/mcp-core.js +0 -45
- package/dist/mcp-http.js +0 -13
- package/dist/mcp-oauth.js +0 -37
- package/dist/mcp-person.js +0 -11
- package/dist/mcp.js +3 -73
- package/dist/memory-cli.js +0 -3
- package/dist/memory-pass.js +0 -53
- package/dist/memory-tidy.js +0 -55
- package/dist/memory-use.js +2 -24
- package/dist/merge-checklist.js +21 -29
- package/dist/metrics.js +0 -10
- package/dist/mobile-viewport.js +0 -6
- package/dist/model-catalog.js +1 -33
- package/dist/model-choices.js +9 -84
- package/dist/model-names.js +0 -9
- package/dist/models-cli.js +0 -13
- package/dist/models-ui.js +0 -17
- package/dist/modes.js +0 -35
- package/dist/monitoring-settings.js +2 -27
- package/dist/monitoring-ui.js +2 -14
- package/dist/monitoring.js +2 -38
- package/dist/names.js +0 -39
- package/dist/needs-you.js +7 -70
- package/dist/never-index.js +0 -9
- package/dist/nightly-check.js +0 -74
- package/dist/nightly-github.js +0 -168
- package/dist/notification-delivery.js +0 -3
- package/dist/notification-rows.js +0 -17
- package/dist/oauth-run-token.js +1 -37
- package/dist/observations.js +0 -16
- package/dist/oidc.js +1 -20
- package/dist/onboard.js +4 -57
- package/dist/one-step-chat-schema.js +0 -15
- package/dist/openrouter-models.js +0 -6
- package/dist/operate-remote-arguments.js +2 -17
- package/dist/operate-remote.js +0 -33
- package/dist/operate.js +280 -2304
- package/dist/orphan-sweep.js +3 -37
- package/dist/page-work-contract.js +0 -3
- package/dist/password-bearer.js +1 -11
- package/dist/passwordless.js +0 -3
- package/dist/peek-cli.js +0 -46
- package/dist/peek.js +2 -61
- package/dist/people-audit-ui.js +0 -6
- package/dist/person-proof.js +0 -6
- package/dist/phase-routing.js +8 -183
- package/dist/plain-schema.js +0 -14
- package/dist/plain-words.js +18 -12
- package/dist/plan-auto.js +3 -18
- package/dist/plan-login.js +0 -16
- package/dist/plan.js +0 -68
- package/dist/plane-review.js +0 -56
- package/dist/planner-source.js +0 -96
- package/dist/planner.js +0 -117
- package/dist/policy-ui.js +0 -8
- package/dist/policy.js +0 -47
- package/dist/prepared-evidence.js +0 -5
- package/dist/principal.js +0 -29
- package/dist/probe.js +0 -30
- package/dist/process-custody.js +0 -15
- package/dist/process-liveness.js +0 -32
- package/dist/process-tree.js +3 -29
- package/dist/project-access.js +0 -10
- package/dist/project-admission.js +1 -41
- package/dist/project-cli.js +0 -6
- package/dist/project-concurrency.js +0 -35
- package/dist/project-delete-ui.js +4 -29
- package/dist/project-delete.js +1 -73
- package/dist/project-demo.js +0 -13
- package/dist/project-file.js +0 -2
- package/dist/project-identity.js +0 -41
- package/dist/project-knowledge.js +0 -39
- package/dist/project-learning.js +3 -55
- package/dist/project-memory.js +2 -45
- package/dist/project-outcomes.js +0 -6
- package/dist/project-sandbox.js +0 -23
- package/dist/project-skills.js +0 -12
- package/dist/project-tools.js +6 -184
- package/dist/project.js +0 -48
- package/dist/prompt.js +0 -31
- package/dist/proof.js +0 -220
- package/dist/proposal.js +0 -50
- package/dist/protected-storage-look.js +0 -6
- package/dist/protected-storage.js +1 -84
- package/dist/provider-auth.js +3 -69
- package/dist/provider-capture.js +1 -15
- package/dist/provider-connection.js +0 -8
- package/dist/provider-home.js +0 -25
- package/dist/provider-limits.js +0 -14
- package/dist/provider.js +0 -324
- package/dist/public-access.js +11 -30
- package/dist/public-check.js +0 -16
- package/dist/publish.js +1 -150
- package/dist/pull-request-flow.js +6 -74
- package/dist/pull-request-schema.js +0 -4
- package/dist/pull-request-ui.js +0 -5
- package/dist/pulls.js +0 -80
- package/dist/push.js +5 -89
- package/dist/quick-start.js +1 -23
- package/dist/read-executor-worker.js +0 -1
- package/dist/read-executor.js +0 -10
- package/dist/read-only-request.js +0 -7
- package/dist/recipe-ui.js +0 -6
- package/dist/recipes.js +0 -13
- package/dist/release-adapters.js +6 -214
- package/dist/release-approval.js +0 -74
- package/dist/release-authority.js +0 -42
- package/dist/release-auto.js +0 -142
- package/dist/release-card.js +26 -103
- package/dist/release-carry.js +0 -132
- package/dist/release-ci-hold.js +0 -20
- package/dist/release-cli.js +0 -46
- package/dist/release-coverage.js +0 -16
- package/dist/release-gate.js +0 -30
- package/dist/release-git.js +0 -24
- package/dist/release-links.js +0 -17
- package/dist/release-net.js +0 -42
- package/dist/release-next.js +0 -25
- package/dist/release-recheck.js +0 -89
- package/dist/release-refusal.js +0 -18
- package/dist/release-view.js +0 -5
- package/dist/release.js +7 -341
- package/dist/releases.js +0 -49
- package/dist/remote-audit.js +0 -25
- package/dist/remote-command.js +0 -16
- package/dist/remote-destination.js +5 -26
- package/dist/remote-exec.js +1 -27
- package/dist/remote-main.js +1 -53
- package/dist/remote-run.js +0 -5
- package/dist/remote.js +0 -49
- package/dist/render.js +0 -133
- package/dist/reply-shape.js +0 -85
- package/dist/reply-voice.js +0 -7
- package/dist/report-summary.js +0 -5
- package/dist/reported-usage.js +0 -30
- package/dist/repos.js +9 -62
- package/dist/repository-context.js +1 -24
- package/dist/request-budget-ui.js +0 -4
- package/dist/request-budget.js +0 -23
- package/dist/restart-certification.js +0 -37
- package/dist/result-actions.js +0 -62
- package/dist/result-acts.js +0 -34
- package/dist/result-completion.js +9 -28
- package/dist/result-evidence-readers.js +0 -3
- package/dist/result-follow-ups.js +1 -39
- package/dist/result-review.js +0 -86
- package/dist/result-shots.js +0 -39
- package/dist/retention-ui.js +0 -7
- package/dist/retention.js +2 -46
- package/dist/review-context.js +0 -129
- package/dist/review-evidence.js +0 -4
- package/dist/review-switch.js +1 -7
- package/dist/reviewer.js +0 -35
- package/dist/route-change-check.js +0 -2
- package/dist/route-change.js +0 -16
- package/dist/route-hooks.js +0 -27
- package/dist/route-results.js +2 -58
- package/dist/route-rules.js +1 -106
- package/dist/route-savings.js +0 -36
- package/dist/route-store.js +1 -133
- package/dist/run-closeout.js +2 -50
- package/dist/run-efficiency.js +2 -44
- package/dist/run-ending.js +0 -13
- package/dist/runner-process.js +0 -33
- package/dist/runner.js +17 -189
- package/dist/sample-project.js +2 -27
- package/dist/sandbox-launch.js +4 -25
- package/dist/sandbox-runtime.js +1 -88
- package/dist/scan.js +0 -27
- package/dist/scope.js +88 -566
- package/dist/scout-browser-lock.js +0 -6
- package/dist/scout-browser.js +2 -68
- package/dist/scout-net.js +1 -32
- package/dist/scout-report.js +0 -22
- package/dist/scout.js +1 -116
- package/dist/secret-mint.js +0 -6
- package/dist/serve.js +29 -564
- package/dist/server/agents-computers.js +0 -10
- package/dist/server/agents-live-filed.js +0 -13
- package/dist/server/agents-live-lead.js +0 -19
- package/dist/server/agents-live-room.js +0 -19
- package/dist/server/chat.js +2 -194
- package/dist/server/chrome.js +17 -263
- package/dist/server/console.css +4 -4
- package/dist/server/edge-refusal.js +0 -3
- package/dist/server/flows.js +5 -74
- package/dist/server/guards.js +9 -86
- package/dist/server/handler-registry.js +0 -2
- package/dist/server/home-asks.js +1 -22
- package/dist/server/home.js +1 -30
- package/dist/server/http.js +0 -82
- package/dist/server/in-place.js +0 -15
- package/dist/server/kit-standalone.js +0 -20
- package/dist/server/kit.js +2 -114
- package/dist/server/last-checks.js +0 -2
- package/dist/server/live.js +1 -36
- package/dist/server/merge-ready-view.js +0 -6
- package/dist/server/mutation-key.js +3 -40
- package/dist/server/pages-assets.js +0 -16
- package/dist/server/pages.js +7 -195
- package/dist/server/people-tokens.js +3 -101
- package/dist/server/remote-hooks.js +0 -13
- package/dist/server/remote.js +0 -28
- package/dist/server/render-chat.js +8 -144
- package/dist/server/render-code-map.js +0 -5
- package/dist/server/render-flaky.js +0 -8
- package/dist/server/render-follow-through.js +2 -5
- package/dist/server/render-history.js +2 -34
- package/dist/server/render-new-task.js +2 -29
- package/dist/server/render-pages.js +1 -111
- package/dist/server/render-people.js +2 -46
- package/dist/server/render-projects.js +15 -32
- package/dist/server/render-release.js +1 -14
- package/dist/server/render-results.js +4 -355
- package/dist/server/render-settings.js +0 -15
- package/dist/server/render-tasks.js +17 -497
- package/dist/server/request-context.js +2 -9
- package/dist/server/retired-routes.js +0 -11
- package/dist/server/route-policy.js +0 -3
- package/dist/server/route-table.js +8 -133
- package/dist/server/runtime.js +0 -1
- package/dist/server/session.js +0 -28
- package/dist/server/settings.js +40 -246
- package/dist/server/signup-gate.js +0 -11
- package/dist/server/sweeps.js +0 -6
- package/dist/server/task-views.js +12 -227
- package/dist/server/tasks.js +37 -531
- package/dist/server/terminals.js +2 -46
- package/dist/server/welcome.js +2 -22
- package/dist/server-telemetry.js +0 -9
- package/dist/settings-groups-ui.js +50 -63
- package/dist/settings-kit-script.js +0 -19
- package/dist/settings-kit.js +0 -63
- package/dist/settings-proofs.js +0 -23
- package/dist/setup-guide.js +1 -9
- package/dist/shared-deps.js +9 -84
- package/dist/sign-in-guard.js +0 -27
- package/dist/skills-ui.js +0 -2
- package/dist/skills.js +2 -54
- package/dist/slack-api.js +0 -3
- package/dist/slack-chat.js +0 -25
- package/dist/slack-settings.js +0 -1
- package/dist/slack-socket.js +0 -5
- package/dist/slack.js +0 -4
- package/dist/sleep.js +0 -1
- package/dist/source-key.js +0 -10
- package/dist/spend-report.js +0 -29
- package/dist/spend-ui.js +0 -26
- package/dist/spend.js +0 -40
- package/dist/sqlite-runtime.js +0 -2
- package/dist/sqlite-telemetry.js +0 -9
- package/dist/sso-settings.js +0 -13
- package/dist/sso-ui.js +0 -2
- package/dist/staged-runtimes.js +5 -39
- package/dist/steer-capabilities.js +1 -7
- package/dist/steer-controls.js +0 -10
- package/dist/steer-live.js +0 -31
- package/dist/steer-mailbox.js +4 -65
- package/dist/steer-status.js +0 -7
- package/dist/stop-proof.js +5 -62
- package/dist/storage-sweep-child.js +1 -5
- package/dist/storage-sweep-process.js +2 -20
- package/dist/storage-sweep-schedule.js +0 -32
- package/dist/storage-sweep.js +2 -51
- package/dist/storage-ui.js +0 -18
- package/dist/storage.js +0 -31
- package/dist/store-baseline.js +0 -14
- package/dist/store.js +109 -4763
- package/dist/stream-scope.js +0 -16
- package/dist/structured-output.js +0 -39
- package/dist/style-asset.js +0 -2
- package/dist/subagent-admin.js +0 -9
- package/dist/subagent-desk.js +0 -29
- package/dist/subagent-memory.js +0 -38
- package/dist/subagent-question.js +0 -29
- package/dist/subagent-tools.js +1 -60
- package/dist/subagent-week.js +0 -28
- package/dist/subagent-work.js +1 -39
- package/dist/subagents-ui.js +1 -13
- package/dist/subagents.js +0 -40
- package/dist/subscription-chat.js +1 -42
- package/dist/summary.js +0 -19
- package/dist/surface.js +8 -73
- package/dist/sweep-gate.js +0 -2
- package/dist/sweep-quarantine.js +2 -13
- package/dist/sync.js +0 -47
- package/dist/tailnet.js +0 -9
- package/dist/tamper-scan.js +0 -15
- package/dist/task-activity.js +1 -16
- package/dist/task-aliases.js +0 -3
- package/dist/task-archive.js +0 -7
- package/dist/task-base.js +0 -18
- package/dist/task-composer.js +0 -2
- package/dist/task-control.js +0 -74
- package/dist/task-live.js +0 -23
- package/dist/task-moves.js +0 -28
- package/dist/task-outcome-cli.js +66 -19
- package/dist/task-review-brief.js +0 -7
- package/dist/task-sizing.js +0 -47
- package/dist/task-source.js +0 -23
- package/dist/task-status.js +0 -106
- package/dist/task-text.js +0 -12
- package/dist/team-chat-authorization.js +0 -3
- package/dist/team-contract.js +0 -2
- package/dist/team-http.js +0 -4
- package/dist/team-leads.js +1 -16
- package/dist/team-runtime.js +0 -13
- package/dist/team-ui.js +0 -1
- package/dist/team-updates.js +0 -4
- package/dist/teams-api.js +0 -12
- package/dist/teams-chat.js +0 -28
- package/dist/teams.js +0 -12
- package/dist/teardown-git.js +6 -294
- package/dist/telegram-flow.js +0 -51
- package/dist/telegram-lead.js +2 -203
- package/dist/telegram-live.js +1 -42
- package/dist/telegram-progress.js +0 -18
- package/dist/telegram-settings.js +0 -7
- package/dist/telegram-status.js +0 -46
- package/dist/telegram-team.js +1 -33
- package/dist/telegram.js +6 -454
- package/dist/templates.js +0 -24
- package/dist/terminal-catalog.js +2 -20
- package/dist/terminal-text.js +0 -12
- package/dist/test-infra.js +0 -50
- package/dist/test-temp.js +3 -26
- package/dist/text-limits.js +0 -92
- package/dist/tidy.js +0 -76
- package/dist/tier-report.js +0 -2
- package/dist/token-notices.js +1 -9
- package/dist/tokens-cli.js +0 -13
- package/dist/tool-broker.js +2 -53
- package/dist/tool-launcher.js +0 -14
- package/dist/tool-secret-store.js +3 -125
- package/dist/toolroll-update-cli.js +0 -9
- package/dist/toolroll-update-ui.js +0 -14
- package/dist/toolroll-update.js +13 -252
- package/dist/tools-ui.js +0 -17
- package/dist/transitions-recipes.js +0 -2
- package/dist/tree-proof.js +0 -23
- package/dist/tui-contract.js +0 -8
- package/dist/tui-source.js +91 -40
- package/dist/tui.js +54 -54
- package/dist/typed-start.js +0 -27
- package/dist/unfenced-test-support.js +0 -5
- package/dist/up-processes.js +1 -40
- package/dist/up-role-child.js +1 -13
- package/dist/update-notice.js +0 -1
- package/dist/vanished-retry.js +0 -40
- package/dist/verification-evidence.js +0 -39
- package/dist/version.js +0 -1
- package/dist/wake-hub.js +0 -28
- package/dist/webhook-limits.js +0 -7
- package/dist/webhook-readers.js +0 -30
- package/dist/webhook-signing.js +0 -14
- package/dist/webhooks.js +0 -54
- package/dist/welcome-facts.js +2 -14
- package/dist/when-html.js +0 -27
- package/dist/work-index.js +26 -98
- package/dist/work-summary.js +2 -17
- package/dist/workspace-motion.js +0 -2
- package/dist/workspace-revision.js +1 -21
- package/dist/workspace-ui.js +15 -135
- package/dist/worktree-notices.js +0 -3
- package/dist/worktree.js +0 -308
- package/dist/writes-mode.js +0 -1
- package/dist/youiyoux-intake.js +4 -159
- package/package.json +5 -4
- package/dist/accent-colors.d.ts +0 -51
- package/dist/acp-agents.d.ts +0 -43
- package/dist/acp-attest.d.ts +0 -44
- package/dist/acp-check.d.ts +0 -37
- package/dist/acp-client.d.ts +0 -163
- package/dist/acp-inspect.d.ts +0 -23
- package/dist/action-ledger.d.ts +0 -27
- package/dist/activity-line.d.ts +0 -29
- package/dist/actor.d.ts +0 -11
- package/dist/agent-board.d.ts +0 -229
- package/dist/agent-fence.d.ts +0 -479
- package/dist/agent-onboard.d.ts +0 -158
- package/dist/agent-pulse.d.ts +0 -43
- package/dist/agent-state-words.d.ts +0 -19
- package/dist/agent-state.d.ts +0 -65
- package/dist/agent-turns.d.ts +0 -52
- package/dist/agentconfig.d.ts +0 -191
- package/dist/agents-board.d.ts +0 -145
- package/dist/agents-live.d.ts +0 -31
- package/dist/api-tokens.d.ts +0 -80
- package/dist/approval-authority.d.ts +0 -51
- package/dist/approval-password.d.ts +0 -31
- package/dist/approval-policy.d.ts +0 -69
- package/dist/approval-rules-ui.d.ts +0 -40
- package/dist/assignment-adapters.d.ts +0 -152
- package/dist/assignment-brief.d.ts +0 -83
- package/dist/assignment-delivery.d.ts +0 -86
- package/dist/assignment-presentation.d.ts +0 -37
- package/dist/assignment-status.d.ts +0 -71
- package/dist/assignment-ui.d.ts +0 -68
- package/dist/assignment.d.ts +0 -318
- package/dist/attest.d.ts +0 -59
- package/dist/audit-cli.d.ts +0 -17
- package/dist/backend.d.ts +0 -97
- package/dist/backup-ui.d.ts +0 -32
- package/dist/backup.d.ts +0 -92
- package/dist/batch-checks.d.ts +0 -15
- package/dist/batch-policy.d.ts +0 -23
- package/dist/beads.d.ts +0 -34
- package/dist/bin.d.ts +0 -2
- package/dist/board.d.ts +0 -134
- package/dist/boot-identity.d.ts +0 -64
- package/dist/bounded-spawn.d.ts +0 -57
- package/dist/brand-icons.d.ts +0 -168
- package/dist/brand-mark.d.ts +0 -28
- package/dist/brief-fence.d.ts +0 -9
- package/dist/browser-crew.d.ts +0 -12
- package/dist/browser-shell.d.ts +0 -9
- package/dist/browser-workspace.d.ts +0 -1972
- package/dist/budget-alerts.d.ts +0 -19
- package/dist/build-review.d.ts +0 -38
- package/dist/builder-restart.d.ts +0 -21
- package/dist/builder.d.ts +0 -409
- package/dist/canonical-json.d.ts +0 -14
- package/dist/capscan.d.ts +0 -35
- package/dist/card-catalog.d.ts +0 -209
- package/dist/card-cli.d.ts +0 -43
- package/dist/card-render.d.ts +0 -43
- package/dist/card-sources.d.ts +0 -68
- package/dist/chat-acceptance.d.ts +0 -74
- package/dist/chat-actions.d.ts +0 -460
- package/dist/chat-admission.d.ts +0 -19
- package/dist/chat-approval.d.ts +0 -58
- package/dist/chat-ask.d.ts +0 -32
- package/dist/chat-card-part.d.ts +0 -11
- package/dist/chat-card.d.ts +0 -46
- package/dist/chat-channel.d.ts +0 -126
- package/dist/chat-continuity.d.ts +0 -32
- package/dist/chat-controls.d.ts +0 -117
- package/dist/chat-core.d.ts +0 -177
- package/dist/chat-decide.d.ts +0 -269
- package/dist/chat-delivery-state.d.ts +0 -132
- package/dist/chat-delivery.d.ts +0 -71
- package/dist/chat-display.d.ts +0 -1
- package/dist/chat-evidence.d.ts +0 -123
- package/dist/chat-flow.d.ts +0 -70
- package/dist/chat-follow.d.ts +0 -20
- package/dist/chat-inbox.d.ts +0 -57
- package/dist/chat-live-schema.d.ts +0 -17
- package/dist/chat-live.d.ts +0 -161
- package/dist/chat-message-states.d.ts +0 -75
- package/dist/chat-messages.d.ts +0 -338
- package/dist/chat-migration.d.ts +0 -30
- package/dist/chat-polish.d.ts +0 -17
- package/dist/chat-quiet.d.ts +0 -40
- package/dist/chat-review.d.ts +0 -51
- package/dist/chat-rooms.d.ts +0 -123
- package/dist/chat-settings-page.d.ts +0 -43
- package/dist/chat-task-actions.d.ts +0 -59
- package/dist/chat-terms.d.ts +0 -29
- package/dist/chat-voice.d.ts +0 -69
- package/dist/chat-warmth.d.ts +0 -21
- package/dist/check-access.d.ts +0 -54
- package/dist/check-facts.d.ts +0 -126
- package/dist/check-failure.d.ts +0 -113
- package/dist/check-levels-ui.d.ts +0 -36
- package/dist/check-levels.d.ts +0 -70
- package/dist/check-load.d.ts +0 -85
- package/dist/check-only-standing.d.ts +0 -36
- package/dist/check-only.d.ts +0 -15
- package/dist/check-progress.d.ts +0 -78
- package/dist/check-repair.d.ts +0 -47
- package/dist/check-report.d.ts +0 -177
- package/dist/check-stamp.d.ts +0 -46
- package/dist/checkout-cleanup.d.ts +0 -157
- package/dist/checkout-proof.d.ts +0 -28
- package/dist/child-database.d.ts +0 -12
- package/dist/claim.d.ts +0 -627
- package/dist/claude-print.d.ts +0 -12
- package/dist/cli-fast.d.ts +0 -8
- package/dist/cli-help.d.ts +0 -8
- package/dist/cli-http.d.ts +0 -58
- package/dist/cli.d.ts +0 -149
- package/dist/code-extract.d.ts +0 -44
- package/dist/code-map-acts.d.ts +0 -24
- package/dist/code-map-admission.d.ts +0 -52
- package/dist/code-map-build.d.ts +0 -63
- package/dist/code-map-cli.d.ts +0 -153
- package/dist/code-map-main.d.ts +0 -1
- package/dist/code-map-read.d.ts +0 -106
- package/dist/code-map-report.d.ts +0 -37
- package/dist/code-map-shape.d.ts +0 -172
- package/dist/code-map-store.d.ts +0 -136
- package/dist/codex-limits.d.ts +0 -15
- package/dist/coding-context.d.ts +0 -18
- package/dist/coding-handoff.d.ts +0 -39
- package/dist/coding-provider.d.ts +0 -88
- package/dist/coding-shipping-ui.d.ts +0 -5
- package/dist/coding-types.d.ts +0 -16
- package/dist/coding-ui.d.ts +0 -19
- package/dist/coding-update.d.ts +0 -28
- package/dist/coding-workspace.d.ts +0 -141
- package/dist/commit-extract.d.ts +0 -135
- package/dist/connect-cli.d.ts +0 -34
- package/dist/console-chrome.d.ts +0 -41
- package/dist/console-instance.d.ts +0 -157
- package/dist/container-state.d.ts +0 -5
- package/dist/containment.d.ts +0 -205
- package/dist/contract-changes.d.ts +0 -52
- package/dist/contracts/acceptance-terms.d.ts +0 -14
- package/dist/contracts/chat-actions.d.ts +0 -465
- package/dist/contracts/chat-callback-rows.d.ts +0 -59
- package/dist/contracts/chat-card.d.ts +0 -91
- package/dist/contracts/chat-content.d.ts +0 -551
- package/dist/contracts/chat-tables.d.ts +0 -12
- package/dist/contracts/cli.d.ts +0 -987
- package/dist/contracts/coding-activity.d.ts +0 -64
- package/dist/contracts/coding-context.d.ts +0 -97
- package/dist/contracts/coding-handoff.d.ts +0 -44
- package/dist/contracts/coding-workspace.d.ts +0 -165
- package/dist/contracts/console-api.d.ts +0 -539
- package/dist/contracts/contract-test.d.ts +0 -45
- package/dist/contracts/contract.d.ts +0 -92
- package/dist/contracts/decision.d.ts +0 -45
- package/dist/contracts/diff-stat.d.ts +0 -58
- package/dist/contracts/discord-callback.d.ts +0 -45
- package/dist/contracts/flow-card.d.ts +0 -53
- package/dist/contracts/flow-propose.d.ts +0 -334
- package/dist/contracts/flow-send.d.ts +0 -245
- package/dist/contracts/flow.d.ts +0 -19565
- package/dist/contracts/gateway-tools.d.ts +0 -472
- package/dist/contracts/handoff.d.ts +0 -91
- package/dist/contracts/health.d.ts +0 -82
- package/dist/contracts/integration-metadata.d.ts +0 -100
- package/dist/contracts/lead-context.d.ts +0 -165
- package/dist/contracts/lead-tools.d.ts +0 -2312
- package/dist/contracts/mcp-oauth.d.ts +0 -53
- package/dist/contracts/memory-pass.d.ts +0 -157
- package/dist/contracts/model-catalog.d.ts +0 -21
- package/dist/contracts/observation-request.d.ts +0 -37
- package/dist/contracts/plan.d.ts +0 -58
- package/dist/contracts/project-knowledge.d.ts +0 -159
- package/dist/contracts/project-memory.d.ts +0 -119
- package/dist/contracts/project-skills.d.ts +0 -120
- package/dist/contracts/proof.d.ts +0 -136
- package/dist/contracts/provider.d.ts +0 -40
- package/dist/contracts/recipes.d.ts +0 -166
- package/dist/contracts/release-check.d.ts +0 -371
- package/dist/contracts/release-terms.d.ts +0 -107
- package/dist/contracts/retention.d.ts +0 -42
- package/dist/contracts/review-findings.d.ts +0 -46
- package/dist/contracts/route-results.d.ts +0 -121
- package/dist/contracts/route.d.ts +0 -897
- package/dist/contracts/scope.d.ts +0 -105
- package/dist/contracts/scout-report.d.ts +0 -234
- package/dist/contracts/slack-callback.d.ts +0 -43
- package/dist/contracts/sort-answer.d.ts +0 -83
- package/dist/contracts/stage-output.d.ts +0 -127
- package/dist/contracts/storage.d.ts +0 -37
- package/dist/contracts/store-json.d.ts +0 -313
- package/dist/contracts/subagent-turn.d.ts +0 -43
- package/dist/contracts/task-sizing.d.ts +0 -24
- package/dist/contracts/teams-callback.d.ts +0 -13
- package/dist/contracts/telegram-callback.d.ts +0 -120
- package/dist/contracts/trigger-payloads.d.ts +0 -389
- package/dist/contracts/update-journal.d.ts +0 -254
- package/dist/contracts/verification-receipt.d.ts +0 -200
- package/dist/contracts/verification-view.d.ts +0 -102
- package/dist/contracts/youiyoux-request.d.ts +0 -248
- package/dist/control-setup.d.ts +0 -44
- package/dist/control-ui.d.ts +0 -37
- package/dist/controller-service.d.ts +0 -1
- package/dist/controller-supervisor.d.ts +0 -38
- package/dist/converse.d.ts +0 -316
- package/dist/coordinator-proposals.d.ts +0 -29
- package/dist/coordinator.d.ts +0 -186
- package/dist/credentials-ui.d.ts +0 -33
- package/dist/daemon.d.ts +0 -226
- package/dist/database-reclaim.d.ts +0 -4
- package/dist/decision.d.ts +0 -119
- package/dist/demo-chat.d.ts +0 -32
- package/dist/demo.d.ts +0 -153
- package/dist/deploy-gate.d.ts +0 -20
- package/dist/deploy-lock.d.ts +0 -8
- package/dist/deploy-phase.d.ts +0 -37
- package/dist/deploy-rescue.d.ts +0 -42
- package/dist/deprecations.d.ts +0 -20
- package/dist/design/kit.d.ts +0 -216
- package/dist/desktop-access.d.ts +0 -28
- package/dist/desktop-bundle.d.ts +0 -16
- package/dist/desktop-host.d.ts +0 -54
- package/dist/desktop-update-gate.d.ts +0 -12
- package/dist/desktop-update-recovery.d.ts +0 -14
- package/dist/desktop-update.d.ts +0 -147
- package/dist/digest-times.d.ts +0 -3
- package/dist/disclosure.d.ts +0 -6
- package/dist/discord-api.d.ts +0 -24
- package/dist/discord-chat.d.ts +0 -27
- package/dist/discord-settings.d.ts +0 -4
- package/dist/discord.d.ts +0 -10
- package/dist/discover.d.ts +0 -75
- package/dist/dispatch.d.ts +0 -123
- package/dist/dispose.d.ts +0 -194
- package/dist/doctor.d.ts +0 -67
- package/dist/easy-start-args.d.ts +0 -13
- package/dist/easy-start.d.ts +0 -77
- package/dist/egress.d.ts +0 -121
- package/dist/email-settings.d.ts +0 -34
- package/dist/envelope.d.ts +0 -47
- package/dist/eval-gate.d.ts +0 -51
- package/dist/eval-hooks.d.ts +0 -94
- package/dist/eval-oracle-main.d.ts +0 -1
- package/dist/eval-oracle.d.ts +0 -60
- package/dist/eval-world.d.ts +0 -17
- package/dist/evals.d.ts +0 -299
- package/dist/evidence-pack.d.ts +0 -186
- package/dist/evidence-pair.d.ts +0 -53
- package/dist/evidence.d.ts +0 -371
- package/dist/exec.d.ts +0 -355
- package/dist/exhaustion.d.ts +0 -58
- package/dist/export-ui.d.ts +0 -11
- package/dist/export.d.ts +0 -48
- package/dist/failing-first.d.ts +0 -31
- package/dist/fallback-schema.d.ts +0 -8
- package/dist/fallback.d.ts +0 -138
- package/dist/fast-start.d.ts +0 -213
- package/dist/fast-terms.d.ts +0 -9
- package/dist/fenced-check-coverage.d.ts +0 -62
- package/dist/findings.d.ts +0 -224
- package/dist/first-run.d.ts +0 -197
- package/dist/first-tasks-child.d.ts +0 -1
- package/dist/flaky-ci.d.ts +0 -31
- package/dist/flaky-cli.d.ts +0 -60
- package/dist/flaky.d.ts +0 -83
- package/dist/fleet-schema.d.ts +0 -17
- package/dist/flow-actions.d.ts +0 -79
- package/dist/flow-browser.d.ts +0 -103
- package/dist/flow-cadence.d.ts +0 -48
- package/dist/flow-card-task.d.ts +0 -11
- package/dist/flow-changed.d.ts +0 -14
- package/dist/flow-code.d.ts +0 -84
- package/dist/flow-draft.d.ts +0 -42
- package/dist/flow-engine.d.ts +0 -82
- package/dist/flow-gallery-ui.d.ts +0 -73
- package/dist/flow-gallery.d.ts +0 -147
- package/dist/flow-insights.d.ts +0 -104
- package/dist/flow-items.d.ts +0 -37
- package/dist/flow-live.d.ts +0 -16
- package/dist/flow-people.d.ts +0 -23
- package/dist/flow-pull-request.d.ts +0 -14
- package/dist/flow-replies.d.ts +0 -48
- package/dist/flow-result-card.d.ts +0 -22
- package/dist/flow-schedule.d.ts +0 -154
- package/dist/flow-scripts.d.ts +0 -31
- package/dist/flow-secrets.d.ts +0 -13
- package/dist/flow-send.d.ts +0 -54
- package/dist/flow-share.d.ts +0 -78
- package/dist/flow-sort.d.ts +0 -63
- package/dist/flow-starters-ui.d.ts +0 -15
- package/dist/flow-starters.d.ts +0 -63
- package/dist/flow-steps.d.ts +0 -52
- package/dist/flow-triggers.d.ts +0 -303
- package/dist/flow-unattended-words.d.ts +0 -48
- package/dist/flow-unattended.d.ts +0 -259
- package/dist/flows-cli.d.ts +0 -358
- package/dist/flows-ui.d.ts +0 -70
- package/dist/flows.d.ts +0 -136
- package/dist/folder-gate.d.ts +0 -32
- package/dist/folder-look.d.ts +0 -110
- package/dist/follow-through-brief.d.ts +0 -12
- package/dist/follow-through-cli.d.ts +0 -23
- package/dist/fonts.d.ts +0 -19
- package/dist/gaps.d.ts +0 -35
- package/dist/gate-failure.d.ts +0 -40
- package/dist/git-floor.d.ts +0 -16
- package/dist/git-incident.d.ts +0 -65
- package/dist/git-views.d.ts +0 -20
- package/dist/git.d.ts +0 -54
- package/dist/github-import.d.ts +0 -62
- package/dist/github-jobs.d.ts +0 -25
- package/dist/google-mail.d.ts +0 -59
- package/dist/grant.d.ts +0 -136
- package/dist/graph.d.ts +0 -164
- package/dist/guides.d.ts +0 -22
- package/dist/handover-note.d.ts +0 -33
- package/dist/health-cli.d.ts +0 -3
- package/dist/home-groups.d.ts +0 -39
- package/dist/html.d.ts +0 -85
- package/dist/install-method.d.ts +0 -17
- package/dist/integrations-ui.d.ts +0 -17
- package/dist/integrations.d.ts +0 -138
- package/dist/invoke.d.ts +0 -228
- package/dist/is-record.d.ts +0 -2
- package/dist/issues.d.ts +0 -41
- package/dist/jsonl-discriminants.d.ts +0 -11
- package/dist/keymap.d.ts +0 -41
- package/dist/keys.d.ts +0 -108
- package/dist/kits-ui.d.ts +0 -16
- package/dist/kits.d.ts +0 -88
- package/dist/knowledge-cli.d.ts +0 -132
- package/dist/knowledge-ui.d.ts +0 -45
- package/dist/landed-cleanup.d.ts +0 -175
- package/dist/laptop-background.d.ts +0 -187
- package/dist/laptop-service.d.ts +0 -111
- package/dist/latency-timeline.d.ts +0 -46
- package/dist/lead-about.d.ts +0 -35
- package/dist/lead-answer-eval.d.ts +0 -93
- package/dist/lead-capabilities.d.ts +0 -57
- package/dist/lead-cli-live.d.ts +0 -56
- package/dist/lead-cli.d.ts +0 -58
- package/dist/lead-commitments.d.ts +0 -84
- package/dist/lead-context.d.ts +0 -45
- package/dist/lead-contract.d.ts +0 -10
- package/dist/lead-doors.d.ts +0 -122
- package/dist/lead-follow.d.ts +0 -26
- package/dist/lead-identity.d.ts +0 -23
- package/dist/lead-latency-schema.d.ts +0 -24
- package/dist/lead-people.d.ts +0 -55
- package/dist/lead-progress.d.ts +0 -67
- package/dist/lead-queue-runtime.d.ts +0 -46
- package/dist/lead-queue.d.ts +0 -104
- package/dist/lead-route.d.ts +0 -56
- package/dist/lead-status.d.ts +0 -116
- package/dist/lead-sweep.d.ts +0 -67
- package/dist/lead-tools.d.ts +0 -167
- package/dist/lead-voice.d.ts +0 -85
- package/dist/lead.d.ts +0 -142
- package/dist/learning-child.d.ts +0 -1
- package/dist/learning-look.d.ts +0 -25
- package/dist/ledger-chain.d.ts +0 -46
- package/dist/ledger-csv.d.ts +0 -4
- package/dist/ledger-view.d.ts +0 -27
- package/dist/lesson-notes.d.ts +0 -81
- package/dist/limits-ui.d.ts +0 -34
- package/dist/link.d.ts +0 -72
- package/dist/live-backup.d.ts +0 -39
- package/dist/live-bus.d.ts +0 -141
- package/dist/live-children-read.d.ts +0 -52
- package/dist/live-children.d.ts +0 -73
- package/dist/live-detail.d.ts +0 -27
- package/dist/live-input.d.ts +0 -68
- package/dist/live-main-read.d.ts +0 -19
- package/dist/live-notes.d.ts +0 -20
- package/dist/live-open.d.ts +0 -28
- package/dist/live-records.d.ts +0 -149
- package/dist/live-reply.d.ts +0 -83
- package/dist/live-terminal.d.ts +0 -273
- package/dist/live.d.ts +0 -152
- package/dist/local-owner.d.ts +0 -124
- package/dist/log.d.ts +0 -7
- package/dist/login-secrets.d.ts +0 -60
- package/dist/machine-check.d.ts +0 -16
- package/dist/machine-identity.d.ts +0 -75
- package/dist/mailbox.d.ts +0 -57
- package/dist/maintenance.d.ts +0 -13
- package/dist/mcp-connect.d.ts +0 -181
- package/dist/mcp-core.d.ts +0 -110
- package/dist/mcp-http.d.ts +0 -32
- package/dist/mcp-oauth.d.ts +0 -92
- package/dist/mcp-person.d.ts +0 -22
- package/dist/mcp.d.ts +0 -20
- package/dist/memory-cli.d.ts +0 -768
- package/dist/memory-pass.d.ts +0 -151
- package/dist/memory-tidy.d.ts +0 -181
- package/dist/memory-use.d.ts +0 -35
- package/dist/merge-checklist.d.ts +0 -55
- package/dist/metrics.d.ts +0 -6
- package/dist/mobile-viewport.d.ts +0 -7
- package/dist/model-catalog.d.ts +0 -123
- package/dist/model-choices.d.ts +0 -235
- package/dist/model-names.d.ts +0 -6
- package/dist/models-cli.d.ts +0 -307
- package/dist/models-ui.d.ts +0 -161
- package/dist/modes.d.ts +0 -99
- package/dist/monitoring-settings.d.ts +0 -44
- package/dist/monitoring-ui.d.ts +0 -23
- package/dist/monitoring.d.ts +0 -34
- package/dist/names.d.ts +0 -67
- package/dist/needs-you.d.ts +0 -164
- package/dist/never-index.d.ts +0 -3
- package/dist/nightly-check.d.ts +0 -107
- package/dist/nightly-github.d.ts +0 -318
- package/dist/notification-delivery.d.ts +0 -19
- package/dist/notification-rows.d.ts +0 -30
- package/dist/oauth-run-token.d.ts +0 -51
- package/dist/observations.d.ts +0 -36
- package/dist/oidc.d.ts +0 -71
- package/dist/onboard.d.ts +0 -108
- package/dist/one-step-chat-schema.d.ts +0 -22
- package/dist/openrouter-models.d.ts +0 -34
- package/dist/operate-remote-arguments.d.ts +0 -36
- package/dist/operate-remote.d.ts +0 -98
- package/dist/operate.d.ts +0 -401
- package/dist/orphan-sweep.d.ts +0 -65
- package/dist/page-work-contract.d.ts +0 -21
- package/dist/password-bearer.d.ts +0 -25
- package/dist/passwordless.d.ts +0 -23
- package/dist/peek-cli.d.ts +0 -112
- package/dist/peek.d.ts +0 -110
- package/dist/people-audit-ui.d.ts +0 -16
- package/dist/person-proof.d.ts +0 -2
- package/dist/phase-routing.d.ts +0 -401
- package/dist/plain-schema.d.ts +0 -23
- package/dist/plain-words.d.ts +0 -20
- package/dist/plan-auto.d.ts +0 -25
- package/dist/plan-login.d.ts +0 -14
- package/dist/plan.d.ts +0 -188
- package/dist/plane-review.d.ts +0 -54
- package/dist/planner-source.d.ts +0 -225
- package/dist/planner.d.ts +0 -76
- package/dist/policy-ui.d.ts +0 -22
- package/dist/policy.d.ts +0 -92
- package/dist/prepared-evidence.d.ts +0 -17
- package/dist/principal.d.ts +0 -42
- package/dist/probe.d.ts +0 -46
- package/dist/process-custody.d.ts +0 -17
- package/dist/process-liveness.d.ts +0 -13
- package/dist/process-tree.d.ts +0 -39
- package/dist/project-access.d.ts +0 -17
- package/dist/project-activity.d.ts +0 -20
- package/dist/project-admission.d.ts +0 -105
- package/dist/project-cli.d.ts +0 -19
- package/dist/project-concurrency.d.ts +0 -62
- package/dist/project-delete-ui.d.ts +0 -96
- package/dist/project-delete.d.ts +0 -59
- package/dist/project-demo.d.ts +0 -12
- package/dist/project-file.d.ts +0 -3
- package/dist/project-identity.d.ts +0 -52
- package/dist/project-knowledge.d.ts +0 -124
- package/dist/project-learning.d.ts +0 -120
- package/dist/project-memory.d.ts +0 -70
- package/dist/project-outcomes.d.ts +0 -119
- package/dist/project-sandbox.d.ts +0 -59
- package/dist/project-skills.d.ts +0 -139
- package/dist/project-tools.d.ts +0 -318
- package/dist/project.d.ts +0 -65
- package/dist/prompt.d.ts +0 -33
- package/dist/proof.d.ts +0 -457
- package/dist/proposal.d.ts +0 -70
- package/dist/protected-storage-look.d.ts +0 -1
- package/dist/protected-storage.d.ts +0 -98
- package/dist/provider-auth.d.ts +0 -143
- package/dist/provider-capture.d.ts +0 -34
- package/dist/provider-connection.d.ts +0 -23
- package/dist/provider-home.d.ts +0 -22
- package/dist/provider-limits.d.ts +0 -37
- package/dist/provider.d.ts +0 -369
- package/dist/public-access.d.ts +0 -52
- package/dist/public-check.d.ts +0 -37
- package/dist/publish.d.ts +0 -146
- package/dist/pull-request-flow.d.ts +0 -189
- package/dist/pull-request-schema.d.ts +0 -5
- package/dist/pull-request-ui.d.ts +0 -25
- package/dist/pulls.d.ts +0 -121
- package/dist/push.d.ts +0 -120
- package/dist/quality.d.ts +0 -8
- package/dist/quick-start.d.ts +0 -26
- package/dist/read-executor-worker.d.ts +0 -1
- package/dist/read-executor.d.ts +0 -66
- package/dist/read-only-request.d.ts +0 -4
- package/dist/recipe-ui.d.ts +0 -21
- package/dist/recipes.d.ts +0 -56
- package/dist/release-adapters.d.ts +0 -205
- package/dist/release-approval.d.ts +0 -180
- package/dist/release-authority.d.ts +0 -173
- package/dist/release-auto.d.ts +0 -184
- package/dist/release-card.d.ts +0 -156
- package/dist/release-carry.d.ts +0 -261
- package/dist/release-ci-hold.d.ts +0 -41
- package/dist/release-cli.d.ts +0 -34
- package/dist/release-coverage.d.ts +0 -16
- package/dist/release-gate.d.ts +0 -84
- package/dist/release-git.d.ts +0 -43
- package/dist/release-links.d.ts +0 -29
- package/dist/release-net.d.ts +0 -90
- package/dist/release-next.d.ts +0 -48
- package/dist/release-recheck.d.ts +0 -146
- package/dist/release-refusal.d.ts +0 -32
- package/dist/release-view.d.ts +0 -37
- package/dist/release.d.ts +0 -806
- package/dist/releases.d.ts +0 -94
- package/dist/remote-audit.d.ts +0 -79
- package/dist/remote-command.d.ts +0 -45
- package/dist/remote-destination.d.ts +0 -36
- package/dist/remote-exec.d.ts +0 -38
- package/dist/remote-main.d.ts +0 -111
- package/dist/remote-run.d.ts +0 -20
- package/dist/remote.d.ts +0 -67
- package/dist/render.d.ts +0 -64
- package/dist/reply-shape.d.ts +0 -106
- package/dist/reply-voice.d.ts +0 -23
- package/dist/report-summary.d.ts +0 -22
- package/dist/reported-usage.d.ts +0 -69
- package/dist/repos.d.ts +0 -67
- package/dist/repository-context-ui.d.ts +0 -3
- package/dist/repository-context.d.ts +0 -66
- package/dist/request-budget-ui.d.ts +0 -14
- package/dist/request-budget.d.ts +0 -127
- package/dist/restart-certification.d.ts +0 -133
- package/dist/result-actions.d.ts +0 -36
- package/dist/result-acts.d.ts +0 -112
- package/dist/result-completion.d.ts +0 -35
- package/dist/result-evidence-readers.d.ts +0 -42
- package/dist/result-follow-ups.d.ts +0 -118
- package/dist/result-review.d.ts +0 -220
- package/dist/result-shots.d.ts +0 -59
- package/dist/retention-ui.d.ts +0 -21
- package/dist/retention.d.ts +0 -77
- package/dist/review-context.d.ts +0 -245
- package/dist/review-evidence.d.ts +0 -33
- package/dist/review-switch.d.ts +0 -36
- package/dist/reviewer.d.ts +0 -99
- package/dist/route-change-check.d.ts +0 -4
- package/dist/route-change.d.ts +0 -22
- package/dist/route-hooks.d.ts +0 -54
- package/dist/route-results.d.ts +0 -75
- package/dist/route-rules.d.ts +0 -324
- package/dist/route-savings.d.ts +0 -136
- package/dist/route-store.d.ts +0 -300
- package/dist/run-closeout.d.ts +0 -89
- package/dist/run-efficiency.d.ts +0 -74
- package/dist/run-ending.d.ts +0 -21
- package/dist/runner-process.d.ts +0 -76
- package/dist/runner.d.ts +0 -324
- package/dist/sample-project.d.ts +0 -31
- package/dist/sandbox-launch.d.ts +0 -1
- package/dist/sandbox-runtime.d.ts +0 -128
- package/dist/scan.d.ts +0 -32
- package/dist/scope.d.ts +0 -1067
- package/dist/scout-browser-lock.d.ts +0 -69
- package/dist/scout-browser.d.ts +0 -107
- package/dist/scout-net.d.ts +0 -25
- package/dist/scout-report.d.ts +0 -23
- package/dist/scout.d.ts +0 -142
- package/dist/secret-mint.d.ts +0 -1
- package/dist/serve.d.ts +0 -11
- package/dist/server/agents-computers.d.ts +0 -9
- package/dist/server/agents-live-filed.d.ts +0 -17
- package/dist/server/agents-live-lead.d.ts +0 -47
- package/dist/server/agents-live-room.d.ts +0 -23
- package/dist/server/chat.d.ts +0 -39
- package/dist/server/chrome.d.ts +0 -328
- package/dist/server/edge-refusal.d.ts +0 -7
- package/dist/server/flows.d.ts +0 -8
- package/dist/server/guards.d.ts +0 -80
- package/dist/server/handler-context.d.ts +0 -22
- package/dist/server/handler-registry.d.ts +0 -23
- package/dist/server/home-asks.d.ts +0 -45
- package/dist/server/home.d.ts +0 -65
- package/dist/server/http.d.ts +0 -337
- package/dist/server/in-place.d.ts +0 -15
- package/dist/server/kit-standalone.d.ts +0 -22
- package/dist/server/kit.d.ts +0 -452
- package/dist/server/last-checks.d.ts +0 -17
- package/dist/server/live.d.ts +0 -74
- package/dist/server/merge-ready-view.d.ts +0 -10
- package/dist/server/mutation-key.d.ts +0 -70
- package/dist/server/pages-assets.d.ts +0 -11
- package/dist/server/pages.d.ts +0 -8
- package/dist/server/people-tokens.d.ts +0 -18
- package/dist/server/remote-hooks.d.ts +0 -29
- package/dist/server/remote.d.ts +0 -59
- package/dist/server/render-chat.d.ts +0 -439
- package/dist/server/render-code-map.d.ts +0 -30
- package/dist/server/render-flaky.d.ts +0 -20
- package/dist/server/render-follow-through.d.ts +0 -11
- package/dist/server/render-history.d.ts +0 -51
- package/dist/server/render-new-task.d.ts +0 -54
- package/dist/server/render-pages.d.ts +0 -236
- package/dist/server/render-people.d.ts +0 -102
- package/dist/server/render-projects.d.ts +0 -104
- package/dist/server/render-release.d.ts +0 -19
- package/dist/server/render-results.d.ts +0 -754
- package/dist/server/render-settings.d.ts +0 -93
- package/dist/server/render-tasks.d.ts +0 -774
- package/dist/server/request-context.d.ts +0 -78
- package/dist/server/retired-routes.d.ts +0 -17
- package/dist/server/route-policy.d.ts +0 -18
- package/dist/server/route-table.d.ts +0 -114
- package/dist/server/runtime.d.ts +0 -342
- package/dist/server/session.d.ts +0 -192
- package/dist/server/settings.d.ts +0 -76
- package/dist/server/signup-gate.d.ts +0 -9
- package/dist/server/sweeps.d.ts +0 -4
- package/dist/server/task-views.d.ts +0 -98
- package/dist/server/tasks.d.ts +0 -83
- package/dist/server/terminals.d.ts +0 -31
- package/dist/server/welcome.d.ts +0 -28
- package/dist/server-telemetry.d.ts +0 -87
- package/dist/settings-groups-ui.d.ts +0 -286
- package/dist/settings-kit-script.d.ts +0 -21
- package/dist/settings-kit.d.ts +0 -173
- package/dist/settings-proofs.d.ts +0 -64
- package/dist/setup-guide.d.ts +0 -39
- package/dist/shared-deps.d.ts +0 -115
- package/dist/sign-in-guard.d.ts +0 -70
- package/dist/skills-ui.d.ts +0 -12
- package/dist/skills.d.ts +0 -99
- package/dist/slack-api.d.ts +0 -59
- package/dist/slack-chat.d.ts +0 -37
- package/dist/slack-settings.d.ts +0 -4
- package/dist/slack-socket.d.ts +0 -12
- package/dist/slack.d.ts +0 -6
- package/dist/sleep.d.ts +0 -2
- package/dist/source-key.d.ts +0 -2
- package/dist/spend-report.d.ts +0 -87
- package/dist/spend-ui.d.ts +0 -80
- package/dist/spend.d.ts +0 -142
- package/dist/sqlite-runtime.d.ts +0 -3
- package/dist/sqlite-telemetry.d.ts +0 -9
- package/dist/sso-settings.d.ts +0 -33
- package/dist/sso-ui.d.ts +0 -26
- package/dist/staged-runtimes.d.ts +0 -54
- package/dist/steer-capabilities.d.ts +0 -32
- package/dist/steer-controls.d.ts +0 -14
- package/dist/steer-live.d.ts +0 -19
- package/dist/steer-mailbox.d.ts +0 -46
- package/dist/steer-status.d.ts +0 -25
- package/dist/stop-proof.d.ts +0 -67
- package/dist/storage-sweep-child.d.ts +0 -1
- package/dist/storage-sweep-process.d.ts +0 -55
- package/dist/storage-sweep-schedule.d.ts +0 -30
- package/dist/storage-sweep.d.ts +0 -77
- package/dist/storage-ui.d.ts +0 -23
- package/dist/storage.d.ts +0 -68
- package/dist/store-baseline.d.ts +0 -19
- package/dist/store.d.ts +0 -8613
- package/dist/stream-scope.d.ts +0 -18
- package/dist/structured-output.d.ts +0 -57
- package/dist/style-asset.d.ts +0 -7
- package/dist/subagent-admin.d.ts +0 -53
- package/dist/subagent-desk.d.ts +0 -59
- package/dist/subagent-memory.d.ts +0 -65
- package/dist/subagent-question.d.ts +0 -59
- package/dist/subagent-tools.d.ts +0 -125
- package/dist/subagent-week.d.ts +0 -68
- package/dist/subagent-work.d.ts +0 -76
- package/dist/subagents-ui.d.ts +0 -22
- package/dist/subagents.d.ts +0 -146
- package/dist/subscription-chat.d.ts +0 -54
- package/dist/summary.d.ts +0 -33
- package/dist/surface.d.ts +0 -49
- package/dist/sweep-gate.d.ts +0 -10
- package/dist/sweep-quarantine.d.ts +0 -29
- package/dist/sync.d.ts +0 -94
- package/dist/tailnet.d.ts +0 -11
- package/dist/tamper-scan.d.ts +0 -4
- package/dist/task-activity.d.ts +0 -27
- package/dist/task-aliases.d.ts +0 -5
- package/dist/task-archive.d.ts +0 -13
- package/dist/task-base.d.ts +0 -39
- package/dist/task-composer.d.ts +0 -14
- package/dist/task-control.d.ts +0 -159
- package/dist/task-live.d.ts +0 -8
- package/dist/task-moves.d.ts +0 -90
- package/dist/task-outcome-cli.d.ts +0 -30
- package/dist/task-review-brief.d.ts +0 -69
- package/dist/task-sizing.d.ts +0 -58
- package/dist/task-source.d.ts +0 -77
- package/dist/task-status.d.ts +0 -324
- package/dist/task-text.d.ts +0 -31
- package/dist/team-chat-authorization.d.ts +0 -11
- package/dist/team-contract.d.ts +0 -103
- package/dist/team-http.d.ts +0 -25
- package/dist/team-leads.d.ts +0 -85
- package/dist/team-runtime.d.ts +0 -25
- package/dist/team-ui.d.ts +0 -4
- package/dist/team-updates.d.ts +0 -8
- package/dist/teams-api.d.ts +0 -33
- package/dist/teams-chat.d.ts +0 -36
- package/dist/teams-settings.d.ts +0 -14
- package/dist/teams.d.ts +0 -24
- package/dist/teardown-git.d.ts +0 -164
- package/dist/telegram-flow.d.ts +0 -112
- package/dist/telegram-lead.d.ts +0 -151
- package/dist/telegram-live.d.ts +0 -116
- package/dist/telegram-progress.d.ts +0 -20
- package/dist/telegram-settings.d.ts +0 -9
- package/dist/telegram-status.d.ts +0 -83
- package/dist/telegram-team.d.ts +0 -68
- package/dist/telegram.d.ts +0 -271
- package/dist/templates.d.ts +0 -69
- package/dist/terminal-catalog.d.ts +0 -11
- package/dist/terminal-text.d.ts +0 -11
- package/dist/test-infra.d.ts +0 -34
- package/dist/test-temp.d.ts +0 -40
- package/dist/text-limits.d.ts +0 -297
- package/dist/tidy.d.ts +0 -130
- package/dist/tier-report.d.ts +0 -44
- package/dist/token-notices.d.ts +0 -11
- package/dist/tokens-cli.d.ts +0 -21
- package/dist/tool-broker.d.ts +0 -52
- package/dist/tool-launcher.d.ts +0 -1
- package/dist/tool-secret-store.d.ts +0 -167
- package/dist/toolroll-update-cli.d.ts +0 -15
- package/dist/toolroll-update-ui.d.ts +0 -47
- package/dist/toolroll-update.d.ts +0 -265
- package/dist/tools-ui.d.ts +0 -51
- package/dist/transitions-recipes.d.ts +0 -1
- package/dist/tree-proof.d.ts +0 -34
- package/dist/tui-contract.d.ts +0 -144
- package/dist/tui-source.d.ts +0 -14
- package/dist/typed-start.d.ts +0 -51
- package/dist/unfenced-test-support.d.ts +0 -2
- package/dist/up-processes.d.ts +0 -162
- package/dist/up-role-child.d.ts +0 -1
- package/dist/update-notice.d.ts +0 -5
- package/dist/vanished-retry.d.ts +0 -30
- package/dist/verification-evidence.d.ts +0 -68
- package/dist/version.d.ts +0 -2
- package/dist/wake-hub.d.ts +0 -72
- package/dist/webhook-limits.d.ts +0 -23
- package/dist/webhook-readers.d.ts +0 -56
- package/dist/webhook-signing.d.ts +0 -27
- package/dist/webhooks.d.ts +0 -84
- package/dist/welcome-facts.d.ts +0 -18
- package/dist/when-html.d.ts +0 -40
- package/dist/work-index.d.ts +0 -175
- package/dist/work-summary.d.ts +0 -61
- package/dist/workspace-motion.d.ts +0 -4
- package/dist/workspace-revision.d.ts +0 -48
- package/dist/workspace-ui.d.ts +0 -385
- package/dist/worktree-notices.d.ts +0 -13
- package/dist/worktree.d.ts +0 -365
- package/dist/writes-mode.d.ts +0 -9
- package/dist/youiyoux-intake.d.ts +0 -234
package/dist/worktree.js
CHANGED
|
@@ -1,27 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The pool of working copies, and the leases over them.
|
|
3
|
-
*
|
|
4
|
-
* Semantics copied from treehouse rather than reinvented, including the two
|
|
5
|
-
* rules that are easy to get wrong and expensive to get wrong quietly:
|
|
6
|
-
*
|
|
7
|
-
* **Untracked files count as dirty.** A repository whose `.gitignore` hides
|
|
8
|
-
* build output is still a repository with somebody's work in it, and a pool
|
|
9
|
-
* that recycles a directory because `git status` looked clean under the
|
|
10
|
-
* operator's config will delete something they wanted. So the check is run
|
|
11
|
-
* with ignored files excluded but untracked files included, which is the
|
|
12
|
-
* conservative reading of "is anyone using this".
|
|
13
|
-
*
|
|
14
|
-
* **Reconstructed state is leased-until-verified.** A worktree found on disk
|
|
15
|
-
* after a crash describes what a dead process was doing, not what is true now.
|
|
16
|
-
* It comes back into the pool marked unverified, and something has to look at
|
|
17
|
-
* it before it is handed to anybody.
|
|
18
|
-
*
|
|
19
|
-
* Where the pool lives is a decision, not a detail. Worktrees are created
|
|
20
|
-
* outside the repository — never inside it, where they would appear as
|
|
21
|
-
* untracked directories in the operator's own `git status`, and never inside a
|
|
22
|
-
* synced folder like OneDrive or Dropbox, where a sync client racing an agent
|
|
23
|
-
* over `.git` internals corrupts both.
|
|
24
|
-
*/
|
|
25
1
|
import { INCIDENT_QUIET_MS, recentGitIncident } from "./git-incident.js";
|
|
26
2
|
import { createHash, randomBytes } from "node:crypto";
|
|
27
3
|
import { existsSync, lstatSync, readFileSync, writeFileSync, rmSync, realpathSync, mkdirSync, readdirSync, renameSync } from "node:fs";
|
|
@@ -36,24 +12,10 @@ import { diskBytes } from "./storage.js";
|
|
|
36
12
|
import { markNeverIndex } from "./never-index.js";
|
|
37
13
|
import { endedInterrupted } from "./run-ending.js";
|
|
38
14
|
import { checkoutGit, gitIncidentRecord, teardownGit } from "./teardown-git.js";
|
|
39
|
-
/**
|
|
40
|
-
* The note a lease leaves in the checkout, naming the process holding it.
|
|
41
|
-
*
|
|
42
|
-
* Deliberately inside the worktree rather than beside it: it travels with the
|
|
43
|
-
* directory, and `git status` will show it as untracked, which is honest —
|
|
44
|
-
* something is in there.
|
|
45
|
-
*/
|
|
46
15
|
export const MARKER = ".standing-orders-lease";
|
|
47
|
-
/**
|
|
48
|
-
* The reflog message of a branch Toolroll created, naming it: its creation entry is the proof, later, that the branch
|
|
49
|
-
* is Toolroll's and how old it is. A branch copied or renamed from it names the old branch, so it proves nothing.
|
|
50
|
-
*/
|
|
51
16
|
export const branchCreatedMessage = (branch) => `Toolroll created branch ${branch}`;
|
|
52
|
-
/** Scouts' disposable branches: never landed work. */
|
|
53
17
|
export const SCOUT_PREFIX = "toolroll-scout/";
|
|
54
|
-
/** Checkouts this process is leasing or removing right now: a lease and storage retention never overlap on one. */
|
|
55
18
|
const busy = new Map();
|
|
56
|
-
// Outside the checkout so removal cannot erase the reservation before git and the row update finish.
|
|
57
19
|
const reservationPath = (path) => `${path}.occupancy`;
|
|
58
20
|
function reservation(path) {
|
|
59
21
|
try {
|
|
@@ -66,7 +28,6 @@ function reservation(path) {
|
|
|
66
28
|
if (error.code === "ENOENT")
|
|
67
29
|
return null;
|
|
68
30
|
}
|
|
69
|
-
// An unreadable reservation is occupied, never a reason to delete someone's checkout.
|
|
70
31
|
return { pid: 0, host: "unknown", bootId: null, token: "unknown" };
|
|
71
32
|
}
|
|
72
33
|
function reservationAlive(note) {
|
|
@@ -82,8 +43,6 @@ function reservationAlive(note) {
|
|
|
82
43
|
return error.code !== "ESRCH";
|
|
83
44
|
}
|
|
84
45
|
}
|
|
85
|
-
/** A short store transaction arbitrates marker creation/recovery, never git, a scan or deletion.
|
|
86
|
-
* Atomic rename publishes a complete owner; a crash cannot leave a half-written reservation. */
|
|
87
46
|
function reserveCheckout(store, path) {
|
|
88
47
|
const note = { pid: process.pid, host: hostname(), bootId: currentBootId(), token: randomBytes(12).toString("hex"), machineId: currentMachineId() };
|
|
89
48
|
const file = reservationPath(path), temp = `${file}.${note.token}`;
|
|
@@ -109,37 +68,21 @@ function reserveCheckout(store, path) {
|
|
|
109
68
|
return () => store.transact(() => { if (reservation(path)?.token === note.token)
|
|
110
69
|
rmSync(file, { force: true }); });
|
|
111
70
|
}
|
|
112
|
-
/** What a kept checkout drops once its run ends (only where .gitignore hides it): dependencies and build output. */
|
|
113
71
|
export const SLIM_NAMES = ["node_modules", "dist", "build", "out", ".next", ".nuxt", ".svelte-kit", ".turbo", ".parcel-cache", "coverage", "target"];
|
|
114
|
-
/** Creating a worktree copies a tree; it is local work but not instant. */
|
|
115
72
|
export const WORKTREE_TIMEOUT_MS = 60_000;
|
|
116
73
|
const GIT = "git";
|
|
117
74
|
const READ_ONLY = ["--no-optional-locks"];
|
|
118
|
-
/**
|
|
119
|
-
* A path for this repository and branch that is stable across runs.
|
|
120
|
-
*
|
|
121
|
-
* Stable so that a second attempt at the same task reuses the checkout it
|
|
122
|
-
* already paid for, and flattened so a branch called `feat/a/b` cannot escape
|
|
123
|
-
* the pool root through its own slashes.
|
|
124
|
-
*/
|
|
125
75
|
export function worktreePath(root, repo, branch) {
|
|
126
|
-
// The readable part is for a person reading `ls`; the digest is what makes
|
|
127
|
-
// it correct. Flattening alone collides in two ways that both end with one
|
|
128
|
-
// task's work landing in another's checkout: `feat/a` and `feat-a` reduce to
|
|
129
|
-
// the same name, and `/x/api` and `/y/api` share a basename. The digest is
|
|
130
|
-
// taken over the full repository path and the exact branch, so neither can.
|
|
131
76
|
const digest = createHash("sha256")
|
|
132
77
|
.update(`${normalisePath(repo)}\u0000${branch}`, "utf8")
|
|
133
78
|
.digest("hex")
|
|
134
79
|
.slice(0, 8);
|
|
135
80
|
return join(root, safeSegment(basenameOf(repo)), `${safeSegment(branch)}-${digest}`);
|
|
136
81
|
}
|
|
137
|
-
/** The pool root a checkout at `path` of `repo` was made under (worktreePath's layout), or null for one it didn't make. */
|
|
138
82
|
export function poolRootOf(path, repo) {
|
|
139
83
|
const project = dirname(path);
|
|
140
84
|
return basename(project) === safeSegment(basenameOf(repo)) && /-[0-9a-f]{8}$/.test(basename(path)) ? dirname(project) : null;
|
|
141
85
|
}
|
|
142
|
-
/** Inspect names, not their destinations, before the plane writes into a pool. */
|
|
143
86
|
function safePoolPath(root, target) {
|
|
144
87
|
const base = resolve(root);
|
|
145
88
|
const rel = relative(base, resolve(target));
|
|
@@ -159,7 +102,6 @@ function safePoolPath(root, target) {
|
|
|
159
102
|
}
|
|
160
103
|
return true;
|
|
161
104
|
}
|
|
162
|
-
/** The checkout itself, strictly inside the pool as real paths, reached by real folders only: never a link out of it. */
|
|
163
105
|
function insidePool(root, path) {
|
|
164
106
|
if (!safePoolPath(root, path))
|
|
165
107
|
return false;
|
|
@@ -178,25 +120,19 @@ function basenameOf(repo) {
|
|
|
178
120
|
const parts = repo.replace(/\\/g, "/").replace(/\/+$/, "").split("/");
|
|
179
121
|
return parts[parts.length - 1] ?? "repo";
|
|
180
122
|
}
|
|
181
|
-
/** Anything that is not a plain name becomes one; no separators survive. */
|
|
182
123
|
function safeSegment(text) {
|
|
183
124
|
const cleaned = text.replace(/[^a-zA-Z0-9._-]+/g, "-").replace(/^[.-]+/, "");
|
|
184
125
|
return cleaned === "" ? "x" : cleaned;
|
|
185
126
|
}
|
|
186
|
-
/** Record a potentially writing subprocess against the original checkout lease. */
|
|
187
127
|
export function recordWorktreeProcess(store, path, runner, pid, leaseEpoch) {
|
|
188
128
|
const leased = store.getWorktree(path);
|
|
189
129
|
if (!Number.isInteger(pid) || pid <= 0 || leased === null || leased.releasedAt !== null || leased.runner !== runner ||
|
|
190
130
|
(leaseEpoch !== undefined && leased.leaseEpoch !== leaseEpoch)) {
|
|
191
131
|
throw new Error(`${path}: subprocess custody no longer matches its worktree lease`);
|
|
192
132
|
}
|
|
193
|
-
// The boot the holder was born under rides the note (v53): after a
|
|
194
|
-
// verified boot change nothing of it survives, and the checkout is free
|
|
195
|
-
// without a PID probe that a reused pid could answer wrongly.
|
|
196
133
|
const bootId = currentBootId();
|
|
197
134
|
writeFileSync(join(path, MARKER), `${pid} ${runner} group ${bootId ?? "unknown"} ${hostname()} ${currentMachineId() ?? "unknown"}\n`, "utf8");
|
|
198
135
|
}
|
|
199
|
-
/** Read-only occupancy witness shared with stop settlement. */
|
|
200
136
|
export function worktreeProcessOccupancy(path) {
|
|
201
137
|
const reserved = reservation(path);
|
|
202
138
|
if (reserved !== null && (reserved.pid !== process.pid || !isThisMachine(reserved)) && reservationAlive(reserved))
|
|
@@ -209,20 +145,14 @@ export function worktreeProcessOccupancy(path) {
|
|
|
209
145
|
if (!Number.isInteger(pid) || pid <= 0)
|
|
210
146
|
return { held: false };
|
|
211
147
|
const noteHost = parts[4];
|
|
212
|
-
// The sixth word (v150) is the writer's machine id; "unknown", or a note from before it, is matched by name.
|
|
213
148
|
const noteMachine = parts[5] === undefined || parts[5] === "unknown" ? null : parts[5];
|
|
214
149
|
if (noteHost !== undefined && !isThisMachine({ host: noteHost, machineId: noteMachine }))
|
|
215
150
|
return { held: true, by: pid };
|
|
216
151
|
if (pid === process.pid && parts[2] !== "group")
|
|
217
152
|
return { held: false };
|
|
218
|
-
// A note from a previous, VERIFIED boot of this host names a process
|
|
219
|
-
// that cannot exist any more; a note without a boot id (legacy) or a
|
|
220
|
-
// boot this host cannot verify keeps the probe below.
|
|
221
153
|
const noteBoot = parts[3];
|
|
222
154
|
if (noteBoot !== undefined && noteHost !== undefined && provenDeadByBootChange({ host: noteHost, bootId: noteBoot }, { host: noteHost, bootId: currentBootId() }))
|
|
223
155
|
return { held: false };
|
|
224
|
-
// A shell/provider can exit before its descendants. A recorded POSIX
|
|
225
|
-
// process group remains an owner until that whole group has gone.
|
|
226
156
|
if (parts[2] === "group" && process.platform !== "win32") {
|
|
227
157
|
try {
|
|
228
158
|
process.kill(-pid, 0);
|
|
@@ -238,21 +168,10 @@ export function worktreeProcessOccupancy(path) {
|
|
|
238
168
|
return { held: true, by: pid };
|
|
239
169
|
}
|
|
240
170
|
catch (error) {
|
|
241
|
-
// Two different answers hide behind one throw. ESRCH means the process
|
|
242
|
-
// is gone and the note is what it left behind. EPERM means it is very
|
|
243
|
-
// much alive and simply not ours to signal — running as another user, or
|
|
244
|
-
// elevated — and reading that as "gone" would hand somebody's live
|
|
245
|
-
// checkout to another runner. Only ESRCH frees it.
|
|
246
171
|
const code = error.code;
|
|
247
172
|
return code === "ESRCH" ? { held: false } : { held: true, by: pid };
|
|
248
173
|
}
|
|
249
174
|
}
|
|
250
|
-
/**
|
|
251
|
-
* A checkout's uncommitted work as one patch — tracked changes against HEAD,
|
|
252
|
-
* then each untracked file against nothing (the lease note aside) — written
|
|
253
|
-
* to `file`. Nothing in the checkout is touched. Every road that is about to
|
|
254
|
-
* reset or clean a tree saves this first.
|
|
255
|
-
*/
|
|
256
175
|
export async function saveWorkPatch(runner, path, file, header) {
|
|
257
176
|
const git = teardownGit(runner);
|
|
258
177
|
const status = await git(path, [...READ_ONLY, "status", "--porcelain", "--untracked-files=all", "--ignore-submodules=all"]);
|
|
@@ -267,7 +186,6 @@ export async function saveWorkPatch(runner, path, file, header) {
|
|
|
267
186
|
return { ok: false, message: `${path}: git diff failed while saving its work (${firstLine(tracked.stderr)})` };
|
|
268
187
|
const parts = [tracked.stdout];
|
|
269
188
|
for (const one of untracked) {
|
|
270
|
-
// --no-index exits 1 when the sides differ; that is the expected answer.
|
|
271
189
|
const diff = await git(path, [...READ_ONLY, "diff", "--binary", "--no-index", "--ignore-submodules=all", "--", "/dev/null", one]);
|
|
272
190
|
if (diff.code > 1)
|
|
273
191
|
return { ok: false, message: `${path}: ${one} could not be captured (${firstLine(diff.stderr)})` };
|
|
@@ -286,50 +204,17 @@ export class WorktreePool {
|
|
|
286
204
|
store;
|
|
287
205
|
options;
|
|
288
206
|
runner;
|
|
289
|
-
/** The pool's own git in a project's repository and its checkouts (making, moving and reading them): hardened against
|
|
290
|
-
* a frozen view of the repository's config and info (teardown-git.ts checkoutGit), which agents can write. An injected
|
|
291
|
-
* runner (tests' stubbed git) is used as given. */
|
|
292
207
|
hardened;
|
|
293
|
-
/** Carried to the independent storage sweep process. */
|
|
294
208
|
get root() { return this.options.root; }
|
|
295
209
|
constructor(store, options) {
|
|
296
210
|
this.store = store;
|
|
297
211
|
this.options = options;
|
|
298
212
|
this.runner = options.runner ?? run;
|
|
299
|
-
// Bound to the project's repository from the pool's own request or record (teardown-git.ts GitBinding).
|
|
300
213
|
this.hardened = repo => this.runner === run ? checkoutGit(run, "build", { repo }) : this.runner;
|
|
301
214
|
}
|
|
302
|
-
/**
|
|
303
|
-
* Take a working copy for this branch.
|
|
304
|
-
*
|
|
305
|
-
* Refused when somebody else holds it — losing is ordinary, and a caller
|
|
306
|
-
* that is told who holds it can go and do something else rather than poll.
|
|
307
|
-
*/
|
|
308
|
-
/**
|
|
309
|
-
* Whether a live process is working in there, independently of what the
|
|
310
|
-
* database believes.
|
|
311
|
-
*
|
|
312
|
-
* treehouse's rule, and it exists because the database is the thing most
|
|
313
|
-
* likely to be wrong: a row saying "released" written by a process that then
|
|
314
|
-
* kept running, or a stale row from a crash, are both cases where the
|
|
315
|
-
* checkout is genuinely occupied and only the machine can say so. So each
|
|
316
|
-
* lease drops a note naming the process holding it, and `process.kill(pid, 0)`
|
|
317
|
-
* — which signals nothing and only asks whether the pid exists — is what
|
|
318
|
-
* answers the question afterwards.
|
|
319
|
-
*
|
|
320
|
-
* A pid can be recycled by the operating system, so this can say "in use"
|
|
321
|
-
* about a stranger. That is the safe direction: refusing a checkout somebody
|
|
322
|
-
* may be in costs a retry, and taking one they are in costs their work.
|
|
323
|
-
*/
|
|
324
215
|
inUse(path) {
|
|
325
216
|
return worktreeProcessOccupancy(path);
|
|
326
217
|
}
|
|
327
|
-
/**
|
|
328
|
-
* Once a provider exists it, not the supervising console, is the process
|
|
329
|
-
* whose liveness protects this checkout. Rewriting the occupancy marker at
|
|
330
|
-
* spawn means a replacement control plane waits for an orphaned provider
|
|
331
|
-
* to finish instead of starting a second writer in the same worktree.
|
|
332
|
-
*/
|
|
333
218
|
markProviderOccupancy(path, runner, providerPid, leaseEpoch) {
|
|
334
219
|
if (!Number.isInteger(providerPid) || providerPid <= 0)
|
|
335
220
|
return false;
|
|
@@ -346,8 +231,6 @@ export class WorktreePool {
|
|
|
346
231
|
return false;
|
|
347
232
|
}
|
|
348
233
|
}
|
|
349
|
-
/** Spawn callbacks must fail if custody cannot be recorded. The transport
|
|
350
|
-
* kills and reaps its child before returning that callback failure. */
|
|
351
234
|
recordProviderOccupancy(path, runner, providerPid, leaseEpoch) {
|
|
352
235
|
if (!this.markProviderOccupancy(path, runner, providerPid, leaseEpoch)) {
|
|
353
236
|
throw new Error(`${path}: the provider's worktree custody could not be recorded`);
|
|
@@ -372,10 +255,6 @@ export class WorktreePool {
|
|
|
372
255
|
}
|
|
373
256
|
}
|
|
374
257
|
async leaseNow(request) {
|
|
375
|
-
// A worktree leased to a runner nobody registered cannot be heartbeated
|
|
376
|
-
// and cannot be recovered — it would be a checkout that never comes back.
|
|
377
|
-
// The database enforces this too; catching it here is what turns a foreign
|
|
378
|
-
// key error into a sentence somebody can act on.
|
|
379
258
|
if (this.store.getRunner(request.runner) === null) {
|
|
380
259
|
return {
|
|
381
260
|
ok: false,
|
|
@@ -388,10 +267,6 @@ export class WorktreePool {
|
|
|
388
267
|
if (!safePoolPath(this.options.root, path))
|
|
389
268
|
return unsafe();
|
|
390
269
|
const existing = this.store.getWorktree(path);
|
|
391
|
-
// The machine outranks the database here. A row can say "released" while a
|
|
392
|
-
// process that never got to write its own ending is still working in the
|
|
393
|
-
// directory, and that is exactly when taking it away costs somebody a
|
|
394
|
-
// night's work.
|
|
395
270
|
const occupied = this.inUse(path);
|
|
396
271
|
if (occupied.held) {
|
|
397
272
|
return {
|
|
@@ -407,10 +282,6 @@ export class WorktreePool {
|
|
|
407
282
|
message: `${path} is leased to ${existing.runner ?? "someone"}`,
|
|
408
283
|
};
|
|
409
284
|
}
|
|
410
|
-
// Re-inspect every released checkout at the lease boundary. `verified`
|
|
411
|
-
// says it was clean when released, not that no orphan/provider/person
|
|
412
|
-
// wrote to it afterwards; trusting that old bit is how a restored safety
|
|
413
|
-
// patch can be handed out without recovery lineage or silently reset.
|
|
414
285
|
let reclaimed;
|
|
415
286
|
let resumedFromRun;
|
|
416
287
|
let recoveryKind;
|
|
@@ -420,9 +291,6 @@ export class WorktreePool {
|
|
|
420
291
|
return { ok: false, reason: "git", message: `${path} could not be inspected` };
|
|
421
292
|
}
|
|
422
293
|
if (dirty) {
|
|
423
|
-
// The task's own leftover, from an attempt that finished and said
|
|
424
|
-
// so: kept as evidence, then cleared, so the retry starts from the
|
|
425
|
-
// branch and not from a half-edit. Anything else stays for a person.
|
|
426
294
|
const own = request.reclaim !== undefined && request.taskRef !== undefined && existing.taskRef === request.taskRef;
|
|
427
295
|
if (!own) {
|
|
428
296
|
return {
|
|
@@ -439,12 +307,6 @@ export class WorktreePool {
|
|
|
439
307
|
return { ok: false, reason: "git", message: kept.message };
|
|
440
308
|
reclaimed = kept.file;
|
|
441
309
|
if (recovery !== null) {
|
|
442
|
-
// The predecessor reached a structurally valid completed handoff
|
|
443
|
-
// before its runner disappeared. Keep its draft in place under the
|
|
444
|
-
// fresh lease so the successor reviews and verifies it. build()
|
|
445
|
-
// quarantines the old nonce-bound handoff before the new provider
|
|
446
|
-
// starts, so only the source draft crosses attempts — never the old
|
|
447
|
-
// attempt's authority.
|
|
448
310
|
resumedFromRun = recovery.runId;
|
|
449
311
|
recoveryKind = recovery.kind;
|
|
450
312
|
}
|
|
@@ -457,13 +319,9 @@ export class WorktreePool {
|
|
|
457
319
|
}
|
|
458
320
|
const created = existing === null;
|
|
459
321
|
if (created) {
|
|
460
|
-
// A branch that already exists (its checkout removed by storage retention) is checked out as it stands, just
|
|
461
|
-
// as its kept checkout would have been reused; `base` only starts a branch that doesn't exist yet.
|
|
462
322
|
const branchExists = request.base !== undefined && request.reuseBranch === true &&
|
|
463
323
|
(await this.git(request.repo, ["rev-parse", "--verify", "--quiet", `refs/heads/${request.branch}`], READ_ONLY)).code === 0;
|
|
464
324
|
const fromBase = request.base !== undefined && !branchExists;
|
|
465
|
-
// Spotlight leaves the checkouts alone: the marker sits in the pool and the project's folder, never inside a
|
|
466
|
-
// checkout, where a build's `git add -A` would commit it (never-index.ts).
|
|
467
325
|
if (!safePoolPath(this.options.root, path))
|
|
468
326
|
return unsafe();
|
|
469
327
|
try {
|
|
@@ -474,7 +332,6 @@ export class WorktreePool {
|
|
|
474
332
|
}
|
|
475
333
|
markNeverIndex(this.options.root);
|
|
476
334
|
markNeverIndex(dirname(path));
|
|
477
|
-
// A new branch is created first, on its own, so its reflog's first entry says Toolroll made it and when.
|
|
478
335
|
let made = null;
|
|
479
336
|
if (fromBase) {
|
|
480
337
|
const base = await this.git(request.repo, ["rev-parse", "--verify", "--quiet", `${request.base}^{commit}`], READ_ONLY);
|
|
@@ -495,8 +352,6 @@ export class WorktreePool {
|
|
|
495
352
|
return { ok: false, reason: "git", message: firstLine(add.stderr) };
|
|
496
353
|
}
|
|
497
354
|
}
|
|
498
|
-
// Fresh base, inside the same reservation as everything above: nothing else leases, prunes or slims this
|
|
499
|
-
// checkout between the inspection and the move.
|
|
500
355
|
let base;
|
|
501
356
|
if (request.freshBase !== undefined && request.taskRef !== undefined) {
|
|
502
357
|
const fresh = await this.freshen(request.repo, path, request.branch, request.taskRef, request.freshBase, request.now);
|
|
@@ -513,17 +368,9 @@ export class WorktreePool {
|
|
|
513
368
|
createdAt: existing?.createdAt ?? request.now.toISOString(),
|
|
514
369
|
leasedAt: request.now.toISOString(),
|
|
515
370
|
releasedAt: null,
|
|
516
|
-
// Freshly created, or inspected just above — either way, checked.
|
|
517
371
|
verified: true,
|
|
518
|
-
// The occupancy epoch (live-peek findings 16/28): fresh randomness,
|
|
519
|
-
// written by the SAME row write that grants the lease — it can never
|
|
520
|
-
// repeat and never lag the occupancy it names.
|
|
521
372
|
leaseEpoch: randomBytes(12).toString("hex"),
|
|
522
373
|
};
|
|
523
|
-
// The note goes down before the lease is granted. A checkout we cannot
|
|
524
|
-
// mark is one whose next holder cannot tell it is occupied — the in-use
|
|
525
|
-
// check would report it free while a process worked in it — so failing to
|
|
526
|
-
// write the note fails the lease rather than quietly leaving the gap.
|
|
527
374
|
if (!this.mark(path, request.runner)) {
|
|
528
375
|
return {
|
|
529
376
|
ok: false,
|
|
@@ -542,12 +389,6 @@ export class WorktreePool {
|
|
|
542
389
|
...(base === undefined ? {} : { base }),
|
|
543
390
|
};
|
|
544
391
|
}
|
|
545
|
-
/**
|
|
546
|
-
* Move an untouched checkout to current main, or say how far behind it is. Untouched means all three: on its own
|
|
547
|
-
* branch, HEAD still the recorded base (or, with none recorded, a commit main already has), and nothing changed or
|
|
548
|
-
* untracked. The move is `git reset --keep`, which refuses rather than overwrite anything; HEAD and the tree are read
|
|
549
|
-
* again right before and after it, and any surprise fails the lease with the checkout left for a person.
|
|
550
|
-
*/
|
|
551
392
|
async freshen(repo, path, branch, taskRef, fresh, now) {
|
|
552
393
|
const read = async (args) => {
|
|
553
394
|
const out = await this.hardened(repo)(GIT, [...READ_ONLY, ...args], { cwd: path, timeoutMs: WORKTREE_TIMEOUT_MS });
|
|
@@ -573,7 +414,6 @@ export class WorktreePool {
|
|
|
573
414
|
return stay("has commits");
|
|
574
415
|
if (await this.isDirty(path) !== false)
|
|
575
416
|
return stay("has changes");
|
|
576
|
-
// Recorded before git moves it: a move that then fails leaves the next attempt's own base as the branch's origin.
|
|
577
417
|
this.store.recordBranchBaseMove(taskRef, branch, head, main, now);
|
|
578
418
|
const moved = await this.hardened(repo)(GIT, ["reset", "--keep", main], { cwd: path, timeoutMs: WORKTREE_TIMEOUT_MS });
|
|
579
419
|
const after = await read(["rev-parse", "--verify", "--quiet", "HEAD^{commit}"]);
|
|
@@ -583,33 +423,16 @@ export class WorktreePool {
|
|
|
583
423
|
}
|
|
584
424
|
return { ok: true, standing: { head: main, main, behind: 0, moved: { from: head, behind }, kept: null } };
|
|
585
425
|
}
|
|
586
|
-
/**
|
|
587
|
-
* A crash can strand either a finished handoff or a partial source draft.
|
|
588
|
-
* The expired lease can no longer authorize a commit, so this never ingests
|
|
589
|
-
* the old result. It classifies the recovery context for the next freshly
|
|
590
|
-
* fenced attempt, which must review and prove the inherited work itself.
|
|
591
|
-
*/
|
|
592
426
|
recoverableDraft(path, runId, latestRun) {
|
|
593
427
|
const prior = this.store.getRun(runId);
|
|
594
428
|
if (prior === null)
|
|
595
429
|
return null;
|
|
596
|
-
// Once a fresh attempt has explicitly inherited a validated draft, keep
|
|
597
|
-
// that lineage through an infrastructure/provider failure too. A warm
|
|
598
|
-
// park resume also uses parentRun, but its parent is `parked`, never the
|
|
599
|
-
// failed/interrupted source required here.
|
|
600
430
|
if (prior.parentRun !== null) {
|
|
601
431
|
const source = this.store.getRun(prior.parentRun);
|
|
602
432
|
if (source !== null && endedInterrupted(source)) {
|
|
603
433
|
return { runId: source.id, kind: "partial" };
|
|
604
434
|
}
|
|
605
435
|
}
|
|
606
|
-
// An attempt that stopped before its handoff (run 2085) left work it
|
|
607
|
-
// never got to hand off: kept in place for the next attempt, never reset
|
|
608
|
-
// — until a later attempt fails some other way. That failure may have
|
|
609
|
-
// broken the tree, and the work is already saved (its own patch, and the
|
|
610
|
-
// leftover patch the caller writes first), so the tree can be reset. A
|
|
611
|
-
// crash or a sign-in that stopped working says nothing about the tree.
|
|
612
|
-
// A resumed or repair turn is judged as part of the attempt it belongs to.
|
|
613
436
|
const attemptOf = (one) => one !== null && one.role === "repair" && one.parentRun !== null ? this.store.getRun(one.parentRun) ?? one : one;
|
|
614
437
|
const brokeTree = (one) => one !== null && one.outcome === "failed" && one.reason !== "no-handoff" && one.reason !== "interrupted" && one.reason !== "auth-expired";
|
|
615
438
|
const attempt = attemptOf(prior);
|
|
@@ -640,19 +463,12 @@ export class WorktreePool {
|
|
|
640
463
|
kind: parsed.ok && parsed.handoff.status === "completed" ? "completed" : "partial",
|
|
641
464
|
};
|
|
642
465
|
}
|
|
643
|
-
/**
|
|
644
|
-
* Preserve a dirty tree's work as one patch — tracked changes against
|
|
645
|
-
* HEAD, then each untracked file against nothing — under the evidence of
|
|
646
|
-
* the last run that lived in this checkout (or a leftover folder when no
|
|
647
|
-
* run is on record). Nothing is deleted here.
|
|
648
|
-
*/
|
|
649
466
|
async keepLeftover(path, evidenceRoot, now) {
|
|
650
467
|
const lastRun = this.store.latestRunInWorktree(path);
|
|
651
468
|
const dir = lastRun === null ? join(evidenceRoot, "leftover") : join(evidenceRoot, String(lastRun));
|
|
652
469
|
const file = join(dir, lastRun === null ? `${now.toISOString().replace(/[:.]/g, "-")}.patch` : "leftover.patch");
|
|
653
470
|
return saveWorkPatch(this.runner, path, file, `# leftover from ${path}\n# kept ${now.toISOString()} before the tree was reset for the next attempt\n`);
|
|
654
471
|
}
|
|
655
|
-
/** Back to HEAD, untracked gone, our lease note kept; proven clean after. */
|
|
656
472
|
async resetTree(path) {
|
|
657
473
|
const checkout = await this.teardown(path, ["checkout", "--", "."]);
|
|
658
474
|
if (checkout.code !== 0)
|
|
@@ -665,7 +481,6 @@ export class WorktreePool {
|
|
|
665
481
|
return { ok: false, message: `${path} is still not clean after the reset — leaving it for a person` };
|
|
666
482
|
return { ok: true };
|
|
667
483
|
}
|
|
668
|
-
/** Leave a note naming the process holding this checkout. */
|
|
669
484
|
mark(path, runner, pid = process.pid) {
|
|
670
485
|
try {
|
|
671
486
|
writeFileSync(join(path, MARKER), `${pid} ${runner} process ${currentBootId() ?? "unknown"} ${hostname()} ${currentMachineId() ?? "unknown"}\n`, "utf8");
|
|
@@ -675,38 +490,22 @@ export class WorktreePool {
|
|
|
675
490
|
return false;
|
|
676
491
|
}
|
|
677
492
|
}
|
|
678
|
-
/**
|
|
679
|
-
* Hand a working copy back.
|
|
680
|
-
*
|
|
681
|
-
* The tree is inspected first, and dirt is reported rather than cleaned.
|
|
682
|
-
* `git reset --hard` leaves untracked files behind and destroys work that
|
|
683
|
-
* might have been repairable, which is why the failure taxonomy this project
|
|
684
|
-
* borrows says to preserve a failed commit rather than blanket-reset.
|
|
685
|
-
*/
|
|
686
493
|
async release(path, now) {
|
|
687
494
|
const existing = this.store.getWorktree(path);
|
|
688
495
|
if (existing === null) {
|
|
689
496
|
return { ok: false, reason: "git", message: `${path} is not a worktree we made` };
|
|
690
497
|
}
|
|
691
498
|
const dirty = await this.isDirty(path);
|
|
692
|
-
// The note goes before the row is written: a crash between the two should
|
|
693
|
-
// leave a checkout that looks free rather than one held by a pid that has
|
|
694
|
-
// gone, which is the direction that needs no human to unstick it.
|
|
695
499
|
try {
|
|
696
500
|
rmSync(join(path, MARKER), { force: true });
|
|
697
501
|
}
|
|
698
502
|
catch {
|
|
699
|
-
// Nothing to do about it, and the pid check handles a note left behind.
|
|
700
503
|
}
|
|
701
504
|
const row = {
|
|
702
505
|
...existing,
|
|
703
506
|
runner: null,
|
|
704
507
|
releasedAt: now.toISOString(),
|
|
705
|
-
// Unknown counts as unverified. Saying "clean" about a tree we could not
|
|
706
|
-
// read would hand the next runner a surprise.
|
|
707
508
|
verified: dirty === false,
|
|
708
|
-
// Occupancy ended: the epoch rotates HERE too, so a peek proved
|
|
709
|
-
// against the tenancy that just ended can only discard (finding 28).
|
|
710
509
|
leaseEpoch: randomBytes(12).toString("hex"),
|
|
711
510
|
};
|
|
712
511
|
this.store.saveWorktree(row);
|
|
@@ -722,20 +521,6 @@ export class WorktreePool {
|
|
|
722
521
|
}
|
|
723
522
|
return { ok: true, worktree: row, created: false };
|
|
724
523
|
}
|
|
725
|
-
/**
|
|
726
|
-
* Worktrees git knows about that this pool does not, and the reverse.
|
|
727
|
-
*
|
|
728
|
-
* The first is somebody else's business and is left alone. The second is
|
|
729
|
-
* ours: a row for a directory that is no longer there, which happens when a
|
|
730
|
-
* machine is reimaged or a pool root is deleted between runs.
|
|
731
|
-
*/
|
|
732
|
-
/**
|
|
733
|
-
* Remove a released checkout and its branch (v4 review, finding 3): the
|
|
734
|
-
* read-only roles' workspaces are disposable, so the next attempt starts
|
|
735
|
-
* from the requested base instead of whatever the last one saw. Refused
|
|
736
|
-
* while a process holds the directory; a failure leaves the checkout
|
|
737
|
-
* where `worktrees` can see it rather than pretending it is gone.
|
|
738
|
-
*/
|
|
739
524
|
async discard(path, now) {
|
|
740
525
|
const existing = this.store.getWorktree(path);
|
|
741
526
|
if (existing === null)
|
|
@@ -748,7 +533,6 @@ export class WorktreePool {
|
|
|
748
533
|
const removed = await this.teardown(existing.repo, ["worktree", "remove", "--force", path]);
|
|
749
534
|
if (removed.code !== 0)
|
|
750
535
|
return { ok: false, message: `git worktree remove: ${removed.stderr.trim() || `exit ${removed.code}`}` };
|
|
751
|
-
// The branch is disposable too; a failure here is bookkeeping, not custody.
|
|
752
536
|
await this.teardown(existing.repo, ["branch", "-D", existing.branch]);
|
|
753
537
|
this.store.forgetWorktree(path);
|
|
754
538
|
void now;
|
|
@@ -756,9 +540,6 @@ export class WorktreePool {
|
|
|
756
540
|
}
|
|
757
541
|
async orphans(repo) {
|
|
758
542
|
const listed = await this.teardown(repo, ["worktree", "list", "--porcelain"]);
|
|
759
|
-
// A listing that failed is not a listing that came back empty. Treating
|
|
760
|
-
// it as empty would report every stored row as missing — and anything
|
|
761
|
-
// acting on that answer would erase real bookkeeping over a git hiccup.
|
|
762
543
|
if (listed.code !== 0) {
|
|
763
544
|
return {
|
|
764
545
|
ok: false,
|
|
@@ -777,33 +558,10 @@ export class WorktreePool {
|
|
|
777
558
|
missing: ours.filter(row => !onDisk.has(row.path)).map(row => row.path),
|
|
778
559
|
};
|
|
779
560
|
}
|
|
780
|
-
/**
|
|
781
|
-
* Take responsibility for worktrees that exist but nothing recorded.
|
|
782
|
-
*
|
|
783
|
-
* These turn up after a crash between `git worktree add` and the row that
|
|
784
|
-
* should have followed it, or when a database is replaced while checkouts
|
|
785
|
-
* survive on disk. Left alone they are invisible: git knows about them,
|
|
786
|
-
* every pool query does not, and the same branch gets checked out again
|
|
787
|
-
* beside them.
|
|
788
|
-
*
|
|
789
|
-
* Adopted **released and unverified**, never leased. Nobody watched them
|
|
790
|
-
* being made, so they are a claim about the past — the same rule that
|
|
791
|
-
* governs a dead runner's worktrees, for the same reason.
|
|
792
|
-
*
|
|
793
|
-
* Rows whose directory is gone are dropped: a lease over a path that does
|
|
794
|
-
* not exist can only refuse work that could otherwise have run.
|
|
795
|
-
*/
|
|
796
561
|
async adopt(repo, now) {
|
|
797
562
|
const found = await this.orphans(repo);
|
|
798
|
-
// Fail closed, before anything is written or forgotten: an answer built
|
|
799
|
-
// on a failed listing would adopt nothing and erase everything.
|
|
800
563
|
if (!found.ok)
|
|
801
564
|
return found;
|
|
802
|
-
// Only what lives under this pool's root is ours to adopt. A worktree the
|
|
803
|
-
// operator made by hand, wherever they made it, is somebody's business —
|
|
804
|
-
// it is named by `orphans()` and left exactly where it is. Compared as
|
|
805
|
-
// real paths, because git reports where a directory actually is while the
|
|
806
|
-
// configured root may reach it through a symlink (macOS's /var, for one).
|
|
807
565
|
const real = (path) => {
|
|
808
566
|
try {
|
|
809
567
|
return realpathSync(path);
|
|
@@ -814,10 +572,6 @@ export class WorktreePool {
|
|
|
814
572
|
};
|
|
815
573
|
const root = normalisePath(real(this.options.root)) + "/";
|
|
816
574
|
const adoptable = found.untracked.filter(path => normalisePath(real(path)).startsWith(root));
|
|
817
|
-
// Git's listing is a survey, not permission to overwrite custody. A
|
|
818
|
-
// builder may create and record a worktree while the listing is in
|
|
819
|
-
// flight. Recheck under the writer transaction, and never forget an
|
|
820
|
-
// owned checkout or a directory that appeared after the listing.
|
|
821
575
|
return this.store.transact(() => {
|
|
822
576
|
const adopted = [];
|
|
823
577
|
const forgotten = [];
|
|
@@ -827,8 +581,6 @@ export class WorktreePool {
|
|
|
827
581
|
this.store.saveWorktree({
|
|
828
582
|
path,
|
|
829
583
|
repo,
|
|
830
|
-
// The branch is not knowable from the listing alone, and inventing one
|
|
831
|
-
// would be worse than admitting it: whoever verifies this will look.
|
|
832
584
|
branch: "unknown",
|
|
833
585
|
runner: null,
|
|
834
586
|
taskRef: null,
|
|
@@ -849,31 +601,17 @@ export class WorktreePool {
|
|
|
849
601
|
return { ok: true, adopted, forgotten };
|
|
850
602
|
});
|
|
851
603
|
}
|
|
852
|
-
/**
|
|
853
|
-
* Whether a let-go checkout could go without losing anything: clean (build output that .gitignore hides is not
|
|
854
|
-
* work, and neither are the files Toolroll itself wrote in there), and everything its HEAD reaches on a branch, tag
|
|
855
|
-
* or remote. Reads only, through `git` when given (teardown's hardened git).
|
|
856
|
-
*/
|
|
857
604
|
async inspect(path, git = this.teardown) {
|
|
858
|
-
// A checkout that had a git incident lately is left alone (git-incident.ts): nothing re-runs git there each pass.
|
|
859
605
|
if (quietAfterIncident(path))
|
|
860
606
|
return "unreadable";
|
|
861
607
|
const dirty = await this.isDirty(path, true, git);
|
|
862
608
|
if (dirty !== false)
|
|
863
609
|
return dirty === null ? "unreadable" : "has changes";
|
|
864
|
-
// Commits only this checkout's HEAD reaches (a detached HEAD moved on) exist nowhere else.
|
|
865
610
|
const own = await git(path, [...READ_ONLY, "rev-list", "-1", "HEAD", "--not", "--branches", "--tags", "--remotes"]);
|
|
866
611
|
if (own.code !== 0)
|
|
867
612
|
return "unreadable";
|
|
868
613
|
return own.stdout.trim() === "" ? "clean" : "has commits";
|
|
869
614
|
}
|
|
870
|
-
/**
|
|
871
|
-
* Whether a checkout a task may still come back to can go, beyond `inspect`: a later lease of its branch must make the
|
|
872
|
-
* same checkout, and every commit its task recorded must outlive it (git's garbage collection counts a worktree's HEAD
|
|
873
|
-
* and reflog; once they go only a branch holds a commit). So: the folder is the pool's own, the checkout belongs to its
|
|
874
|
-
* project by the plane's record (`boundDirs`, not its `.git` file), its HEAD is its recorded branch, every recorded
|
|
875
|
-
* `heads` commit is on a branch, and no ref lives only in this worktree. Reads only; anything unreadable keeps it.
|
|
876
|
-
*/
|
|
877
615
|
async proveRecreatable(row, heads) {
|
|
878
616
|
if (quietAfterIncident(row.path))
|
|
879
617
|
return "unreadable";
|
|
@@ -902,15 +640,6 @@ export class WorktreePool {
|
|
|
902
640
|
return "unreadable";
|
|
903
641
|
return own.stdout.trim() === "" ? "clean" : "has commits";
|
|
904
642
|
}
|
|
905
|
-
/**
|
|
906
|
-
* Keep storage in check: remove the working copies nobody needs any more. Of `rows`, a checkout goes when it is
|
|
907
|
-
* let go, nothing holds it, `wanted` says it may go (asked again right before it goes, so a task coming back or a
|
|
908
|
-
* lease since keeps it) and `inspect` finds it clean, then clean still right before it goes (git refuses an edit
|
|
909
|
-
* made after that). Only the working copy goes: its branch, and so every commit,
|
|
910
|
-
* stays, and a later lease of the same branch makes a new one. At most `max` go per pass. Every git command goes
|
|
911
|
-
* through `git` when given: landed cleanup passes its hardened teardown git (teardown-git.ts). `proof` is asked last,
|
|
912
|
-
* inside the reservation, for what `inspect` doesn't cover (idle cleanup: `proveRecreatable`).
|
|
913
|
-
*/
|
|
914
643
|
async prune(rows, wanted, max = Infinity, git = this.teardown, proof) {
|
|
915
644
|
const removed = [];
|
|
916
645
|
const kept = [];
|
|
@@ -937,11 +666,9 @@ export class WorktreePool {
|
|
|
937
666
|
continue;
|
|
938
667
|
busy.set(row.path, "removing");
|
|
939
668
|
try {
|
|
940
|
-
// A lease, or a task coming back, since the listing wins: look again right before removing.
|
|
941
669
|
const now = this.store.getWorktree(row.path);
|
|
942
670
|
if (!idle(now, row.releasedAt))
|
|
943
671
|
continue;
|
|
944
|
-
// Landed cleanup rechecks Git here; existing synchronous guards keep their synchronous path.
|
|
945
672
|
const allowed = wanted(now, true);
|
|
946
673
|
if (!(typeof allowed === "boolean" ? allowed : await allowed))
|
|
947
674
|
continue;
|
|
@@ -964,12 +691,6 @@ export class WorktreePool {
|
|
|
964
691
|
}
|
|
965
692
|
return { removed, kept };
|
|
966
693
|
}
|
|
967
|
-
/**
|
|
968
|
-
* Drop a let-go, idle checkout's dependencies and build output: the folders .gitignore hides that are named like
|
|
969
|
-
* them (SLIM_NAMES). Its work, tracked or untracked, is untouched. The setup stamp goes first, so the next lease
|
|
970
|
-
* runs the project's setup again and restores them. `wanted` is asked again right before anything goes; `deps`
|
|
971
|
-
* false keeps node_modules (no setup would restore it).
|
|
972
|
-
*/
|
|
973
694
|
async slim(row, wanted, deps = true) {
|
|
974
695
|
const idle = (now) => now !== null && now.runner === null && now.releasedAt !== null && now.releasedAt === row.releasedAt && !this.inUse(row.path).held;
|
|
975
696
|
if (busy.has(row.path) || !existsSync(row.path) || !idle(this.store.getWorktree(row.path)))
|
|
@@ -991,7 +712,6 @@ export class WorktreePool {
|
|
|
991
712
|
const now = this.store.getWorktree(row.path);
|
|
992
713
|
if (!idle(now) || !wanted(now))
|
|
993
714
|
return { ok: false, message: `${row.path} is in use` };
|
|
994
|
-
// Held while it slims: another process's lease sees this process in it.
|
|
995
715
|
try {
|
|
996
716
|
writeFileSync(note, `${process.pid} storage-retention slimming ${currentBootId() ?? "unknown"} ${hostname()} ${currentMachineId() ?? "unknown"}\n`, "utf8");
|
|
997
717
|
held = true;
|
|
@@ -1012,10 +732,6 @@ export class WorktreePool {
|
|
|
1012
732
|
busy.delete(row.path);
|
|
1013
733
|
}
|
|
1014
734
|
}
|
|
1015
|
-
/**
|
|
1016
|
-
* Throw away a let-go checkout kept for its changes, on purpose: the working copy and what is uncommitted in it
|
|
1017
|
-
* go; its branch, and every commit on it, stays. Refused while anything holds it.
|
|
1018
|
-
*/
|
|
1019
735
|
async discardChanges(path) {
|
|
1020
736
|
const row = this.store.getWorktree(path);
|
|
1021
737
|
if (row === null)
|
|
@@ -1045,10 +761,7 @@ export class WorktreePool {
|
|
|
1045
761
|
busy.delete(path);
|
|
1046
762
|
}
|
|
1047
763
|
}
|
|
1048
|
-
/** Throw away one idle checkout's working copy, changes and all (the caller holds it in `busy`), and forget its row.
|
|
1049
|
-
* Only `discardChanges`, where losing them is what a person asked for. */
|
|
1050
764
|
async removeWorkingCopy(row) {
|
|
1051
|
-
// Held while it goes: another process's lease sees this process in it (the busy map is this process's only).
|
|
1052
765
|
const note = join(row.path, MARKER);
|
|
1053
766
|
try {
|
|
1054
767
|
writeFileSync(note, `${process.pid} storage-retention removing ${currentBootId() ?? "unknown"} ${hostname()} ${currentMachineId() ?? "unknown"}\n`, "utf8");
|
|
@@ -1064,12 +777,6 @@ export class WorktreePool {
|
|
|
1064
777
|
this.forgetRemoved(row);
|
|
1065
778
|
return true;
|
|
1066
779
|
}
|
|
1067
|
-
/**
|
|
1068
|
-
* Remove one idle checkout's working copy only while it is still clean (the caller holds it in `busy`, and its
|
|
1069
|
-
* reservation outside the checkout holds it for other processes): inspected once more right before it goes, then
|
|
1070
|
-
* removed without --force, so git itself refuses an edit made since. Only Toolroll's own files go first, because
|
|
1071
|
-
* git's check would count them.
|
|
1072
|
-
*/
|
|
1073
780
|
async removeCleanCopy(row, git) {
|
|
1074
781
|
const found = await this.inspect(row.path, git);
|
|
1075
782
|
if (found !== "clean")
|
|
@@ -1095,29 +802,15 @@ export class WorktreePool {
|
|
|
1095
802
|
this.store.forgetWorktree(row.path);
|
|
1096
803
|
});
|
|
1097
804
|
}
|
|
1098
|
-
/**
|
|
1099
|
-
* Whether anybody's work is in there. null means we could not tell, which is
|
|
1100
|
-
* neither clean nor dirty and must not be rounded to either.
|
|
1101
|
-
*
|
|
1102
|
-
* `--untracked-files=all` and no `--ignored`: build output that .gitignore
|
|
1103
|
-
* hides is not work, but a file somebody dropped in and never staged is.
|
|
1104
|
-
*/
|
|
1105
805
|
async isDirty(path, ignoreOwnFiles = false, git = this.teardown) {
|
|
1106
806
|
const status = await git(path, [...READ_ONLY, "status", "--porcelain", "--untracked-files=all", "--ignore-submodules=all"]);
|
|
1107
807
|
if (status.code !== 0)
|
|
1108
808
|
return null;
|
|
1109
|
-
// Our own lease note is not the operator's work. Without this the marker
|
|
1110
|
-
// makes every checkout permanently dirty, which would jam the pool shut on
|
|
1111
|
-
// the first lease — untracked files counting as dirty is the right rule,
|
|
1112
|
-
// and this is the one file it must not apply to.
|
|
1113
|
-
// Deciding whether a checkout can go, the files Toolroll wrote at its top (a progress note, a handoff, a
|
|
1114
|
-
// proof list) are not a person's work either; any other untracked or changed file still is.
|
|
1115
809
|
return status.stdout
|
|
1116
810
|
.split("\n")
|
|
1117
811
|
.filter(line => line.trim() !== "")
|
|
1118
812
|
.some(line => !line.trimEnd().endsWith(MARKER) && !(ignoreOwnFiles && line.startsWith("?? ") && looksLikeProtocolFile(line.slice(3).trim())));
|
|
1119
813
|
}
|
|
1120
|
-
/** All disposal and inspection paths share the hardened teardown boundary. */
|
|
1121
814
|
teardown = (cwd, args) => teardownGit(this.runner)(cwd, args);
|
|
1122
815
|
git(cwd, args, prefix = []) {
|
|
1123
816
|
return this.hardened(cwd)(GIT, [...prefix, ...args], { cwd, timeoutMs: WORKTREE_TIMEOUT_MS });
|
|
@@ -1127,7 +820,6 @@ function firstLine(text) {
|
|
|
1127
820
|
const [line = ""] = text.trim().split("\n");
|
|
1128
821
|
return line;
|
|
1129
822
|
}
|
|
1130
|
-
/** Whether a checkout had a git incident within INCIDENT_QUIET_MS (by its real path, as incidents record it). */
|
|
1131
823
|
function quietAfterIncident(path) {
|
|
1132
824
|
let real;
|
|
1133
825
|
try {
|