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
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { handlersOf } from './handler-registry.js';
|
|
2
2
|
import { adapterPolicy } from "./route-policy.js";
|
|
3
|
-
/** settings handlers, moved without changing their route bodies. */
|
|
4
3
|
import { mintApiToken, TOKEN_DAYS } from "../api-tokens.js";
|
|
5
4
|
import { CONSOLE_FORMS, readForm } from "../contracts/console-api.js";
|
|
6
5
|
import { html, htmlString, joinHtml, postForm, reauth, replaceMarkup, scriptElement } from "../html.js";
|
|
@@ -12,7 +11,6 @@ import { SSO_CALLBACK } from "../sso-settings.js";
|
|
|
12
11
|
import { personChip, refuse, screen } from "./chrome.js";
|
|
13
12
|
import { inviteLinkHtml, ownAccessHtml, peopleHtml, settingsSubPage } from "../settings-groups-ui.js";
|
|
14
13
|
import { redirect, respond, sayTo } from "./http.js";
|
|
15
|
-
/** people handlers, moved without changing their route bodies. */
|
|
16
14
|
import { randomBytes } from "node:crypto";
|
|
17
15
|
import {} from "node:http";
|
|
18
16
|
import {} from "../contracts/console-api.js";
|
|
@@ -30,12 +28,7 @@ import { LOCAL_OWNER_LAPSED } from "../local-owner.js";
|
|
|
30
28
|
import { withFormToken } from "./request-context.js";
|
|
31
29
|
import { FULL_SESSION, SESSION_COOKIE, SIGN_IN_LINK_PATH } from "./session.js";
|
|
32
30
|
import { setupCodeMatches, signupCookie, signupFromHere } from "./signup-gate.js";
|
|
33
|
-
/** Clock skew allowed between the provider and this server when reading auth_time — forward only (a provider clock
|
|
34
|
-
* running ahead). auth_time is in whole seconds, so a check made in the visit's own second is floored below startedAt:
|
|
35
|
-
* the one allowance backward is that rounding, never a check made before the visit began. */
|
|
36
31
|
const AUTH_TIME_SKEW_MS = 60_000;
|
|
37
|
-
/** When the provider checked the person, in ms, if its auth_time is a check made for this visit: present, no earlier
|
|
38
|
-
* than the second the visit began, and not in the future beyond the skew. Null otherwise. */
|
|
39
32
|
export function sameVisitCheck(authTime, startedAt, now) {
|
|
40
33
|
if (authTime === null || !Number.isFinite(authTime))
|
|
41
34
|
return null;
|
|
@@ -46,7 +39,6 @@ export function sameVisitCheck(authTime, startedAt, now) {
|
|
|
46
39
|
}
|
|
47
40
|
export function createPeopleHandlers(runtime) {
|
|
48
41
|
const { joinBySource, ssoOffer, ssoVisits, ssoSettings, options, clock, ssoHandoffs, managedRepos, store, visible, admissionList, sendScreen, chromeFor, restricted, sessions, consoleProjects, authenticateApprover, authenticateCredential, bustBadge, projectOf, signInLinks, linkKey, fromThisComputer, recordSignIn, passwordAllowed, arrival, cookieSecure, consoleOrigin, providerFor, providerKnown, joinSourceOf, signInBudget, signInActor, minutesWords, browserKeys } = runtime;
|
|
49
|
-
// v101: Settings → Sessions & tokens: where you're signed in, and your API tokens. An instance operator can see everyone's.
|
|
50
42
|
async function sessionsPage(ctx) {
|
|
51
43
|
const { url, who, response, project } = ctx;
|
|
52
44
|
if (who.via !== "cookie")
|
|
@@ -60,8 +52,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
60
52
|
}
|
|
61
53
|
async function peoplePage(ctx) {
|
|
62
54
|
const { url, who, response, now, project } = ctx;
|
|
63
|
-
// People → a person: their API tokens and remote activity (people-audit-ui.ts). An approver may open anyone, within
|
|
64
|
-
// their projects; anyone else only themselves. Another person reads exactly like nobody.
|
|
65
55
|
const person = url.searchParams.get("person");
|
|
66
56
|
if (person !== null) {
|
|
67
57
|
const token = (url.searchParams.get("token-name") ?? "").slice(0, 60) || null, before = url.searchParams.get("before");
|
|
@@ -75,8 +65,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
75
65
|
return refuse(response, who, 404, "No such person.", "/people");
|
|
76
66
|
return sendScreen(response, 200, screen("people", personAuditHtml({ name: person, tokens: store.apiTokens(person), actions: page.actions, token, nextCursor: page.nextCursor, now }), { chrome: chromeFor(project, "people") }));
|
|
77
67
|
}
|
|
78
|
-
// Approvers see everyone (D7's ceiling: every fact already passed
|
|
79
|
-
// the process admission); a viewer sees exactly themselves (U3).
|
|
80
68
|
if (restricted()) {
|
|
81
69
|
const projects = admissionList() ?? [];
|
|
82
70
|
return sendScreen(response, 200, screen("Your access", ownAccessHtml({ name: who.name, approver: who.role === "approver", projects: projects.map(repo => projectName(repo)), activity: personHref(who.name) }), { chrome: chromeFor(project, "people") }));
|
|
@@ -158,10 +146,7 @@ export function createPeopleHandlers(runtime) {
|
|
|
158
146
|
return back("problem", "Choose when it expires.");
|
|
159
147
|
if (access === "act" && who.role !== "approver")
|
|
160
148
|
return back("problem", "A viewer's token can only read.");
|
|
161
|
-
// A token is a credential: made with the person's password typed now (or an explicit identity-provider re-check,
|
|
162
|
-
// spent by it), counted once. Never a remembered password: this act is outside every freshness allowlist.
|
|
163
149
|
const typed = body.get("password") ?? "";
|
|
164
|
-
// Passwordless never covers it (docs/plans/passwordless.md: a credential act).
|
|
165
150
|
const viewerProof = who.role === "approver" || who.via !== "cookie" ? null : proveAccountNow(store, who.name, typed, { credential: true });
|
|
166
151
|
const confirmed = who.role === "approver" ? authenticateCredential(who, typed).ok
|
|
167
152
|
: viewerProof !== null && viewerProof.ok && credentialProof(viewerProof.method);
|
|
@@ -170,7 +155,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
170
155
|
const minted = mintApiToken();
|
|
171
156
|
const expiresAt = new Date(now.getTime() + days * 86_400_000).toISOString();
|
|
172
157
|
store.createApiToken({ id: minted.id, account: who.name, name, secretHash: minted.hash, access, expiresAt, by: who.name }, now);
|
|
173
|
-
// The token, once, on a page with no script.
|
|
174
158
|
return sendScreen(response, 200, screen("API token", tokenShownHtml(name, minted.token, access, expiresAt), { chrome: chromeFor(projectOf(who, request) ?? null, "settings"), forceSensitive: true }));
|
|
175
159
|
}
|
|
176
160
|
return back("problem", "Choose an action.");
|
|
@@ -178,7 +162,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
178
162
|
async function peopleProjects(ctx) {
|
|
179
163
|
const { who, response, now, posted } = ctx;
|
|
180
164
|
const body = readForm(posted, CONSOLE_FORMS.peopleProjects);
|
|
181
|
-
// Widening access (up to instance operator) is a credential act: a password typed now, Passwordless or not.
|
|
182
165
|
if (!authenticateCredential(who, body.get("token") ?? "", null).ok)
|
|
183
166
|
return refuse(response, who, 403, "Saving access requires your password.", "/people");
|
|
184
167
|
const access = readAccessForm(body);
|
|
@@ -196,8 +179,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
196
179
|
if (who.via !== "cookie")
|
|
197
180
|
return refuse(response, who, 403, "inviting is a browser surface");
|
|
198
181
|
const token = body.get("token") ?? "";
|
|
199
|
-
// RAISING authority is a password ceremony (the doctrine): adding a
|
|
200
|
-
// person to the instance is exactly that.
|
|
201
182
|
if (!authenticateCredential(who, token).ok) {
|
|
202
183
|
return refuse(response, who, 403, "making an invite takes your password, typed again", "/people");
|
|
203
184
|
}
|
|
@@ -209,9 +190,7 @@ export function createPeopleHandlers(runtime) {
|
|
|
209
190
|
return refuse(response, who, 400, "Select at least one project for this invitation.", "/people");
|
|
210
191
|
const minted = store.mintInvite(role, who.name, now, undefined, access.projects);
|
|
211
192
|
const origin = options.publicUrl !== undefined ? options.publicUrl.replace(/\/$/, "") : `http://${request.headers.host ?? "this-console"}`;
|
|
212
|
-
const linkScreen = screen("Invite link", inviteLinkHtml({ link: `${origin}/join/${minted.token}`, approver: role === "approver", projects: access.projects === null ? "all projects" : access.projects.map(repo => projectName(repo)).join(", "), expires: `${minted.expiresAt.slice(0, 16).replace("T", " ")} UTC` }),
|
|
213
|
-
// A one-time secret on screen: no script of any kind rides along.
|
|
214
|
-
{ chrome: chromeFor(projectOf(who, request) ?? null, "people"), forceSensitive: true });
|
|
193
|
+
const linkScreen = screen("Invite link", inviteLinkHtml({ link: `${origin}/join/${minted.token}`, approver: role === "approver", projects: access.projects === null ? "all projects" : access.projects.map(repo => projectName(repo)).join(", "), expires: `${minted.expiresAt.slice(0, 16).replace("T", " ")} UTC` }), { chrome: chromeFor(projectOf(who, request) ?? null, "people"), forceSensitive: true });
|
|
215
194
|
return sendScreen(response, 200, linkScreen);
|
|
216
195
|
}
|
|
217
196
|
async function peopleInviteRevoke(ctx) {
|
|
@@ -251,17 +230,13 @@ export function createPeopleHandlers(runtime) {
|
|
|
251
230
|
async function signInPage(ctx) {
|
|
252
231
|
const { url, response } = ctx;
|
|
253
232
|
if (options.setupCode !== undefined && store.listApprovers().length === 0) {
|
|
254
|
-
// The form's same-site proof (signup-gate.ts): a post without it never reaches the setup code.
|
|
255
233
|
if (runtime.setupAttemptsLeft > 0)
|
|
256
234
|
response.setHeader("Set-Cookie", signupCookie(cookieSecure));
|
|
257
|
-
// Its own post then carries this console's Origin (the console's default no-referrer sends `null`).
|
|
258
235
|
response.setHeader("Referrer-Policy", "same-origin");
|
|
259
236
|
return page(response, 200, signupPage(null, runtime.setupAttemptsLeft));
|
|
260
237
|
}
|
|
261
238
|
return page(response, 200, loginPage(null, loginReturn(url.searchParams.get("return")), ssoOffer()));
|
|
262
239
|
}
|
|
263
|
-
// The one-time link `up` opens (onboarding): it signs the browser on this computer in and lands on Chat. Spent on
|
|
264
|
-
// the first visit whatever happens; the ledger notes the sign-in, never the link.
|
|
265
240
|
async function signInLink(ctx) {
|
|
266
241
|
const { url, request, response } = ctx;
|
|
267
242
|
const code = url.pathname.slice(SIGN_IN_LINK_PATH.length);
|
|
@@ -274,7 +249,7 @@ export function createPeopleHandlers(runtime) {
|
|
|
274
249
|
return page(response, 403, loginPage("That sign-in link works only in a browser on the computer running Toolroll. Sign in with your password.", "/chat", ssoOffer()));
|
|
275
250
|
}
|
|
276
251
|
if (held === undefined || held.expires < Date.now()) {
|
|
277
|
-
return page(response, 410, loginPage(
|
|
252
|
+
return page(response, 410, loginPage(html `That sign-in link has been used or has expired. Sign in with your password, or run <code>toolroll</code> again.`, "/chat", ssoOffer()));
|
|
278
253
|
}
|
|
279
254
|
const account = store.accountOf(held.account);
|
|
280
255
|
if (account === null || account.role !== "approver" || account.revokedAt !== null)
|
|
@@ -286,9 +261,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
286
261
|
const base = { ...arrival(request), name: held.account, csrf: randomBytes(32).toString("hex"), role: account.role, generation: account.generation, createdAt: Date.now(), sawBoardAt: null, lastSeen: Date.now(),
|
|
287
262
|
project: runtime.defaultProject, projectRevision: 1 };
|
|
288
263
|
if (held.kind === "local-owner") {
|
|
289
|
-
// Easy-start C4: a local owner's link becomes only a local-owner session, and only if local mode, read again in
|
|
290
|
-
// the same transaction as the session is saved, is still on at the link's generation for the same owner, and the
|
|
291
|
-
// owner's account generation hasn't moved (a password set since ended this road).
|
|
292
264
|
const made = store.transact(() => {
|
|
293
265
|
const now = localOwnerBinding(store);
|
|
294
266
|
if (now === null || now.account !== held.account || now.localGeneration !== held.localGeneration || now.accountGeneration !== held.accountGeneration)
|
|
@@ -297,7 +269,7 @@ export function createPeopleHandlers(runtime) {
|
|
|
297
269
|
return true;
|
|
298
270
|
});
|
|
299
271
|
if (!made)
|
|
300
|
-
return page(response, 410, loginPage(
|
|
272
|
+
return page(response, 410, loginPage(html `That sign-in link has been used or has expired. Run <code>toolroll</code> again to open Toolroll.`, "/chat", ssoOffer()));
|
|
301
273
|
recordSignIn(held.account, "signed in", "local link");
|
|
302
274
|
}
|
|
303
275
|
else {
|
|
@@ -306,8 +278,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
306
278
|
}
|
|
307
279
|
return signedInTo(response, keyed.key, "/chat", [`${SESSION_COOKIE}=${id}; HttpOnly; SameSite=Strict; Path=/${cookieSecure}`]);
|
|
308
280
|
}
|
|
309
|
-
// v100: sign-in with the identity provider. ?reauth=1 asks it to check the person again (a step-up);
|
|
310
|
-
// ?link=1 links the signed-in account to it. The browser that starts it holds the visit's state.
|
|
311
281
|
async function ssoStart(ctx) {
|
|
312
282
|
const { url, who, request, response } = ctx;
|
|
313
283
|
const settings = ssoSettings();
|
|
@@ -320,8 +290,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
320
290
|
const origin = consoleOrigin(request.headers.host);
|
|
321
291
|
if (origin === null)
|
|
322
292
|
return page(response, 400, loginPage("Sign in from this computer (localhost) or from your https address.", returnTo, ssoOffer()));
|
|
323
|
-
// Discovered as the console starts and in the background (docs/plans/get-side-effects.md): following this link
|
|
324
|
-
// fetches nothing.
|
|
325
293
|
const known = providerKnown(settings.issuer);
|
|
326
294
|
if (known === null)
|
|
327
295
|
return page(response, 503, loginPage(`${settings.label} isn't answering yet. Try again in a moment.`, returnTo, ssoOffer()));
|
|
@@ -330,7 +298,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
330
298
|
for (const [key, one] of ssoVisits)
|
|
331
299
|
if (one.expires < Date.now())
|
|
332
300
|
ssoVisits.delete(key);
|
|
333
|
-
// Bounded: anyone may start a sign-in, so the oldest waiting ones give way.
|
|
334
301
|
while (ssoVisits.size >= 1000)
|
|
335
302
|
ssoVisits.delete(ssoVisits.keys().next().value);
|
|
336
303
|
const asker = intent === "sign-in" || who?.via !== "cookie" ? null : sessions.hashOf(who.session);
|
|
@@ -360,7 +327,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
360
327
|
if (handoff.intent === "link" || handoff.intent === "reauth") {
|
|
361
328
|
if (who?.via !== "cookie")
|
|
362
329
|
return redirect(response, loginHref(handoff.returnTo));
|
|
363
|
-
// Only the session that asked: same kept session, same credential generation.
|
|
364
330
|
if (handoff.session === null || sessions.hashOf(who.session) !== handoff.session.hash || who.session.generation !== handoff.session.generation) {
|
|
365
331
|
return page(response, 403, loginPage(`That ${settings.label} check was started by another sign-in. Start it again from this page.`, handoff.returnTo, ssoOffer()));
|
|
366
332
|
}
|
|
@@ -372,12 +338,9 @@ export function createPeopleHandlers(runtime) {
|
|
|
372
338
|
sessions.persist(who.session);
|
|
373
339
|
return redirect(response, `/settings/sign-in?said=${encodeURIComponent(`This account signs in with ${settings.label} now.`)}`);
|
|
374
340
|
}
|
|
375
|
-
// A step-up: the provider checked the same person again.
|
|
376
341
|
if (store.ssoAccount(identity.issuer, identity.subject) !== who.name)
|
|
377
342
|
return page(response, 403, loginPage(`That ${settings.label} account isn't the one signed in here.`, handoff.returnTo, ssoOffer()));
|
|
378
343
|
who.session.sso = { at: handoff.checkedAt ?? 0 };
|
|
379
|
-
// An explicit re-check on request: the one identity-provider event that stands in for a password typed now (for ONE
|
|
380
|
-
// step-up, spent by it) and may start a freshness window (B2). Kept in memory only: a restart forgets it.
|
|
381
344
|
if (handoff.checkedAt !== null) {
|
|
382
345
|
who.session.ssoReauthAt = handoff.checkedAt;
|
|
383
346
|
who.session.ssoNowAt = handoff.checkedAt;
|
|
@@ -403,18 +366,13 @@ export function createPeopleHandlers(runtime) {
|
|
|
403
366
|
}
|
|
404
367
|
async function signupSend(ctx) {
|
|
405
368
|
const { request, response } = ctx;
|
|
406
|
-
// A re-shown form posts again: its Origin must name this console too (signup-gate.ts).
|
|
407
369
|
response.setHeader("Referrer-Policy", "same-origin");
|
|
408
|
-
// Only while the table is empty, only with the printed code, only
|
|
409
|
-
// five tries: the bootstrap door underneath is atomic, so two first
|
|
410
|
-
// visitors serialize to one owner.
|
|
411
370
|
if (options.setupCode === undefined || store.listApprovers().length > 0) {
|
|
412
371
|
return page(response, 409, loginPage("An account already exists. Sign in."));
|
|
413
372
|
}
|
|
414
373
|
if (runtime.setupAttemptsLeft <= 0) {
|
|
415
374
|
return page(response, 403, signupPage(null, 0));
|
|
416
375
|
}
|
|
417
|
-
// Another site's post (or one without this page's cookie) is refused before it can spend a try.
|
|
418
376
|
if (!signupFromHere(request, runtime.allowedHost)) {
|
|
419
377
|
request.resume();
|
|
420
378
|
response.setHeader("Set-Cookie", signupCookie(cookieSecure));
|
|
@@ -424,14 +382,11 @@ export function createPeopleHandlers(runtime) {
|
|
|
424
382
|
const code = (body.get("code") ?? "").trim();
|
|
425
383
|
const name = (body.get("name") ?? "").trim();
|
|
426
384
|
const password = body.get("password") ?? "";
|
|
427
|
-
// Re-read after the body: concurrent posts all waited above, and only the tries still left may be compared.
|
|
428
|
-
// From here to the decrement nothing awaits, so check and spend are one step.
|
|
429
385
|
if (runtime.setupAttemptsLeft <= 0) {
|
|
430
386
|
return page(response, 403, signupPage(null, 0));
|
|
431
387
|
}
|
|
432
388
|
if (!setupCodeMatches(code, options.setupCode)) {
|
|
433
389
|
runtime.setupAttemptsLeft -= 1;
|
|
434
|
-
// What was typed comes back except the code and the password (never echoed); the count rides the code's note.
|
|
435
390
|
return page(response, 403, signupPage(runtime.setupAttemptsLeft > 0
|
|
436
391
|
? { field: "code", text: "That isn't the setup code Toolroll printed. Check the terminal and try again." }
|
|
437
392
|
: "That wasn't the setup code, and that was the last try. Restart Toolroll to get a new code.", runtime.setupAttemptsLeft, name));
|
|
@@ -463,7 +418,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
463
418
|
lastSeen: Date.now(),
|
|
464
419
|
project: runtime.defaultProject,
|
|
465
420
|
projectRevision: 1,
|
|
466
|
-
// A password typed on this computer starts this session's freshness window (cockpit B2); from anywhere else, never.
|
|
467
421
|
...(fromThisComputer(request) ? { passwordAt: Date.now() } : {}),
|
|
468
422
|
});
|
|
469
423
|
return signedInTo(response, keyed.key, "/", [`${SESSION_COOKIE}=${id}; HttpOnly; SameSite=Strict; Path=/${cookieSecure}`]);
|
|
@@ -473,9 +427,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
473
427
|
const body = readForm(await form(request), CONSOLE_FORMS.login);
|
|
474
428
|
const name = body.get("name");
|
|
475
429
|
const token = body.get("token");
|
|
476
|
-
// The destination a deep link asked for rides the form as a same-site
|
|
477
|
-
// path, re-checked here on both roads: a failed sign-in keeps it, a
|
|
478
|
-
// successful one lands on it. Nothing about the sign-in itself changes.
|
|
479
430
|
const returnTo = loginReturn(body.get("return"));
|
|
480
431
|
const source = joinSourceOf(request), at = Date.now();
|
|
481
432
|
const wait = signInBudget.waitFor(source, at);
|
|
@@ -516,8 +467,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
516
467
|
lastSeen: Date.now(),
|
|
517
468
|
project: runtime.defaultProject,
|
|
518
469
|
projectRevision: 1,
|
|
519
|
-
// A password typed to sign in on this computer starts this session's freshness window (cockpit B2); from anywhere
|
|
520
|
-
// else (a phone, a proxy) it signs in and proves nothing more.
|
|
521
470
|
...(fromThisComputer(request) ? { passwordAt: Date.now() } : {}),
|
|
522
471
|
});
|
|
523
472
|
return signedInTo(response, keyed.key, returnTo, [`${SESSION_COOKIE}=${id}; HttpOnly; SameSite=Strict; Path=/${cookieSecure}`]);
|
|
@@ -535,11 +484,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
535
484
|
response.setHeader("Set-Cookie", `${SESSION_COOKIE}=; HttpOnly; SameSite=Strict; Path=/; Max-Age=0${cookieSecure}`);
|
|
536
485
|
return redirect(response, "/login");
|
|
537
486
|
}
|
|
538
|
-
// THE JOIN ROAD (v29, D6/E3): a single-use invite is the only door
|
|
539
|
-
// that creates an account from the outside. Cookie-free, script-free,
|
|
540
|
-
// and every dead token shape — unknown, expired, revoked, consumed,
|
|
541
|
-
// attempts spent — answers with ONE indistinguishable page. GET spends
|
|
542
|
-
// nothing; a POST spends one metered attempt BEFORE the KDF runs.
|
|
543
487
|
async function joinPage(ctx) {
|
|
544
488
|
const { url, response } = ctx;
|
|
545
489
|
const joinToken = joinCodeOf(url);
|
|
@@ -549,8 +493,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
549
493
|
async function joinSend(ctx) {
|
|
550
494
|
const { url, request, response } = ctx;
|
|
551
495
|
const joinToken = joinCodeOf(url);
|
|
552
|
-
// EXACT media type (Codex people round 2, finding 5): parameters may
|
|
553
|
-
// follow a semicolon; a merely prefix-shaped type is not a form.
|
|
554
496
|
const media = String(request.headers["content-type"] ?? "").split(";")[0]?.trim().toLowerCase();
|
|
555
497
|
if (media !== "application/x-www-form-urlencoded") {
|
|
556
498
|
return respond(response, 415, "text/plain; charset=utf-8", "forms only");
|
|
@@ -575,8 +517,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
575
517
|
return page(response, 200, joinDeadPage());
|
|
576
518
|
const name = (body.get("name") ?? "").trim();
|
|
577
519
|
const password = body.get("password") ?? "";
|
|
578
|
-
// Possession of a LIVE token earns real words (D6's disclosure
|
|
579
|
-
// ruling) — the attempt is already spent either way (E3).
|
|
580
520
|
if (!/^[A-Za-z0-9][A-Za-z0-9._-]{0,39}$/.test(name)) {
|
|
581
521
|
return page(response, 400, joinFormPage(joinToken, { field: "name", text: "Use 1\u201340 letters, digits, dots, dashes or underscores, starting with a letter or digit." }, name, liveInviteTerms(store, joinToken, clock())));
|
|
582
522
|
}
|
|
@@ -590,7 +530,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
590
530
|
}
|
|
591
531
|
return page(response, 200, joinDeadPage());
|
|
592
532
|
}
|
|
593
|
-
// The cookie mints only AFTER the commit — same shape as login.
|
|
594
533
|
const id = randomBytes(32).toString("hex");
|
|
595
534
|
const keyed = keyFor(request);
|
|
596
535
|
sessions.set(id, {
|
|
@@ -609,7 +548,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
609
548
|
});
|
|
610
549
|
return signedInTo(response, keyed.key, "/", [`${SESSION_COOKIE}=${id}; HttpOnly; SameSite=Strict; Path=/${cookieSecure}`]);
|
|
611
550
|
}
|
|
612
|
-
/** The invite code in /join/:code (the route's pattern has already proven its shape). */
|
|
613
551
|
function joinCodeOf(url) {
|
|
614
552
|
return url.pathname.slice("/join/".length);
|
|
615
553
|
}
|
|
@@ -634,12 +572,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
634
572
|
joinBySource.set(source, { tokens: tokens - 1, refilledAt: refill > 0 ? at : bucket.refilledAt });
|
|
635
573
|
return true;
|
|
636
574
|
}
|
|
637
|
-
/**
|
|
638
|
-
* Back from a service's sign-in: the code becomes the tool's tokens,
|
|
639
|
-
* kept in its secrets file, and a page sends the person back to Tools (or
|
|
640
|
-
* to the kit the Connect came from, whose subagent may then use the tool).
|
|
641
|
-
*/
|
|
642
|
-
/** v100: back from the identity provider. Proves the person, then hands them to /login/sso/finish on this site. */
|
|
643
575
|
async function ssoCallback(request, response, url) {
|
|
644
576
|
const back = (words) => page(response, 400, loginPage(words, "/", ssoOffer()));
|
|
645
577
|
const state = url.searchParams.get("state") ?? "";
|
|
@@ -666,9 +598,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
666
598
|
logEvent("warn", "sso.refused", { reason: verified.said });
|
|
667
599
|
return back(verified.said);
|
|
668
600
|
}
|
|
669
|
-
// When the provider checked the person (its auth_time), proved against this visit (cockpit B2, N18): no earlier than
|
|
670
|
-
// this visit began, and not in the future beyond a minute of clock skew. A step-up must carry one that holds — a
|
|
671
|
-
// check made for this request, never a remembered one; any other sign-in without one signs in, but is never fresh.
|
|
672
601
|
const checkedAt = sameVisitCheck(verified.claims.authTime, held.startedAt, Date.now());
|
|
673
602
|
if (held.intent === "reauth" && checkedAt === null)
|
|
674
603
|
return back(`${settings.label} didn't check you again. Try once more.`);
|
|
@@ -681,7 +610,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
681
610
|
ssoHandoffs.set(key, { claims: verified.claims, issuer: held.provider.issuer, intent: held.intent, returnTo: held.returnTo, expires: Date.now() + 60_000, checkedAt, session: held.session });
|
|
682
611
|
const to = `/login/sso/finish?h=${key}`;
|
|
683
612
|
response.writeHead(200, { "content-type": "text/html; charset=utf-8", "cache-control": "no-store", "referrer-policy": "no-referrer", "x-content-type-options": "nosniff", "x-frame-options": "DENY",
|
|
684
|
-
// The hand-off key is this browser's alone, like the visit's state: its cookie rides to /login/sso/finish.
|
|
685
613
|
"set-cookie": [signInSpent(SSO_CALLBACK), `${SIGN_IN_COOKIE}=${key}; Path=/login/sso/finish; Max-Age=60; HttpOnly; SameSite=Lax${held.redirect.startsWith("https:") ? "; Secure" : ""}`],
|
|
686
614
|
"content-security-policy": "default-src 'none'; style-src 'unsafe-inline'; frame-ancestors 'none'; base-uri 'none'" });
|
|
687
615
|
response.end(htmlString(html `<!doctype html><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="refresh" content="0;url=${to}"><title>Toolroll</title>${HANDOFF_STYLE}<p>Signing you in… <a href="${to}">Continue</a></p>`));
|
|
@@ -690,7 +618,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
690
618
|
if (body.getAll("access").length > 1)
|
|
691
619
|
return { ok: false, message: "Choose one access setting." };
|
|
692
620
|
const mode = body.get("access");
|
|
693
|
-
// Older clients omitted this field and explicitly used instance roles.
|
|
694
621
|
if ((mode === null && body.getAll("projects").length === 0) || mode === "all")
|
|
695
622
|
return { ok: true, projects: null };
|
|
696
623
|
if (mode !== "selected")
|
|
@@ -701,23 +628,17 @@ export function createPeopleHandlers(runtime) {
|
|
|
701
628
|
return { ok: false, message: "Choose projects available on this instance." };
|
|
702
629
|
return { ok: true, projects };
|
|
703
630
|
}
|
|
704
|
-
/** Easy-start C2: a session's key fields when it is made: on a protected loopback install, a fresh key (only its hash
|
|
705
|
-
* and this start's epoch kept) to deliver once; else none. */
|
|
706
631
|
function keyFor(request) {
|
|
707
632
|
const fields = { keyEpoch: null, keyHash: null };
|
|
708
633
|
const key = browserKeys.issue(fields, request);
|
|
709
634
|
return { fields, key };
|
|
710
635
|
}
|
|
711
|
-
/** A sign-in's answer: its cookies, then on to `to` — through the key's one delivery when there is a key. */
|
|
712
636
|
function signedInTo(response, key, to, cookies) {
|
|
713
637
|
if (key !== null)
|
|
714
638
|
return browserKeys.deliver(response, key, to, cookies);
|
|
715
639
|
response.setHeader("Set-Cookie", cookies.length === 1 ? cookies[0] : [...cookies]);
|
|
716
640
|
return redirect(response, to);
|
|
717
641
|
}
|
|
718
|
-
// Easy-start C2: Reconnect. A browser session keeps reading after a restart, but its mutation key was bound to the
|
|
719
|
-
// console start that issued it. A full session gets a fresh key here by typing its password again (a cookie alone
|
|
720
|
-
// never does: a cookie holder on another port has the cookie); a local owner, by running `toolroll open`.
|
|
721
642
|
async function rekeyPage(ctx) {
|
|
722
643
|
const { url, who, response } = ctx;
|
|
723
644
|
const returnTo = loginReturn(url.searchParams.get("return"));
|
|
@@ -742,7 +663,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
742
663
|
return redirect(response, loginHref(returnTo));
|
|
743
664
|
if (!browserKeys.required())
|
|
744
665
|
return redirect(response, returnTo);
|
|
745
|
-
// Only this console's own page: a present Origin must name it (the password below is the proof either way).
|
|
746
666
|
const origin = request.headers.origin;
|
|
747
667
|
if (typeof origin === "string" && origin !== "null" && origin !== `http://${browserKeys.canonicalHost()}`) {
|
|
748
668
|
return page(response, 403, reconnectPage("Reconnect from Toolroll's own page.", returnTo, howToReconnect(who)));
|
|
@@ -757,7 +677,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
757
677
|
response.setHeader("Retry-After", String(Math.ceil(wait / 1000)));
|
|
758
678
|
return page(response, 429, reconnectPage(`Too many tries. Try again in ${minutesWords(wait)}.`, returnTo, how));
|
|
759
679
|
}
|
|
760
|
-
// Only a password typed now: never a session, Passwordless or a remembered password (an empty one simply fails).
|
|
761
680
|
const proved = authenticateAccount(store, who.name, body.get("token") ?? "");
|
|
762
681
|
if (!proved.ok) {
|
|
763
682
|
if (proved.reason === "locked") {
|
|
@@ -769,8 +688,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
769
688
|
recordSignIn(who.name, "sign-in refused", "wrong password", "reconnect");
|
|
770
689
|
return page(response, 403, reconnectPage("That password isn't right.", returnTo, how));
|
|
771
690
|
}
|
|
772
|
-
// The same person under the same credential generation and standing this session signed in with; anything else
|
|
773
|
-
// signs in again instead.
|
|
774
691
|
if (proved.generation !== who.session.generation || proved.role !== who.session.role)
|
|
775
692
|
return redirect(response, loginHref(returnTo));
|
|
776
693
|
const key = browserKeys.issue(who.session, request);
|
|
@@ -780,10 +697,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
780
697
|
recordSignIn(who.name, "reconnected", "browser");
|
|
781
698
|
return browserKeys.deliver(response, key, returnTo);
|
|
782
699
|
}
|
|
783
|
-
// Easy-start C4: /password/set, the one credential act a local owner's session may make: its first password, only
|
|
784
|
-
// while the account has none. The answer is a fresh full session (and a fresh browser key), and on to the act that
|
|
785
|
-
// was refused. Every other session, and an account that has a password, is told to sign in with it.
|
|
786
|
-
/** A /password/set page: no-store, and on a protected loopback install the key fill rides it (its form posts the key). */
|
|
787
700
|
function passwordSetAnswer(response, status, document) {
|
|
788
701
|
response.setHeader("Cache-Control", "no-store");
|
|
789
702
|
if (!browserKeys.required())
|
|
@@ -793,7 +706,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
793
706
|
}
|
|
794
707
|
async function passwordSetForm(ctx) {
|
|
795
708
|
const { url, who, response } = ctx;
|
|
796
|
-
// Where to go once it is set: `next` (a refusal's link), or `return` (older links), checked either way.
|
|
797
709
|
const returnTo = passwordSetNext(url.searchParams.get("next") ?? url.searchParams.get("return"));
|
|
798
710
|
if (who === null || who === undefined)
|
|
799
711
|
return redirect(response, loginHref(returnTo));
|
|
@@ -821,12 +733,9 @@ export function createPeopleHandlers(runtime) {
|
|
|
821
733
|
return respond(response, 400, "text/plain; charset=utf-8", `duplicated ${field} field`);
|
|
822
734
|
}
|
|
823
735
|
const account = store.accountOf(who.name);
|
|
824
|
-
// A full session, or an account that has a password: only signing in with it.
|
|
825
736
|
if (who.authority === "full" || account === null || account.passwordSet)
|
|
826
737
|
return passwordSetAnswer(response, 409, passwordAlreadySetPage("A password is already set", returnTo, who.authority === "full"));
|
|
827
738
|
const again = (problem, status) => passwordSetAnswer(response, status, withFormToken(who.session.csrf, () => passwordSetPage({ returnTo, problem })));
|
|
828
|
-
// The console's own page only: a present Origin (or Referer) must name it; the session's CSRF token and (on a protected
|
|
829
|
-
// loopback install) its browser key are proved as for every other mutation.
|
|
830
739
|
const origin = request.headers.origin, referer = request.headers.referer;
|
|
831
740
|
const named = typeof origin === "string" && origin !== "null" ? origin : typeof referer === "string" ? referer : null;
|
|
832
741
|
if (named !== null && !runtime.allowedHost(named.replace(/^https?:\/\//, "").split("/")[0]))
|
|
@@ -839,7 +748,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
839
748
|
if (account.revokedAt !== null || account.generation !== who.session.generation || !sessions.savedNow(who.session) || who.session.localGeneration === null) {
|
|
840
749
|
return again({ field: null, text: LOCAL_OWNER_LAPSED }, 409);
|
|
841
750
|
}
|
|
842
|
-
// Rate-limited like signing in: the same per-address budget, and each refused try spends from it.
|
|
843
751
|
const source = joinSourceOf(request), at = Date.now();
|
|
844
752
|
const wait = signInBudget.waitFor(source, at);
|
|
845
753
|
if (wait > 0) {
|
|
@@ -847,7 +755,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
847
755
|
return again({ field: null, text: `Too many tries. Try again in ${minutesWords(wait)}.` }, 429);
|
|
848
756
|
}
|
|
849
757
|
const password = body.get("password") ?? "";
|
|
850
|
-
// The strength rule sign-up and joining use.
|
|
851
758
|
if (password.length < SIGNUP_PASSWORD_MIN) {
|
|
852
759
|
signInBudget.failed(source, at);
|
|
853
760
|
return again({ field: "password", text: `Use at least ${SIGNUP_PASSWORD_MIN} characters.` }, 400);
|
|
@@ -856,9 +763,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
856
763
|
signInBudget.failed(source, at);
|
|
857
764
|
return again({ field: "again", text: "The two passwords don't match. Type them again." }, 400);
|
|
858
765
|
}
|
|
859
|
-
// Hashed before the transaction (scrypt is slow); enrollOwnerPassword then checks and writes in one IMMEDIATE
|
|
860
|
-
// transaction: still no password, local mode on at this session's generation, the account its active owner. It ends
|
|
861
|
-
// every session the account had (this one included).
|
|
862
766
|
const enrolled = enrollOwnerPassword(store, who.name, hashPassword(password), who.session.localGeneration, clock());
|
|
863
767
|
if (!enrolled.ok) {
|
|
864
768
|
if (enrolled.reason === "already-set")
|
|
@@ -869,7 +773,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
869
773
|
if (cookieId !== undefined)
|
|
870
774
|
sessions.delete(cookieId);
|
|
871
775
|
recordSignIn(who.name, "signed in", "browser", "first password set");
|
|
872
|
-
// A fresh full session, made only after the commit, with a fresh key delivered once (no-store) on a protected install.
|
|
873
776
|
const id = randomBytes(32).toString("hex");
|
|
874
777
|
const issued = keyFor(request);
|
|
875
778
|
sessions.set(id, {
|
|
@@ -885,7 +788,6 @@ export function createPeopleHandlers(runtime) {
|
|
|
885
788
|
lastSeen: Date.now(),
|
|
886
789
|
project: who.session.project ?? runtime.defaultProject,
|
|
887
790
|
projectRevision: 1,
|
|
888
|
-
// A password typed on this computer starts this session's freshness window (cockpit B2), as signing in does.
|
|
889
791
|
...(fromThisComputer(request) ? { passwordAt: Date.now() } : {}),
|
|
890
792
|
});
|
|
891
793
|
return signedInTo(response, issued.key, returnTo, [`${SESSION_COOKIE}=${id}; HttpOnly; SameSite=Strict; Path=/${cookieSecure}`]);
|
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
import { adapterPolicy } from "./route-policy.js";
|
|
2
2
|
import { flowFormPage, FORM_PATH, HOOK_PATH, hookRefusedUnread, receiveFlowForm, receiveFlowHook } from "../flow-triggers.js";
|
|
3
3
|
import { keepPushedUpdate, loadBotToken, pushedByTelegram, telegramHookSecret } from "../telegram.js";
|
|
4
|
-
/** Flow webhooks (v82): the one road a public relay may expose. The secret
|
|
5
|
-
* address proves nothing about the sender on its own for GitHub and Linear:
|
|
6
|
-
* their signatures are checked too. Nothing runs here; cards wait for a pass. */
|
|
7
|
-
/**
|
|
8
|
-
* v98: Telegram pushes this bot's updates here. Only a request carrying our
|
|
9
|
-
* secret header is Telegram's; each update is kept for the bridge (which
|
|
10
|
-
* applies it through the same door as a polled one), and answered at once so
|
|
11
|
-
* Telegram doesn't send it again. An update already kept or applied is fine.
|
|
12
|
-
*/
|
|
13
4
|
export async function telegramHook(ctx, request, response) {
|
|
14
5
|
const { store, options, clock } = ctx;
|
|
15
6
|
const reply = (status) => { response.writeHead(status, { "content-type": "text/plain; charset=utf-8", "cache-control": "no-store" }); response.end(status === 200 ? "ok" : "no"); request.resume(); };
|
|
@@ -59,7 +50,6 @@ export async function flowHook(ctx, request, response, url) {
|
|
|
59
50
|
return reply(404, "No such address.");
|
|
60
51
|
if (request.method !== "POST")
|
|
61
52
|
return reply(405, "Send a POST.");
|
|
62
|
-
// Refused before it is read (v126): it still counts toward its address's minute, as anything unproven does.
|
|
63
53
|
const refused = (status, said) => { const over = hookRefusedUnread(store, url.pathname.slice(HOOK_PATH.length), clock()); return over === null ? reply(status, said) : reply(over.status, over.said, over.retryAfter); };
|
|
64
54
|
if (Number(request.headers["content-length"] ?? 0) > 1_000_000)
|
|
65
55
|
return refused(413, "Too large.");
|
|
@@ -86,7 +76,6 @@ export async function flowHook(ctx, request, response, url) {
|
|
|
86
76
|
return reply(500, "Not saved.");
|
|
87
77
|
}
|
|
88
78
|
}
|
|
89
|
-
/** A shared button as a public form (v84): its questions, and one card per submission. No sign-in, no session, nothing about the flow shown. */
|
|
90
79
|
export async function flowForm(ctx, request, response, url) {
|
|
91
80
|
const { store, clock } = ctx;
|
|
92
81
|
const page = (answer) => {
|
|
@@ -130,8 +119,6 @@ export function healthz(store, response, head, draining = false) {
|
|
|
130
119
|
catch {
|
|
131
120
|
healthy = false;
|
|
132
121
|
}
|
|
133
|
-
// A draining console (its `up` is stopping) still answers pages, but says so here at once: a probe moves on instead
|
|
134
|
-
// of waiting for it to disappear.
|
|
135
122
|
const body = JSON.stringify(draining && healthy ? { status: "draining", message: "Toolroll is restarting (draining)" } : { status: healthy ? "ok" : "unavailable" });
|
|
136
123
|
response.writeHead(healthy && !draining ? 200 : 503, { "content-type": "application/json", "cache-control": "no-store", "x-content-type-options": "nosniff" });
|
|
137
124
|
response.end(head ? undefined : body);
|
package/dist/server/remote.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { credentialProof, freshFacts, proveAccountNow, ssoNowAvailable } from "../scope.js";
|
|
2
2
|
import { handlersOf } from './handler-registry.js';
|
|
3
|
-
/** tasks handlers, moved without changing their route bodies. */
|
|
4
3
|
import {} from "node:http";
|
|
5
4
|
import { handleCliHttp } from '../cli-http.js';
|
|
6
5
|
import { CodingWorkspace } from '../coding-workspace.js';
|
|
@@ -16,17 +15,11 @@ import { respond } from "./http.js";
|
|
|
16
15
|
import {} from "./session.js";
|
|
17
16
|
export function createRemoteHandlers(runtime) {
|
|
18
17
|
const { identify, store, admitPasswordSource, admitBearer, allowedHost, team, teamBrowserReply, requestBudget, options, clock, evidenceRoot, consoleOrigin, managedRepos, joinSourceOf, ssoSettings, oauthTokenBudget, hookContext, teamsSourceBudget, teamsTenantBudget } = runtime;
|
|
19
|
-
/**
|
|
20
|
-
* The full principal a live `so_` API token stands for: its person and their generation, the token's own read/act
|
|
21
|
-
* scope, its project limit narrowed by the person's current access, and its id. Every route that accepts an API token
|
|
22
|
-
* builds its identity here and carries it whole, so no route can drop the token's narrower scope or projects.
|
|
23
|
-
*/
|
|
24
18
|
const tokenPrincipalOf = (request) => {
|
|
25
19
|
const who = identify(request, false, true);
|
|
26
20
|
return who?.via === "bearer" ? who.principal ?? null : null;
|
|
27
21
|
};
|
|
28
22
|
const presentsToken = (request) => /^Bearer so_\S+$/.test(request.headers.authorization ?? "");
|
|
29
|
-
/** When each live request's password bearer last proved its password: kept only while the request is. */
|
|
30
23
|
const passwordProvedAt = new WeakMap();
|
|
31
24
|
const teamEndpoint = (request, response) => handleTeamHttp(request, response, {
|
|
32
25
|
authenticate: request => {
|
|
@@ -38,7 +31,6 @@ export function createRemoteHandlers(runtime) {
|
|
|
38
31
|
const account = who === null ? null : store.accountOf(who.name);
|
|
39
32
|
if (!who || !account || account.revokedAt !== null)
|
|
40
33
|
return null;
|
|
41
|
-
// Easy-start C1: team conversations are a remote feature; a laptop's local owner (no password) never reaches them.
|
|
42
34
|
if (who.via === 'cookie' && who.authority !== 'full')
|
|
43
35
|
return null;
|
|
44
36
|
if (who.via === 'bearer')
|
|
@@ -51,18 +43,13 @@ export function createRemoteHandlers(runtime) {
|
|
|
51
43
|
const account = store.accountOf(actor.name);
|
|
52
44
|
if (!account || account.revokedAt !== null || account.generation !== actor.generation)
|
|
53
45
|
return false;
|
|
54
|
-
// An API token is re-proved against the store every time: unrevoked, unexpired, inside its project limit.
|
|
55
46
|
if (actor.principal !== undefined) {
|
|
56
47
|
const live = reproveRemote(store, actor.principal, new Date());
|
|
57
48
|
if (!live.ok)
|
|
58
49
|
return false;
|
|
59
|
-
// The post-body mutation check must see a scope lowered since authentication, too.
|
|
60
50
|
actor.principal = { ...actor.principal, scope: live.scope };
|
|
61
51
|
return true;
|
|
62
52
|
}
|
|
63
|
-
// A password bearer was proved when this connection opened, and is proved again (the password checked, through
|
|
64
|
-
// the same per-source tries and locks) once TEAM_PASSWORD_REVERIFY_MS has passed since. Cookie expiry/revocation
|
|
65
|
-
// is rechecked without allowing a passive stream to extend its lifetime.
|
|
66
53
|
if (request.headers.authorization) {
|
|
67
54
|
const now = clock().getTime(), provedAt = passwordProvedAt.get(request);
|
|
68
55
|
if (provedAt !== undefined && now - provedAt < TEAM_PASSWORD_REVERIFY_MS)
|
|
@@ -90,8 +77,6 @@ export function createRemoteHandlers(runtime) {
|
|
|
90
77
|
const named = typeof origin === 'string' && origin !== 'null' ? origin : typeof referer === 'string' ? referer : null;
|
|
91
78
|
if (named !== null && !allowedHost(named.replace(/^https?:\/\//, '').split('/')[0]))
|
|
92
79
|
return false;
|
|
93
|
-
// Easy-start C2: and, on a protected loopback install, the session's key (its header), which a cookie holder on
|
|
94
|
-
// another port can't read.
|
|
95
80
|
return request.headers['x-csrf-token'] === who.session.csrf && runtime.browserKeys.check(who, request, null) === null;
|
|
96
81
|
},
|
|
97
82
|
execute: async (actor, input) => {
|
|
@@ -102,7 +87,6 @@ export function createRemoteHandlers(runtime) {
|
|
|
102
87
|
return who?.via === 'cookie' ? teamBrowserReply(reply, actor, who.session.csrf) : reply;
|
|
103
88
|
},
|
|
104
89
|
});
|
|
105
|
-
// Remote CLI: one live API token names the person; the shared command boundary decides everything else.
|
|
106
90
|
const cliEndpoint = (request, response) => handleCliHttp(request, response, {
|
|
107
91
|
admit: principal => requestBudget.admit(principal.tokenId, "api"),
|
|
108
92
|
authenticate: tokenPrincipalOf,
|
|
@@ -113,13 +97,11 @@ export function createRemoteHandlers(runtime) {
|
|
|
113
97
|
const mcpHttp = createMcpHttp({ store, clock, evidenceRoot, ...(options.requestBudgetClock === undefined ? {} : { requestBudgetClock: options.requestBudgetClock }), signedIn: request => identify(request, true, true) !== null, admit: person => requestBudget.admit(person.principal.tokenId, "mcp"),
|
|
114
98
|
resourceMetadata: request => { const origin = consoleOrigin(request.headers.host); return origin === null ? null : resourceMetadataUrl(origin); },
|
|
115
99
|
enrolled: () => [...new Set([...managedRepos(), ...store.listProjects().map(project => project.path)])], ...(options.runOperateAs === undefined ? {} : { runAs: options.runOperateAs }) });
|
|
116
|
-
// MCP sign-in: the console's own sign-in and step-up, a same-site consent form, and the person's current projects.
|
|
117
100
|
const oauthHttp = createOAuthHttp({ store, clock,
|
|
118
101
|
originOf: request => consoleOrigin(request.headers.host),
|
|
119
102
|
requesterKey: joinSourceOf,
|
|
120
103
|
session: request => {
|
|
121
104
|
const who = identify(request, false);
|
|
122
|
-
// Easy-start C1: connecting an outside app is a credential act; a local owner's session is never one that consents.
|
|
123
105
|
if (who === null || who.via !== "cookie" || who.authority !== "full")
|
|
124
106
|
return null;
|
|
125
107
|
return { name: who.name, role: who.role, csrf: who.session.csrf, generation: who.session.generation,
|
|
@@ -131,22 +113,15 @@ export function createRemoteHandlers(runtime) {
|
|
|
131
113
|
const named = typeof origin === "string" && origin !== "null" ? origin : typeof referer === "string" ? referer : null;
|
|
132
114
|
return named !== null && allowedHost(named.replace(/^https?:\/\//, "").split("/")[0]);
|
|
133
115
|
},
|
|
134
|
-
// Easy-start C2: the consent's own post presents the session's key too (its form carries it, filled by the page's
|
|
135
|
-
// one nonce'd script while the key is required).
|
|
136
116
|
keyed: (request, form) => {
|
|
137
117
|
const who = identify(request, false);
|
|
138
118
|
return who !== null && who.via === "cookie" && runtime.browserKeys.check(who, request, form) === null;
|
|
139
119
|
},
|
|
140
120
|
keyFill: () => runtime.browserKeys.required(),
|
|
141
|
-
// The step-up for a credential: the person's password, or (empty) a fresh identity-provider check. What they may
|
|
142
|
-
// grant (their role, their projects) is checked beside it.
|
|
143
|
-
// Proved on this request's live session at the moment of consent (signed in here still, same generation), through
|
|
144
|
-
// the one account step-up: a password typed now, or an explicit re-check (spent). Never a remembered password.
|
|
145
121
|
confirm: (request, session, typed) => {
|
|
146
122
|
const who = identify(request, false);
|
|
147
123
|
if (who === null || who.via !== "cookie" || who.authority !== "full" || who.name !== session.name || who.session.generation !== session.generation)
|
|
148
124
|
return false;
|
|
149
|
-
// Connecting an outside app is a credential act: never a session (Passwordless) or a remembered password.
|
|
150
125
|
return freshFacts.run(runtime.freshFactsOf(request, who), () => { const proved = proveAccountNow(store, who.name, typed, { credential: true }); return proved.ok && credentialProof(proved.method); });
|
|
151
126
|
},
|
|
152
127
|
projectsFor: account => store.knownRepos().filter(repo => store.accountCanAccess(account, repo)).sort(),
|
|
@@ -158,9 +133,6 @@ export function createRemoteHandlers(runtime) {
|
|
|
158
133
|
return;
|
|
159
134
|
return respond(response, 404, 'text/plain; charset=utf-8', 'No such address.');
|
|
160
135
|
};
|
|
161
|
-
// D5: the central team service is deprecated (still served this release); each answer says so in a Deprecation
|
|
162
|
-
// header (RFC 9745).
|
|
163
|
-
// Each protocol adapter keeps its own operation boundary; every row still names its own entry.
|
|
164
136
|
const registrations = handlersOf("remote", {}, {
|
|
165
137
|
"edge.telegram-hook": async ({ request, response }) => { await telegramHook(hookContext, request, response); },
|
|
166
138
|
"edge.flow-form": async ({ request, response, url }) => { await flowHook(hookContext, request, response, url); },
|