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
package/dist/server/chrome.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/** The console's page chrome: the shell, navigation, page scripts, the stylesheet and shared presentation helpers. */
|
|
2
1
|
import { accentStyle } from "../accent-colors.js";
|
|
2
|
+
import { advancedShownNow } from "../advanced-view.js";
|
|
3
3
|
import { APPROVAL_RULES_CSS } from "../approval-rules-ui.js";
|
|
4
4
|
import { ASSIGNMENT_CSS } from "../assignment-ui.js";
|
|
5
5
|
import { BACKUP_CSS } from "../backup-ui.js";
|
|
@@ -60,54 +60,37 @@ import { attributes, html, joinHtml, postForm, scriptElement, styleElement } fro
|
|
|
60
60
|
import { page, respond } from "./http.js";
|
|
61
61
|
import {} from "./render-pages.js";
|
|
62
62
|
import {} from "./session.js";
|
|
63
|
-
/** The spend line for a 7am reader: whole cents, "runs", the gap still named. */
|
|
64
63
|
export function consoleSpend(summary) {
|
|
65
64
|
if (summary.invoked.length === 0)
|
|
66
65
|
return "nothing — no provider was invoked";
|
|
67
66
|
if (summary.measured.some(run => run.authMode === "subscription"))
|
|
68
67
|
return spendLine(summary);
|
|
69
68
|
const dollars = `$${summary.spend.toFixed(2)}`;
|
|
70
|
-
// The measured count rides the SAME clause as the total (Phase 3 A6):
|
|
71
|
-
// a bare sum over a mixed fleet reads as complete, and is not.
|
|
72
69
|
if (summary.measured.length === summary.invoked.length) {
|
|
73
70
|
return `${dollars} across ${summary.invoked.length} run(s)`;
|
|
74
71
|
}
|
|
75
72
|
return `${dollars} measured across ${summary.measured.length} of ${summary.invoked.length} runs — the rest report tokens only`;
|
|
76
73
|
}
|
|
77
|
-
/** ISO to the minute — "2026-08-12 17:56" — for anywhere a person reads a time. */
|
|
78
74
|
export function when(iso) {
|
|
79
75
|
return iso === null ? "" : iso.slice(0, 16).replace("T", " ");
|
|
80
76
|
}
|
|
81
|
-
/** The same minute as a `<time>`: the full stamp on a desk, "16:39" / "Yesterday 16:39" / "Sep 28" on a phone. */
|
|
82
77
|
export function whenTime(iso) {
|
|
83
78
|
return iso === null ? html `` : whenHtml(iso, when(iso));
|
|
84
79
|
}
|
|
85
|
-
/** Overdue is derived at render — display never writes. */
|
|
86
80
|
export function isOverdue(decision, now) {
|
|
87
81
|
if (decision.state === "expired")
|
|
88
82
|
return true;
|
|
89
83
|
return (decision.state === "open" && decision.deadline !== null && decision.deadline <= now.toISOString());
|
|
90
84
|
}
|
|
91
|
-
|
|
92
|
-
* A refusal that stays inside the console: same shell, a problem banner, and
|
|
93
|
-
* a way back — the error path is the one place a console must not stop
|
|
94
|
-
* being a console. Bearer callers still get plain text; they parse, not read.
|
|
95
|
-
*/
|
|
96
|
-
export function refuse(response, who, status, message, backHref = "/",
|
|
97
|
-
/** The one action that fixes it, in place of "Go back" (easy-start C2: Reconnect). */
|
|
98
|
-
act) {
|
|
85
|
+
export function refuse(response, who, status, message, backHref = "/", act) {
|
|
99
86
|
if (who === null || who.via === "bearer") {
|
|
100
87
|
return respond(response, status, "text/plain; charset=utf-8", message);
|
|
101
88
|
}
|
|
102
|
-
// Kit pages (Wave E): a missing page is plain news, not an error, with two ways on; a refusal says what was refused
|
|
103
|
-
// where it happened and leads back.
|
|
104
89
|
const path = new URL(requestContext.getStore()?.returnTo ?? "/", "http://standing-orders.local").pathname;
|
|
105
90
|
const generic = /^there'?s no page at this address\.?$/i.test(message.replace("\u2019", "'"));
|
|
106
|
-
// The words are the caller's exactly (older callers wrote lower-case fragments; k-refusal capitalises the first letter).
|
|
107
91
|
const body = html `<div class="k-refusal">${status === 404
|
|
108
92
|
? kitNotFound(path, generic ? {} : { title: message, text: "Home has what needs you; Tasks has every task." })
|
|
109
93
|
: kitDoc(kitDocHeader({ title: "Request refused", back: [backHref, "Back"] }), kitNotice(message), kitActs(act === undefined ? kitBtn("Go back", { href: backHref }) : kitBtn(act.label, { href: act.href, variant: "primary" })))}</div>`;
|
|
110
|
-
// A signed-in browser keeps the workspace around it: the same navigation as every page.
|
|
111
94
|
const framed = requestContext.getStore()?.refusal;
|
|
112
95
|
if (framed !== undefined && who.via === "cookie")
|
|
113
96
|
return framed(response, status, body);
|
|
@@ -117,43 +100,13 @@ act) {
|
|
|
117
100
|
foot: act === undefined ? html `<a class="k-link" href="${status === 404 ? "/" : backHref}">${status === 404 ? "Go to Home" : "Go back"}</a>` : html `<a class="k-link" href="${act.href}">${act.label}</a>`,
|
|
118
101
|
})));
|
|
119
102
|
}
|
|
120
|
-
|
|
121
|
-
export const
|
|
122
|
-
/** The demo notice on a phone: one line. */
|
|
123
|
-
export const DEMO_BANNER_SHORT = "Demo: sample projects. Nothing calls a model or spends.";
|
|
124
|
-
/**
|
|
125
|
-
* The Operations Ledger: the design system Alex approved in Figma and the
|
|
126
|
-
* design/ shadcn package, carried as pure CSS on server-rendered HTML.
|
|
127
|
-
* Deliberately not the React library: the console ships zero dependencies
|
|
128
|
-
* and zero page JavaScript under a CSP that forbids scripts, and a look is
|
|
129
|
-
* not worth that posture. The same semantic tokens render both system light
|
|
130
|
-
* and dark themes.
|
|
131
|
-
*/
|
|
132
|
-
/** The shared palette, light and dark (2026-09-27, "Signal"): neutral grey
|
|
133
|
-
* grounds, ink for every act a person can take, and one chart magenta, the
|
|
134
|
-
* colour nautical charts print lights and cautions in, for what needs a
|
|
135
|
-
* person (the needs-you count, the act that resolves a screen, focus and
|
|
136
|
-
* selection). Status keeps its own four hues; magenta never means "failed".
|
|
137
|
-
* The frame is the ground the sidebar sits on; work sits on paper sheets
|
|
138
|
-
* inset into it. Semantic names only; every surface (server pages, the
|
|
139
|
-
* React workspace, the pre-script fallback) reads these.
|
|
140
|
-
*
|
|
141
|
-
* The palette above, in light, dark and pinned themes, is Signal's generated
|
|
142
|
-
* tokens.css (src/design, generated by youiyoux from the toolroll System, src/design/system); the
|
|
143
|
-
* console's own rules follow in console.css, shipped beside this module.
|
|
144
|
-
* Their bytes are the served sheet's (WORKSPACE_STYLE hashes them). The React
|
|
145
|
-
* workspace's stylesheet loads after this one and never redefines a token, so
|
|
146
|
-
* a person's accent (accentHead) still wins over the generated default. */
|
|
103
|
+
export const DEMO_BANNER = `Demo: a scripted chat and sample projects. Nothing calls a model, reaches outside or costs anything. For your own project, run ${START_COMMAND} in its folder.`;
|
|
104
|
+
export const DEMO_BANNER_SHORT = "Demo: sample projects. Nothing calls a model or costs anything.";
|
|
147
105
|
export const STYLE = readFileSync(join(import.meta.dirname, "..", "design", "tokens.css"), "utf8") +
|
|
148
106
|
readFileSync(join(import.meta.dirname, "console.css"), "utf8") +
|
|
149
|
-
// The revamp kit (src/design/KIT.md): k- classes only, after the console's rules, so the kit's markup from
|
|
150
|
-
// server pages (server/kit.ts) and React views (browser/kit/) looks the same everywhere.
|
|
151
107
|
readFileSync(join(import.meta.dirname, "..", "design", "kit.css"), "utf8");
|
|
152
|
-
/** Appearance: a three-way segmented switch, one tap per choice. */
|
|
153
108
|
export const THEME_CONTROLS_CSS = `.task-repo select{width:100%;min-height:2.75rem;font-size:1rem}.task-repo-add{margin:.35rem .1rem .5rem}.task-repo-add a{display:inline-flex;align-items:center;min-height:2.25rem}details.result-request-open.result-request-form>summary{border:0;background:transparent;padding:.5rem 0;min-height:2.75rem;font-weight:600;display:list-item;list-style:revert}details.result-request-open.result-request-form>summary::-webkit-details-marker{display:revert}form.js-autosave button[type=submit]{display:none}.provider-row{border-bottom:1px solid var(--so-line);padding:.35rem 0}.provider-row:first-of-type{border-top:1px solid var(--so-line)}.provider-head{display:flex;align-items:center;gap:.75rem;margin:.4rem 0 0}.provider-status{display:inline-flex;align-items:center;gap:.4rem;color:var(--so-muted);font-size:.875rem}.provider-status i{width:.5rem;height:.5rem;border-radius:50%;background:var(--so-muted)}.provider-status--ok i{background:var(--so-success)}.provider-status--warn i{background:var(--so-attention)}.provider-status--off i{background:transparent;border:1.5px solid var(--so-muted)}details.provider-manage>summary{cursor:pointer;color:var(--so-accent-text);font-size:.875rem;min-height:2.5rem;display:list-item;padding-block:.5rem}.card.props .row{display:grid;gap:.1rem;margin:0 0 .75rem}.card.props .row>.meta{display:block;font-size:.75rem}.card.props .row>.meta::first-letter{text-transform:uppercase}.card.props .row>.mono{font-family:var(--font-sans);font-size:.875rem}.card.props .row>.mono .seal{font-family:var(--font-mono);font-size:.8125rem}details.evidence-files{margin:1rem 0}details.evidence-files>summary{cursor:pointer;min-height:2.75rem;display:list-item;padding-block:.7rem;font-weight:600}details.evidence-files ul{list-style:none;margin:0;padding:0}details.evidence-files li{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-bottom:1px solid var(--so-line)}.result-action .result-feedback-link{display:inline-flex;align-items:center;min-height:2.5rem;padding:.5rem 1rem;border:1px solid var(--so-input-line);border-radius:.5rem;background:var(--so-paper);color:var(--so-ink);font-weight:600;text-decoration:none}@media(hover:hover) and (pointer:fine){.result-action .result-feedback-link:hover{background:var(--so-raised)}}.so-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.verdict{margin:.5rem 0 .75rem}.verdict-chips{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:0}.verdict-chip{display:inline-flex;align-items:center;gap:.3rem;min-height:1.75rem;padding:.2rem .65rem;border-radius:999px;font-size:.8125rem;font-weight:600;background:var(--so-neutral-soft);color:var(--so-neutral-ink)}.verdict-chip svg{width:.9rem;height:.9rem}.verdict-chip--success{background:var(--so-success-soft);color:var(--so-success)}.verdict-chip--danger{background:var(--so-danger-soft);color:var(--so-danger)}.verdict-chip--warning{background:var(--so-neutral-soft);color:var(--so-ink)}.verdict-chip--info{background:var(--so-info-soft);color:var(--so-info)}.verdict-by{margin:.4rem 0 0}details.result-request-open{margin:.5rem 0}details.result-request-open>summary{display:inline-flex;align-items:center;min-height:2.5rem;padding:.5rem 1rem;border:1px solid var(--so-input-line);border-radius:.5rem;background:var(--so-paper);color:var(--so-ink);font-weight:600;cursor:pointer;list-style:none}details.result-request-open>summary::-webkit-details-marker{display:none}details.result-request-open[open]>summary{margin-bottom:.75rem}.settings-tiles{display:grid;gap:1.25rem;margin:0 0 2rem}.settings-tiles h2{margin:0 0 .5rem;font-size:.875rem;font-weight:600;color:var(--so-muted)}.settings-tiles section>div{display:grid;grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));gap:.5rem}.settings-tiles a>span{display:grid;gap:.1rem;min-width:0}.settings-tiles .provider-status{font-weight:400;font-size:.8125rem}.settings-tiles a{display:flex;align-items:center;gap:.6rem;min-height:3rem;padding:.65rem .8rem;border:1px solid var(--so-line);border-radius:.625rem;background:var(--so-paper);color:var(--so-ink);text-decoration:none;font-weight:550;font-size:.875rem}@media(hover:hover) and (pointer:fine){.settings-tiles a:hover{border-color:var(--so-input-line);background:var(--so-raised)}}.settings-tiles a>svg{width:1.1rem;height:1.1rem;flex-shrink:0;color:var(--so-accent-text)}details.settings-more{margin:.25rem 0 1.25rem}details.settings-more>summary{cursor:pointer;min-height:2.75rem;display:list-item;padding-block:.7rem;font-weight:550}details.settings-more>summary .meta{font-weight:400;margin-left:.35rem}.settings-changed{margin-top:-.25rem}.appearance{margin:0 0 28px}.appearance h2{margin:0 0 10px}.theme-switch{display:inline-flex;flex-wrap:nowrap;max-width:100%;gap:4px;padding:4px;margin:0;border:1px solid var(--so-line);border-radius:10px;background:var(--so-raised)}.theme-switch .theme-choice,.so-native-region .theme-switch .theme-choice{flex:1 1 0;width:auto;white-space:nowrap;min-height:40px;padding:8px 16px;border:0;border-radius:7px;background:transparent;color:var(--so-muted);font:inherit;font-weight:550;box-shadow:none;cursor:pointer}@media(hover:hover) and (pointer:fine){.theme-switch .theme-choice:hover{color:var(--so-ink)}}.theme-switch .theme-choice[aria-pressed="true"]{background:var(--so-paper);color:var(--so-ink);box-shadow:0 1px 2px rgb(0 0 0 / .1)}.appearance .meta{margin:8px 0 0}@media(max-width:600px){.theme-switch .theme-choice{min-height:44px}}.update-notes{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;max-height:18rem;overflow:auto}`;
|
|
154
|
-
/** The page CSS this module writes itself (not the imported modules'), for the stylesheet contract tests. */
|
|
155
109
|
export const PAGE_CSS = STYLE + THEME_CONTROLS_CSS;
|
|
156
|
-
/** The Inbox tabs (console v2): a segmented track of real links; the dot marks a tab with something new, on phones only. */
|
|
157
110
|
export const INBOX_TABS_CSS = '.inbox-tabs{display:inline-flex;gap:2px;max-width:100%;overflow-x:auto;margin:4px 0 14px;padding:2px;border-radius:12px;background:var(--so-raised);scrollbar-width:none}' +
|
|
158
111
|
'.inbox-tabs a{position:relative;display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:0 10px;border-radius:8px;color:var(--so-muted);font-size:13px;font-weight:500;text-decoration:none;white-space:nowrap}' +
|
|
159
112
|
'.inbox-tabs a[aria-current="page"]{background:var(--so-paper);color:var(--so-ink);box-shadow:var(--so-pill-shadow)}' +
|
|
@@ -163,37 +116,11 @@ export const INBOX_TABS_CSS = '.inbox-tabs{display:inline-flex;gap:2px;max-width
|
|
|
163
116
|
'.inbox-unread{display:none;position:absolute;top:4px;right:3px;width:6px;height:6px;border-radius:50%;background:var(--so-signal)}' +
|
|
164
117
|
'@media (max-width:760px){.inbox-tabs{display:flex;width:100%}.inbox-tabs a{flex:1;justify-content:center;min-height:44px;padding:0 6px}.inbox-unread{display:block}}';
|
|
165
118
|
export const WORKSPACE_STYLE = styleAsset(STYLE + BRAND_MARK_CSS + INBOX_TABS_CSS + APPROVAL_RULES_CSS + SPEND_CSS + RETENTION_CSS + STORAGE_CSS + UPDATES_CSS + LIMITS_CSS + MONITORING_CSS + INTEGRATIONS_CSS + BACKUP_CSS + EXPORT_CSS + PROJECT_DELETE_CSS + POLICY_CSS + EVIDENCE_PACK_CSS + THEME_CONTROLS_CSS + CODING_CSS + CODING_SHIPPING_CSS + RECIPE_CSS + SKILLS_CSS + TOOLS_CSS + FLOWS_CSS + SUBAGENT_CSS + KITS_CSS + STARTERS_CSS + GALLERY_CSS + SSO_CSS + CREDENTIALS_CSS + REQUEST_LIMITS_CSS + PEOPLE_AUDIT_CSS + KNOWLEDGE_CSS + MODELS_CSS + CHAT_POLISH_CSS + TRANSITIONS_CSS + WORKSPACE_MOTION_CSS + ASSIGNMENT_CSS + TASK_STATUS_CSS + LEAD_CONTEXT_CSS + PULL_REQUEST_SETTINGS_CSS + CHECK_SETTINGS_CSS + DISCLOSURE_CSS + SETTINGS_KIT_CSS + '.learning{min-width:0;overflow-wrap:anywhere}.learning .card{min-width:0}.learning code,.learning blockquote,.learning pre{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}.learning button,.learning summary,.learning .button-link{min-height:44px}.learning button{white-space:nowrap}.learning summary{padding:12px 0;cursor:pointer}.learning form{margin:12px 0}.learning select{max-width:100%}.learning blockquote{margin:8px 0}.learning ul{padding-left:20px}');
|
|
166
|
-
/**
|
|
167
|
-
* A server-rendered region that stays current: when the page's live stream
|
|
168
|
-
* says something changed (GET /live, live-bus.ts), fetch this page's own
|
|
169
|
-
* fragment and swap it in place — no flicker, no scroll reset. Inside the
|
|
170
|
-
* workspace the page's one stream is already open (browser/live.ts) and
|
|
171
|
-
* announces each event on `window`; a page without it opens its own stream
|
|
172
|
-
* to the workspace room. A redirect or auth failure navigates to /login
|
|
173
|
-
* instead of ever inserting the login page into the region (finding 4). The
|
|
174
|
-
* swapped markup is this server's own rendering of the same route — escaped
|
|
175
|
-
* at the sink like every page, fetched same-origin — and the nonce'd CSP
|
|
176
|
-
* refuses to execute anything the region could smuggle. Nothing reads on a timer.
|
|
177
|
-
*/
|
|
178
119
|
export function regionScript(regionId, fragmentName, path, options = {}) {
|
|
179
|
-
// Where the fragment lives: the page's own URL by default; an explicit
|
|
180
|
-
// path when a page embeds another entity's region (the task page embeds
|
|
181
|
-
// the live run's peek, slice 1c — no proxy route exists for it).
|
|
182
120
|
const target = path === undefined ? "location.pathname+q" : JSON.stringify(`${path}?fragment=${fragmentName}`);
|
|
183
|
-
// The named-region refresher (attended review, finding 2): swaps exactly one
|
|
184
|
-
// element, never a form-bearing pane. Failures are VISIBLE — a frozen
|
|
185
|
-
// page must never look live (finding 6): the stamp says how old the
|
|
186
|
-
// region is. One fetch in flight at a time; a change during it fetches once more.
|
|
187
121
|
return (`(function(){var region=document.getElementById(${JSON.stringify(regionId)});if(!region)return;` +
|
|
188
122
|
`var stamp=document.getElementById(${JSON.stringify(regionId)}+"-stamp");` +
|
|
189
123
|
`var last=Date.now();var busy=false;var again=false;var failed=false;var stopped=false;` +
|
|
190
|
-
// The swap must not steal what the reader was holding (arc 4,
|
|
191
|
-
// findings 1/15/16): before replacing the region, remember the
|
|
192
|
-
// focused row (roving set only), each scrolled lane's first visible
|
|
193
|
-
// card, and which board lane was centered; put them back after —
|
|
194
|
-
// scroll first, focus last with preventScroll so it cannot undo the
|
|
195
|
-
// scroll pass. All coordinates come from bounding rects, never
|
|
196
|
-
// offsetLeft against an unpositioned parent (finding 21).
|
|
197
124
|
`function laneKey(l){var m=/(^|\\s)(lane-[a-z]+)(\\s|$)/.exec(l.className);return m?m[2]:null;}` +
|
|
198
125
|
`function keep(){var data={lanes:[],focus:null,pager:-1,fold:{}};` +
|
|
199
126
|
`region.querySelectorAll("details.lane").forEach(function(d){var k=laneKey(d);if(k)data.fold[k]=d.open;});` +
|
|
@@ -227,24 +154,15 @@ export function regionScript(regionId, fragmentName, path, options = {}) {
|
|
|
227
154
|
`function tell(){if(!stamp||stopped)return;var s=Math.round((Date.now()-last)/1000);` +
|
|
228
155
|
`stamp.textContent=failed?"stale — retrying ("+s+"s old)":"updated "+s+"s ago";}` +
|
|
229
156
|
`setInterval(tell,1000);` +
|
|
230
|
-
// The animated swap (the live board): a card that changed lane slides there and a new one drops in, through one
|
|
231
|
-
// same-document view transition keyed by each card's data-vt; a worker whose builds changed flashes once
|
|
232
|
-
// (data-flash). Never under reduced motion, in a hidden tab, or where the browser lacks view transitions — there
|
|
233
|
-
// the swap is the plain instant one. Names are set only for the swap and cleared after it.
|
|
234
157
|
`var animate=${options.animate === true ? "true" : "false"};` +
|
|
235
|
-
// A name spells the whole key in hex — two tasks can never share one, so a card's identity never jumps to another.
|
|
236
158
|
`function vtName(v){var n="so-c";for(var i=0;i<v.length;i++){n+=("000"+v.charCodeAt(i).toString(16)).slice(-4);}return n;}` +
|
|
237
159
|
`function nameAll(){var seen={};region.querySelectorAll("[data-vt]").forEach(function(e){var n=vtName(e.getAttribute("data-vt"));if(seen[n])return;seen[n]=1;e.style.setProperty("view-transition-name",n);});}` +
|
|
238
160
|
`function flashes(){var m={};region.querySelectorAll("[data-flash]").forEach(function(e){m[e.getAttribute("data-flash")]=e.getAttribute("data-flash-value");});return m;}` +
|
|
239
161
|
`function apply(t){var before=animate?flashes():{};var kept=keep();region.innerHTML=t;restore(kept);` +
|
|
240
162
|
`if(animate)region.querySelectorAll("[data-flash]").forEach(function(e){var k=e.getAttribute("data-flash"),v=e.getAttribute("data-flash-value");if(k in before&&before[k]!==v&&v!=="")e.classList.add("flash");});}` +
|
|
241
|
-
// The swap resolves when its transition has finished, and the next fetch waits for it (refresh holds busy), so
|
|
242
|
-
// one transition runs at a time; each cleans up only its own (the generation), never a later one's.
|
|
243
163
|
`var generation=0;` +
|
|
244
164
|
`function swap(t){var calm=!window.matchMedia||matchMedia("(prefers-reduced-motion: reduce)").matches;` +
|
|
245
165
|
`if(!animate||calm||document.hidden||typeof document.startViewTransition!=="function"){apply(t);return Promise.resolve();}` +
|
|
246
|
-
// Bounded: a transition that never settles (or never runs its update) is let go after 1.5 s — the fragment is
|
|
247
|
-
// applied exactly once either way, so the board can never stop refreshing behind an animation.
|
|
248
166
|
`var root=document.documentElement;var mine=++generation;var applied=false;var settled=false;nameAll();root.classList.add("so-swap");` +
|
|
249
167
|
`var once=function(){if(applied)return false;applied=true;apply(t);return true;};` +
|
|
250
168
|
`var end=function(){if(settled)return;settled=true;once();if(mine!==generation)return;root.classList.remove("so-swap");region.querySelectorAll("[data-vt]").forEach(function(e){e.style.removeProperty("view-transition-name");});};` +
|
|
@@ -258,31 +176,18 @@ export function regionScript(regionId, fragmentName, path, options = {}) {
|
|
|
258
176
|
`return r.ok?r.text():null;})` +
|
|
259
177
|
`.then(function(t){if(t){return swap(t).then(function(){last=Date.now();failed=false;});}failed=true;})` +
|
|
260
178
|
`.catch(function(){failed=true;})` +
|
|
261
|
-
// A fragment that marks itself final stops: a finished or abandoned build is not fetched again.
|
|
262
179
|
`.then(function(){busy=false;tell();if(region.querySelector("[data-region-stop]")){stopped=true;if(stamp)stamp.textContent="";return;}if(again)refresh();});}` +
|
|
263
180
|
`function heard(name){if(name==="change"||name==="reload")refresh();}` +
|
|
264
|
-
// On a workspace page the page's one stream (browser/live.ts) carries the workspace room: ask it, never open a second.
|
|
265
181
|
`function mine(e){var d=e.detail;if(d&&(d.room==="workspace"||d.room===null))heard(d.event);}` +
|
|
266
182
|
`if(document.getElementById("standing-orders-workspace")){(window.__soLiveRooms=window.__soLiveRooms||[]).push("workspace");addEventListener("so:live",mine);}` +
|
|
267
183
|
`else if(document.documentElement.dataset.live==="1"){addEventListener("so:live",mine);}` +
|
|
268
|
-
// Refused (signed out, access lost): stop instead of reconnecting at once into a request that can't sign in, and
|
|
269
|
-
// listen again in 30 s, as the page's own stream does (browser/live.ts RETRY_MS).
|
|
270
184
|
`else if(typeof EventSource!=="undefined"){var listen=function(){var es=new EventSource("/live?room=workspace");` +
|
|
271
185
|
`es.addEventListener("change",function(){heard("change");});es.addEventListener("reload",function(){heard("reload");});` +
|
|
272
|
-
// A retry the server answers with an error (still signed out) is given up by the browser: try again later too.
|
|
273
186
|
`var again=function(){es.close();setTimeout(listen,30000);};` +
|
|
274
187
|
`es.addEventListener("ended",again);es.addEventListener("error",function(){if(es.readyState===2)again();});};listen();` +
|
|
275
188
|
`document.addEventListener("visibilitychange",function(){if(!document.hidden)refresh();});}` +
|
|
276
189
|
`})();`);
|
|
277
190
|
}
|
|
278
|
-
/**
|
|
279
|
-
* The live transcript's DEDICATED poller (arc 1 §4): a JSON byte-offset
|
|
280
|
-
* protocol, not an HTML fragment — the response is raw sanitized text and
|
|
281
|
-
* the ONLY sink is textContent, so nothing here can become markup. One
|
|
282
|
-
* request in flight, visibility-paused, stops on `final`, and a `replaced`
|
|
283
|
-
* answer — or another file's generation — restarts from zero with a visible
|
|
284
|
-
* line, never a silent re-read.
|
|
285
|
-
*/
|
|
286
191
|
export function transcriptScript(path, elementId = "live-transcript") {
|
|
287
192
|
const base = path === undefined ? "location.pathname" : JSON.stringify(path);
|
|
288
193
|
return (`(function(){var out=document.getElementById(${JSON.stringify(elementId)});if(!out)return;` +
|
|
@@ -304,15 +209,6 @@ export function transcriptScript(path, elementId = "live-transcript") {
|
|
|
304
209
|
`.catch(function(){busy=false;later();});}` +
|
|
305
210
|
`function later(){setTimeout(go,2000);}go();})();`);
|
|
306
211
|
}
|
|
307
|
-
/**
|
|
308
|
-
* The chrome layer: the jump palette and elapsed tickers. Pure
|
|
309
|
-
* navigation — no key ever posts, so the palette cannot approve anything;
|
|
310
|
-
* ceremonies stay POST + password + CSRF, untouched. Reads its index from
|
|
311
|
-
* a non-executable JSON script tag rendered by the same authorized page.
|
|
312
|
-
*/
|
|
313
|
-
/** The rail's presentation-only state is safe beside a password ceremony:
|
|
314
|
-
* it never reads a field or sends a request, and keeps the chat collapsible
|
|
315
|
-
* from its very first screen while the palette and global keys remain absent. */
|
|
316
212
|
export function sidebarScript() {
|
|
317
213
|
return (MOBILE_VIEWPORT_SCRIPT +
|
|
318
214
|
`(function(){var app=document.querySelector(".app"),sideToggle=document.querySelector(".side-toggle");` +
|
|
@@ -326,29 +222,18 @@ export function sidebarScript() {
|
|
|
326
222
|
export function chromeScript() {
|
|
327
223
|
return (sidebarScript() +
|
|
328
224
|
`(function(){` +
|
|
329
|
-
// The app-icon badge (Phase 2E): the page's server-rendered waiting
|
|
330
|
-
// count is authoritative over any stale push — synced on every chrome
|
|
331
|
-
// page load through the worker, cleared at zero, honest no-op where
|
|
332
|
-
// push never enrolled.
|
|
333
225
|
`try{var waiting=document.querySelector("[data-waiting]");` +
|
|
334
226
|
`if(waiting&&navigator.serviceWorker&&navigator.serviceWorker.controller){` +
|
|
335
227
|
`navigator.serviceWorker.controller.postMessage({badge:Number(waiting.getAttribute("data-waiting"))||0});}}catch(e){}` +
|
|
336
|
-
// elapsed tickers: server timestamps, client arithmetic, display only
|
|
337
228
|
`function tick(){var nodes=document.querySelectorAll("time[data-elapsed-since]");` +
|
|
338
229
|
`for(var i=0;i<nodes.length;i++){var t=Date.parse(nodes[i].getAttribute("data-elapsed-since"));` +
|
|
339
230
|
`if(!isFinite(t))continue;var s=Math.max(0,Math.floor((Date.now()-t)/1000));` +
|
|
340
231
|
`var m=Math.floor(s/60);var h=Math.floor(m/60);` +
|
|
341
232
|
`nodes[i].textContent=h>0?h+"h "+(m%60)+"m":m>0?m+"m "+(s%60)+"s":s+"s";}}` +
|
|
342
233
|
`setInterval(tick,1000);tick();` +
|
|
343
|
-
// The rail's two accordion groups stay exclusive: opening one closes
|
|
344
|
-
// the other. Each <details> already carries its own open/closed state
|
|
345
|
-
// and keyboard operation natively — this only enforces "at most one
|
|
346
|
-
// open" on top of that, and no-ops wherever the groups are absent.
|
|
347
234
|
`var navGroups=document.querySelectorAll(".nav-group");` +
|
|
348
235
|
`navGroups.forEach(function(g){g.addEventListener("toggle",function(){` +
|
|
349
236
|
`if(g.open){navGroups.forEach(function(o){if(o!==g)o.removeAttribute("open");});}});});` +
|
|
350
|
-
// the palette
|
|
351
|
-
// No index on a workspace page: search is the workspace's own there (keymap.ts search), and the keys still work.
|
|
352
237
|
`var raw=document.getElementById("palette-index");var index=[];` +
|
|
353
238
|
`if(raw){try{index=JSON.parse(raw.textContent||"[]");}catch(e){return;}}` +
|
|
354
239
|
`var open=false,box=null,list=null,input=null,items=[],paletteBack=null;` +
|
|
@@ -376,8 +261,6 @@ export function chromeScript() {
|
|
|
376
261
|
`else if(ev.key==="ArrowUp"){pick(-1);ev.preventDefault();}` +
|
|
377
262
|
`else if(ev.key==="Enter"){for(var i=0;i<items.length;i++)if(items[i].getAttribute("aria-selected")==="true")go(items[i].getAttribute("data-href"));ev.preventDefault();}});` +
|
|
378
263
|
`render("");input.focus();}` +
|
|
379
|
-
// the shortcuts overlay: display-only; focus moves in on open and
|
|
380
|
-
// back out on close; every other shortcut sleeps while it is up
|
|
381
264
|
`var help=document.querySelector(".kbd-help");var helpBack=null;` +
|
|
382
265
|
`function helpOpen(){return help!==null&&!help.hidden;}` +
|
|
383
266
|
`function toggleHelp(){if(!help)return;` +
|
|
@@ -386,9 +269,6 @@ export function chromeScript() {
|
|
|
386
269
|
`document.addEventListener("click",function(ev){if(helpOpen()&&!help.contains(ev.target))toggleHelp();` +
|
|
387
270
|
`document.querySelectorAll("details.switcher[open],details.work-tools[open]").forEach(function(d){if(!d.contains(ev.target))d.removeAttribute("open");});});` +
|
|
388
271
|
`document.addEventListener("keydown",function(ev){if(ev.key!=="Escape"||ev.isComposing)return;var d=ev.target.closest&&ev.target.closest("details.switcher[open],details.work-tools[open]");if(d){d.open=false;d.querySelector("summary").focus();ev.preventDefault();}});` +
|
|
389
|
-
// j/k: a roving focus over the page's rows — only from body or from
|
|
390
|
-
// inside the set, clamped at the ends, preventDefault only on a real
|
|
391
|
-
// move (finding 9); held keys may repeat
|
|
392
272
|
`function rove(delta,ev){` +
|
|
393
273
|
`var set=Array.prototype.slice.call(document.querySelectorAll("a.row, a.lane-card"));` +
|
|
394
274
|
`if(set.length===0)return;` +
|
|
@@ -397,8 +277,6 @@ export function chromeScript() {
|
|
|
397
277
|
`var next=at===-1?(delta>0?0:set.length-1):Math.max(0,Math.min(set.length-1,at+delta));` +
|
|
398
278
|
`if(next===at)return;` +
|
|
399
279
|
`set[next].focus();ev.preventDefault();}` +
|
|
400
|
-
// key routing (keymap.ts, one table with the terminal UI): never inside editable targets, no modifiers, no IME
|
|
401
|
-
// composition (finding 4); repeats allowed only for j/k. A press key presses only a control the page rendered.
|
|
402
280
|
webKeymapScript() +
|
|
403
281
|
`var pending=null;` +
|
|
404
282
|
`document.addEventListener("keydown",function(ev){` +
|
|
@@ -419,27 +297,13 @@ export const ROLE_TITLES = { plan: "Planner", build: "Builder", review: "Reviewe
|
|
|
419
297
|
export function screen(title, body, options = {}) {
|
|
420
298
|
return { title, body, ...options };
|
|
421
299
|
}
|
|
422
|
-
/**
|
|
423
|
-
* The sensitivity classifier (arc 4, findings 3/17): a body showing a
|
|
424
|
-
* password input renders WITHOUT the chrome additions (palette, overlay,
|
|
425
|
-
* global keys) — the page's own functional script still ships. Tolerant
|
|
426
|
-
* of quoting, casing, and whitespace; `data-type="password"` and prose
|
|
427
|
-
* mentioning passwords do not match. This is defense-in-depth over a
|
|
428
|
-
* file whose only HTML producer is its own double-quoted template
|
|
429
|
-
* convention — forceSensitive is the escape hatch for what a regex
|
|
430
|
-
* cannot judge.
|
|
431
|
-
*/
|
|
432
300
|
export const SENSITIVE_INPUT = /<input\b[^>]*[\s"']type\s*=\s*["']?password/i;
|
|
433
|
-
/** The design contract every page carries (impeccable direction, 2026-09-27). */
|
|
434
301
|
export const DESIGN_CONTRACT = html `<!-- THESIS: a control plane that stays quiet until a person is needed; it refuses the dashboard default of coloured status everywhere and an accent on every button.
|
|
435
302
|
OWN-WORLD: a neutral grey frame with paper sheets inset into it (Arc, Linear), Geist for words and Geist Mono for machine facts, ink for every act a person can take, one chart magenta only for what waits on a person plus focus and selection; hairlines and one soft sheet shadow, no glass, no gradients.
|
|
436
303
|
STORY: glance, see the accent count, open the one thing that needs you, act with the one accent verb, leave.
|
|
437
304
|
FIRST VIEWPORT: sidebar on the frame (accent mark, ink New task, the current page as a raised pill, the accent needs-you count); the main sheet with a 52px header over compact 13px rows; the Crew sheet beside it.
|
|
438
305
|
FORM: the Raycast and Arc canon, user-pinned; seed 9c849086.
|
|
439
306
|
FINISH: unreviewed and undocumented is unfinished; this build ends with the finish review, the verdict, and DESIGN.md -->`;
|
|
440
|
-
/** The shortcuts overlay: display-only, toggled by the chrome layer,
|
|
441
|
-
* absent from sensitive pages. Navigation help in plain words — no key
|
|
442
|
-
* ever posts. */
|
|
443
307
|
export const KBD_HELP = html `<div class="kbd-help" hidden role="dialog" aria-label="keyboard shortcuts" tabindex="-1">\
|
|
444
308
|
<h2>Keyboard shortcuts</h2><table>${SHORTCUTS.map(one => html `<tr><td>${joinHtml(one.keys.split(" ").map(key => html `<kbd>${key}</kbd>`), " then ")}</td><td>${one.says}</td></tr>`)}\
|
|
445
309
|
<tr><td><kbd>j</kbd> / <kbd>k</kbd></td><td>move through the rows on this page</td></tr>\
|
|
@@ -450,8 +314,6 @@ export function shell(title, body, options = {}) {
|
|
|
450
314
|
const head = joinHtml([
|
|
451
315
|
html `<!doctype html>`,
|
|
452
316
|
html `<html lang="en"${themeAttribute()}><head><meta charset="utf-8">`,
|
|
453
|
-
// viewport-fit=cover is what makes env(safe-area-inset-*) non-zero on a
|
|
454
|
-
// notched phone; without it the tab bar sits under the home indicator.
|
|
455
317
|
html `<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">`,
|
|
456
318
|
...(requestContext.getStore()?.theme
|
|
457
319
|
? [html `<meta name="theme-color" content="${requestContext.getStore()?.theme === "dark" ? "#0b0b0b" : "#efefef"}">`]
|
|
@@ -460,18 +322,9 @@ export function shell(title, body, options = {}) {
|
|
|
460
322
|
html `<meta name="apple-mobile-web-app-capable" content="yes">`,
|
|
461
323
|
html `<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">`,
|
|
462
324
|
html `<link rel="icon" href="/icon.svg" type="image/svg+xml">`,
|
|
463
|
-
// Live status with zero JavaScript: the page asks the browser to fetch
|
|
464
|
-
// it again. Only ever on read-only briefing pages — a refresh on a page
|
|
465
|
-
// with a form would eat what somebody was typing.
|
|
466
|
-
// A refresh is a reload, and reloads never cross-fade. No page opts
|
|
467
|
-
// out of the fade either: opening one from a page that fades makes
|
|
468
|
-
// the browser report the aborted fade as an error.
|
|
469
325
|
...(options.refreshSeconds === undefined
|
|
470
326
|
? []
|
|
471
327
|
: [html `<meta http-equiv="refresh" content="${Math.max(5, Math.floor(options.refreshSeconds))}">`]),
|
|
472
|
-
// With the in-place swapper, the whole-page refresh survives only as
|
|
473
|
-
// the no-JavaScript fallback — and CSS view transitions run without
|
|
474
|
-
// JavaScript, so the fallback carries its own opt-out.
|
|
475
328
|
...(options.live?.fallbackRefresh !== true
|
|
476
329
|
? []
|
|
477
330
|
: [html `<noscript><meta http-equiv="refresh" content="30"><style>@view-transition { navigation: none; }</style></noscript>`]),
|
|
@@ -481,37 +334,24 @@ export function shell(title, body, options = {}) {
|
|
|
481
334
|
? html `</body></html>`
|
|
482
335
|
: html `${scriptElement(options.live.script, { nonce: options.live.nonce })}</body></html>`;
|
|
483
336
|
if (options.chrome === undefined) {
|
|
484
|
-
// Chromeless: the login page and refusal pages.
|
|
485
337
|
return joinHtml([head, html `<main>`, main, html `</main>`, tail], "\n");
|
|
486
338
|
}
|
|
487
339
|
const chrome = options.chrome;
|
|
488
340
|
const item = (key, href, label, count) => html `<a href="${href}" aria-label="${label}" title="${label}"${chrome.active === key ? html ` class="active"` : ""}${key === "inbox" && count !== undefined ? html ` data-waiting="${count}"` : ""}>\
|
|
489
341
|
${label}\
|
|
490
342
|
${count !== undefined && count > 0 ? html ` <span class="count badge badge-open">${count}${key === "inbox" && chrome.inboxSaturated ? "+" : ""}</span>` : ""}</a>`;
|
|
491
|
-
// The scope bar (portfolio arc §1): ONE row naming which rows this screen
|
|
492
|
-
// can show — derived from the route's declared scope, falling back to the
|
|
493
|
-
// session default. It replaced the sidebar workspace card and the mobile
|
|
494
|
-
// pill's link as the single scope truth. Display and GET navigation only;
|
|
495
|
-
// switching projects stays the POST + CSRF /projects flow.
|
|
496
343
|
const effectiveScope = chrome.scope ?? (chrome.project === null ? "all" : "project");
|
|
497
344
|
const peekCounts = chrome.active === "code" || chrome.projectPeek === null || chrome.projectPeek === undefined || effectiveScope !== "project" ? null : chrome.projectPeek;
|
|
498
345
|
const scopeCounts = peekCounts === null
|
|
499
346
|
? null
|
|
500
347
|
: html `${peekCounts.waiting > 0 ? html `<span class="hot">${peekCounts.waiting} needs you</span>` : html `<span>0 needs you</span>`}\
|
|
501
348
|
<span>${peekCounts.running} live</span><span>${peekCounts.queued} queued</span>`;
|
|
502
|
-
// On a desk each count is the road to what it counts; inside the phone
|
|
503
|
-
// pill's summary they stay text, since the pill itself is the switcher.
|
|
504
349
|
const scopeStatus = peekCounts === null
|
|
505
350
|
? null
|
|
506
351
|
: html `<span class="scope-status">\
|
|
507
352
|
${peekCounts.waiting > 0 ? html `<a class="hot" href="/tasks?view=needs-you">${peekCounts.waiting} needs you</a>` : html `<a href="/tasks?view=needs-you">0 needs you</a>`}\
|
|
508
353
|
<a href="/runs">${peekCounts.running} live</a><a href="/tasks?view=order">${peekCounts.queued} queued</a></span>`;
|
|
509
354
|
const scopeName = effectiveScope === "project" && chrome.project !== null ? projectName(chrome.project) : "All projects";
|
|
510
|
-
// The switcher (board pass): the scope's name opens a menu of every
|
|
511
|
-
// enrolled project — one tap to open one, or to widen to all — as plain
|
|
512
|
-
// POST forms carrying the session's csrf, returning to this screen.
|
|
513
|
-
// Inert wherever the chrome may carry no forms: a sensitive page, or a
|
|
514
|
-
// request without a cookie session.
|
|
515
355
|
const canSwitch = options.sensitive !== true && chrome.csrf !== undefined && chrome.csrf !== "" && chrome.projects !== undefined;
|
|
516
356
|
const switcherMenu = (foot) => {
|
|
517
357
|
if (!canSwitch)
|
|
@@ -524,24 +364,17 @@ ${peekCounts.waiting > 0 ? html `<a class="hot" href="/tasks?view=needs-you">${p
|
|
|
524
364
|
];
|
|
525
365
|
return html `<div class="switcher-menu" role="menu">${rows}${foot}</div>`;
|
|
526
366
|
};
|
|
527
|
-
// No "scope" label word: in this product "scope" names a task's approved
|
|
528
|
-
// terms — the bar just states which projects the screen is showing.
|
|
529
367
|
const scopeBar = html `<div class="scope-bar">\
|
|
530
368
|
${canSwitch
|
|
531
369
|
? html `<details class="switcher"><summary class="name">${scopeName}${CHEVRON_ICON}</summary>${switcherMenu(null)}</details>`
|
|
532
370
|
: html `<span class="name">${scopeName}</span>`}\
|
|
533
371
|
${scopeStatus}</div>`;
|
|
534
|
-
// The rail's own accordion (sidebar rework): open the group holding the
|
|
535
|
-
// active page, closed otherwise — the client toggle keeps it exclusive.
|
|
536
372
|
const navGroup = (key, label, rows, open) => html `<details class="nav-group" data-group="${key}"${open ? html ` open` : ""}>\
|
|
537
373
|
<summary>${label}${CHEVRON_ICON}</summary>\
|
|
538
374
|
<nav class="nav-group-items">${rows.map(row => item(row.key, row.href, row.label))}</nav>\
|
|
539
375
|
</details>`;
|
|
540
|
-
// The three primary destinations (workspace package 1): Chat, Work,
|
|
541
|
-
// Projects — every old page keeps its own active key and lights the
|
|
542
|
-
// destination it now lives under. The count rides Work: it is the
|
|
543
|
-
// saturated needs-you count, exactly as the inbox row wore it.
|
|
544
376
|
const primary = chrome.active === "code" ? "work" : primaryDestinationOf(chrome.active);
|
|
377
|
+
const advanced = advancedShownNow();
|
|
545
378
|
const primaryItem = (key, href, label, count) => html `<a href="${href}" aria-label="${key === "work" && count !== undefined && count > 0 && chrome.inboxLabel !== undefined ? `${label}, ${chrome.inboxLabel}` : label}" title="${label}"${primary === key ? html ` class="active" aria-current="page"` : ""}${key === "work" && count !== undefined ? html ` data-waiting="${count}"` : ""}>\
|
|
546
379
|
<span class="glyph">${NAV_ICONS[key] ?? ""}</span>${label}\
|
|
547
380
|
${count !== undefined && count > 0 ? html ` <span${chrome.inboxLabel === undefined ? "" : html ` aria-label="${chrome.inboxLabel}" title="${chrome.inboxLabel}"`} class="count badge badge-open">${count}${chrome.inboxSaturated ? "+" : ""}</span>` : ""}</a>`;
|
|
@@ -553,25 +386,19 @@ ${count !== undefined && count > 0 ? html ` <span${chrome.inboxLabel === undefin
|
|
|
553
386
|
: []),
|
|
554
387
|
html `</div>`,
|
|
555
388
|
html `<nav>`,
|
|
556
|
-
// Chat is present only where the ceiling ever allows it (unchanged
|
|
557
|
-
// gating); Work and Projects always. Every specialist tool is a dim
|
|
558
|
-
// text row inside one of the two accordion groups below.
|
|
559
389
|
...(chrome.chat ? [primaryItem("chat", "/chat", "Chat")] : []),
|
|
560
390
|
primaryItem("work", "/tasks", "Tasks", chrome.inboxCount),
|
|
561
|
-
primaryItem("flows", "/flows", "Flows"),
|
|
391
|
+
...(advanced ? [primaryItem("flows", "/flows", "Flows")] : []),
|
|
562
392
|
primaryItem("projects", "/projects", "Projects"),
|
|
563
393
|
html `</nav>`,
|
|
564
394
|
...(chrome.active === "code" ? [] : [html `<a class="new-task" href="/tasks/new" aria-label="New task">+ New task</a>`]),
|
|
565
395
|
html `<nav class="nav-groups">`,
|
|
566
|
-
navGroup("tools", "Work tools", workToolRows(chrome.projectScoped, chrome.chat, chrome.code), TOOL_KEYS.has(chrome.active)),
|
|
567
|
-
navGroup("settings", "Settings", settingsRows(chrome.projectScoped, chrome.settings), SETTINGS_KEYS.has(chrome.active)),
|
|
396
|
+
navGroup("tools", "Work tools", workToolRows(chrome.projectScoped, chrome.chat, chrome.code, advanced), TOOL_KEYS.has(chrome.active)),
|
|
397
|
+
navGroup("settings", "Settings", settingsRows(chrome.projectScoped, chrome.settings, advanced), SETTINGS_KEYS.has(chrome.active)),
|
|
568
398
|
html `</nav>`,
|
|
569
399
|
html `<span class="grow"></span>`,
|
|
570
400
|
html `</aside>`,
|
|
571
401
|
], "\n");
|
|
572
|
-
// The sandbox banner: every page, no dismissal — a screenshot of a demo
|
|
573
|
-
// must not pass as production (adoption review, finding 8; the FENCE is
|
|
574
|
-
// the refuseDemo gate in operate.ts, this is the honest label).
|
|
575
402
|
const update = chrome.update;
|
|
576
403
|
const demoBanner = html `\
|
|
577
404
|
${chrome.demo === true ? html `<div class="banner"><span class="badge">Demo</span>${DEMO_BANNER.replace(/^Demo: /, "")}</div>` : ""}\
|
|
@@ -581,9 +408,6 @@ ${postForm(one.resumeHref, html `<button type="submit">${one.resumeLabel}</butto
|
|
|
581
408
|
${chrome.updateWaiting === undefined ? "" : html `<div class="banner update-waiting" role="status">${chrome.updateWaiting.words} \u00b7 <a href="/settings/updates">Update status</a></div>`}\
|
|
582
409
|
${update === undefined ? "" : html `<div class="banner update-banner" data-update="${update.version}">${updateNoticeWords(update)} \u00b7 <a href="${update.href}">What's new</a>\
|
|
583
410
|
${postForm(update.dismissHref, html `<button type="submit">Dismiss</button>`, { attrs: { class: "inline" }, hidden: { version: update.version } })}</div>`}`;
|
|
584
|
-
// The scope bar sits between the banners and the main/split body, so it
|
|
585
|
-
// can never disappear with a responsive pane (portfolio arc §1).
|
|
586
|
-
// The settings frame's breadcrumb sits above the page's own h1 (its only h1).
|
|
587
411
|
const crumbs = chrome.crumbs === undefined ? "" : crumbsHtml(chrome.crumbs);
|
|
588
412
|
const content = chrome.listPane === undefined
|
|
589
413
|
? html `<div class="content">${demoBanner}${scopeBar}${crumbs}<main>${main}</main></div>`
|
|
@@ -591,29 +415,16 @@ ${postForm(update.dismissHref, html `<button type="submit">Dismiss</button>`, {
|
|
|
591
415
|
<div class="list-pane">${chrome.listPane}</div>\
|
|
592
416
|
<div class="detail"><main>${main}</main></div>\
|
|
593
417
|
</div></div>`;
|
|
594
|
-
// The phone chrome (arc 4): a top bar with the project one tap from
|
|
595
|
-
// switching and quick capture, and a bottom tab bar with the always-
|
|
596
|
-
// visible destinations (chat where allowed, inbox, board, builds,
|
|
597
|
-
// projects) a thumb visits — everything else behind /menu. CSS shows
|
|
598
|
-
// these only below 760px; desktop keeps the sidebar untouched.
|
|
599
418
|
const mobileTop = joinHtml([
|
|
600
419
|
html `<header class="mobile-top">`,
|
|
601
420
|
html `<a class="brand-mini" href="${chrome.chat === true ? "/chat" : "/tasks"}">T</a>`,
|
|
602
|
-
// On a phone the pill IS the scope row (mobile pass): the project's
|
|
603
|
-
// name, its three counts, and the one /projects link at that
|
|
604
|
-
// breakpoint — the scope bar hides below 760px so the header is one
|
|
605
|
-
// row, not three. Desktop keeps the scope bar's link and hides this.
|
|
606
421
|
canSwitch
|
|
607
422
|
? html `<details class="project-pill switcher"><summary><span class="name">${scopeName}${CHEVRON_ICON}</span>${scopeCounts === null ? "" : html `<span class="pill-status">${scopeCounts}</span>`}</summary>${switcherMenu(html `<a class="manage" href="/projects">manage projects</a>`)}</details>`
|
|
608
423
|
: html `<a class="project-pill" href="/projects"><span class="name">${scopeName}</span>${scopeCounts === null ? "" : html `<span class="pill-status">${scopeCounts}</span>`}</a>`,
|
|
609
424
|
...(chrome.active === "code" ? [] : [html `<a class="mobile-new" href="/tasks/new">+ task</a>`]),
|
|
610
|
-
// Settings and the specialist tools are a header action on a phone,
|
|
611
|
-
// never a fourth primary tab (workspace package 1).
|
|
612
425
|
html `<a class="mobile-more" href="/menu" aria-label="tools and settings" title="tools and settings">${strokeIcon(html `<path d="M4 6h16"/><path d="M4 12h16"/><path d="M4 18h16"/>`)}</a>`,
|
|
613
426
|
html `</header>`,
|
|
614
427
|
]);
|
|
615
|
-
// Drawn icons, one stroke weight, inline and CSP-safe — never unicode
|
|
616
|
-
// glyphs standing in for an icon system.
|
|
617
428
|
const TAB_ICONS = {
|
|
618
429
|
code: strokeIcon(html `<path d="m8 6-6 6 6 6m8-12 6 6-6 6M14 4l-4 16"/>`),
|
|
619
430
|
chat: strokeIcon(CHAT_PATHS),
|
|
@@ -621,30 +432,22 @@ ${postForm(update.dismissHref, html `<button type="submit">Dismiss</button>`, {
|
|
|
621
432
|
projects: strokeIcon(FOLDER_PATHS),
|
|
622
433
|
flows: strokeIcon(html `<rect width="8" height="8" x="3" y="3" rx="2"/><path d="M7 11v4a2 2 0 0 0 2 2h4"/><rect width="8" height="8" x="13" y="13" rx="2"/>`),
|
|
623
434
|
};
|
|
624
|
-
const tab = (key, href, label, count) =>
|
|
625
|
-
// A phone tab says THAT something waits, with a dot; the number is on
|
|
626
|
-
// the Work views themselves (Linear Mobile's rule — one tap away).
|
|
627
|
-
html `<a href="${href}"${primary === key ? html ` class="active" aria-current="page"` : ""}><span class="glyph">${TAB_ICONS[key]}</span>${label}\
|
|
435
|
+
const tab = (key, href, label, count) => html `<a href="${href}"${primary === key ? html ` class="active" aria-current="page"` : ""}><span class="glyph">${TAB_ICONS[key]}</span>${label}\
|
|
628
436
|
${count !== undefined && count > 0 ? html `<span class="dot-badge" role="img" aria-label="${chrome.inboxLabel ?? `${count} waiting`}"></span>` : ""}</a>`;
|
|
629
|
-
// Three primary tabs, the same three as the rail: chat where allowed,
|
|
630
|
-
// work, projects. Tools and settings sit behind the header's menu action.
|
|
631
437
|
const tabbar = joinHtml([
|
|
632
438
|
html `<nav class="tabbar">`,
|
|
633
439
|
...(chrome.chat ? [tab("chat", "/chat", "Chat")] : []),
|
|
634
440
|
tab("work", "/tasks", "Tasks", chrome.inboxCount),
|
|
635
|
-
tab("flows", "/flows", "Flows"),
|
|
441
|
+
...(advanced ? [tab("flows", "/flows", "Flows")] : []),
|
|
636
442
|
tab("projects", "/projects", "Projects"),
|
|
637
443
|
html `</nav>`,
|
|
638
444
|
]);
|
|
639
445
|
return joinHtml([head, html `<div class="app">`, side, mobileTop, content, tabbar, html `</div>`, tail], "\n");
|
|
640
446
|
}
|
|
641
|
-
/** ONE way a person is named on any surface (U3): the same chip everywhere. */
|
|
642
447
|
export function personChip(name) {
|
|
643
448
|
return html `<span class="mono">${name}</span>`;
|
|
644
449
|
}
|
|
645
|
-
/** The brand, as the workspace sidebar shows it. */
|
|
646
450
|
export const BRAND_HTML = html `<span class="so-brand-mark" aria-hidden="true"><i></i><i></i><i></i></span>Toolroll`;
|
|
647
|
-
/** A page on its own, in the workspace's look but with no script: the brand, then the page. */
|
|
648
451
|
export function focusDocument(title, body, live) {
|
|
649
452
|
return shell(title, html `<div class="focus-page"><a class="so-wordmark focus-brand" href="/chat">${BRAND_HTML}</a>${body}</div>`, live === undefined ? {} : { live });
|
|
650
453
|
}
|
|
@@ -658,19 +461,11 @@ export function relativeAge(iso, now) {
|
|
|
658
461
|
const hours = Math.round(minutes / 60);
|
|
659
462
|
return hours < 48 ? `${hours}h ago` : `${Math.round(hours / 24)}d ago`;
|
|
660
463
|
}
|
|
661
|
-
/** The project chip every all-scope row wears: null is UNPLACED, said so. */
|
|
662
464
|
export function projectChip(repo) {
|
|
663
465
|
return repo === null || repo === undefined
|
|
664
466
|
? html ` <span class="badge">Unplaced</span>`
|
|
665
467
|
: html ` <span class="badge">${projectName(repo)}</span>`;
|
|
666
468
|
}
|
|
667
|
-
/**
|
|
668
|
-
* Creating work is the product's first verb, so it gets a whole calm page:
|
|
669
|
-
* a title, the goal that becomes the scope draft, and the project it lands
|
|
670
|
-
* in — then straight to the approve card, which is the aha the flow serves.
|
|
671
|
-
*/
|
|
672
|
-
/** One queue card. Taken work renders pinned — visible, never draggable. */
|
|
673
|
-
/** The person's pinned theme from their own cookie; null follows the device. */
|
|
674
469
|
export function pinnedTheme(cookieHeader) {
|
|
675
470
|
const value = /(?:^|;\s*)so-theme=(light|dark)(?:;|$)/.exec(cookieHeader ?? "")?.[1];
|
|
676
471
|
return value === "light" || value === "dark" ? value : null;
|
|
@@ -678,21 +473,16 @@ export function pinnedTheme(cookieHeader) {
|
|
|
678
473
|
export function themeAttribute() {
|
|
679
474
|
return attributes({ "data-theme": requestContext.getStore()?.theme ?? null });
|
|
680
475
|
}
|
|
681
|
-
/** A chosen accent (Settings → Appearance) re-pigments the signal tokens only, after the shared stylesheet. */
|
|
682
476
|
export function accentHead() {
|
|
683
477
|
const accent = requestContext.getStore()?.accent ?? null;
|
|
684
478
|
return accent === null ? html `` : styleElement(accentStyle(accent), { "data-accent": accent });
|
|
685
479
|
}
|
|
686
|
-
/** Drawn, one stroke weight, like the tab bar's icons — never a glyph. */
|
|
687
480
|
export const GRIP_ICON = html `<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false">\
|
|
688
481
|
<circle cx="9" cy="6" r="1.5"/><circle cx="15" cy="6" r="1.5"/><circle cx="9" cy="12" r="1.5"/>\
|
|
689
482
|
<circle cx="15" cy="12" r="1.5"/><circle cx="9" cy="18" r="1.5"/><circle cx="15" cy="18" r="1.5"/></svg>`;
|
|
690
483
|
export const TO_FRONT_ICON = html `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">\
|
|
691
484
|
<path d="M12 19V5"/><path d="m5 12 7-7 7 7"/></svg>`;
|
|
692
|
-
/** One stroke weight, from the tab bar's set: the sidebar's primary rows
|
|
693
|
-
* wear an icon each; the foot's list stays text, the way Linear's does. */
|
|
694
485
|
export const strokeIcon = (paths) => html `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${paths}</svg>`;
|
|
695
|
-
/** Where the queue lives now: the board, flipped to dispatch order. */
|
|
696
486
|
export const QUEUE_VIEW = "/tasks?view=order";
|
|
697
487
|
export const FOLDER_PATHS = html `<path d="M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z"/>`;
|
|
698
488
|
export const CHAT_PATHS = html `<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>`;
|
|
@@ -704,23 +494,9 @@ export const NAV_ICONS = {
|
|
|
704
494
|
projects: strokeIcon(FOLDER_PATHS),
|
|
705
495
|
flows: strokeIcon(html `<rect width="8" height="8" x="3" y="3" rx="2"/><path d="M7 11v4a2 2 0 0 0 2 2h4"/><rect width="8" height="8" x="13" y="13" rx="2"/>`),
|
|
706
496
|
};
|
|
707
|
-
|
|
708
|
-
* The workspace shell (package 1): three primary rows (chat, work,
|
|
709
|
-
* projects) above two accordion groups. Work tools is where work is
|
|
710
|
-
* arranged, planned, and scheduled — the board, its order view, the
|
|
711
|
-
* flat task list, recipes, the portfolio, and the action
|
|
712
|
-
* ledger. Settings is who and what the fleet runs on — fleet,
|
|
713
|
-
* requirements, people, operating mode, system — plus the agent-defaults
|
|
714
|
-
* page where the console offers it. Both draw from the same two lists on
|
|
715
|
-
* a desk (accordion groups) and on a phone (/menu sections), so the two
|
|
716
|
-
* never disagree, and a project-scoped login sees exactly the rows it
|
|
717
|
-
* saw before: moving a link never widens role or project visibility.
|
|
718
|
-
*/
|
|
719
|
-
export function workToolRows(scoped = false, _offersChat = false, offersCode = false) {
|
|
497
|
+
export function workToolRows(scoped = false, _offersChat = false, offersCode = false, advanced = true) {
|
|
720
498
|
const rows = [
|
|
721
|
-
|
|
722
|
-
// Live terminals: an operator's own Claude Code, Codex or shell, in a real terminal (docs/plans/live-terminal.md).
|
|
723
|
-
...(offersCode ? [{ key: "code", href: "/term", label: "Live", hint: "your own terminals: Claude Code, Codex or a shell" }] : []),
|
|
499
|
+
...(offersCode && advanced ? [{ key: "code", href: "/term", label: "Live", hint: "your own terminals: Claude Code, Codex or a shell" }] : []),
|
|
724
500
|
{ key: "inbox", href: "/", label: "Home", hint: "what needs you, what runs, and what waits" },
|
|
725
501
|
{ key: "board", href: "/tasks?view=board", label: "Board", hint: "lanes by state, with the order view" },
|
|
726
502
|
{ key: "tasks", href: "/tasks", label: "Task list", hint: "everything, filterable by state" },
|
|
@@ -729,9 +505,10 @@ export function workToolRows(scoped = false, _offersChat = false, offersCode = f
|
|
|
729
505
|
{ key: "ledger", href: "/ledger", label: "Audit log", hint: "who acted, what happened, and the result" },
|
|
730
506
|
{ key: "spend", href: "/spend", label: "Spend", hint: "what agent work cost, and monthly budgets" },
|
|
731
507
|
];
|
|
732
|
-
|
|
508
|
+
const shown = advanced ? rows : rows.filter(row => row.key !== "spend");
|
|
509
|
+
return scoped ? shown.filter(row => row.key !== "workbench" && row.key !== "spend") : shown;
|
|
733
510
|
}
|
|
734
|
-
export function settingsRows(scoped = false, offersSettings = false) {
|
|
511
|
+
export function settingsRows(scoped = false, offersSettings = false, advanced = true) {
|
|
735
512
|
const rows = [
|
|
736
513
|
...(offersSettings ? [{ key: "settings", href: "/settings", label: "Settings", hint: "agent defaults, alerts, credentials" }] : []),
|
|
737
514
|
{ key: "fleet", href: "/fleet", label: "Fleet", hint: "who is working, and on what" },
|
|
@@ -740,13 +517,11 @@ export function settingsRows(scoped = false, offersSettings = false) {
|
|
|
740
517
|
{ key: "mode", href: "/mode", label: "Operating mode", hint: "how much this project may do without asking" },
|
|
741
518
|
{ key: "system", href: "/system", label: "System", hint: "workers, providers, and grants" },
|
|
742
519
|
];
|
|
743
|
-
|
|
520
|
+
const shown = advanced ? rows : rows.filter(row => row.key !== "fleet" && row.key !== "mode");
|
|
521
|
+
return scoped ? shown.filter(row => row.key === "people" || row.key === "settings") : shown;
|
|
744
522
|
}
|
|
745
|
-
/** Which accordion group opens by default for a given active page. */
|
|
746
523
|
export const TOOL_KEYS = new Set(["code", "inbox", "board", "queue", "tasks", "workbench", "recipes", "ledger", "spend"]);
|
|
747
524
|
export const SETTINGS_KEYS = new Set(["settings", "fleet", "caps", "people", "mode", "system"]);
|
|
748
|
-
/** The builds screen's views (reduction pass §1): done, the review queue,
|
|
749
|
-
* and activity are ways of looking at builds, not destinations. */
|
|
750
525
|
export function buildsViews(current) {
|
|
751
526
|
const views = [
|
|
752
527
|
["builds", "/runs", "builds"],
|
|
@@ -758,13 +533,8 @@ export function buildsViews(current) {
|
|
|
758
533
|
}
|
|
759
534
|
export const CHEVRON_ICON = html `<svg class="chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">\
|
|
760
535
|
<path d="m6 9 6 6 6-6"/></svg>`;
|
|
761
|
-
/** The drag grip: a 2rem touch-sized handle that owns its touches
|
|
762
|
-
* (touch-action: none), so a finger on it drags instead of scrolling. */
|
|
763
536
|
export const GRIP_HANDLE = html `<span class="queue-handle" aria-hidden="true">${GRIP_ICON}</span>`;
|
|
764
|
-
/** Badges, labels and buttons read in sentence case, whatever word a record stores. */
|
|
765
537
|
export const sentenceCase = (word) => word.charAt(0).toUpperCase() + word.slice(1);
|
|
766
|
-
/** Only an https github.com pull URL earns an anchor (audit IV-11) — a
|
|
767
|
-
* corrupted row renders as text, never as navigation. */
|
|
768
538
|
export function safePrUrl(url) {
|
|
769
539
|
if (url === null)
|
|
770
540
|
return null;
|
|
@@ -780,38 +550,22 @@ export function safePrUrl(url) {
|
|
|
780
550
|
return null;
|
|
781
551
|
}
|
|
782
552
|
}
|
|
783
|
-
/** A shortened fingerprint for display — enough to compare by eye; the
|
|
784
|
-
* full value rides in the title attribute and in every form field. */
|
|
785
553
|
export function shortDigest(digest) {
|
|
786
554
|
return digest.length <= 12 ? html `${digest}` : html `<span title="${digest}">${digest.slice(0, 12)}…</span>`;
|
|
787
555
|
}
|
|
788
|
-
/** One display line, bounded — turn text is data, never layout. */
|
|
789
556
|
export function oneLineOf(text, cap) {
|
|
790
557
|
const flat = text.replace(/\s+/g, " ").trim();
|
|
791
558
|
return flat.length <= cap ? flat : `${flat.slice(0, cap - 1)}…`;
|
|
792
559
|
}
|
|
793
|
-
/**
|
|
794
|
-
* The board's clocks tick in the page: each <time data-tick> counts up from
|
|
795
|
-
* its datetime, measured against the server's own now (the board's data-now)
|
|
796
|
-
* so a skewed device clock cannot run them backwards. The server-rendered
|
|
797
|
-
* minutes are the answer without script.
|
|
798
|
-
*/
|
|
799
560
|
export function boardTickScript(regionId = "board-region") {
|
|
800
561
|
return (`(function(){var seen=null,offset=0;var region=document.getElementById(${JSON.stringify(regionId)});` +
|
|
801
562
|
`function fmt(s){if(s<0)s=0;var h=Math.floor(s/3600),m=Math.floor(s%3600/60),x=s%60;return h>0?h+"h "+(m<10?"0":"")+m+"m":m+":"+(x<10?"0":"")+x;}` +
|
|
802
563
|
`function run(){var scope=region||document;var anchor=scope.querySelector("[data-now]");var v=anchor?anchor.getAttribute("data-now"):null;` +
|
|
803
564
|
`if(v!==null&&v!==seen){seen=v;var n=Number(v);offset=isFinite(n)?n-Date.now():0;}` +
|
|
804
565
|
`var now=Date.now()+offset;scope.querySelectorAll("time[data-tick]").forEach(function(t){var at=Date.parse(t.getAttribute("datetime")||"");if(isNaN(at))return;var text=fmt(Math.floor((now-at)/1000));if(t.textContent!==text)t.textContent=text;});}` +
|
|
805
|
-
// A swapped region brings back the server's minutes, so a swap (the region's children replaced — never a clock's
|
|
806
|
-
// own text) ticks at once and no clock flickers back to them. Hidden tabs do not tick.
|
|
807
566
|
`run();setInterval(function(){if(!document.hidden)run();},1000);document.addEventListener("visibilitychange",function(){if(!document.hidden)run();});` +
|
|
808
567
|
`if(region&&typeof MutationObserver==="function")new MutationObserver(run).observe(region,{childList:true});})();`);
|
|
809
568
|
}
|
|
810
|
-
/**
|
|
811
|
-
* A page's script with one more added (docs/plans/task-page-in-app.md §1). All or nothing: `app` survives only when
|
|
812
|
-
* every part has it, so a script the app does not cover keeps the whole page a document, and a page never gets half
|
|
813
|
-
* its behaviour from the string and half from the app.
|
|
814
|
-
*/
|
|
815
569
|
export function withScript(base, add) {
|
|
816
570
|
const app = base === undefined ? add.app : base.app !== undefined && add.app !== undefined ? [...base.app, ...add.app] : undefined;
|
|
817
571
|
return { script: (base?.script ?? "") + add.script, fetches: (base?.fetches ?? false) || (add.fetches ?? false), ...(app === undefined ? {} : { app }) };
|