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/pages.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { advancedShownNow } from "../advanced-view.js";
|
|
1
2
|
import { projectOutcomes } from '../project-outcomes.js';
|
|
2
3
|
import { steerControlsFor } from "../steer-controls.js";
|
|
3
4
|
import { canReveal, cdCommandOf, localCheckoutOf } from "../checkout-proof.js";
|
|
@@ -5,7 +6,6 @@ import { instanceHttpAnswer } from "../console-instance.js";
|
|
|
5
6
|
import { handlersOf } from './handler-registry.js';
|
|
6
7
|
import { html, joinHtml, postForm, reauth } from "../html.js";
|
|
7
8
|
import * as kit from "./kit.js";
|
|
8
|
-
/** pages handlers, moved without changing their route bodies. */
|
|
9
9
|
import { createHmac, randomBytes } from "node:crypto";
|
|
10
10
|
import { realpathSync } from "node:fs";
|
|
11
11
|
import {} from "node:http";
|
|
@@ -75,13 +75,6 @@ import { flowAsks, releaseAsks, setupAsks } from "./home-asks.js";
|
|
|
75
75
|
import { workIndexPage } from "../work-index.js";
|
|
76
76
|
export function createPagesHandlers(runtime) {
|
|
77
77
|
const { identities, clock, lastChecks, store, visible, consoleProjects, restricted, ceiling, options, projectFamilyPeek, sendScreen, chromeFor, unscopedMode, admissionList, taskRepoOf, taskViewData, runVisible, evidenceRoot, workAccess, identify, liveCeiling, sessions, deletedRepos, authenticateApprover, authenticateCredential, projectOf, lookupSession, firstRunStepsNow, chatEnablement, leadPrincipal, leadConversationRows } = runtime;
|
|
78
|
-
// The filesystem browser (operator request): pick a project folder by
|
|
79
|
-
// looking, not typing. CONFINED to exactly what opening allows —
|
|
80
|
-
// explicit --repo mode has an enumerable list and gets no browser at
|
|
81
|
-
// all; --project-root mode browses its roots; unscoped mode (trust-
|
|
82
|
-
// everything, named as such) browses from the home directory.
|
|
83
|
-
// Directory NAMES only, never file contents; symlinks are resolved
|
|
84
|
-
// and re-checked so a link cannot walk out of the fence.
|
|
85
78
|
async function projectsBrowse(ctx) {
|
|
86
79
|
const { url, who, response } = ctx;
|
|
87
80
|
if (who.via !== "cookie")
|
|
@@ -92,11 +85,9 @@ export function createPagesHandlers(runtime) {
|
|
|
92
85
|
}
|
|
93
86
|
const asked = url.searchParams.get("at") ?? browseRoots[0];
|
|
94
87
|
const within = (path) => browseRoots.some(root => path === root || path.startsWith(`${root}/`));
|
|
95
|
-
// Spelled outside every root: refused before anything is read. Inside, the look resolves links and checks again.
|
|
96
88
|
if (!within(resolve(asked))) {
|
|
97
89
|
return refuse(response, who, 403, "that path is outside what this server may browse", "/projects/browse");
|
|
98
90
|
}
|
|
99
|
-
// Read off the console's thread (folder-look.ts): a folder that doesn't answer never freezes the console.
|
|
100
91
|
const looked = await listFolder(asked, browseRoots, { ...(options.folderLook === undefined ? {} : { runner: options.folderLook }), ...(options.folderLookMs === undefined ? {} : { deadlineMs: options.folderLookMs }) });
|
|
101
92
|
if (!looked.ok) {
|
|
102
93
|
return looked.why === "no-answer"
|
|
@@ -107,7 +98,6 @@ export function createPagesHandlers(runtime) {
|
|
|
107
98
|
if (canonical === null || !within(canonical)) {
|
|
108
99
|
return refuse(response, who, 403, "that path is outside what this server may browse", "/projects/browse");
|
|
109
100
|
}
|
|
110
|
-
// The look kept only folders inside a root; checked here again, as before.
|
|
111
101
|
const entries = looked.value.entries
|
|
112
102
|
.filter(one => within(one.path))
|
|
113
103
|
.sort((a, b) => Number(b.git) - Number(a.git) || a.name.localeCompare(b.name))
|
|
@@ -124,33 +114,16 @@ export function createPagesHandlers(runtime) {
|
|
|
124
114
|
registered,
|
|
125
115
|
}));
|
|
126
116
|
}
|
|
127
|
-
// The signed-in gh account's repositories, OFFERED instead of typed
|
|
128
|
-
// (operator request): read-only listing through the same hardened gh
|
|
129
|
-
// runner onboarding uses, every identity re-parsed strictly, and each
|
|
130
|
-
// row carries exactly ONE honest action — open (already a project
|
|
131
|
-
// here), add (a clone under a root this server may serve, never yet
|
|
132
|
-
// opened), or the EXISTING preview-and-password clone ceremony.
|
|
133
|
-
// Approver only: a viewer has no business enumerating private
|
|
134
|
-
// repository names.
|
|
135
117
|
async function projectsGithub(ctx) {
|
|
136
118
|
const { who, response } = ctx;
|
|
137
119
|
if (store.isDemo())
|
|
138
120
|
return refuse(response, who, 403, "the sandbox never talks to GitHub");
|
|
139
|
-
// The last listing (docs/plans/get-side-effects.md): List repositories posts; opening the page asks GitHub nothing.
|
|
140
121
|
const listed = lastChecks.known("github-repos")?.value ?? null;
|
|
141
|
-
// What this machine already has, matched by the clone's own recorded
|
|
142
|
-
// origin — registered projects first, then the immediate children of
|
|
143
|
-
// the configured roots. Identities are compared case-insensitively
|
|
144
|
-
// (GitHub's rule); the FIRST match wins.
|
|
145
122
|
const localByIdentity = new Map();
|
|
146
123
|
const registered = new Set();
|
|
147
124
|
for (const project of store.listProjects())
|
|
148
125
|
if (visible(project.path))
|
|
149
126
|
registered.add(project.path);
|
|
150
|
-
// Roots are walked ONLY when there are listed repos to match against
|
|
151
|
-
// (finding 1), at most 400 folders a root. Every read runs off the
|
|
152
|
-
// console's thread (folder-look.ts): a folder that doesn't answer
|
|
153
|
-
// leaves its copies unmatched and the page says so.
|
|
154
127
|
const roots = listed !== null && listed.ok && listed.repos.length > 0 ? [...ceiling.roots] : [];
|
|
155
128
|
let localUnanswered = false;
|
|
156
129
|
if (registered.size > 0 || roots.length > 0) {
|
|
@@ -177,7 +150,6 @@ export function createPagesHandlers(runtime) {
|
|
|
177
150
|
now: clock(),
|
|
178
151
|
}));
|
|
179
152
|
}
|
|
180
|
-
// List repositories / Refresh list: ask the GitHub CLI signed in on this machine, then show the page.
|
|
181
153
|
async function projectsGithubList(ctx) {
|
|
182
154
|
const { who, response } = ctx;
|
|
183
155
|
if (store.isDemo())
|
|
@@ -189,15 +161,12 @@ export function createPagesHandlers(runtime) {
|
|
|
189
161
|
const { url, who, response } = ctx;
|
|
190
162
|
return void projectsScreen(response, who, url.searchParams.get("said"), 200, safeReturn(url.searchParams.get("return")), "said");
|
|
191
163
|
}
|
|
192
|
-
// Home (UI revamp wave B): what needs this person, four counts that agree with the Tasks filters, and the lead's box.
|
|
193
|
-
// A token or a restricted session keeps landing on Tasks; a first run with nothing filed yet keeps its checklist in the chat.
|
|
194
164
|
async function homeRedirect(ctx) {
|
|
195
165
|
const { who, response, now, project } = ctx;
|
|
196
166
|
if (who.via !== "cookie" || restricted())
|
|
197
167
|
return redirect(response, "/tasks");
|
|
198
168
|
if (firstRunStepsNow(now) !== null && !store.hasAnyWork())
|
|
199
169
|
return redirect(response, "/chat");
|
|
200
|
-
// One scope for the page and the chrome around it: the project its address names (proved by the router), else all.
|
|
201
170
|
const chrome = chromeFor(project, "none");
|
|
202
171
|
const projects = chrome.projects ?? [];
|
|
203
172
|
const closedDoor = (taskId) => {
|
|
@@ -209,12 +178,9 @@ export function createPagesHandlers(runtime) {
|
|
|
209
178
|
const access = workAccess(), approver = who.role === "approver";
|
|
210
179
|
const view = { ...homeView({ store, now, access, evidenceRoot, project, projects, chat, canAnswer: approver, approver, closedDoor,
|
|
211
180
|
leadMessage: chat ? leadLastMessage(who, now) : null, asks: homeAsksFor(who, access, now, project) }),
|
|
212
|
-
// Until the first result: the welcome's three steps stay one link away.
|
|
213
181
|
setup: firstRunStepsNow(now) !== null ? "/welcome" : null };
|
|
214
182
|
return sendScreen(response, 200, screen("Home", html `<div data-kit-page><h1>Home</h1><p>${view.say}</p><p><a href="/tasks">Tasks</a></p></div>`, { chrome, workspace: { view } }));
|
|
215
183
|
}
|
|
216
|
-
// Search (UI revamp wave B): the ⌘K menu's "See all results". The places come from the page; the tasks here are the
|
|
217
|
-
// most recent ones in view (live and archived), matched on their title and id. Reads only.
|
|
218
184
|
async function searchPage(ctx) {
|
|
219
185
|
const { url, response, now } = ctx;
|
|
220
186
|
const q = (url.searchParams.get("q") ?? "").replace(/[\p{Cc}\p{Cf}]/gu, " ").trim().slice(0, 200);
|
|
@@ -236,8 +202,6 @@ export function createPagesHandlers(runtime) {
|
|
|
236
202
|
const view = { kind: "search", q, tasks, truncated: live.nextCursor !== null || archived.nextCursor !== null };
|
|
237
203
|
return sendScreen(response, 200, screen("Search", html `<div data-kit-page><h1>Search</h1><form action="/search"><input type="search" name="q" value="${q}" aria-label="Search"></form></div>`, { chrome: chromeFor(null, "none"), workspace: { view } }));
|
|
238
204
|
}
|
|
239
|
-
// The board's old name; bookmarks keep working. A GET-only alias, so a
|
|
240
|
-
// plain 302 — never the shared 303 helper, which belongs to POST landings.
|
|
241
205
|
async function morningAlias(ctx) {
|
|
242
206
|
const { response } = ctx;
|
|
243
207
|
response.writeHead(302, { ...SAFETY, Location: "/" });
|
|
@@ -254,15 +218,11 @@ export function createPagesHandlers(runtime) {
|
|
|
254
218
|
const before = url.searchParams.get("before");
|
|
255
219
|
if (before !== null && (!/^[1-9][0-9]{0,14}$/.test(before) || !Number.isSafeInteger(Number(before))))
|
|
256
220
|
return refuse(response, who, 400, "Invalid ledger cursor.", "/ledger");
|
|
257
|
-
// Events that belong to no project (sign-ins, accounts, installation policy) are an instance operator's to read.
|
|
258
221
|
const query = { repos: chosen === "" ? admitted : [chosen], instance: chosen === "" && store.isInstanceOperator(who.name),
|
|
259
222
|
actor: (url.searchParams.get("actor") ?? "").slice(0, 200), outcome: (url.searchParams.get("outcome") ?? "").slice(0, 100),
|
|
260
223
|
source: url.searchParams.get("source") ?? "", taskId: (url.searchParams.get("task") ?? "").slice(0, 200) };
|
|
261
224
|
if (url.searchParams.get("format") === "csv") {
|
|
262
225
|
const generation = store.accountOf(who.name)?.generation;
|
|
263
|
-
// Descending immutable IDs pin the export at its first read; later
|
|
264
|
-
// arrivals cannot duplicate or extend it. Yield between bounded pages
|
|
265
|
-
// and honor backpressure/disconnects, so exports cannot fill memory.
|
|
266
226
|
const first = store.actionLedger({ ...query, limit: 100 });
|
|
267
227
|
async function* chunks() {
|
|
268
228
|
yield LEDGER_CSV_HEADER;
|
|
@@ -276,11 +236,10 @@ export function createPagesHandlers(runtime) {
|
|
|
276
236
|
const cursor = page.at(-1).id;
|
|
277
237
|
await yieldEventLoop();
|
|
278
238
|
const next = store.actionLedger({ ...query, before: cursor, limit: 100 });
|
|
279
|
-
// Pages only ever move to older entries; one that doesn't is the end.
|
|
280
239
|
page = next.length > 0 && next[0].id < cursor ? next : [];
|
|
281
240
|
}
|
|
282
241
|
}
|
|
283
|
-
response.writeHead(200, { "content-type": "text/csv; charset=utf-8", "content-disposition": 'attachment; filename="
|
|
242
|
+
response.writeHead(200, { "content-type": "text/csv; charset=utf-8", "content-disposition": 'attachment; filename="toolroll-actions.csv"', "cache-control": "no-store", "x-content-type-options": "nosniff" });
|
|
284
243
|
try {
|
|
285
244
|
await pipeline(Readable.from(chunks()), response);
|
|
286
245
|
}
|
|
@@ -289,7 +248,6 @@ export function createPagesHandlers(runtime) {
|
|
|
289
248
|
}
|
|
290
249
|
return;
|
|
291
250
|
}
|
|
292
|
-
// v103: the chain is sealed and checked before it's shown; an operator sees the checkpoint to copy off the machine.
|
|
293
251
|
const report = store.ledgerChain();
|
|
294
252
|
const operator = who.via === "cookie" && store.isInstanceOperator(who.name);
|
|
295
253
|
const latest = store.ledgerCheckpoints(1)[0] ?? null;
|
|
@@ -300,27 +258,21 @@ export function createPagesHandlers(runtime) {
|
|
|
300
258
|
return respond(response, 200, "application/json; charset=utf-8", JSON.stringify(checkResponse("ledgerPage", { chain: { ok: report.ok, entries: report.entries, through: report.through, head: report.head, problem: report.problem }, entries: rows.slice(0, 50), nextBefore: rows.length > 50 ? rows[49].id : null })));
|
|
301
259
|
return sendScreen(response, 200, screen("Audit log", ledgerBody(rows, projects, url.searchParams, chainView), { chrome: chromeFor(chosen === "" ? null : chosen, "ledger", undefined, chosen === "" ? "all" : "project") }));
|
|
302
260
|
}
|
|
303
|
-
// The activity summary lives on Home now (UI revamp wave B); the old address keeps answering, as a GET alias.
|
|
304
261
|
async function activityPage(ctx) {
|
|
305
262
|
const { response } = ctx;
|
|
306
263
|
response.writeHead(302, { ...SAFETY, Location: "/" });
|
|
307
264
|
response.end();
|
|
308
265
|
return;
|
|
309
266
|
}
|
|
310
|
-
// A GET-only alias, a plain 302 (like morningAlias): an old address lands on the part of Agents that took it over.
|
|
311
267
|
const aliasTo = (location) => async (ctx) => {
|
|
312
268
|
ctx.response.writeHead(302, { ...SAFETY, Location: location });
|
|
313
269
|
ctx.response.end();
|
|
314
270
|
};
|
|
315
|
-
// System became part of Agents (UI revamp wave B): the model per phase and the computers that build.
|
|
316
271
|
const systemScreen = aliasTo("/agents#models");
|
|
317
|
-
// Terminals live on their own page (/term, its own bundle); the Agents area's address for them leads there.
|
|
318
272
|
const agentsTerminals = aliasTo("/term");
|
|
319
|
-
// Peek became the Agents board: one place to check on every running agent (agents-board.ts).
|
|
320
273
|
async function peekPage(ctx) {
|
|
321
274
|
return redirect(ctx.response, "/agents");
|
|
322
275
|
}
|
|
323
|
-
/** What the board says after a Reply or a steer, in fixed words (never text from the address). */
|
|
324
276
|
const AGENT_SAID = {
|
|
325
277
|
replied: { tone: "info", text: "Reply sent. The agent reads it at its next check." },
|
|
326
278
|
steered: { tone: "info", text: "Note sent. It shows in the conversation with whether the agent has read it." },
|
|
@@ -343,12 +295,6 @@ export function createPagesHandlers(runtime) {
|
|
|
343
295
|
"reveal-mac-only": { tone: "error", text: "Show in Finder works on a Mac. Copy the command instead." },
|
|
344
296
|
"reveal-failed": { tone: "error", text: "Finder didn't show it. The path is above; copy the command instead." },
|
|
345
297
|
};
|
|
346
|
-
/**
|
|
347
|
-
* The opened agent's head (docs/plans/one-page-task-and-agent.md): its task's status in the task page's own words and
|
|
348
|
-
* that status's one action as a link to the task page tab holding its form, and where this run opens there — a
|
|
349
|
-
* result (the shared predicate: a finished builder or scout run) on the Result tab at this run, a plan on the Plan
|
|
350
|
-
* tab, anything else on its record.
|
|
351
|
-
*/
|
|
352
298
|
function agentTaskHeadOf(taskId, runId, live, access, now) {
|
|
353
299
|
const family = store.taskFamilyOf(taskId, access.repos, access.includeUnplaced);
|
|
354
300
|
const root = family?.root.id ?? taskId;
|
|
@@ -364,7 +310,6 @@ export function createPagesHandlers(runtime) {
|
|
|
364
310
|
if (assignment !== null) {
|
|
365
311
|
const words = assignmentTaskStatusOf(assignment);
|
|
366
312
|
const wants = words.primaryAction?.href ?? "";
|
|
367
|
-
// A result to review is on the Result tab; everything else the task page heads with (the approval, a retry…).
|
|
368
313
|
const href = /^\/review\?result=|[?&]result=/.test(wants) ? `${taskHref(root)}?tab=result` : taskHref(root);
|
|
369
314
|
task = { headline: words.headline, sentence: words.sentence, tone: words.tone, action: { label: words.primaryAction?.label ?? "Open task", href } };
|
|
370
315
|
}
|
|
@@ -374,23 +319,18 @@ export function createPagesHandlers(runtime) {
|
|
|
374
319
|
}
|
|
375
320
|
return { task, open };
|
|
376
321
|
}
|
|
377
|
-
/** After a retire: fixed words naming a computer the store knows as retired (never text from the address). */
|
|
378
322
|
function retiredSaid(name) {
|
|
379
323
|
if (name === null)
|
|
380
324
|
return null;
|
|
381
325
|
const known = store.listRunners().find(one => one.name === name && one.retiredAt !== null);
|
|
382
326
|
return known === undefined ? null : { tone: "info", text: `${known.name} is retired. It takes no more work; tasks reserved for it wait until you move them.` };
|
|
383
327
|
}
|
|
384
|
-
// The Agents board (one place to check on running agents): rows by state, and the opened agent's live view.
|
|
385
328
|
async function agentsPage(ctx) {
|
|
386
329
|
const { url, who, response, project } = ctx;
|
|
387
330
|
const now = clock();
|
|
388
331
|
const access = workAccess();
|
|
389
332
|
const asked = url.searchParams.get("run");
|
|
390
|
-
// The Live grid only watches (docs/plans/agents-view.md §3): it branches off before an opened agent is built, so
|
|
391
|
-
// viewing it never marks a run seen, takes a watch or offers a composer — a reload of ?view=live&run=… included.
|
|
392
333
|
const watching = url.searchParams.get("view") === "live";
|
|
393
|
-
// Live is a browser session's only, like its reads (no token sees the grid).
|
|
394
334
|
if (watching && who.via !== "cookie")
|
|
395
335
|
return respond(response, 403, "text/plain; charset=utf-8", "The Live view is for a signed-in browser.");
|
|
396
336
|
let selected = null;
|
|
@@ -398,49 +338,38 @@ export function createPagesHandlers(runtime) {
|
|
|
398
338
|
const run = store.getRun(Number(asked));
|
|
399
339
|
const facts = run === null || !runVisible(run) ? null : agentFactsFor(store, run.id, access, who.name);
|
|
400
340
|
if (facts !== null) {
|
|
401
|
-
// Opening a finished agent is viewing it: the shell says so with a keyed POST /agents/seen (easy-start N1: a page
|
|
402
|
-
// load never writes), which leaves this person's unread Done.
|
|
403
341
|
const live = facts.outcome === null;
|
|
404
342
|
const composer = live ? steerControlsFor(store, facts.taskId, facts.runId, now, who.role === "approver") : null;
|
|
405
343
|
const sealed = live ? null : sealedDiffOf(store, evidenceRoot, facts.runId);
|
|
406
|
-
// A reply's own word first; otherwise the note that the agent asked past the questions cap.
|
|
407
344
|
const said = AGENT_SAID[url.searchParams.get("said") ?? ""] ?? (facts.questionNote === null ? null : { tone: "info", text: facts.questionNote });
|
|
408
345
|
selected = {
|
|
409
346
|
...agentRowOf(store, facts, now, evidenceRoot), live,
|
|
410
347
|
question: live && facts.question !== null ? { ...facts.question, action: `${taskHref(facts.taskId)}/reply` } : null,
|
|
411
|
-
// The conversation's window: its notes answer anywhere; its transcript only from the machine that runs it (the window says so).
|
|
412
348
|
transcript: `/r/${facts.runId}?fragment=transcript&shape=records`,
|
|
413
|
-
// The live look at its checkout needs this machine's runner — the one running it — and pool, as the run page's does.
|
|
414
349
|
peek: live && options.localRunner !== undefined && run.runner === options.localRunner && options.poolRoot !== undefined ? `/r/${facts.runId}?fragment=peek` : null,
|
|
415
350
|
files: (sealed?.files ?? []).slice(0, 30).map(one => ({ path: one.path, added: one.additions, removed: one.deletions })),
|
|
416
351
|
filesMore: Math.max(0, (sealed?.fileCount ?? 0) - 30),
|
|
417
|
-
// A note goes only to an attempt that reads notes (steer-controls.ts); the composer says what it takes.
|
|
418
352
|
steer: composer?.steer ?? null,
|
|
419
353
|
controls: composer?.controls ?? null,
|
|
420
354
|
checkout: (() => {
|
|
421
355
|
if (!live || who.role !== "approver" || store.isDemo())
|
|
422
356
|
return null;
|
|
423
357
|
const proof = localCheckoutOf(store, facts.runId, { runner: options.localRunner, poolRoot: options.poolRoot }, now);
|
|
424
|
-
// Show in Finder only where it can work (a Mac); elsewhere the path and the command stand alone.
|
|
425
358
|
return proof.ok ? { path: proof.path, cd: cdCommandOf(proof.path), reveal: canReveal(options.revealPath !== undefined) ? `/r/${facts.runId}/reveal` : null } : null;
|
|
426
359
|
})(),
|
|
427
360
|
canAct: who.role === "approver" && !store.isDemo(),
|
|
428
361
|
taskHref: taskHref(facts.taskId),
|
|
429
|
-
// The run's own address: a finished result opens on its result page, anything else on its record.
|
|
430
362
|
resultHref: live ? null : `/r/${facts.runId}`,
|
|
431
363
|
...agentTaskHeadOf(facts.taskId, facts.runId, live, access, now),
|
|
432
364
|
room: `agent:${facts.runId}`, said,
|
|
433
365
|
};
|
|
434
366
|
}
|
|
435
367
|
}
|
|
436
|
-
// The Live grid is drawn in the browser from its own read-only reads (agents-live-view.tsx): no board facts here.
|
|
437
368
|
if (watching) {
|
|
438
369
|
const view = { kind: "agents", groups: [], selected: null, lanes: null, empty: null, live: true };
|
|
439
370
|
return sendScreen(response, 200, screen("Agents", html `<h1>Agents</h1><p class="meta">Live needs JavaScript.</p>`, { chrome: chromeFor(project, "runs"), workspace: { view } }));
|
|
440
371
|
}
|
|
441
372
|
const groups = agentsListOf(store, now, access, who.name, evidenceRoot);
|
|
442
|
-
// The installation's parts (what /fleet and /system showed) are for a person with access to all of it, as those
|
|
443
|
-
// pages were; a project-limited person sees their own agents only.
|
|
444
373
|
const installation = !restricted();
|
|
445
374
|
const windowAsked = url.searchParams.get("window");
|
|
446
375
|
const view = { kind: "agents", groups, selected, lanes: null,
|
|
@@ -460,12 +389,9 @@ export function createPagesHandlers(runtime) {
|
|
|
460
389
|
...group.rows.map(row => html `<p class="row"><a href="${row.href}"><strong>${row.title}</strong></a> <span class="meta">${[row.label, row.line].filter(Boolean).join(" \u00b7 ")}</span></p>`),
|
|
461
390
|
], "\n")), "\n"),
|
|
462
391
|
], "\n");
|
|
463
|
-
// The list reads itself while something builds, as /system did (forms being edited are kept); an opened agent
|
|
464
|
-
// follows its own room instead.
|
|
465
392
|
const refreshSeconds = selected !== null ? undefined : store.liveClaims(null, now).length > 0 ? 10 : installation ? 60 : undefined;
|
|
466
393
|
return sendScreen(response, 200, screen("Agents", fallback, { chrome: chromeFor(project, "runs"), workspace: { view }, ...(refreshSeconds === undefined ? {} : { refreshSeconds }) }));
|
|
467
394
|
}
|
|
468
|
-
// Fleet became the computers on Agents (UI revamp wave B): register, retire, reserved work and notes are there.
|
|
469
395
|
const fleetPage = aliasTo("/agents#computers");
|
|
470
396
|
async function ledgerExport(ctx) {
|
|
471
397
|
const { url, who, request, response, now } = ctx;
|
|
@@ -478,8 +404,6 @@ export function createPagesHandlers(runtime) {
|
|
|
478
404
|
const access = workAccess();
|
|
479
405
|
store.recordAction({ at: now.toISOString(), actor: who.name, repo: null, taskId: null, runId: null, action: "ledger exported", outcome: "exported", source: "access",
|
|
480
406
|
detail: `${from.slice(0, 10)} to ${last.slice(0, 10)}` });
|
|
481
|
-
// A piece at a time (a page of entries, or one pack), yielding between them, and stopping if the reader's access
|
|
482
|
-
// changes: their account, and the session or API token they came with (read without writing anything).
|
|
483
407
|
const generation = store.accountOf(who.name)?.generation;
|
|
484
408
|
const tokenId = who.via === "bearer" && who.token !== undefined ? parseApiToken(/^Bearer (so_\S+)$/.exec(request.headers.authorization ?? "")?.[1] ?? "")?.id ?? null : null;
|
|
485
409
|
const stillLive = () => {
|
|
@@ -493,7 +417,6 @@ export function createPagesHandlers(runtime) {
|
|
|
493
417
|
const token = store.apiTokenSecret(tokenId)?.row;
|
|
494
418
|
return token !== undefined && tokenLive(token, Date.now());
|
|
495
419
|
};
|
|
496
|
-
// The whole walk it starts from is shared by exports in the same minute; a reader who stops reading for a minute is let go.
|
|
497
420
|
const pieces = ledgerExportChunks(store, { from, to }, { repos: access.repos, instance: store.isInstanceOperator(who.name) }, access, who.name, now, evidenceRoot);
|
|
498
421
|
async function* chunks() {
|
|
499
422
|
for (const piece of pieces) {
|
|
@@ -504,7 +427,7 @@ export function createPagesHandlers(runtime) {
|
|
|
504
427
|
}
|
|
505
428
|
}
|
|
506
429
|
response.setTimeout(60_000, () => response.destroy());
|
|
507
|
-
response.writeHead(200, { "content-type": "application/json; charset=utf-8", "content-disposition": `attachment; filename="
|
|
430
|
+
response.writeHead(200, { "content-type": "application/json; charset=utf-8", "content-disposition": `attachment; filename="toolroll-audit-${from.slice(0, 10)}-to-${last.slice(0, 10)}.json"`,
|
|
508
431
|
"cache-control": "no-store", "x-content-type-options": "nosniff" });
|
|
509
432
|
try {
|
|
510
433
|
await pipeline(Readable.from(chunks()), response);
|
|
@@ -516,15 +439,11 @@ export function createPagesHandlers(runtime) {
|
|
|
516
439
|
}
|
|
517
440
|
async function menuPage(ctx) {
|
|
518
441
|
const { response, project } = ctx;
|
|
519
|
-
// The phone's overflow drawer as an honest page: every destination
|
|
520
|
-
// the tab bar does not carry, one tap away, no JavaScript — grouped
|
|
521
|
-
// under the same workflows/admin headings as the rail's accordion,
|
|
522
|
-
// with settings last, outside both.
|
|
523
442
|
const chrome = chromeFor(project, "menu");
|
|
524
443
|
const section = (label, rows) => html `<h2 class="menu-group-label">${label}</h2><div class="menu-list">${joinHtml(rows.map(row => html `<a class="menu-row" href="${row.href}"><strong>${row.label}</strong><span class="meta">${row.hint}</span></a>`), "\n")}</div>`;
|
|
525
444
|
return sendScreen(response, 200, screen("Workspace tools", joinHtml([
|
|
526
|
-
section("Work tools", workToolRows(chrome.projectScoped, chrome.chat, chrome.code)),
|
|
527
|
-
section("Settings", settingsRows(chrome.projectScoped, chrome.settings)),
|
|
445
|
+
section("Work tools", workToolRows(chrome.projectScoped, chrome.chat, chrome.code, advancedShownNow())),
|
|
446
|
+
section("Settings", settingsRows(chrome.projectScoped, chrome.settings, advancedShownNow())),
|
|
528
447
|
], "\n"), { chrome }));
|
|
529
448
|
}
|
|
530
449
|
async function capsScreen(ctx) {
|
|
@@ -537,14 +456,11 @@ export function createPagesHandlers(runtime) {
|
|
|
537
456
|
async function health(ctx) {
|
|
538
457
|
const { request, response } = ctx;
|
|
539
458
|
const health = store.telemetry.snapshot();
|
|
540
|
-
// Beside /healthz, for an instance operator: where the slowest recent console answers spent their time (route ids
|
|
541
|
-
// and milestones only).
|
|
542
459
|
const slow = slowRequestLines(store);
|
|
543
460
|
return request.headers.accept?.includes('application/json')
|
|
544
461
|
? respond(response, 200, 'application/json; charset=utf-8', JSON.stringify({ ...health, slowRequests: slow }))
|
|
545
462
|
: respond(response, 200, 'text/plain; charset=utf-8', `${healthWords(health)}\n${slow.length === 0 ? "" : `\nSlow console requests (over ${SLOW_REQUEST_MS} ms), newest first:\n${slow.join("\n")}\n`}`);
|
|
546
463
|
}
|
|
547
|
-
// v104: Prometheus metrics, for an instance operator (a scraper sends one's API token).
|
|
548
464
|
async function metrics(ctx) {
|
|
549
465
|
const { response, now } = ctx;
|
|
550
466
|
response.writeHead(200, { "content-type": "text/plain; version=0.0.4; charset=utf-8", "cache-control": "no-store", "x-content-type-options": "nosniff" });
|
|
@@ -566,15 +482,10 @@ export function createPagesHandlers(runtime) {
|
|
|
566
482
|
async function projectsSelect(ctx) {
|
|
567
483
|
const { who, response, posted } = ctx;
|
|
568
484
|
const body = readForm(posted, CONSOLE_FORMS.projectsSelect);
|
|
569
|
-
// Session-only project switching (E2): reads the registry, writes
|
|
570
|
-
// ONLY session.project — the durable upsert lives in /projects/open,
|
|
571
|
-
// which stays an approver's act. This is the one project verb a
|
|
572
|
-
// viewer may use.
|
|
573
485
|
if (who.via !== "cookie") {
|
|
574
486
|
return refuse(response, who, 403, "selecting a project is a browser session's act");
|
|
575
487
|
}
|
|
576
488
|
const askedPath = (body.get("path") ?? "").trim();
|
|
577
|
-
// Resolved off the console's thread (project-identity.ts): a folder that doesn't answer is said, never waited on.
|
|
578
489
|
const decidedOn = identities.generation();
|
|
579
490
|
const picked = askedPath === "" ? null : await identities.resolveNow(askedPath);
|
|
580
491
|
if (picked === "no-answer")
|
|
@@ -583,7 +494,6 @@ export function createPagesHandlers(runtime) {
|
|
|
583
494
|
if ((askedPath !== "" && canonicalPick === null) || (canonicalPick !== null && (!visible(canonicalPick) || !(await authorizedProject(liveCeiling(), canonicalPick))))) {
|
|
584
495
|
return refuse(response, who, 403, "that project is outside this console's reach");
|
|
585
496
|
}
|
|
586
|
-
// An identity that changed during the awaits above undoes what they proved.
|
|
587
497
|
if (identities.generation() !== decidedOn)
|
|
588
498
|
return refuse(response, who, 409, "a project folder changed while this was being checked — try again");
|
|
589
499
|
who.session.project = canonicalPick;
|
|
@@ -594,8 +504,6 @@ export function createPagesHandlers(runtime) {
|
|
|
594
504
|
async function projectsRemove(ctx) {
|
|
595
505
|
const { who, response, posted, now } = ctx;
|
|
596
506
|
const body = readForm(posted, CONSOLE_FORMS.projectsRemove);
|
|
597
|
-
// The reversible remove: off every list and the builder; tasks, results and settings stay. Deleting is
|
|
598
|
-
// Settings → Project → Delete project. The same admission code as `repos remove` (project-admission.ts).
|
|
599
507
|
const repo = body.get("repo") ?? "";
|
|
600
508
|
if (!consoleProjects().includes(repo))
|
|
601
509
|
return refuse(response, who, 403, "That project is outside your access.", "/settings/project");
|
|
@@ -613,8 +521,6 @@ export function createPagesHandlers(runtime) {
|
|
|
613
521
|
async function projectsOpen(ctx) {
|
|
614
522
|
const { who, response, posted, now } = ctx;
|
|
615
523
|
const body = readForm(posted, CONSOLE_FORMS.projectsOpen);
|
|
616
|
-
// Sessions only: a bearer caller names its project per request and has
|
|
617
|
-
// no session to mutate — refusing here keeps that boundary legible.
|
|
618
524
|
if (who.via !== "cookie") {
|
|
619
525
|
return refuse(response, who, 403, "opening a project is a browser session's act");
|
|
620
526
|
}
|
|
@@ -628,54 +534,35 @@ export function createPagesHandlers(runtime) {
|
|
|
628
534
|
if (canonical === null) {
|
|
629
535
|
return void projectsScreen(response, who, "that path does not exist on this server", 400, safeReturn(body.get("return")), "open");
|
|
630
536
|
}
|
|
631
|
-
// Authorization is the ceiling, then the path must actually be a git
|
|
632
|
-
// repository — validation with direct argv and a bound, never a shell.
|
|
633
|
-
// Both checks apply even to configured repos: naming a directory in
|
|
634
|
-
// config authorizes it; only being a repository makes it openable.
|
|
635
537
|
if (!(await authorizedProject(liveCeiling(), canonical))) {
|
|
636
538
|
return void projectsScreen(response, who, "that path is outside what this server was configured to serve", 403, safeReturn(body.get("return")), "open");
|
|
637
539
|
}
|
|
638
540
|
if (!(await isGitRepo(canonical))) {
|
|
639
541
|
return void projectsScreen(response, who, "that path is not a git repository", 400, safeReturn(body.get("return")), "open");
|
|
640
542
|
}
|
|
641
|
-
// An account limited to listed projects never widens its own list.
|
|
642
543
|
if (!visible(canonical)) {
|
|
643
544
|
return void projectsScreen(response, who, "That project is outside your access.", 403, safeReturn(body.get("return")), "open");
|
|
644
545
|
}
|
|
645
|
-
// An identity that changed during the awaits above undoes what they proved.
|
|
646
546
|
if (identities.generation() !== decidedOn)
|
|
647
547
|
return void projectsScreen(response, who, "a project folder changed while this was being checked — try again", 409, safeReturn(body.get("return")), "open");
|
|
648
|
-
// Opening an allowed repository admits it the same way `repos add` does
|
|
649
|
-
// (project-admission.ts). A co-located `up` notices the durable list and
|
|
650
|
-
// connects its builder; there is no separate restart or binding step.
|
|
651
|
-
// The admission asks again, inside its registry lock and its transaction, about the repo it proves.
|
|
652
548
|
const stillAllowed = (repo) => identities.generation() === decidedOn && visible(repo);
|
|
653
549
|
const admitted = await admitProject(store, { registryFile: options.registryPath ?? null, path: canonical, actor: { label: who.name, origin: "console" }, now, stillAllowed, resolveFolder: identities.resolveNow });
|
|
654
550
|
if (!admitted.ok) {
|
|
655
551
|
return void projectsScreen(response, who, admitted.reason === "not-git" ? "that path is not a git repository" : `that project is valid, but it could not be added — ${admitted.message}`, admitted.reason === "moved" ? 409 : 400, safeReturn(body.get("return")), "open");
|
|
656
552
|
}
|
|
657
|
-
// And once more before the session follows it.
|
|
658
553
|
if (!stillAllowed(admitted.repo))
|
|
659
554
|
return void projectsScreen(response, who, "a project folder changed while this was being checked — try again", 409, safeReturn(body.get("return")), "open");
|
|
660
555
|
deletedRepos.delete(admitted.repo);
|
|
661
556
|
who.session.project = admitted.repo;
|
|
662
557
|
who.session.projectRevision++;
|
|
663
|
-
// The switcher (board pass) opens a project from any screen and
|
|
664
|
-
// returns there — a same-site path only, never an off-site road.
|
|
665
558
|
return redirect(response, safeReturn(body.get("return")));
|
|
666
559
|
}
|
|
667
|
-
// Runner lifecycle, brought in from the terminal behind the same
|
|
668
|
-
// password step-up the console uses for every other credential-grade
|
|
669
|
-
// act. Register mints a token that is shown ONCE and stored only as a
|
|
670
|
-
// hash — the page that shows it renders no self-refreshing script, so
|
|
671
|
-
// the token is never re-rendered.
|
|
672
560
|
async function fleetRegister(ctx) {
|
|
673
561
|
const { who, request, response, posted, now } = ctx;
|
|
674
562
|
const body = readForm(posted, CONSOLE_FORMS.runnerRegister);
|
|
675
563
|
if (who.via !== "cookie")
|
|
676
564
|
return refuse(response, who, 403, "runner registration is a browser surface");
|
|
677
565
|
const token = body.get("token") ?? "";
|
|
678
|
-
// A worker credential is minted here: a credential act, a password typed now even with Passwordless on.
|
|
679
566
|
if (!authenticateCredential(who, token).ok) {
|
|
680
567
|
return refuse(response, who, 403, "registering a worker takes your password, typed again", "/agents#computers");
|
|
681
568
|
}
|
|
@@ -688,16 +575,12 @@ export function createPagesHandlers(runtime) {
|
|
|
688
575
|
return refuse(response, who, 400, "capacity is a whole number of tasks, 1 to 64", "/agents#computers");
|
|
689
576
|
}
|
|
690
577
|
const { token: minted } = registerRunner(store, { name, host: hostname(), capacity, now });
|
|
691
|
-
// A kit reading page (UI revamp wave B), back to the computers on Agents. The token is text to select: a Copy
|
|
692
|
-
// button would need a script, and this page carries none.
|
|
693
578
|
const tokenScreen = screen("fleet", html `<div data-kit-page>${kit.phoneHeader("Computer registered", { back: "/agents#computers" })}${kit.doc(kit.docHeader({ title: `${name} is registered`, back: ["/agents#computers", "Agents"], same: true, meta: html `Takes up to ${capacity} ${capacity === 1 ? "task" : "tasks"} at a time` }), kit.slots({
|
|
694
579
|
status: html `<h2>Its token, shown once</h2>`,
|
|
695
580
|
text: "Only a hash is kept, so copy it now.",
|
|
696
581
|
acts: html `<code class="k-code" data-runner-token>${minted}</code>`,
|
|
697
582
|
terms: "Keep it beside the computer, in a file only you can read (0600) or a secrets manager. If it's lost, register the name again; its old claims are taken back.",
|
|
698
|
-
}), kit.acts(kit.btn("Back to Agents", { href: "/agents#computers" })))}</div>`,
|
|
699
|
-
// A one-time secret on screen: no script of any kind rides along.
|
|
700
|
-
{ chrome: chromeFor(projectOf(who, request) ?? null, "fleet"), forceSensitive: true });
|
|
583
|
+
}), kit.acts(kit.btn("Back to Agents", { href: "/agents#computers" })))}</div>`, { chrome: chromeFor(projectOf(who, request) ?? null, "fleet"), forceSensitive: true });
|
|
701
584
|
return sendScreen(response, 200, tokenScreen);
|
|
702
585
|
}
|
|
703
586
|
async function fleetRetire(ctx) {
|
|
@@ -713,14 +596,11 @@ export function createPagesHandlers(runtime) {
|
|
|
713
596
|
const retired = store.retireRunner(name, now);
|
|
714
597
|
if (!retired)
|
|
715
598
|
return refuse(response, who, 404, `no worker \`${name}\``, "/agents#computers");
|
|
716
|
-
// Agents says it in fixed words, naming the computer only once the store knows it as retired (retiredSaid).
|
|
717
599
|
return redirect(response, `/agents?retired=${encodeURIComponent(name)}#computers`);
|
|
718
600
|
}
|
|
719
601
|
async function onboardPreview(ctx) {
|
|
720
602
|
const { who, response, posted } = ctx;
|
|
721
603
|
const body = readForm(posted, CONSOLE_FORMS.onboard);
|
|
722
|
-
// Repo onboarding (findings 1-39): bearer and demo refuse BEFORE any
|
|
723
|
-
// gh call; the console flow exists only on root-configured serves.
|
|
724
604
|
if (who.via !== "cookie")
|
|
725
605
|
return refuse(response, who, 403, "adding repositories is a browser session's act");
|
|
726
606
|
if (store.isDemo())
|
|
@@ -732,7 +612,6 @@ export function createPagesHandlers(runtime) {
|
|
|
732
612
|
const shape = parseGithubRepo(body.get("repo") ?? "");
|
|
733
613
|
if (!shape.ok)
|
|
734
614
|
return projectsScreen(response, who, shape.problem, 400, "/", "link");
|
|
735
|
-
// Roots by INDEX (finding 13) — a posted path is never accepted.
|
|
736
615
|
const rootIndex = Number(body.get("root") ?? "0");
|
|
737
616
|
const rootRaw = Number.isInteger(rootIndex) ? ceiling.roots[rootIndex] : undefined;
|
|
738
617
|
if (rootRaw === undefined)
|
|
@@ -746,16 +625,12 @@ export function createPagesHandlers(runtime) {
|
|
|
746
625
|
const reparsed = parseGithubRepo(previewed.preview.nameWithOwner);
|
|
747
626
|
if (!reparsed.ok)
|
|
748
627
|
return projectsScreen(response, who, "GitHub named a repository shape this console refuses", 400, "/", "link");
|
|
749
|
-
// The hook boundary is NORMALIZED like the real preview would be
|
|
750
|
-
// (verification finding 2): a size that is not a nonnegative finite
|
|
751
|
-
// number is unknown, and unknown is LARGE.
|
|
752
628
|
const diskUsageKib = typeof previewed.preview.diskUsageKib === "number" && Number.isFinite(previewed.preview.diskUsageKib) && previewed.preview.diskUsageKib >= 0
|
|
753
629
|
? previewed.preview.diskUsageKib
|
|
754
630
|
: null;
|
|
755
631
|
const target = join(root, reparsed.name);
|
|
756
632
|
if (dirname(target) !== root)
|
|
757
633
|
return projectsScreen(response, who, "the target escaped its root — refused", 400, "/", "link");
|
|
758
|
-
// The session-held record (finding 14): swept at mint, capped 3.
|
|
759
634
|
const session = who.session;
|
|
760
635
|
session.onboard ??= new Map();
|
|
761
636
|
const cutoff = Date.now() - 10 * 60_000;
|
|
@@ -778,8 +653,6 @@ export function createPagesHandlers(runtime) {
|
|
|
778
653
|
async function onboardConfirm(ctx) {
|
|
779
654
|
const { who, request, response, posted, now } = ctx;
|
|
780
655
|
const body = readForm(posted, CONSOLE_FORMS.onboard);
|
|
781
|
-
// Repo onboarding (findings 1-39): bearer and demo refuse BEFORE any
|
|
782
|
-
// gh call; the console flow exists only on root-configured serves.
|
|
783
656
|
if (who.via !== "cookie")
|
|
784
657
|
return refuse(response, who, 403, "adding repositories is a browser session's act");
|
|
785
658
|
if (store.isDemo())
|
|
@@ -788,12 +661,6 @@ export function createPagesHandlers(runtime) {
|
|
|
788
661
|
return refuse(response, who, 403, "adding from GitHub is not supported on Windows yet");
|
|
789
662
|
if (ceiling.roots.length === 0)
|
|
790
663
|
return projectsScreen(response, who, "naming where repositories live takes --project-root", 400, "/", "clone");
|
|
791
|
-
// CONFIRM: password, then session liveness AGAIN via lookupSession
|
|
792
|
-
// (finding 22/33) — the record is consumed from the RETURNED live
|
|
793
|
-
// session, synchronously, before the first await. A full session types
|
|
794
|
-
// its password (or Passwordless stands in); a laptop's local owner has
|
|
795
|
-
// none: inside this row's add-project admission the prover's local-owner
|
|
796
|
-
// branch proves it (scope.ts proveAccountNow), whatever the field holds.
|
|
797
664
|
const password = body.get("token") ?? "";
|
|
798
665
|
if (!authenticateApprover(who, password).ok) {
|
|
799
666
|
return projectsScreen(response, who, "cloning takes your password, typed again", 403, "/", "clone");
|
|
@@ -808,8 +675,7 @@ export function createPagesHandlers(runtime) {
|
|
|
808
675
|
live.onboard?.delete(nonce);
|
|
809
676
|
return projectsScreen(response, who, "that preview expired or was already used — preview again", 400, "/", "clone");
|
|
810
677
|
}
|
|
811
|
-
live.onboard?.delete(nonce);
|
|
812
|
-
// Identities as this confirmation found them: the admission below re-checks against them (project-identity.ts).
|
|
678
|
+
live.onboard?.delete(nonce);
|
|
813
679
|
const decidedOn = identities.generation();
|
|
814
680
|
if (record.large && body.get("big-ok") !== "1") {
|
|
815
681
|
return projectsScreen(response, who, "that repository is large (or its size is unknown) — tick the box to clone it anyway", 400, "/", "clone");
|
|
@@ -828,13 +694,9 @@ export function createPagesHandlers(runtime) {
|
|
|
828
694
|
});
|
|
829
695
|
if (!cloned.ok)
|
|
830
696
|
return projectsScreen(response, who, cloned.message, 400, "/", "clone");
|
|
831
|
-
// The clone answer is BOUND to the record's exact target (verification
|
|
832
|
-
// finding 2): whatever produced it — the real primitive or a test
|
|
833
|
-
// hook — an answer naming any other path never enrolls or opens.
|
|
834
697
|
if (cloned.target !== record.target) {
|
|
835
698
|
return projectsScreen(response, who, "the clone answered with a different path than the preview promised — refused; nothing was enrolled", 400, "/", "clone");
|
|
836
699
|
}
|
|
837
|
-
// authorizedProject AFTER the repository exists (finding 20).
|
|
838
700
|
const clonedAt = await identities.resolveNow(cloned.target);
|
|
839
701
|
const admitted = typeof clonedAt === "string" && clonedAt !== "no-answer" && (await authorizedProject(liveCeiling(), clonedAt)) ? clonedAt : null;
|
|
840
702
|
if (admitted === null) {
|
|
@@ -854,15 +716,6 @@ export function createPagesHandlers(runtime) {
|
|
|
854
716
|
? `${projectName(admitted)} is ready — the builder is connecting automatically`
|
|
855
717
|
: `${admitted} is ready and open`, 200, "/", "said");
|
|
856
718
|
}
|
|
857
|
-
/**
|
|
858
|
-
* The opener: every project inside the ceiling, most recently opened
|
|
859
|
-
* first, plus repos the queue has seen — shown only when the ceiling
|
|
860
|
-
* admits them — and an open-by-path field validated server-side. A
|
|
861
|
-
* registry row never confers access; this page only offers what the
|
|
862
|
-
* server was configured to allow.
|
|
863
|
-
*/
|
|
864
|
-
/** The projects this person may open: the registered ones they can see, most recently opened first, then the
|
|
865
|
-
* configured ones the queue has seen. A registry row never confers access. */
|
|
866
719
|
function visibleProjects() {
|
|
867
720
|
const recent = store.listProjects().filter(one => visible(one.path));
|
|
868
721
|
const recentPaths = new Set(recent.map(one => one.path));
|
|
@@ -874,7 +727,6 @@ export function createPagesHandlers(runtime) {
|
|
|
874
727
|
}
|
|
875
728
|
return { recent, candidates: [...candidates] };
|
|
876
729
|
}
|
|
877
|
-
/** A cheap peek per project: one small set of COUNTs, scoped to the exact repo. */
|
|
878
730
|
function peekOf(path, now) {
|
|
879
731
|
try {
|
|
880
732
|
return projectFamilyPeek(path, now);
|
|
@@ -887,9 +739,6 @@ export function createPagesHandlers(runtime) {
|
|
|
887
739
|
const now = clock();
|
|
888
740
|
const { recent, candidates } = visibleProjects();
|
|
889
741
|
const open = who.via === "cookie" ? who.session.project : null;
|
|
890
|
-
// Onboarding availability (findings 2/28/32/39): a cookie session on a
|
|
891
|
-
// root-configured, non-demo, POSIX serve gets the live card; everybody
|
|
892
|
-
// else gets the card DISABLED with the reason in words.
|
|
893
742
|
const onboardState = restricted() || who.via !== "cookie"
|
|
894
743
|
? { enabled: false, why: "An instance operator adds projects." }
|
|
895
744
|
: store.isDemo()
|
|
@@ -914,10 +763,6 @@ export function createPagesHandlers(runtime) {
|
|
|
914
763
|
browsable: !restricted() && (ceiling.roots.length > 0 || unscopedMode),
|
|
915
764
|
}));
|
|
916
765
|
}
|
|
917
|
-
/** One project's reading page (/projects/<name>). A GET only reads (docs/plans/get-side-effects.md): it never
|
|
918
|
-
* switches the session's project; its Open project button posts to /projects/select, which proves it again. The
|
|
919
|
-
* name is found among the projects this person may open (projectsSelect's rule: visible here and inside the
|
|
920
|
-
* ceiling); a name it can't see answers exactly like one that doesn't exist. */
|
|
921
766
|
async function projectFound(ctx, page) {
|
|
922
767
|
const { url, who, response } = ctx;
|
|
923
768
|
let name = "";
|
|
@@ -941,7 +786,6 @@ export function createPagesHandlers(runtime) {
|
|
|
941
786
|
}
|
|
942
787
|
return { ...found, ambiguous: named.length > 1 };
|
|
943
788
|
}
|
|
944
|
-
/** A project's flaky tests list and one row's history. Reads only; found exactly as the project's page is. */
|
|
945
789
|
async function projectFlakyHandler(ctx) {
|
|
946
790
|
const { url, who, response, now } = ctx;
|
|
947
791
|
const found = await projectFound(ctx, "flaky");
|
|
@@ -968,7 +812,6 @@ export function createPagesHandlers(runtime) {
|
|
|
968
812
|
return;
|
|
969
813
|
const open = who.via === "cookie" ? who.session.project : null;
|
|
970
814
|
const path = found.path;
|
|
971
|
-
// The tasks that wait on this person or run, from the board's own classification, scoped to this one project.
|
|
972
815
|
const snapshot = store.boardScoped(path, now, 200, null);
|
|
973
816
|
const cards = snapshot.tasks
|
|
974
817
|
.filter(facts => facts.repo === path)
|
|
@@ -996,7 +839,6 @@ export function createPagesHandlers(runtime) {
|
|
|
996
839
|
activity, now,
|
|
997
840
|
}));
|
|
998
841
|
}
|
|
999
|
-
/** The named project's code map address, for this account; null when it isn't one they can see. */
|
|
1000
842
|
async function mapProject(ctx, suffix) {
|
|
1001
843
|
let name = "";
|
|
1002
844
|
try {
|
|
@@ -1046,7 +888,6 @@ export function createPagesHandlers(runtime) {
|
|
|
1046
888
|
const secret = options.instanceSecret?.() ?? null;
|
|
1047
889
|
if (secret === null)
|
|
1048
890
|
return respond(response, 404, "application/json; charset=utf-8", JSON.stringify({ error: "not-up" }));
|
|
1049
|
-
// Bound to what THIS console saw as the receiving end of this very connection — never the Host header.
|
|
1050
891
|
const answer = instanceHttpAnswer(secret, url.searchParams.getAll("c").length === 1 ? url.searchParams.get("c") : null, { address: request.socket.localAddress, port: request.socket.localPort });
|
|
1051
892
|
response.setHeader("Cache-Control", "no-store");
|
|
1052
893
|
return respond(response, answer.status, "application/json; charset=utf-8", answer.body);
|
|
@@ -1061,7 +902,6 @@ export function createPagesHandlers(runtime) {
|
|
|
1061
902
|
}
|
|
1062
903
|
async function workspaceStyle(ctx) {
|
|
1063
904
|
const { request, response, url } = ctx;
|
|
1064
|
-
// Only the current build's hash is served; any other hash is no asset.
|
|
1065
905
|
if (url.pathname !== WORKSPACE_STYLE.path)
|
|
1066
906
|
return respond(response, 404, 'text/plain; charset=utf-8', 'No such address.');
|
|
1067
907
|
return WORKSPACE_STYLE.serve(request, response);
|
|
@@ -1085,41 +925,27 @@ export function createPagesHandlers(runtime) {
|
|
|
1085
925
|
response.setHeader("cache-control", "no-store");
|
|
1086
926
|
return respond(response, 200, "application/json", JSON.stringify({ proof: createHmac("sha256", Buffer.from(identity, "hex")).update(challenge).digest("hex") }));
|
|
1087
927
|
}
|
|
1088
|
-
// The Live grid (docs/plans/agents-view.md §3), kept after every other handler.
|
|
1089
|
-
/** The Live grid's tiles (JSON, read-only): every role's running agents and those that just ended, that this viewer
|
|
1090
|
-
* may see — the console's ceiling and the account's own access, proved per run, on every request. */
|
|
1091
928
|
async function agentsLive(ctx) {
|
|
1092
929
|
const { who, request, response } = ctx;
|
|
1093
930
|
response.setHeader("cache-control", "no-store");
|
|
1094
|
-
// A browser session only (the route says so too): live output is never a token's to read.
|
|
1095
931
|
if (who.via !== "cookie")
|
|
1096
932
|
return respond(response, 403, "application/json", JSON.stringify({ error: "session" }));
|
|
1097
933
|
const browser = who;
|
|
1098
934
|
const canSee = (run) => { const repo = taskRepoOf(run.taskRef); return repo !== null && visible(repo) && store.accountCanAccess(who.name, repo); };
|
|
1099
935
|
const tiles = agentsLiveOf(store, clock(), { canSee, localRunner: options.localRunner });
|
|
1100
|
-
// The viewer's own lead turns, admitted as their chat is, from the session as it is saved now.
|
|
1101
936
|
const current = rereadBrowser(runtime, request, browser);
|
|
1102
937
|
const leads = current === null ? [] : leadTilesFor(runtime, current);
|
|
1103
|
-
// Re-proved right before delivery: the session still held, each tile's run still in view from its current row, and
|
|
1104
|
-
// each lead turn still admitted, from the session as it is saved now.
|
|
1105
938
|
const again = current === null ? null : rereadBrowser(runtime, request, browser);
|
|
1106
939
|
if (again === null)
|
|
1107
940
|
return respond(response, 401, "application/json", JSON.stringify({ error: "session" }));
|
|
1108
941
|
const shown = tiles.filter(tile => { const run = store.getRun(tile.runId); return run !== null && canSee(run); });
|
|
1109
|
-
// Work the viewer's own lead filed nests under it (docs/plans/lead-dispatched-tiles.md): proved from the store now,
|
|
1110
|
-
// for the tiles already shown, and only ever for their owner.
|
|
1111
942
|
const filed = again.role === "approver" ? leadFiledLinks(store, again.name, shown.map(tile => tile.runId)) : new Map();
|
|
1112
943
|
return respond(response, 200, "application/json", JSON.stringify({ tiles: shown.map(tile => ({ ...tile, filedBy: filed.get(tile.runId) ?? null })), leads: leadsStillAdmitted(runtime, again, leads) }));
|
|
1113
944
|
}
|
|
1114
|
-
/** This console's key for the Live grid's read cursors: random, in memory only (never where a build can reach), so a
|
|
1115
|
-
* restart makes old cursors start over visibly. A cursor is state, never permission. */
|
|
1116
945
|
const liveCursorKey = randomBytes(32);
|
|
1117
|
-
/** One window of a run's live output for the Live grid (JSON, read-only): its own records or its subagents'. Access
|
|
1118
|
-
* is proved before the read (ceiling, account, this computer's run) and again after it, before a byte is sent. */
|
|
1119
946
|
async function agentsLiveRead(ctx) {
|
|
1120
947
|
const { url, who, response } = ctx;
|
|
1121
948
|
response.setHeader("cache-control", "no-store");
|
|
1122
|
-
// A browser session only (the route says so too): live output is never a token's to read.
|
|
1123
949
|
if (who.via !== "cookie")
|
|
1124
950
|
return respond(response, 403, "application/json", JSON.stringify({ error: "session" }));
|
|
1125
951
|
const runId = Number(url.pathname.slice("/agents/live/".length));
|
|
@@ -1129,7 +955,6 @@ export function createPagesHandlers(runtime) {
|
|
|
1129
955
|
return respond(response, 400, "application/json", JSON.stringify({ error: "request" }));
|
|
1130
956
|
}
|
|
1131
957
|
const browser = who;
|
|
1132
|
-
// The saved session still held (not just the cookie), and the run still in view from its current row.
|
|
1133
958
|
const allowed = () => {
|
|
1134
959
|
if (rereadBrowser(runtime, ctx.request, browser) === null)
|
|
1135
960
|
return false;
|
|
@@ -1144,17 +969,12 @@ export function createPagesHandlers(runtime) {
|
|
|
1144
969
|
}
|
|
1145
970
|
const read = { key: liveCursorKey, commands: runLiveCommands(store, runId) };
|
|
1146
971
|
const window = file === "sub" ? readChildWindow(evidenceRoot, runId, cursor, read) : readMainWindow(evidenceRoot, runId, cursor, read);
|
|
1147
|
-
// Re-proved after the read: a narrowed account or a run gone from view gets nothing it read.
|
|
1148
972
|
if (!allowed() || store.getRun(runId)?.runner !== options.localRunner)
|
|
1149
973
|
return respond(response, 404, "application/json", JSON.stringify({ error: "run" }));
|
|
1150
974
|
return respond(response, 200, "application/json", JSON.stringify(window.ok ? window : { error: window.reason }));
|
|
1151
975
|
}
|
|
1152
|
-
/** Start a builder (Settings revamp S4): the command, and whether a builder that may build the open project is
|
|
1153
|
-
* checking in, as dispatch decides. Read-only; a project-limited person sees only a project they may see. */
|
|
1154
976
|
async function startBuilderPage(ctx) {
|
|
1155
977
|
const { response, now, project, url, who } = ctx;
|
|
1156
|
-
// ?task=<id>: that task's own saved project (a builder there, as dispatch decides for it), never the open one; the
|
|
1157
|
-
// session's selection is left alone. Unknown, unplaced or not visible to this person: 404, the same answer.
|
|
1158
978
|
const taskId = url.searchParams.get("task");
|
|
1159
979
|
const ref = taskId === null ? null : store.lookupRef(taskId.slice(0, 200));
|
|
1160
980
|
if (taskId !== null && (ref === null || ref.repo === null || !visible(ref.repo)))
|
|
@@ -1210,11 +1030,6 @@ export function createPagesHandlers(runtime) {
|
|
|
1210
1030
|
"edge.font": fontAsset,
|
|
1211
1031
|
"edge.desktop-health": desktopHealth,
|
|
1212
1032
|
});
|
|
1213
|
-
/** The lead's last message in this person's main thread, for Home's one line above the message box. The thread is
|
|
1214
|
-
* read only through the gate a docked conversation uses (serve.ts dockedConversation): an approver in a browser
|
|
1215
|
-
* session, chat enabled, the approver's standing re-proved now (leadPrincipal), their lead session under the current
|
|
1216
|
-
* ceiling and generation; and then through leadConversationRows, the very rows /chat renders, which keep only a thread
|
|
1217
|
-
* under this person's current ceiling. Null at any refusal, and when the lead has said nothing yet. */
|
|
1218
1033
|
function leadLastMessage(who, now) {
|
|
1219
1034
|
if (who.role !== "approver")
|
|
1220
1035
|
return null;
|
|
@@ -1229,9 +1044,6 @@ export function createPagesHandlers(runtime) {
|
|
|
1229
1044
|
const said = leadConversationRows(who, principal, null, now, null).messages.filter(one => one.role === "assistant" && one.pending !== true).at(-1);
|
|
1230
1045
|
return said === undefined ? null : { text: said.text, at: said.createdAt };
|
|
1231
1046
|
}
|
|
1232
|
-
/** What else waits on this person at Home (home-asks.ts): releases and held publications in the work index's own
|
|
1233
|
-
* access, flow cards in the projects this person may pick (the Flows list's admission, each flow's project re-checked
|
|
1234
|
-
* against the account), and the first-run steps with the builder step as Chat reads them. Approvers only. */
|
|
1235
1047
|
function homeAsksFor(who, access, now, project) {
|
|
1236
1048
|
const approver = who.role === "approver";
|
|
1237
1049
|
const steps = withBuilderStep(firstRunStepsNow(now), builderReadyFor(store, firstRunBuilderRepo(store, project, visible, runtime.managedRepos()), now));
|