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/reply-shape.js
CHANGED
|
@@ -1,32 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The lead's voice, enforced: every chat surface (console, terminal, Telegram, Slack, Discord, Teams) runs a reply
|
|
3
|
-
* through here before it is sent. The contract asks for plain text; this makes it so, without changing what the reply
|
|
4
|
-
* says. Shaping is channel-neutral and idempotent — it yields a small canonical form (`**anchor**`, `[label](url)`,
|
|
5
|
-
* `code`) — and each channel renders that form in its own format.
|
|
6
|
-
*
|
|
7
|
-
* - Markdown headers become plain lines.
|
|
8
|
-
* - Bold stays on at most three short anchors; the rest is plain.
|
|
9
|
-
* - Bare URLs become labelled links, named from their target: "the task", "the result", "Settings → Lead", else the host.
|
|
10
|
-
* - Internal ids (run #12, digests, r1-style project ids) are removed unless the owner asked for them. When a reply names
|
|
11
|
-
* several of one kind (two runs, two projects), they stay: two items must never read the same.
|
|
12
|
-
* - Runs of blank lines collapse to one.
|
|
13
|
-
* Code (inline or fenced) is left exactly as written.
|
|
14
|
-
*/
|
|
15
1
|
import { html, joinHtml } from "./html.js";
|
|
16
2
|
export const BOLD_ANCHORS = 3;
|
|
17
|
-
/** A bold anchor is a few words, not a sentence. */
|
|
18
3
|
export const BOLD_ANCHOR_CHARS = 40;
|
|
19
4
|
const URL_CHARS = String.raw `https?:\/\/[^\s<>()\[\]"'\`]+`;
|
|
20
5
|
const LINK = new RegExp(String.raw `\[([^\]\n]{1,120})\]\((${URL_CHARS})\)`, "g");
|
|
21
6
|
const PROTECTED = new RegExp(String.raw `\x60\x60\x60[\s\S]*?(?:\x60\x60\x60|$)|\x60[^\x60\n]+\x60|\[[^\]\n]{1,120}\]\(${URL_CHARS}\)|<${URL_CHARS}>|${URL_CHARS}`, "g");
|
|
22
7
|
const HOLD = (index) => `\u0000${index}\u0000`;
|
|
23
|
-
/** Did the owner ask for ids (an id, a digest, a hash, a run number or a project's r-number)? */
|
|
24
8
|
export function askedForIds(asked) {
|
|
25
9
|
if (asked === undefined)
|
|
26
10
|
return false;
|
|
27
11
|
return /\b(?:ids?|identifiers?|digests?|sha(?:256)?|hash(?:es)?|commit|turn\s*(?:#|number)|run\s*(?:#|numbers?|ids?)|r\d{1,3})\b|#\d+/i.test(asked);
|
|
28
12
|
}
|
|
29
|
-
/** Is this link on the app's own origin? Without a known origin, nothing is. */
|
|
30
13
|
function ownLink(url, appOrigin) {
|
|
31
14
|
if (appOrigin === null || appOrigin === undefined)
|
|
32
15
|
return false;
|
|
@@ -49,7 +32,6 @@ function ownLink(url, appOrigin) {
|
|
|
49
32
|
}
|
|
50
33
|
});
|
|
51
34
|
}
|
|
52
|
-
/** What a link is called, from where it goes: the app's own task, result and settings pages by name (only on `appOrigin`); anything else by host. */
|
|
53
35
|
export function linkLabel(url, appOrigin) {
|
|
54
36
|
let parsed;
|
|
55
37
|
try {
|
|
@@ -75,12 +57,10 @@ export function linkLabel(url, appOrigin) {
|
|
|
75
57
|
}
|
|
76
58
|
return parsed.hostname.replace(/^www\./, "");
|
|
77
59
|
}
|
|
78
|
-
/** Trailing sentence punctuation (and an unmatched closing bracket) belongs to the prose, not the URL. */
|
|
79
60
|
function splitUrl(raw) {
|
|
80
61
|
const match = /[.,;:!?'"]+$/.exec(raw);
|
|
81
62
|
return match === null ? { url: raw, rest: "" } : { url: raw.slice(0, match.index), rest: match[0] };
|
|
82
63
|
}
|
|
83
|
-
/** One sentence-cased "the run" for an id-bearing mention of it. */
|
|
84
64
|
function theRun(match) {
|
|
85
65
|
return /^[A-Z]/.test(match) ? "The run" : "the run";
|
|
86
66
|
}
|
|
@@ -88,7 +68,6 @@ const RUN_ID = /\b(run|turn)\s*#\s*(\d+)\b/gi;
|
|
|
88
68
|
const PROJECT_ID = /(?:^|[\s(])(r\d{1,3})\b(?![-\w/]|\.\w)/g;
|
|
89
69
|
const NAMED_DIGEST = /\b(?:digest|sha(?:256)?|hash|commit|revision|build)\b[ \t:=]*\b((?=[0-9a-f]*\d)[0-9a-f]{7,64})\b/gi;
|
|
90
70
|
const BARE_DIGEST = /\b((?=[0-9a-f]*\d)(?=[0-9a-f]*[a-f])[0-9a-f]{16,64})\b/g;
|
|
91
|
-
/** The kinds of id a reply names more than one of: those stay, so two runs (or projects, or digests) never read the same. */
|
|
92
71
|
function severalIds(text) {
|
|
93
72
|
const distinct = (pattern, key) => new Set([...text.matchAll(pattern)].map(key)).size;
|
|
94
73
|
const several = new Set();
|
|
@@ -103,26 +82,20 @@ function severalIds(text) {
|
|
|
103
82
|
}
|
|
104
83
|
function dropIds(text, keep) {
|
|
105
84
|
let body = text;
|
|
106
|
-
// "(run #12)", "(r1)", "(digest 4f2a…)" — an aside that only carries the id goes entirely.
|
|
107
85
|
if (!keep.has("run"))
|
|
108
86
|
body = body
|
|
109
87
|
.replace(/[ \t]*\((?:run|turn)\s*#\s*\d+\)/gi, "")
|
|
110
|
-
// "the run #12", "run #12" → "the run".
|
|
111
88
|
.replace(/\b(?:the\s+)?run\s*#\s*\d+\b/gi, theRun);
|
|
112
89
|
if (!keep.has("digest"))
|
|
113
90
|
body = body
|
|
114
91
|
.replace(/[ \t]*\((?:(?:digest|sha(?:256)?|hash)?[\s:=]*[0-9a-f]{12,64})\)/gi, "")
|
|
115
|
-
// "digest 4f2a…", "commit 4f2a…" — the thing stays named, its value goes: "the digest".
|
|
116
92
|
.replace(/\b(?:the\s+)?(digest|sha(?:256)?|hash|commit|revision|build)\b[ \t:=]*\b(?=[0-9a-f]*\d)[0-9a-f]{7,64}\b/gi, (match, noun) => `${/^[A-Z]/.test(match) ? "The" : "the"} ${noun.toLowerCase()}`)
|
|
117
|
-
// A bare long hex value with digits and letters is a digest.
|
|
118
93
|
.replace(/[ \t]*\b(?=[0-9a-f]*\d)(?=[0-9a-f]*[a-f])[0-9a-f]{16,64}\b/g, "");
|
|
119
94
|
if (!keep.has("project"))
|
|
120
95
|
body = body
|
|
121
96
|
.replace(/[ \t]*\(r\d{1,3}\)/gi, "")
|
|
122
|
-
// "project r1", "r1" → "the project".
|
|
123
97
|
.replace(/\b(?:the\s+)?project\s+r\d{1,3}\b(?![-\w/]|\.\w)/gi, match => /^[A-Z]/.test(match) ? "The project" : "the project")
|
|
124
98
|
.replace(/(^|[\s(])r\d{1,3}\b(?![-\w/]|\.\w)/g, (_, before) => `${before}the project`);
|
|
125
|
-
// Tidy what a removal left behind.
|
|
126
99
|
return body
|
|
127
100
|
.replace(/[ \t]+([,.;:!?)])/g, "$1")
|
|
128
101
|
.replace(/[ \t]{2,}/g, " ");
|
|
@@ -138,10 +111,8 @@ function limitBold(text, state) {
|
|
|
138
111
|
};
|
|
139
112
|
return text
|
|
140
113
|
.replace(/\*\*([^*\n]+?)\*\*/g, (_, inner) => anchor(inner))
|
|
141
|
-
// Single-asterisk emphasis reads as bold in some apps: plain here.
|
|
142
114
|
.replace(/(^|[^*\w])\*(?![\s*])([^*\n]*?[^\s*])\*(?![*\w])/g, "$1$2");
|
|
143
115
|
}
|
|
144
|
-
/** Code and links held aside so no rule rewrites inside them; a bare URL is labelled as it is held. */
|
|
145
116
|
function holdAside(text, options) {
|
|
146
117
|
const held = [];
|
|
147
118
|
const body = text.replace(/\r\n?/g, "\n").replace(PROTECTED, (match) => {
|
|
@@ -157,7 +128,6 @@ function holdAside(text, options) {
|
|
|
157
128
|
return HOLD(held.length - 1);
|
|
158
129
|
}
|
|
159
130
|
const { url, rest } = splitUrl(link[2]);
|
|
160
|
-
// The model's own words may name only our own pages; a foreign link always shows its real host.
|
|
161
131
|
const label = /^https?:\/\//.test(link[1].trim()) || !ownLink(url, options.appOrigin) ? linkLabel(url, options.appOrigin) : link[1].trim();
|
|
162
132
|
held.push(`[${label}](${url})`);
|
|
163
133
|
return HOLD(held.length - 1) + rest;
|
|
@@ -175,12 +145,10 @@ function shapeWith(text, options, state) {
|
|
|
175
145
|
const aside = holdAside(text, options);
|
|
176
146
|
const held = aside.held;
|
|
177
147
|
let body = aside.body;
|
|
178
|
-
// Headers become plain lines: ATX ("## Next steps") and setext underlines.
|
|
179
148
|
body = body
|
|
180
149
|
.replace(/^[ \t]{0,3}#{1,6}[ \t]+(.*?)(?:[ \t]+#+)?[ \t]*$/gm, "$1")
|
|
181
150
|
.replace(/^[ \t]{0,3}#{1,6}[ \t]*$/gm, "")
|
|
182
151
|
.replace(/^([^\n]*\S[^\n]*)\n[ \t]{0,3}=+[ \t]*$/gm, "$1")
|
|
183
|
-
// A "* " bullet reads the same as "- ", and never as emphasis.
|
|
184
152
|
.replace(/^([ \t]*)\*[ \t]+/gm, "$1- ");
|
|
185
153
|
body = limitBold(body, state);
|
|
186
154
|
if (state.keepIds !== "all")
|
|
@@ -191,24 +159,12 @@ function shapeWith(text, options, state) {
|
|
|
191
159
|
.trim();
|
|
192
160
|
return body.replace(/\u0000(\d+)\u0000/g, (_, index) => held[Number(index)] ?? "");
|
|
193
161
|
}
|
|
194
|
-
/**
|
|
195
|
-
* The canonical shaped reply: plain lines, at most three bold anchors, labelled links, no internal ids unless asked
|
|
196
|
-
* (or unless several of a kind would otherwise read the same), single blank lines. Idempotent: shaping a shaped reply
|
|
197
|
-
* changes nothing.
|
|
198
|
-
*/
|
|
199
162
|
export function shapeReply(text, options = {}) {
|
|
200
163
|
return shapeWith(text, options, stateFor(text, options));
|
|
201
164
|
}
|
|
202
|
-
/**
|
|
203
|
-
* A reply still being written, shaped with the final reply's presentation policy (docs/plans/responsive-chat.md §2.2),
|
|
204
|
-
* except that ids are dropped unless the owner asked for them: whether a reply names several of a kind isn't known
|
|
205
|
-
* until it ends, so a prefix never keeps them on that ground. Presentation, not redaction.
|
|
206
|
-
*/
|
|
207
165
|
export function shapeReplyPrefix(text, options = {}) {
|
|
208
166
|
return shapeWith(text, options, { boldLeft: BOLD_ANCHORS, keepIds: askedForIds(options.asked) ? "all" : new Set() });
|
|
209
167
|
}
|
|
210
|
-
/** Where a long reply may be cut: never inside code, a link, a URL or a bold anchor; best at a paragraph, then a line,
|
|
211
|
-
* then a space. Always past `from`, and never between the two halves of an emoji. */
|
|
212
168
|
function cutAt(text, from, size) {
|
|
213
169
|
const limit = from + Math.max(1, size);
|
|
214
170
|
if (limit >= text.length)
|
|
@@ -227,8 +183,6 @@ function cutAt(text, from, size) {
|
|
|
227
183
|
if (best > from)
|
|
228
184
|
return best;
|
|
229
185
|
}
|
|
230
|
-
// No gap: cut before the token that crosses the limit. A link or URL longer than a whole part stays whole (cut, it
|
|
231
|
-
// would no longer go where it says); only code or plain text longer than a part is cut at the limit itself.
|
|
232
186
|
const crossing = tokens.find(token => token.start < limit && limit < token.end);
|
|
233
187
|
if (crossing !== undefined && crossing.start > from)
|
|
234
188
|
return crossing.start;
|
|
@@ -239,18 +193,9 @@ function cutAt(text, from, size) {
|
|
|
239
193
|
end = end - 1 > from ? end - 1 : end + 1;
|
|
240
194
|
return end;
|
|
241
195
|
}
|
|
242
|
-
/** The first window of a shaped text of at most `size` characters, cut where a part would be (never inside code, a link,
|
|
243
|
-
* a bold anchor or an emoji's two halves). A single link longer than the window stays whole, so the caller measures. */
|
|
244
196
|
export function shapedWindow(shaped, size) {
|
|
245
197
|
return shaped.slice(0, cutAt(shaped, 0, size));
|
|
246
198
|
}
|
|
247
|
-
/**
|
|
248
|
-
* A long reply split into parts of at most `size` characters, then each part shaped: the cut is made on the reply as
|
|
249
|
-
* written, at a paragraph or line where possible and never inside code, a link or a bold anchor, so no part carries
|
|
250
|
-
* half of one. The parts share one bold budget and one rule for ids, as if the reply were shaped whole. `measure` is
|
|
251
|
-
* how long a shaped part is once the channel renders it (its own link and escape format): a part that renders past
|
|
252
|
-
* `size` is cut again, smaller. Only a single link longer than a part can exceed it, and it is never cut.
|
|
253
|
-
*/
|
|
254
199
|
export function shapeReplyParts(text, size, options = {}, measure = shaped => shaped.length) {
|
|
255
200
|
const state = stateFor(text, options);
|
|
256
201
|
const normal = text.replace(/\r\n?/g, "\n");
|
|
@@ -270,7 +215,6 @@ export function shapeReplyParts(text, size, options = {}, measure = shaped => sh
|
|
|
270
215
|
const before = state.boldLeft;
|
|
271
216
|
const shaped = shapeWith(part, options, state);
|
|
272
217
|
const length = measure(shaped);
|
|
273
|
-
// A labelled link or the channel's escapes can lengthen a part: cut that part again, smaller, and shape the pieces.
|
|
274
218
|
if (length > size && part.length > 1) {
|
|
275
219
|
const smaller = pieces(part, Math.max(1, Math.floor(part.length * size / length) - 1));
|
|
276
220
|
if (smaller.length > 1) {
|
|
@@ -284,7 +228,6 @@ export function shapeReplyParts(text, size, options = {}, measure = shaped => sh
|
|
|
284
228
|
}
|
|
285
229
|
return parts;
|
|
286
230
|
}
|
|
287
|
-
/** A shaped reply as pieces: plain text, bold anchors, inline code and labelled links. Fenced code stays text. */
|
|
288
231
|
export function replyPieces(shaped) {
|
|
289
232
|
const pieces = [];
|
|
290
233
|
const pattern = new RegExp(String.raw `(\x60\x60\x60[\s\S]*?(?:\x60\x60\x60|$))|\x60([^\x60\n]+)\x60|\*\*([^*\n]+?)\*\*|\[([^\]\n]{1,120})\]\((${URL_CHARS})\)`, "g");
|
|
@@ -308,17 +251,14 @@ export function replyPieces(shaped) {
|
|
|
308
251
|
return pieces;
|
|
309
252
|
}
|
|
310
253
|
const slack = (value) => value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
311
|
-
/** Discord's presentation syntax, escaped; mentions are broken so nothing pings. */
|
|
312
254
|
export const discordPlain = (text) => text.replace(/([\\`*_~|>#\[\]])/g, "\\$1").replace(/@/g, "@\u200b");
|
|
313
255
|
const teams = (value) => value.replace(/([\\`*_\[\]<>#])/g, "\\$1");
|
|
314
|
-
/** One line of a shaped reply as console HTML (the console lays out paragraphs and lists itself). */
|
|
315
256
|
export function replyHtmlInline(shapedLine) {
|
|
316
257
|
return joinHtml(replyPieces(shapedLine).map(piece => piece.kind === "text" ? piece.text
|
|
317
258
|
: piece.kind === "bold" ? html `<strong>${piece.text}</strong>`
|
|
318
259
|
: piece.kind === "code" ? html `<code>${piece.text}</code>`
|
|
319
260
|
: html `<a href="${piece.url}" rel="noopener noreferrer" target="_blank">${piece.label}</a>`));
|
|
320
261
|
}
|
|
321
|
-
/** A shaped reply in a channel's own text format (Telegram's formatting rides entities: see `telegramReply`). */
|
|
322
262
|
export function renderReply(shaped, channel) {
|
|
323
263
|
const pieces = replyPieces(shaped);
|
|
324
264
|
switch (channel) {
|
|
@@ -335,7 +275,6 @@ export function renderReply(shaped, channel) {
|
|
|
335
275
|
: piece.kind === "code" ? `\`${piece.text}\``
|
|
336
276
|
: `[${discordPlain(piece.label)}](${piece.url})`).join("");
|
|
337
277
|
case "teams":
|
|
338
|
-
// Teams' markdown keeps a single newline only as a paragraph break.
|
|
339
278
|
return pieces.map(piece => piece.kind === "text" ? teams(piece.text).replace(/\n+/g, "\n\n")
|
|
340
279
|
: piece.kind === "bold" ? `**${teams(piece.text)}**`
|
|
341
280
|
: piece.kind === "code" ? `\`${piece.text}\``
|
|
@@ -345,7 +284,6 @@ export function renderReply(shaped, channel) {
|
|
|
345
284
|
return pieces.map(piece => piece.kind === "link" ? `${piece.label} (${piece.url})` : piece.kind === "code" ? `\`${piece.text}\`` : piece.text).join("");
|
|
346
285
|
}
|
|
347
286
|
}
|
|
348
|
-
/** A shaped reply for Telegram: plain text plus entities (bold anchors, code, labelled links). Offsets are UTF-16, as JS strings are. */
|
|
349
287
|
export function telegramReply(shaped) {
|
|
350
288
|
let text = "";
|
|
351
289
|
const entities = [];
|
|
@@ -361,34 +299,22 @@ export function telegramReply(shaped) {
|
|
|
361
299
|
}
|
|
362
300
|
return { text, entities };
|
|
363
301
|
}
|
|
364
|
-
/** Shape and render in one step, for a surface that sends the reply as text. */
|
|
365
302
|
export function voiceReply(text, channel, options = {}) {
|
|
366
303
|
return renderReply(shapeReply(text, options), channel);
|
|
367
304
|
}
|
|
368
|
-
// ---- deliverables: a reply never claims an attachment the turn did not attach ----------------------------------
|
|
369
305
|
const DETERMINER = String.raw `(?:(?:the|a|an|your|my|this|that|these|those|both|two|three|\d+|new|latest|full|updated|requested|fresh|final)\s+){0,2}`;
|
|
370
|
-
/** Things that can only arrive attached: a reply's text can never be them. */
|
|
371
306
|
const ATTACHMENT_ONLY = String.raw `(?:screenshots?|screen\s?shots?|images?|pictures?|photos?|recordings?|videos?|pdfs?|zips?|attachments?|spreadsheets?|csvs?)`;
|
|
372
|
-
/** Things a reply can also list in its text (file names, log lines, a report's points). */
|
|
373
307
|
const LISTABLE = String.raw `(?:files?|logs?|reports?|diffs?|documents?|links?)`;
|
|
374
308
|
const NOUN = String.raw `(?:${ATTACHMENT_ONLY}|${LISTABLE})`;
|
|
375
|
-
/** Presented ("here's the …") these need an attachment or a link: a reply's text can never be one. */
|
|
376
309
|
const PRESENTED = String.raw `(?:${ATTACHMENT_ONLY}|links?|files?)`;
|
|
377
310
|
const SEND = String.raw `(?:\bi(?:'ve|’ve|\s+have)\s+(?:just\s+)?(?:attached|included|shared|uploaded|sent|enclosed)|\bi(?:'m|’m|\s+am)\s+(?:now\s+)?(?:attaching|sending|sharing|uploading|enclosing)|\bi(?:'ll|’ll|\s+will)\s+(?:now\s+)?(?:attach|send|share|upload|enclose)|^\s*(?:attaching|sending|sharing|uploading|enclosing))\s+(?:you\s+)?`;
|
|
378
|
-
/** A claim is an attachment noun plus a send verb, in one sentence. */
|
|
379
311
|
const CLAIMS = [
|
|
380
|
-
// "I've attached the report", "I'm sending you the log", "I'll share the link", "Sending the file now".
|
|
381
312
|
new RegExp(String.raw `${SEND}${DETERMINER}(${NOUN})\b`, "i"),
|
|
382
|
-
// "The screenshot is attached", "Logs attached", "the report is enclosed".
|
|
383
313
|
new RegExp(String.raw `\b(${NOUN})\s+(?:(?:is|are|was|were)\s+)?(?:attached|enclosed|uploaded|included\s+below)\b`, "i"),
|
|
384
|
-
// "Here's the screenshot (of the payout page).", "Here's the link to the result.", "Below is the log file." — presenting
|
|
385
|
-
// something only a link or attachment can carry, with nothing listed after it. A bare "Here's the report." can be the
|
|
386
|
-
// reply's own text, so it is not one.
|
|
387
314
|
new RegExp(String.raw `^\s*(?:here(?:'s|’s|\s+is|\s+are)|(?:attached|below)\s+(?:is|are))\s+${DETERMINER}(?:[\w-]+\s+)?(${PRESENTED})(?:\s+(?:of|for|to|from|showing)\s+[^:]+?)?[.!:]?\s*$`, "i"),
|
|
388
315
|
];
|
|
389
316
|
const SENTENCE = /(?<=[.!?])\s+/;
|
|
390
317
|
const LIST_LINE = /^\s*(?:[-*•]|\d{1,3}[.)])\s+\S|^\s*```/;
|
|
391
|
-
/** One sentence's claim, if it makes one: the words, and whether its noun is something the text could list. */
|
|
392
318
|
function claimOf(sentence) {
|
|
393
319
|
for (const claim of CLAIMS) {
|
|
394
320
|
const found = claim.exec(sentence);
|
|
@@ -399,12 +325,10 @@ function claimOf(sentence) {
|
|
|
399
325
|
}
|
|
400
326
|
return null;
|
|
401
327
|
}
|
|
402
|
-
/** The content a claim sentence lists itself: text after its colon ("…the files I changed: a.ts, b.ts"). */
|
|
403
328
|
function listedAfterColon(tail) {
|
|
404
329
|
const colon = /:\s*(\S[\s\S]*)$/.exec(tail);
|
|
405
330
|
return colon === null ? null : colon[1];
|
|
406
331
|
}
|
|
407
|
-
/** Every claim in a reply, with whether the reply lists what it names (after a colon, or as the list that follows). */
|
|
408
332
|
function claimsIn(text) {
|
|
409
333
|
const lines = text.split("\n");
|
|
410
334
|
const out = [];
|
|
@@ -421,20 +345,13 @@ function claimsIn(text) {
|
|
|
421
345
|
});
|
|
422
346
|
return out;
|
|
423
347
|
}
|
|
424
|
-
/**
|
|
425
|
-
* The words in a reply that say something is being sent or attached ("I've attached the log", "here's the
|
|
426
|
-
* screenshot"), or null. A claim needs an attachment noun and a send verb; one whose content the reply lists itself
|
|
427
|
-
* ("I've included the files I changed: a.ts") is not a claim.
|
|
428
|
-
*/
|
|
429
348
|
export function deliverableClaim(text) {
|
|
430
349
|
return claimsIn(text).find(one => !one.listed)?.words ?? null;
|
|
431
350
|
}
|
|
432
|
-
/** Does the reply carry the thing itself: a link, or content quoted in a code block? */
|
|
433
351
|
export function replyCarriesDeliverable(text) {
|
|
434
352
|
return new RegExp(URL_CHARS).test(text) || /```[\s\S]+?```/.test(text);
|
|
435
353
|
}
|
|
436
354
|
export const NOTHING_ATTACHED = "I couldn't attach that to this reply.";
|
|
437
|
-
/** The reply without its claims of an attachment, said plainly once; whatever a claim listed stays; never the claim alone. */
|
|
438
355
|
export function dropDeliverableClaims(text) {
|
|
439
356
|
const claims = claimsIn(text).filter(one => !one.listed);
|
|
440
357
|
let said = false;
|
|
@@ -442,7 +359,6 @@ export function dropDeliverableClaims(text) {
|
|
|
442
359
|
const claim = claims.find(one => one.line === lineIndex && one.sentence === sentenceIndex);
|
|
443
360
|
if (claim === undefined)
|
|
444
361
|
return sentence;
|
|
445
|
-
// Listed content is never dropped: it follows the plain words instead of the claim.
|
|
446
362
|
const listed = listedAfterColon(claim.tail);
|
|
447
363
|
if (listed !== null) {
|
|
448
364
|
said = true;
|
|
@@ -459,7 +375,6 @@ export function dropDeliverableClaims(text) {
|
|
|
459
375
|
}).filter(sentence => sentence !== "").join(" "));
|
|
460
376
|
return lines.join("\n").replace(/\n{3,}/g, "\n\n").trim() || NOTHING_ATTACHED;
|
|
461
377
|
}
|
|
462
|
-
/** The one repair step's words to the lead: attach it, or drop the claim. */
|
|
463
378
|
export function deliverableRepair(claim) {
|
|
464
379
|
return `Check before sending: your reply says "${claim.slice(0, 80)}", but nothing is attached or linked this turn. Attach it now with the right tool (get_result_images for screenshots, show_control for a page), or rewrite the reply without saying it is attached. Reply with the corrected message.`;
|
|
465
380
|
}
|
package/dist/reply-voice.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* How a lead reply reads (docs/plans/lead-voice.md, V3): its length, its sentences, the internal words it says and
|
|
3
|
-
* whether it opens by describing its own steps. Measured on the shaped text a person sees, never the raw reply.
|
|
4
|
-
* A measure for the lead-answer eval's report; nothing gates on it and no reply is rewritten from it.
|
|
5
|
-
*/
|
|
6
1
|
import { PLAIN_WORDS } from "./plain-words.js";
|
|
7
2
|
import { shapeReply } from "./reply-shape.js";
|
|
8
|
-
/** A reply longer than this is counted as long in the eval's report. */
|
|
9
3
|
export const LONG_REPLY_CHARACTERS = 320;
|
|
10
4
|
const CODE = /```[\s\S]*?(?:```|$)|`[^`\n]+`/g;
|
|
11
5
|
const OWNER_AS_ADDRESS = /(?<![\w-])the\s+owner(?![\w-])/i;
|
|
@@ -23,7 +17,6 @@ export function replyVoice(reply) {
|
|
|
23
17
|
narratedOpening: NARRATED_OPENING.test(shaped.trimStart()),
|
|
24
18
|
};
|
|
25
19
|
}
|
|
26
|
-
/** One model's answers, summed up for the report. */
|
|
27
20
|
export function summarizeVoice(voices) {
|
|
28
21
|
const sorted = voices.map(one => one.characters).sort((a, b) => a - b);
|
|
29
22
|
const mid = Math.floor(sorted.length / 2);
|
package/dist/report-summary.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { readVerifiedReport } from "./evidence.js";
|
|
2
|
-
/** The report a scout delivered, for get_task: title, summary, follow-ups —
|
|
3
|
-
* verified before it is read; the document itself stays on the task page. */
|
|
4
2
|
export function reportSummaryFor(store, evidenceRoot, taskRef) {
|
|
5
3
|
if (store.latestReportArtifact(taskRef) === null)
|
|
6
4
|
return null;
|
|
@@ -13,10 +11,7 @@ export function reportSummaryFor(store, evidenceRoot, taskRef) {
|
|
|
13
11
|
return { problem: view.problem };
|
|
14
12
|
return { title: view.report.title, summary: view.report.summary, followUps: view.report.followUps };
|
|
15
13
|
}
|
|
16
|
-
/** The longest full report a later flow step is given through {{stage.<id>.report}}. */
|
|
17
14
|
export const REPORT_FILL_LIMIT = 20_000;
|
|
18
|
-
/** What a report zone gives the zones after it besides its summary: its items as a numbered list (title, why, URL)
|
|
19
|
-
* and the report's markdown, capped. Empty strings when it has neither. */
|
|
20
15
|
export function reportFillIns(report) {
|
|
21
16
|
const items = report.items.map((one, index) => `${index + 1}. ${one.title}\n ${one.why.replace(/\s*\n\s*/g, " ")}\n ${one.url}`).join("\n");
|
|
22
17
|
const document = report.report.length <= REPORT_FILL_LIMIT ? report.report : `${report.report.slice(0, REPORT_FILL_LIMIT)}\n… (the rest of the report is on its task)`;
|
package/dist/reported-usage.js
CHANGED
|
@@ -1,31 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* What a provider itself reported about one call (docs/plans/evals-nightly.md, part B1): the exact model, its turn
|
|
3
|
-
* count, its reported cost and its cache usage. Read only from the provider's own events and response bodies (Claude's
|
|
4
|
-
* session `system`/`init` and primary `result`, Codex's `turn.completed`, an API's response body), never from text an
|
|
5
|
-
* agent or a candidate wrote. Anything unreported or malformed is unknown (null), never 0.
|
|
6
|
-
*
|
|
7
|
-
* Three amounts are kept apart and never summed into one number: API dollars (work billed by use, with a reported or
|
|
8
|
-
* priced cost), subscription usage (the provider's own reported cost of work a plan covers: not billed), and unknown.
|
|
9
|
-
*/
|
|
10
1
|
import { usageOf } from "./run-efficiency.js";
|
|
11
|
-
/** A model id as a provider reports it: printable ASCII with no spaces, at most 200 characters. Anything else is
|
|
12
|
-
* unknown, never trimmed into something that could read as a different model. */
|
|
13
2
|
const MODEL_ID = /^[\x21-\x7e]{1,200}$/;
|
|
14
|
-
/** Several reported models are kept as their sorted ids joined by this (it has spaces, so no one id can equal it):
|
|
15
|
-
* a run whose calls ran different models never reads as any one of them. */
|
|
16
3
|
export const MODELS_JOIN = " + ";
|
|
17
4
|
export function reportedModelOf(value) {
|
|
18
5
|
return typeof value === "string" && MODEL_ID.test(value) ? value : null;
|
|
19
6
|
}
|
|
20
|
-
/** The one model a Claude result's `modelUsage` names; null when it names none, several, or anything malformed. */
|
|
21
7
|
export function soleReportedModel(modelUsage) {
|
|
22
8
|
if (typeof modelUsage !== "object" || modelUsage === null || Array.isArray(modelUsage))
|
|
23
9
|
return null;
|
|
24
10
|
const keys = Object.keys(modelUsage);
|
|
25
11
|
return keys.length === 1 ? reportedModelOf(keys[0]) : null;
|
|
26
12
|
}
|
|
27
|
-
/** Two reports of the same piece of work (a resumed turn, a second init): unknown if either is, the model when they
|
|
28
|
-
* agree, otherwise every model named, sorted (never one chosen). */
|
|
29
13
|
export function combineReportedModels(a, b) {
|
|
30
14
|
if (a === null || b === null)
|
|
31
15
|
return null;
|
|
@@ -39,9 +23,6 @@ export function providerTurnsOf(value) {
|
|
|
39
23
|
export function reportedCostUsdOf(value) {
|
|
40
24
|
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : null;
|
|
41
25
|
}
|
|
42
|
-
/** A Claude primary `result` (streamed or buffered `--output-format json`), with what the session's inits named. The
|
|
43
|
-
* init's model is the session's own; inits that disagree leave it unknown; with no init naming one, the result's
|
|
44
|
-
* `modelUsage` counts only when it names exactly one model. */
|
|
45
26
|
export function claudeResultReport(result, init = { model: null, conflict: false }) {
|
|
46
27
|
const usage = usageOf({ provider: "claude", model: null, tokensIn: null, tokensOut: null, usageJson: usageJsonOf(result["usage"]) });
|
|
47
28
|
return {
|
|
@@ -53,8 +34,6 @@ export function claudeResultReport(result, init = { model: null, conflict: false
|
|
|
53
34
|
cacheWriteTokens: usage.cacheWrite,
|
|
54
35
|
};
|
|
55
36
|
}
|
|
56
|
-
/** Codex's `turn.completed` usage: its input already counts what came from cache; it reports no cache writes, no
|
|
57
|
-
* model and no cost in `exec --json`, so those stay unknown. */
|
|
58
37
|
export function codexUsageReport(usage) {
|
|
59
38
|
const read = usageOf({ provider: "codex", model: null, tokensIn: null, tokensOut: null, usageJson: usageJsonOf(usage) });
|
|
60
39
|
return { modelReported: null, providerTurns: null, reportedCostUsd: null, tokensIn: read.in, cacheReadTokens: read.cacheRead, cacheWriteTokens: null };
|
|
@@ -62,10 +41,6 @@ export function codexUsageReport(usage) {
|
|
|
62
41
|
function usageJsonOf(usage) {
|
|
63
42
|
return typeof usage === "object" && usage !== null && !Array.isArray(usage) ? JSON.stringify(usage) : null;
|
|
64
43
|
}
|
|
65
|
-
/** A run's amount, from its fixed billing and its priced spend (run_spend). Subscription work reads its provider's
|
|
66
|
-
* reported cost as usage, never as dollars; billed work without a reported or priced cost is unknown. v141 (Codex
|
|
67
|
-
* round 1 #4, #10): billing this computer's default guessed (`basis` not evidence) is unknown, and so is a run whose
|
|
68
|
-
* cost the provider never reported (its `cost_usd` then holds a conservative charge, never a measurement). */
|
|
69
44
|
export function runAmountOf(run) {
|
|
70
45
|
if (run.basis !== undefined && run.basis !== "evidence")
|
|
71
46
|
return { kind: "unknown" };
|
|
@@ -79,11 +54,6 @@ export function runAmountOf(run) {
|
|
|
79
54
|
return { kind: "unknown" };
|
|
80
55
|
}
|
|
81
56
|
const SUBSCRIPTION_CHAT = new Set(["claude-subscription", "codex-subscription"]);
|
|
82
|
-
/** A chat request's amount: a subscription chat's reported cost is usage; an API chat's settled charge is dollars,
|
|
83
|
-
* unless its spend is unknown (then the amount is, whatever was settled against the reservation). v141 (Codex round 1
|
|
84
|
-
* #4): a subscription harness's request is subscription usage only when its own events said it was billed to the plan
|
|
85
|
-
* (`billingReported`); one they said used a key is API dollars at its reported cost; one they said nothing of is
|
|
86
|
-
* unknown. Absent `billingReported` keeps the older reading for callers that predate it. */
|
|
87
57
|
export function chatTurnAmountOf(turn) {
|
|
88
58
|
if (SUBSCRIPTION_CHAT.has(turn.provider)) {
|
|
89
59
|
if (turn.billingReported === undefined || turn.billingReported === "subscription")
|
package/dist/repos.js
CHANGED
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Which repositories the operator has actually committed to.
|
|
3
|
-
*
|
|
4
|
-
* Discovery is total and costs nothing, so it stays the way you find things.
|
|
5
|
-
* Enrollment is the smaller, deliberate list: what gets reported by default,
|
|
6
|
-
* and later what may be written to. Keeping the two separate is what lets the
|
|
7
|
-
* first run need no configuration while the tenth run stays quiet.
|
|
8
|
-
*
|
|
9
|
-
* The file is plain JSON in a conventional location because someone will want
|
|
10
|
-
* to edit it by hand or check it into their dotfiles — which also means it is
|
|
11
|
-
* untrusted input and gets validated like any other.
|
|
12
|
-
*/
|
|
13
1
|
import { closeSync as closeFd, constants as fsConstants, fstatSync, openSync as openFd, readSync, renameSync as renameFile, writeFileSync } from "node:fs";
|
|
14
2
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
15
3
|
import { dirname } from "node:path";
|
|
@@ -18,8 +6,6 @@ import { sleep } from "./sleep.js";
|
|
|
18
6
|
export const CONFIG_VERSION = 2;
|
|
19
7
|
const FILE_NAME = "repos.json";
|
|
20
8
|
export function configPath(env, home) {
|
|
21
|
-
// Rename continuity: an enrolled list under an older name keeps working
|
|
22
|
-
// until one exists under the new one.
|
|
23
9
|
return namedPath(configBase(env, home), [FILE_NAME]);
|
|
24
10
|
}
|
|
25
11
|
export async function loadProjectRegistry(file) {
|
|
@@ -28,9 +14,6 @@ export async function loadProjectRegistry(file) {
|
|
|
28
14
|
text = await readFile(file, "utf8");
|
|
29
15
|
}
|
|
30
16
|
catch (cause) {
|
|
31
|
-
// ONLY the missing file is the ordinary first-run state (round-3
|
|
32
|
-
// finding 6): a permission or I/O failure is an unreadable registry,
|
|
33
|
-
// never an empty one — the MCP gateway fails closed on it.
|
|
34
17
|
if (cause.code === "ENOENT")
|
|
35
18
|
return { repos: [], roots: [] };
|
|
36
19
|
return { error: `${file} could not be read (${String(cause.message)})` };
|
|
@@ -48,7 +31,6 @@ export async function loadProjectRegistry(file) {
|
|
|
48
31
|
}
|
|
49
32
|
return { repos: sortUnique(registry.repos), roots: sortUnique(registry.roots) };
|
|
50
33
|
}
|
|
51
|
-
/** Compatibility view for reports, CLI enrollment, and the MCP surface. */
|
|
52
34
|
export async function loadRepos(file) {
|
|
53
35
|
const loaded = await loadProjectRegistry(file);
|
|
54
36
|
return "error" in loaded ? loaded : { repos: loaded.repos };
|
|
@@ -58,19 +40,6 @@ export async function saveRepos(file, repos) {
|
|
|
58
40
|
const config = { version: CONFIG_VERSION, repos: sortUnique(repos), roots: [] };
|
|
59
41
|
await writeFile(file, `${JSON.stringify(config, null, 2)}\n`, "utf8");
|
|
60
42
|
}
|
|
61
|
-
/**
|
|
62
|
-
* The ONE locked registry update (onboarding findings 9/17/19/25/29/30):
|
|
63
|
-
* every writer — CLI add/remove, the console, up's enrollment — goes
|
|
64
|
-
* through here. The lock is an exclusive-create file whose body carries
|
|
65
|
-
* {pid, token, at}; a LIVE owner's lock is never touched; stale recovery
|
|
66
|
-
* runs only after kill(pid, 0) proves the owner dead, serialized through
|
|
67
|
-
* a second exclusive reaper lock that re-reads the exact snapshot it
|
|
68
|
-
* observed before unlinking. The owner releases only while its hold is
|
|
69
|
-
* under 25s — past that it abandons WITHOUT unlinking and reports so; the
|
|
70
|
-
* deadline is checked BEFORE publication, so a committed rename is never
|
|
71
|
-
* reported as failed. Reads: only ENOENT means an empty registry —
|
|
72
|
-
* malformed JSON, wrong shape, EACCES, and I/O errors REFUSE.
|
|
73
|
-
*/
|
|
74
43
|
export async function updateRepos(file, transform) {
|
|
75
44
|
const updated = await updateProjectRegistry(file, current => ({
|
|
76
45
|
...current,
|
|
@@ -78,7 +47,6 @@ export async function updateRepos(file, transform) {
|
|
|
78
47
|
}));
|
|
79
48
|
return updated.ok ? { ok: true, repos: updated.registry.repos } : updated;
|
|
80
49
|
}
|
|
81
|
-
/** Atomically update repositories and roots without either writer erasing the other. */
|
|
82
50
|
export async function updateProjectRegistry(file, transform) {
|
|
83
51
|
const { openSync, closeSync, writeSync, readFileSync, unlinkSync, existsSync: exists, mkdirSync, renameSync } = await import("node:fs");
|
|
84
52
|
const { randomBytes } = await import("node:crypto");
|
|
@@ -88,9 +56,6 @@ export async function updateProjectRegistry(file, transform) {
|
|
|
88
56
|
const token = randomBytes(16).toString("hex");
|
|
89
57
|
const body = JSON.stringify({ pid: process.pid, token, at: Date.now() });
|
|
90
58
|
const tryReap = () => {
|
|
91
|
-
// Recovery only for PROVEN-dead owners, serialized by the reaper lock,
|
|
92
|
-
// which re-reads the exact snapshot before unlinking (finding 29). An
|
|
93
|
-
// orphaned reaper lock is itself reaped by the same dead-pid rule.
|
|
94
59
|
let snapshot = null;
|
|
95
60
|
try {
|
|
96
61
|
snapshot = JSON.parse(readFileSync(lockPath, "utf8"));
|
|
@@ -102,10 +67,9 @@ export async function updateProjectRegistry(file, transform) {
|
|
|
102
67
|
return;
|
|
103
68
|
try {
|
|
104
69
|
process.kill(snapshot.pid, 0);
|
|
105
|
-
return;
|
|
70
|
+
return;
|
|
106
71
|
}
|
|
107
72
|
catch {
|
|
108
|
-
// ESRCH — dead; continue under the reaper lock
|
|
109
73
|
}
|
|
110
74
|
try {
|
|
111
75
|
const before = readFileSync(reaperPath, "utf8");
|
|
@@ -113,30 +77,27 @@ export async function updateProjectRegistry(file, transform) {
|
|
|
113
77
|
if (typeof parsed?.pid === "number") {
|
|
114
78
|
try {
|
|
115
79
|
process.kill(parsed.pid, 0);
|
|
116
|
-
return;
|
|
80
|
+
return;
|
|
117
81
|
}
|
|
118
82
|
catch {
|
|
119
83
|
try {
|
|
120
84
|
unlinkSync(reaperPath);
|
|
121
85
|
}
|
|
122
|
-
catch {
|
|
86
|
+
catch { }
|
|
123
87
|
}
|
|
124
88
|
}
|
|
125
89
|
}
|
|
126
90
|
catch {
|
|
127
|
-
// no reaper lock — proceed to claim it
|
|
128
91
|
}
|
|
129
92
|
let reaperFd;
|
|
130
93
|
try {
|
|
131
94
|
reaperFd = openSync(reaperPath, "wx");
|
|
132
95
|
}
|
|
133
96
|
catch {
|
|
134
|
-
return;
|
|
97
|
+
return;
|
|
135
98
|
}
|
|
136
99
|
try {
|
|
137
100
|
writeSync(reaperFd, JSON.stringify({ pid: process.pid }));
|
|
138
|
-
// Re-read and require the EXACT observed snapshot + a repeated
|
|
139
|
-
// dead-pid proof before unlinking (finding 29).
|
|
140
101
|
const now = readFileSync(lockPath, "utf8");
|
|
141
102
|
const again = JSON.parse(now);
|
|
142
103
|
if (again?.pid === snapshot.pid && again?.token === snapshot.token) {
|
|
@@ -147,19 +108,18 @@ export async function updateProjectRegistry(file, transform) {
|
|
|
147
108
|
try {
|
|
148
109
|
unlinkSync(lockPath);
|
|
149
110
|
}
|
|
150
|
-
catch {
|
|
111
|
+
catch { }
|
|
151
112
|
}
|
|
152
113
|
}
|
|
153
114
|
}
|
|
154
115
|
catch {
|
|
155
|
-
// lock vanished or changed — nothing to do
|
|
156
116
|
}
|
|
157
117
|
finally {
|
|
158
118
|
closeSync(reaperFd);
|
|
159
119
|
try {
|
|
160
120
|
unlinkSync(reaperPath);
|
|
161
121
|
}
|
|
162
|
-
catch {
|
|
122
|
+
catch { }
|
|
163
123
|
}
|
|
164
124
|
};
|
|
165
125
|
let held = false;
|
|
@@ -183,7 +143,7 @@ export async function updateProjectRegistry(file, transform) {
|
|
|
183
143
|
try {
|
|
184
144
|
let current;
|
|
185
145
|
if (!exists(file)) {
|
|
186
|
-
current = { repos: [], roots: [] };
|
|
146
|
+
current = { repos: [], roots: [] };
|
|
187
147
|
}
|
|
188
148
|
else {
|
|
189
149
|
let text;
|
|
@@ -208,14 +168,10 @@ export async function updateProjectRegistry(file, transform) {
|
|
|
208
168
|
}
|
|
209
169
|
const transformed = transform({ repos: [...current.repos], roots: [...current.roots] });
|
|
210
170
|
const next = { repos: sortUnique(transformed.repos), roots: sortUnique(transformed.roots) };
|
|
211
|
-
// Deadline BEFORE publication (finding 30): a rename past the hold
|
|
212
|
-
// window would commit while the lock may already be reaped.
|
|
213
171
|
if (acquiredAt() > 20_000) {
|
|
214
|
-
held = false;
|
|
172
|
+
held = false;
|
|
215
173
|
return { ok: false, reason: "abandoned", message: "the registry lock aged out before the update could publish — nothing changed; try again" };
|
|
216
174
|
}
|
|
217
|
-
// Each line this update removes counts one more removal, written BEFORE the list is published: whoever holds a
|
|
218
|
-
// start's authority for a saved line (upDeferredRetry) sees that it was removed, even if it was saved again since.
|
|
219
175
|
const gone = current.repos.filter(one => !next.repos.includes(one));
|
|
220
176
|
if (gone.length > 0)
|
|
221
177
|
bumpRegistryRemovals(file, gone, `${process.pid}.${token.slice(0, 8)}`);
|
|
@@ -232,11 +188,10 @@ export async function updateProjectRegistry(file, transform) {
|
|
|
232
188
|
try {
|
|
233
189
|
unlinkSync(lockPath);
|
|
234
190
|
}
|
|
235
|
-
catch {
|
|
191
|
+
catch { }
|
|
236
192
|
}
|
|
237
193
|
}
|
|
238
194
|
}
|
|
239
|
-
/** Strict shape for the locked path (finding 36): non-string entries REFUSE. */
|
|
240
195
|
function readProjectRegistryStrict(parsed) {
|
|
241
196
|
if (typeof parsed !== "object" || parsed === null)
|
|
242
197
|
return null;
|
|
@@ -256,7 +211,6 @@ export function removeRepos(existing, targets) {
|
|
|
256
211
|
const unwanted = new Set(targets);
|
|
257
212
|
return existing.filter(repo => !unwanted.has(repo));
|
|
258
213
|
}
|
|
259
|
-
/** null when the shape is wrong; non-string entries are dropped, not trusted. */
|
|
260
214
|
function readProjectRegistry(parsed) {
|
|
261
215
|
if (typeof parsed !== "object" || parsed === null)
|
|
262
216
|
return null;
|
|
@@ -273,14 +227,9 @@ function readProjectRegistry(parsed) {
|
|
|
273
227
|
function sortUnique(repos) {
|
|
274
228
|
return [...new Set(repos)].sort();
|
|
275
229
|
}
|
|
276
|
-
/** Beside the saved list: how many times each line has been removed from it (written under its lock). */
|
|
277
230
|
export function registryRemovalsFile(file) {
|
|
278
231
|
return `${file}.removals.json`;
|
|
279
232
|
}
|
|
280
|
-
/**
|
|
281
|
-
* How many times each saved line has been removed, as recorded under the saved list's lock. A file that can't be read
|
|
282
|
-
* as one answers null: its caller treats every line as changed (fail closed).
|
|
283
|
-
*/
|
|
284
233
|
export function registryRemovals(file) {
|
|
285
234
|
let fd;
|
|
286
235
|
try {
|
|
@@ -313,10 +262,8 @@ export function registryRemovals(file) {
|
|
|
313
262
|
closeFd(fd);
|
|
314
263
|
}
|
|
315
264
|
}
|
|
316
|
-
/** One more removal for each of `lines`, written whole and renamed into place. Called only under the list's lock. */
|
|
317
265
|
function bumpRegistryRemovals(file, lines, tag) {
|
|
318
266
|
const kept = registryRemovals(file);
|
|
319
|
-
// An unreadable record starts again from the clock, so no count read before can come round again.
|
|
320
267
|
const counts = kept ?? {};
|
|
321
268
|
for (const line of lines)
|
|
322
269
|
counts[line] = kept === null ? Date.now() : (counts[line] ?? 0) + 1;
|