toolroll 0.9.104 → 0.9.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +62 -5
- package/README.md +18 -20
- package/dist/accent-colors.js +0 -29
- package/dist/acp-agents.js +0 -3
- package/dist/acp-attest.js +0 -30
- package/dist/acp-check.js +3 -70
- package/dist/acp-client.js +3 -94
- package/dist/acp-inspect.js +1 -20
- package/dist/action-ledger.js +0 -8
- package/dist/activity-line.js +0 -14
- package/dist/actor.js +0 -15
- package/dist/advanced-schema.js +12 -0
- package/dist/advanced-view.js +26 -0
- package/dist/advanced.js +61 -0
- package/dist/agent-board.js +0 -117
- package/dist/agent-fence.js +11 -367
- package/dist/agent-onboard.js +12 -50
- package/dist/agent-pulse.js +5 -38
- package/dist/agent-state-words.js +0 -8
- package/dist/agent-state.js +1 -45
- package/dist/agent-turns.js +3 -17
- package/dist/agentconfig.js +1 -99
- package/dist/agents-board.js +0 -60
- package/dist/agents-live.js +1 -8
- package/dist/api-tokens.js +0 -27
- package/dist/approval-authority.js +0 -59
- package/dist/approval-password.js +0 -10
- package/dist/approval-policy.js +0 -29
- package/dist/approval-rules-ui.js +0 -9
- package/dist/assignment-adapters.js +0 -14
- package/dist/assignment-brief.js +1 -17
- package/dist/assignment-delivery.js +0 -22
- package/dist/assignment-presentation.js +0 -14
- package/dist/assignment-status.js +1 -30
- package/dist/assignment-ui.js +0 -12
- package/dist/assignment.js +17 -139
- package/dist/attest.js +0 -38
- package/dist/audit-cli.js +0 -9
- package/dist/backend.js +0 -59
- package/dist/backup-ui.js +0 -12
- package/dist/backup.js +8 -61
- package/dist/batch-checks.js +0 -20
- package/dist/batch-policy.js +0 -4
- package/dist/beads.js +0 -48
- package/dist/bin.js +0 -8
- package/dist/board.js +1 -36
- package/dist/boot-identity.js +0 -42
- package/dist/bounded-spawn.js +4 -28
- package/dist/brand-mark.js +0 -21
- package/dist/brief-fence.js +0 -16
- package/dist/browser/terminal.css +1 -1
- package/dist/browser/terminal.js +16 -16
- package/dist/browser/workspace.css +2 -2
- package/dist/browser/workspace.js +26 -26
- package/dist/browser-crew.js +0 -8
- package/dist/browser-shell.js +2 -15
- package/dist/browser-workspace.js +6 -30
- package/dist/budget-alerts.js +1 -4
- package/dist/build-review.js +2 -50
- package/dist/builder-restart.js +0 -13
- package/dist/builder.js +21 -1035
- package/dist/canonical-json.js +0 -12
- package/dist/capscan.js +1 -32
- package/dist/card-catalog.js +0 -12
- package/dist/card-cli.js +0 -1
- package/dist/card-render.js +0 -25
- package/dist/card-sources.js +0 -10
- package/dist/chat-acceptance.js +0 -7
- package/dist/chat-actions.js +5 -190
- package/dist/chat-admission.js +0 -7
- package/dist/chat-approval.js +0 -25
- package/dist/chat-ask.js +0 -17
- package/dist/chat-card-part.js +0 -3
- package/dist/chat-card.js +0 -6
- package/dist/chat-channel.js +2 -83
- package/dist/chat-continuity.js +0 -31
- package/dist/chat-controls.js +0 -7
- package/dist/chat-core.js +0 -55
- package/dist/chat-decide.js +2 -153
- package/dist/chat-delivery-state.js +0 -49
- package/dist/chat-delivery.js +2 -143
- package/dist/chat-display.js +0 -2
- package/dist/chat-evidence.js +0 -65
- package/dist/chat-flow.js +0 -72
- package/dist/chat-follow.js +0 -13
- package/dist/chat-inbox.js +0 -34
- package/dist/chat-live-schema.js +0 -14
- package/dist/chat-live.js +2 -87
- package/dist/chat-message-states.js +13 -40
- package/dist/chat-messages.js +0 -153
- package/dist/chat-migration.js +0 -57
- package/dist/chat-polish.js +0 -7
- package/dist/chat-quiet.js +0 -37
- package/dist/chat-review.js +0 -4
- package/dist/chat-rooms.js +0 -22
- package/dist/chat-settings-page.js +0 -4
- package/dist/chat-task-actions.js +0 -7
- package/dist/chat-terms.js +0 -21
- package/dist/chat-voice.js +0 -38
- package/dist/chat-warmth.js +1 -3
- package/dist/check-access.js +0 -30
- package/dist/check-facts.js +2 -62
- package/dist/check-failure.js +0 -98
- package/dist/check-levels-ui.js +4 -10
- package/dist/check-levels.js +3 -35
- package/dist/check-load.js +1 -49
- package/dist/check-only-standing.js +0 -6
- package/dist/check-only.js +0 -22
- package/dist/check-progress.js +0 -32
- package/dist/check-repair.js +2 -35
- package/dist/check-report.js +1 -108
- package/dist/check-stamp.js +0 -20
- package/dist/checkout-cleanup.js +0 -84
- package/dist/checkout-proof.js +1 -13
- package/dist/child-database.js +0 -3
- package/dist/claim.js +4 -508
- package/dist/claude-print.js +0 -10
- package/dist/cli-fast.js +0 -8
- package/dist/cli-help.js +90 -78
- package/dist/cli-http.js +0 -10
- package/dist/cli.js +26 -241
- package/dist/code-extract.js +0 -6
- package/dist/code-map-acts.js +0 -7
- package/dist/code-map-admission.js +2 -26
- package/dist/code-map-build.js +3 -24
- package/dist/code-map-cli.js +0 -4
- package/dist/code-map-main.js +0 -6
- package/dist/code-map-read.js +0 -12
- package/dist/code-map-report.js +0 -9
- package/dist/code-map-shape.js +0 -19
- package/dist/code-map-store.js +0 -26
- package/dist/codex-limits.js +1 -17
- package/dist/coding-context.js +0 -10
- package/dist/coding-handoff.js +0 -14
- package/dist/coding-provider.js +0 -39
- package/dist/coding-shipping-ui.js +0 -1
- package/dist/coding-ui.js +0 -1
- package/dist/coding-update.js +1 -18
- package/dist/coding-workspace.js +0 -27
- package/dist/commit-extract.js +0 -83
- package/dist/connect-cli.js +0 -19
- package/dist/console-chrome.js +1 -34
- package/dist/console-instance.js +2 -91
- package/dist/container-state.js +0 -4
- package/dist/containment.js +2 -105
- package/dist/contract-changes.js +0 -6
- package/dist/contracts/acceptance-terms.js +0 -7
- package/dist/contracts/chat-actions.js +0 -46
- package/dist/contracts/chat-callback-rows.js +0 -8
- package/dist/contracts/chat-card.js +0 -14
- package/dist/contracts/chat-content.js +0 -55
- package/dist/contracts/chat-tables.js +0 -7
- package/dist/contracts/cli.js +0 -59
- package/dist/contracts/coding-activity.js +0 -15
- package/dist/contracts/coding-context.js +0 -15
- package/dist/contracts/coding-handoff.js +0 -11
- package/dist/contracts/coding-workspace.js +0 -14
- package/dist/contracts/console-api.js +1 -54
- package/dist/contracts/contract-test.js +0 -14
- package/dist/contracts/contract.js +0 -48
- package/dist/contracts/decision.js +0 -20
- package/dist/contracts/diff-stat.js +0 -16
- package/dist/contracts/discord-callback.js +0 -9
- package/dist/contracts/flow-card.js +0 -18
- package/dist/contracts/flow-propose.js +0 -8
- package/dist/contracts/flow-send.js +0 -31
- package/dist/contracts/flow.js +0 -112
- package/dist/contracts/gateway-tools.js +0 -22
- package/dist/contracts/handoff.js +0 -22
- package/dist/contracts/integration-metadata.js +0 -39
- package/dist/contracts/lead-context.js +0 -14
- package/dist/contracts/lead-tools.js +0 -49
- package/dist/contracts/mcp-oauth.js +0 -12
- package/dist/contracts/memory-pass.js +0 -21
- package/dist/contracts/model-catalog.js +0 -9
- package/dist/contracts/observation-request.js +0 -11
- package/dist/contracts/plan.js +0 -16
- package/dist/contracts/project-knowledge.js +0 -26
- package/dist/contracts/project-memory.js +0 -16
- package/dist/contracts/project-skills.js +0 -31
- package/dist/contracts/proof.js +0 -23
- package/dist/contracts/provider.js +0 -9
- package/dist/contracts/recipes.js +0 -16
- package/dist/contracts/release-check.js +0 -61
- package/dist/contracts/release-terms.js +0 -27
- package/dist/contracts/retention.js +0 -12
- package/dist/contracts/review-findings.js +0 -13
- package/dist/contracts/route-results.js +0 -15
- package/dist/contracts/route.js +0 -33
- package/dist/contracts/scope.js +0 -29
- package/dist/contracts/scout-report.js +0 -34
- package/dist/contracts/slack-callback.js +0 -11
- package/dist/contracts/sort-answer.js +0 -24
- package/dist/contracts/stage-output.js +0 -46
- package/dist/contracts/storage.js +0 -8
- package/dist/contracts/store-json.js +0 -41
- package/dist/contracts/subagent-turn.js +0 -23
- package/dist/contracts/task-sizing.js +0 -10
- package/dist/contracts/teams-callback.js +0 -7
- package/dist/contracts/telegram-callback.js +0 -27
- package/dist/contracts/trigger-payloads.js +0 -41
- package/dist/contracts/update-journal.js +0 -47
- package/dist/contracts/verification-receipt.js +0 -36
- package/dist/contracts/verification-view.js +0 -15
- package/dist/contracts/youiyoux-request.js +0 -26
- package/dist/control-setup.js +0 -7
- package/dist/control-ui.js +0 -3
- package/dist/controller-service.js +0 -4
- package/dist/controller-supervisor.js +0 -15
- package/dist/converse.js +3 -129
- package/dist/coordinator-proposals.js +1 -6
- package/dist/coordinator.js +0 -65
- package/dist/credentials-ui.js +0 -6
- package/dist/daemon.js +0 -137
- package/dist/database-reclaim.js +0 -3
- package/dist/decision.js +0 -78
- package/dist/demo-chat.js +4 -15
- package/dist/demo-sign-in.js +77 -0
- package/dist/demo.js +5 -194
- package/dist/deploy-gate.js +0 -20
- package/dist/deploy-lock.js +0 -4
- package/dist/deploy-phase.js +0 -22
- package/dist/deploy-rescue.js +0 -21
- package/dist/deprecations.js +0 -12
- package/dist/design/kit.css +9 -6
- package/dist/design/kit.js +2 -33
- package/dist/desktop-access.js +0 -9
- package/dist/desktop-bundle.js +1 -3
- package/dist/desktop-host.js +0 -34
- package/dist/desktop-update-gate.js +0 -8
- package/dist/desktop-update-recovery.js +1 -18
- package/dist/desktop-update.js +2 -48
- package/dist/digest-times.js +0 -2
- package/dist/disclosure.js +0 -5
- package/dist/discord-api.js +0 -6
- package/dist/discord-chat.js +0 -31
- package/dist/discord.js +0 -7
- package/dist/discover.js +0 -50
- package/dist/dispatch.js +61 -60
- package/dist/dispose.js +0 -208
- package/dist/doctor.js +0 -48
- package/dist/easy-start-args.js +7 -7
- package/dist/easy-start.js +32 -45
- package/dist/egress.js +1 -63
- package/dist/email-settings.js +0 -8
- package/dist/envelope.js +50 -86
- package/dist/eval-gate.js +1 -37
- package/dist/eval-hooks.js +0 -120
- package/dist/eval-oracle-main.js +0 -7
- package/dist/eval-oracle.js +3 -42
- package/dist/eval-world.js +1 -23
- package/dist/evals.js +6 -134
- package/dist/evidence-pack.js +0 -29
- package/dist/evidence-pair.js +0 -17
- package/dist/evidence.js +4 -280
- package/dist/exec.js +19 -404
- package/dist/exhaustion.js +0 -30
- package/dist/export-ui.js +0 -7
- package/dist/export.js +1 -38
- package/dist/failing-first.js +0 -6
- package/dist/fallback-schema.js +0 -5
- package/dist/fallback.js +0 -81
- package/dist/fast-start.js +0 -97
- package/dist/fast-terms.js +0 -3
- package/dist/fenced-check-coverage.js +0 -11
- package/dist/findings.js +1 -63
- package/dist/first-run.js +4 -57
- package/dist/first-tasks-child.js +0 -5
- package/dist/flaky-ci.js +1 -24
- package/dist/flaky-cli.js +0 -4
- package/dist/flaky.js +0 -43
- package/dist/fleet-schema.js +0 -11
- package/dist/flow-actions.js +0 -31
- package/dist/flow-browser.js +0 -42
- package/dist/flow-cadence.js +1 -24
- package/dist/flow-card-task.js +0 -11
- package/dist/flow-changed.js +0 -16
- package/dist/flow-code.js +1 -45
- package/dist/flow-draft.js +0 -17
- package/dist/flow-engine.js +2 -76
- package/dist/flow-gallery-ui.js +0 -28
- package/dist/flow-gallery.js +0 -54
- package/dist/flow-insights.js +0 -12
- package/dist/flow-items.js +0 -27
- package/dist/flow-live.js +0 -31
- package/dist/flow-people.js +0 -14
- package/dist/flow-pull-request.js +0 -32
- package/dist/flow-replies.js +0 -9
- package/dist/flow-result-card.js +0 -8
- package/dist/flow-schedule.js +0 -74
- package/dist/flow-scripts.js +0 -13
- package/dist/flow-secrets.js +0 -10
- package/dist/flow-send.js +0 -45
- package/dist/flow-share.js +0 -60
- package/dist/flow-sort.js +1 -24
- package/dist/flow-starters-ui.js +0 -2
- package/dist/flow-starters.js +0 -13
- package/dist/flow-steps.js +0 -80
- package/dist/flow-triggers.js +2 -256
- package/dist/flow-unattended-words.js +0 -13
- package/dist/flow-unattended.js +2 -115
- package/dist/flows-cli.js +2 -36
- package/dist/flows-ui.js +0 -51
- package/dist/flows.js +0 -158
- package/dist/folder-gate.js +0 -21
- package/dist/folder-look.js +0 -42
- package/dist/follow-through-brief.js +0 -6
- package/dist/follow-through-cli.js +0 -5
- package/dist/fonts.js +0 -13
- package/dist/gaps.js +0 -20
- package/dist/gate-failure.js +0 -7
- package/dist/git-floor.js +0 -12
- package/dist/git-incident.js +2 -38
- package/dist/git-views.js +0 -24
- package/dist/git.js +0 -31
- package/dist/github-import.js +0 -22
- package/dist/github-jobs.js +0 -12
- package/dist/google-mail.js +2 -27
- package/dist/grant.js +0 -110
- package/dist/graph.js +0 -108
- package/dist/guides.js +4 -15
- package/dist/handover-note.js +0 -12
- package/dist/health-cli.js +0 -2
- package/dist/home-groups.js +0 -15
- package/dist/html.js +0 -54
- package/dist/install-method.js +0 -12
- package/dist/integrations-ui.js +0 -15
- package/dist/integrations.js +7 -50
- package/dist/invoke.js +1 -381
- package/dist/is-record.js +0 -1
- package/dist/issues.js +0 -48
- package/dist/jsonl-discriminants.js +0 -6
- package/dist/keymap.js +0 -17
- package/dist/keys.js +0 -56
- package/dist/kits-ui.js +0 -3
- package/dist/kits.js +1 -24
- package/dist/knowledge-cli.js +0 -4
- package/dist/knowledge-ui.js +0 -8
- package/dist/landed-cleanup.js +0 -119
- package/dist/laptop-background.js +0 -85
- package/dist/laptop-service.js +0 -67
- package/dist/latency-timeline.js +2 -23
- package/dist/lead-about.js +0 -7
- package/dist/lead-answer-eval.js +0 -39
- package/dist/lead-capabilities.js +0 -19
- package/dist/lead-cli-live.js +0 -22
- package/dist/lead-cli.js +0 -27
- package/dist/lead-commitments.js +1 -27
- package/dist/lead-context.js +2 -42
- package/dist/lead-contract.js +0 -8
- package/dist/lead-doors.js +0 -105
- package/dist/lead-follow.js +0 -41
- package/dist/lead-identity.js +1 -4
- package/dist/lead-latency-schema.js +0 -13
- package/dist/lead-people.js +3 -18
- package/dist/lead-progress.js +0 -12
- package/dist/lead-queue-runtime.js +0 -26
- package/dist/lead-queue.js +0 -35
- package/dist/lead-route.js +0 -33
- package/dist/lead-status.js +0 -37
- package/dist/lead-sweep.js +0 -18
- package/dist/lead-tools.js +0 -160
- package/dist/lead-voice.js +0 -54
- package/dist/lead.js +2 -105
- package/dist/learning-child.js +0 -6
- package/dist/learning-look.js +0 -14
- package/dist/ledger-chain.js +0 -34
- package/dist/ledger-csv.js +0 -2
- package/dist/ledger-view.js +0 -3
- package/dist/lesson-notes.js +0 -56
- package/dist/limits-ui.js +0 -14
- package/dist/link.js +0 -79
- package/dist/live-backup.js +3 -33
- package/dist/live-bus.js +7 -81
- package/dist/live-children-read.js +4 -47
- package/dist/live-children.js +4 -44
- package/dist/live-detail.js +0 -17
- package/dist/live-input.js +5 -68
- package/dist/live-main-read.js +1 -14
- package/dist/live-notes.js +0 -12
- package/dist/live-open.js +1 -23
- package/dist/live-records.js +4 -151
- package/dist/live-reply.js +1 -51
- package/dist/live-terminal.js +12 -111
- package/dist/live.js +4 -130
- package/dist/local-owner-acts.js +0 -53
- package/dist/local-owner.js +2 -93
- package/dist/log.js +0 -8
- package/dist/login-secrets.js +2 -38
- package/dist/machine-check.js +0 -2
- package/dist/machine-identity.js +1 -46
- package/dist/mailbox.js +0 -30
- package/dist/maintenance.js +1 -3
- package/dist/mcp-connect.js +0 -88
- package/dist/mcp-core.js +0 -45
- package/dist/mcp-http.js +0 -13
- package/dist/mcp-oauth.js +0 -37
- package/dist/mcp-person.js +0 -11
- package/dist/mcp.js +3 -73
- package/dist/memory-cli.js +0 -3
- package/dist/memory-pass.js +0 -53
- package/dist/memory-tidy.js +0 -55
- package/dist/memory-use.js +2 -24
- package/dist/merge-checklist.js +21 -29
- package/dist/metrics.js +0 -10
- package/dist/mobile-viewport.js +0 -6
- package/dist/model-catalog.js +1 -33
- package/dist/model-choices.js +9 -84
- package/dist/model-names.js +0 -9
- package/dist/models-cli.js +0 -13
- package/dist/models-ui.js +0 -17
- package/dist/modes.js +0 -35
- package/dist/monitoring-settings.js +2 -27
- package/dist/monitoring-ui.js +2 -14
- package/dist/monitoring.js +2 -38
- package/dist/names.js +0 -39
- package/dist/needs-you.js +7 -70
- package/dist/never-index.js +0 -9
- package/dist/nightly-check.js +0 -74
- package/dist/nightly-github.js +0 -168
- package/dist/notification-delivery.js +0 -3
- package/dist/notification-rows.js +0 -17
- package/dist/oauth-run-token.js +1 -37
- package/dist/observations.js +0 -16
- package/dist/oidc.js +1 -20
- package/dist/onboard.js +4 -57
- package/dist/one-step-chat-schema.js +0 -15
- package/dist/openrouter-models.js +0 -6
- package/dist/operate-remote-arguments.js +0 -17
- package/dist/operate-remote.js +0 -33
- package/dist/operate.js +227 -2326
- package/dist/orphan-sweep.js +3 -37
- package/dist/page-work-contract.js +0 -3
- package/dist/password-bearer.js +1 -11
- package/dist/passwordless.js +0 -3
- package/dist/peek-cli.js +0 -46
- package/dist/peek.js +2 -61
- package/dist/people-audit-ui.js +0 -6
- package/dist/person-proof.js +0 -6
- package/dist/phase-routing.js +8 -183
- package/dist/plain-schema.js +0 -14
- package/dist/plain-words.js +18 -12
- package/dist/plan-auto.js +0 -20
- package/dist/plan-login.js +0 -16
- package/dist/plan.js +0 -68
- package/dist/plane-review.js +0 -56
- package/dist/planner-source.js +0 -96
- package/dist/planner.js +0 -117
- package/dist/policy-ui.js +0 -8
- package/dist/policy.js +0 -47
- package/dist/prepared-evidence.js +0 -5
- package/dist/principal.js +0 -29
- package/dist/probe.js +0 -30
- package/dist/process-custody.js +0 -15
- package/dist/process-liveness.js +0 -32
- package/dist/process-tree.js +3 -29
- package/dist/project-access.js +0 -10
- package/dist/project-admission.js +1 -41
- package/dist/project-cli.js +0 -6
- package/dist/project-concurrency.js +0 -35
- package/dist/project-delete-ui.js +4 -29
- package/dist/project-delete.js +1 -73
- package/dist/project-demo.js +0 -13
- package/dist/project-file.js +0 -2
- package/dist/project-identity.js +0 -41
- package/dist/project-knowledge.js +0 -39
- package/dist/project-learning.js +3 -55
- package/dist/project-memory.js +2 -45
- package/dist/project-outcomes.js +0 -6
- package/dist/project-sandbox.js +0 -23
- package/dist/project-skills.js +0 -12
- package/dist/project-tools.js +6 -184
- package/dist/project.js +0 -48
- package/dist/prompt.js +0 -31
- package/dist/proof.js +0 -220
- package/dist/proposal.js +0 -50
- package/dist/protected-storage-look.js +0 -6
- package/dist/protected-storage.js +1 -84
- package/dist/provider-auth.js +3 -69
- package/dist/provider-capture.js +1 -15
- package/dist/provider-connection.js +0 -8
- package/dist/provider-home.js +0 -25
- package/dist/provider-limits.js +0 -14
- package/dist/provider.js +0 -324
- package/dist/public-access.js +0 -34
- package/dist/public-check.js +0 -16
- package/dist/publish.js +1 -150
- package/dist/pull-request-flow.js +0 -77
- package/dist/pull-request-schema.js +0 -4
- package/dist/pull-request-ui.js +0 -5
- package/dist/pulls.js +0 -80
- package/dist/push.js +5 -89
- package/dist/quick-start.js +1 -23
- package/dist/read-executor-worker.js +0 -1
- package/dist/read-executor.js +0 -10
- package/dist/read-only-request.js +0 -7
- package/dist/recipe-ui.js +0 -6
- package/dist/recipes.js +0 -13
- package/dist/release-adapters.js +6 -214
- package/dist/release-approval.js +0 -74
- package/dist/release-authority.js +0 -42
- package/dist/release-auto.js +0 -142
- package/dist/release-card.js +0 -100
- package/dist/release-carry.js +0 -132
- package/dist/release-ci-hold.js +0 -20
- package/dist/release-cli.js +0 -46
- package/dist/release-coverage.js +0 -16
- package/dist/release-gate.js +0 -30
- package/dist/release-git.js +0 -24
- package/dist/release-links.js +0 -17
- package/dist/release-net.js +0 -42
- package/dist/release-next.js +0 -25
- package/dist/release-recheck.js +0 -89
- package/dist/release-refusal.js +0 -18
- package/dist/release-view.js +0 -5
- package/dist/release.js +7 -341
- package/dist/releases.js +0 -49
- package/dist/remote-audit.js +0 -25
- package/dist/remote-command.js +0 -16
- package/dist/remote-destination.js +5 -26
- package/dist/remote-exec.js +1 -27
- package/dist/remote-main.js +1 -53
- package/dist/remote-run.js +0 -5
- package/dist/remote.js +0 -49
- package/dist/render.js +0 -133
- package/dist/reply-shape.js +0 -85
- package/dist/reply-voice.js +0 -7
- package/dist/report-summary.js +0 -5
- package/dist/reported-usage.js +0 -30
- package/dist/repos.js +9 -62
- package/dist/repository-context.js +1 -24
- package/dist/request-budget-ui.js +0 -4
- package/dist/request-budget.js +0 -23
- package/dist/restart-certification.js +0 -37
- package/dist/result-actions.js +0 -62
- package/dist/result-acts.js +0 -34
- package/dist/result-completion.js +0 -25
- package/dist/result-evidence-readers.js +0 -3
- package/dist/result-follow-ups.js +1 -39
- package/dist/result-review.js +0 -86
- package/dist/result-shots.js +0 -39
- package/dist/retention-ui.js +0 -7
- package/dist/retention.js +2 -46
- package/dist/review-context.js +0 -129
- package/dist/review-evidence.js +0 -4
- package/dist/review-switch.js +1 -7
- package/dist/reviewer.js +0 -35
- package/dist/route-change-check.js +0 -2
- package/dist/route-change.js +0 -16
- package/dist/route-hooks.js +0 -27
- package/dist/route-results.js +2 -58
- package/dist/route-rules.js +1 -106
- package/dist/route-savings.js +0 -36
- package/dist/route-store.js +1 -133
- package/dist/run-closeout.js +2 -50
- package/dist/run-efficiency.js +2 -44
- package/dist/run-ending.js +0 -13
- package/dist/runner-process.js +0 -33
- package/dist/runner.js +17 -189
- package/dist/sample-project.js +2 -27
- package/dist/sandbox-launch.js +4 -25
- package/dist/sandbox-runtime.js +1 -88
- package/dist/scan.js +0 -27
- package/dist/scope.js +4 -567
- package/dist/scout-browser-lock.js +0 -6
- package/dist/scout-browser.js +2 -68
- package/dist/scout-net.js +1 -32
- package/dist/scout-report.js +0 -22
- package/dist/scout.js +1 -116
- package/dist/secret-mint.js +0 -6
- package/dist/serve.js +21 -555
- package/dist/server/agents-computers.js +0 -10
- package/dist/server/agents-live-filed.js +0 -13
- package/dist/server/agents-live-lead.js +0 -19
- package/dist/server/agents-live-room.js +0 -19
- package/dist/server/chat.js +2 -194
- package/dist/server/chrome.js +17 -263
- package/dist/server/console.css +4 -4
- package/dist/server/edge-refusal.js +0 -3
- package/dist/server/flows.js +5 -74
- package/dist/server/guards.js +1 -88
- package/dist/server/handler-registry.js +0 -2
- package/dist/server/home-asks.js +1 -22
- package/dist/server/home.js +1 -30
- package/dist/server/http.js +0 -82
- package/dist/server/in-place.js +0 -15
- package/dist/server/kit-standalone.js +0 -20
- package/dist/server/kit.js +2 -114
- package/dist/server/last-checks.js +0 -2
- package/dist/server/live.js +1 -36
- package/dist/server/merge-ready-view.js +0 -6
- package/dist/server/mutation-key.js +3 -40
- package/dist/server/pages-assets.js +0 -16
- package/dist/server/pages.js +7 -195
- package/dist/server/people-tokens.js +3 -101
- package/dist/server/remote-hooks.js +0 -13
- package/dist/server/remote.js +0 -28
- package/dist/server/render-chat.js +8 -144
- package/dist/server/render-code-map.js +0 -5
- package/dist/server/render-flaky.js +0 -8
- package/dist/server/render-follow-through.js +2 -5
- package/dist/server/render-history.js +2 -34
- package/dist/server/render-new-task.js +2 -29
- package/dist/server/render-pages.js +1 -111
- package/dist/server/render-people.js +2 -46
- package/dist/server/render-projects.js +15 -32
- package/dist/server/render-release.js +1 -14
- package/dist/server/render-results.js +4 -355
- package/dist/server/render-settings.js +0 -15
- package/dist/server/render-tasks.js +13 -493
- package/dist/server/request-context.js +2 -9
- package/dist/server/retired-routes.js +0 -11
- package/dist/server/route-policy.js +0 -3
- package/dist/server/route-table.js +6 -135
- package/dist/server/runtime.js +0 -1
- package/dist/server/session.js +0 -28
- package/dist/server/settings.js +40 -246
- package/dist/server/signup-gate.js +0 -11
- package/dist/server/sweeps.js +0 -6
- package/dist/server/task-views.js +9 -227
- package/dist/server/tasks.js +5 -539
- package/dist/server/terminals.js +2 -46
- package/dist/server/welcome.js +2 -22
- package/dist/server-telemetry.js +0 -9
- package/dist/settings-groups-ui.js +50 -63
- package/dist/settings-kit-script.js +0 -19
- package/dist/settings-kit.js +0 -63
- package/dist/settings-proofs.js +0 -23
- package/dist/setup-guide.js +1 -9
- package/dist/shared-deps.js +9 -84
- package/dist/sign-in-guard.js +0 -27
- package/dist/skills-ui.js +0 -2
- package/dist/skills.js +2 -54
- package/dist/slack-api.js +0 -3
- package/dist/slack-chat.js +0 -25
- package/dist/slack-settings.js +0 -1
- package/dist/slack-socket.js +0 -5
- package/dist/slack.js +0 -4
- package/dist/sleep.js +0 -1
- package/dist/source-key.js +0 -10
- package/dist/spend-report.js +0 -29
- package/dist/spend-ui.js +0 -26
- package/dist/spend.js +0 -40
- package/dist/sqlite-runtime.js +0 -2
- package/dist/sqlite-telemetry.js +0 -9
- package/dist/sso-settings.js +0 -13
- package/dist/sso-ui.js +0 -2
- package/dist/staged-runtimes.js +5 -39
- package/dist/steer-capabilities.js +1 -7
- package/dist/steer-controls.js +0 -10
- package/dist/steer-live.js +0 -31
- package/dist/steer-mailbox.js +4 -65
- package/dist/steer-status.js +0 -7
- package/dist/stop-proof.js +5 -62
- package/dist/storage-sweep-child.js +1 -5
- package/dist/storage-sweep-process.js +2 -20
- package/dist/storage-sweep-schedule.js +0 -32
- package/dist/storage-sweep.js +2 -51
- package/dist/storage-ui.js +0 -18
- package/dist/storage.js +0 -31
- package/dist/store-baseline.js +0 -14
- package/dist/store.js +109 -4763
- package/dist/stream-scope.js +0 -16
- package/dist/structured-output.js +0 -39
- package/dist/style-asset.js +0 -2
- package/dist/subagent-admin.js +0 -9
- package/dist/subagent-desk.js +0 -29
- package/dist/subagent-memory.js +0 -38
- package/dist/subagent-question.js +0 -29
- package/dist/subagent-tools.js +1 -60
- package/dist/subagent-week.js +0 -28
- package/dist/subagent-work.js +1 -39
- package/dist/subagents-ui.js +1 -13
- package/dist/subagents.js +0 -40
- package/dist/subscription-chat.js +1 -42
- package/dist/summary.js +0 -19
- package/dist/surface.js +0 -75
- package/dist/sweep-gate.js +0 -2
- package/dist/sweep-quarantine.js +2 -13
- package/dist/sync.js +0 -47
- package/dist/tailnet.js +0 -9
- package/dist/tamper-scan.js +0 -15
- package/dist/task-activity.js +1 -16
- package/dist/task-aliases.js +0 -3
- package/dist/task-archive.js +0 -7
- package/dist/task-base.js +0 -18
- package/dist/task-composer.js +0 -2
- package/dist/task-control.js +0 -74
- package/dist/task-live.js +0 -23
- package/dist/task-moves.js +0 -28
- package/dist/task-outcome-cli.js +17 -28
- package/dist/task-review-brief.js +0 -7
- package/dist/task-sizing.js +0 -47
- package/dist/task-source.js +0 -23
- package/dist/task-status.js +0 -106
- package/dist/task-text.js +0 -12
- package/dist/team-chat-authorization.js +0 -3
- package/dist/team-contract.js +0 -2
- package/dist/team-http.js +0 -4
- package/dist/team-leads.js +1 -16
- package/dist/team-runtime.js +0 -13
- package/dist/team-ui.js +0 -1
- package/dist/team-updates.js +0 -4
- package/dist/teams-api.js +0 -12
- package/dist/teams-chat.js +0 -28
- package/dist/teams.js +0 -12
- package/dist/teardown-git.js +6 -294
- package/dist/telegram-flow.js +0 -51
- package/dist/telegram-lead.js +2 -203
- package/dist/telegram-live.js +1 -42
- package/dist/telegram-progress.js +0 -18
- package/dist/telegram-settings.js +0 -7
- package/dist/telegram-status.js +0 -46
- package/dist/telegram-team.js +1 -33
- package/dist/telegram.js +6 -454
- package/dist/templates.js +0 -24
- package/dist/terminal-catalog.js +2 -20
- package/dist/terminal-text.js +0 -12
- package/dist/test-infra.js +0 -50
- package/dist/test-temp.js +3 -26
- package/dist/text-limits.js +0 -92
- package/dist/tidy.js +0 -76
- package/dist/tier-report.js +0 -2
- package/dist/token-notices.js +1 -9
- package/dist/tokens-cli.js +0 -13
- package/dist/tool-broker.js +2 -53
- package/dist/tool-launcher.js +0 -14
- package/dist/tool-secret-store.js +3 -125
- package/dist/toolroll-update-cli.js +0 -9
- package/dist/toolroll-update-ui.js +0 -14
- package/dist/toolroll-update.js +13 -252
- package/dist/tools-ui.js +0 -17
- package/dist/transitions-recipes.js +0 -2
- package/dist/tree-proof.js +0 -23
- package/dist/tui-contract.js +0 -8
- package/dist/tui-source.js +16 -36
- package/dist/tui.js +1 -1
- package/dist/typed-start.js +0 -27
- package/dist/unfenced-test-support.js +0 -5
- package/dist/up-processes.js +1 -40
- package/dist/up-role-child.js +1 -13
- package/dist/update-notice.js +0 -1
- package/dist/vanished-retry.js +0 -40
- package/dist/verification-evidence.js +0 -39
- package/dist/version.js +0 -1
- package/dist/wake-hub.js +0 -28
- package/dist/webhook-limits.js +0 -7
- package/dist/webhook-readers.js +0 -30
- package/dist/webhook-signing.js +0 -14
- package/dist/webhooks.js +0 -54
- package/dist/welcome-facts.js +2 -14
- package/dist/when-html.js +0 -27
- package/dist/work-index.js +26 -98
- package/dist/work-summary.js +2 -17
- package/dist/workspace-motion.js +0 -2
- package/dist/workspace-revision.js +1 -21
- package/dist/workspace-ui.js +15 -135
- package/dist/worktree-notices.js +0 -3
- package/dist/worktree.js +0 -308
- package/dist/writes-mode.js +0 -1
- package/dist/youiyoux-intake.js +4 -159
- package/package.json +4 -3
- package/dist/accent-colors.d.ts +0 -51
- package/dist/acp-agents.d.ts +0 -43
- package/dist/acp-attest.d.ts +0 -44
- package/dist/acp-check.d.ts +0 -37
- package/dist/acp-client.d.ts +0 -163
- package/dist/acp-inspect.d.ts +0 -23
- package/dist/action-ledger.d.ts +0 -27
- package/dist/activity-line.d.ts +0 -29
- package/dist/actor.d.ts +0 -11
- package/dist/agent-board.d.ts +0 -229
- package/dist/agent-fence.d.ts +0 -479
- package/dist/agent-onboard.d.ts +0 -158
- package/dist/agent-pulse.d.ts +0 -43
- package/dist/agent-state-words.d.ts +0 -19
- package/dist/agent-state.d.ts +0 -65
- package/dist/agent-turns.d.ts +0 -52
- package/dist/agentconfig.d.ts +0 -191
- package/dist/agents-board.d.ts +0 -145
- package/dist/agents-live.d.ts +0 -31
- package/dist/api-tokens.d.ts +0 -80
- package/dist/approval-authority.d.ts +0 -51
- package/dist/approval-password.d.ts +0 -31
- package/dist/approval-policy.d.ts +0 -69
- package/dist/approval-rules-ui.d.ts +0 -40
- package/dist/assignment-adapters.d.ts +0 -152
- package/dist/assignment-brief.d.ts +0 -83
- package/dist/assignment-delivery.d.ts +0 -86
- package/dist/assignment-presentation.d.ts +0 -37
- package/dist/assignment-status.d.ts +0 -71
- package/dist/assignment-ui.d.ts +0 -68
- package/dist/assignment.d.ts +0 -350
- package/dist/attest.d.ts +0 -59
- package/dist/audit-cli.d.ts +0 -17
- package/dist/backend.d.ts +0 -97
- package/dist/backup-ui.d.ts +0 -32
- package/dist/backup.d.ts +0 -92
- package/dist/batch-checks.d.ts +0 -15
- package/dist/batch-policy.d.ts +0 -23
- package/dist/beads.d.ts +0 -34
- package/dist/bin.d.ts +0 -2
- package/dist/board.d.ts +0 -134
- package/dist/boot-identity.d.ts +0 -64
- package/dist/bounded-spawn.d.ts +0 -57
- package/dist/brand-icons.d.ts +0 -168
- package/dist/brand-mark.d.ts +0 -28
- package/dist/brief-fence.d.ts +0 -9
- package/dist/browser-crew.d.ts +0 -12
- package/dist/browser-shell.d.ts +0 -9
- package/dist/browser-workspace.d.ts +0 -1985
- package/dist/budget-alerts.d.ts +0 -19
- package/dist/build-review.d.ts +0 -38
- package/dist/builder-restart.d.ts +0 -21
- package/dist/builder.d.ts +0 -409
- package/dist/canonical-json.d.ts +0 -14
- package/dist/capscan.d.ts +0 -35
- package/dist/card-catalog.d.ts +0 -209
- package/dist/card-cli.d.ts +0 -43
- package/dist/card-render.d.ts +0 -43
- package/dist/card-sources.d.ts +0 -68
- package/dist/chat-acceptance.d.ts +0 -74
- package/dist/chat-actions.d.ts +0 -460
- package/dist/chat-admission.d.ts +0 -19
- package/dist/chat-approval.d.ts +0 -58
- package/dist/chat-ask.d.ts +0 -32
- package/dist/chat-card-part.d.ts +0 -11
- package/dist/chat-card.d.ts +0 -46
- package/dist/chat-channel.d.ts +0 -126
- package/dist/chat-continuity.d.ts +0 -32
- package/dist/chat-controls.d.ts +0 -117
- package/dist/chat-core.d.ts +0 -177
- package/dist/chat-decide.d.ts +0 -269
- package/dist/chat-delivery-state.d.ts +0 -132
- package/dist/chat-delivery.d.ts +0 -71
- package/dist/chat-display.d.ts +0 -1
- package/dist/chat-evidence.d.ts +0 -123
- package/dist/chat-flow.d.ts +0 -70
- package/dist/chat-follow.d.ts +0 -20
- package/dist/chat-inbox.d.ts +0 -57
- package/dist/chat-live-schema.d.ts +0 -17
- package/dist/chat-live.d.ts +0 -161
- package/dist/chat-message-states.d.ts +0 -75
- package/dist/chat-messages.d.ts +0 -338
- package/dist/chat-migration.d.ts +0 -30
- package/dist/chat-polish.d.ts +0 -17
- package/dist/chat-quiet.d.ts +0 -40
- package/dist/chat-review.d.ts +0 -51
- package/dist/chat-rooms.d.ts +0 -123
- package/dist/chat-settings-page.d.ts +0 -43
- package/dist/chat-task-actions.d.ts +0 -59
- package/dist/chat-terms.d.ts +0 -29
- package/dist/chat-voice.d.ts +0 -69
- package/dist/chat-warmth.d.ts +0 -21
- package/dist/check-access.d.ts +0 -54
- package/dist/check-facts.d.ts +0 -126
- package/dist/check-failure.d.ts +0 -113
- package/dist/check-levels-ui.d.ts +0 -36
- package/dist/check-levels.d.ts +0 -70
- package/dist/check-load.d.ts +0 -85
- package/dist/check-only-standing.d.ts +0 -36
- package/dist/check-only.d.ts +0 -15
- package/dist/check-progress.d.ts +0 -78
- package/dist/check-repair.d.ts +0 -47
- package/dist/check-report.d.ts +0 -177
- package/dist/check-stamp.d.ts +0 -46
- package/dist/checkout-cleanup.d.ts +0 -157
- package/dist/checkout-proof.d.ts +0 -28
- package/dist/child-database.d.ts +0 -12
- package/dist/claim.d.ts +0 -627
- package/dist/claude-print.d.ts +0 -12
- package/dist/cli-fast.d.ts +0 -8
- package/dist/cli-help.d.ts +0 -8
- package/dist/cli-http.d.ts +0 -58
- package/dist/cli.d.ts +0 -149
- package/dist/code-extract.d.ts +0 -44
- package/dist/code-map-acts.d.ts +0 -24
- package/dist/code-map-admission.d.ts +0 -52
- package/dist/code-map-build.d.ts +0 -63
- package/dist/code-map-cli.d.ts +0 -153
- package/dist/code-map-main.d.ts +0 -1
- package/dist/code-map-read.d.ts +0 -106
- package/dist/code-map-report.d.ts +0 -37
- package/dist/code-map-shape.d.ts +0 -172
- package/dist/code-map-store.d.ts +0 -136
- package/dist/codex-limits.d.ts +0 -15
- package/dist/coding-context.d.ts +0 -18
- package/dist/coding-handoff.d.ts +0 -39
- package/dist/coding-provider.d.ts +0 -88
- package/dist/coding-shipping-ui.d.ts +0 -5
- package/dist/coding-types.d.ts +0 -16
- package/dist/coding-ui.d.ts +0 -19
- package/dist/coding-update.d.ts +0 -28
- package/dist/coding-workspace.d.ts +0 -141
- package/dist/commit-extract.d.ts +0 -135
- package/dist/connect-cli.d.ts +0 -34
- package/dist/console-chrome.d.ts +0 -41
- package/dist/console-instance.d.ts +0 -157
- package/dist/container-state.d.ts +0 -5
- package/dist/containment.d.ts +0 -205
- package/dist/contract-changes.d.ts +0 -52
- package/dist/contracts/acceptance-terms.d.ts +0 -14
- package/dist/contracts/chat-actions.d.ts +0 -465
- package/dist/contracts/chat-callback-rows.d.ts +0 -59
- package/dist/contracts/chat-card.d.ts +0 -91
- package/dist/contracts/chat-content.d.ts +0 -551
- package/dist/contracts/chat-tables.d.ts +0 -12
- package/dist/contracts/cli.d.ts +0 -987
- package/dist/contracts/coding-activity.d.ts +0 -64
- package/dist/contracts/coding-context.d.ts +0 -97
- package/dist/contracts/coding-handoff.d.ts +0 -44
- package/dist/contracts/coding-workspace.d.ts +0 -165
- package/dist/contracts/console-api.d.ts +0 -540
- package/dist/contracts/contract-test.d.ts +0 -45
- package/dist/contracts/contract.d.ts +0 -92
- package/dist/contracts/decision.d.ts +0 -45
- package/dist/contracts/diff-stat.d.ts +0 -58
- package/dist/contracts/discord-callback.d.ts +0 -45
- package/dist/contracts/flow-card.d.ts +0 -53
- package/dist/contracts/flow-propose.d.ts +0 -334
- package/dist/contracts/flow-send.d.ts +0 -245
- package/dist/contracts/flow.d.ts +0 -19565
- package/dist/contracts/gateway-tools.d.ts +0 -472
- package/dist/contracts/handoff.d.ts +0 -91
- package/dist/contracts/health.d.ts +0 -82
- package/dist/contracts/integration-metadata.d.ts +0 -100
- package/dist/contracts/lead-context.d.ts +0 -165
- package/dist/contracts/lead-tools.d.ts +0 -2312
- package/dist/contracts/mcp-oauth.d.ts +0 -53
- package/dist/contracts/memory-pass.d.ts +0 -157
- package/dist/contracts/model-catalog.d.ts +0 -21
- package/dist/contracts/observation-request.d.ts +0 -37
- package/dist/contracts/plan.d.ts +0 -58
- package/dist/contracts/project-knowledge.d.ts +0 -159
- package/dist/contracts/project-memory.d.ts +0 -119
- package/dist/contracts/project-skills.d.ts +0 -120
- package/dist/contracts/proof.d.ts +0 -136
- package/dist/contracts/provider.d.ts +0 -40
- package/dist/contracts/recipes.d.ts +0 -166
- package/dist/contracts/release-check.d.ts +0 -371
- package/dist/contracts/release-terms.d.ts +0 -107
- package/dist/contracts/retention.d.ts +0 -42
- package/dist/contracts/review-findings.d.ts +0 -46
- package/dist/contracts/route-results.d.ts +0 -121
- package/dist/contracts/route.d.ts +0 -897
- package/dist/contracts/scope.d.ts +0 -105
- package/dist/contracts/scout-report.d.ts +0 -234
- package/dist/contracts/slack-callback.d.ts +0 -43
- package/dist/contracts/sort-answer.d.ts +0 -83
- package/dist/contracts/stage-output.d.ts +0 -127
- package/dist/contracts/storage.d.ts +0 -37
- package/dist/contracts/store-json.d.ts +0 -313
- package/dist/contracts/subagent-turn.d.ts +0 -43
- package/dist/contracts/task-sizing.d.ts +0 -24
- package/dist/contracts/teams-callback.d.ts +0 -13
- package/dist/contracts/telegram-callback.d.ts +0 -120
- package/dist/contracts/trigger-payloads.d.ts +0 -389
- package/dist/contracts/update-journal.d.ts +0 -254
- package/dist/contracts/verification-receipt.d.ts +0 -200
- package/dist/contracts/verification-view.d.ts +0 -102
- package/dist/contracts/youiyoux-request.d.ts +0 -248
- package/dist/control-setup.d.ts +0 -44
- package/dist/control-ui.d.ts +0 -37
- package/dist/controller-service.d.ts +0 -1
- package/dist/controller-supervisor.d.ts +0 -38
- package/dist/converse.d.ts +0 -316
- package/dist/coordinator-proposals.d.ts +0 -29
- package/dist/coordinator.d.ts +0 -186
- package/dist/credentials-ui.d.ts +0 -33
- package/dist/daemon.d.ts +0 -226
- package/dist/database-reclaim.d.ts +0 -4
- package/dist/decision.d.ts +0 -119
- package/dist/demo-chat.d.ts +0 -32
- package/dist/demo.d.ts +0 -153
- package/dist/deploy-gate.d.ts +0 -20
- package/dist/deploy-lock.d.ts +0 -8
- package/dist/deploy-phase.d.ts +0 -37
- package/dist/deploy-rescue.d.ts +0 -42
- package/dist/deprecations.d.ts +0 -20
- package/dist/design/kit.d.ts +0 -216
- package/dist/desktop-access.d.ts +0 -28
- package/dist/desktop-bundle.d.ts +0 -16
- package/dist/desktop-host.d.ts +0 -54
- package/dist/desktop-update-gate.d.ts +0 -12
- package/dist/desktop-update-recovery.d.ts +0 -14
- package/dist/desktop-update.d.ts +0 -147
- package/dist/digest-times.d.ts +0 -3
- package/dist/disclosure.d.ts +0 -6
- package/dist/discord-api.d.ts +0 -24
- package/dist/discord-chat.d.ts +0 -27
- package/dist/discord-settings.d.ts +0 -4
- package/dist/discord.d.ts +0 -10
- package/dist/discover.d.ts +0 -75
- package/dist/dispatch.d.ts +0 -123
- package/dist/dispose.d.ts +0 -194
- package/dist/doctor.d.ts +0 -67
- package/dist/easy-start-args.d.ts +0 -13
- package/dist/easy-start.d.ts +0 -77
- package/dist/egress.d.ts +0 -121
- package/dist/email-settings.d.ts +0 -34
- package/dist/envelope.d.ts +0 -47
- package/dist/eval-gate.d.ts +0 -51
- package/dist/eval-hooks.d.ts +0 -94
- package/dist/eval-oracle-main.d.ts +0 -1
- package/dist/eval-oracle.d.ts +0 -60
- package/dist/eval-world.d.ts +0 -17
- package/dist/evals.d.ts +0 -299
- package/dist/evidence-pack.d.ts +0 -186
- package/dist/evidence-pair.d.ts +0 -53
- package/dist/evidence.d.ts +0 -371
- package/dist/exec.d.ts +0 -355
- package/dist/exhaustion.d.ts +0 -58
- package/dist/export-ui.d.ts +0 -11
- package/dist/export.d.ts +0 -48
- package/dist/failing-first.d.ts +0 -31
- package/dist/fallback-schema.d.ts +0 -8
- package/dist/fallback.d.ts +0 -138
- package/dist/fast-start.d.ts +0 -213
- package/dist/fast-terms.d.ts +0 -9
- package/dist/fenced-check-coverage.d.ts +0 -62
- package/dist/findings.d.ts +0 -224
- package/dist/first-run.d.ts +0 -197
- package/dist/first-tasks-child.d.ts +0 -1
- package/dist/flaky-ci.d.ts +0 -31
- package/dist/flaky-cli.d.ts +0 -60
- package/dist/flaky.d.ts +0 -83
- package/dist/fleet-schema.d.ts +0 -17
- package/dist/flow-actions.d.ts +0 -79
- package/dist/flow-browser.d.ts +0 -103
- package/dist/flow-cadence.d.ts +0 -48
- package/dist/flow-card-task.d.ts +0 -11
- package/dist/flow-changed.d.ts +0 -14
- package/dist/flow-code.d.ts +0 -84
- package/dist/flow-draft.d.ts +0 -42
- package/dist/flow-engine.d.ts +0 -82
- package/dist/flow-gallery-ui.d.ts +0 -73
- package/dist/flow-gallery.d.ts +0 -147
- package/dist/flow-insights.d.ts +0 -104
- package/dist/flow-items.d.ts +0 -37
- package/dist/flow-live.d.ts +0 -16
- package/dist/flow-people.d.ts +0 -23
- package/dist/flow-pull-request.d.ts +0 -14
- package/dist/flow-replies.d.ts +0 -48
- package/dist/flow-result-card.d.ts +0 -22
- package/dist/flow-schedule.d.ts +0 -154
- package/dist/flow-scripts.d.ts +0 -31
- package/dist/flow-secrets.d.ts +0 -13
- package/dist/flow-send.d.ts +0 -54
- package/dist/flow-share.d.ts +0 -78
- package/dist/flow-sort.d.ts +0 -63
- package/dist/flow-starters-ui.d.ts +0 -15
- package/dist/flow-starters.d.ts +0 -63
- package/dist/flow-steps.d.ts +0 -52
- package/dist/flow-triggers.d.ts +0 -303
- package/dist/flow-unattended-words.d.ts +0 -48
- package/dist/flow-unattended.d.ts +0 -259
- package/dist/flows-cli.d.ts +0 -358
- package/dist/flows-ui.d.ts +0 -70
- package/dist/flows.d.ts +0 -136
- package/dist/folder-gate.d.ts +0 -32
- package/dist/folder-look.d.ts +0 -110
- package/dist/follow-through-brief.d.ts +0 -12
- package/dist/follow-through-cli.d.ts +0 -23
- package/dist/fonts.d.ts +0 -19
- package/dist/gaps.d.ts +0 -35
- package/dist/gate-failure.d.ts +0 -40
- package/dist/git-floor.d.ts +0 -16
- package/dist/git-incident.d.ts +0 -65
- package/dist/git-views.d.ts +0 -20
- package/dist/git.d.ts +0 -54
- package/dist/github-import.d.ts +0 -62
- package/dist/github-jobs.d.ts +0 -25
- package/dist/google-mail.d.ts +0 -59
- package/dist/grant.d.ts +0 -136
- package/dist/graph.d.ts +0 -164
- package/dist/guides.d.ts +0 -22
- package/dist/handover-note.d.ts +0 -33
- package/dist/health-cli.d.ts +0 -3
- package/dist/home-groups.d.ts +0 -39
- package/dist/html.d.ts +0 -85
- package/dist/install-method.d.ts +0 -17
- package/dist/integrations-ui.d.ts +0 -17
- package/dist/integrations.d.ts +0 -138
- package/dist/invoke.d.ts +0 -228
- package/dist/is-record.d.ts +0 -2
- package/dist/issues.d.ts +0 -41
- package/dist/jsonl-discriminants.d.ts +0 -11
- package/dist/keymap.d.ts +0 -43
- package/dist/keys.d.ts +0 -108
- package/dist/kits-ui.d.ts +0 -16
- package/dist/kits.d.ts +0 -88
- package/dist/knowledge-cli.d.ts +0 -132
- package/dist/knowledge-ui.d.ts +0 -45
- package/dist/landed-cleanup.d.ts +0 -175
- package/dist/laptop-background.d.ts +0 -187
- package/dist/laptop-service.d.ts +0 -111
- package/dist/latency-timeline.d.ts +0 -46
- package/dist/lead-about.d.ts +0 -35
- package/dist/lead-answer-eval.d.ts +0 -93
- package/dist/lead-capabilities.d.ts +0 -57
- package/dist/lead-cli-live.d.ts +0 -56
- package/dist/lead-cli.d.ts +0 -58
- package/dist/lead-commitments.d.ts +0 -84
- package/dist/lead-context.d.ts +0 -45
- package/dist/lead-contract.d.ts +0 -10
- package/dist/lead-doors.d.ts +0 -122
- package/dist/lead-follow.d.ts +0 -26
- package/dist/lead-identity.d.ts +0 -23
- package/dist/lead-latency-schema.d.ts +0 -24
- package/dist/lead-people.d.ts +0 -55
- package/dist/lead-progress.d.ts +0 -67
- package/dist/lead-queue-runtime.d.ts +0 -46
- package/dist/lead-queue.d.ts +0 -104
- package/dist/lead-route.d.ts +0 -56
- package/dist/lead-status.d.ts +0 -116
- package/dist/lead-sweep.d.ts +0 -67
- package/dist/lead-tools.d.ts +0 -167
- package/dist/lead-voice.d.ts +0 -85
- package/dist/lead.d.ts +0 -142
- package/dist/learning-child.d.ts +0 -1
- package/dist/learning-look.d.ts +0 -25
- package/dist/ledger-chain.d.ts +0 -46
- package/dist/ledger-csv.d.ts +0 -4
- package/dist/ledger-view.d.ts +0 -27
- package/dist/lesson-notes.d.ts +0 -81
- package/dist/limits-ui.d.ts +0 -34
- package/dist/link.d.ts +0 -72
- package/dist/live-backup.d.ts +0 -39
- package/dist/live-bus.d.ts +0 -141
- package/dist/live-children-read.d.ts +0 -52
- package/dist/live-children.d.ts +0 -73
- package/dist/live-detail.d.ts +0 -27
- package/dist/live-input.d.ts +0 -68
- package/dist/live-main-read.d.ts +0 -19
- package/dist/live-notes.d.ts +0 -20
- package/dist/live-open.d.ts +0 -28
- package/dist/live-records.d.ts +0 -149
- package/dist/live-reply.d.ts +0 -83
- package/dist/live-terminal.d.ts +0 -273
- package/dist/live.d.ts +0 -152
- package/dist/local-owner-acts.d.ts +0 -83
- package/dist/local-owner.d.ts +0 -135
- package/dist/log.d.ts +0 -7
- package/dist/login-secrets.d.ts +0 -60
- package/dist/machine-check.d.ts +0 -16
- package/dist/machine-identity.d.ts +0 -75
- package/dist/mailbox.d.ts +0 -57
- package/dist/maintenance.d.ts +0 -13
- package/dist/mcp-connect.d.ts +0 -181
- package/dist/mcp-core.d.ts +0 -110
- package/dist/mcp-http.d.ts +0 -32
- package/dist/mcp-oauth.d.ts +0 -92
- package/dist/mcp-person.d.ts +0 -22
- package/dist/mcp.d.ts +0 -20
- package/dist/memory-cli.d.ts +0 -768
- package/dist/memory-pass.d.ts +0 -151
- package/dist/memory-tidy.d.ts +0 -181
- package/dist/memory-use.d.ts +0 -35
- package/dist/merge-checklist.d.ts +0 -55
- package/dist/metrics.d.ts +0 -6
- package/dist/mobile-viewport.d.ts +0 -7
- package/dist/model-catalog.d.ts +0 -123
- package/dist/model-choices.d.ts +0 -235
- package/dist/model-names.d.ts +0 -6
- package/dist/models-cli.d.ts +0 -307
- package/dist/models-ui.d.ts +0 -161
- package/dist/modes.d.ts +0 -99
- package/dist/monitoring-settings.d.ts +0 -44
- package/dist/monitoring-ui.d.ts +0 -23
- package/dist/monitoring.d.ts +0 -34
- package/dist/names.d.ts +0 -67
- package/dist/needs-you.d.ts +0 -164
- package/dist/never-index.d.ts +0 -3
- package/dist/nightly-check.d.ts +0 -107
- package/dist/nightly-github.d.ts +0 -318
- package/dist/notification-delivery.d.ts +0 -19
- package/dist/notification-rows.d.ts +0 -30
- package/dist/oauth-run-token.d.ts +0 -51
- package/dist/observations.d.ts +0 -36
- package/dist/oidc.d.ts +0 -71
- package/dist/onboard.d.ts +0 -108
- package/dist/one-step-chat-schema.d.ts +0 -22
- package/dist/openrouter-models.d.ts +0 -34
- package/dist/operate-remote-arguments.d.ts +0 -36
- package/dist/operate-remote.d.ts +0 -98
- package/dist/operate.d.ts +0 -401
- package/dist/orphan-sweep.d.ts +0 -65
- package/dist/page-work-contract.d.ts +0 -21
- package/dist/password-bearer.d.ts +0 -25
- package/dist/passwordless.d.ts +0 -23
- package/dist/peek-cli.d.ts +0 -112
- package/dist/peek.d.ts +0 -110
- package/dist/people-audit-ui.d.ts +0 -16
- package/dist/person-proof.d.ts +0 -2
- package/dist/phase-routing.d.ts +0 -401
- package/dist/plain-schema.d.ts +0 -23
- package/dist/plain-words.d.ts +0 -20
- package/dist/plan-auto.d.ts +0 -25
- package/dist/plan-login.d.ts +0 -14
- package/dist/plan.d.ts +0 -188
- package/dist/plane-review.d.ts +0 -54
- package/dist/planner-source.d.ts +0 -225
- package/dist/planner.d.ts +0 -76
- package/dist/policy-ui.d.ts +0 -22
- package/dist/policy.d.ts +0 -92
- package/dist/prepared-evidence.d.ts +0 -17
- package/dist/principal.d.ts +0 -42
- package/dist/probe.d.ts +0 -46
- package/dist/process-custody.d.ts +0 -17
- package/dist/process-liveness.d.ts +0 -13
- package/dist/process-tree.d.ts +0 -39
- package/dist/project-access.d.ts +0 -17
- package/dist/project-activity.d.ts +0 -20
- package/dist/project-admission.d.ts +0 -105
- package/dist/project-cli.d.ts +0 -19
- package/dist/project-concurrency.d.ts +0 -62
- package/dist/project-delete-ui.d.ts +0 -96
- package/dist/project-delete.d.ts +0 -59
- package/dist/project-demo.d.ts +0 -12
- package/dist/project-file.d.ts +0 -3
- package/dist/project-identity.d.ts +0 -52
- package/dist/project-knowledge.d.ts +0 -124
- package/dist/project-learning.d.ts +0 -120
- package/dist/project-memory.d.ts +0 -70
- package/dist/project-outcomes.d.ts +0 -119
- package/dist/project-sandbox.d.ts +0 -59
- package/dist/project-skills.d.ts +0 -139
- package/dist/project-tools.d.ts +0 -318
- package/dist/project.d.ts +0 -65
- package/dist/prompt.d.ts +0 -33
- package/dist/proof.d.ts +0 -457
- package/dist/proposal.d.ts +0 -70
- package/dist/protected-storage-look.d.ts +0 -1
- package/dist/protected-storage.d.ts +0 -98
- package/dist/provider-auth.d.ts +0 -143
- package/dist/provider-capture.d.ts +0 -34
- package/dist/provider-connection.d.ts +0 -23
- package/dist/provider-home.d.ts +0 -22
- package/dist/provider-limits.d.ts +0 -37
- package/dist/provider.d.ts +0 -369
- package/dist/public-access.d.ts +0 -61
- package/dist/public-check.d.ts +0 -37
- package/dist/publish.d.ts +0 -146
- package/dist/pull-request-flow.d.ts +0 -189
- package/dist/pull-request-schema.d.ts +0 -5
- package/dist/pull-request-ui.d.ts +0 -25
- package/dist/pulls.d.ts +0 -121
- package/dist/push.d.ts +0 -120
- package/dist/quality.d.ts +0 -8
- package/dist/quick-start.d.ts +0 -26
- package/dist/read-executor-worker.d.ts +0 -1
- package/dist/read-executor.d.ts +0 -66
- package/dist/read-only-request.d.ts +0 -4
- package/dist/recipe-ui.d.ts +0 -21
- package/dist/recipes.d.ts +0 -56
- package/dist/release-adapters.d.ts +0 -205
- package/dist/release-approval.d.ts +0 -180
- package/dist/release-authority.d.ts +0 -173
- package/dist/release-auto.d.ts +0 -184
- package/dist/release-card.d.ts +0 -170
- package/dist/release-carry.d.ts +0 -261
- package/dist/release-ci-hold.d.ts +0 -41
- package/dist/release-cli.d.ts +0 -34
- package/dist/release-coverage.d.ts +0 -16
- package/dist/release-gate.d.ts +0 -84
- package/dist/release-git.d.ts +0 -43
- package/dist/release-links.d.ts +0 -29
- package/dist/release-net.d.ts +0 -90
- package/dist/release-next.d.ts +0 -48
- package/dist/release-recheck.d.ts +0 -146
- package/dist/release-refusal.d.ts +0 -32
- package/dist/release-view.d.ts +0 -37
- package/dist/release.d.ts +0 -806
- package/dist/releases.d.ts +0 -94
- package/dist/remote-audit.d.ts +0 -79
- package/dist/remote-command.d.ts +0 -45
- package/dist/remote-destination.d.ts +0 -36
- package/dist/remote-exec.d.ts +0 -38
- package/dist/remote-main.d.ts +0 -111
- package/dist/remote-run.d.ts +0 -20
- package/dist/remote.d.ts +0 -67
- package/dist/render.d.ts +0 -64
- package/dist/reply-shape.d.ts +0 -106
- package/dist/reply-voice.d.ts +0 -23
- package/dist/report-summary.d.ts +0 -22
- package/dist/reported-usage.d.ts +0 -69
- package/dist/repos.d.ts +0 -67
- package/dist/repository-context-ui.d.ts +0 -3
- package/dist/repository-context.d.ts +0 -66
- package/dist/request-budget-ui.d.ts +0 -14
- package/dist/request-budget.d.ts +0 -127
- package/dist/restart-certification.d.ts +0 -133
- package/dist/result-actions.d.ts +0 -36
- package/dist/result-acts.d.ts +0 -112
- package/dist/result-completion.d.ts +0 -39
- package/dist/result-evidence-readers.d.ts +0 -42
- package/dist/result-follow-ups.d.ts +0 -118
- package/dist/result-review.d.ts +0 -220
- package/dist/result-shots.d.ts +0 -59
- package/dist/retention-ui.d.ts +0 -21
- package/dist/retention.d.ts +0 -77
- package/dist/review-context.d.ts +0 -245
- package/dist/review-evidence.d.ts +0 -33
- package/dist/review-switch.d.ts +0 -36
- package/dist/reviewer.d.ts +0 -99
- package/dist/route-change-check.d.ts +0 -4
- package/dist/route-change.d.ts +0 -22
- package/dist/route-hooks.d.ts +0 -54
- package/dist/route-results.d.ts +0 -75
- package/dist/route-rules.d.ts +0 -324
- package/dist/route-savings.d.ts +0 -136
- package/dist/route-store.d.ts +0 -300
- package/dist/run-closeout.d.ts +0 -89
- package/dist/run-efficiency.d.ts +0 -74
- package/dist/run-ending.d.ts +0 -21
- package/dist/runner-process.d.ts +0 -76
- package/dist/runner.d.ts +0 -324
- package/dist/sample-project.d.ts +0 -31
- package/dist/sandbox-launch.d.ts +0 -1
- package/dist/sandbox-runtime.d.ts +0 -128
- package/dist/scan.d.ts +0 -32
- package/dist/scope.d.ts +0 -1098
- package/dist/scout-browser-lock.d.ts +0 -69
- package/dist/scout-browser.d.ts +0 -107
- package/dist/scout-net.d.ts +0 -25
- package/dist/scout-report.d.ts +0 -23
- package/dist/scout.d.ts +0 -142
- package/dist/secret-mint.d.ts +0 -1
- package/dist/serve.d.ts +0 -11
- package/dist/server/agents-computers.d.ts +0 -9
- package/dist/server/agents-live-filed.d.ts +0 -17
- package/dist/server/agents-live-lead.d.ts +0 -47
- package/dist/server/agents-live-room.d.ts +0 -23
- package/dist/server/chat.d.ts +0 -39
- package/dist/server/chrome.d.ts +0 -328
- package/dist/server/edge-refusal.d.ts +0 -7
- package/dist/server/flows.d.ts +0 -8
- package/dist/server/guards.d.ts +0 -81
- package/dist/server/handler-context.d.ts +0 -22
- package/dist/server/handler-registry.d.ts +0 -23
- package/dist/server/home-asks.d.ts +0 -45
- package/dist/server/home.d.ts +0 -65
- package/dist/server/http.d.ts +0 -337
- package/dist/server/in-place.d.ts +0 -15
- package/dist/server/kit-standalone.d.ts +0 -22
- package/dist/server/kit.d.ts +0 -452
- package/dist/server/last-checks.d.ts +0 -17
- package/dist/server/live.d.ts +0 -74
- package/dist/server/merge-ready-view.d.ts +0 -10
- package/dist/server/mutation-key.d.ts +0 -70
- package/dist/server/pages-assets.d.ts +0 -11
- package/dist/server/pages.d.ts +0 -8
- package/dist/server/people-tokens.d.ts +0 -18
- package/dist/server/remote-hooks.d.ts +0 -29
- package/dist/server/remote.d.ts +0 -60
- package/dist/server/render-chat.d.ts +0 -439
- package/dist/server/render-code-map.d.ts +0 -30
- package/dist/server/render-flaky.d.ts +0 -20
- package/dist/server/render-follow-through.d.ts +0 -11
- package/dist/server/render-history.d.ts +0 -51
- package/dist/server/render-new-task.d.ts +0 -54
- package/dist/server/render-pages.d.ts +0 -236
- package/dist/server/render-people.d.ts +0 -102
- package/dist/server/render-projects.d.ts +0 -104
- package/dist/server/render-release.d.ts +0 -19
- package/dist/server/render-results.d.ts +0 -758
- package/dist/server/render-settings.d.ts +0 -93
- package/dist/server/render-tasks.d.ts +0 -783
- package/dist/server/request-context.d.ts +0 -78
- package/dist/server/retired-routes.d.ts +0 -17
- package/dist/server/route-policy.d.ts +0 -18
- package/dist/server/route-table.d.ts +0 -114
- package/dist/server/runtime.d.ts +0 -343
- package/dist/server/session.d.ts +0 -192
- package/dist/server/settings.d.ts +0 -76
- package/dist/server/signup-gate.d.ts +0 -9
- package/dist/server/sweeps.d.ts +0 -4
- package/dist/server/task-views.d.ts +0 -98
- package/dist/server/tasks.d.ts +0 -108
- package/dist/server/terminals.d.ts +0 -31
- package/dist/server/welcome.d.ts +0 -28
- package/dist/server-telemetry.d.ts +0 -87
- package/dist/settings-groups-ui.d.ts +0 -286
- package/dist/settings-kit-script.d.ts +0 -21
- package/dist/settings-kit.d.ts +0 -173
- package/dist/settings-proofs.d.ts +0 -64
- package/dist/setup-guide.d.ts +0 -39
- package/dist/shared-deps.d.ts +0 -115
- package/dist/sign-in-guard.d.ts +0 -70
- package/dist/skills-ui.d.ts +0 -12
- package/dist/skills.d.ts +0 -99
- package/dist/slack-api.d.ts +0 -59
- package/dist/slack-chat.d.ts +0 -37
- package/dist/slack-settings.d.ts +0 -4
- package/dist/slack-socket.d.ts +0 -12
- package/dist/slack.d.ts +0 -6
- package/dist/sleep.d.ts +0 -2
- package/dist/source-key.d.ts +0 -2
- package/dist/spend-report.d.ts +0 -87
- package/dist/spend-ui.d.ts +0 -80
- package/dist/spend.d.ts +0 -142
- package/dist/sqlite-runtime.d.ts +0 -3
- package/dist/sqlite-telemetry.d.ts +0 -9
- package/dist/sso-settings.d.ts +0 -33
- package/dist/sso-ui.d.ts +0 -26
- package/dist/staged-runtimes.d.ts +0 -54
- package/dist/steer-capabilities.d.ts +0 -32
- package/dist/steer-controls.d.ts +0 -14
- package/dist/steer-live.d.ts +0 -19
- package/dist/steer-mailbox.d.ts +0 -46
- package/dist/steer-status.d.ts +0 -25
- package/dist/stop-proof.d.ts +0 -67
- package/dist/storage-sweep-child.d.ts +0 -1
- package/dist/storage-sweep-process.d.ts +0 -55
- package/dist/storage-sweep-schedule.d.ts +0 -30
- package/dist/storage-sweep.d.ts +0 -77
- package/dist/storage-ui.d.ts +0 -23
- package/dist/storage.d.ts +0 -68
- package/dist/store-baseline.d.ts +0 -19
- package/dist/store.d.ts +0 -8613
- package/dist/stream-scope.d.ts +0 -18
- package/dist/structured-output.d.ts +0 -57
- package/dist/style-asset.d.ts +0 -7
- package/dist/subagent-admin.d.ts +0 -53
- package/dist/subagent-desk.d.ts +0 -59
- package/dist/subagent-memory.d.ts +0 -65
- package/dist/subagent-question.d.ts +0 -59
- package/dist/subagent-tools.d.ts +0 -125
- package/dist/subagent-week.d.ts +0 -68
- package/dist/subagent-work.d.ts +0 -76
- package/dist/subagents-ui.d.ts +0 -22
- package/dist/subagents.d.ts +0 -146
- package/dist/subscription-chat.d.ts +0 -54
- package/dist/summary.d.ts +0 -33
- package/dist/surface.d.ts +0 -49
- package/dist/sweep-gate.d.ts +0 -10
- package/dist/sweep-quarantine.d.ts +0 -29
- package/dist/sync.d.ts +0 -94
- package/dist/tailnet.d.ts +0 -11
- package/dist/tamper-scan.d.ts +0 -4
- package/dist/task-activity.d.ts +0 -27
- package/dist/task-aliases.d.ts +0 -5
- package/dist/task-archive.d.ts +0 -13
- package/dist/task-base.d.ts +0 -39
- package/dist/task-composer.d.ts +0 -14
- package/dist/task-control.d.ts +0 -159
- package/dist/task-live.d.ts +0 -8
- package/dist/task-moves.d.ts +0 -90
- package/dist/task-outcome-cli.d.ts +0 -48
- package/dist/task-review-brief.d.ts +0 -69
- package/dist/task-sizing.d.ts +0 -58
- package/dist/task-source.d.ts +0 -77
- package/dist/task-status.d.ts +0 -324
- package/dist/task-text.d.ts +0 -31
- package/dist/team-chat-authorization.d.ts +0 -11
- package/dist/team-contract.d.ts +0 -103
- package/dist/team-http.d.ts +0 -25
- package/dist/team-leads.d.ts +0 -85
- package/dist/team-runtime.d.ts +0 -25
- package/dist/team-ui.d.ts +0 -4
- package/dist/team-updates.d.ts +0 -8
- package/dist/teams-api.d.ts +0 -33
- package/dist/teams-chat.d.ts +0 -36
- package/dist/teams-settings.d.ts +0 -14
- package/dist/teams.d.ts +0 -24
- package/dist/teardown-git.d.ts +0 -164
- package/dist/telegram-flow.d.ts +0 -112
- package/dist/telegram-lead.d.ts +0 -151
- package/dist/telegram-live.d.ts +0 -116
- package/dist/telegram-progress.d.ts +0 -20
- package/dist/telegram-settings.d.ts +0 -9
- package/dist/telegram-status.d.ts +0 -83
- package/dist/telegram-team.d.ts +0 -68
- package/dist/telegram.d.ts +0 -271
- package/dist/templates.d.ts +0 -69
- package/dist/terminal-catalog.d.ts +0 -11
- package/dist/terminal-text.d.ts +0 -11
- package/dist/test-infra.d.ts +0 -34
- package/dist/test-temp.d.ts +0 -40
- package/dist/text-limits.d.ts +0 -297
- package/dist/tidy.d.ts +0 -130
- package/dist/tier-report.d.ts +0 -44
- package/dist/token-notices.d.ts +0 -11
- package/dist/tokens-cli.d.ts +0 -21
- package/dist/tool-broker.d.ts +0 -52
- package/dist/tool-launcher.d.ts +0 -1
- package/dist/tool-secret-store.d.ts +0 -167
- package/dist/toolroll-update-cli.d.ts +0 -15
- package/dist/toolroll-update-ui.d.ts +0 -47
- package/dist/toolroll-update.d.ts +0 -265
- package/dist/tools-ui.d.ts +0 -51
- package/dist/transitions-recipes.d.ts +0 -1
- package/dist/tree-proof.d.ts +0 -34
- package/dist/tui-contract.d.ts +0 -202
- package/dist/tui-source.d.ts +0 -14
- package/dist/typed-start.d.ts +0 -51
- package/dist/unfenced-test-support.d.ts +0 -2
- package/dist/up-processes.d.ts +0 -162
- package/dist/up-role-child.d.ts +0 -1
- package/dist/update-notice.d.ts +0 -5
- package/dist/vanished-retry.d.ts +0 -30
- package/dist/verification-evidence.d.ts +0 -68
- package/dist/version.d.ts +0 -2
- package/dist/wake-hub.d.ts +0 -72
- package/dist/webhook-limits.d.ts +0 -23
- package/dist/webhook-readers.d.ts +0 -56
- package/dist/webhook-signing.d.ts +0 -27
- package/dist/webhooks.d.ts +0 -84
- package/dist/welcome-facts.d.ts +0 -18
- package/dist/when-html.d.ts +0 -40
- package/dist/work-index.d.ts +0 -175
- package/dist/work-summary.d.ts +0 -61
- package/dist/workspace-motion.d.ts +0 -4
- package/dist/workspace-revision.d.ts +0 -48
- package/dist/workspace-ui.d.ts +0 -385
- package/dist/worktree-notices.d.ts +0 -13
- package/dist/worktree.d.ts +0 -365
- package/dist/writes-mode.d.ts +0 -9
- package/dist/youiyoux-intake.d.ts +0 -234
package/dist/evidence.js
CHANGED
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Evidence: what actually happened, captured by the machine (§4, §7).
|
|
3
|
-
*
|
|
4
|
-
* The agent does not choose what counts as evidence — a diff the agent could
|
|
5
|
-
* fabricate is a screenshot of a different crime scene. At park time the
|
|
6
|
-
* builder captures the working state itself, relative to the base revision
|
|
7
|
-
* stamped before the agent spent anything, and records how each capture was
|
|
8
|
-
* made, whether it is complete, and what it hashes to. A truncated capture
|
|
9
|
-
* says truncated; a failed capture stores the failure. Presenting either as
|
|
10
|
-
* the whole story is the one dishonesty this module exists to rule out.
|
|
11
|
-
*
|
|
12
|
-
* Files live under the evidence root — outside every worktree, so an agent
|
|
13
|
-
* cannot pre-write them — created exclusively (`wx`) with mode 0600. The
|
|
14
|
-
* store holds keys relative to that root, never absolute paths.
|
|
15
|
-
*/
|
|
16
1
|
import { createHash, randomBytes } from "node:crypto";
|
|
17
2
|
import { closeSync, existsSync, constants, fstatSync, mkdirSync, openSync, readdirSync, readSync, realpathSync, rmSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
18
3
|
import { join, sep } from "node:path";
|
|
@@ -24,66 +9,31 @@ import { parseProof, PROOF_LIMITS } from "./proof.js";
|
|
|
24
9
|
import { HANDOFF_VERSION, readHandoffArtifact } from "./contracts/handoff.js";
|
|
25
10
|
import { encodeBaseTreeSnapshot, parseBaseTreeSnapshot } from "./peek.js";
|
|
26
11
|
import { noLazyFetch } from "./teardown-git.js";
|
|
27
|
-
/** The park mailbox pattern. Each run's actual name carries a nonce; see `mailboxName`. */
|
|
28
12
|
export const MAILBOX_PREFIX = "STANDING-ORDERS-PARK-";
|
|
29
|
-
/** The terminal handoff: how every non-parking attempt says how it ended. */
|
|
30
13
|
export const HANDOFF_PREFIX = "STANDING-ORDERS-DONE-";
|
|
31
|
-
/** The planner's terminal handoff: the proposed scope and the plan document. */
|
|
32
14
|
export const PLAN_PREFIX = "STANDING-ORDERS-PLAN-";
|
|
33
|
-
/** The reviewer's former comment mailbox (v29–evidence-review-v1): the
|
|
34
|
-
* reviewer now replies in its final message and writes nothing, but the
|
|
35
|
-
* pattern stays recognized so a sweep still cleans up a stray file this
|
|
36
|
-
* name left by an older build. */
|
|
37
15
|
export const REVIEW_PREFIX = "STANDING-ORDERS-REVIEW-";
|
|
38
|
-
/** The scout's terminal handoff (v34): the report, its only deliverable. */
|
|
39
16
|
export const REPORT_PREFIX = "STANDING-ORDERS-REPORT-";
|
|
40
|
-
/** The build's proof manifest (Priority 2): optional, and read only after
|
|
41
|
-
* the handoff — a completed attempt's proof, never a parking or failure
|
|
42
|
-
* artifact. */
|
|
43
17
|
export const PROOF_PREFIX = "STANDING-ORDERS-PROOF-";
|
|
44
18
|
export const RUBRIC_PREFIX = "STANDING-ORDERS-RUBRIC-";
|
|
45
|
-
/** The running build's atomic milestone checkpoint (adaptive execution
|
|
46
|
-
* plans): overwritten in place — a temp name, then a rename — rather than
|
|
47
|
-
* created once and unlinked, since progress is reported many times across
|
|
48
|
-
* one attempt. Read, never consumed, by the pulse and by settlement. */
|
|
49
19
|
export const PROGRESS_PREFIX = "STANDING-ORDERS-PROGRESS-";
|
|
50
|
-
/** The running build's bounded, evidence-linked plan-revision proposal
|
|
51
|
-
* (adaptive execution plans): a terminal file like park or proof, written
|
|
52
|
-
* at most once, read once at settlement. */
|
|
53
20
|
export const PROPOSAL_PREFIX = "STANDING-ORDERS-PROPOSAL-";
|
|
54
|
-
/** The running build's steering mailbox: a FOLDER, not a file. The pulse
|
|
55
|
-
* writes each operator note into it as NNN.json (a temp name, then a
|
|
56
|
-
* rename); the agent acknowledges a note by moving it into `handled/`. */
|
|
57
21
|
export const STEER_PREFIX = "STANDING-ORDERS-STEER-";
|
|
58
|
-
/** The running build's status file (Agents board): JSON lines the agent appends
|
|
59
|
-
* (working, needs-decision, blocked, done), read forward by the pulse. */
|
|
60
22
|
export const STATUS_PREFIX = "STANDING-ORDERS-STATUS-";
|
|
61
23
|
export const MAILBOX_SUFFIX = ".json";
|
|
62
|
-
/** v105: left in a run's evidence folder when the retention setting removed its files (retention.ts). */
|
|
63
24
|
export const RETENTION_NOTE = "REMOVED-BY-RETENTION";
|
|
64
|
-
/** Bounds on a claimed screenshot file's own bytes — independent of the
|
|
65
|
-
* proof manifest's byte cap, since these are binary images, not JSON. */
|
|
66
25
|
export const SCREENSHOT_BYTE_CAP = 5 * 1024 * 1024;
|
|
67
|
-
/** Check evidence lives in the run's evidence, never on the branch: images a
|
|
68
|
-
* build adds under this folder are left out of its commit. */
|
|
69
26
|
export const WORKTREE_EVIDENCE_DIR = "evidence/";
|
|
70
27
|
const IMAGE_PATH = /\.(?:png|jpe?g|gif|webp|bmp|ico|tiff?|avif|heic)$/i;
|
|
71
28
|
const BINARY_PATH = /\.(?:pdf|zip|gz|tgz|tar|7z|woff2?|ttf|otf|eot|mp4|mov|webm|mp3|wav|sqlite3?|db|wasm|bin|jar|exe|dll|so|dylib)$/i;
|
|
72
29
|
export function isImagePath(path) { return IMAGE_PATH.test(path); }
|
|
73
|
-
/** Images and other files that are never read as text, judged by name alone. */
|
|
74
30
|
export function isBinaryAssetPath(path) { return IMAGE_PATH.test(path) || BINARY_PATH.test(path); }
|
|
75
|
-
/** Bytes each kind may store. Originals can be any size; the record says what was cut. */
|
|
76
|
-
/** Bound one captured stream to `cap` bytes keeping its beginning and, mostly,
|
|
77
|
-
* its end: a test runner's summary and failure list come last, and that is
|
|
78
|
-
* what a reviewer or a repair needs to read. */
|
|
79
31
|
export const SHORTENED_MARKER = "\n… output shortened; ending follows …\n";
|
|
80
32
|
export function boundStreamHeadTail(value, cap, headShare = 0.2) {
|
|
81
33
|
const bytes = Buffer.from(value, "utf8");
|
|
82
34
|
if (bytes.length <= cap)
|
|
83
35
|
return value;
|
|
84
36
|
const marker = Buffer.from(SHORTENED_MARKER, "utf8");
|
|
85
|
-
// A cut inside a multi-byte character decodes as U+FFFD (three bytes);
|
|
86
|
-
// leave room for one at each edge so the result never exceeds the cap.
|
|
87
37
|
const room = Math.max(0, cap - marker.length - 8);
|
|
88
38
|
const head = Math.floor(room * headShare);
|
|
89
39
|
const tail = room - head;
|
|
@@ -96,53 +46,27 @@ export const EVIDENCE_CAPS = {
|
|
|
96
46
|
plan: TEXT_LIMITS.planDocumentBytes,
|
|
97
47
|
"terminal-diff": 256 * 1024,
|
|
98
48
|
"diff-stat": 32 * 1024,
|
|
99
|
-
// The enveloped base snapshot (live peek): 20k entries of path+sha+size.
|
|
100
49
|
"base-tree": 4 * 1024 * 1024,
|
|
101
50
|
handoff: 32 * 1024,
|
|
102
51
|
"revision-brief": 64 * 1024,
|
|
103
52
|
report: REPORT_LIMITS.payload,
|
|
104
53
|
proof: PROOF_LIMITS.payload,
|
|
105
|
-
// Six bounded streams (three attempts × stdout/stderr) plus the summary.
|
|
106
54
|
"check-log": 160 * 1024,
|
|
107
55
|
screenshot: SCREENSHOT_BYTE_CAP,
|
|
108
56
|
"structured-output": 64 * 1024,
|
|
109
|
-
// The planner's recorded source is bounded BEFORE it is written (the
|
|
110
|
-
// planner-source cap IS this value), so a stored record is never a
|
|
111
|
-
// truncated one: what the record holds is exactly what the planner read.
|
|
112
57
|
"plan-contract": 128 * 1024,
|
|
113
|
-
// The inherited review-context inventory (v51): structured JSON that is
|
|
114
|
-
// never byte-truncated — the capture sheds whole items against its own
|
|
115
|
-
// aggregate content limit (REVIEW_CONTEXT_LIMITS) and this cap only has
|
|
116
|
-
// to hold the JSON-escaped form of that bounded content plus provenance.
|
|
117
58
|
"review-context": 200 * 1024 * 1024,
|
|
118
59
|
};
|
|
119
|
-
/**
|
|
120
|
-
* The bound a writer may seal a kind at with storeEvidence's `cap`, above its default: a release check's sealed report and
|
|
121
|
-
* inventory (check-report.ts CHECK_ARTIFACT_CAP, 256 KiB). Readers accept exactly what writers may seal: 0.9.77 sealed
|
|
122
|
-
* reports up to 256 KiB but read structured output back only to 64 KiB, so every full report over that (~85 KiB for a
|
|
123
|
-
* 585-file suite) read as "no longer verifies" and the release's check as unavailable.
|
|
124
|
-
*/
|
|
125
60
|
export const SEALED_EVIDENCE_CAPS = { "structured-output": 256 * 1024 };
|
|
126
|
-
/** The most a stored artifact of this kind may hold: its default cap, or the larger bound a sealed payload may use. */
|
|
127
61
|
export function evidenceReadCap(kind) {
|
|
128
62
|
return Math.max(EVIDENCE_CAPS[kind], SEALED_EVIDENCE_CAPS[kind] ?? 0);
|
|
129
63
|
}
|
|
130
64
|
export function evidenceRoot(home) {
|
|
131
|
-
// Same continuity rule as the database: evidence recorded under an older
|
|
132
|
-
// name keeps verifying until a new-name root exists.
|
|
133
65
|
return namedPath(home, ["evidence"], { dot: true });
|
|
134
66
|
}
|
|
135
|
-
/**
|
|
136
|
-
* Unpredictable per attempt, so nothing on disk before this build can already
|
|
137
|
-
* be the mailbox: a stale file, however it got there, simply has the wrong
|
|
138
|
-
* name. The agent learns the name from its brief and nowhere else.
|
|
139
|
-
*/
|
|
140
67
|
export function mailboxName() {
|
|
141
68
|
return `${MAILBOX_PREFIX}${randomBytes(8).toString("hex")}${MAILBOX_SUFFIX}`;
|
|
142
69
|
}
|
|
143
|
-
/** Every protocol file the sweep must never let an old attempt leave behind.
|
|
144
|
-
* The pre-rename NIGHTORDERS- prefix stays recognized here — a worktree cut
|
|
145
|
-
* down before 2026-08-13 may still hold one, and cleanup has no vintage. */
|
|
146
70
|
export function looksLikeProtocolFile(name) {
|
|
147
71
|
if (looksLikeSteerFolder(name) || looksLikeStatusFile(name))
|
|
148
72
|
return true;
|
|
@@ -159,13 +83,9 @@ export function looksLikeProtocolFile(name) {
|
|
|
159
83
|
name.startsWith("NIGHTORDERS-")) &&
|
|
160
84
|
name.endsWith(MAILBOX_SUFFIX));
|
|
161
85
|
}
|
|
162
|
-
/** A steering mailbox folder, or anything in it, as a directory listing or
|
|
163
|
-
* `git status` names it: an untracked folder is reported with a trailing
|
|
164
|
-
* slash, or file by file where a repository shows every untracked file. */
|
|
165
86
|
export function looksLikeSteerFolder(name) {
|
|
166
87
|
return /^STANDING-ORDERS-STEER-[0-9a-f]{16}(?:\/.*)?$/.test(name);
|
|
167
88
|
}
|
|
168
|
-
/** An agent status file (Agents board), by its exact nonce-shaped name. */
|
|
169
89
|
export function looksLikeStatusFile(name) {
|
|
170
90
|
return /^STANDING-ORDERS-STATUS-[0-9a-f]{16}\.jsonl$/.test(name);
|
|
171
91
|
}
|
|
@@ -181,8 +101,6 @@ export function handoffName() {
|
|
|
181
101
|
export function planFileName() {
|
|
182
102
|
return `${PLAN_PREFIX}${randomBytes(8).toString("hex")}${MAILBOX_SUFFIX}`;
|
|
183
103
|
}
|
|
184
|
-
/** The build's optional proof manifest (Priority 2), named exactly like
|
|
185
|
-
* every other protocol file — a nonce the agent learns only from its brief. */
|
|
186
104
|
export function proofFileName() {
|
|
187
105
|
return `${PROOF_PREFIX}${randomBytes(8).toString("hex")}${MAILBOX_SUFFIX}`;
|
|
188
106
|
}
|
|
@@ -198,18 +116,9 @@ export function progressFileName() {
|
|
|
198
116
|
export function proposalFileName() {
|
|
199
117
|
return `${PROPOSAL_PREFIX}${randomBytes(8).toString("hex")}${MAILBOX_SUFFIX}`;
|
|
200
118
|
}
|
|
201
|
-
/**
|
|
202
|
-
* Read a mailbox without following anything: the path must be a regular file,
|
|
203
|
-
* opened O_NOFOLLOW and measured through its own descriptor — an agent that
|
|
204
|
-
* made the pathname a symlink or FIFO gets a refusal, not a runner reading an
|
|
205
|
-
* unrelated local file into web-visible evidence.
|
|
206
|
-
*/
|
|
207
119
|
export function readMailbox(path, cap = LIMITS.payload) {
|
|
208
120
|
let fd;
|
|
209
121
|
try {
|
|
210
|
-
// O_NONBLOCK matters before the type check: opening a FIFO read-only can
|
|
211
|
-
// otherwise wait forever for a writer, outside every provider timeout.
|
|
212
|
-
// Once the descriptor is open we still accept regular files only.
|
|
213
122
|
fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
|
|
214
123
|
}
|
|
215
124
|
catch (error) {
|
|
@@ -228,10 +137,6 @@ export function readMailbox(path, cap = LIMITS.payload) {
|
|
|
228
137
|
return { ok: false, missing: false, problem: "the mailbox is not a regular file" };
|
|
229
138
|
}
|
|
230
139
|
if (stat.size > cap) {
|
|
231
|
-
// Oversize is invalid protocol, but it is still emitted evidence.
|
|
232
|
-
// Capture only the bounded prefix from this already no-follow-opened
|
|
233
|
-
// descriptor and carry the exact observed size so callers can retain
|
|
234
|
-
// an honest, capped artifact without allocating attacker-sized input.
|
|
235
140
|
const prefix = Buffer.alloc(cap);
|
|
236
141
|
let offset = 0;
|
|
237
142
|
while (offset < prefix.length) {
|
|
@@ -262,7 +167,6 @@ export function readMailbox(path, cap = LIMITS.payload) {
|
|
|
262
167
|
closeSync(fd);
|
|
263
168
|
}
|
|
264
169
|
}
|
|
265
|
-
/** Each image a report names, matched to the screenshot evidence its own run stored with the same sha256. */
|
|
266
170
|
export function reportShotsOf(artifacts, root, run, images) {
|
|
267
171
|
const pruned = existsSync(join(root, String(run), RETENTION_NOTE));
|
|
268
172
|
return images.map(image => {
|
|
@@ -289,8 +193,6 @@ export function readVerifiedReport(store, root, taskRef) {
|
|
|
289
193
|
return { ok: false, run: artifact.run, problem: "the stored report is not a report this build can read" };
|
|
290
194
|
return { ok: true, run: artifact.run, report: parsed.report, shots: reportShotsOf(store.artifactsFor(artifact.run), root, artifact.run, parsed.report.images) };
|
|
291
195
|
}
|
|
292
|
-
/** Verifies this run's proof bytes and format. A handoff that relies on a
|
|
293
|
-
* revision's ancestors must also recheck its saved review-context custody. */
|
|
294
196
|
export function readVerifiedProofForRun(store, root, runId) {
|
|
295
197
|
const artifact = store.artifactsFor(runId).find(one => one.kind === "proof") ?? null;
|
|
296
198
|
if (artifact === null)
|
|
@@ -309,13 +211,6 @@ export function readVerifiedProofForRun(store, root, runId) {
|
|
|
309
211
|
return { ok: false, run: runId, problem: "the stored proof is not a proof this build can read" };
|
|
310
212
|
return { ok: true, run: runId, proof: parsed.proof };
|
|
311
213
|
}
|
|
312
|
-
/**
|
|
313
|
-
* The PNG and JPEG magic bytes — the only two formats a screenshot may
|
|
314
|
-
* claim to be (scope: "no arbitrary binary evidence beyond bounded
|
|
315
|
-
* PNG/JPEG screenshots"). Sniffed from the bytes themselves, never from a
|
|
316
|
-
* claimed extension: an extension is a string an agent chose, a signature
|
|
317
|
-
* is not.
|
|
318
|
-
*/
|
|
319
214
|
const PNG_SIGNATURE = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
|
|
320
215
|
const JPEG_SIGNATURE = Buffer.from([0xff, 0xd8, 0xff]);
|
|
321
216
|
export function sniffImageKind(bytes) {
|
|
@@ -325,9 +220,6 @@ export function sniffImageKind(bytes) {
|
|
|
325
220
|
return "jpeg";
|
|
326
221
|
return null;
|
|
327
222
|
}
|
|
328
|
-
/** Whether bytes claimed as a screenshot actually are a bounded PNG or
|
|
329
|
-
* JPEG — the one check standing between a claimed path and stored,
|
|
330
|
-
* immutable image evidence. */
|
|
331
223
|
export function validateScreenshotBytes(bytes) {
|
|
332
224
|
if (bytes.length === 0)
|
|
333
225
|
return { ok: false, problem: "the file is empty" };
|
|
@@ -339,30 +231,10 @@ export function validateScreenshotBytes(bytes) {
|
|
|
339
231
|
return { ok: false, problem: "the file is not a PNG or JPEG (checked by signature, not extension)" };
|
|
340
232
|
return { ok: true, kind };
|
|
341
233
|
}
|
|
342
|
-
/**
|
|
343
|
-
* Pixel dimensions read straight from the format's own header — never
|
|
344
|
-
* decoded, never trusting a claimed size (v39, screenshot evidence:
|
|
345
|
-
* "meaningful byte size and at least 320 by 200 dimensions"). `null` when
|
|
346
|
-
* the bytes are a valid signature but the header could not be read (a
|
|
347
|
-
* genuinely corrupt or truncated file) — the caller treats that the same
|
|
348
|
-
* as failing the size floor, never as passing it.
|
|
349
|
-
*
|
|
350
|
-
* PNG: the IHDR chunk is fixed at bytes 8-25 for every valid PNG — width
|
|
351
|
-
* and height are the two big-endian uint32s right after it starts.
|
|
352
|
-
*
|
|
353
|
-
* JPEG: scan markers from byte 2. Every marker except the two without a
|
|
354
|
-
* payload (SOI 0xD8, EOI 0xD9) and the RST markers (0xD0-0xD7) carries a
|
|
355
|
-
* two-byte big-endian length; the SOF markers (0xC0-0xCF, excluding the
|
|
356
|
-
* DHT/JPG/DAC markers 0xC4/0xC8/0xCC, which share the range but are not
|
|
357
|
-
* frame headers) hold precision(1) + height(2) + width(2) right after
|
|
358
|
-
* that length field.
|
|
359
|
-
*/
|
|
360
234
|
export function imageDimensions(bytes, kind) {
|
|
361
235
|
if (kind === "png") {
|
|
362
236
|
if (bytes.length < 26)
|
|
363
237
|
return null;
|
|
364
|
-
// Bytes 12-15 must literally spell IHDR, or this is not a PNG this
|
|
365
|
-
// reader understands well enough to trust the offsets that follow.
|
|
366
238
|
if (bytes.toString("ascii", 12, 16) !== "IHDR")
|
|
367
239
|
return null;
|
|
368
240
|
const width = bytes.readUInt32BE(16);
|
|
@@ -371,21 +243,19 @@ export function imageDimensions(bytes, kind) {
|
|
|
371
243
|
return null;
|
|
372
244
|
return { width, height };
|
|
373
245
|
}
|
|
374
|
-
// JPEG: walk markers looking for a Start Of Frame.
|
|
375
246
|
let offset = 2;
|
|
376
247
|
const SOF_MARKERS = new Set([0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf]);
|
|
377
248
|
while (offset + 1 < bytes.length) {
|
|
378
249
|
if (bytes[offset] !== 0xff)
|
|
379
|
-
return null;
|
|
250
|
+
return null;
|
|
380
251
|
let marker = bytes[offset + 1];
|
|
381
252
|
offset += 2;
|
|
382
|
-
// Fill bytes (0xFF padding) between markers.
|
|
383
253
|
while (marker === 0xff && offset < bytes.length) {
|
|
384
254
|
marker = bytes[offset];
|
|
385
255
|
offset += 1;
|
|
386
256
|
}
|
|
387
257
|
if (marker === 0xd8 || marker === 0xd9 || (marker >= 0xd0 && marker <= 0xd7))
|
|
388
|
-
continue;
|
|
258
|
+
continue;
|
|
389
259
|
if (offset + 1 >= bytes.length)
|
|
390
260
|
return null;
|
|
391
261
|
const length = bytes.readUInt16BE(offset);
|
|
@@ -399,24 +269,14 @@ export function imageDimensions(bytes, kind) {
|
|
|
399
269
|
return { width, height };
|
|
400
270
|
}
|
|
401
271
|
if (marker === 0xda)
|
|
402
|
-
return null;
|
|
272
|
+
return null;
|
|
403
273
|
offset += length;
|
|
404
274
|
}
|
|
405
275
|
return null;
|
|
406
276
|
}
|
|
407
|
-
/**
|
|
408
|
-
* Write one evidence file and record it. The row is written through the
|
|
409
|
-
* store the caller passed — inside whatever transaction the caller holds.
|
|
410
|
-
*/
|
|
411
277
|
export function storeEvidence(store, root, runId, kind, name, content, capture, now, options = {}) {
|
|
412
|
-
// `cap`: a sealed structured payload with its own documented bound (a release check's report: 256 KiB), never above what
|
|
413
|
-
// a reader of this kind accepts (evidenceReadCap): a record written larger would never verify again.
|
|
414
278
|
const cap = options.cap === undefined ? EVIDENCE_CAPS[kind] : Math.min(options.cap, evidenceReadCap(kind));
|
|
415
279
|
const stored = content.subarray(0, cap);
|
|
416
|
-
// Some callers that deliberately summarize/bound a source before storage
|
|
417
|
-
// may still report its true original size. This keeps `truncated` honest
|
|
418
|
-
// even when the already-bounded representation fits beneath this layer's
|
|
419
|
-
// cap (for example a three-attempt verification log).
|
|
420
280
|
const bytesOriginal = Math.max(content.length, options.sourceBytesOriginal ?? content.length);
|
|
421
281
|
const key = writeEvidenceFile(root, runId, name, stored);
|
|
422
282
|
return store.saveArtifact({
|
|
@@ -432,31 +292,9 @@ export function storeEvidence(store, root, runId, kind, name, content, capture,
|
|
|
432
292
|
...(options.captureStatus === undefined ? {} : { captureStatus: options.captureStatus }),
|
|
433
293
|
}, now);
|
|
434
294
|
}
|
|
435
|
-
/**
|
|
436
|
-
* Read an artifact's bytes back, believing nothing until it is proved on the
|
|
437
|
-
* descriptor actually read (§7's honesty, applied to serving). The record's
|
|
438
|
-
* key must be a normalized relative path; the resolved path must live under
|
|
439
|
-
* the root; the open refuses symlinks; the size and hash checks run against
|
|
440
|
-
* the same descriptor the bytes come from — so a pathname swapped between a
|
|
441
|
-
* check and the read buys an attacker nothing. Only a buffer whose SHA-256
|
|
442
|
-
* matches the row is ever returned: unverified bytes never leave this
|
|
443
|
-
* function, which is what lets a caller stream with a clear conscience.
|
|
444
|
-
* Success proves stored-byte integrity only. Callers must independently
|
|
445
|
-
* decide whether a shortened representation or failed capture is usable;
|
|
446
|
-
* a verified failure log is still a failure, not successful evidence.
|
|
447
|
-
*/
|
|
448
|
-
// Recovery uses this read boundary for retained receipts and handoffs: inspecting
|
|
449
|
-
// bytes must never reseal a missing artifact or turn a saved failure into a pass.
|
|
450
295
|
export function readVerifiedArtifact(root, artifact) {
|
|
451
296
|
return withArtifactFile(root, artifact, readAndHash);
|
|
452
297
|
}
|
|
453
|
-
/**
|
|
454
|
-
* Whether an artifact's bytes still verify, without returning them. Status
|
|
455
|
-
* sweeps ask this of every artifact of every run, so a file proved earlier and
|
|
456
|
-
* not touched since (same artifact row, device, inode, size, mtime and ctime
|
|
457
|
-
* on the descriptor just opened) costs an fstat, not a re-read and SHA-256.
|
|
458
|
-
* Every path check still runs on each call; a changed or new file is hashed.
|
|
459
|
-
*/
|
|
460
298
|
export function verifyArtifact(root, artifact) {
|
|
461
299
|
return withArtifactFile(root, artifact, (fd, stat, memoKey) => {
|
|
462
300
|
if (VERIFIED_FILES.get(memoKey) === fileIdentity(artifact, stat))
|
|
@@ -465,11 +303,9 @@ export function verifyArtifact(root, artifact) {
|
|
|
465
303
|
return read.ok ? { ok: true } : read;
|
|
466
304
|
});
|
|
467
305
|
}
|
|
468
|
-
/** Files proved by an earlier read, keyed by artifact and resolved path. Bounded; the oldest proof is forgotten first. */
|
|
469
306
|
const VERIFIED_FILES = new Map();
|
|
470
307
|
const VERIFIED_FILES_LIMIT = 20_000;
|
|
471
308
|
const fileIdentity = (artifact, stat) => [artifact.sha256, artifact.bytesStored, stat.dev, stat.ino, stat.size, stat.mtimeNs, stat.ctimeNs].join(":");
|
|
472
|
-
/** The checks both readers share, on the descriptor `use` then reads. */
|
|
473
309
|
function withArtifactFile(root, artifact, use) {
|
|
474
310
|
const segments = artifact.key.split("/");
|
|
475
311
|
const wellFormed = segments.length > 0 &&
|
|
@@ -477,7 +313,6 @@ function withArtifactFile(root, artifact, use) {
|
|
|
477
313
|
segment !== "." &&
|
|
478
314
|
segment !== ".." &&
|
|
479
315
|
!segment.includes("\\") &&
|
|
480
|
-
// eslint-disable-next-line no-control-regex
|
|
481
316
|
!/[\u0000-\u001f\u007f:]/.test(segment));
|
|
482
317
|
if (!wellFormed)
|
|
483
318
|
return { ok: false, problem: "the key is not a normalized relative path" };
|
|
@@ -518,7 +353,6 @@ function withArtifactFile(root, artifact, use) {
|
|
|
518
353
|
closeSync(fd);
|
|
519
354
|
}
|
|
520
355
|
}
|
|
521
|
-
/** Read the whole file from the open descriptor; only bytes matching the row's SHA-256 leave, and only they are remembered as proved. */
|
|
522
356
|
function readAndHash(fd, stat, memoKey, artifact) {
|
|
523
357
|
VERIFIED_FILES.delete(memoKey);
|
|
524
358
|
const buffer = Buffer.alloc(artifact.bytesStored);
|
|
@@ -540,22 +374,12 @@ function readAndHash(fd, stat, memoKey, artifact) {
|
|
|
540
374
|
VERIFIED_FILES.set(memoKey, fileIdentity(artifact, stat));
|
|
541
375
|
return { ok: true, content: buffer };
|
|
542
376
|
}
|
|
543
|
-
/** The file alone, no row — quarantines use this; they belong to no live run. */
|
|
544
377
|
export function writeEvidenceFile(root, runId, name, content) {
|
|
545
378
|
const dir = join(root, String(runId));
|
|
546
379
|
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
547
380
|
writeFileSync(join(dir, name), content, { flag: "wx", mode: 0o600 });
|
|
548
381
|
return `${runId}/${name}`;
|
|
549
382
|
}
|
|
550
|
-
/**
|
|
551
|
-
* Sweep every park-shaped file out of a worktree before the agent runs.
|
|
552
|
-
*
|
|
553
|
-
* A mailbox left by a cut-down attempt is never ingested as a decision — the
|
|
554
|
-
* lease that could have vouched for it is gone — but its bytes may still say
|
|
555
|
-
* what the agent meant, so what can be read safely is kept under quarantine
|
|
556
|
-
* in the current run's evidence directory. What cannot be read safely (a
|
|
557
|
-
* symlink, a FIFO, something oversized) is removed unread.
|
|
558
|
-
*/
|
|
559
383
|
export function quarantineMailboxes(worktree, root, runId) {
|
|
560
384
|
let entries;
|
|
561
385
|
try {
|
|
@@ -569,17 +393,12 @@ export function quarantineMailboxes(worktree, root, runId) {
|
|
|
569
393
|
if (!looksLikeProtocolFile(name))
|
|
570
394
|
continue;
|
|
571
395
|
const path = join(worktree, name);
|
|
572
|
-
// An earlier attempt's steering folder holds copies of notes the
|
|
573
|
-
// database already keeps: removed whole (a symlink is removed, never
|
|
574
|
-
// followed), never quarantined. So is its status file: the database
|
|
575
|
-
// already read every line it will ever need.
|
|
576
396
|
if (looksLikeSteerFolder(name) || looksLikeStatusFile(name)) {
|
|
577
397
|
try {
|
|
578
398
|
rmSync(path, { recursive: true, force: true });
|
|
579
399
|
swept.push(name);
|
|
580
400
|
}
|
|
581
401
|
catch {
|
|
582
|
-
// Its name carries an old nonce; nothing reads it again.
|
|
583
402
|
}
|
|
584
403
|
continue;
|
|
585
404
|
}
|
|
@@ -590,7 +409,6 @@ export function quarantineMailboxes(worktree, root, runId) {
|
|
|
590
409
|
writeEvidenceFile(root, runId, `quarantine-${randomBytes(4).toString("hex")}-${name}`, read.raw);
|
|
591
410
|
}
|
|
592
411
|
catch {
|
|
593
|
-
// Quarantine is best-effort; removal below is not.
|
|
594
412
|
}
|
|
595
413
|
}
|
|
596
414
|
}
|
|
@@ -599,19 +417,10 @@ export function quarantineMailboxes(worktree, root, runId) {
|
|
|
599
417
|
swept.push(name);
|
|
600
418
|
}
|
|
601
419
|
catch {
|
|
602
|
-
// A mailbox that cannot be removed will fail the freshness check at
|
|
603
|
-
// ingestion anyway: it does not carry this attempt's nonce.
|
|
604
420
|
}
|
|
605
421
|
}
|
|
606
422
|
return swept;
|
|
607
423
|
}
|
|
608
|
-
/**
|
|
609
|
-
* Capture the park's evidence: the complete working state against the base
|
|
610
|
-
* revision, and the porcelain inventory that names what the diff cannot —
|
|
611
|
-
* untracked and staged files included. External diff drivers and textconv
|
|
612
|
-
* are disabled by name: both run repository-configured commands, and this
|
|
613
|
-
* capture must not execute anything the agent may have just written.
|
|
614
|
-
*/
|
|
615
424
|
export async function captureParkEvidence(store, git, worktree, baseRevision, root, runId, now) {
|
|
616
425
|
const captures = [
|
|
617
426
|
{
|
|
@@ -631,22 +440,12 @@ export async function captureParkEvidence(store, git, worktree, baseRevision, ro
|
|
|
631
440
|
for (const { kind, name, args } of captures) {
|
|
632
441
|
const result = await git("git", args, { cwd: worktree });
|
|
633
442
|
const command = `git ${args.filter(a => a !== "--no-optional-locks").join(" ")} (exit ${result.code})`;
|
|
634
|
-
// A failed capture is stored as the failure it is — stderr under the
|
|
635
|
-
// same key, labeled by its exit code — never silently skipped, because
|
|
636
|
-
// "no diff shown" and "diff capture failed" read very differently at 7am.
|
|
637
443
|
const content = Buffer.from(result.code === 0 ? result.stdout : result.stderr, "utf8");
|
|
638
444
|
ids.push(storeEvidence(store, root, runId, kind, name, content, command, now));
|
|
639
445
|
}
|
|
640
446
|
return ids;
|
|
641
447
|
}
|
|
642
448
|
const DIFF_STAT_FILE_LIMIT = 400;
|
|
643
|
-
/**
|
|
644
|
-
* Parse `git diff --numstat -z` output. NUL-delimited, so filenames are never
|
|
645
|
-
* guessed out of patch headers (Codex roadmap review, scope cut A.3): plain
|
|
646
|
-
* entries are one token "adds\tdels\tpath"; renames are "adds\tdels\t" with
|
|
647
|
-
* the two paths as the following tokens. Binary files carry "-" counts,
|
|
648
|
-
* recorded as null — never coerced to zero.
|
|
649
|
-
*/
|
|
650
449
|
export function parseNumstat(raw, base, head) {
|
|
651
450
|
const tokens = raw.split("\u0000").filter(token => token.length > 0);
|
|
652
451
|
const files = [];
|
|
@@ -657,7 +456,7 @@ export function parseNumstat(raw, base, head) {
|
|
|
657
456
|
const token = tokens[i];
|
|
658
457
|
const parts = token.split("\t");
|
|
659
458
|
if (parts.length < 3)
|
|
660
|
-
continue;
|
|
459
|
+
continue;
|
|
661
460
|
const adds = parts[0] === "-" ? null : Number(parts[0]);
|
|
662
461
|
const dels = parts[1] === "-" ? null : Number(parts[1]);
|
|
663
462
|
if ((adds !== null && !Number.isFinite(adds)) || (dels !== null && !Number.isFinite(dels)))
|
|
@@ -665,7 +464,6 @@ export function parseNumstat(raw, base, head) {
|
|
|
665
464
|
let path = parts.slice(2).join("\t");
|
|
666
465
|
let renamedFrom;
|
|
667
466
|
if (path === "") {
|
|
668
|
-
// Rename: the next two tokens are the old and new paths.
|
|
669
467
|
renamedFrom = tokens[i + 1];
|
|
670
468
|
path = tokens[i + 2] ?? "";
|
|
671
469
|
i += 2;
|
|
@@ -691,26 +489,12 @@ export function parseNumstat(raw, base, head) {
|
|
|
691
489
|
filesTruncated: kept.length < files.length,
|
|
692
490
|
};
|
|
693
491
|
}
|
|
694
|
-
/**
|
|
695
|
-
* Write the handoff artifact (M6.10): the machine's own statement of where
|
|
696
|
-
* a finished run left the world — workspace identity, exact base and head,
|
|
697
|
-
* which answered decisions the brief carried, and a freshness stamp a
|
|
698
|
-
* successor can PROVE against the branch before spending a token on stale
|
|
699
|
-
* context. This is what makes a cold takeover context-bearing rather than
|
|
700
|
-
* repo-only; a provider session is memory, not a freshness proof.
|
|
701
|
-
*/
|
|
702
492
|
export function storeHandoffArtifact(store, root, payload, now) {
|
|
703
493
|
const read = readHandoffArtifact({ version: HANDOFF_VERSION, ...payload });
|
|
704
494
|
if (!read.ok)
|
|
705
495
|
throw new Error(`The handoff does not match its contract: ${read.issues.map(issue => issue.line).join("; ")}`);
|
|
706
496
|
return storeEvidence(store, root, payload.runId, "handoff", "handoff.json", Buffer.from(JSON.stringify(read.value, null, 2), "utf8"), "machine-authored handoff (exit 0)", now);
|
|
707
497
|
}
|
|
708
|
-
/**
|
|
709
|
-
* High-confidence secret shapes ONLY (audit IV-7): a detector that cries
|
|
710
|
-
* wolf trains people to approve wolves. Each pattern is a format no
|
|
711
|
-
* ordinary source line matches by accident; generic "password=" shapes
|
|
712
|
-
* are deliberately absent — test fixtures would drown the signal.
|
|
713
|
-
*/
|
|
714
498
|
export const SECRET_PATTERNS = [
|
|
715
499
|
{ name: "private-key", pattern: /-----BEGIN [A-Z ]*PRIVATE KEY-----/ },
|
|
716
500
|
{ name: "aws-access-key", pattern: /\b(?:AKIA|ASIA)[0-9A-Z]{16}\b/ },
|
|
@@ -718,7 +502,6 @@ export const SECRET_PATTERNS = [
|
|
|
718
502
|
{ name: "slack-token", pattern: /\bxox[baprs]-[A-Za-z0-9-]{10,}\b/ },
|
|
719
503
|
{ name: "npm-auth-token", pattern: /_authToken\s*=\s*[^\s$][^\s]*/ },
|
|
720
504
|
{ name: "openai-key", pattern: /\bsk-[A-Za-z0-9_-]{32,}\b/ },
|
|
721
|
-
// v99: the other keys a team pastes most.
|
|
722
505
|
{ name: "stripe-key", pattern: /\b(?:sk|rk)_(?:live|test)_[A-Za-z0-9]{24,}\b|\bwhsec_[A-Za-z0-9]{24,}\b/ },
|
|
723
506
|
{ name: "google-api-key", pattern: /\bAIza[0-9A-Za-z_-]{35}\b/ },
|
|
724
507
|
{ name: "gitlab-token", pattern: /\bglpat-[A-Za-z0-9_-]{20,}\b/ },
|
|
@@ -726,7 +509,6 @@ export const SECRET_PATTERNS = [
|
|
|
726
509
|
{ name: "discord-bot-token", pattern: /\b[MN][A-Za-z\d]{23,25}\.[\w-]{6}\.[\w-]{27,}\b/ },
|
|
727
510
|
{ name: "password-in-url", pattern: /\b[a-z][a-z0-9+.-]*:\/\/[^\s:@/]+:[^\s:@/]{3,}@[^\s/]/i },
|
|
728
511
|
];
|
|
729
|
-
/** Scan text line by line; every hit names its pattern and line. */
|
|
730
512
|
export function scanForSecrets(text) {
|
|
731
513
|
const hits = [];
|
|
732
514
|
const lines = text.split("\n");
|
|
@@ -740,8 +522,6 @@ export function scanForSecrets(text) {
|
|
|
740
522
|
}
|
|
741
523
|
return hits;
|
|
742
524
|
}
|
|
743
|
-
/** Hosts the DNS standards reserve for examples and loopback (RFC 2606,
|
|
744
|
-
* RFC 6761): a URL with a password on one of these reaches nothing real. */
|
|
745
525
|
function reservedHost(host) {
|
|
746
526
|
const name = host.toLowerCase().replace(/^\[|\]$/g, "").replace(/\.$/, "");
|
|
747
527
|
if (name === "127.0.0.1" || name === "::1")
|
|
@@ -750,7 +530,6 @@ function reservedHost(host) {
|
|
|
750
530
|
return true;
|
|
751
531
|
return /(?:^|\.)(?:example|test|invalid|localhost)$/.test(name);
|
|
752
532
|
}
|
|
753
|
-
/** Mostly one character, e.g. "sk-" and forty a's: a fixture, not a key. */
|
|
754
533
|
function repeatedFiller(value) {
|
|
755
534
|
const longest = value.split(/[^A-Za-z0-9]+/).reduce((best, part) => (part.length > best.length ? part : best), "");
|
|
756
535
|
if (longest.length < 8)
|
|
@@ -760,11 +539,6 @@ function repeatedFiller(value) {
|
|
|
760
539
|
counts.set(char, (counts.get(char) ?? 0) + 1);
|
|
761
540
|
return Math.max(...counts.values()) * 2 > longest.length;
|
|
762
541
|
}
|
|
763
|
-
/**
|
|
764
|
-
* Whether one matched secret shape is a documented or reserved placeholder:
|
|
765
|
-
* anything spelling EXAMPLE (AWS's own AKIAIOSFODNN7EXAMPLE), a password on
|
|
766
|
-
* a reserved example host, or a value that is mostly one repeated character.
|
|
767
|
-
*/
|
|
768
542
|
export function isPlaceholderSecret(name, line, match) {
|
|
769
543
|
if (name === "private-key")
|
|
770
544
|
return false;
|
|
@@ -776,7 +550,6 @@ export function isPlaceholderSecret(name, line, match) {
|
|
|
776
550
|
const password = /:([^\s:@/]+)@[^@]*$/.exec(match[0])?.[1] ?? "";
|
|
777
551
|
return reservedHost(host) || repeatedFiller(password);
|
|
778
552
|
}
|
|
779
|
-
/** The first secret shape on a line that is not a placeholder, if any. */
|
|
780
553
|
function realSecretShape(line) {
|
|
781
554
|
for (const { name, pattern } of SECRET_PATTERNS) {
|
|
782
555
|
for (const match of line.matchAll(new RegExp(pattern.source, `${pattern.flags}g`))) {
|
|
@@ -786,11 +559,6 @@ function realSecretShape(line) {
|
|
|
786
559
|
}
|
|
787
560
|
return null;
|
|
788
561
|
}
|
|
789
|
-
/**
|
|
790
|
-
* Scan a unified diff for secrets it commits: only added lines count —
|
|
791
|
-
* removing a line cannot commit a secret, and context lines were already
|
|
792
|
-
* there — and documented or reserved placeholders are not secrets.
|
|
793
|
-
*/
|
|
794
562
|
export function scanPatchForSecrets(patch) {
|
|
795
563
|
const hits = [];
|
|
796
564
|
const lines = patch.split("\n");
|
|
@@ -826,8 +594,6 @@ export function scanPatchForSecrets(patch) {
|
|
|
826
594
|
}
|
|
827
595
|
return hits;
|
|
828
596
|
}
|
|
829
|
-
/** The alert for a candidate head with a flagged added line: where each
|
|
830
|
-
* hit is and what to do, without repeating the value. */
|
|
831
597
|
export function secretAlert(hits, runId) {
|
|
832
598
|
const shown = hits.slice(0, 5).map(hit => `${hit.file}:${hit.fileLine} (${hit.name})`);
|
|
833
599
|
const more = hits.length > shown.length ? `, and ${hits.length - shown.length} more` : "";
|
|
@@ -838,7 +604,6 @@ export function secretAlert(hits, runId) {
|
|
|
838
604
|
`If this is a real key, rotate it and rewrite the branch. If it's a test value, assemble it at run time.`,
|
|
839
605
|
};
|
|
840
606
|
}
|
|
841
|
-
/** Replace every hit line with a marker naming what was found — the display copy holds no secret. */
|
|
842
607
|
export function redactSecretLines(text, hits) {
|
|
843
608
|
const flagged = new Map(hits.map(hit => [hit.line, hit.name]));
|
|
844
609
|
return text
|
|
@@ -849,12 +614,6 @@ export function redactSecretLines(text, hits) {
|
|
|
849
614
|
})
|
|
850
615
|
.join("\n");
|
|
851
616
|
}
|
|
852
|
-
/**
|
|
853
|
-
* Fit a DiffStat under its cap by shedding FILES, never bytes (audit C-4):
|
|
854
|
-
* a structured artifact cut mid-token is not a smaller stat, it is no stat.
|
|
855
|
-
* Aggregate counts always survive; the file list shrinks until the encoded
|
|
856
|
-
* JSON fits, and filesTruncated says so.
|
|
857
|
-
*/
|
|
858
617
|
export function budgetedStatJson(stat) {
|
|
859
618
|
const cap = EVIDENCE_CAPS["diff-stat"];
|
|
860
619
|
let files = stat.files;
|
|
@@ -870,27 +629,10 @@ export function budgetedStatJson(stat) {
|
|
|
870
629
|
files = files.slice(0, Math.floor(files.length / 2));
|
|
871
630
|
}
|
|
872
631
|
}
|
|
873
|
-
/**
|
|
874
|
-
* Capture the TERMINAL diff — the immutable base→head patch of a run that
|
|
875
|
-
* committed, taken before its worktree is released (M5.3; the Codex scope
|
|
876
|
-
* cut is the spec). Two artifacts: the bounded plain patch, and a
|
|
877
|
-
* machine-parsed stat whose filenames came NUL-delimited from git, never
|
|
878
|
-
* from patch headers. Same execution posture as the park capture: external
|
|
879
|
-
* diff drivers and textconv disabled by name, because this must not run
|
|
880
|
-
* anything the agent may have just written. A no-change run stores the
|
|
881
|
-
* explicit zero-stat rather than storing nothing — "no diff" and "capture
|
|
882
|
-
* failed" have to read differently.
|
|
883
|
-
*/
|
|
884
632
|
export async function captureTerminalDiff(store, git, worktree, base, head, root, runId, now) {
|
|
885
633
|
const patchArgs = ["--no-optional-locks", "diff", "--no-ext-diff", "--no-textconv", "--no-color", base, head];
|
|
886
634
|
const patch = await git("git", patchArgs, { cwd: worktree });
|
|
887
635
|
const patchCommand = `git ${patchArgs.filter(a => a !== "--no-optional-locks").join(" ")} (exit ${patch.code})`;
|
|
888
|
-
// The secret scan (audit IV-7): a committed credential must not gain a
|
|
889
|
-
// SECOND durable, console-served copy. Hit lines are redacted in the
|
|
890
|
-
// stored artifact, the row says redacted, a page names the branch — and
|
|
891
|
-
// the publication gate refuses to push a redacted run's branch anywhere.
|
|
892
|
-
// Only lines the diff adds count, and the alert is one per candidate head:
|
|
893
|
-
// every gate over the same head would otherwise repeat it.
|
|
894
636
|
const rawPatch = patch.code === 0 ? patch.stdout : patch.stderr;
|
|
895
637
|
const hits = patch.code === 0 ? scanPatchForSecrets(rawPatch) : [];
|
|
896
638
|
const patchContent = Buffer.from(hits.length > 0 ? redactSecretLines(rawPatch, hits) : rawPatch, "utf8");
|
|
@@ -919,21 +661,7 @@ export async function captureTerminalDiff(store, git, worktree, base, head, root
|
|
|
919
661
|
});
|
|
920
662
|
return { diffId, statId };
|
|
921
663
|
}
|
|
922
|
-
/**
|
|
923
|
-
* The live peek's base snapshot (live-peek v3 §1), captured in the same
|
|
924
|
-
* pre-spawn window that computed `base` itself — one `ls-tree` against the
|
|
925
|
-
* project clone (NEVER a worktree), lazy-fetch and replace-refs disabled
|
|
926
|
-
* on argv, the child's environment reduced to an allowlist that contains
|
|
927
|
-
* no GIT_* at all. The parsed listing is round-tripped through the strict
|
|
928
|
-
* snapshot codec: any entry the codec refuses — including paths the UTF-8
|
|
929
|
-
* decode mangled into U+FFFD — refuses the WHOLE snapshot, recorded as a
|
|
930
|
-
* failed capture. Integrity class: the database's own, claimed as nothing
|
|
931
|
-
* more (round-3 finding 42).
|
|
932
|
-
*/
|
|
933
664
|
export async function captureBaseTree(store, git, repoRoot, repo, base, root, runId, now) {
|
|
934
|
-
// Fail-soft throughout: a snapshot that cannot capture disables the live
|
|
935
|
-
// peek for this run and NOTHING else — the build must proceed untouched,
|
|
936
|
-
// and an invalid run refuses later at the invocation gateway, typed.
|
|
937
665
|
try {
|
|
938
666
|
return await captureBaseTreeInner(store, git, repoRoot, repo, base, root, runId, now);
|
|
939
667
|
}
|
|
@@ -943,8 +671,6 @@ export async function captureBaseTree(store, git, repoRoot, repo, base, root, ru
|
|
|
943
671
|
}
|
|
944
672
|
async function captureBaseTreeInner(store, git, repoRoot, repo, base, root, runId, now) {
|
|
945
673
|
const args = [...noLazyFetch(), "-c", "protocol.allow=never", "--no-replace-objects", "--no-optional-locks", "ls-tree", "-r", "-l", "-z", base];
|
|
946
|
-
// `git` is the builder's hardened checkout git (a frozen view): on a git without --no-lazy-fetch it refuses a partial
|
|
947
|
-
// clone from the same config it runs with (teardown-git.ts lazyFetchSetting).
|
|
948
674
|
const listed = await git("git", args, { cwd: repoRoot, envAllowlist: ["PATH", "HOME"] });
|
|
949
675
|
const command = `git ls-tree -r -l -z ${base} (exit ${listed.code})`;
|
|
950
676
|
const refuse = () => {
|
|
@@ -959,7 +685,6 @@ async function captureBaseTreeInner(store, git, repoRoot, repo, base, root, runI
|
|
|
959
685
|
for (const record of listed.stdout.split("\u0000")) {
|
|
960
686
|
if (record === "")
|
|
961
687
|
continue;
|
|
962
|
-
// "<mode> <type> <sha> <size>\t<path>" — size is "-" for gitlinks.
|
|
963
688
|
const tab = record.indexOf("\t");
|
|
964
689
|
if (tab < 0)
|
|
965
690
|
return refuse();
|
|
@@ -974,7 +699,6 @@ async function captureBaseTreeInner(store, git, repoRoot, repo, base, root, runI
|
|
|
974
699
|
return refuse();
|
|
975
700
|
}
|
|
976
701
|
const encoded = encodeBaseTreeSnapshot({ repo, run: runId, base, entries });
|
|
977
|
-
// The strict codec is the gate: what it cannot re-read, nothing stores.
|
|
978
702
|
if (parseBaseTreeSnapshot(encoded) === null)
|
|
979
703
|
return refuse();
|
|
980
704
|
storeEvidence(store, root, runId, "base-tree", "base-tree.json", Buffer.from(encoded, "utf8"), command, now, {
|