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/lead.js
CHANGED
|
@@ -17,14 +17,11 @@ import { shortenAsk } from './text-limits.js';
|
|
|
17
17
|
import { envValue } from "./names.js";
|
|
18
18
|
import { deliverableClaim, deliverableRepair, dropDeliverableClaims, replyCarriesDeliverable } from "./reply-shape.js";
|
|
19
19
|
export const LEAD_MESSAGE_MAX_CHARS = 2_000;
|
|
20
|
-
/** Where a promise made this turn is reported: the chat app it arrived on, or this conversation for the console and terminal. */
|
|
21
20
|
function promiseChannelOfTurn(channel) {
|
|
22
21
|
return channel === undefined ? undefined : channel === "console" || channel === "terminal" ? "chat" : channel;
|
|
23
22
|
}
|
|
24
|
-
/** The thread's recent history the model sees, most recent first until the cap. */
|
|
25
23
|
export const LEAD_HISTORY_CAP_BYTES = 16_384;
|
|
26
24
|
export const LEAD_HISTORY_MAX_MESSAGES = 40;
|
|
27
|
-
/** What happened, what it means, and one next step: plain words a person can act on, never internal terms. */
|
|
28
25
|
export const LEAD_REFUSAL_COPY = {
|
|
29
26
|
"empty-message": `That message was empty or too long, so it wasn't sent. Write 1 to ${LEAD_MESSAGE_MAX_CHARS} characters and send it again.`,
|
|
30
27
|
"secret-in-message": "That message looks like it contains a password or key, so it wasn't sent or saved. Remove it and send the message again.",
|
|
@@ -47,7 +44,6 @@ export const LEAD_REFUSAL_COPY = {
|
|
|
47
44
|
"request-changed": "That send was already received with different text or task context. Reload the conversation before sending a new message.",
|
|
48
45
|
channel: "This conversation's connection changed, so the message wasn't sent. Reconnect it, then send again.",
|
|
49
46
|
};
|
|
50
|
-
/** A turn stopped because its chat's standing changed: what happened, what it means, one next step. */
|
|
51
47
|
export const LEAD_CHANNEL_COPY = {
|
|
52
48
|
unpaired: "This chat is no longer connected to your account, so the reply was stopped. Nothing it proposed was kept. Connect the chat again in Settings, then send your message again.",
|
|
53
49
|
"not-approver": "Your account can no longer approve work here, so the reply was stopped. Nothing it proposed was kept. Ask an owner to restore your access, then send your message again.",
|
|
@@ -56,7 +52,6 @@ export const LEAD_CHANNEL_COPY = {
|
|
|
56
52
|
"member-changed": "Your account in this chat app no longer has access, so the reply was stopped. Nothing it proposed was kept. Ask the app's admin to add you back, then send your message again.",
|
|
57
53
|
"access-changed": "This chat's access changed while the lead was answering, so the reply was stopped. Nothing it proposed was kept. Reconnect the chat, then send your message again.",
|
|
58
54
|
};
|
|
59
|
-
/** Why a reply did not finish, in the same three parts: what happened, what it means, one next step. */
|
|
60
55
|
export const LEAD_FAILURE_COPY = {
|
|
61
56
|
stopped: "This reply was stopped before it finished, from another window or by a newer message. Nothing it proposed was kept. Send your message again if you still need an answer.",
|
|
62
57
|
ended: "Your sign-in or this conversation ended while the lead was answering. Nothing it proposed was kept. Sign in again or start a new chat, then send your message again.",
|
|
@@ -76,17 +71,12 @@ export const LEAD_FAILURE_COPY = {
|
|
|
76
71
|
empty: "The lead sent back an empty answer. Nothing was kept. Send your message again.",
|
|
77
72
|
unusable: "The lead's answer couldn't be used, so it was thrown away. Nothing was kept. Send your message again.",
|
|
78
73
|
};
|
|
79
|
-
/** A failed turn's saved reason as plain words, for a surface that reads the turn back later (a restart, a delivery retry).
|
|
80
|
-
* Its saved detail (v158), when known, names the exact cause the person saw live ("not installed", "sign-in expired"). */
|
|
81
74
|
export function leadFailureText(reason, unknownSpend = false, detail = null) {
|
|
82
|
-
// A turn whose cost is unknown paused chat: say what happened (its reason's first sentence), then that the person must
|
|
83
|
-
// confirm the cost before chat runs again — never "send it again", which would only meet the pause.
|
|
84
75
|
if (unknownSpend) {
|
|
85
76
|
if (reason === "malformed-reply")
|
|
86
77
|
return LEAD_FAILURE_COPY.unreadableUnknownCost;
|
|
87
78
|
if (reason === "over-reservation")
|
|
88
79
|
return LEAD_FAILURE_COPY.overReserved;
|
|
89
|
-
// Whether proposals were kept depends on how it ended (a timeout keeps what it drafted): this says nothing about them.
|
|
90
80
|
const happened = /^[^.]*\./.exec(leadFailureText(reason))?.[0] ?? "The lead's reply didn't finish.";
|
|
91
81
|
return `${happened} Its cost isn't known, so chat is paused. Confirm the cost on the Chat page to turn chat back on.`;
|
|
92
82
|
}
|
|
@@ -107,28 +97,20 @@ export function leadFailureText(reason, unknownSpend = false, detail = null) {
|
|
|
107
97
|
default: return "The lead's reply didn't finish. Nothing it proposed was kept. Send your message again.";
|
|
108
98
|
}
|
|
109
99
|
}
|
|
110
|
-
/** How long a provider that ignored its abort at the turn's deadline is waited for before the turn ends without it.
|
|
111
|
-
* Its process group was already killed at the deadline; this only bounds the wait for the transport to say so. */
|
|
112
100
|
export const LEAD_ABORT_GRACE_MS = 5_000;
|
|
113
101
|
const LATE = Symbol("late");
|
|
114
|
-
/** The work's own result, or LATE once `ms` passes: the turn's clock, not the work, decides when the person hears back. */
|
|
115
102
|
function settleBy(work, ms) {
|
|
116
103
|
let timer;
|
|
117
104
|
const late = new Promise(resolve => { timer = setTimeout(() => resolve(LATE), Math.max(0, ms)); });
|
|
118
105
|
return Promise.race([work, late]).finally(() => clearTimeout(timer));
|
|
119
106
|
}
|
|
120
107
|
const READ_TOOLS = new Set(["get_brief", "get_project_context", "get_code_map", "get_project_activity", "get_actions", "get_action_status", "get_skills", "get_acceptance_evidence", "recap", "list_repos", "list_tasks", "get_task", "get_result", "get_result_images", "get_controls", "get_agents", "get_project_knowledge", "get_flaky_tests", "get_task_conversation", "get_diff", "get_check_log", "get_project_tools", "get_flows", "get_flow_insights", "list_decisions", "get_decision", "queue"]);
|
|
121
|
-
/** The last messages of the thread as provider-neutral history, newest kept first until the byte cap. */
|
|
122
108
|
export function historyFor(store, thread, queuedMessageId, named = queuedMessageId !== undefined) {
|
|
123
|
-
// Admitted messages only (v128): a queued message — this one, a teammate's, or one removed while waiting — never
|
|
124
|
-
// reaches the model before its own turn takes it.
|
|
125
109
|
const rows = store.listLeadHistory(thread, LEAD_HISTORY_MAX_MESSAGES);
|
|
126
110
|
const kept = [];
|
|
127
111
|
let bytes = 0;
|
|
128
112
|
for (let index = rows.length - 1; index >= 0; index--) {
|
|
129
113
|
const row = rows[index];
|
|
130
|
-
// The current message appears once (it is added after the history). Messages still waiting — a teammate's or this
|
|
131
|
-
// person's — are already left out by listLeadHistory (pending); a mirrored channel question is history like any other.
|
|
132
114
|
if (row.id === queuedMessageId)
|
|
133
115
|
continue;
|
|
134
116
|
bytes += Buffer.byteLength(row.text, "utf8");
|
|
@@ -137,17 +119,13 @@ export function historyFor(store, thread, queuedMessageId, named = queuedMessage
|
|
|
137
119
|
const author = named && row.role === 'operator' && row.turn !== null ? store.getLeadTurn(row.turn)?.approver : undefined;
|
|
138
120
|
kept.unshift(row.role === "operator" ? { role: "operator", text: author ? `From ${author}:\n${row.text}` : row.text } : { role: "assistant", text: row.text, calls: [] });
|
|
139
121
|
}
|
|
140
|
-
// A history must open with the operator: a leading assistant reply without its question is dropped.
|
|
141
122
|
while (kept[0]?.role === "assistant")
|
|
142
123
|
kept.shift();
|
|
143
124
|
return kept;
|
|
144
125
|
}
|
|
145
|
-
/** "read 3 · proposed 1 · 2 steps" — counts only, never results (ruling 11). */
|
|
146
126
|
export function activitySummary(reads, proposals, steps, cacheShare = null) {
|
|
147
|
-
// How much of what it read came from the provider's cache, when every request reported it (docs/plans/run-efficiency.md).
|
|
148
127
|
return [`read ${reads}`, `proposed ${proposals}`, `${steps} step${steps === 1 ? "" : "s"}`, ...(cacheShare === null ? [] : [`${Math.round(cacheShare * 100)}% cached`])].join(" · ");
|
|
149
128
|
}
|
|
150
|
-
/** A tool result as the model sees it, measured as embedded; over the cap it becomes a typed refusal. */
|
|
151
129
|
function capped(value) {
|
|
152
130
|
const text = JSON.stringify(value);
|
|
153
131
|
if (toolResultBytes(text) <= LEAD_TOOL_RESULT_CAP_BYTES)
|
|
@@ -162,16 +140,12 @@ export async function runLeadTurn(input) {
|
|
|
162
140
|
const message = input.message.trim();
|
|
163
141
|
if (message === "" || message.length > LEAD_MESSAGE_MAX_CHARS)
|
|
164
142
|
return refuse("empty-message");
|
|
165
|
-
// Secrets refuse BEFORE any row or request exists — nothing stored, nothing sent.
|
|
166
143
|
if (scanForSecrets(message).length > 0)
|
|
167
144
|
return refuse("secret-in-message");
|
|
168
|
-
// Ruling 3 + 10: a minted, intact principal, re-proved against the current row.
|
|
169
145
|
if (!isVerifiedApprover(who) || !reproveApprover(store, who).ok || who.generation !== session.approverGeneration)
|
|
170
146
|
return refuse("standing");
|
|
171
|
-
// Ruling 9: the session and the thread are bound to the ceiling this surface holds.
|
|
172
147
|
if (session.ceilingDigest !== who.ceilingDigest || thread.ceilingDigest !== who.ceilingDigest)
|
|
173
148
|
return refuse("ceiling-changed");
|
|
174
|
-
// Sprint 8: the lead and project chats run on a provider and model the organisation policy allows, or not at all.
|
|
175
149
|
const disallowed = store.agentPolicyRefusal(config.provider, config.model);
|
|
176
150
|
if (disallowed !== null)
|
|
177
151
|
return { ok: false, refused: "policy", message: disallowed };
|
|
@@ -183,24 +157,17 @@ export async function runLeadTurn(input) {
|
|
|
183
157
|
return refuse("unpriced");
|
|
184
158
|
if (direct && input.key === null)
|
|
185
159
|
return refuse("unpriced");
|
|
186
|
-
// API accounting binds to the secret credential. A subscription has no
|
|
187
|
-
// API credential or dollar ledger, but changing harness still ends the
|
|
188
|
-
// old session through a stable provider-specific identity.
|
|
189
160
|
const credentialKey = direct
|
|
190
161
|
? credentialKeyOf(directProvider, input.key)
|
|
191
162
|
: subscriptionCredentialKey(subscriptionProvider);
|
|
192
163
|
const request = input.requestId;
|
|
193
164
|
if (request !== undefined && !/^[a-f0-9]{32}$/.test(request))
|
|
194
165
|
return refuse("invalid-request");
|
|
195
|
-
// Replays are read-only, but still require today's authority, not the
|
|
196
|
-
// session/thread snapshots supplied by a previous browser page.
|
|
197
166
|
const liveSession = store.getLeadSession(session.id);
|
|
198
167
|
const liveThread = store.getLeadThread(thread.id);
|
|
199
168
|
const sharedThread = liveThread !== null && store.canUseTeamMateThread(who.name, who.generation, liveThread.id);
|
|
200
169
|
if (liveSession?.approver !== who.name || (liveThread?.approver !== who.name && !sharedThread) || liveSession.credentialKey !== credentialKey)
|
|
201
170
|
return refuse("not-yours");
|
|
202
|
-
// A queued message binds only from a shared team thread, or as the exact personal queue claim of this person's own
|
|
203
|
-
// thread (its row is this approver's, in this thread, claimed under that runner and generation).
|
|
204
171
|
const personalQueued = input.queueClaim !== undefined && input.queueClaim.message === input.queuedMessageId &&
|
|
205
172
|
store.handle.prepare("SELECT 1 FROM lead_queue WHERE message = ? AND approver = ? AND thread = ? AND status = 'running' AND runner = ? AND generation = ? AND turn_id IS NULL")
|
|
206
173
|
.get(input.queueClaim.message, who.name, thread.id, input.queueClaim.runner, input.queueClaim.generation) !== undefined;
|
|
@@ -216,11 +183,8 @@ export async function runLeadTurn(input) {
|
|
|
216
183
|
const receipt = request === undefined ? null : store.leadRequestReceipt(session.id, request);
|
|
217
184
|
if (receipt !== null)
|
|
218
185
|
return receipt.digest === digest ? { ok: true, replayed: true, turn: receipt.turn } : refuse("request-changed");
|
|
219
|
-
// The channel's standing, proved before anything is admitted or sent.
|
|
220
186
|
if (input.revalidate !== undefined && !(await input.revalidate()).ok)
|
|
221
187
|
return refuse("channel");
|
|
222
|
-
// Which model answers (responsive-chat.md §8), decided once, before the turn: the faster one only for a plain read
|
|
223
|
-
// question with quick answers on; everything else on the configured model, as before.
|
|
224
188
|
const quickOn = leadQuickAnswersOn(store);
|
|
225
189
|
const quickModel = quickOn ? quickLeadModel(store) : config.model;
|
|
226
190
|
let route = quickRoute({ enabled: quickOn, provider: config.provider, mainModel: config.model, message,
|
|
@@ -229,16 +193,12 @@ export async function runLeadTurn(input) {
|
|
|
229
193
|
let now = clock();
|
|
230
194
|
store.sweepStaleLeadTurns(now);
|
|
231
195
|
const view = leadViewContextFor(store, who);
|
|
232
|
-
// Names in the bundle are deliberate (the lead's, the person's first name, project labels); everything else is scrubbed.
|
|
233
196
|
const document = leadContext(store, who.repos, now, { owner: who.name, thread: thread.id, redact: text => redactForLead(text, view),
|
|
234
197
|
projectName: (path, index) => projectLabelForLead(path, index, view.names),
|
|
235
198
|
...(input.evidenceRoot === undefined ? {} : { evidenceRoot: input.evidenceRoot }), ...(input.channel === undefined ? {} : { channel: input.channel }), ...(input.leadName === undefined ? {} : { leadName: input.leadName }) });
|
|
236
|
-
// A team room names who wrote each message; a person's own queued message is just theirs.
|
|
237
199
|
const authoredMessage = input.queuedMessageId === undefined || personalQueued ? message : `From ${who.name}:\n${message}`;
|
|
238
200
|
const historyMessage = input.context === undefined ? authoredMessage : `${redactForLead(input.context, view)}\n\n${authoredMessage}`;
|
|
239
201
|
const history = [...historyFor(store, thread.id, input.queuedMessageId, input.queuedMessageId !== undefined && !personalQueued), { role: "operator", text: historyMessage }];
|
|
240
|
-
// Tools on demand (docs/plans/lead-deferred-tools.md): a request advertises the core tools, then the ones find_tools
|
|
241
|
-
// found earlier in this reply, in that order (so the core prefix stays the same as tools are found).
|
|
242
202
|
const findTools = { searches: 0, found: new Set() };
|
|
243
203
|
const advertisedTools = () => [
|
|
244
204
|
...LEAD_TOOL_SCHEMAS.filter(one => LEAD_CORE_TOOLS.has(one.name)),
|
|
@@ -247,23 +207,15 @@ export async function runLeadTurn(input) {
|
|
|
247
207
|
const composeDirect = (key, tools) => {
|
|
248
208
|
if (!direct)
|
|
249
209
|
throw new Error("not a direct chat provider");
|
|
250
|
-
// Anthropic prompt caching: the core tools (always first) end the first breakpoint (docs/plans/lead-deferred-tools.md).
|
|
251
210
|
const cache = directProvider === "anthropic-api" ? { coreTools: tools.filter(one => LEAD_CORE_TOOLS.has(one.name)).length } : undefined;
|
|
252
211
|
return composeLeadRequest({ provider: directProvider, model: config.model, key, system: LEAD_CONTRACT, dataDocument: document, history, tools, ...(cache === undefined ? {} : { cache }) });
|
|
253
212
|
};
|
|
254
213
|
const composeSubscription = (tools) => composeSubscriptionLeadPrompt({ system: LEAD_CONTRACT, dataDocument: document, history, tools });
|
|
255
|
-
// The reservation-only base: the FULL registry, serialized as a request would be, so any tool found later in this
|
|
256
|
-
// reply is already covered by the worst case. What is sent each round is smaller (the advertised set) and is scanned
|
|
257
|
-
// whole before every dispatch. Only direct API traffic needs a dollar reservation; subscription traffic records zero.
|
|
258
214
|
const base = direct ? composeDirect("", LEAD_TOOL_SCHEMAS).body : composeSubscription(LEAD_TOOL_SCHEMAS);
|
|
259
215
|
if (scanForSecrets(base).length > 0)
|
|
260
216
|
return refuse("secret-in-context");
|
|
261
|
-
// Fit the bounded tool loop to the already-authorized remaining allowance.
|
|
262
|
-
// Context/history growth must not demand a larger budget for a simple reply.
|
|
263
|
-
// Each chosen step retains the same worst-case call/output accounting.
|
|
264
217
|
let maxSteps = LEAD_MAX_STEPS;
|
|
265
218
|
const baseBytes = Buffer.byteLength(base, "utf8");
|
|
266
|
-
// With prompt caching on (Anthropic), the worst case reserves every input token at the cache-write rate (the dearest).
|
|
267
219
|
const reservePrice = direct && directProvider === "anthropic-api" ? cacheWorstPrice(price) : price;
|
|
268
220
|
const reserveFor = (steps) => direct ? leadWorstCaseForPrice(reservePrice, baseBytes, { steps }) : 0;
|
|
269
221
|
if (direct) {
|
|
@@ -300,7 +252,6 @@ export async function runLeadTurn(input) {
|
|
|
300
252
|
if (input.queuedMessageId === undefined)
|
|
301
253
|
store.appendLeadMessage({ thread: thread.id, turn: turnId, role: "operator", text: message }, now);
|
|
302
254
|
else {
|
|
303
|
-
// Binding admits it: the same statement clears pending, so it joins history exactly when its turn exists (v128).
|
|
304
255
|
const bound = store.handle.prepare("UPDATE lead_message SET turn=?, pending=0 WHERE id=? AND thread=? AND role='operator' AND turn IS NULL AND text=?")
|
|
305
256
|
.run(turnId, input.queuedMessageId, thread.id, message);
|
|
306
257
|
if (Number(bound.changes) !== 1)
|
|
@@ -321,9 +272,8 @@ export async function runLeadTurn(input) {
|
|
|
321
272
|
const progress = (event) => { try {
|
|
322
273
|
input.onProgress?.(event);
|
|
323
274
|
}
|
|
324
|
-
catch {
|
|
275
|
+
catch { } };
|
|
325
276
|
progress({ kind: "started", turn: turnId });
|
|
326
|
-
/** Text that looked like a secret was held back: every preview closes, once (responsive-chat.md §2.1). */
|
|
327
277
|
let blockedSaid = false;
|
|
328
278
|
const blockPreview = () => { if (!blockedSaid) {
|
|
329
279
|
blockedSaid = true;
|
|
@@ -336,10 +286,8 @@ export async function runLeadTurn(input) {
|
|
|
336
286
|
const readResults = new Map();
|
|
337
287
|
const searchedMemory = new Map();
|
|
338
288
|
const checkedCapabilities = new Map();
|
|
339
|
-
/** The turn's one question to its owner: shown with the reply only once the turn answers; a failed turn drops it. */
|
|
340
289
|
const ask = (question, options) => store.recordLeadAsk({ turn: turnId, thread: thread.id, question, options }, clock());
|
|
341
290
|
let tokensIn = 0;
|
|
342
|
-
// What its requests read from the provider's cache; known only while every request reported it.
|
|
343
291
|
let cacheRead = 0, cacheKnown = true;
|
|
344
292
|
let tokensOut = 0;
|
|
345
293
|
let settled = 0;
|
|
@@ -349,22 +297,18 @@ export async function runLeadTurn(input) {
|
|
|
349
297
|
proposals++;
|
|
350
298
|
return store.draftLeadProposal({ thread: thread.id, turn: turnId, kind, payload, ceilingDigest: who.ceilingDigest }, clock());
|
|
351
299
|
};
|
|
352
|
-
/** The screenshots a tool selected, kept under THIS turn: a failed turn deletes them with its drafts; a channel plans sends only from an answered turn. */
|
|
353
300
|
const selectEvidence = (rows) => {
|
|
354
301
|
store.recordLeadTurnEvidence(turnId, rows, RESULT_IMAGES_PER_TURN_CAP, clock());
|
|
355
302
|
if (store.getLeadTurn(turnId)?.state !== "running")
|
|
356
303
|
return [];
|
|
357
304
|
return store.listLeadTurnEvidence(turnId).map(one => one.artifact);
|
|
358
305
|
};
|
|
359
|
-
/** The turn ends failed: its drafts are deleted, its cost settled — the whole reservation when any of it is unknown. */
|
|
360
306
|
const fail = (failed, message, unknownSpend, failureDetail = null) => {
|
|
361
307
|
now = clock();
|
|
362
308
|
store.finalizeLeadTurn(turnId, started.generation, { state: "failed", settledMicrousd: settled, unknownSpend, tokensIn, tokensOut, failureReason: failed, failureDetail }, now);
|
|
363
309
|
store.dropLeadAsk(turnId);
|
|
364
310
|
return { ok: false, turn: turnId, failed, message, unknownSpend };
|
|
365
311
|
};
|
|
366
|
-
/** The turn stopped at its deadline: the notice is saved in the thread with whatever its completed tool calls proposed, in
|
|
367
|
-
* the same write that ends the turn, so a refresh, another device or a restart shows the same outcome. */
|
|
368
312
|
const timedOut = (unknownSpend, failureDetail = null) => {
|
|
369
313
|
now = clock();
|
|
370
314
|
const message = leadTimeoutNotice(proposals > 0, unknownSpend);
|
|
@@ -375,15 +319,11 @@ export async function runLeadTurn(input) {
|
|
|
375
319
|
return { ok: false, turn: turnId, failed: "timeout", message, unknownSpend, saved: true };
|
|
376
320
|
};
|
|
377
321
|
const deadlineLeft = () => TURN_WALL_CLOCK_MS - (clock().getTime() - turnStartedAt);
|
|
378
|
-
/** The channel's standing, bounded by the turn's deadline: a lookup that never answers cannot hold the turn open. */
|
|
379
322
|
const revalidated = async () => input.revalidate === undefined ? { ok: true } : settleBy(input.revalidate(), deadlineLeft() + LEAD_ABORT_GRACE_MS);
|
|
380
|
-
/** The turn's own row, re-read: still running under our generation, or someone ended it under us. */
|
|
381
323
|
const stillOurs = () => {
|
|
382
324
|
const row = store.getLeadTurn(turnId);
|
|
383
325
|
return row !== null && row.state === "running" && row.generation === started.generation;
|
|
384
326
|
};
|
|
385
|
-
// The channel lookup can await external state. Re-read all local authority
|
|
386
|
-
// AFTER it resolves, immediately before sending context or using a tool.
|
|
387
327
|
const guard = (channel) => {
|
|
388
328
|
if (!stillOurs())
|
|
389
329
|
return { ok: false, turn: turnId, failed: "superseded", message: LEAD_FAILURE_COPY.stopped, unknownSpend: false };
|
|
@@ -402,13 +342,9 @@ export async function runLeadTurn(input) {
|
|
|
402
342
|
let reply = null;
|
|
403
343
|
let stoppedAtCap = false;
|
|
404
344
|
let lastText = "";
|
|
405
|
-
/** A page shown this turn (show_control): a reply may say it links one. */
|
|
406
345
|
let shownControl = false;
|
|
407
|
-
/** The turn's one repair step for a reply that claims an attachment it does not carry. */
|
|
408
346
|
let repaired = false;
|
|
409
|
-
/** The turn's one shorten step for a reply over its channel's message limit (LEAD_REPLY_LIMITS); still over, it is split. */
|
|
410
347
|
let shortened = false;
|
|
411
|
-
/** Why the next step runs, when it re-asks about the reply itself (repair or shorten): the live status says so. */
|
|
412
348
|
let nextReason;
|
|
413
349
|
const replyLimit = input.channel === undefined ? null : LEAD_REPLY_LIMITS[input.channel];
|
|
414
350
|
const unbacked = (text) => {
|
|
@@ -425,14 +361,11 @@ export async function runLeadTurn(input) {
|
|
|
425
361
|
const remainingMs = TURN_WALL_CLOCK_MS - (now.getTime() - turnStartedAt);
|
|
426
362
|
if (remainingMs <= 0)
|
|
427
363
|
return timedOut(false);
|
|
428
|
-
// This request's advertised tools: fixed for the request; a tool found in its reply is advertised from the next one.
|
|
429
|
-
// A quick step (§8) advertises the reads, and find_tools as its way to ask for more, on the faster model.
|
|
430
364
|
const quick = route === "fast";
|
|
431
365
|
const stepModel = quick ? quickModel : config.model;
|
|
432
366
|
const advertised = quick ? LEAD_TOOL_SCHEMAS.filter(one => quickAdvertises(one.name)) : advertisedTools();
|
|
433
367
|
const advertisedNames = new Set(advertised.map(one => one.name));
|
|
434
368
|
const request = direct ? composeDirect(input.key, advertised) : composeSubscription(advertised);
|
|
435
|
-
// Tool results join the outbound body: scanned again before every dispatch.
|
|
436
369
|
const outbound = typeof request === "string" ? request : request.body;
|
|
437
370
|
if (scanForSecrets(outbound).length > 0) {
|
|
438
371
|
return fail("secret-refused", LEAD_FAILURE_COPY.secretRead, false);
|
|
@@ -451,13 +384,9 @@ export async function runLeadTurn(input) {
|
|
|
451
384
|
nextReason = undefined;
|
|
452
385
|
const requestBytes = Buffer.byteLength(outbound, "utf8");
|
|
453
386
|
let result;
|
|
454
|
-
// The turn owns its deadline (lead-stall, release check 2438): at the deadline the request is aborted, which ends a
|
|
455
|
-
// harness's whole process group, and a provider that still has not settled LEAD_ABORT_GRACE_MS later is left behind.
|
|
456
|
-
// Whatever it says after that is never read; the turn has already ended with its notice.
|
|
457
387
|
const controller = new AbortController();
|
|
458
388
|
const abortAt = setTimeout(() => controller.abort(), remainingMs);
|
|
459
389
|
const settle = (work) => settleBy(work, remainingMs + LEAD_ABORT_GRACE_MS)
|
|
460
|
-
// A harness that ended at the deadline still says whether it had written anything (recorded, never shown).
|
|
461
390
|
.then(value => value === LATE ? { ok: false, problem: "timeout" } : controller.signal.aborted
|
|
462
391
|
? { ok: false, problem: "timeout", ...(!value.ok && "quiet" in value && typeof value.quiet === "boolean" ? { quiet: value.quiet } : {}) } : value)
|
|
463
392
|
.finally(() => clearTimeout(abortAt));
|
|
@@ -476,8 +405,6 @@ export async function runLeadTurn(input) {
|
|
|
476
405
|
tools: advertised,
|
|
477
406
|
timeoutMs: remainingMs,
|
|
478
407
|
signal: controller.signal,
|
|
479
|
-
// The reply as it is written; text that looks like a secret is
|
|
480
|
-
// never shown (the finished reply is scanned again before saving).
|
|
481
408
|
...(input.onProgress === undefined ? {} : { onText: (text) => { if (controller.signal.aborted)
|
|
482
409
|
return; if (scanForSecrets(text).length === 0)
|
|
483
410
|
progress({ kind: "text", turn: turnId, step: steps, text });
|
|
@@ -489,7 +416,6 @@ export async function runLeadTurn(input) {
|
|
|
489
416
|
const finishStep = (outcome) => store.finalizeChatTurn(step.id, stepStarted.generation, outcome, now);
|
|
490
417
|
if (!result.ok) {
|
|
491
418
|
if (!direct) {
|
|
492
|
-
// The exact cause, saved (v158): what a later reader shows, and what the next timeout diagnosis reads.
|
|
493
419
|
const quiet = "quiet" in result ? result.quiet : undefined;
|
|
494
420
|
const detail = result.problem === "timeout" ? (quiet === true ? "timeout-silent" : quiet === false ? "timeout-output" : null)
|
|
495
421
|
: result.problem === "not-found" ? "not-installed" : result.problem === "malformed-reply" ? null : "sign-in";
|
|
@@ -506,7 +432,6 @@ export async function runLeadTurn(input) {
|
|
|
506
432
|
return fail(result.problem === "malformed-reply" ? "malformed-reply" : "provider-error", message, false, detail);
|
|
507
433
|
}
|
|
508
434
|
if (result.problem.startsWith("status-")) {
|
|
509
|
-
// The provider ANSWERED with an error: nothing billed for this step.
|
|
510
435
|
finishStep({ state: "failed", failureReason: "provider-error", settledMicrousd: 0, failureDetail: "refused" });
|
|
511
436
|
return fail("provider-error", LEAD_FAILURE_COPY.refused, false, "refused");
|
|
512
437
|
}
|
|
@@ -522,37 +447,27 @@ export async function runLeadTurn(input) {
|
|
|
522
447
|
return fail("malformed-reply", LEAD_FAILURE_COPY.unreadableUnknownCost, true);
|
|
523
448
|
}
|
|
524
449
|
const answer = result.answer;
|
|
525
|
-
// The streamed reply's finished text, once, secret-checked whole: only now may its last word show live.
|
|
526
450
|
if (!direct && input.onProgress !== undefined && !controller.signal.aborted && answer.text !== "") {
|
|
527
451
|
if (scanForSecrets(answer.text).length === 0)
|
|
528
452
|
progress({ kind: "text", turn: turnId, step: steps, text: answer.text, final: true });
|
|
529
453
|
else
|
|
530
454
|
blockPreview();
|
|
531
455
|
}
|
|
532
|
-
// Usage that cannot be true — more input tokens than bytes sent — is a
|
|
533
|
-
// malformed reply with unknown cost, never a number to settle by.
|
|
534
456
|
if (direct && answer.tokensIn > requestBytes) {
|
|
535
457
|
finishStep({ state: "failed", failureReason: "malformed-reply", settledMicrousd: null, unknownSpend: true });
|
|
536
458
|
return fail("malformed-reply", LEAD_FAILURE_COPY.unreadableUnknownCost, true);
|
|
537
459
|
}
|
|
538
|
-
// The pinned math, or the provider's own reported charge when HIGHER.
|
|
539
460
|
const stepSettled = direct
|
|
540
461
|
? Math.max(settleWithCache(price, answer), answer.reportedCostMicrousd ?? 0)
|
|
541
462
|
: 0;
|
|
542
|
-
// The reservation is the bound: a step whose reported usage would settle past what this reply reserved (the
|
|
543
|
-
// estimate counts a token per three bytes; a provider may report more) ends the turn with its cost unknown, which
|
|
544
|
-
// settles the whole reservation and pauses chat until the cost is confirmed — never a debit past the reservation
|
|
545
|
-
// or the session's ceiling.
|
|
546
463
|
if (direct && settled + stepSettled > reserved) {
|
|
547
464
|
finishStep({ state: "failed", failureReason: "over-budget", settledMicrousd: null, unknownSpend: true });
|
|
548
465
|
return fail("over-reservation", LEAD_FAILURE_COPY.overReserved, true);
|
|
549
466
|
}
|
|
550
467
|
finishStep({ state: "answered", tokensIn: answer.tokensIn, tokensOut: answer.tokensOut, settledMicrousd: stepSettled, replyBytes: Buffer.byteLength(answer.text, "utf8"),
|
|
551
468
|
cacheReadTokens: answer.cacheReadTokens ?? null, cacheWriteTokens: answer.cacheWriteTokens ?? null,
|
|
552
|
-
// v140: what the provider itself reported for this request (absent: unreported, kept NULL).
|
|
553
469
|
modelReported: answer.modelReported ?? null, providerTurns: answer.providerTurns ?? null, reportedCostUsd: answer.reportedCostUsd ?? null,
|
|
554
470
|
billingReported: answer.billingReported ?? null,
|
|
555
|
-
// v158: the tools this step asked for, names only (responsive-chat.md §7.2), so the next latency call is data-driven.
|
|
556
471
|
tools: answer.calls.map(one => one.name) });
|
|
557
472
|
tokensIn += answer.tokensIn;
|
|
558
473
|
tokensOut += answer.tokensOut;
|
|
@@ -562,14 +477,9 @@ export async function runLeadTurn(input) {
|
|
|
562
477
|
cacheRead += answer.cacheReadTokens;
|
|
563
478
|
settled += stepSettled;
|
|
564
479
|
lastText = answer.text;
|
|
565
|
-
// After the wait (finding 5): the row may have been failed under us by
|
|
566
|
-
// a revocation or the sweep — then nothing the model said runs; and the
|
|
567
|
-
// approver must still stand before any tool runs as them.
|
|
568
480
|
const changed = guard(await revalidated());
|
|
569
481
|
if (changed !== null)
|
|
570
482
|
return changed;
|
|
571
|
-
// A quick step that asked for more than a read (§8): its calls are discarded unrun, and the configured model takes the
|
|
572
|
-
// reply over from the same history, for this step and every later one. Steps and the turn's deadline still bind.
|
|
573
483
|
if (route === "fast" && quickStepEscalates(answer.calls)) {
|
|
574
484
|
route = "escalated";
|
|
575
485
|
setLeadTurnRoute(store, turnId, started.generation, route);
|
|
@@ -579,7 +489,6 @@ export async function runLeadTurn(input) {
|
|
|
579
489
|
if (answer.calls.length === 0) {
|
|
580
490
|
if (answer.text.trim() === "")
|
|
581
491
|
return fail("malformed-reply", LEAD_FAILURE_COPY.empty, false);
|
|
582
|
-
// "Here's the screenshot" with nothing attached or linked: one repair step to attach it or drop the claim; never the claim alone.
|
|
583
492
|
const claim = unbacked(answer.text);
|
|
584
493
|
if (claim !== null && !repaired && steps < maxSteps) {
|
|
585
494
|
repaired = true;
|
|
@@ -612,16 +521,9 @@ export async function runLeadTurn(input) {
|
|
|
612
521
|
if (changed !== null)
|
|
613
522
|
return changed;
|
|
614
523
|
}
|
|
615
|
-
// Position within this turn is unique even if a provider reuses call ids.
|
|
616
524
|
const progressId = `${turnId}:${steps}:${index}`;
|
|
617
525
|
progress({ kind: "tool", turn: turnId, step: steps, id: progressId, label: leadToolLabel(call.name) });
|
|
618
|
-
// A registered tool this request did not advertise is refused before it is read or run (the only production
|
|
619
|
-
// caller of executeLeadTool): the model learns the road (find_tools, then the next step) and the reply goes on.
|
|
620
526
|
const toolContext = () => ({ store, who, now: clock(), draft, selectEvidence, ...(input.replyImage === undefined ? {} : { replyImage: input.replyImage }), step: steps, readDecisions, readResults, searchedMemory, checkedCapabilities, ask, findTools, ...(input.integrations === undefined ? {} : { integrations: input.integrations }), thread: thread.id, turn: turnId, ...(promiseChannelOfTurn(input.channel) === undefined ? {} : { channel: promiseChannelOfTurn(input.channel) }), ...(input.evidenceRoot === undefined ? {} : { evidenceRoot: input.evidenceRoot }), ...(input.mediaDelivery === undefined ? {} : { mediaDelivery: input.mediaDelivery }) });
|
|
621
|
-
// propose_start (docs/plans/one-step-chat.md C3), after the advertisement gate: its input is validated first (so
|
|
622
|
-
// invalid input never reaches the classifier), then Toolroll prepares this call's own preview in this turn (up to
|
|
623
|
-
// the classifier's budget), then the person's standing and the thread are re-proved after that wait, and only then
|
|
624
|
-
// does the tool run, with the preview in this call's own context. The model's arguments never name it.
|
|
625
527
|
let startPrepared;
|
|
626
528
|
if (call.name === "propose_start" && advertisedNames.has(call.name)) {
|
|
627
529
|
const checked = startInputOf(toolContext(), call.args);
|
|
@@ -642,14 +544,11 @@ export async function runLeadTurn(input) {
|
|
|
642
544
|
? reason : `That step didn't work (${leadToolLabel(call.name)}).` };
|
|
643
545
|
}
|
|
644
546
|
progress({ kind: "tool-result", turn: turnId, step: steps, id: progressId, outcome: displayOutcome });
|
|
645
|
-
// A call refused because this request did not advertise it read nothing.
|
|
646
547
|
if (READ_TOOLS.has(call.name) && advertisedNames.has(call.name))
|
|
647
548
|
reads++;
|
|
648
549
|
if ((call.name === "show_control" || call.name === "show_card") && outcome.ok)
|
|
649
550
|
shownControl = true;
|
|
650
|
-
|
|
651
|
-
// blanked. Each line stays whole JSON so a run can assert on what a tool returned rather than on the model's words.
|
|
652
|
-
if (envValue(process.env, "LEAD_TRACE") === "1" || envValue(process.env, "MATE_TRACE") === "1") { // MATE_TRACE: the name before D5
|
|
551
|
+
if (envValue(process.env, "LEAD_TRACE") === "1" || envValue(process.env, "MATE_TRACE") === "1") {
|
|
653
552
|
const blanked = (_, value) => typeof value === "string" ? redactSecretAssignments(redactSecretLines(value, scanForSecrets(value))) : value;
|
|
654
553
|
const args = JSON.stringify(call.args, blanked).slice(0, 1500);
|
|
655
554
|
const result = JSON.stringify(outcome.ok ? outcome.body : null, blanked)?.slice(0, 2000) ?? null;
|
|
@@ -663,7 +562,6 @@ export async function runLeadTurn(input) {
|
|
|
663
562
|
const last = lastText.trim() === "" || unbacked(lastText) === null ? lastText.trim() : dropDeliverableClaims(lastText);
|
|
664
563
|
reply = `${last === "" ? "" : `${last}\n\n`}(I stopped here: this answer needed more steps than ${maxSteps < LEAD_MAX_STEPS ? "this conversation's remaining spending allows" : "one reply allows"}. Ask me to carry on.)`;
|
|
665
564
|
}
|
|
666
|
-
// Ruling 11: model text is scanned before it becomes durable.
|
|
667
565
|
if (scanForSecrets(reply).length > 0) {
|
|
668
566
|
blockPreview();
|
|
669
567
|
return fail("secret-refused", LEAD_FAILURE_COPY.secretReply, false);
|
|
@@ -671,7 +569,6 @@ export async function runLeadTurn(input) {
|
|
|
671
569
|
now = clock();
|
|
672
570
|
const routed = routeWords(route, quickModel, config.model);
|
|
673
571
|
const activity = `${activitySummary(reads, proposals, steps, cacheKnown && tokensIn > 0 ? Math.min(1, cacheRead / tokensIn) : null)}${routed === null ? "" : ` · ${routed}`}`;
|
|
674
|
-
// One write (finding 12): settle, debit, promote the drafts, append the assistant text.
|
|
675
572
|
const finalized = store.finalizeLeadTurn(turnId, started.generation, { state: "answered", settledMicrousd: settled, tokensIn, tokensOut, message: { text: reply, activity } }, now);
|
|
676
573
|
if (!finalized)
|
|
677
574
|
return { ok: false, turn: turnId, failed: "superseded", message: LEAD_FAILURE_COPY.stopped, unknownSpend: false };
|
package/dist/learning-child.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Started only by learning-look.ts: one project's learning recovery (project-learning.ts acceptedIdentities and
|
|
3
|
-
* recoverLearning) in a process of its own, so its synchronous reads of the project's Git folder can never hold the
|
|
4
|
-
* console's thread. It opens the database without migrating, does that one project, and ends; the console kills it
|
|
5
|
-
* at its deadline. Its one argument is JSON naming the database, the evidence folder and the project.
|
|
6
|
-
*/
|
|
7
1
|
import { acceptedIdentities, recoverLearning } from "./project-learning.js";
|
|
8
2
|
import { openStoreNoMigrate } from "./store.js";
|
|
9
3
|
const input = JSON.parse(process.argv[2] ?? "null");
|
package/dist/learning-look.js
CHANGED
|
@@ -1,19 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Work that reads a project's own folder synchronously, run in a process of its own and killed at a deadline, so a
|
|
3
|
-
* folder that doesn't answer (a disconnected drive, an iCloud folder macOS is holding) costs that one piece of work,
|
|
4
|
-
* never the console's thread: learning recovery (learning-child.ts) and Chat's first-task suggestions
|
|
5
|
-
* (first-tasks-child.ts).
|
|
6
|
-
*/
|
|
7
1
|
import { spawn } from "node:child_process";
|
|
8
2
|
import { fileURLToPath } from "node:url";
|
|
9
3
|
import {} from "./first-run.js";
|
|
10
|
-
/** How long one project's recovery may take before it is stopped (the next pass tries again). */
|
|
11
4
|
export const LEARNING_LOOK_MS = 60_000;
|
|
12
|
-
/** How long reading one project's first-task suggestions may take. */
|
|
13
5
|
export const FIRST_TASKS_LOOK_MS = 20_000;
|
|
14
|
-
/** Only what git and gh need from the environment (no NODE_OPTIONS, no other secrets). */
|
|
15
6
|
const CHILD_ENV = ["PATH", "HOME", "TMPDIR", "LANG", "USER", "XDG_CONFIG_HOME", "GH_TOKEN", "GITHUB_TOKEN", "GH_HOST", "GH_CONFIG_DIR"];
|
|
16
|
-
/** One of this build's own child entries, given `input` as JSON, killed at the deadline. Its stdout, bounded. */
|
|
17
7
|
function ownChild(name, input, deadlineMs) {
|
|
18
8
|
return new Promise(resolveOutcome => {
|
|
19
9
|
const source = import.meta.url.endsWith(".ts");
|
|
@@ -45,9 +35,7 @@ function ownChild(name, input, deadlineMs) {
|
|
|
45
35
|
child.once("close", code => settle(code === 0 ? "done" : "failed"));
|
|
46
36
|
});
|
|
47
37
|
}
|
|
48
|
-
/** The production learning runner: learning-child in its own process. */
|
|
49
38
|
export const learningChild = async (input, deadlineMs) => (await ownChild("learning-child", input, deadlineMs)).outcome;
|
|
50
|
-
/** Recover learning for each project in turn, each in its own bounded process. */
|
|
51
39
|
export async function recoverLearningOffThread(input, options = {}) {
|
|
52
40
|
const outcomes = new Map();
|
|
53
41
|
for (const repo of input.repos) {
|
|
@@ -55,8 +43,6 @@ export async function recoverLearningOffThread(input, options = {}) {
|
|
|
55
43
|
}
|
|
56
44
|
return outcomes;
|
|
57
45
|
}
|
|
58
|
-
/** One project's first-task suggestions (first-run.ts findFirstTasks: its issues through gh, its TODOs through the
|
|
59
|
-
* hardened git) read in a process of its own. Rejects when it failed or didn't answer: the caller keeps the generic ones. */
|
|
60
46
|
export async function firstTasksOffThread(repo, deadlineMs = FIRST_TASKS_LOOK_MS) {
|
|
61
47
|
const ran = await ownChild("first-tasks-child", { repo }, deadlineMs);
|
|
62
48
|
if (ran.outcome !== "done")
|
package/dist/ledger-chain.js
CHANGED
|
@@ -1,21 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* v103: the action ledger as a hash chain. Every entry is sealed, in id
|
|
3
|
-
* order, with a fingerprint of its own fields and the previous entry's
|
|
4
|
-
* fingerprint; changing, removing or slipping in an entry breaks the chain
|
|
5
|
-
* from that point, and `verifyLedgerChain` names the first place it breaks.
|
|
6
|
-
*
|
|
7
|
-
* The ledger itself is append-only (its triggers refuse UPDATE and DELETE);
|
|
8
|
-
* the chain is what still shows it when someone with the database file drops
|
|
9
|
-
* those triggers. It has no secret key: someone who can rewrite the file can
|
|
10
|
-
* also drop seals and let the next pass reseal, so what proves history is a
|
|
11
|
-
* checkpoint's head copied off the machine (and, from sprint 6, streamed to
|
|
12
|
-
* the customer's log system), plus a running console noticing that a head it
|
|
13
|
-
* already walked to has changed.
|
|
14
|
-
*
|
|
15
|
-
* Entries are sealed shortly after they're written (by the worker, and
|
|
16
|
-
* before anything reads, verifies or exports the chain), so the triggers
|
|
17
|
-
* that write the ledger stay plain SQL any build can run.
|
|
18
|
-
*/
|
|
19
1
|
import { createHash } from "node:crypto";
|
|
20
2
|
export const LEDGER_CHAIN_SCHEMA = `
|
|
21
3
|
CREATE TABLE IF NOT EXISTS ledger_seal (
|
|
@@ -39,25 +21,17 @@ BEGIN SELECT RAISE(ABORT, 'ledger checkpoints are append-only'); END;
|
|
|
39
21
|
CREATE TRIGGER IF NOT EXISTS ledger_checkpoint_no_delete BEFORE DELETE ON ledger_checkpoint
|
|
40
22
|
BEGIN SELECT RAISE(ABORT, 'ledger checkpoints are append-only'); END;
|
|
41
23
|
`;
|
|
42
|
-
/** Where the chain starts: the previous fingerprint of the first entry. */
|
|
43
24
|
export const LEDGER_GENESIS = createHash("sha256").update("standing-orders/action-ledger/v103", "utf8").digest("hex");
|
|
44
25
|
const FIELDS = ["id", "at", "actor", "repo", "task_id", "run_id", "action", "outcome", "source", "detail"];
|
|
45
|
-
/** A whole number column as JavaScript can hold it: one past 2^53 (only a hand edit puts one there) reads as its text,
|
|
46
|
-
* which `rowProblem` names, instead of failing the read. */
|
|
47
26
|
export const safeWhole = (column, as = column) => `CASE WHEN typeof(${column}) = 'integer' AND ${column} NOT BETWEEN -9007199254740991 AND 9007199254740991 THEN CAST(${column} AS TEXT) ELSE ${column} END AS ${as}`;
|
|
48
|
-
/** The fields a seal covers, read safely. */
|
|
49
27
|
const SEALED = FIELDS.map(name => name === "id" || name === "run_id" ? safeWhole(name) : name).join(", ");
|
|
50
|
-
/** An entry's fingerprint: the previous one and the entry's own fields, in a fixed order. */
|
|
51
28
|
export function entryHash(prev, row) {
|
|
52
29
|
const fields = FIELDS.map(name => { const value = row[name]; return value === undefined ? null : typeof value === "bigint" ? Number(value) : value; });
|
|
53
30
|
return createHash("sha256").update(`${prev}\n${JSON.stringify(fields)}`, "utf8").digest("hex");
|
|
54
31
|
}
|
|
55
|
-
/** The largest entry number a seal can name (JavaScript's safe integers); anything outside 1..LARGEST was put there by hand. */
|
|
56
32
|
const LARGEST = Number.MAX_SAFE_INTEGER;
|
|
57
33
|
export const IN_RANGE = `BETWEEN 1 AND ${LARGEST}`;
|
|
58
|
-
/** Outside it, written so SQLite finds such rows by key rather than reading every row. */
|
|
59
34
|
const OUTSIDE = (column) => `${column} < 1 OR ${column} > ${LARGEST}`;
|
|
60
|
-
/** Why a row can't be an entry the ledger wrote: each field is exactly the kind of value its writers store. */
|
|
61
35
|
export function rowProblem(row) {
|
|
62
36
|
const whole = (value) => typeof value === "number" && Number.isSafeInteger(value);
|
|
63
37
|
const text = (value) => typeof value === "string";
|
|
@@ -73,7 +47,6 @@ export function rowProblem(row) {
|
|
|
73
47
|
return `a ${name} the ledger never writes`;
|
|
74
48
|
return null;
|
|
75
49
|
}
|
|
76
|
-
/** Seal every entry written since the last seal, in id order. Returns how many were sealed. Call inside a write transaction. */
|
|
77
50
|
export function sealLedger(db) {
|
|
78
51
|
const last = db.prepare(`SELECT id, hash FROM ledger_seal WHERE id ${IN_RANGE} ORDER BY id DESC LIMIT 1`).get();
|
|
79
52
|
let prevId = last === undefined ? 0 : Number(last["id"]);
|
|
@@ -95,7 +68,6 @@ export function sealLedger(db) {
|
|
|
95
68
|
}
|
|
96
69
|
}
|
|
97
70
|
const PAGE = 1000;
|
|
98
|
-
/** Rows of a keyset query (`WHERE id > ? ... ORDER BY id LIMIT n`), a page at a time. */
|
|
99
71
|
function* pages(db, sql, from) {
|
|
100
72
|
const statement = db.prepare(sql);
|
|
101
73
|
let after = from;
|
|
@@ -107,13 +79,9 @@ function* pages(db, sql, from) {
|
|
|
107
79
|
after = Number(page[page.length - 1]["id"]);
|
|
108
80
|
}
|
|
109
81
|
}
|
|
110
|
-
/** Walk the chain: every entry sealed, every seal an entry, each fingerprint right and linked to the one before,
|
|
111
|
-
* and every checkpoint still matching. With `from`, the walk starts at a head verified earlier, after checking that
|
|
112
|
-
* the head is still there (a chain rebuilt since doesn't match it). Reads only; call inside one read transaction. */
|
|
113
82
|
export function verifyLedgerChain(db, from, checkedAt = null) {
|
|
114
83
|
let prev = from?.head ?? LEDGER_GENESIS, entries = from?.entries ?? 0, through = from?.through ?? null, kept = 0;
|
|
115
84
|
const report = (problem, unsealed = 0) => ({ ok: problem === null, entries, through, head: prev, unsealed, checkpoints: kept, problem, checkedAt });
|
|
116
|
-
// Entries, seals and checkpoints are numbered from 1 up to what a seal can name; anything outside was put there by hand.
|
|
117
85
|
const outside = db.prepare(`SELECT CAST(id AS TEXT) AS id FROM action_ledger WHERE ${OUTSIDE("id")} LIMIT 1`).get();
|
|
118
86
|
if (outside !== undefined)
|
|
119
87
|
return report({ id: null, what: `entry #${String(outside["id"])} was added outside the sealed history` });
|
|
@@ -159,7 +127,6 @@ export function verifyLedgerChain(db, from, checkedAt = null) {
|
|
|
159
127
|
entries++;
|
|
160
128
|
row = rows.next();
|
|
161
129
|
}
|
|
162
|
-
// Every checkpoint row, each on its own: a later row for the same entry can't cover for an earlier one.
|
|
163
130
|
const sealedAt = db.prepare("SELECT hash FROM ledger_seal WHERE id = ?");
|
|
164
131
|
for (const checkpoint of checkpoints) {
|
|
165
132
|
const walked = reached.get(checkpoint.through) ?? (from !== undefined && checkpoint.through <= from.through ? sealedAt.get(checkpoint.through)?.["hash"] : undefined);
|
|
@@ -171,7 +138,6 @@ export function verifyLedgerChain(db, from, checkedAt = null) {
|
|
|
171
138
|
unsealed++;
|
|
172
139
|
return report(null, unsealed);
|
|
173
140
|
}
|
|
174
|
-
/** Whether the chain still ends at a head someone copied off the machine (`<through>:<hash>`). */
|
|
175
141
|
export function matchesOutsideCheckpoint(db, checkpoint) {
|
|
176
142
|
const match = /^(\d+):([a-f0-9]{64})$/.exec(checkpoint.trim());
|
|
177
143
|
if (match === null)
|
package/dist/ledger-csv.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// Quotes and CR/LF survive a CSV round trip. Prefix spreadsheet formulas
|
|
2
|
-
// with an apostrophe, including formulas hidden behind whitespace.
|
|
3
1
|
export function csvCell(value) {
|
|
4
2
|
const raw = value === null ? "" : String(value);
|
|
5
3
|
const safe = /^[\s\uFEFF]*[=+@-]/u.test(raw) || /^[\t\r\n]/u.test(raw) ? "'" + raw : raw;
|
package/dist/ledger-view.js
CHANGED
|
@@ -2,7 +2,6 @@ import { projectName } from "./project.js";
|
|
|
2
2
|
import { exactWhenHtml } from "./when-html.js";
|
|
3
3
|
import { html, postForm } from "./html.js";
|
|
4
4
|
import { acts, btn, disclose, empty, infoLine, note, notice, pageHeader, select } from "./server/kit.js";
|
|
5
|
-
/** The ledger's kinds of event, as the filter names them. */
|
|
6
5
|
const EVENT_KINDS = [["work", "Work"], ["request", "Requests"], ["access", "Access"], ["sign-in", "Sign-ins"], ["policy", "Policy changes"]];
|
|
7
6
|
function chainHtml(chain) {
|
|
8
7
|
const status = chain.ok
|
|
@@ -17,8 +16,6 @@ function chainHtml(chain) {
|
|
|
17
16
|
<div class="k-acts">${btn("Download", { sm: true, type: "submit" })}</div></form>${note("Every entry in the range with its seal, and a full record for each task it names. JSON.")}`);
|
|
18
17
|
return html `<section class="h-chain" aria-label="Audit log integrity">${status}${latest}${make}${exportForm}</section>`;
|
|
19
18
|
}
|
|
20
|
-
/** The audit log (`/ledger`): what people and tokens did, newest first, as quiet timed rows, with the filters, the CSV
|
|
21
|
-
* and the sealed export. A kit list page: the top bar, then rows between hairlines. */
|
|
22
19
|
export function ledgerBody(rows, projects, params, chain) {
|
|
23
20
|
const more = rows.length > 50;
|
|
24
21
|
const shown = rows.slice(0, 50);
|