toolroll 0.9.103 → 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 +65 -0
- package/README.md +27 -27
- 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 +117 -103
- 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 +3 -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 +2 -16
- 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 +168 -0
- package/dist/local-owner.js +15 -80
- 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 +2 -17
- package/dist/operate-remote.js +0 -33
- package/dist/operate.js +280 -2304
- 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 +3 -18
- 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 +11 -30
- package/dist/public-check.js +0 -16
- package/dist/publish.js +1 -150
- package/dist/pull-request-flow.js +6 -74
- 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 +26 -103
- 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 +9 -28
- 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 +88 -566
- 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 +29 -564
- 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 +9 -86
- 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 +17 -497
- 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 +8 -133
- 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 +12 -227
- package/dist/server/tasks.js +37 -531
- 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 +8 -73
- 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 +66 -19
- 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 +91 -40
- package/dist/tui.js +54 -54
- 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 +5 -4
- 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 -318
- 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 -1972
- 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 -539
- 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 -41
- 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.d.ts +0 -124
- 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 -52
- 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 -156
- 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 -35
- 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 -1067
- 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 -80
- 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 -59
- 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 -754
- package/dist/server/render-settings.d.ts +0 -93
- package/dist/server/render-tasks.d.ts +0 -774
- 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 -342
- 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 -83
- 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 -30
- 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 -144
- 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,13 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Settings: the overview and its group pages, in the revamp kit (src/design/KIT.md; the owner-approved prototype's
|
|
3
|
-
* Settings area, docs/plans/settings-revamp.md §3). Server HTML only: every form posts to the route and fields it
|
|
4
|
-
* posted to before, under its proof inventory row (settings-proofs.ts), and the kit's section forms
|
|
5
|
-
* (settings-kit.ts kitSectionForm) save one section at a time. Nothing here reads a request or decides an act; the
|
|
6
|
-
* page that calls it has already dropped what this person can't use, and every handler proves the act again.
|
|
7
|
-
*
|
|
8
|
-
* Groups (design/kit.ts SETTINGS_GROUPS): General, Agents and models, Chat apps and alerts, Approvals and safety,
|
|
9
|
-
* Projects, People and sign-in, Spend (its own page, /spend), System.
|
|
10
|
-
*/
|
|
11
1
|
import { ACCENT_PRESETS, accentNote } from "./accent-colors.js";
|
|
12
2
|
import {} from "./browser-workspace.js";
|
|
13
3
|
import { SETTINGS_GROUP_ICONS, SETTINGS_GROUPS, plural } from "./design/kit.js";
|
|
@@ -18,25 +8,23 @@ import {} from "./scope.js";
|
|
|
18
8
|
import { qualityModeTitle } from "./quality.js";
|
|
19
9
|
import {} from "./store.js";
|
|
20
10
|
import { kitSectionForm, SECRET_OPT_OUTS } from "./settings-kit.js";
|
|
11
|
+
import { ADVANCED_PAGES } from "./advanced-view.js";
|
|
21
12
|
import { btn, chip, codeLine, disclose, formRow, infoLine, input, needsPanel, note, notice, radios, select, settingsLink, settingsLinks, settingsRecord, settingsSection, settingsShell, switchInput, } from "./server/kit.js";
|
|
22
|
-
/** The group pages this module draws (Spend is /spend; Approvals and safety is /settings/approval, its own handler). */
|
|
23
13
|
export const GROUP_PATHS = {
|
|
24
14
|
"/settings": "hub", "/settings/general": "general", "/settings/agents": "agents", "/settings/alerts": "alerts",
|
|
25
|
-
"/settings/projects": "projects", "/settings/access": "access", "/settings/system": "system",
|
|
15
|
+
"/settings/projects": "projects", "/settings/access": "access", "/settings/system": "system", "/settings/advanced": "advanced",
|
|
26
16
|
};
|
|
27
17
|
const CHAT_APPS = [["telegram", "Telegram"], ["slack", "Slack"], ["discord", "Discord"], ["teams", "Teams"]];
|
|
28
18
|
const and = (names) => names.length > 1 ? `${names.slice(0, -1).join(", ")} and ${names.at(-1)}` : names[0] ?? "";
|
|
29
19
|
const groupHref = (slug) => SETTINGS_GROUPS.find(([, one]) => one === slug)?.[2] ?? "/settings";
|
|
30
20
|
const groupLabel = (slug) => SETTINGS_GROUPS.find(([, one]) => one === slug)?.[0] ?? "Settings";
|
|
31
21
|
const sentence = (text) => text === "" ? text : `${text.charAt(0).toUpperCase()}${text.slice(1)}`;
|
|
32
|
-
/** A notice the handler sent back with the page (?said= or ?problem=), in place under the page's lead. */
|
|
33
22
|
const answered = (facts) => facts.problem ? notice(sentence(facts.problem)) : facts.said ? infoLine(sentence(facts.said)) : html ``;
|
|
34
|
-
/** What waits on this person in Settings (never a task): no builder, a chat app failing, a failed backup. Read-only. */
|
|
35
23
|
export function settingsNeeds(facts) {
|
|
36
24
|
const out = [];
|
|
37
25
|
if (facts.workers !== null && facts.approver && !facts.workers.some(one => one.tone === "ok")) {
|
|
38
|
-
out.push({ group: "agents", title: facts.workers.length === 0 ? "
|
|
39
|
-
text: "Approved work waits until a computer builds it. Run toolroll up on the computer with your projects.", action: ["
|
|
26
|
+
out.push({ group: "agents", title: facts.workers.length === 0 ? "Nothing is taking work" : "Nothing is taking work right now",
|
|
27
|
+
text: "Approved work waits until a computer builds it. Run toolroll up on the computer with your projects.", action: ["Start taking work", "/settings/agents#workers"] });
|
|
40
28
|
}
|
|
41
29
|
if (facts.telegram.failing)
|
|
42
30
|
out.push({ group: "alerts", title: "Telegram isn’t delivering", text: facts.telegram.delivery ?? "Alerts to your phone are failing.", action: ["Open Telegram", "/settings/telegram"] });
|
|
@@ -44,7 +32,6 @@ export function settingsNeeds(facts) {
|
|
|
44
32
|
out.push({ group: "system", title: "The last backup failed", text: facts.backup.words, action: ["Open backups", "/settings/backups"] });
|
|
45
33
|
return out;
|
|
46
34
|
}
|
|
47
|
-
/** Which groups have something waiting, for the section nav's dot and the overview's rows. */
|
|
48
35
|
export function needsByGroup(items) {
|
|
49
36
|
const out = {};
|
|
50
37
|
for (const item of items)
|
|
@@ -52,13 +39,12 @@ export function needsByGroup(items) {
|
|
|
52
39
|
return out;
|
|
53
40
|
}
|
|
54
41
|
const flagsOf = (counts) => Object.fromEntries(Object.keys(counts).map(key => [key, true]));
|
|
55
|
-
// ---- the overview -----------------------------------------------------------------------------------------------
|
|
56
42
|
const themeWords = (theme) => theme === "light" ? "Light" : theme === "dark" ? "Dark" : "Match this device";
|
|
57
43
|
function agentsWords(facts) {
|
|
58
44
|
const signed = facts.providers?.find(one => one.connection !== null && one.tone === "ok") ?? facts.providers?.find(one => one.tone === "ok");
|
|
59
45
|
const builders = facts.workers === null ? null : facts.workers.filter(one => one.tone === "ok").length;
|
|
60
|
-
return [signed ? `${signed.name}: ${signed.words}` : facts.providers === null ? "Models,
|
|
61
|
-
builders === null ? null : builders === 0 ? "
|
|
46
|
+
return [signed ? `${signed.name}: ${signed.words}` : facts.providers === null ? "Models, chat and tools" : "No agent signed in yet",
|
|
47
|
+
builders === null ? null : builders === 0 ? "not taking work yet" : "taking work"].filter(Boolean).join(" · ");
|
|
62
48
|
}
|
|
63
49
|
function alertsWords(facts) {
|
|
64
50
|
const configured = facts.messaging?.configured ?? [];
|
|
@@ -70,12 +56,12 @@ function alertsWords(facts) {
|
|
|
70
56
|
}
|
|
71
57
|
function approvalWords(facts) {
|
|
72
58
|
return [facts.permission ? `New tasks: ${facts.permission.mode === "bypassPermissions" ? "Full access" : "Auto"}` : null,
|
|
73
|
-
facts.quality ? `${qualityModeTitle(facts.quality.mode)} quality` : null, "
|
|
59
|
+
facts.quality ? `${qualityModeTitle(facts.quality.mode)} quality` : null, "Who approves, and what runs without asking"].filter(Boolean).join(" · ");
|
|
74
60
|
}
|
|
75
61
|
function accessWords(facts) {
|
|
76
62
|
const people = facts.people === null ? null : [facts.people.approvers.length ? `${and(facts.people.approvers)} can manage and approve` : "",
|
|
77
63
|
facts.people.viewers.length ? `${and(facts.people.viewers)} can view` : ""].filter(Boolean).join(" · ");
|
|
78
|
-
return [people || "
|
|
64
|
+
return [people || "Who can get in", facts.passwordless === null || passwordFree(facts) ? null : facts.passwordless ? "Passwordless on" : "Passwordless off"].filter(Boolean).join(" · ");
|
|
79
65
|
}
|
|
80
66
|
function systemWords(facts) {
|
|
81
67
|
const latest = facts.updates?.latest;
|
|
@@ -83,11 +69,6 @@ function systemWords(facts) {
|
|
|
83
69
|
: latest !== null && latest?.newer ? `Toolroll ${facts.updates.current} · ${latest.version} is available` : `Toolroll ${facts.updates.current}`;
|
|
84
70
|
return [facts.backup?.failed ? "The last backup failed" : null, version, "backups, storage, retention, monitoring"].filter(Boolean).join(" · ");
|
|
85
71
|
}
|
|
86
|
-
/** The overview: what waits on this person, then one row per group with its state. Viewers see the groups they can open. */
|
|
87
|
-
/**
|
|
88
|
-
* Easy-start C5: local mode, said once. The local owner without a password is offered the one way to more ("Let agents
|
|
89
|
-
* work on their own" → /password/set); a full session of an operator sees it on, and can turn it off (a step-up, confirmed).
|
|
90
|
-
*/
|
|
91
72
|
function localModeSection(facts) {
|
|
92
73
|
const local = facts.local;
|
|
93
74
|
if (local === undefined || local === null)
|
|
@@ -117,10 +98,12 @@ export function settingsHub(facts) {
|
|
|
117
98
|
spend: "Monthly limits and the spend report",
|
|
118
99
|
system: systemWords(facts),
|
|
119
100
|
};
|
|
120
|
-
const shown = SETTINGS_GROUPS.filter(([, slug]) => slug !== "spend" || facts.operator).filter(([, slug]) => slug !== "system" || facts.operator || facts.approver)
|
|
101
|
+
const shown = SETTINGS_GROUPS.filter(([, slug]) => slug !== "spend" || facts.operator).filter(([, slug]) => slug !== "system" || facts.operator || facts.approver)
|
|
102
|
+
.filter(([, slug]) => slug !== "spend" || advancedOn(facts));
|
|
103
|
+
words["advanced"] = advancedWords(facts);
|
|
121
104
|
const panel = needsPanel(items.map((item, index) => ({ title: item.title, text: item.text, action: btn(item.action[0], { variant: index === 0 ? "primary" : "outline", href: item.action[1] }) })));
|
|
122
105
|
return settingsShell({
|
|
123
|
-
group: "hub", title: "Settings",
|
|
106
|
+
group: "hub", title: "Settings", flags: flagsOf(counts),
|
|
124
107
|
body: joinHtml([
|
|
125
108
|
answered(facts),
|
|
126
109
|
panel,
|
|
@@ -129,14 +112,12 @@ export function settingsHub(facts) {
|
|
|
129
112
|
]),
|
|
130
113
|
});
|
|
131
114
|
}
|
|
132
|
-
/** The hub's old anchors, forwarded to their group (fragments never reach the server). */
|
|
133
115
|
export const HUB_ANCHORS = {
|
|
134
116
|
providers: "/settings/agents#providers", workers: "/settings/agents#workers", email: "/settings/alerts#email", "settings-chat-apps": "/settings/alerts#chat-apps",
|
|
135
117
|
"telegram-token": "/settings/alerts#telegram-token", phone: "/settings/alerts#phone", notifications: "/settings/alerts#notifications",
|
|
136
118
|
updates: "/settings/system#updates", accent: "/settings/general#appearance", appearance: "/settings/general#appearance",
|
|
137
119
|
};
|
|
138
120
|
export const HUB_ANCHOR_SCRIPT = `(function(){var m=${JSON.stringify(HUB_ANCHORS)};var h=decodeURIComponent(location.hash.slice(1));if(Object.prototype.hasOwnProperty.call(m,h))location.replace(m[h]);})();`;
|
|
139
|
-
// ---- General ----------------------------------------------------------------------------------------------------
|
|
140
121
|
const ACCENT_CHOICES = ACCENT_PRESETS.slice(0, 6);
|
|
141
122
|
export function generalGroup(facts, flags) {
|
|
142
123
|
const themeButton = (value, label) => html `<button type="submit" name="theme" value="${value}" aria-pressed="${String(facts.theme === value)}">${label}</button>`;
|
|
@@ -176,9 +157,9 @@ export function generalGroup(facts, flags) {
|
|
|
176
157
|
facts.operator ? formRow("Updates", null, btn("Open updates", { sm: true, variant: "ghost", href: "/settings/updates" }), "inline") : "",
|
|
177
158
|
]),
|
|
178
159
|
});
|
|
179
|
-
|
|
160
|
+
const withPassword = passwordFree(facts) ? [] : [browser, password];
|
|
161
|
+
return settingsShell({ group: "general", title: "General", lead: "How Toolroll looks and behaves in this browser.", flags, body: joinHtml([answered(facts), appearance, ...withPassword, version]) });
|
|
180
162
|
}
|
|
181
|
-
// ---- Agents and models ------------------------------------------------------------------------------------------
|
|
182
163
|
const toneChip = (tone, words) => chip(words, tone === "ok" ? "done" : tone === "warn" ? "failed" : "");
|
|
183
164
|
function providerRecord(one) {
|
|
184
165
|
const form = kitSectionForm({ proof: "provider-key", action: "/settings/provider-key", id: `provider-${one.provider}`, gate: true, hidden: { provider: one.provider }, save: { label: `Save ${one.name}` },
|
|
@@ -214,19 +195,18 @@ export function agentsGroup(facts, flags) {
|
|
|
214
195
|
});
|
|
215
196
|
const links = settingsLinks("In this group", [
|
|
216
197
|
settingsLink({ href: "/settings/models", title: "Models", status: "Which model plans, builds and reviews" }),
|
|
217
|
-
settingsLink({ href: "/settings/lead", title: "
|
|
218
|
-
settingsLink({ href: "/settings/lead/subagents", title: "Subagents", status: "Helpers the lead looks after" }),
|
|
198
|
+
settingsLink({ href: "/settings/lead", title: "Chat", status: "The assistant you chat with" }),
|
|
199
|
+
...(advancedOn(facts) ? [settingsLink({ href: "/settings/lead/subagents", title: "Subagents", status: "Helpers the lead looks after" })] : []),
|
|
219
200
|
settingsLink({ href: "/settings/tools", title: "Tools", status: "What builds can use, per project" }),
|
|
220
|
-
settingsLink({ href: "/settings/skills", title: "Skills", status: "Reusable instructions for agents" }),
|
|
201
|
+
...(advancedOn(facts) ? [settingsLink({ href: "/settings/skills", title: "Skills", status: "Reusable instructions for agents" })] : []),
|
|
221
202
|
settingsLink({ href: "/settings/knowledge", title: "Knowledge", status: "What agents know about each project" }),
|
|
222
|
-
settingsLink({ href: "/settings/learning", title: "Learning", status: "Lessons kept from finished work" }),
|
|
203
|
+
...(advancedOn(facts) ? [settingsLink({ href: "/settings/learning", title: "Learning", status: "Lessons kept from finished work" })] : []),
|
|
223
204
|
]);
|
|
224
205
|
return settingsShell({
|
|
225
206
|
group: "agents", title: "Agents and models", lead: "Which agent does the work, how it’s paid for, and which model plans, builds and reviews.", flags,
|
|
226
207
|
body: joinHtml([answered(facts), providers, facts.workers === null ? "" : workersSection(facts.workers), links]),
|
|
227
208
|
});
|
|
228
209
|
}
|
|
229
|
-
// ---- Chat apps and alerts ---------------------------------------------------------------------------------------
|
|
230
210
|
function chatAppsSection(facts) {
|
|
231
211
|
const configured = facts.messaging?.configured ?? [];
|
|
232
212
|
const receiving = facts.messaging?.channel ?? (configured.length === 1 ? configured[0] : null);
|
|
@@ -290,9 +270,6 @@ function pushSection(facts) {
|
|
|
290
270
|
enrol,
|
|
291
271
|
]) });
|
|
292
272
|
}
|
|
293
|
-
/** Enrolling this device fills the subscription the form posts; it never reads the password beside it. With the kit's
|
|
294
|
-
* section forms (section-forms.ts) it answers their `k-prepare` hook after the password is confirmed, so the post
|
|
295
|
-
* goes exactly once under the pending guard; without them it holds the plain submit, then posts. */
|
|
296
273
|
export function pushScriptOf(facts) {
|
|
297
274
|
if (facts.push === null || !facts.push.available)
|
|
298
275
|
return null;
|
|
@@ -403,8 +380,9 @@ export function approvalGroup(view) {
|
|
|
403
380
|
const rules = view.chosen === "" ? settingsSection({ id: "rules", title: "Approval rules", body: note("Add a project to set its approval rules.") })
|
|
404
381
|
: joinHtml([picker, view.rules]);
|
|
405
382
|
const links = settingsLinks("In this group", [
|
|
406
|
-
settingsLink({ href: "/mode", title: "Operating mode", status: view.mode }),
|
|
407
|
-
|
|
383
|
+
...(view.advanced === undefined || view.advanced.on || view.advanced.modeActive ? [settingsLink({ href: "/mode", title: "Operating mode", status: view.mode })] : []),
|
|
384
|
+
...(view.advanced === undefined || view.advanced.on || (view.advanced.policy ?? null) !== null
|
|
385
|
+
? [settingsLink({ href: "/settings/policy", title: "Policy", status: view.advanced?.policy ?? "Limits no task can go past, whatever its mode or approver" })] : []),
|
|
408
386
|
settingsLink({ href: "/caps", title: "Requirements", status: "What builders are missing for waiting work" }),
|
|
409
387
|
settingsLink({ href: "/settings/projects", title: "Network, writes and sandbox", status: "Set for each project" }),
|
|
410
388
|
]);
|
|
@@ -414,7 +392,6 @@ export function approvalGroup(view) {
|
|
|
414
392
|
note(html `<b>Which setting wins:</b> protected work and policy limits always apply; then a project’s operating mode; then these defaults.`), links]),
|
|
415
393
|
});
|
|
416
394
|
}
|
|
417
|
-
// ---- Projects, People and sign-in, System -----------------------------------------------------------------------
|
|
418
395
|
export function projectsGroup(facts, flags) {
|
|
419
396
|
const rows = facts.projects.map(one => settingsLink({ href: `/settings/project?repo=${encodeURIComponent(one.repo)}`, title: one.name, status: html `<span class="k-mono">${one.repo}</span>` }));
|
|
420
397
|
const per = facts.projects.length === 0 ? "" : settingsLinks("For each project", [
|
|
@@ -437,9 +414,11 @@ export function accessGroup(facts, flags) {
|
|
|
437
414
|
const links = [
|
|
438
415
|
settingsLink({ href: "/people", title: "People", status: people === null ? "Your own access" : [accessWords({ ...facts, passwordless: null }), people.invites === 0 ? "no open invites" : plural(people.invites, "open invite", "open invites")].join(" · ") }),
|
|
439
416
|
settingsLink({ href: "/settings/sessions", title: "Sessions and tokens", status: `Signed in on ${plural(facts.access.sessions, "device", "devices")} · ${plural(facts.access.tokens, "API token", "API tokens")}` }),
|
|
440
|
-
...(facts.operator ? [
|
|
441
|
-
settingsLink({ href: "/settings/sign-in", title: "Sign-in with a provider", status: facts.sso === null ? "Not set up: everyone uses a password" : `People sign in with ${facts.sso}` })
|
|
442
|
-
|
|
417
|
+
...(facts.operator && (advancedOn(facts) || facts.sso !== null) ? [
|
|
418
|
+
settingsLink({ href: "/settings/sign-in", title: "Sign-in with a provider", status: facts.sso === null ? "Not set up: everyone uses a password" : `People sign in with ${facts.sso}` })
|
|
419
|
+
] : []),
|
|
420
|
+
...(facts.operator && (advancedOn(facts) || facts.passwordless === true) ? [
|
|
421
|
+
settingsLink({ href: "/settings/passwordless", title: "Passwordless", status: facts.passwordless ? "On: signing in is the only password" : "Off: approvals ask for your password" })
|
|
443
422
|
] : []),
|
|
444
423
|
];
|
|
445
424
|
return settingsShell({ group: "access", title: "People and sign-in", lead: "Who can get in, how they sign in, and the ways in they hold.", flags,
|
|
@@ -467,18 +446,17 @@ export function systemGroup(facts, flags) {
|
|
|
467
446
|
settingsLink({ href: "/settings/backups", title: "Backups", status: facts.backup?.words ?? "When and where the database is copied", needs: facts.backup?.failed ? 1 : 0 }),
|
|
468
447
|
settingsLink({ href: "/settings/storage", title: "Storage", status: "Task folders on this computer, and cleaning them up" }),
|
|
469
448
|
settingsLink({ href: "/settings/retention", title: "Retention", status: "How long run logs and chats are kept" }),
|
|
470
|
-
settingsLink({ href: "/settings/monitoring", title: "Monitoring", status: "Send the audit stream and traces to your own systems" }),
|
|
449
|
+
...(advancedOn(facts) ? [settingsLink({ href: "/settings/monitoring", title: "Monitoring", status: "Send the audit stream and traces to your own systems" })] : []),
|
|
471
450
|
settingsLink({ href: "/settings/data", title: "Data export", status: "Everything except secrets, as one download" }),
|
|
472
451
|
settingsLink({ href: "/settings/integrations", title: "Integrations", status: "Which connected services work" }),
|
|
473
|
-
settingsLink({ href: "/fleet", title: "Builders", status: "Every computer that builds, on Agents" }),
|
|
452
|
+
...(advancedOn(facts) ? [settingsLink({ href: "/fleet", title: "Builders", status: "Every computer that builds, on Agents" })] : []),
|
|
474
453
|
]) : settingsLinks("In this group", [
|
|
475
454
|
settingsLink({ href: "/settings/integrations", title: "Integrations", status: "Which connected services work" }),
|
|
476
|
-
settingsLink({ href: "/fleet", title: "Builders", status: "Every computer that builds" }),
|
|
455
|
+
...(advancedOn(facts) ? [settingsLink({ href: "/fleet", title: "Builders", status: "Every computer that builds" })] : []),
|
|
477
456
|
]);
|
|
478
457
|
return settingsShell({ group: "system", title: "System", lead: "This Toolroll’s version, backups, storage and what leaves this computer.", flags,
|
|
479
458
|
body: joinHtml([answered(facts), facts.updates === null ? "" : updatesSection(facts.updates), links]) });
|
|
480
459
|
}
|
|
481
|
-
/** One group page by its slug. */
|
|
482
460
|
export function settingsGroupPage(group, facts) {
|
|
483
461
|
const flags = flagsOf(needsByGroup(settingsNeeds(facts)));
|
|
484
462
|
switch (group) {
|
|
@@ -489,17 +467,15 @@ export function settingsGroupPage(group, facts) {
|
|
|
489
467
|
case "projects": return projectsGroup(facts, flags);
|
|
490
468
|
case "access": return accessGroup(facts, flags);
|
|
491
469
|
case "system": return systemGroup(facts, flags);
|
|
470
|
+
case "advanced": return advancedGroup(facts, flags);
|
|
492
471
|
case "approval": return settingsHub(facts);
|
|
493
472
|
}
|
|
494
473
|
}
|
|
495
474
|
export const groupTitle = (group) => group === "hub" ? "Settings" : groupLabel(group);
|
|
496
475
|
export { groupHref };
|
|
497
|
-
/** A settings sub-page in the frame: the group's breadcrumb, the page's title, its old body inside. */
|
|
498
476
|
export function settingsSubPage(group, title, body, options = {}) {
|
|
499
477
|
return settingsShell({ group, title, sub: true, body, ...(options.lead === undefined ? {} : { lead: options.lead }), ...(options.flags === undefined ? {} : { flags: options.flags }) });
|
|
500
478
|
}
|
|
501
|
-
/** /mode: the mode a project runs under now, and (for an approver) the choices to sign a new one. Reading the terms is
|
|
502
|
-
* the next page (/mode/confirm), where the password signs exactly what it shows. */
|
|
503
479
|
export function modePageHtml(view) {
|
|
504
480
|
const now = settingsSection({ id: "mode-now", title: "Now",
|
|
505
481
|
body: view.live === null
|
|
@@ -535,7 +511,6 @@ export function modePageHtml(view) {
|
|
|
535
511
|
const answer = view.problem ? notice(sentence(view.problem)) : view.said ? infoLine(sentence(view.said)) : "";
|
|
536
512
|
return settingsSubPage("approval", "Operating mode", joinHtml([answer, now, sign]), { lead: "A signed, time-limited mode that lets more run without asking. It ends on its own. Scope changes, agent questions and requested revisions still wait for you." });
|
|
537
513
|
}
|
|
538
|
-
/** /mode/confirm: every resolved term in words; the password signs exactly this digest (a changed form is refused). */
|
|
539
514
|
export function modeCeremonyHtml(view) {
|
|
540
515
|
return settingsSubPage("approval", `Sign the ${view.name} mode`, joinHtml([
|
|
541
516
|
settingsSection({ id: "mode-terms", title: `What you sign for ${view.project}`,
|
|
@@ -554,8 +529,6 @@ function accessFields(id, projects, selected) {
|
|
|
554
529
|
: html `<fieldset class="k-sopts"><legend class="k-sr">Projects</legend>${projects.map((one, at) => html `<label class="k-sopt" for="${id}-p${at}"><input type="checkbox" id="${id}-p${at}" name="projects" value="${one.repo}"${selected?.includes(one.repo) ? html ` checked` : ""}><span><b>${one.name}</b></span></label>`)}</fieldset>`,
|
|
555
530
|
]);
|
|
556
531
|
}
|
|
557
|
-
/** People: who can get in, what each can do and where, open invites, and inviting someone. Inviting and widening
|
|
558
|
-
* access always ask for the password typed now; removing someone or cancelling an invite is a step-up. */
|
|
559
532
|
export function peopleHtml(view) {
|
|
560
533
|
const answer = view.problem ? notice(sentence(view.problem)) : view.said ? infoLine(sentence(view.said)) : "";
|
|
561
534
|
const people = settingsSection({ id: "people", title: "People", state: html ` <span class="k-count">${view.people.filter(one => one.revoked === null).length}</span>`,
|
|
@@ -597,7 +570,6 @@ export function peopleHtml(view) {
|
|
|
597
570
|
note(html `To revoke one, run <code class="k-mono">toolroll coordinator revoke <cid> --as you</code> on this computer.`)]) });
|
|
598
571
|
return settingsSubPage("access", "People", joinHtml([answer, people, invites, filers]), { lead: "Who can see and approve work in this Toolroll." });
|
|
599
572
|
}
|
|
600
|
-
/** People for someone limited to some projects: their own access, in words. */
|
|
601
573
|
export function ownAccessHtml(view) {
|
|
602
574
|
return settingsSubPage("access", "Your access", joinHtml([
|
|
603
575
|
settingsSection({ id: "your-access", title: `${view.name} · ${roleWords(view.approver)}`, lead: view.approver ? "You can create, manage and approve work in these projects." : "You can read work in these projects.",
|
|
@@ -605,7 +577,6 @@ export function ownAccessHtml(view) {
|
|
|
605
577
|
html `<div class="k-acts">${btn("Your activity", { sm: true, href: view.activity })}</div>`]) }),
|
|
606
578
|
]));
|
|
607
579
|
}
|
|
608
|
-
/** The invite link, once, on a page with no script: selectable text, what it lets them do, and where to cancel it. */
|
|
609
580
|
export function inviteLinkHtml(view) {
|
|
610
581
|
return settingsSubPage("access", "Invite link", joinHtml([
|
|
611
582
|
settingsSection({ id: "invite-link", title: "Shown once, so copy it now",
|
|
@@ -614,9 +585,6 @@ export function inviteLinkHtml(view) {
|
|
|
614
585
|
html `<div class="k-acts">${btn("Back to People", { sm: true, href: "/people" })}</div>`]) }),
|
|
615
586
|
]));
|
|
616
587
|
}
|
|
617
|
-
// ---- Passwordless (/settings/passwordless) ----------------------------------------------------------------------
|
|
618
|
-
/** The switch and the trade in plain words. Turning it on is a way in: it always asks for the password typed now.
|
|
619
|
-
* Turning it off is one click. */
|
|
620
588
|
export function passwordlessHtml(view) {
|
|
621
589
|
const answer = view.problem ? notice(sentence(view.problem)) : view.said ? infoLine(sentence(view.said)) : "";
|
|
622
590
|
const control = view.on
|
|
@@ -630,9 +598,28 @@ export function passwordlessHtml(view) {
|
|
|
630
598
|
body: joinHtml([note(view.trade), control]) }),
|
|
631
599
|
]), { lead: "Sign in once; most approvals then need no password." });
|
|
632
600
|
}
|
|
633
|
-
/** Which project a per-project settings page shows: a GET form (an address, not a save). */
|
|
634
601
|
export function projectPicker(action, projects, chosen) {
|
|
635
602
|
if (projects.length < 2)
|
|
636
603
|
return html ``;
|
|
637
604
|
return html `<form method="get" action="${action}" class="k-acts k-picker">${select({ name: "repo", label: "Project", current: chosen, items: projects.map(one => [one.repo, one.name]) })}${btn("Show", { sm: true, type: "submit" })}</form>`;
|
|
638
605
|
}
|
|
606
|
+
function passwordFree(facts) {
|
|
607
|
+
return facts.local?.owner === true && !facts.local.passwordSet;
|
|
608
|
+
}
|
|
609
|
+
function advancedOn(facts) { return facts.advanced === undefined || facts.advanced.on; }
|
|
610
|
+
function advancedWords(facts) {
|
|
611
|
+
return advancedOn(facts) ? "On: every page shows in the menus" : "Off: menus show only the main steps";
|
|
612
|
+
}
|
|
613
|
+
export function advancedGroup(facts, flags) {
|
|
614
|
+
const on = advancedOn(facts);
|
|
615
|
+
const change = facts.advanced?.canChange === true
|
|
616
|
+
? postForm("/settings/advanced", btn(on ? "Turn off" : "Turn on", { sm: true, type: "submit" }), { hidden: { advanced: on ? "off" : "on" } })
|
|
617
|
+
: html ``;
|
|
618
|
+
const toggle = settingsSection({ id: "show-advanced", title: "Show advanced features", state: on ? " · on" : " · off", right: change,
|
|
619
|
+
lead: "Flows, other computers, spend limits, operating modes and the rest, in your menus. They keep working either way, and each opens from below.",
|
|
620
|
+
body: html `` });
|
|
621
|
+
const pages = ADVANCED_PAGES.filter(one => one.operator !== true || facts.operator)
|
|
622
|
+
.map(one => settingsLink({ href: one.href, title: one.title, status: one.words }));
|
|
623
|
+
return settingsShell({ group: "advanced", title: "Advanced", lead: "Everything beyond filing, approving and accepting work.", flags,
|
|
624
|
+
body: joinHtml([answered(facts), toggle, settingsLinks("Advanced pages", pages)]) });
|
|
625
|
+
}
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The settings kit's one script (docs/plans/settings-revamp.md §4), shipped as a page's functional script beside kit
|
|
3
|
-
* forms (settings-kit.ts). Without it every kit form works as today: the proof field shows inline and Save posts.
|
|
4
|
-
*
|
|
5
|
-
* With it, a kit form that asks for a proof:
|
|
6
|
-
* - moves its server-written proof field into the `<dialog>` inside the same form (the field never leaves the form);
|
|
7
|
-
* - opens the dialog on submit instead of posting, remembering the pressed button;
|
|
8
|
-
* - Confirm (its button, or Enter in the field) posts the form with that button (`requestSubmit(submitter)`, after the
|
|
9
|
-
* submit event that asked has finished), so its name=value and every hidden term go along unchanged; Cancel (or
|
|
10
|
-
* Escape) closes it and posts nothing, and focus returns to the button;
|
|
11
|
-
* - once a kit form posts, it is pending: further submits are dropped and its Save and Confirm are disabled (after the
|
|
12
|
-
* post has taken their values), until the page is shown again or the post was cancelled — never on a timer;
|
|
13
|
-
* - asks for nothing when the proof was left out (Passwordless) — there is no dialog then — and shows the
|
|
14
|
-
* identity-provider link when the sign-in swapped the field.
|
|
15
|
-
* Each section's Save bar names what changed. The script never reads or sets a field's value except to check that a
|
|
16
|
-
* required proof isn't empty; the server still proves everything.
|
|
17
|
-
*/
|
|
18
1
|
export const SETTINGS_KIT_SCRIPT = `(function(){
|
|
19
2
|
if(window.__soKit)return;window.__soKit=1;
|
|
20
3
|
var d=document;d.documentElement.classList.add("kit-js");
|
|
@@ -59,8 +42,6 @@ f.__kitChanged=f.__kitChanged||[];var name=label(t);if(name&&f.__kitChanged.inde
|
|
|
59
42
|
bar.setAttribute("data-changed","");state.textContent="Changed: "+f.__kitChanged.join(", ");}
|
|
60
43
|
d.addEventListener("input",changed);d.addEventListener("change",changed);
|
|
61
44
|
})();`;
|
|
62
|
-
/** The pages that wear the settings frame: one column, no Crew sheet, a breadcrumb under Settings. Here (not in
|
|
63
|
-
* settings-kit.ts) so the browser bundle reads it without the server's form contracts. */
|
|
64
45
|
export function isSettingsFrame(pathname) {
|
|
65
46
|
return pathname === "/settings" || pathname.startsWith("/settings/") || pathname === "/setup" || pathname.startsWith("/setup/")
|
|
66
47
|
|| pathname === "/people" || pathname === "/mode" || pathname === "/control" || pathname === "/spend";
|
package/dist/settings-kit.js
CHANGED
|
@@ -1,25 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The settings kit (docs/plans/settings-revamp.md §4): the frame's breadcrumb, and the pieces every settings page is
|
|
3
|
-
* rebuilt from — a section, its own sticky Save, the step-up dialog drawn from the action's own proof contract
|
|
4
|
-
* (settings-proofs.ts), field errors, secret inputs and choice groups. Server-rendered HTML that works without
|
|
5
|
-
* JavaScript; settings-kit-script.ts only turns the inline proof field into a dialog.
|
|
6
|
-
*
|
|
7
|
-
* Rules the helpers keep (and settings-kit.test.ts pins):
|
|
8
|
-
* - the proof field is written into the form's own server HTML, named as its handler reads it, labelled, and
|
|
9
|
-
* `current-password`; so sensitivity (serve.ts sendScreen) and the identity-provider swap (ssoStepUps) still see it;
|
|
10
|
-
* - a step-up field renders through `reauth`, so Passwordless leaves it out exactly as today; a credential or typed
|
|
11
|
-
* password field always renders;
|
|
12
|
-
* - a CSRF-only action renders no proof field and no dialog;
|
|
13
|
-
* - nothing here ever sets `value` on a proof or secret field;
|
|
14
|
-
* - handlers never read any of this: it only draws.
|
|
15
|
-
*/
|
|
16
1
|
import { attributes, html, htmlString, joinHtml, postForm, reauth, replaceMarkup } from "./html.js";
|
|
17
2
|
import { isSettingsFrame } from "./settings-kit-script.js";
|
|
18
3
|
import { requestContext } from "./server/request-context.js";
|
|
19
4
|
import { contractReads, PROOF_INVENTORY, proofRow } from "./settings-proofs.js";
|
|
20
5
|
export { isSettingsFrame };
|
|
21
6
|
const ENTITIES = { amp: "&", lt: "<", gt: ">", quot: '"', "#39": "'", "#x27": "'", nbsp: " " };
|
|
22
|
-
/** The text of a page's first h1 (tags dropped, the common entities read), or null. */
|
|
23
7
|
export function headingText(page) {
|
|
24
8
|
const found = /<h1\b[^>]*>([\s\S]*?)<\/h1>/i.exec(page);
|
|
25
9
|
if (found === null)
|
|
@@ -27,11 +11,9 @@ export function headingText(page) {
|
|
|
27
11
|
const text = found[1].replace(/<[^>]*>/g, "").replace(/&(amp|lt|gt|quot|#39|#x27|nbsp);/g, (_whole, name) => ENTITIES[name] ?? "").replace(/\s+/g, " ").trim();
|
|
28
12
|
return text === "" ? null : text.slice(0, 80);
|
|
29
13
|
}
|
|
30
|
-
/** The breadcrumb for a settings-frame page: "Settings / <this page>", or nothing on the hub and outside the frame. */
|
|
31
14
|
export function settingsCrumbs(pathname, title, page) {
|
|
32
15
|
if (!isSettingsFrame(pathname) || pathname === "/settings")
|
|
33
16
|
return undefined;
|
|
34
|
-
// A page in the revamp kit's Settings frame (server/kit.ts settingsShell) names its own trail: Settings, its group, itself.
|
|
35
17
|
const kit = /<nav class="k-tb-ctx k-crumbs" aria-label="Breadcrumb">([\s\S]*?)<\/nav>/.exec(page);
|
|
36
18
|
if (kit !== null) {
|
|
37
19
|
const trail = [{ label: "Settings", href: "/settings" }];
|
|
@@ -45,27 +27,19 @@ export function settingsCrumbs(pathname, title, page) {
|
|
|
45
27
|
const name = headingText(page) ?? (title.charAt(0).toUpperCase() + title.slice(1));
|
|
46
28
|
return [{ label: "Settings", href: "/settings" }, { label: name, href: null }];
|
|
47
29
|
}
|
|
48
|
-
/** The project the sidebar's picker names: the session's saved selection while this person may still see it, else
|
|
49
|
-
* the page's own effective project, else none — checked against the visible project list, so a selection that
|
|
50
|
-
* outlived the ceiling is never sent to the page. */
|
|
51
30
|
export function openProjectFor(saved, effective, visible) {
|
|
52
31
|
return [saved, effective ?? null].find((path) => path !== null && visible.some(one => one.path === path)) ?? null;
|
|
53
32
|
}
|
|
54
|
-
/** The breadcrumb as server HTML (the page before scripts, and without them). */
|
|
55
33
|
export function crumbsHtml(crumbs) {
|
|
56
34
|
return html `<nav class="kit-crumbs" aria-label="Breadcrumb"><ol>${crumbs.map(one => one.href === null
|
|
57
35
|
? html `<li aria-current="page">${one.label}</li>`
|
|
58
36
|
: html `<li><a href="${one.href}">${one.label}</a></li>`)}</ol></nav>`;
|
|
59
37
|
}
|
|
60
|
-
// ---- fields --------------------------------------------------------------------------------------------------------
|
|
61
|
-
/** The password-manager opt-outs every secret input carries (a service's key is not the person's sign-in). */
|
|
62
38
|
export const SECRET_OPT_OUTS = { "data-1p-ignore": true, "data-lpignore": "true", "data-bwignore": true, "data-form-type": "other" };
|
|
63
39
|
const errorId = (id) => `${id}-error`;
|
|
64
|
-
/** A field's message under it: tied to the field with aria-describedby, announced, and the field focused. */
|
|
65
40
|
export function fieldError(id, message) {
|
|
66
41
|
return html `<p class="kit-field-error" id="${errorId(id)}" role="alert">${message}</p>`;
|
|
67
42
|
}
|
|
68
|
-
/** A labelled text field; with an error it is aria-invalid, names its message and takes focus. */
|
|
69
43
|
export function textField(field) {
|
|
70
44
|
const hint = field.hint === undefined ? null : `${field.id}-hint`;
|
|
71
45
|
const described = [hint, field.error ? errorId(field.id) : null].filter(Boolean).join(" ");
|
|
@@ -75,8 +49,6 @@ ${field.hint === undefined ? "" : html `<p class="kit-hint" id="${hint}">${field
|
|
|
75
49
|
"aria-invalid": field.error ? "true" : null, "aria-describedby": described === "" ? null : described, autofocus: field.error ? true : null })}>\
|
|
76
50
|
${field.error ? fieldError(field.id, field.error) : ""}</div>`;
|
|
77
51
|
}
|
|
78
|
-
/** A secret that is not the person's own password (an API key, a bot token, a client secret): masked, never given a
|
|
79
|
-
* value, kept out of password managers. The field name is the handler's own wire name. */
|
|
80
52
|
export function secretInput(field) {
|
|
81
53
|
const described = [field.hint === undefined ? null : `${field.id}-hint`, field.error ? errorId(field.id) : null].filter(Boolean).join(" ");
|
|
82
54
|
return html `<div class="kit-field"><label for="${field.id}">${field.label}</label>\
|
|
@@ -85,7 +57,6 @@ ${field.hint === undefined ? "" : html `<p class="kit-hint" id="${field.id}-hint
|
|
|
85
57
|
required: field.required === true, "aria-invalid": field.error ? "true" : null, "aria-describedby": described === "" ? null : described, autofocus: field.error ? true : null })}>\
|
|
86
58
|
${field.error ? fieldError(field.id, field.error) : ""}</div>`;
|
|
87
59
|
}
|
|
88
|
-
/** A choice group: a fieldset with its legend, each option's detail tied to it. Nothing saves until Save. */
|
|
89
60
|
export function choiceGroup(group) {
|
|
90
61
|
return html `<fieldset class="kit-choices"${group.error ? html ` aria-describedby="${errorId(group.id)}"` : ""}><legend>${group.legend}</legend>\
|
|
91
62
|
${group.options.map((one, at) => {
|
|
@@ -94,12 +65,7 @@ ${group.options.map((one, at) => {
|
|
|
94
65
|
<span>${one.label}</span>${one.detail === undefined ? "" : html `<span class="kit-choice-detail" id="${id}-detail">${one.detail}</span>`}</label>`;
|
|
95
66
|
})}${group.error ? fieldError(group.id, group.error) : ""}</fieldset>`;
|
|
96
67
|
}
|
|
97
|
-
// ---- proof ---------------------------------------------------------------------------------------------------------
|
|
98
|
-
/** Proofs that only a password typed now satisfies: no Passwordless session and no identity-provider re-check. */
|
|
99
68
|
export const typedOnly = (row) => row.proof === "typed-password" || row.proof === "typed-now-operator";
|
|
100
|
-
/** The proof field a row's handler reads, as today's forms write it; empty for a CSRF-only row. A step-up field goes
|
|
101
|
-
* through `reauth` (Passwordless leaves it out); a credential or typed field always shows. A typed-only field carries
|
|
102
|
-
* `data-so-typed`, so the identity-provider swap leaves it a real password field (keepTypedFields). Never a value. */
|
|
103
69
|
export function proofField(row, options = {}) {
|
|
104
70
|
if (row.field === null || row.proof === "none")
|
|
105
71
|
return html ``;
|
|
@@ -108,7 +74,6 @@ export function proofField(row, options = {}) {
|
|
|
108
74
|
const label = options.label ?? "Your Toolroll password";
|
|
109
75
|
if (typedOnly(row))
|
|
110
76
|
return html `<label>${label}<input type="password" name="${row.field}" data-so-typed autocomplete="current-password" required></label>`;
|
|
111
|
-
// A row that needs its proof only for some posts (its `when`) leaves the field optional: the handler decides.
|
|
112
77
|
const field = options.optional === true && row.when !== undefined
|
|
113
78
|
? html `<label>${label}<input type="password" name="${row.field}" autocomplete="current-password"></label>`
|
|
114
79
|
: html `<label>${label}<input type="password" name="${row.field}" autocomplete="current-password" required></label>`;
|
|
@@ -116,18 +81,11 @@ export function proofField(row, options = {}) {
|
|
|
116
81
|
}
|
|
117
82
|
const TYPED_FIELD = /<input type="password" name="([a-z-]+)" data-so-typed autocomplete="current-password" required>/g;
|
|
118
83
|
const HELD_FIELD = /<input type="password" name="([a-z-]+)" data-so-typed data-so-typed-held required>/g;
|
|
119
|
-
/**
|
|
120
|
-
* The identity-provider swap (render-people.ts ssoStepUps) with typed-only proof fields kept: those handlers take only
|
|
121
|
-
* a password typed now, so the field must stay a real password input. The field is held out of the swap by its
|
|
122
|
-
* marker and put back as it was. Every other step-up field is swapped exactly as before.
|
|
123
|
-
*/
|
|
124
84
|
export function keepTypedFields(page, swap, ...rest) {
|
|
125
85
|
const held = replaceMarkup(page, TYPED_FIELD, (_whole, name) => html `<input type="password" name="${name}" data-so-typed data-so-typed-held required>`);
|
|
126
86
|
return replaceMarkup(swap(held, ...rest), HELD_FIELD, (_whole, name) => html `<input type="password" name="${name}" data-so-typed autocomplete="current-password" required>`);
|
|
127
87
|
}
|
|
128
|
-
/** The rows that share this row's route: one handler's variants. */
|
|
129
88
|
const variantsOf = (row) => PROOF_INVENTORY.filter(one => one !== row && one.routes.some(route => row.routes.includes(route)));
|
|
130
|
-
/** How the dialog explains a proof that Passwordless doesn't cover, in words; null where nothing needs saying. */
|
|
131
89
|
export function proofNote(row) {
|
|
132
90
|
if (row.proof === "credential")
|
|
133
91
|
return "This changes a way in, so it always takes your password.";
|
|
@@ -137,13 +95,6 @@ export function proofNote(row) {
|
|
|
137
95
|
return "Widening this takes an instance operator's password, typed now.";
|
|
138
96
|
return null;
|
|
139
97
|
}
|
|
140
|
-
/**
|
|
141
|
-
* A section's form, posted to its existing route with its existing fields, and its sticky Save. When the row needs a
|
|
142
|
-
* proof, the proof field sits in the form's own HTML — inline (as today, which is how it works without JavaScript) and
|
|
143
|
-
* moved into a `<dialog>` inside the same form by settings-kit-script.ts, which opens it on submit, keeps the pressed
|
|
144
|
-
* button, and posts nothing on Cancel. The server still proves everything.
|
|
145
|
-
*/
|
|
146
|
-
/** The row for a form posting to `action` with these hidden terms; throws on a form the row doesn't describe. */
|
|
147
98
|
function rowForForm(proof, action, hidden) {
|
|
148
99
|
const row = proofRow(proof);
|
|
149
100
|
if (!row.routes.includes(action))
|
|
@@ -151,8 +102,6 @@ function rowForForm(proof, action, hidden) {
|
|
|
151
102
|
for (const name of Object.keys(hidden))
|
|
152
103
|
if (row.field === name || row.secrets.includes(name))
|
|
153
104
|
throw new Error(`${row.id}: ${name} is never a hidden value`);
|
|
154
|
-
// The exact variant: its own selector must be in the hidden terms, and no other variant's may be, unless both are
|
|
155
|
-
// credential acts: two of those on one form ask the strongest proof there is, so nothing gets weaker.
|
|
156
105
|
if (row.select !== undefined && String(hidden[row.select.field] ?? "") !== row.select.value)
|
|
157
106
|
throw new Error(`${row.id} posts ${row.select.field}=${row.select.value}`);
|
|
158
107
|
for (const other of variantsOf(row))
|
|
@@ -179,15 +128,12 @@ ${note === null ? "" : html `<p class="kit-hint">${note}</p>`}<div class="kit-di
|
|
|
179
128
|
dialog,
|
|
180
129
|
]), { hidden, attrs: { id: form.id, class: "kit-form", "data-kit-form": row.id, "data-kit-step-up": asks ? "" : null } });
|
|
181
130
|
}
|
|
182
|
-
/** A section: a heading, a one-line state, a problem the handler sent back (role=alert), then its form. */
|
|
183
131
|
export function kitSection(section) {
|
|
184
132
|
return html `<section class="kit-section" id="${section.id}" aria-labelledby="${section.id}-title"><h2 id="${section.id}-title">${section.title}</h2>\
|
|
185
133
|
${section.state === undefined ? "" : html `<p class="kit-state">${section.state}</p>`}\
|
|
186
134
|
${section.problem ? html `<p class="kit-problem" role="alert">${section.problem}</p>` : ""}\
|
|
187
135
|
${section.said ? html `<p class="kit-said" role="status">${section.said}</p>` : ""}${section.body}</section>`;
|
|
188
136
|
}
|
|
189
|
-
/** The kit's look: one 760px column, sections with no nested wells, the sticky Save, the dialog. The needs-you colour
|
|
190
|
-
* falls back to the warning token until S5 lands `--so-needs-you`. */
|
|
191
137
|
export const SETTINGS_KIT_CSS = ":root{--so-settings-width:760px}" +
|
|
192
138
|
".kit-crumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0;padding:0;list-style:none;font-size:14px;color:var(--so-muted)}" +
|
|
193
139
|
".kit-crumbs li+li::before{content:'/';margin-right:6px;color:var(--so-muted)}.kit-crumbs a{color:var(--so-muted);text-decoration:none}.kit-crumbs a:hover{color:var(--so-ink);text-decoration:underline}" +
|
|
@@ -205,13 +151,6 @@ export const SETTINGS_KIT_CSS = ":root{--so-settings-width:760px}" +
|
|
|
205
151
|
".kit-dialog::backdrop{background:rgb(0 0 0 / .35)}.kit-dialog h2{margin:0 0 6px;font-size:17px}.kit-dialog-slot .kit-proof{display:block}" +
|
|
206
152
|
".kit-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin:16px 0 0}" +
|
|
207
153
|
"@media (max-width:900px){.kit-save-bar button,.kit-dialog-actions button,.kit-crumbs a{min-height:44px}.kit-crumbs a{display:inline-flex;align-items:center}}";
|
|
208
|
-
/**
|
|
209
|
-
* A settings section's form in the revamp kit's look, posted to its existing route with its existing fields and
|
|
210
|
-
* proof. Without the kit's script it is a plain form: the proof field (when the row asks for one) shows in place and
|
|
211
|
-
* Save posts. With it (src/browser/kit/behavior.ts, section forms): Save appears once something changed, the proof is
|
|
212
|
-
* asked in a password popover only when the rules need it, one validated snapshot is posted, a second press does
|
|
213
|
-
* nothing while one is pending, and a refusal shows next to Save with the edits kept. The server proves everything.
|
|
214
|
-
*/
|
|
215
154
|
export function kitSectionForm(form) {
|
|
216
155
|
const hidden = form.hidden ?? {};
|
|
217
156
|
const row = rowForForm(form.proof, form.action, hidden);
|
|
@@ -234,8 +173,6 @@ export function kitSectionForm(form) {
|
|
|
234
173
|
"data-k-confirm": form.confirm ?? row.action, "data-k-note": note,
|
|
235
174
|
} });
|
|
236
175
|
}
|
|
237
|
-
/** Whether this request is the page again after a save of form `id` couldn't be confirmed (section-forms.ts asks for it
|
|
238
|
-
* with ?unconfirmed=<id>). It only picks which of this page's own forms shows the fixed note; the value is never drawn. */
|
|
239
176
|
function unconfirmedHere(id) {
|
|
240
177
|
const at = requestContext.getStore()?.returnTo;
|
|
241
178
|
if (at === undefined)
|
package/dist/settings-proofs.js
CHANGED
|
@@ -1,29 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The settings proof inventory (docs/plans/settings-revamp.md §4): for every settings action, the proof its handler
|
|
3
|
-
* already asks for, as data. Only rendering code reads it (settings-kit.ts draws the step-up dialog from it); no
|
|
4
|
-
* handler does, and nothing here changes what a handler proves. `src/settings-kit.test.ts` pins every row against the
|
|
5
|
-
* form contracts (console-api.ts), the route table, and — for one row of each kind — the handler itself over HTTP.
|
|
6
|
-
*
|
|
7
|
-
* Proof kinds, as the handlers implement them (scope.ts, server/guards.ts):
|
|
8
|
-
* - `none`: the session and the form token (CSRF) only.
|
|
9
|
-
* - `step-up`: `authenticateApprover` — a password typed now; an empty field stands in under Passwordless (the
|
|
10
|
-
* person's own live browser session) and for a one-use identity-provider re-check.
|
|
11
|
-
* - `credential`: `authenticateCredential` — a password typed now, or a one-use identity-provider re-check. Passwordless
|
|
12
|
-
* never covers it.
|
|
13
|
-
* - `typed-password`: the handler checks the typed password itself (`authenticateAccount`, or an empty field refused
|
|
14
|
-
* before the check). Neither Passwordless nor an identity-provider re-check stands in.
|
|
15
|
-
* - `typed-now-operator`: a password typed now by an instance operator (widening check access); not even a re-check.
|
|
16
|
-
*/
|
|
17
1
|
import { CONSOLE_FORMS } from "./contracts/console-api.js";
|
|
18
2
|
const ACCEPT = { passwordless: "accepted", sso: "accepted" };
|
|
19
3
|
const CREDENTIAL = { passwordless: "refused", sso: "accepted" };
|
|
20
4
|
const TYPED = { passwordless: "refused", sso: "refused" };
|
|
21
5
|
const NONE = { passwordless: "n/a", sso: "n/a" };
|
|
22
|
-
/** /mode/sign re-derives the digest from the posted terms, so every one rides back. */
|
|
23
6
|
const MODE_TERMS = ["nonce", "digest", "expiry", "name", "days", "publication", "auto-approve", "plan-auto", "chat-approve", "repair-auto"];
|
|
24
7
|
const CHAT_APPS = [["slack", "Slack", "slack", ["app-token", "bot-token"]], ["teams", "Teams", "teams", ["secret"]], ["discord", "Discord", "discord", ["bot-token"]]];
|
|
25
8
|
export const PROOF_INVENTORY = [
|
|
26
|
-
// CSRF only.
|
|
27
9
|
{ id: "quality-default", action: "Set the default quality for new tasks", routes: ["/settings/quality-default"], form: "qualityDefault", field: null, proof: "none", ...NONE, role: "any", secrets: [], terms: [] },
|
|
28
10
|
{ id: "notifications", action: "Choose what reaches you", routes: ["/settings/notifications"], form: "notifications", field: null, proof: "none", ...NONE, role: "any", secrets: [], terms: [] },
|
|
29
11
|
{ id: "notifications-mute", action: "Mute a project", routes: ["/settings/notifications/mute"], form: "notificationsMute", field: null, proof: "none", ...NONE, role: "any", secrets: [], terms: [] },
|
|
@@ -37,7 +19,6 @@ export const PROOF_INVENTORY = [
|
|
|
37
19
|
{ id: "chat-approval-confirm", action: "Review approving from chat", routes: ["/settings/chat-approval/confirm", "/settings/chat-approval/off"], form: "chatApproval", field: null, proof: "none", ...NONE, role: "approver", secrets: [], terms: [] },
|
|
38
20
|
{ id: "models-rules-off", action: "Turn an earned rule off, stop a trial, say Not now, or turn suggestions off", routes: ["/settings/models/turn-off", "/settings/models/not-now", "/settings/models/suggest-off", "/settings/models/stop"], form: "modelsRules", field: null, proof: "none", ...NONE, role: "operator", secrets: [], terms: [] },
|
|
39
21
|
...CHAT_APPS.map(([app, name, form]) => ({ id: `${app}-alerts`, action: `Send alerts to ${name}`, routes: [`/settings/${app}/alerts`], form, field: null, proof: "none", ...NONE, role: "approver", secrets: [], terms: [] })),
|
|
40
|
-
// Step-up: a password typed now, the Passwordless session, or a one-use re-check.
|
|
41
22
|
{ id: "permission-default", action: "Start new tasks with Full access", routes: ["/settings/permission-default"], form: "permissionDefault", field: "password", proof: "step-up", when: "only when widening to Full access", ...ACCEPT, role: "any", secrets: [], terms: [] },
|
|
42
23
|
{ id: "spend-budget", action: "Set a monthly limit", routes: ["/spend/budget"], form: "spendBudget", field: "password", proof: "step-up", ...ACCEPT, role: "operator", secrets: [], terms: [] },
|
|
43
24
|
{ id: "models-agent", action: "Change which model does each job", routes: ["/settings/models/agent"], form: "modelsChange", field: "password", proof: "step-up", ...ACCEPT, role: "operator", secrets: [], terms: ["scope", "digest"] },
|
|
@@ -73,7 +54,6 @@ export const PROOF_INVENTORY = [
|
|
|
73
54
|
{ id: "mode-sign", action: "Sign an operating mode", routes: ["/mode/sign"], form: "mode", field: "token", proof: "step-up", ...ACCEPT, role: "any", handlerRole: "an approver of the project", secrets: [], terms: MODE_TERMS },
|
|
74
55
|
{ id: "mode-sign-chat-approve", action: "Sign an operating mode that lets your chat app approve", routes: ["/mode/sign"], select: { field: "chat-approve", value: "1" }, form: "mode", field: "token", proof: "credential", ...CREDENTIAL, role: "any", handlerRole: "an approver of the project", secrets: [], terms: MODE_TERMS },
|
|
75
56
|
{ id: "mode-sign-repair", action: "Sign an operating mode that repairs failed checks by itself", routes: ["/mode/sign"], select: { field: "repair-auto", value: "1" }, form: "mode", field: "token", proof: "credential", ...CREDENTIAL, role: "any", handlerRole: "an approver of the project", secrets: [], terms: MODE_TERMS },
|
|
76
|
-
// Credential acts: a password typed now or a one-use re-check; never Passwordless.
|
|
77
57
|
{ id: "passwordless-on", action: "Turn Passwordless on", routes: ["/settings/passwordless"], form: "passwordless", field: "password", proof: "credential", when: "only to turn it on (off needs nothing)", ...CREDENTIAL, role: "operator", secrets: [], terms: [] },
|
|
78
58
|
{ id: "sign-in", action: "Change sign-in (SSO)", routes: ["/settings/sign-in"], form: "signIn", field: "password", proof: "credential", when: "every action except Test", ...CREDENTIAL, role: "operator", secrets: ["client-secret"], terms: [] },
|
|
79
59
|
{ id: "release-approval", action: "Approve releases automatically", routes: ["/settings/release-approval"], form: "releaseApproval", field: "password", proof: "credential", when: "only to approve automatically (Ask me needs nothing)", ...CREDENTIAL, role: "approver", handlerRole: "an approver of the project", secrets: [], terms: ["repo"] },
|
|
@@ -87,21 +67,18 @@ export const PROOF_INVENTORY = [
|
|
|
87
67
|
{ id: "sessions-token", action: "Make an API token", routes: ["/settings/sessions"], form: "sessions", field: "password", proof: "credential", when: "only to make a token (ending sessions and revoking tokens need nothing)", ...CREDENTIAL, role: "any", secrets: [], notProof: ["token"], terms: [], note: "`token` here names an API token to revoke" },
|
|
88
68
|
{ id: "people-invite", action: "Invite someone", routes: ["/people/invite"], form: "peopleInvite", field: "token", proof: "credential", ...CREDENTIAL, role: "any", handlerRole: "an approver", secrets: [], terms: [] },
|
|
89
69
|
{ id: "people-projects", action: "Change a person's projects", routes: ["/people/projects"], form: "peopleProjects", field: "token", proof: "credential", ...CREDENTIAL, role: "operator", secrets: [], terms: ["name"] },
|
|
90
|
-
// A typed password, checked by the handler itself.
|
|
91
70
|
{ id: "telegram-pair", action: "Pair your phone with Telegram", routes: ["/settings/telegram/pair"], form: "telegramPair", field: "password", proof: "typed-password", ...TYPED, role: "approver", secrets: [], terms: [] },
|
|
92
71
|
{ id: "chat-approval-save", action: "Turn on approving from chat", routes: ["/settings/chat-approval/save"], form: "chatApproval", field: "token", proof: "typed-password", ...TYPED, role: "approver", secrets: [], terms: ["nonce", "digest", "scope", "full-access", "cap-usd"] },
|
|
93
72
|
{ id: "push-subscribe", action: "Get alerts on this device", routes: ["/push/subscribe"], form: "pushSubscribe", field: "token", proof: "typed-password", ...TYPED, role: "any", handlerRole: "an approver", secrets: [], terms: ["endpoint", "p256dh", "auth"] },
|
|
94
73
|
{ id: "lead-config", action: "Set up the lead's model and its own key", routes: ["/chat/config"], form: "chatConfig", field: "token", proof: "typed-password", ...TYPED, role: "any", handlerRole: "an approver", secrets: ["key"], terms: [] },
|
|
95
74
|
];
|
|
96
75
|
const BY_ID = new Map(PROOF_INVENTORY.map(row => [row.id, row]));
|
|
97
|
-
/** One row by id; throws on an unknown id (a rendering bug, never a request's input). */
|
|
98
76
|
export function proofRow(id) {
|
|
99
77
|
const row = BY_ID.get(id);
|
|
100
78
|
if (row === undefined)
|
|
101
79
|
throw new Error(`no proof inventory row ${id}`);
|
|
102
80
|
return row;
|
|
103
81
|
}
|
|
104
|
-
/** Whether the field a row names is one its form contract reads (used by the kit's own guard and the tests). */
|
|
105
82
|
export function contractReads(row, field) {
|
|
106
83
|
return CONSOLE_FORMS[row.form].fields.includes(field);
|
|
107
84
|
}
|