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/tidy.js
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Put away old tasks (docs/plans/task-tidy.md). Tidy finds tasks nobody needs to see any more, says why for each, and
|
|
3
|
-
* puts them away (v145 `task_archive`): old routine runs a newer run replaces, release tasks for versions already
|
|
4
|
-
* published or replaced, and "Checks failed" notices main has since fixed. A person can also put away finished tasks
|
|
5
|
-
* older than N days from the same preview. Deterministic and explainable: the same records give the same list, every
|
|
6
|
-
* item carries its rule and one plain reason, and the preview's digest binds exactly what a person saw.
|
|
7
|
-
*
|
|
8
|
-
* Never touched: a task with a live attempt, a task asked of a named person (`task ask`), a task with feedback or a
|
|
9
|
-
* steering note still pending, a task already Complete, and (automatically) a task a person filed or restored.
|
|
10
|
-
*/
|
|
11
1
|
import { createHash } from "node:crypto";
|
|
12
2
|
import { closeSync, fstatSync, lstatSync, openSync, readdirSync, readSync, constants } from "node:fs";
|
|
13
3
|
import { dirname, isAbsolute, join } from "node:path";
|
|
14
4
|
import { archiveTaskFamily } from "./store.js";
|
|
15
5
|
import { workTidyRows } from "./work-index.js";
|
|
16
|
-
/** The preview's groups, in order. "finished" is a person's own choice only; tidy never applies it on its own. */
|
|
17
6
|
export const TIDY_GROUPS = [
|
|
18
7
|
{ rule: "release", label: "Old releases" },
|
|
19
8
|
{ rule: "routine", label: "Old routine runs" },
|
|
@@ -21,15 +10,11 @@ export const TIDY_GROUPS = [
|
|
|
21
10
|
{ rule: "finished", label: "Finished more than {days} days ago" },
|
|
22
11
|
];
|
|
23
12
|
export const TIDY_DEFAULT_DAYS = 14;
|
|
24
|
-
/** At most this many tasks are put away automatically per pass. */
|
|
25
13
|
export const TIDY_PASS_LIMIT = 25;
|
|
26
14
|
const MAX_JOURNALS = 2000;
|
|
27
15
|
const MAX_JOURNAL_BYTES = 1 << 20;
|
|
28
16
|
const TASK_ID = /^[A-Za-z0-9][A-Za-z0-9._-]{0,199}$/;
|
|
29
17
|
const VERSION = /^\d{1,6}\.\d{1,6}\.\d{1,6}(?:-[0-9A-Za-z.-]{1,64})?$/;
|
|
30
|
-
/** Reads `releases/*.json` under the plane's state folder (the database's folder), written only by `toolroll release`.
|
|
31
|
-
* A symlink, a non-file, an oversized or unreadable journal makes the whole answer untrusted (`problem`), so the
|
|
32
|
-
* release rule then puts nothing away: a journal it can't read might be the one that says a release is in flight. */
|
|
33
18
|
export function readReleaseFacts(stateDir) {
|
|
34
19
|
const dir = join(stateDir, "releases");
|
|
35
20
|
let names;
|
|
@@ -67,12 +52,9 @@ export function readReleaseFacts(stateDir) {
|
|
|
67
52
|
}
|
|
68
53
|
return { facts, problem: null };
|
|
69
54
|
}
|
|
70
|
-
/** The release journals beside this database (its folder is the plane's state folder). An in-memory or relative
|
|
71
|
-
* database has no state folder, so the release rule stays off rather than reading whatever folder it runs in. */
|
|
72
55
|
export function releaseFactsFor(databaseFile) {
|
|
73
56
|
return isAbsolute(databaseFile) ? readReleaseFacts(dirname(databaseFile)) : { facts: [], problem: "this database has no state folder" };
|
|
74
57
|
}
|
|
75
|
-
/** One journal's JSON, never through a symlink, bounded; null when it can't be read. */
|
|
76
58
|
function readJournalFile(file) {
|
|
77
59
|
let fd = null;
|
|
78
60
|
try {
|
|
@@ -101,9 +83,6 @@ function readJournalFile(file) {
|
|
|
101
83
|
closeSync(fd);
|
|
102
84
|
}
|
|
103
85
|
}
|
|
104
|
-
/** A journal's task is the release task Toolroll filed for it: its id is the gate id for that version and commit
|
|
105
|
-
* (release.ts gateTaskId, maybe with a fresh-approval suffix), the task exists, and its scope's candidate, when it has
|
|
106
|
-
* one, is the journal's commit. */
|
|
107
86
|
function releaseTaskMatches(store, fact) {
|
|
108
87
|
const base = `release-${fact.version.replace(/[^0-9A-Za-z.-]/g, "-")}-${fact.candidate.slice(0, 7)}`;
|
|
109
88
|
if (fact.taskId !== base && !(fact.taskId.startsWith(`${base}-`) && /^\d{1,3}$/.test(fact.taskId.slice(base.length + 1))))
|
|
@@ -112,7 +91,6 @@ function releaseTaskMatches(store, fact) {
|
|
|
112
91
|
LEFT JOIN task_scope s ON s.task_id = t.id WHERE t.id = ?`).get(fact.taskId);
|
|
113
92
|
return row !== undefined && (row["candidate"] == null || row["candidate"] === fact.candidate);
|
|
114
93
|
}
|
|
115
|
-
/** -1, 0 or 1: numeric parts first, then a release above any of its pre-releases. */
|
|
116
94
|
export function compareVersions(a, b) {
|
|
117
95
|
const [ma, pa = ""] = a.split("-", 2);
|
|
118
96
|
const [mb, pb = ""] = b.split("-", 2);
|
|
@@ -128,7 +106,6 @@ export function compareVersions(a, b) {
|
|
|
128
106
|
return -1;
|
|
129
107
|
return pa < pb ? -1 : 1;
|
|
130
108
|
}
|
|
131
|
-
/** Everything that keeps a task out of tidy, read once. */
|
|
132
109
|
function exclusionsOf(store) {
|
|
133
110
|
const refs = (sql) => new Set(store.handle.prepare(sql).all().map(row => Number(row["ref"])));
|
|
134
111
|
const ids = (sql) => new Set(store.handle.prepare(sql).all().map(row => String(row["id"])));
|
|
@@ -142,7 +119,6 @@ function exclusionsOf(store) {
|
|
|
142
119
|
restored: ids("SELECT DISTINCT task_id id FROM action_ledger WHERE action = 'task restored' AND task_id IS NOT NULL"),
|
|
143
120
|
};
|
|
144
121
|
}
|
|
145
|
-
/** Why this family is never put away by tidy, or null. `auto`: tidy on its own (a restored family stays). */
|
|
146
122
|
function excluded(row, ex, auto) {
|
|
147
123
|
if (row.archived || row.live || row.broken || row.code === "complete")
|
|
148
124
|
return true;
|
|
@@ -152,12 +128,7 @@ function excluded(row, ex, auto) {
|
|
|
152
128
|
return true;
|
|
153
129
|
return auto && row.memberIds.some(id => ex.restored.has(id));
|
|
154
130
|
}
|
|
155
|
-
/** Labels an automation's card files under (flow-triggers.ts makeCard), from before cards kept their kind (v126). */
|
|
156
131
|
const AUTOMATION_FILERS = new Set(["Schedule", "Plane review", "GitHub"]);
|
|
157
|
-
/** Whether this task was filed by the trigger's own automation, proven from Toolroll's records: a standing order's
|
|
158
|
-
* firing names its task once and forever (`flow_trigger_event.task`); otherwise the flow engine filed it for this very
|
|
159
|
-
* flow (`filed_via`), as the automation the card was made by (its kind, or an automation's label from before kinds).
|
|
160
|
-
* Unknown provenance is never automation. */
|
|
161
132
|
function automationFiled(store, taskId, flow, card, eventTask) {
|
|
162
133
|
if (eventTask === taskId)
|
|
163
134
|
return true;
|
|
@@ -168,9 +139,6 @@ function automationFiled(store, taskId, flow, card, eventTask) {
|
|
|
168
139
|
return card.createdKind === "automation" || card.createdKind === null;
|
|
169
140
|
return card.createdKind === null && row["filed_by_kind"] === "person" && typeof row["filed_by"] === "string" && row["filed_by"] === card.createdBy && AUTOMATION_FILERS.has(row["filed_by"]);
|
|
170
141
|
}
|
|
171
|
-
/** (a) Every schedule's own clock firings (a slot, a scripted slot, or a plane review's scheduled daily problem; never a
|
|
172
|
-
* person's Run now, never a skipped or held firing), each with the automation-filed tasks it made, grouped by trigger (a
|
|
173
|
-
* plane review: by trigger and problem). */
|
|
174
142
|
function routineFirings(store) {
|
|
175
143
|
const rows = store.handle.prepare(`SELECT e.trigger, e.key, e.at, e.on_time, e.state, e.task event_task, c.task card_task, c.primary_task, c.title,
|
|
176
144
|
c.created_by, c.created_kind, t.flow
|
|
@@ -183,7 +151,6 @@ function routineFirings(store) {
|
|
|
183
151
|
if (row["created_kind"] === "person")
|
|
184
152
|
continue;
|
|
185
153
|
const plane = /^plane:(.+):\d{4}-\d{2}-\d{2}$/.exec(key);
|
|
186
|
-
// A plane review's key is the same for Run now; only the clock's own firing (on_time) is a routine run.
|
|
187
154
|
if (!/^(?:script:)?slot:/.test(key) && !(plane !== null && Number(row["on_time"]) === 1))
|
|
188
155
|
continue;
|
|
189
156
|
const family = `${Number(row["trigger"])}:${plane === null ? "" : plane[1]}`;
|
|
@@ -192,14 +159,11 @@ function routineFirings(store) {
|
|
|
192
159
|
const all = [...new Set([row["event_task"], row["card_task"], row["primary_task"]].filter((one) => typeof one === "string" && one !== ""))];
|
|
193
160
|
const tasks = all.filter(task => automationFiled(store, task, Number(row["flow"]), card, eventTask));
|
|
194
161
|
const list = families.get(family) ?? [];
|
|
195
|
-
// Every firing counts toward which is newest, even one whose tasks can't be proven: its tasks are kept, never taken.
|
|
196
162
|
list.push({ family, tasks, all, title: String(row["title"] ?? eventTask ?? "the newest run") });
|
|
197
163
|
families.set(family, list);
|
|
198
164
|
}
|
|
199
165
|
return families;
|
|
200
166
|
}
|
|
201
|
-
/** (c) Every "Checks failed on <branch>: <workflow>" notice a checks trigger made, with its commit, its workflow and the
|
|
202
|
-
* automation-filed tasks it made. */
|
|
203
167
|
function ciNotices(store) {
|
|
204
168
|
const rows = store.handle.prepare(`SELECT e.trigger, e.key, e.at, c.title, c.task, c.primary_task, c.created_by, c.created_kind, c.source_json, t.config_json, t.flow
|
|
205
169
|
FROM flow_trigger_event e JOIN flow_trigger t ON t.id = e.trigger JOIN flow_card c ON c.id = e.card
|
|
@@ -217,8 +181,6 @@ function ciNotices(store) {
|
|
|
217
181
|
}
|
|
218
182
|
if (config["watch"] !== "checks" || typeof config["repo"] !== "string" || typeof config["branch"] !== "string")
|
|
219
183
|
continue;
|
|
220
|
-
// Where the failure was, as the card recorded it when it was made (GitHub's own run link, never rewritten), not
|
|
221
|
-
// where the trigger points now: a trigger re-pointed later never lends its new repository's runs to old notices.
|
|
222
184
|
let made = null;
|
|
223
185
|
try {
|
|
224
186
|
made = JSON.parse(String(row["source_json"] ?? "null"));
|
|
@@ -241,14 +203,11 @@ function ciNotices(store) {
|
|
|
241
203
|
}
|
|
242
204
|
return notices;
|
|
243
205
|
}
|
|
244
|
-
/** Every completed run the checks trigger saw on this repository's branch, oldest first. */
|
|
245
206
|
function observationsOf(store, repo, branch) {
|
|
246
207
|
return store.handle.prepare(`SELECT run_id, workflow, head_sha, conclusion, run_created_at FROM branch_check_run
|
|
247
208
|
WHERE lower(repo) = lower(?) AND branch = ? ORDER BY run_created_at, run_id`).all(repo, branch)
|
|
248
209
|
.map(row => ({ runId: Number(row["run_id"]), workflow: String(row["workflow"]), sha: String(row["head_sha"]), conclusion: row["conclusion"] === "success" ? "success" : "failure", createdAt: String(row["run_created_at"]) }));
|
|
249
210
|
}
|
|
250
|
-
/** The failing runs older "Checks failed" cards of this trigger name (their own GitHub run links) that aren't on record
|
|
251
|
-
* yet, newest first, at most `limit`: the checks trigger reads each from GitHub so tidy can tell where it ran. */
|
|
252
211
|
export function unprovenNoticeRuns(store, trigger, repo, limit = 5) {
|
|
253
212
|
const rows = store.handle.prepare(`SELECT c.source_json FROM flow_trigger_event e JOIN flow_card c ON c.id = e.card
|
|
254
213
|
WHERE e.trigger = ? AND e.key LIKE 'checks:%' ORDER BY e.at DESC, e.rowid DESC`).all(trigger);
|
|
@@ -273,9 +232,6 @@ export function unprovenNoticeRuns(store, trigger, repo, limit = 5) {
|
|
|
273
232
|
}
|
|
274
233
|
return runs;
|
|
275
234
|
}
|
|
276
|
-
/** A completed workflow run on the watched branch, as the checks trigger read it from GitHub (its poll through the
|
|
277
|
-
* person's own gh login, or its signed webhook): kept once per run. Only a push to the watched branch of the watched
|
|
278
|
-
* repository counts (a pull request from a fork whose branch is also called main does not). */
|
|
279
235
|
export function recordBranchCheckRun(store, watched, run, now) {
|
|
280
236
|
const workflow = run.name ?? "", sha = run.head_sha ?? "", created = Date.parse(run.created_at ?? "");
|
|
281
237
|
if (run.id === undefined || !Number.isSafeInteger(run.id) || run.id <= 0 || workflow === "" || workflow.length > 200 || !/^[0-9a-f]{40}$/.test(sha) || Number.isNaN(created))
|
|
@@ -288,8 +244,6 @@ export function recordBranchCheckRun(store, watched, run, now) {
|
|
|
288
244
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(watched.repo, run.id, watched.branch, workflow, sha, run.conclusion, new Date(created).toISOString(), now.toISOString());
|
|
289
245
|
return Number(changed.changes) > 0;
|
|
290
246
|
}
|
|
291
|
-
/** What tidy would put away now, in group order, oldest first within a group. `days`: also offer finished tasks
|
|
292
|
-
* untouched that long (a person's preview only); null is tidy's own automatic rules. `access`: whose lists. */
|
|
293
247
|
export function tidyPreview(store, now, input) {
|
|
294
248
|
const auto = input.days === null;
|
|
295
249
|
const rows = workTidyRows(store, now, input.access ?? { principal: "operator", repos: null, includeUnplaced: true });
|
|
@@ -299,11 +253,8 @@ export function tidyPreview(store, now, input) {
|
|
|
299
253
|
byId.set(id, row);
|
|
300
254
|
const ex = exclusionsOf(store);
|
|
301
255
|
const taken = new Map();
|
|
302
|
-
// Every task each schedule's newest firing touched, whoever filed it: no family holding one is ever put away.
|
|
303
256
|
const firings = routineFirings(store);
|
|
304
257
|
const keepAll = new Set([...firings.values()].flatMap(list => list.at(-1).all));
|
|
305
|
-
// `proven`: for a rule's own producer, every version of the family must be one it can prove it made (a person's
|
|
306
|
-
// later revision of a scheduled run keeps the whole family out); null for a person's own choice (finished tasks).
|
|
307
258
|
const offer = (row, rule, reason, proven) => {
|
|
308
259
|
if (row === undefined || taken.has(row.rootId) || excluded(row, ex, auto))
|
|
309
260
|
return;
|
|
@@ -313,10 +264,8 @@ export function tidyPreview(store, now, input) {
|
|
|
313
264
|
return;
|
|
314
265
|
taken.set(row.rootId, { rule, taskId: row.currentId, title: row.title, repo: row.repo, reason, updatedAt: row.updatedAt, members: [...row.members].sort((a, b) => a - b) });
|
|
315
266
|
};
|
|
316
|
-
// (b) Old releases: only when every journal reads, and only a task whose journals agree with its own records.
|
|
317
267
|
if (input.releases.problem === null) {
|
|
318
268
|
const facts = input.releases.facts.filter(one => releaseTaskMatches(store, one));
|
|
319
|
-
// The newest published version of each package (its GitHub repository and npm name).
|
|
320
269
|
const latestOf = new Map();
|
|
321
270
|
for (const one of facts)
|
|
322
271
|
if (one.published && (latestOf.get(one.product) === undefined || compareVersions(one.version, latestOf.get(one.product)) > 0))
|
|
@@ -326,11 +275,9 @@ export function tidyPreview(store, now, input) {
|
|
|
326
275
|
byTask.set(fact.taskId, [...(byTask.get(fact.taskId) ?? []), fact]);
|
|
327
276
|
const journalNamed = new Set(byTask.keys());
|
|
328
277
|
for (const [taskId, named] of byTask) {
|
|
329
|
-
// Every journal naming it must check out, for one package and one version.
|
|
330
278
|
if (named.some(one => !facts.includes(one)) || new Set(named.map(one => `${one.product}\u0000${one.version}`)).size !== 1)
|
|
331
279
|
continue;
|
|
332
280
|
const current = named.filter(one => !one.superseded);
|
|
333
|
-
// In flight: its current journal is neither done nor stopped (running, or waiting for an approval).
|
|
334
281
|
if (current.some(one => !one.done && !one.stopped))
|
|
335
282
|
continue;
|
|
336
283
|
const version = named[0].version, latest = latestOf.get(named[0].product) ?? null;
|
|
@@ -341,7 +288,6 @@ export function tidyPreview(store, now, input) {
|
|
|
341
288
|
offer(byId.get(taskId), "release", reason, journalNamed);
|
|
342
289
|
}
|
|
343
290
|
}
|
|
344
|
-
// (a) Old routine runs: everything but each schedule's newest firing.
|
|
345
291
|
const routineMade = new Set([...firings.values()].flatMap(list => list.flatMap(one => one.tasks)));
|
|
346
292
|
for (const list of firings.values()) {
|
|
347
293
|
const newest = list.at(-1);
|
|
@@ -350,10 +296,6 @@ export function tidyPreview(store, now, input) {
|
|
|
350
296
|
offer(byId.get(task), "routine", `A newer run, “${newest.title}”, replaces it.`, routineMade);
|
|
351
297
|
}
|
|
352
298
|
}
|
|
353
|
-
// (c) Resolved CI notices: every workflow that failed on its commit was fixed by a later commit's green run, or a
|
|
354
|
-
// newer notice carries that workflow's failure while the branch stays red.
|
|
355
|
-
// A notice counts only once its own failing run is on record as a push to the watched repository and branch (the
|
|
356
|
-
// checks trigger reads it): a pull request from a fork whose branch is also called main never does.
|
|
357
299
|
const seen = new Map();
|
|
358
300
|
const observedFor = (notice) => {
|
|
359
301
|
const key = `${notice.repo.toLowerCase()}\u0000${notice.branch}`;
|
|
@@ -365,7 +307,6 @@ export function tidyPreview(store, now, input) {
|
|
|
365
307
|
const ciMade = new Set(notices.flatMap(one => one.tasks));
|
|
366
308
|
for (const notice of notices) {
|
|
367
309
|
const observed = observedFor(notice);
|
|
368
|
-
// What failed on its commit: the workflow it names, and any other the trigger saw fail on that commit.
|
|
369
310
|
const failed = new Map([[notice.workflow, notice.at]]);
|
|
370
311
|
for (const one of observed)
|
|
371
312
|
if (one.sha === notice.sha && one.conclusion === "failure")
|
|
@@ -393,7 +334,6 @@ export function tidyPreview(store, now, input) {
|
|
|
393
334
|
for (const task of notice.tasks)
|
|
394
335
|
offer(byId.get(task), "ci", reason, ciMade);
|
|
395
336
|
}
|
|
396
|
-
// Finished more than N days ago (a person's preview only): done, failed or stopped, untouched since.
|
|
397
337
|
if (input.days !== null) {
|
|
398
338
|
const before = new Date(now.getTime() - input.days * 86_400_000).toISOString();
|
|
399
339
|
for (const row of rows) {
|
|
@@ -405,18 +345,14 @@ export function tidyPreview(store, now, input) {
|
|
|
405
345
|
const order = (rule) => TIDY_GROUPS.findIndex(one => one.rule === rule);
|
|
406
346
|
return [...taken.values()].sort((a, b) => order(a.rule) - order(b.rule) || a.updatedAt.localeCompare(b.updatedAt) || a.taskId.localeCompare(b.taskId));
|
|
407
347
|
}
|
|
408
|
-
/** The preview's identity: exactly which tasks under which rules, for how many days. A person's confirmation names it. */
|
|
409
348
|
export function tidyDigest(items, days) {
|
|
410
|
-
// Each family exactly: its task, every version that goes with it, its project, its rule and the reason shown.
|
|
411
349
|
const set = items.map(one => [one.taskId, one.members.join(","), one.repo ?? "", one.rule, one.reason]).sort((a, b) => a[0].localeCompare(b[0]));
|
|
412
350
|
return createHash("sha256").update(JSON.stringify({ days, set }), "utf8").digest("hex").slice(0, 32);
|
|
413
351
|
}
|
|
414
|
-
/** The preview in its groups (empty ones left out), with each group's label. */
|
|
415
352
|
export function tidyGroups(items, days) {
|
|
416
353
|
return TIDY_GROUPS.map(group => ({ rule: group.rule, label: group.label.replace("{days}", String(days)), items: items.filter(one => one.rule === group.rule) }))
|
|
417
354
|
.filter(group => group.items.length > 0);
|
|
418
355
|
}
|
|
419
|
-
/** A day count from a person (1–365), or the default. */
|
|
420
356
|
export function tidyDays(raw) {
|
|
421
357
|
if (raw === null || raw === undefined || raw === "")
|
|
422
358
|
return TIDY_DEFAULT_DAYS;
|
|
@@ -425,8 +361,6 @@ export function tidyDays(raw) {
|
|
|
425
361
|
const days = Number(raw);
|
|
426
362
|
return days >= 1 && days <= 365 ? days : null;
|
|
427
363
|
}
|
|
428
|
-
/** A person puts away exactly what they previewed (or the ticked part of it), in one write transaction that recomputes
|
|
429
|
-
* the preview and refuses when its digest moved or a ticked task isn't in it. */
|
|
430
364
|
export function applyTidy(store, now, input) {
|
|
431
365
|
return store.transact(() => {
|
|
432
366
|
const items = tidyPreview(store, now, { releases: input.releases, days: input.days, ...(input.access === undefined ? {} : { access: input.access }) });
|
|
@@ -451,8 +385,6 @@ export function applyTidy(store, now, input) {
|
|
|
451
385
|
return { ok: true, archived, skipped };
|
|
452
386
|
});
|
|
453
387
|
}
|
|
454
|
-
/** Tidy on its own (the worker's reconcile pass): its automatic rules only, at most `limit` tasks, in one write
|
|
455
|
-
* transaction. Idempotent: what is put away is skipped next time, and a restored task is never put away again. */
|
|
456
388
|
export function runTidy(store, now, releases, limit = TIDY_PASS_LIMIT, access) {
|
|
457
389
|
return store.transact(() => {
|
|
458
390
|
const archived = [];
|
|
@@ -464,29 +396,22 @@ export function runTidy(store, now, releases, limit = TIDY_PASS_LIMIT, access) {
|
|
|
464
396
|
return archived;
|
|
465
397
|
});
|
|
466
398
|
}
|
|
467
|
-
/** Whether this person may still put away or restore work in this project, read under the write lock (check and write
|
|
468
|
-
* together): an active approver who can see it. Null when they may; otherwise why not. */
|
|
469
399
|
export function approverStandsNow(store, name, repo) {
|
|
470
400
|
const account = store.accountOf(name);
|
|
471
401
|
if (account === null || account.revokedAt !== null || account.role !== "approver" || !store.accountCanAccess(name, repo))
|
|
472
402
|
return `${name} can't put away or restore tasks in this project.`;
|
|
473
403
|
return null;
|
|
474
404
|
}
|
|
475
|
-
/** The repository of a task's family, from its first version (all versions share it). */
|
|
476
405
|
export function familyRepoOf(store, refs) {
|
|
477
406
|
return refs.length === 0 ? null : store.refById(refs[0])?.repo ?? null;
|
|
478
407
|
}
|
|
479
|
-
/** "Archived by tidy: <reason>" or "Archived by <person>: <reason>": the one sentence every surface shows. */
|
|
480
408
|
export function archivedWords(archived) {
|
|
481
409
|
return `${archived.byKind === "tidy" ? "Archived automatically" : `Archived by ${archived.by}`}: ${archived.reason}`;
|
|
482
410
|
}
|
|
483
|
-
/** The release journals beside the store's own database file (none for an in-memory one). */
|
|
484
411
|
export function releaseFactsOf(store) {
|
|
485
412
|
const file = store.databaseFile();
|
|
486
413
|
return file === null ? { facts: [], problem: "this database has no state folder" } : releaseFactsFor(file);
|
|
487
414
|
}
|
|
488
|
-
/** The lists one person sees, for tidy: every project for an unrestricted account, otherwise exactly theirs. The CLI's
|
|
489
|
-
* preview (`--as <name>`) and its apply read the same scope, so the same records give the same digest. */
|
|
490
415
|
export function accessOf(store, name) {
|
|
491
416
|
const account = store.accountOf(name);
|
|
492
417
|
if (account === null || account.revokedAt !== null)
|
|
@@ -494,7 +419,6 @@ export function accessOf(store, name) {
|
|
|
494
419
|
return account.projects === null ? { principal: "operator", repos: null, includeUnplaced: true }
|
|
495
420
|
: { principal: "operator", repos: [...account.projects], includeUnplaced: store.accountCanAccess(name, null) };
|
|
496
421
|
}
|
|
497
|
-
/** Narrows `access` to the caller's own lens (a remote person's project limit): never wider. No lens: unchanged. */
|
|
498
422
|
export function withinLens(access, lens) {
|
|
499
423
|
if (lens === null || access.principal !== "operator")
|
|
500
424
|
return access;
|
package/dist/tier-report.js
CHANGED
|
@@ -10,7 +10,6 @@ const minutesBetween = (from, to) => {
|
|
|
10
10
|
const ms = Date.parse(to) - Date.parse(from);
|
|
11
11
|
return Number.isFinite(ms) && ms >= 0 ? Math.round(ms / 6_000) / 10 : null;
|
|
12
12
|
};
|
|
13
|
-
/** Every routed task with a run in [from, to), by tier, and what the light tier saved. `items` are the month's spend. */
|
|
14
13
|
export function tierReport(db, from, to, items) {
|
|
15
14
|
const spendOf = new Map();
|
|
16
15
|
for (const item of items)
|
|
@@ -56,7 +55,6 @@ export function tierReport(db, from, to, items) {
|
|
|
56
55
|
};
|
|
57
56
|
}
|
|
58
57
|
const minutesWords = (minutes) => (minutes >= 90 ? `${Math.round(minutes / 6) / 10}h` : `${Math.round(minutes)}m`);
|
|
59
|
-
/** The spend report's lines: one per tier, then what the tiers saved. Empty when no routed task ran this month. */
|
|
60
58
|
export function tierLines(report, usd) {
|
|
61
59
|
if (report.rows.length === 0)
|
|
62
60
|
return [];
|
package/dist/token-notices.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* API token notices (v111): 7 days and 1 day before a token expires, its person is told once each, in their own chats
|
|
3
|
-
* and browsers (a personal notification), and the ledger keeps it. Only the nearest notice newly due is sent, so a
|
|
4
|
-
* token made with a day left says so once. Replaced and revoked tokens get none. The same pass records the end of each
|
|
5
|
-
* rotated token whose overlap has passed; it already signs no one in (tokenLive), so a late pass grants nothing.
|
|
6
|
-
*/
|
|
7
1
|
import { expiryNoticeDue, EXPIRY_NOTICE_DAYS } from "./api-tokens.js";
|
|
8
2
|
export const TOKEN_NOTICE_KIND = "api-token-expiry";
|
|
9
3
|
export function tokenNoticePass(store, now) {
|
|
@@ -15,7 +9,6 @@ export function tokenNoticePass(store, now) {
|
|
|
15
9
|
if (days === null)
|
|
16
10
|
continue;
|
|
17
11
|
const key = (one) => `${TOKEN_NOTICE_KIND}:${token.id}:${one}`;
|
|
18
|
-
// A nearer notice already sent covers this one.
|
|
19
12
|
if (EXPIRY_NOTICE_DAYS.filter(one => one <= days).some(one => store.handle.prepare("SELECT 1 AS hit FROM notification WHERE dedupe_key = ?").get(key(one)) !== undefined))
|
|
20
13
|
continue;
|
|
21
14
|
const fresh = store.enqueueNotification({
|
|
@@ -32,14 +25,13 @@ export function tokenNoticePass(store, now) {
|
|
|
32
25
|
}
|
|
33
26
|
return { sent, ended };
|
|
34
27
|
}
|
|
35
|
-
/** The loop beside the console: a pass a minute. */
|
|
36
28
|
export function startTokenNotices(store, everyMs = 60_000) {
|
|
37
29
|
let stopped = false;
|
|
38
30
|
const tick = () => { if (stopped)
|
|
39
31
|
return; try {
|
|
40
32
|
tokenNoticePass(store, new Date());
|
|
41
33
|
}
|
|
42
|
-
catch {
|
|
34
|
+
catch { } };
|
|
43
35
|
const timer = setInterval(tick, everyMs);
|
|
44
36
|
timer.unref?.();
|
|
45
37
|
const first = setTimeout(tick, 5_000);
|
package/dist/tokens-cli.js
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `toolroll tokens create|list|revoke|rotate` (v111): a person's own API tokens, from the terminal of the machine that
|
|
3
|
-
* keeps the database. Every verb is a step-up: the person's own password, typed at a hidden prompt or piped with
|
|
4
|
-
* --password-stdin, never an argument, never the remembered login, a lead token or a remote caller's token. A new
|
|
5
|
-
* secret is written once, in the answer to create or rotate; nothing else ever shows it, and only its hash is kept.
|
|
6
|
-
*/
|
|
7
1
|
import { envelopeJson } from "./envelope.js";
|
|
8
2
|
import { daysLeft, mintApiToken, ROTATION_OVERLAP_MAX_MINUTES, ROTATION_OVERLAP_MINUTES, TOKEN_DAYS, tokenLive, tokenRotationProblem, MCP_ROTATION_REFUSAL } from "./api-tokens.js";
|
|
9
3
|
import { canonicalProject, projectName } from "./project.js";
|
|
10
4
|
import { authenticateAccount } from "./scope.js";
|
|
11
5
|
export const TOKENS_ACTIONS = ["create", "list", "revoke", "rotate"];
|
|
12
|
-
/** The most a piped password may be: a password, not a file. */
|
|
13
6
|
export const PASSWORD_STDIN_BYTES = 4096;
|
|
14
|
-
/** Flags that would put a credential in argv. Refused by name, their values never echoed. */
|
|
15
7
|
const SECRET_FLAGS = ["password", "token", "token-file", "token-env"];
|
|
16
8
|
const EXIT = { ok: 0, failed: 1, usage: 2, refused: 3 };
|
|
17
9
|
export async function runTokensCommand(positional, flags, context) {
|
|
@@ -31,7 +23,6 @@ export async function runTokensCommand(positional, flags, context) {
|
|
|
31
23
|
const secretFlag = SECRET_FLAGS.find(name => flags.has(name));
|
|
32
24
|
if (secretFlag !== undefined)
|
|
33
25
|
return fail("usage", `--${secretFlag} isn't accepted here: type your password at the prompt, or pipe it with --password-stdin.`, EXIT.usage);
|
|
34
|
-
// Check the terms before asking for anything, so a typo never spends a password try.
|
|
35
26
|
const verb = action;
|
|
36
27
|
const terms = verb === "create" ? createTerms(flags) : null;
|
|
37
28
|
if (terms !== null && "problem" in terms)
|
|
@@ -44,7 +35,6 @@ export async function runTokensCommand(positional, flags, context) {
|
|
|
44
35
|
const overlap = verb === "rotate" ? overlapMinutes(text("overlap")) : null;
|
|
45
36
|
if (overlap !== null && typeof overlap === "string")
|
|
46
37
|
return fail("usage", overlap, EXIT.usage);
|
|
47
|
-
// Who, then their password: never the remembered login's password, never an argument.
|
|
48
38
|
let name = text("as")?.trim() ?? context.rememberedName ?? undefined;
|
|
49
39
|
const fromStdin = flags.has("password-stdin");
|
|
50
40
|
if (!fromStdin && (!context.interactive() || json))
|
|
@@ -137,7 +127,6 @@ function overlapMinutes(given) {
|
|
|
137
127
|
const minutes = Number(given);
|
|
138
128
|
return Number.isInteger(minutes) && minutes >= 0 && minutes <= ROTATION_OVERLAP_MAX_MINUTES ? minutes : `--overlap is whole minutes, 0 to ${ROTATION_OVERLAP_MAX_MINUTES}.`;
|
|
139
129
|
}
|
|
140
|
-
/** Each named project, by path or by its name, among the projects this person may use now. */
|
|
141
130
|
function resolveProjects(store, account, words) {
|
|
142
131
|
const mine = [...new Set([...store.listProjects().map(one => one.path), ...store.knownRepos()])].filter(repo => store.accountCanAccess(account, repo));
|
|
143
132
|
const paths = [];
|
|
@@ -152,7 +141,6 @@ function resolveProjects(store, account, words) {
|
|
|
152
141
|
}
|
|
153
142
|
return { paths };
|
|
154
143
|
}
|
|
155
|
-
/** A token of this person's by exact id, else by a name only one of their current tokens has. */
|
|
156
144
|
function resolveToken(tokens, ref, now, current) {
|
|
157
145
|
const live = tokens.filter(one => tokenLive(one, now.getTime()));
|
|
158
146
|
const byId = live.find(one => one.id === ref);
|
|
@@ -168,7 +156,6 @@ function resolveToken(tokens, ref, now, current) {
|
|
|
168
156
|
return { reason: "not-found", problem: "No live token of yours has that name or id." };
|
|
169
157
|
return { row: named[0] };
|
|
170
158
|
}
|
|
171
|
-
/** What may be shown about a token: everything but its secret, which is never kept. */
|
|
172
159
|
function listed(row, now) {
|
|
173
160
|
return {
|
|
174
161
|
id: row.id, name: row.name, access: row.access, projects: row.projects, createdAt: row.createdAt, lastUsedAt: row.lastUsedAt, expiresAt: row.expiresAt,
|
package/dist/tool-broker.js
CHANGED
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The tool broker: where a build's project tools keep their secrets.
|
|
3
|
-
*
|
|
4
|
-
* Anything a fenced agent can read, its shell can read too, so no tool secret
|
|
5
|
-
* may sit in its MCP config, its environment, an inherited descriptor or a
|
|
6
|
-
* process it can inspect. The broker runs in Toolroll's own process, outside
|
|
7
|
-
* the fence, for one launch: it holds each tool's resolved values in memory,
|
|
8
|
-
* starts a local server itself (with the values as that server's environment,
|
|
9
|
-
* inside the run's fence when it has one) or relays to a web server (adding
|
|
10
|
-
* the sign-in headers), and serves each tool as streamable HTTP on a loopback
|
|
11
|
-
* port. The agent's config names only that address and a token minted for
|
|
12
|
-
* this launch: valid for exactly its opted-in tools (a research step's only
|
|
13
|
-
* for their read-only actions), and revoked when the launch ends. A resumed
|
|
14
|
-
* build is a new launch with its own broker and token.
|
|
15
|
-
*
|
|
16
|
-
* What it relays is plain JSON-RPC: a request gets its answer as JSON, a
|
|
17
|
-
* notification is accepted, and a server's own requests (sampling, roots) are
|
|
18
|
-
* answered "not supported" — a build has nobody to ask.
|
|
19
|
-
*/
|
|
20
1
|
import { spawn } from "node:child_process";
|
|
21
2
|
import { randomBytes, timingSafeEqual } from "node:crypto";
|
|
22
3
|
import { createServer } from "node:http";
|
|
@@ -27,14 +8,12 @@ const ANSWER_LIMIT = 32 * 1024 * 1024;
|
|
|
27
8
|
const STOP_GRACE_MS = 2_000;
|
|
28
9
|
const rpcError = (id, message, code = -32000) => ({ jsonrpc: "2.0", id: id ?? null, error: { code, message } });
|
|
29
10
|
const isRequest = (message) => typeof message.method === "string" && message.id !== undefined && message.id !== null;
|
|
30
|
-
/** A research step's server lists and calls only its read-only actions. */
|
|
31
11
|
function limitList(message, actions) {
|
|
32
12
|
if (actions === undefined || message === null || typeof message !== "object" || message.result === null || typeof message.result !== "object")
|
|
33
13
|
return message;
|
|
34
14
|
const result = message.result;
|
|
35
15
|
return { ...message, result: { ...result,
|
|
36
16
|
...(Array.isArray(result["tools"]) ? { tools: result["tools"].filter(one => one !== null && typeof one === "object" && actions.includes(String(one.name))) } : {}),
|
|
37
|
-
// The research grant names tool actions only; it grants no resources or prompts.
|
|
38
17
|
...Object.fromEntries(["resources", "resourceTemplates", "prompts"].filter(key => Array.isArray(result[key])).map(key => [key, []])), } };
|
|
39
18
|
}
|
|
40
19
|
const RESEARCH_METHODS = new Set(["initialize", "ping", "notifications/initialized", "notifications/cancelled", "tools/list", "resources/list", "resources/templates/list", "prompts/list"]);
|
|
@@ -46,12 +25,8 @@ function refused(message, actions) {
|
|
|
46
25
|
return null;
|
|
47
26
|
return rpcError(message.id, "This step may only read: that action is not available.", -32601);
|
|
48
27
|
}
|
|
49
|
-
/** What a local server inherits from the launch: enough to run and find its tools, and nothing that could be
|
|
50
|
-
* another tool's or a provider's secret. Its own configured values are added after. */
|
|
51
28
|
export const SERVER_ENV = ["PATH", "HOME", "USER", "LANG", "TMPDIR", "SHELL", "TERM", "NODE_EXTRA_CA_CERTS", "SSL_CERT_FILE", "SSL_CERT_DIR",
|
|
52
29
|
...["HTTP_PROXY", "HTTPS_PROXY", "NO_PROXY", "ALL_PROXY"].flatMap(name => [name, name.toLowerCase()])];
|
|
53
|
-
/** A local server's environment: the allowlisted names from `base` (and its LC_* locale), less `omit`, then `pass`,
|
|
54
|
-
* then the tool's own values. */
|
|
55
30
|
export function serverEnv(base, omit, pass, values) {
|
|
56
31
|
const env = {};
|
|
57
32
|
for (const [name, value] of Object.entries(base))
|
|
@@ -61,16 +36,10 @@ export function serverEnv(base, omit, pass, values) {
|
|
|
61
36
|
delete env[name];
|
|
62
37
|
return Object.assign(env, pass, values);
|
|
63
38
|
}
|
|
64
|
-
/**
|
|
65
|
-
* The first of a server's command and path-like arguments that resolves inside an untrusted folder (a build's checkout
|
|
66
|
-
* or caches), or null. The command is resolved as spawn would: a path against `cwd`, a bare name through PATH; an
|
|
67
|
-
* argument counts when it names an existing path (relative to `cwd`) or is written as one (`./x`, `../x`, `/x`).
|
|
68
|
-
*/
|
|
69
39
|
export function workspaceBytes(command, args, cwd, path, untrusted) {
|
|
70
40
|
if (untrusted.length === 0)
|
|
71
41
|
return null;
|
|
72
42
|
const base = cwd ?? process.cwd();
|
|
73
|
-
// Canonical on-disk names, folded where the filesystem ignores case (macOS, Windows), so `/Users/a/CHECKOUT` is the checkout.
|
|
74
43
|
const fold = process.platform === "darwin" || process.platform === "win32" ? (one) => one.toLowerCase() : (one) => one;
|
|
75
44
|
const real = (one) => { try {
|
|
76
45
|
return fold(realpathSync.native(one));
|
|
@@ -80,7 +49,6 @@ export function workspaceBytes(command, args, cwd, path, untrusted) {
|
|
|
80
49
|
} };
|
|
81
50
|
const roots = untrusted.map(real);
|
|
82
51
|
const within = (one) => { const at = real(one); return roots.some(root => at === root || at.startsWith(`${root}${sep}`)); };
|
|
83
|
-
// A root's name anywhere in an argument (inline code, a list of paths) counts, however it's spelled.
|
|
84
52
|
const mentions = (arg) => { const text = fold(arg); return roots.some(root => text.includes(root)) || untrusted.some(root => text.includes(fold(root))); };
|
|
85
53
|
const located = command.includes("/") || command.includes(sep) ? resolve(base, command)
|
|
86
54
|
: (path ?? "").split(delimiter).filter(Boolean).map(dir => resolve(base, dir, command)).find(one => { try {
|
|
@@ -92,13 +60,11 @@ export function workspaceBytes(command, args, cwd, path, untrusted) {
|
|
|
92
60
|
} }) ?? null;
|
|
93
61
|
if (located !== null && within(located))
|
|
94
62
|
return located;
|
|
95
|
-
// A relative path once meant "in the checkout" (servers started there): it is refused rather than read elsewhere.
|
|
96
63
|
if (!isAbsolute(command) && (command.includes("/") || command.includes(sep)))
|
|
97
64
|
return `${command} (a relative path)`;
|
|
98
65
|
for (const arg of args) {
|
|
99
66
|
if (mentions(arg))
|
|
100
67
|
return `${arg} (names what this build writes)`;
|
|
101
|
-
// A flag's value (`--config=x`, `-c=x`) is checked as its own argument.
|
|
102
68
|
for (const piece of [arg, ...(arg.startsWith("-") && arg.includes("=") ? [arg.slice(arg.indexOf("=") + 1)] : [])]) {
|
|
103
69
|
if (piece.startsWith("./") || piece.startsWith("../"))
|
|
104
70
|
return `${piece} (a relative path)`;
|
|
@@ -109,7 +75,6 @@ export function workspaceBytes(command, args, cwd, path, untrusted) {
|
|
|
109
75
|
}
|
|
110
76
|
return null;
|
|
111
77
|
}
|
|
112
|
-
/** A local server, started on first use and spoken to over its stdin and stdout. */
|
|
113
78
|
class LocalServer {
|
|
114
79
|
tool;
|
|
115
80
|
options;
|
|
@@ -187,11 +152,9 @@ class LocalServer {
|
|
|
187
152
|
try {
|
|
188
153
|
this.child?.stdin?.write(`${JSON.stringify(message)}\n`);
|
|
189
154
|
}
|
|
190
|
-
catch {
|
|
155
|
+
catch { }
|
|
191
156
|
}
|
|
192
|
-
/** One message from the agent: a request's answer, or null for a notification. */
|
|
193
157
|
send(message) {
|
|
194
|
-
// A new session (a reconnect) starts a fresh server: a server answers initialize once.
|
|
195
158
|
if (message.method === "initialize" && this.initialized)
|
|
196
159
|
this.stop();
|
|
197
160
|
if (this.child === null && this.start() === null) {
|
|
@@ -225,14 +188,13 @@ class LocalServer {
|
|
|
225
188
|
else
|
|
226
189
|
child.kill(name);
|
|
227
190
|
}
|
|
228
|
-
catch {
|
|
191
|
+
catch { }
|
|
229
192
|
};
|
|
230
193
|
signal("SIGTERM");
|
|
231
194
|
if (child.exitCode === null && child.signalCode === null)
|
|
232
195
|
setTimeout(() => signal("SIGKILL"), STOP_GRACE_MS).unref();
|
|
233
196
|
}
|
|
234
197
|
}
|
|
235
|
-
/** A web server, relayed with its sign-in headers added here and nowhere else. */
|
|
236
198
|
async function relayWeb(tool, request, body) {
|
|
237
199
|
const spec = tool.spec;
|
|
238
200
|
const headers = { "content-type": "application/json", accept: "application/json, text/event-stream" };
|
|
@@ -247,7 +209,6 @@ async function relayWeb(tool, request, body) {
|
|
|
247
209
|
if (tool.values[secret])
|
|
248
210
|
headers[header] = tool.values[secret];
|
|
249
211
|
try {
|
|
250
|
-
// Never followed: a redirect would carry the sign-in headers to wherever it points.
|
|
251
212
|
const response = await fetch(spec.url, { method: request.method ?? "POST", headers, redirect: "error", ...(request.method === "POST" ? { body } : {}) });
|
|
252
213
|
const text = (await response.text()).slice(0, ANSWER_LIMIT);
|
|
253
214
|
return { status: response.status, type: response.headers.get("content-type") ?? "application/json", body: text, session: response.headers.get("mcp-session-id") };
|
|
@@ -263,8 +224,6 @@ async function relayWeb(tool, request, body) {
|
|
|
263
224
|
return { status: 200, type: "application/json", body: JSON.stringify(rpcError(id, "The tool's server could not be reached.")) };
|
|
264
225
|
}
|
|
265
226
|
}
|
|
266
|
-
/** A relayed answer with a research step's list limited, JSON or event stream alike. An answer that isn't JSON (an
|
|
267
|
-
* accepted notification's empty 202) carries no list and passes as it is. */
|
|
268
227
|
function limitAnswer(answer, actions) {
|
|
269
228
|
if (actions === undefined)
|
|
270
229
|
return answer;
|
|
@@ -290,7 +249,6 @@ function limitAnswer(answer, actions) {
|
|
|
290
249
|
: limit(answer.body);
|
|
291
250
|
return { ...answer, body };
|
|
292
251
|
}
|
|
293
|
-
/** A body's JSON, or undefined when it is empty or not JSON. */
|
|
294
252
|
function jsonOf(body) {
|
|
295
253
|
if (body.trim() === "")
|
|
296
254
|
return undefined;
|
|
@@ -301,12 +259,6 @@ function jsonOf(body) {
|
|
|
301
259
|
return undefined;
|
|
302
260
|
}
|
|
303
261
|
}
|
|
304
|
-
/**
|
|
305
|
-
* A research batch's relayed answer with the broker's refusals added: always something the agent can read. An event
|
|
306
|
-
* stream gets them as further events; anything else becomes one JSON 200 holding the server's answers, when it gave
|
|
307
|
-
* some as JSON, and the refusals. An empty or non-JSON answer (an accepted notification's 202) is never passed on
|
|
308
|
-
* alone, which would drop the refusals; a request the server left unanswered gets an error instead.
|
|
309
|
-
*/
|
|
310
262
|
function withRefusals(answer, allowed, refusals) {
|
|
311
263
|
if (answer.type.includes("text/event-stream")) {
|
|
312
264
|
return { ...answer, body: answer.body + refusals.map(one => `\nevent: message\ndata: ${JSON.stringify(one)}\n\n`).join("") };
|
|
@@ -334,7 +286,6 @@ function readBody(request) {
|
|
|
334
286
|
request.on("error", () => resolve(null));
|
|
335
287
|
});
|
|
336
288
|
}
|
|
337
|
-
/** Start one launch's broker on a loopback port. */
|
|
338
289
|
export async function startToolBroker(tools, options = {}) {
|
|
339
290
|
const token = randomBytes(32).toString("base64url");
|
|
340
291
|
const expected = Buffer.from(`Bearer ${token}`);
|
|
@@ -382,7 +333,6 @@ export async function startToolBroker(tools, options = {}) {
|
|
|
382
333
|
const messages = Array.isArray(parsed) ? parsed : [parsed];
|
|
383
334
|
if (messages.length === 0 || messages.some(one => one === null || typeof one !== "object" || Array.isArray(one) || typeof one.method !== "string"))
|
|
384
335
|
return reply(response, json(400, rpcError(null, "Invalid request", -32600)));
|
|
385
|
-
// A refused action is answered here and never reaches the tool.
|
|
386
336
|
const refusals = messages.map(one => refused(one, tool.actions));
|
|
387
337
|
const deniedAnswers = refusals.filter((one, index) => one !== null && isRequest(messages[index]));
|
|
388
338
|
if (refusals.every(one => one !== null))
|
|
@@ -391,7 +341,6 @@ export async function startToolBroker(tools, options = {}) {
|
|
|
391
341
|
: json(200, Array.isArray(parsed) ? deniedAnswers : deniedAnswers[0]));
|
|
392
342
|
if (server === undefined) {
|
|
393
343
|
const allowed = messages.filter((_, index) => refusals[index] === null);
|
|
394
|
-
// Relay exactly what was parsed and authorized, never ambiguous raw JSON.
|
|
395
344
|
const answer = limitAnswer(await relayWeb(tool, request, JSON.stringify(Array.isArray(parsed) ? allowed : allowed[0])), tool.actions);
|
|
396
345
|
return reply(response, deniedAnswers.length === 0 ? answer : withRefusals(answer, allowed, deniedAnswers));
|
|
397
346
|
}
|
package/dist/tool-launcher.js
CHANGED
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The launcher a Codex build starts each project tool through (v80):
|
|
3
|
-
* `node tool-launcher.js <config.json>`. Codex hands its own environment
|
|
4
|
-
* to the agent's shell whatever `shell_environment_policy` says (checked
|
|
5
|
-
* against codex-cli 0.156), so nothing rides Codex's environment. A build's
|
|
6
|
-
* launch file names its run's tool broker (tool-broker.ts) and that launch's
|
|
7
|
-
* token, and this process relays stdio to it over HTTP; the tool's own
|
|
8
|
-
* secrets stay in the broker. A launch file naming a local program is refused
|
|
9
|
-
* (docs/plans/sandbox-parity.md C2): Codex starts this launcher outside its
|
|
10
|
-
* command sandbox, so a program started here would run unfenced; every local
|
|
11
|
-
* server runs in the broker, inside the server fence.
|
|
12
|
-
*/
|
|
13
1
|
import { readFileSync } from "node:fs";
|
|
14
2
|
import { createInterface } from "node:readline";
|
|
15
|
-
/** The refusal for a launch file naming a local program: nothing is started (126, "could not be executed"). */
|
|
16
3
|
const LOCAL_LAUNCH_REFUSED = "This tool's launch names a local program, which only Toolroll's tool broker may start (inside its fence); nothing was started.";
|
|
17
|
-
/** stdio ↔ streamable HTTP: each line from Codex is POSTed; JSON or event-stream answers go back as lines. */
|
|
18
4
|
function relayWeb(spec, values) {
|
|
19
5
|
const headers = { "content-type": "application/json", accept: "application/json, text/event-stream" };
|
|
20
6
|
if (spec.bearer !== null && values[spec.bearer])
|