toolroll 0.9.104 → 0.9.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +62 -5
- package/README.md +18 -20
- package/dist/accent-colors.js +0 -29
- package/dist/acp-agents.js +0 -3
- package/dist/acp-attest.js +0 -30
- package/dist/acp-check.js +3 -70
- package/dist/acp-client.js +3 -94
- package/dist/acp-inspect.js +1 -20
- package/dist/action-ledger.js +0 -8
- package/dist/activity-line.js +0 -14
- package/dist/actor.js +0 -15
- package/dist/advanced-schema.js +12 -0
- package/dist/advanced-view.js +26 -0
- package/dist/advanced.js +61 -0
- package/dist/agent-board.js +0 -117
- package/dist/agent-fence.js +11 -367
- package/dist/agent-onboard.js +12 -50
- package/dist/agent-pulse.js +5 -38
- package/dist/agent-state-words.js +0 -8
- package/dist/agent-state.js +1 -45
- package/dist/agent-turns.js +3 -17
- package/dist/agentconfig.js +1 -99
- package/dist/agents-board.js +0 -60
- package/dist/agents-live.js +1 -8
- package/dist/api-tokens.js +0 -27
- package/dist/approval-authority.js +0 -59
- package/dist/approval-password.js +0 -10
- package/dist/approval-policy.js +0 -29
- package/dist/approval-rules-ui.js +0 -9
- package/dist/assignment-adapters.js +0 -14
- package/dist/assignment-brief.js +1 -17
- package/dist/assignment-delivery.js +0 -22
- package/dist/assignment-presentation.js +0 -14
- package/dist/assignment-status.js +1 -30
- package/dist/assignment-ui.js +0 -12
- package/dist/assignment.js +17 -139
- package/dist/attest.js +0 -38
- package/dist/audit-cli.js +0 -9
- package/dist/backend.js +0 -59
- package/dist/backup-ui.js +0 -12
- package/dist/backup.js +8 -61
- package/dist/batch-checks.js +0 -20
- package/dist/batch-policy.js +0 -4
- package/dist/beads.js +0 -48
- package/dist/bin.js +0 -8
- package/dist/board.js +1 -36
- package/dist/boot-identity.js +0 -42
- package/dist/bounded-spawn.js +4 -28
- package/dist/brand-mark.js +0 -21
- package/dist/brief-fence.js +0 -16
- package/dist/browser/terminal.css +1 -1
- package/dist/browser/terminal.js +16 -16
- package/dist/browser/workspace.css +2 -2
- package/dist/browser/workspace.js +26 -26
- package/dist/browser-crew.js +0 -8
- package/dist/browser-shell.js +2 -15
- package/dist/browser-workspace.js +6 -30
- package/dist/budget-alerts.js +1 -4
- package/dist/build-review.js +2 -50
- package/dist/builder-restart.js +0 -13
- package/dist/builder.js +21 -1035
- package/dist/canonical-json.js +0 -12
- package/dist/capscan.js +1 -32
- package/dist/card-catalog.js +0 -12
- package/dist/card-cli.js +0 -1
- package/dist/card-render.js +0 -25
- package/dist/card-sources.js +0 -10
- package/dist/chat-acceptance.js +0 -7
- package/dist/chat-actions.js +5 -190
- package/dist/chat-admission.js +0 -7
- package/dist/chat-approval.js +0 -25
- package/dist/chat-ask.js +0 -17
- package/dist/chat-card-part.js +0 -3
- package/dist/chat-card.js +0 -6
- package/dist/chat-channel.js +2 -83
- package/dist/chat-continuity.js +0 -31
- package/dist/chat-controls.js +0 -7
- package/dist/chat-core.js +0 -55
- package/dist/chat-decide.js +2 -153
- package/dist/chat-delivery-state.js +0 -49
- package/dist/chat-delivery.js +2 -143
- package/dist/chat-display.js +0 -2
- package/dist/chat-evidence.js +0 -65
- package/dist/chat-flow.js +0 -72
- package/dist/chat-follow.js +0 -13
- package/dist/chat-inbox.js +0 -34
- package/dist/chat-live-schema.js +0 -14
- package/dist/chat-live.js +2 -87
- package/dist/chat-message-states.js +13 -40
- package/dist/chat-messages.js +0 -153
- package/dist/chat-migration.js +0 -57
- package/dist/chat-polish.js +0 -7
- package/dist/chat-quiet.js +0 -37
- package/dist/chat-review.js +0 -4
- package/dist/chat-rooms.js +0 -22
- package/dist/chat-settings-page.js +0 -4
- package/dist/chat-task-actions.js +0 -7
- package/dist/chat-terms.js +0 -21
- package/dist/chat-voice.js +0 -38
- package/dist/chat-warmth.js +1 -3
- package/dist/check-access.js +0 -30
- package/dist/check-facts.js +2 -62
- package/dist/check-failure.js +0 -98
- package/dist/check-levels-ui.js +4 -10
- package/dist/check-levels.js +3 -35
- package/dist/check-load.js +1 -49
- package/dist/check-only-standing.js +0 -6
- package/dist/check-only.js +0 -22
- package/dist/check-progress.js +0 -32
- package/dist/check-repair.js +2 -35
- package/dist/check-report.js +1 -108
- package/dist/check-stamp.js +0 -20
- package/dist/checkout-cleanup.js +0 -84
- package/dist/checkout-proof.js +1 -13
- package/dist/child-database.js +0 -3
- package/dist/claim.js +4 -508
- package/dist/claude-print.js +0 -10
- package/dist/cli-fast.js +0 -8
- package/dist/cli-help.js +90 -78
- package/dist/cli-http.js +0 -10
- package/dist/cli.js +26 -241
- package/dist/code-extract.js +0 -6
- package/dist/code-map-acts.js +0 -7
- package/dist/code-map-admission.js +2 -26
- package/dist/code-map-build.js +3 -24
- package/dist/code-map-cli.js +0 -4
- package/dist/code-map-main.js +0 -6
- package/dist/code-map-read.js +0 -12
- package/dist/code-map-report.js +0 -9
- package/dist/code-map-shape.js +0 -19
- package/dist/code-map-store.js +0 -26
- package/dist/codex-limits.js +1 -17
- package/dist/coding-context.js +0 -10
- package/dist/coding-handoff.js +0 -14
- package/dist/coding-provider.js +0 -39
- package/dist/coding-shipping-ui.js +0 -1
- package/dist/coding-ui.js +0 -1
- package/dist/coding-update.js +1 -18
- package/dist/coding-workspace.js +0 -27
- package/dist/commit-extract.js +0 -83
- package/dist/connect-cli.js +0 -19
- package/dist/console-chrome.js +1 -34
- package/dist/console-instance.js +2 -91
- package/dist/container-state.js +0 -4
- package/dist/containment.js +2 -105
- package/dist/contract-changes.js +0 -6
- package/dist/contracts/acceptance-terms.js +0 -7
- package/dist/contracts/chat-actions.js +0 -46
- package/dist/contracts/chat-callback-rows.js +0 -8
- package/dist/contracts/chat-card.js +0 -14
- package/dist/contracts/chat-content.js +0 -55
- package/dist/contracts/chat-tables.js +0 -7
- package/dist/contracts/cli.js +0 -59
- package/dist/contracts/coding-activity.js +0 -15
- package/dist/contracts/coding-context.js +0 -15
- package/dist/contracts/coding-handoff.js +0 -11
- package/dist/contracts/coding-workspace.js +0 -14
- package/dist/contracts/console-api.js +1 -54
- package/dist/contracts/contract-test.js +0 -14
- package/dist/contracts/contract.js +0 -48
- package/dist/contracts/decision.js +0 -20
- package/dist/contracts/diff-stat.js +0 -16
- package/dist/contracts/discord-callback.js +0 -9
- package/dist/contracts/flow-card.js +0 -18
- package/dist/contracts/flow-propose.js +0 -8
- package/dist/contracts/flow-send.js +0 -31
- package/dist/contracts/flow.js +0 -112
- package/dist/contracts/gateway-tools.js +0 -22
- package/dist/contracts/handoff.js +0 -22
- package/dist/contracts/integration-metadata.js +0 -39
- package/dist/contracts/lead-context.js +0 -14
- package/dist/contracts/lead-tools.js +0 -49
- package/dist/contracts/mcp-oauth.js +0 -12
- package/dist/contracts/memory-pass.js +0 -21
- package/dist/contracts/model-catalog.js +0 -9
- package/dist/contracts/observation-request.js +0 -11
- package/dist/contracts/plan.js +0 -16
- package/dist/contracts/project-knowledge.js +0 -26
- package/dist/contracts/project-memory.js +0 -16
- package/dist/contracts/project-skills.js +0 -31
- package/dist/contracts/proof.js +0 -23
- package/dist/contracts/provider.js +0 -9
- package/dist/contracts/recipes.js +0 -16
- package/dist/contracts/release-check.js +0 -61
- package/dist/contracts/release-terms.js +0 -27
- package/dist/contracts/retention.js +0 -12
- package/dist/contracts/review-findings.js +0 -13
- package/dist/contracts/route-results.js +0 -15
- package/dist/contracts/route.js +0 -33
- package/dist/contracts/scope.js +0 -29
- package/dist/contracts/scout-report.js +0 -34
- package/dist/contracts/slack-callback.js +0 -11
- package/dist/contracts/sort-answer.js +0 -24
- package/dist/contracts/stage-output.js +0 -46
- package/dist/contracts/storage.js +0 -8
- package/dist/contracts/store-json.js +0 -41
- package/dist/contracts/subagent-turn.js +0 -23
- package/dist/contracts/task-sizing.js +0 -10
- package/dist/contracts/teams-callback.js +0 -7
- package/dist/contracts/telegram-callback.js +0 -27
- package/dist/contracts/trigger-payloads.js +0 -41
- package/dist/contracts/update-journal.js +0 -47
- package/dist/contracts/verification-receipt.js +0 -36
- package/dist/contracts/verification-view.js +0 -15
- package/dist/contracts/youiyoux-request.js +0 -26
- package/dist/control-setup.js +0 -7
- package/dist/control-ui.js +0 -3
- package/dist/controller-service.js +0 -4
- package/dist/controller-supervisor.js +0 -15
- package/dist/converse.js +3 -129
- package/dist/coordinator-proposals.js +1 -6
- package/dist/coordinator.js +0 -65
- package/dist/credentials-ui.js +0 -6
- package/dist/daemon.js +0 -137
- package/dist/database-reclaim.js +0 -3
- package/dist/decision.js +0 -78
- package/dist/demo-chat.js +4 -15
- package/dist/demo-sign-in.js +77 -0
- package/dist/demo.js +5 -194
- package/dist/deploy-gate.js +0 -20
- package/dist/deploy-lock.js +0 -4
- package/dist/deploy-phase.js +0 -22
- package/dist/deploy-rescue.js +0 -21
- package/dist/deprecations.js +0 -12
- package/dist/design/kit.css +9 -6
- package/dist/design/kit.js +2 -33
- package/dist/desktop-access.js +0 -9
- package/dist/desktop-bundle.js +1 -3
- package/dist/desktop-host.js +0 -34
- package/dist/desktop-update-gate.js +0 -8
- package/dist/desktop-update-recovery.js +1 -18
- package/dist/desktop-update.js +2 -48
- package/dist/digest-times.js +0 -2
- package/dist/disclosure.js +0 -5
- package/dist/discord-api.js +0 -6
- package/dist/discord-chat.js +0 -31
- package/dist/discord.js +0 -7
- package/dist/discover.js +0 -50
- package/dist/dispatch.js +61 -60
- package/dist/dispose.js +0 -208
- package/dist/doctor.js +0 -48
- package/dist/easy-start-args.js +7 -7
- package/dist/easy-start.js +32 -45
- package/dist/egress.js +1 -63
- package/dist/email-settings.js +0 -8
- package/dist/envelope.js +50 -86
- package/dist/eval-gate.js +1 -37
- package/dist/eval-hooks.js +0 -120
- package/dist/eval-oracle-main.js +0 -7
- package/dist/eval-oracle.js +3 -42
- package/dist/eval-world.js +1 -23
- package/dist/evals.js +6 -134
- package/dist/evidence-pack.js +0 -29
- package/dist/evidence-pair.js +0 -17
- package/dist/evidence.js +4 -280
- package/dist/exec.js +19 -404
- package/dist/exhaustion.js +0 -30
- package/dist/export-ui.js +0 -7
- package/dist/export.js +1 -38
- package/dist/failing-first.js +0 -6
- package/dist/fallback-schema.js +0 -5
- package/dist/fallback.js +0 -81
- package/dist/fast-start.js +0 -97
- package/dist/fast-terms.js +0 -3
- package/dist/fenced-check-coverage.js +0 -11
- package/dist/findings.js +1 -63
- package/dist/first-run.js +4 -57
- package/dist/first-tasks-child.js +0 -5
- package/dist/flaky-ci.js +1 -24
- package/dist/flaky-cli.js +0 -4
- package/dist/flaky.js +0 -43
- package/dist/fleet-schema.js +0 -11
- package/dist/flow-actions.js +0 -31
- package/dist/flow-browser.js +0 -42
- package/dist/flow-cadence.js +1 -24
- package/dist/flow-card-task.js +0 -11
- package/dist/flow-changed.js +0 -16
- package/dist/flow-code.js +1 -45
- package/dist/flow-draft.js +0 -17
- package/dist/flow-engine.js +2 -76
- package/dist/flow-gallery-ui.js +0 -28
- package/dist/flow-gallery.js +0 -54
- package/dist/flow-insights.js +0 -12
- package/dist/flow-items.js +0 -27
- package/dist/flow-live.js +0 -31
- package/dist/flow-people.js +0 -14
- package/dist/flow-pull-request.js +0 -32
- package/dist/flow-replies.js +0 -9
- package/dist/flow-result-card.js +0 -8
- package/dist/flow-schedule.js +0 -74
- package/dist/flow-scripts.js +0 -13
- package/dist/flow-secrets.js +0 -10
- package/dist/flow-send.js +0 -45
- package/dist/flow-share.js +0 -60
- package/dist/flow-sort.js +1 -24
- package/dist/flow-starters-ui.js +0 -2
- package/dist/flow-starters.js +0 -13
- package/dist/flow-steps.js +0 -80
- package/dist/flow-triggers.js +2 -256
- package/dist/flow-unattended-words.js +0 -13
- package/dist/flow-unattended.js +2 -115
- package/dist/flows-cli.js +2 -36
- package/dist/flows-ui.js +0 -51
- package/dist/flows.js +0 -158
- package/dist/folder-gate.js +0 -21
- package/dist/folder-look.js +0 -42
- package/dist/follow-through-brief.js +0 -6
- package/dist/follow-through-cli.js +0 -5
- package/dist/fonts.js +0 -13
- package/dist/gaps.js +0 -20
- package/dist/gate-failure.js +0 -7
- package/dist/git-floor.js +0 -12
- package/dist/git-incident.js +2 -38
- package/dist/git-views.js +0 -24
- package/dist/git.js +0 -31
- package/dist/github-import.js +0 -22
- package/dist/github-jobs.js +0 -12
- package/dist/google-mail.js +2 -27
- package/dist/grant.js +0 -110
- package/dist/graph.js +0 -108
- package/dist/guides.js +4 -15
- package/dist/handover-note.js +0 -12
- package/dist/health-cli.js +0 -2
- package/dist/home-groups.js +0 -15
- package/dist/html.js +0 -54
- package/dist/install-method.js +0 -12
- package/dist/integrations-ui.js +0 -15
- package/dist/integrations.js +7 -50
- package/dist/invoke.js +1 -381
- package/dist/is-record.js +0 -1
- package/dist/issues.js +0 -48
- package/dist/jsonl-discriminants.js +0 -6
- package/dist/keymap.js +0 -17
- package/dist/keys.js +0 -56
- package/dist/kits-ui.js +0 -3
- package/dist/kits.js +1 -24
- package/dist/knowledge-cli.js +0 -4
- package/dist/knowledge-ui.js +0 -8
- package/dist/landed-cleanup.js +0 -119
- package/dist/laptop-background.js +0 -85
- package/dist/laptop-service.js +0 -67
- package/dist/latency-timeline.js +2 -23
- package/dist/lead-about.js +0 -7
- package/dist/lead-answer-eval.js +0 -39
- package/dist/lead-capabilities.js +0 -19
- package/dist/lead-cli-live.js +0 -22
- package/dist/lead-cli.js +0 -27
- package/dist/lead-commitments.js +1 -27
- package/dist/lead-context.js +2 -42
- package/dist/lead-contract.js +0 -8
- package/dist/lead-doors.js +0 -105
- package/dist/lead-follow.js +0 -41
- package/dist/lead-identity.js +1 -4
- package/dist/lead-latency-schema.js +0 -13
- package/dist/lead-people.js +3 -18
- package/dist/lead-progress.js +0 -12
- package/dist/lead-queue-runtime.js +0 -26
- package/dist/lead-queue.js +0 -35
- package/dist/lead-route.js +0 -33
- package/dist/lead-status.js +0 -37
- package/dist/lead-sweep.js +0 -18
- package/dist/lead-tools.js +0 -160
- package/dist/lead-voice.js +0 -54
- package/dist/lead.js +2 -105
- package/dist/learning-child.js +0 -6
- package/dist/learning-look.js +0 -14
- package/dist/ledger-chain.js +0 -34
- package/dist/ledger-csv.js +0 -2
- package/dist/ledger-view.js +0 -3
- package/dist/lesson-notes.js +0 -56
- package/dist/limits-ui.js +0 -14
- package/dist/link.js +0 -79
- package/dist/live-backup.js +3 -33
- package/dist/live-bus.js +7 -81
- package/dist/live-children-read.js +4 -47
- package/dist/live-children.js +4 -44
- package/dist/live-detail.js +0 -17
- package/dist/live-input.js +5 -68
- package/dist/live-main-read.js +1 -14
- package/dist/live-notes.js +0 -12
- package/dist/live-open.js +1 -23
- package/dist/live-records.js +4 -151
- package/dist/live-reply.js +1 -51
- package/dist/live-terminal.js +12 -111
- package/dist/live.js +4 -130
- package/dist/local-owner-acts.js +0 -53
- package/dist/local-owner.js +2 -93
- package/dist/log.js +0 -8
- package/dist/login-secrets.js +2 -38
- package/dist/machine-check.js +0 -2
- package/dist/machine-identity.js +1 -46
- package/dist/mailbox.js +0 -30
- package/dist/maintenance.js +1 -3
- package/dist/mcp-connect.js +0 -88
- package/dist/mcp-core.js +0 -45
- package/dist/mcp-http.js +0 -13
- package/dist/mcp-oauth.js +0 -37
- package/dist/mcp-person.js +0 -11
- package/dist/mcp.js +3 -73
- package/dist/memory-cli.js +0 -3
- package/dist/memory-pass.js +0 -53
- package/dist/memory-tidy.js +0 -55
- package/dist/memory-use.js +2 -24
- package/dist/merge-checklist.js +21 -29
- package/dist/metrics.js +0 -10
- package/dist/mobile-viewport.js +0 -6
- package/dist/model-catalog.js +1 -33
- package/dist/model-choices.js +9 -84
- package/dist/model-names.js +0 -9
- package/dist/models-cli.js +0 -13
- package/dist/models-ui.js +0 -17
- package/dist/modes.js +0 -35
- package/dist/monitoring-settings.js +2 -27
- package/dist/monitoring-ui.js +2 -14
- package/dist/monitoring.js +2 -38
- package/dist/names.js +0 -39
- package/dist/needs-you.js +7 -70
- package/dist/never-index.js +0 -9
- package/dist/nightly-check.js +0 -74
- package/dist/nightly-github.js +0 -168
- package/dist/notification-delivery.js +0 -3
- package/dist/notification-rows.js +0 -17
- package/dist/oauth-run-token.js +1 -37
- package/dist/observations.js +0 -16
- package/dist/oidc.js +1 -20
- package/dist/onboard.js +4 -57
- package/dist/one-step-chat-schema.js +0 -15
- package/dist/openrouter-models.js +0 -6
- package/dist/operate-remote-arguments.js +0 -17
- package/dist/operate-remote.js +0 -33
- package/dist/operate.js +227 -2326
- package/dist/orphan-sweep.js +3 -37
- package/dist/page-work-contract.js +0 -3
- package/dist/password-bearer.js +1 -11
- package/dist/passwordless.js +0 -3
- package/dist/peek-cli.js +0 -46
- package/dist/peek.js +2 -61
- package/dist/people-audit-ui.js +0 -6
- package/dist/person-proof.js +0 -6
- package/dist/phase-routing.js +8 -183
- package/dist/plain-schema.js +0 -14
- package/dist/plain-words.js +18 -12
- package/dist/plan-auto.js +0 -20
- package/dist/plan-login.js +0 -16
- package/dist/plan.js +0 -68
- package/dist/plane-review.js +0 -56
- package/dist/planner-source.js +0 -96
- package/dist/planner.js +0 -117
- package/dist/policy-ui.js +0 -8
- package/dist/policy.js +0 -47
- package/dist/prepared-evidence.js +0 -5
- package/dist/principal.js +0 -29
- package/dist/probe.js +0 -30
- package/dist/process-custody.js +0 -15
- package/dist/process-liveness.js +0 -32
- package/dist/process-tree.js +3 -29
- package/dist/project-access.js +0 -10
- package/dist/project-admission.js +1 -41
- package/dist/project-cli.js +0 -6
- package/dist/project-concurrency.js +0 -35
- package/dist/project-delete-ui.js +4 -29
- package/dist/project-delete.js +1 -73
- package/dist/project-demo.js +0 -13
- package/dist/project-file.js +0 -2
- package/dist/project-identity.js +0 -41
- package/dist/project-knowledge.js +0 -39
- package/dist/project-learning.js +3 -55
- package/dist/project-memory.js +2 -45
- package/dist/project-outcomes.js +0 -6
- package/dist/project-sandbox.js +0 -23
- package/dist/project-skills.js +0 -12
- package/dist/project-tools.js +6 -184
- package/dist/project.js +0 -48
- package/dist/prompt.js +0 -31
- package/dist/proof.js +0 -220
- package/dist/proposal.js +0 -50
- package/dist/protected-storage-look.js +0 -6
- package/dist/protected-storage.js +1 -84
- package/dist/provider-auth.js +3 -69
- package/dist/provider-capture.js +1 -15
- package/dist/provider-connection.js +0 -8
- package/dist/provider-home.js +0 -25
- package/dist/provider-limits.js +0 -14
- package/dist/provider.js +0 -324
- package/dist/public-access.js +0 -34
- package/dist/public-check.js +0 -16
- package/dist/publish.js +1 -150
- package/dist/pull-request-flow.js +0 -77
- package/dist/pull-request-schema.js +0 -4
- package/dist/pull-request-ui.js +0 -5
- package/dist/pulls.js +0 -80
- package/dist/push.js +5 -89
- package/dist/quick-start.js +1 -23
- package/dist/read-executor-worker.js +0 -1
- package/dist/read-executor.js +0 -10
- package/dist/read-only-request.js +0 -7
- package/dist/recipe-ui.js +0 -6
- package/dist/recipes.js +0 -13
- package/dist/release-adapters.js +6 -214
- package/dist/release-approval.js +0 -74
- package/dist/release-authority.js +0 -42
- package/dist/release-auto.js +0 -142
- package/dist/release-card.js +0 -100
- package/dist/release-carry.js +0 -132
- package/dist/release-ci-hold.js +0 -20
- package/dist/release-cli.js +0 -46
- package/dist/release-coverage.js +0 -16
- package/dist/release-gate.js +0 -30
- package/dist/release-git.js +0 -24
- package/dist/release-links.js +0 -17
- package/dist/release-net.js +0 -42
- package/dist/release-next.js +0 -25
- package/dist/release-recheck.js +0 -89
- package/dist/release-refusal.js +0 -18
- package/dist/release-view.js +0 -5
- package/dist/release.js +7 -341
- package/dist/releases.js +0 -49
- package/dist/remote-audit.js +0 -25
- package/dist/remote-command.js +0 -16
- package/dist/remote-destination.js +5 -26
- package/dist/remote-exec.js +1 -27
- package/dist/remote-main.js +1 -53
- package/dist/remote-run.js +0 -5
- package/dist/remote.js +0 -49
- package/dist/render.js +0 -133
- package/dist/reply-shape.js +0 -85
- package/dist/reply-voice.js +0 -7
- package/dist/report-summary.js +0 -5
- package/dist/reported-usage.js +0 -30
- package/dist/repos.js +9 -62
- package/dist/repository-context.js +1 -24
- package/dist/request-budget-ui.js +0 -4
- package/dist/request-budget.js +0 -23
- package/dist/restart-certification.js +0 -37
- package/dist/result-actions.js +0 -62
- package/dist/result-acts.js +0 -34
- package/dist/result-completion.js +0 -25
- package/dist/result-evidence-readers.js +0 -3
- package/dist/result-follow-ups.js +1 -39
- package/dist/result-review.js +0 -86
- package/dist/result-shots.js +0 -39
- package/dist/retention-ui.js +0 -7
- package/dist/retention.js +2 -46
- package/dist/review-context.js +0 -129
- package/dist/review-evidence.js +0 -4
- package/dist/review-switch.js +1 -7
- package/dist/reviewer.js +0 -35
- package/dist/route-change-check.js +0 -2
- package/dist/route-change.js +0 -16
- package/dist/route-hooks.js +0 -27
- package/dist/route-results.js +2 -58
- package/dist/route-rules.js +1 -106
- package/dist/route-savings.js +0 -36
- package/dist/route-store.js +1 -133
- package/dist/run-closeout.js +2 -50
- package/dist/run-efficiency.js +2 -44
- package/dist/run-ending.js +0 -13
- package/dist/runner-process.js +0 -33
- package/dist/runner.js +17 -189
- package/dist/sample-project.js +2 -27
- package/dist/sandbox-launch.js +4 -25
- package/dist/sandbox-runtime.js +1 -88
- package/dist/scan.js +0 -27
- package/dist/scope.js +4 -567
- package/dist/scout-browser-lock.js +0 -6
- package/dist/scout-browser.js +2 -68
- package/dist/scout-net.js +1 -32
- package/dist/scout-report.js +0 -22
- package/dist/scout.js +1 -116
- package/dist/secret-mint.js +0 -6
- package/dist/serve.js +21 -555
- package/dist/server/agents-computers.js +0 -10
- package/dist/server/agents-live-filed.js +0 -13
- package/dist/server/agents-live-lead.js +0 -19
- package/dist/server/agents-live-room.js +0 -19
- package/dist/server/chat.js +2 -194
- package/dist/server/chrome.js +17 -263
- package/dist/server/console.css +4 -4
- package/dist/server/edge-refusal.js +0 -3
- package/dist/server/flows.js +5 -74
- package/dist/server/guards.js +1 -88
- package/dist/server/handler-registry.js +0 -2
- package/dist/server/home-asks.js +1 -22
- package/dist/server/home.js +1 -30
- package/dist/server/http.js +0 -82
- package/dist/server/in-place.js +0 -15
- package/dist/server/kit-standalone.js +0 -20
- package/dist/server/kit.js +2 -114
- package/dist/server/last-checks.js +0 -2
- package/dist/server/live.js +1 -36
- package/dist/server/merge-ready-view.js +0 -6
- package/dist/server/mutation-key.js +3 -40
- package/dist/server/pages-assets.js +0 -16
- package/dist/server/pages.js +7 -195
- package/dist/server/people-tokens.js +3 -101
- package/dist/server/remote-hooks.js +0 -13
- package/dist/server/remote.js +0 -28
- package/dist/server/render-chat.js +8 -144
- package/dist/server/render-code-map.js +0 -5
- package/dist/server/render-flaky.js +0 -8
- package/dist/server/render-follow-through.js +2 -5
- package/dist/server/render-history.js +2 -34
- package/dist/server/render-new-task.js +2 -29
- package/dist/server/render-pages.js +1 -111
- package/dist/server/render-people.js +2 -46
- package/dist/server/render-projects.js +15 -32
- package/dist/server/render-release.js +1 -14
- package/dist/server/render-results.js +4 -355
- package/dist/server/render-settings.js +0 -15
- package/dist/server/render-tasks.js +13 -493
- package/dist/server/request-context.js +2 -9
- package/dist/server/retired-routes.js +0 -11
- package/dist/server/route-policy.js +0 -3
- package/dist/server/route-table.js +6 -135
- package/dist/server/runtime.js +0 -1
- package/dist/server/session.js +0 -28
- package/dist/server/settings.js +40 -246
- package/dist/server/signup-gate.js +0 -11
- package/dist/server/sweeps.js +0 -6
- package/dist/server/task-views.js +9 -227
- package/dist/server/tasks.js +5 -539
- package/dist/server/terminals.js +2 -46
- package/dist/server/welcome.js +2 -22
- package/dist/server-telemetry.js +0 -9
- package/dist/settings-groups-ui.js +50 -63
- package/dist/settings-kit-script.js +0 -19
- package/dist/settings-kit.js +0 -63
- package/dist/settings-proofs.js +0 -23
- package/dist/setup-guide.js +1 -9
- package/dist/shared-deps.js +9 -84
- package/dist/sign-in-guard.js +0 -27
- package/dist/skills-ui.js +0 -2
- package/dist/skills.js +2 -54
- package/dist/slack-api.js +0 -3
- package/dist/slack-chat.js +0 -25
- package/dist/slack-settings.js +0 -1
- package/dist/slack-socket.js +0 -5
- package/dist/slack.js +0 -4
- package/dist/sleep.js +0 -1
- package/dist/source-key.js +0 -10
- package/dist/spend-report.js +0 -29
- package/dist/spend-ui.js +0 -26
- package/dist/spend.js +0 -40
- package/dist/sqlite-runtime.js +0 -2
- package/dist/sqlite-telemetry.js +0 -9
- package/dist/sso-settings.js +0 -13
- package/dist/sso-ui.js +0 -2
- package/dist/staged-runtimes.js +5 -39
- package/dist/steer-capabilities.js +1 -7
- package/dist/steer-controls.js +0 -10
- package/dist/steer-live.js +0 -31
- package/dist/steer-mailbox.js +4 -65
- package/dist/steer-status.js +0 -7
- package/dist/stop-proof.js +5 -62
- package/dist/storage-sweep-child.js +1 -5
- package/dist/storage-sweep-process.js +2 -20
- package/dist/storage-sweep-schedule.js +0 -32
- package/dist/storage-sweep.js +2 -51
- package/dist/storage-ui.js +0 -18
- package/dist/storage.js +0 -31
- package/dist/store-baseline.js +0 -14
- package/dist/store.js +109 -4763
- package/dist/stream-scope.js +0 -16
- package/dist/structured-output.js +0 -39
- package/dist/style-asset.js +0 -2
- package/dist/subagent-admin.js +0 -9
- package/dist/subagent-desk.js +0 -29
- package/dist/subagent-memory.js +0 -38
- package/dist/subagent-question.js +0 -29
- package/dist/subagent-tools.js +1 -60
- package/dist/subagent-week.js +0 -28
- package/dist/subagent-work.js +1 -39
- package/dist/subagents-ui.js +1 -13
- package/dist/subagents.js +0 -40
- package/dist/subscription-chat.js +1 -42
- package/dist/summary.js +0 -19
- package/dist/surface.js +0 -75
- package/dist/sweep-gate.js +0 -2
- package/dist/sweep-quarantine.js +2 -13
- package/dist/sync.js +0 -47
- package/dist/tailnet.js +0 -9
- package/dist/tamper-scan.js +0 -15
- package/dist/task-activity.js +1 -16
- package/dist/task-aliases.js +0 -3
- package/dist/task-archive.js +0 -7
- package/dist/task-base.js +0 -18
- package/dist/task-composer.js +0 -2
- package/dist/task-control.js +0 -74
- package/dist/task-live.js +0 -23
- package/dist/task-moves.js +0 -28
- package/dist/task-outcome-cli.js +17 -28
- package/dist/task-review-brief.js +0 -7
- package/dist/task-sizing.js +0 -47
- package/dist/task-source.js +0 -23
- package/dist/task-status.js +0 -106
- package/dist/task-text.js +0 -12
- package/dist/team-chat-authorization.js +0 -3
- package/dist/team-contract.js +0 -2
- package/dist/team-http.js +0 -4
- package/dist/team-leads.js +1 -16
- package/dist/team-runtime.js +0 -13
- package/dist/team-ui.js +0 -1
- package/dist/team-updates.js +0 -4
- package/dist/teams-api.js +0 -12
- package/dist/teams-chat.js +0 -28
- package/dist/teams.js +0 -12
- package/dist/teardown-git.js +6 -294
- package/dist/telegram-flow.js +0 -51
- package/dist/telegram-lead.js +2 -203
- package/dist/telegram-live.js +1 -42
- package/dist/telegram-progress.js +0 -18
- package/dist/telegram-settings.js +0 -7
- package/dist/telegram-status.js +0 -46
- package/dist/telegram-team.js +1 -33
- package/dist/telegram.js +6 -454
- package/dist/templates.js +0 -24
- package/dist/terminal-catalog.js +2 -20
- package/dist/terminal-text.js +0 -12
- package/dist/test-infra.js +0 -50
- package/dist/test-temp.js +3 -26
- package/dist/text-limits.js +0 -92
- package/dist/tidy.js +0 -76
- package/dist/tier-report.js +0 -2
- package/dist/token-notices.js +1 -9
- package/dist/tokens-cli.js +0 -13
- package/dist/tool-broker.js +2 -53
- package/dist/tool-launcher.js +0 -14
- package/dist/tool-secret-store.js +3 -125
- package/dist/toolroll-update-cli.js +0 -9
- package/dist/toolroll-update-ui.js +0 -14
- package/dist/toolroll-update.js +13 -252
- package/dist/tools-ui.js +0 -17
- package/dist/transitions-recipes.js +0 -2
- package/dist/tree-proof.js +0 -23
- package/dist/tui-contract.js +0 -8
- package/dist/tui-source.js +16 -36
- package/dist/tui.js +1 -1
- package/dist/typed-start.js +0 -27
- package/dist/unfenced-test-support.js +0 -5
- package/dist/up-processes.js +1 -40
- package/dist/up-role-child.js +1 -13
- package/dist/update-notice.js +0 -1
- package/dist/vanished-retry.js +0 -40
- package/dist/verification-evidence.js +0 -39
- package/dist/version.js +0 -1
- package/dist/wake-hub.js +0 -28
- package/dist/webhook-limits.js +0 -7
- package/dist/webhook-readers.js +0 -30
- package/dist/webhook-signing.js +0 -14
- package/dist/webhooks.js +0 -54
- package/dist/welcome-facts.js +2 -14
- package/dist/when-html.js +0 -27
- package/dist/work-index.js +26 -98
- package/dist/work-summary.js +2 -17
- package/dist/workspace-motion.js +0 -2
- package/dist/workspace-revision.js +1 -21
- package/dist/workspace-ui.js +15 -135
- package/dist/worktree-notices.js +0 -3
- package/dist/worktree.js +0 -308
- package/dist/writes-mode.js +0 -1
- package/dist/youiyoux-intake.js +4 -159
- package/package.json +4 -3
- package/dist/accent-colors.d.ts +0 -51
- package/dist/acp-agents.d.ts +0 -43
- package/dist/acp-attest.d.ts +0 -44
- package/dist/acp-check.d.ts +0 -37
- package/dist/acp-client.d.ts +0 -163
- package/dist/acp-inspect.d.ts +0 -23
- package/dist/action-ledger.d.ts +0 -27
- package/dist/activity-line.d.ts +0 -29
- package/dist/actor.d.ts +0 -11
- package/dist/agent-board.d.ts +0 -229
- package/dist/agent-fence.d.ts +0 -479
- package/dist/agent-onboard.d.ts +0 -158
- package/dist/agent-pulse.d.ts +0 -43
- package/dist/agent-state-words.d.ts +0 -19
- package/dist/agent-state.d.ts +0 -65
- package/dist/agent-turns.d.ts +0 -52
- package/dist/agentconfig.d.ts +0 -191
- package/dist/agents-board.d.ts +0 -145
- package/dist/agents-live.d.ts +0 -31
- package/dist/api-tokens.d.ts +0 -80
- package/dist/approval-authority.d.ts +0 -51
- package/dist/approval-password.d.ts +0 -31
- package/dist/approval-policy.d.ts +0 -69
- package/dist/approval-rules-ui.d.ts +0 -40
- package/dist/assignment-adapters.d.ts +0 -152
- package/dist/assignment-brief.d.ts +0 -83
- package/dist/assignment-delivery.d.ts +0 -86
- package/dist/assignment-presentation.d.ts +0 -37
- package/dist/assignment-status.d.ts +0 -71
- package/dist/assignment-ui.d.ts +0 -68
- package/dist/assignment.d.ts +0 -350
- package/dist/attest.d.ts +0 -59
- package/dist/audit-cli.d.ts +0 -17
- package/dist/backend.d.ts +0 -97
- package/dist/backup-ui.d.ts +0 -32
- package/dist/backup.d.ts +0 -92
- package/dist/batch-checks.d.ts +0 -15
- package/dist/batch-policy.d.ts +0 -23
- package/dist/beads.d.ts +0 -34
- package/dist/bin.d.ts +0 -2
- package/dist/board.d.ts +0 -134
- package/dist/boot-identity.d.ts +0 -64
- package/dist/bounded-spawn.d.ts +0 -57
- package/dist/brand-icons.d.ts +0 -168
- package/dist/brand-mark.d.ts +0 -28
- package/dist/brief-fence.d.ts +0 -9
- package/dist/browser-crew.d.ts +0 -12
- package/dist/browser-shell.d.ts +0 -9
- package/dist/browser-workspace.d.ts +0 -1985
- package/dist/budget-alerts.d.ts +0 -19
- package/dist/build-review.d.ts +0 -38
- package/dist/builder-restart.d.ts +0 -21
- package/dist/builder.d.ts +0 -409
- package/dist/canonical-json.d.ts +0 -14
- package/dist/capscan.d.ts +0 -35
- package/dist/card-catalog.d.ts +0 -209
- package/dist/card-cli.d.ts +0 -43
- package/dist/card-render.d.ts +0 -43
- package/dist/card-sources.d.ts +0 -68
- package/dist/chat-acceptance.d.ts +0 -74
- package/dist/chat-actions.d.ts +0 -460
- package/dist/chat-admission.d.ts +0 -19
- package/dist/chat-approval.d.ts +0 -58
- package/dist/chat-ask.d.ts +0 -32
- package/dist/chat-card-part.d.ts +0 -11
- package/dist/chat-card.d.ts +0 -46
- package/dist/chat-channel.d.ts +0 -126
- package/dist/chat-continuity.d.ts +0 -32
- package/dist/chat-controls.d.ts +0 -117
- package/dist/chat-core.d.ts +0 -177
- package/dist/chat-decide.d.ts +0 -269
- package/dist/chat-delivery-state.d.ts +0 -132
- package/dist/chat-delivery.d.ts +0 -71
- package/dist/chat-display.d.ts +0 -1
- package/dist/chat-evidence.d.ts +0 -123
- package/dist/chat-flow.d.ts +0 -70
- package/dist/chat-follow.d.ts +0 -20
- package/dist/chat-inbox.d.ts +0 -57
- package/dist/chat-live-schema.d.ts +0 -17
- package/dist/chat-live.d.ts +0 -161
- package/dist/chat-message-states.d.ts +0 -75
- package/dist/chat-messages.d.ts +0 -338
- package/dist/chat-migration.d.ts +0 -30
- package/dist/chat-polish.d.ts +0 -17
- package/dist/chat-quiet.d.ts +0 -40
- package/dist/chat-review.d.ts +0 -51
- package/dist/chat-rooms.d.ts +0 -123
- package/dist/chat-settings-page.d.ts +0 -43
- package/dist/chat-task-actions.d.ts +0 -59
- package/dist/chat-terms.d.ts +0 -29
- package/dist/chat-voice.d.ts +0 -69
- package/dist/chat-warmth.d.ts +0 -21
- package/dist/check-access.d.ts +0 -54
- package/dist/check-facts.d.ts +0 -126
- package/dist/check-failure.d.ts +0 -113
- package/dist/check-levels-ui.d.ts +0 -36
- package/dist/check-levels.d.ts +0 -70
- package/dist/check-load.d.ts +0 -85
- package/dist/check-only-standing.d.ts +0 -36
- package/dist/check-only.d.ts +0 -15
- package/dist/check-progress.d.ts +0 -78
- package/dist/check-repair.d.ts +0 -47
- package/dist/check-report.d.ts +0 -177
- package/dist/check-stamp.d.ts +0 -46
- package/dist/checkout-cleanup.d.ts +0 -157
- package/dist/checkout-proof.d.ts +0 -28
- package/dist/child-database.d.ts +0 -12
- package/dist/claim.d.ts +0 -627
- package/dist/claude-print.d.ts +0 -12
- package/dist/cli-fast.d.ts +0 -8
- package/dist/cli-help.d.ts +0 -8
- package/dist/cli-http.d.ts +0 -58
- package/dist/cli.d.ts +0 -149
- package/dist/code-extract.d.ts +0 -44
- package/dist/code-map-acts.d.ts +0 -24
- package/dist/code-map-admission.d.ts +0 -52
- package/dist/code-map-build.d.ts +0 -63
- package/dist/code-map-cli.d.ts +0 -153
- package/dist/code-map-main.d.ts +0 -1
- package/dist/code-map-read.d.ts +0 -106
- package/dist/code-map-report.d.ts +0 -37
- package/dist/code-map-shape.d.ts +0 -172
- package/dist/code-map-store.d.ts +0 -136
- package/dist/codex-limits.d.ts +0 -15
- package/dist/coding-context.d.ts +0 -18
- package/dist/coding-handoff.d.ts +0 -39
- package/dist/coding-provider.d.ts +0 -88
- package/dist/coding-shipping-ui.d.ts +0 -5
- package/dist/coding-types.d.ts +0 -16
- package/dist/coding-ui.d.ts +0 -19
- package/dist/coding-update.d.ts +0 -28
- package/dist/coding-workspace.d.ts +0 -141
- package/dist/commit-extract.d.ts +0 -135
- package/dist/connect-cli.d.ts +0 -34
- package/dist/console-chrome.d.ts +0 -41
- package/dist/console-instance.d.ts +0 -157
- package/dist/container-state.d.ts +0 -5
- package/dist/containment.d.ts +0 -205
- package/dist/contract-changes.d.ts +0 -52
- package/dist/contracts/acceptance-terms.d.ts +0 -14
- package/dist/contracts/chat-actions.d.ts +0 -465
- package/dist/contracts/chat-callback-rows.d.ts +0 -59
- package/dist/contracts/chat-card.d.ts +0 -91
- package/dist/contracts/chat-content.d.ts +0 -551
- package/dist/contracts/chat-tables.d.ts +0 -12
- package/dist/contracts/cli.d.ts +0 -987
- package/dist/contracts/coding-activity.d.ts +0 -64
- package/dist/contracts/coding-context.d.ts +0 -97
- package/dist/contracts/coding-handoff.d.ts +0 -44
- package/dist/contracts/coding-workspace.d.ts +0 -165
- package/dist/contracts/console-api.d.ts +0 -540
- package/dist/contracts/contract-test.d.ts +0 -45
- package/dist/contracts/contract.d.ts +0 -92
- package/dist/contracts/decision.d.ts +0 -45
- package/dist/contracts/diff-stat.d.ts +0 -58
- package/dist/contracts/discord-callback.d.ts +0 -45
- package/dist/contracts/flow-card.d.ts +0 -53
- package/dist/contracts/flow-propose.d.ts +0 -334
- package/dist/contracts/flow-send.d.ts +0 -245
- package/dist/contracts/flow.d.ts +0 -19565
- package/dist/contracts/gateway-tools.d.ts +0 -472
- package/dist/contracts/handoff.d.ts +0 -91
- package/dist/contracts/health.d.ts +0 -82
- package/dist/contracts/integration-metadata.d.ts +0 -100
- package/dist/contracts/lead-context.d.ts +0 -165
- package/dist/contracts/lead-tools.d.ts +0 -2312
- package/dist/contracts/mcp-oauth.d.ts +0 -53
- package/dist/contracts/memory-pass.d.ts +0 -157
- package/dist/contracts/model-catalog.d.ts +0 -21
- package/dist/contracts/observation-request.d.ts +0 -37
- package/dist/contracts/plan.d.ts +0 -58
- package/dist/contracts/project-knowledge.d.ts +0 -159
- package/dist/contracts/project-memory.d.ts +0 -119
- package/dist/contracts/project-skills.d.ts +0 -120
- package/dist/contracts/proof.d.ts +0 -136
- package/dist/contracts/provider.d.ts +0 -40
- package/dist/contracts/recipes.d.ts +0 -166
- package/dist/contracts/release-check.d.ts +0 -371
- package/dist/contracts/release-terms.d.ts +0 -107
- package/dist/contracts/retention.d.ts +0 -42
- package/dist/contracts/review-findings.d.ts +0 -46
- package/dist/contracts/route-results.d.ts +0 -121
- package/dist/contracts/route.d.ts +0 -897
- package/dist/contracts/scope.d.ts +0 -105
- package/dist/contracts/scout-report.d.ts +0 -234
- package/dist/contracts/slack-callback.d.ts +0 -43
- package/dist/contracts/sort-answer.d.ts +0 -83
- package/dist/contracts/stage-output.d.ts +0 -127
- package/dist/contracts/storage.d.ts +0 -37
- package/dist/contracts/store-json.d.ts +0 -313
- package/dist/contracts/subagent-turn.d.ts +0 -43
- package/dist/contracts/task-sizing.d.ts +0 -24
- package/dist/contracts/teams-callback.d.ts +0 -13
- package/dist/contracts/telegram-callback.d.ts +0 -120
- package/dist/contracts/trigger-payloads.d.ts +0 -389
- package/dist/contracts/update-journal.d.ts +0 -254
- package/dist/contracts/verification-receipt.d.ts +0 -200
- package/dist/contracts/verification-view.d.ts +0 -102
- package/dist/contracts/youiyoux-request.d.ts +0 -248
- package/dist/control-setup.d.ts +0 -44
- package/dist/control-ui.d.ts +0 -37
- package/dist/controller-service.d.ts +0 -1
- package/dist/controller-supervisor.d.ts +0 -38
- package/dist/converse.d.ts +0 -316
- package/dist/coordinator-proposals.d.ts +0 -29
- package/dist/coordinator.d.ts +0 -186
- package/dist/credentials-ui.d.ts +0 -33
- package/dist/daemon.d.ts +0 -226
- package/dist/database-reclaim.d.ts +0 -4
- package/dist/decision.d.ts +0 -119
- package/dist/demo-chat.d.ts +0 -32
- package/dist/demo.d.ts +0 -153
- package/dist/deploy-gate.d.ts +0 -20
- package/dist/deploy-lock.d.ts +0 -8
- package/dist/deploy-phase.d.ts +0 -37
- package/dist/deploy-rescue.d.ts +0 -42
- package/dist/deprecations.d.ts +0 -20
- package/dist/design/kit.d.ts +0 -216
- package/dist/desktop-access.d.ts +0 -28
- package/dist/desktop-bundle.d.ts +0 -16
- package/dist/desktop-host.d.ts +0 -54
- package/dist/desktop-update-gate.d.ts +0 -12
- package/dist/desktop-update-recovery.d.ts +0 -14
- package/dist/desktop-update.d.ts +0 -147
- package/dist/digest-times.d.ts +0 -3
- package/dist/disclosure.d.ts +0 -6
- package/dist/discord-api.d.ts +0 -24
- package/dist/discord-chat.d.ts +0 -27
- package/dist/discord-settings.d.ts +0 -4
- package/dist/discord.d.ts +0 -10
- package/dist/discover.d.ts +0 -75
- package/dist/dispatch.d.ts +0 -123
- package/dist/dispose.d.ts +0 -194
- package/dist/doctor.d.ts +0 -67
- package/dist/easy-start-args.d.ts +0 -13
- package/dist/easy-start.d.ts +0 -77
- package/dist/egress.d.ts +0 -121
- package/dist/email-settings.d.ts +0 -34
- package/dist/envelope.d.ts +0 -47
- package/dist/eval-gate.d.ts +0 -51
- package/dist/eval-hooks.d.ts +0 -94
- package/dist/eval-oracle-main.d.ts +0 -1
- package/dist/eval-oracle.d.ts +0 -60
- package/dist/eval-world.d.ts +0 -17
- package/dist/evals.d.ts +0 -299
- package/dist/evidence-pack.d.ts +0 -186
- package/dist/evidence-pair.d.ts +0 -53
- package/dist/evidence.d.ts +0 -371
- package/dist/exec.d.ts +0 -355
- package/dist/exhaustion.d.ts +0 -58
- package/dist/export-ui.d.ts +0 -11
- package/dist/export.d.ts +0 -48
- package/dist/failing-first.d.ts +0 -31
- package/dist/fallback-schema.d.ts +0 -8
- package/dist/fallback.d.ts +0 -138
- package/dist/fast-start.d.ts +0 -213
- package/dist/fast-terms.d.ts +0 -9
- package/dist/fenced-check-coverage.d.ts +0 -62
- package/dist/findings.d.ts +0 -224
- package/dist/first-run.d.ts +0 -197
- package/dist/first-tasks-child.d.ts +0 -1
- package/dist/flaky-ci.d.ts +0 -31
- package/dist/flaky-cli.d.ts +0 -60
- package/dist/flaky.d.ts +0 -83
- package/dist/fleet-schema.d.ts +0 -17
- package/dist/flow-actions.d.ts +0 -79
- package/dist/flow-browser.d.ts +0 -103
- package/dist/flow-cadence.d.ts +0 -48
- package/dist/flow-card-task.d.ts +0 -11
- package/dist/flow-changed.d.ts +0 -14
- package/dist/flow-code.d.ts +0 -84
- package/dist/flow-draft.d.ts +0 -42
- package/dist/flow-engine.d.ts +0 -82
- package/dist/flow-gallery-ui.d.ts +0 -73
- package/dist/flow-gallery.d.ts +0 -147
- package/dist/flow-insights.d.ts +0 -104
- package/dist/flow-items.d.ts +0 -37
- package/dist/flow-live.d.ts +0 -16
- package/dist/flow-people.d.ts +0 -23
- package/dist/flow-pull-request.d.ts +0 -14
- package/dist/flow-replies.d.ts +0 -48
- package/dist/flow-result-card.d.ts +0 -22
- package/dist/flow-schedule.d.ts +0 -154
- package/dist/flow-scripts.d.ts +0 -31
- package/dist/flow-secrets.d.ts +0 -13
- package/dist/flow-send.d.ts +0 -54
- package/dist/flow-share.d.ts +0 -78
- package/dist/flow-sort.d.ts +0 -63
- package/dist/flow-starters-ui.d.ts +0 -15
- package/dist/flow-starters.d.ts +0 -63
- package/dist/flow-steps.d.ts +0 -52
- package/dist/flow-triggers.d.ts +0 -303
- package/dist/flow-unattended-words.d.ts +0 -48
- package/dist/flow-unattended.d.ts +0 -259
- package/dist/flows-cli.d.ts +0 -358
- package/dist/flows-ui.d.ts +0 -70
- package/dist/flows.d.ts +0 -136
- package/dist/folder-gate.d.ts +0 -32
- package/dist/folder-look.d.ts +0 -110
- package/dist/follow-through-brief.d.ts +0 -12
- package/dist/follow-through-cli.d.ts +0 -23
- package/dist/fonts.d.ts +0 -19
- package/dist/gaps.d.ts +0 -35
- package/dist/gate-failure.d.ts +0 -40
- package/dist/git-floor.d.ts +0 -16
- package/dist/git-incident.d.ts +0 -65
- package/dist/git-views.d.ts +0 -20
- package/dist/git.d.ts +0 -54
- package/dist/github-import.d.ts +0 -62
- package/dist/github-jobs.d.ts +0 -25
- package/dist/google-mail.d.ts +0 -59
- package/dist/grant.d.ts +0 -136
- package/dist/graph.d.ts +0 -164
- package/dist/guides.d.ts +0 -22
- package/dist/handover-note.d.ts +0 -33
- package/dist/health-cli.d.ts +0 -3
- package/dist/home-groups.d.ts +0 -39
- package/dist/html.d.ts +0 -85
- package/dist/install-method.d.ts +0 -17
- package/dist/integrations-ui.d.ts +0 -17
- package/dist/integrations.d.ts +0 -138
- package/dist/invoke.d.ts +0 -228
- package/dist/is-record.d.ts +0 -2
- package/dist/issues.d.ts +0 -41
- package/dist/jsonl-discriminants.d.ts +0 -11
- package/dist/keymap.d.ts +0 -43
- package/dist/keys.d.ts +0 -108
- package/dist/kits-ui.d.ts +0 -16
- package/dist/kits.d.ts +0 -88
- package/dist/knowledge-cli.d.ts +0 -132
- package/dist/knowledge-ui.d.ts +0 -45
- package/dist/landed-cleanup.d.ts +0 -175
- package/dist/laptop-background.d.ts +0 -187
- package/dist/laptop-service.d.ts +0 -111
- package/dist/latency-timeline.d.ts +0 -46
- package/dist/lead-about.d.ts +0 -35
- package/dist/lead-answer-eval.d.ts +0 -93
- package/dist/lead-capabilities.d.ts +0 -57
- package/dist/lead-cli-live.d.ts +0 -56
- package/dist/lead-cli.d.ts +0 -58
- package/dist/lead-commitments.d.ts +0 -84
- package/dist/lead-context.d.ts +0 -45
- package/dist/lead-contract.d.ts +0 -10
- package/dist/lead-doors.d.ts +0 -122
- package/dist/lead-follow.d.ts +0 -26
- package/dist/lead-identity.d.ts +0 -23
- package/dist/lead-latency-schema.d.ts +0 -24
- package/dist/lead-people.d.ts +0 -55
- package/dist/lead-progress.d.ts +0 -67
- package/dist/lead-queue-runtime.d.ts +0 -46
- package/dist/lead-queue.d.ts +0 -104
- package/dist/lead-route.d.ts +0 -56
- package/dist/lead-status.d.ts +0 -116
- package/dist/lead-sweep.d.ts +0 -67
- package/dist/lead-tools.d.ts +0 -167
- package/dist/lead-voice.d.ts +0 -85
- package/dist/lead.d.ts +0 -142
- package/dist/learning-child.d.ts +0 -1
- package/dist/learning-look.d.ts +0 -25
- package/dist/ledger-chain.d.ts +0 -46
- package/dist/ledger-csv.d.ts +0 -4
- package/dist/ledger-view.d.ts +0 -27
- package/dist/lesson-notes.d.ts +0 -81
- package/dist/limits-ui.d.ts +0 -34
- package/dist/link.d.ts +0 -72
- package/dist/live-backup.d.ts +0 -39
- package/dist/live-bus.d.ts +0 -141
- package/dist/live-children-read.d.ts +0 -52
- package/dist/live-children.d.ts +0 -73
- package/dist/live-detail.d.ts +0 -27
- package/dist/live-input.d.ts +0 -68
- package/dist/live-main-read.d.ts +0 -19
- package/dist/live-notes.d.ts +0 -20
- package/dist/live-open.d.ts +0 -28
- package/dist/live-records.d.ts +0 -149
- package/dist/live-reply.d.ts +0 -83
- package/dist/live-terminal.d.ts +0 -273
- package/dist/live.d.ts +0 -152
- package/dist/local-owner-acts.d.ts +0 -83
- package/dist/local-owner.d.ts +0 -135
- package/dist/log.d.ts +0 -7
- package/dist/login-secrets.d.ts +0 -60
- package/dist/machine-check.d.ts +0 -16
- package/dist/machine-identity.d.ts +0 -75
- package/dist/mailbox.d.ts +0 -57
- package/dist/maintenance.d.ts +0 -13
- package/dist/mcp-connect.d.ts +0 -181
- package/dist/mcp-core.d.ts +0 -110
- package/dist/mcp-http.d.ts +0 -32
- package/dist/mcp-oauth.d.ts +0 -92
- package/dist/mcp-person.d.ts +0 -22
- package/dist/mcp.d.ts +0 -20
- package/dist/memory-cli.d.ts +0 -768
- package/dist/memory-pass.d.ts +0 -151
- package/dist/memory-tidy.d.ts +0 -181
- package/dist/memory-use.d.ts +0 -35
- package/dist/merge-checklist.d.ts +0 -55
- package/dist/metrics.d.ts +0 -6
- package/dist/mobile-viewport.d.ts +0 -7
- package/dist/model-catalog.d.ts +0 -123
- package/dist/model-choices.d.ts +0 -235
- package/dist/model-names.d.ts +0 -6
- package/dist/models-cli.d.ts +0 -307
- package/dist/models-ui.d.ts +0 -161
- package/dist/modes.d.ts +0 -99
- package/dist/monitoring-settings.d.ts +0 -44
- package/dist/monitoring-ui.d.ts +0 -23
- package/dist/monitoring.d.ts +0 -34
- package/dist/names.d.ts +0 -67
- package/dist/needs-you.d.ts +0 -164
- package/dist/never-index.d.ts +0 -3
- package/dist/nightly-check.d.ts +0 -107
- package/dist/nightly-github.d.ts +0 -318
- package/dist/notification-delivery.d.ts +0 -19
- package/dist/notification-rows.d.ts +0 -30
- package/dist/oauth-run-token.d.ts +0 -51
- package/dist/observations.d.ts +0 -36
- package/dist/oidc.d.ts +0 -71
- package/dist/onboard.d.ts +0 -108
- package/dist/one-step-chat-schema.d.ts +0 -22
- package/dist/openrouter-models.d.ts +0 -34
- package/dist/operate-remote-arguments.d.ts +0 -36
- package/dist/operate-remote.d.ts +0 -98
- package/dist/operate.d.ts +0 -401
- package/dist/orphan-sweep.d.ts +0 -65
- package/dist/page-work-contract.d.ts +0 -21
- package/dist/password-bearer.d.ts +0 -25
- package/dist/passwordless.d.ts +0 -23
- package/dist/peek-cli.d.ts +0 -112
- package/dist/peek.d.ts +0 -110
- package/dist/people-audit-ui.d.ts +0 -16
- package/dist/person-proof.d.ts +0 -2
- package/dist/phase-routing.d.ts +0 -401
- package/dist/plain-schema.d.ts +0 -23
- package/dist/plain-words.d.ts +0 -20
- package/dist/plan-auto.d.ts +0 -25
- package/dist/plan-login.d.ts +0 -14
- package/dist/plan.d.ts +0 -188
- package/dist/plane-review.d.ts +0 -54
- package/dist/planner-source.d.ts +0 -225
- package/dist/planner.d.ts +0 -76
- package/dist/policy-ui.d.ts +0 -22
- package/dist/policy.d.ts +0 -92
- package/dist/prepared-evidence.d.ts +0 -17
- package/dist/principal.d.ts +0 -42
- package/dist/probe.d.ts +0 -46
- package/dist/process-custody.d.ts +0 -17
- package/dist/process-liveness.d.ts +0 -13
- package/dist/process-tree.d.ts +0 -39
- package/dist/project-access.d.ts +0 -17
- package/dist/project-activity.d.ts +0 -20
- package/dist/project-admission.d.ts +0 -105
- package/dist/project-cli.d.ts +0 -19
- package/dist/project-concurrency.d.ts +0 -62
- package/dist/project-delete-ui.d.ts +0 -96
- package/dist/project-delete.d.ts +0 -59
- package/dist/project-demo.d.ts +0 -12
- package/dist/project-file.d.ts +0 -3
- package/dist/project-identity.d.ts +0 -52
- package/dist/project-knowledge.d.ts +0 -124
- package/dist/project-learning.d.ts +0 -120
- package/dist/project-memory.d.ts +0 -70
- package/dist/project-outcomes.d.ts +0 -119
- package/dist/project-sandbox.d.ts +0 -59
- package/dist/project-skills.d.ts +0 -139
- package/dist/project-tools.d.ts +0 -318
- package/dist/project.d.ts +0 -65
- package/dist/prompt.d.ts +0 -33
- package/dist/proof.d.ts +0 -457
- package/dist/proposal.d.ts +0 -70
- package/dist/protected-storage-look.d.ts +0 -1
- package/dist/protected-storage.d.ts +0 -98
- package/dist/provider-auth.d.ts +0 -143
- package/dist/provider-capture.d.ts +0 -34
- package/dist/provider-connection.d.ts +0 -23
- package/dist/provider-home.d.ts +0 -22
- package/dist/provider-limits.d.ts +0 -37
- package/dist/provider.d.ts +0 -369
- package/dist/public-access.d.ts +0 -61
- package/dist/public-check.d.ts +0 -37
- package/dist/publish.d.ts +0 -146
- package/dist/pull-request-flow.d.ts +0 -189
- package/dist/pull-request-schema.d.ts +0 -5
- package/dist/pull-request-ui.d.ts +0 -25
- package/dist/pulls.d.ts +0 -121
- package/dist/push.d.ts +0 -120
- package/dist/quality.d.ts +0 -8
- package/dist/quick-start.d.ts +0 -26
- package/dist/read-executor-worker.d.ts +0 -1
- package/dist/read-executor.d.ts +0 -66
- package/dist/read-only-request.d.ts +0 -4
- package/dist/recipe-ui.d.ts +0 -21
- package/dist/recipes.d.ts +0 -56
- package/dist/release-adapters.d.ts +0 -205
- package/dist/release-approval.d.ts +0 -180
- package/dist/release-authority.d.ts +0 -173
- package/dist/release-auto.d.ts +0 -184
- package/dist/release-card.d.ts +0 -170
- package/dist/release-carry.d.ts +0 -261
- package/dist/release-ci-hold.d.ts +0 -41
- package/dist/release-cli.d.ts +0 -34
- package/dist/release-coverage.d.ts +0 -16
- package/dist/release-gate.d.ts +0 -84
- package/dist/release-git.d.ts +0 -43
- package/dist/release-links.d.ts +0 -29
- package/dist/release-net.d.ts +0 -90
- package/dist/release-next.d.ts +0 -48
- package/dist/release-recheck.d.ts +0 -146
- package/dist/release-refusal.d.ts +0 -32
- package/dist/release-view.d.ts +0 -37
- package/dist/release.d.ts +0 -806
- package/dist/releases.d.ts +0 -94
- package/dist/remote-audit.d.ts +0 -79
- package/dist/remote-command.d.ts +0 -45
- package/dist/remote-destination.d.ts +0 -36
- package/dist/remote-exec.d.ts +0 -38
- package/dist/remote-main.d.ts +0 -111
- package/dist/remote-run.d.ts +0 -20
- package/dist/remote.d.ts +0 -67
- package/dist/render.d.ts +0 -64
- package/dist/reply-shape.d.ts +0 -106
- package/dist/reply-voice.d.ts +0 -23
- package/dist/report-summary.d.ts +0 -22
- package/dist/reported-usage.d.ts +0 -69
- package/dist/repos.d.ts +0 -67
- package/dist/repository-context-ui.d.ts +0 -3
- package/dist/repository-context.d.ts +0 -66
- package/dist/request-budget-ui.d.ts +0 -14
- package/dist/request-budget.d.ts +0 -127
- package/dist/restart-certification.d.ts +0 -133
- package/dist/result-actions.d.ts +0 -36
- package/dist/result-acts.d.ts +0 -112
- package/dist/result-completion.d.ts +0 -39
- package/dist/result-evidence-readers.d.ts +0 -42
- package/dist/result-follow-ups.d.ts +0 -118
- package/dist/result-review.d.ts +0 -220
- package/dist/result-shots.d.ts +0 -59
- package/dist/retention-ui.d.ts +0 -21
- package/dist/retention.d.ts +0 -77
- package/dist/review-context.d.ts +0 -245
- package/dist/review-evidence.d.ts +0 -33
- package/dist/review-switch.d.ts +0 -36
- package/dist/reviewer.d.ts +0 -99
- package/dist/route-change-check.d.ts +0 -4
- package/dist/route-change.d.ts +0 -22
- package/dist/route-hooks.d.ts +0 -54
- package/dist/route-results.d.ts +0 -75
- package/dist/route-rules.d.ts +0 -324
- package/dist/route-savings.d.ts +0 -136
- package/dist/route-store.d.ts +0 -300
- package/dist/run-closeout.d.ts +0 -89
- package/dist/run-efficiency.d.ts +0 -74
- package/dist/run-ending.d.ts +0 -21
- package/dist/runner-process.d.ts +0 -76
- package/dist/runner.d.ts +0 -324
- package/dist/sample-project.d.ts +0 -31
- package/dist/sandbox-launch.d.ts +0 -1
- package/dist/sandbox-runtime.d.ts +0 -128
- package/dist/scan.d.ts +0 -32
- package/dist/scope.d.ts +0 -1098
- package/dist/scout-browser-lock.d.ts +0 -69
- package/dist/scout-browser.d.ts +0 -107
- package/dist/scout-net.d.ts +0 -25
- package/dist/scout-report.d.ts +0 -23
- package/dist/scout.d.ts +0 -142
- package/dist/secret-mint.d.ts +0 -1
- package/dist/serve.d.ts +0 -11
- package/dist/server/agents-computers.d.ts +0 -9
- package/dist/server/agents-live-filed.d.ts +0 -17
- package/dist/server/agents-live-lead.d.ts +0 -47
- package/dist/server/agents-live-room.d.ts +0 -23
- package/dist/server/chat.d.ts +0 -39
- package/dist/server/chrome.d.ts +0 -328
- package/dist/server/edge-refusal.d.ts +0 -7
- package/dist/server/flows.d.ts +0 -8
- package/dist/server/guards.d.ts +0 -81
- package/dist/server/handler-context.d.ts +0 -22
- package/dist/server/handler-registry.d.ts +0 -23
- package/dist/server/home-asks.d.ts +0 -45
- package/dist/server/home.d.ts +0 -65
- package/dist/server/http.d.ts +0 -337
- package/dist/server/in-place.d.ts +0 -15
- package/dist/server/kit-standalone.d.ts +0 -22
- package/dist/server/kit.d.ts +0 -452
- package/dist/server/last-checks.d.ts +0 -17
- package/dist/server/live.d.ts +0 -74
- package/dist/server/merge-ready-view.d.ts +0 -10
- package/dist/server/mutation-key.d.ts +0 -70
- package/dist/server/pages-assets.d.ts +0 -11
- package/dist/server/pages.d.ts +0 -8
- package/dist/server/people-tokens.d.ts +0 -18
- package/dist/server/remote-hooks.d.ts +0 -29
- package/dist/server/remote.d.ts +0 -60
- package/dist/server/render-chat.d.ts +0 -439
- package/dist/server/render-code-map.d.ts +0 -30
- package/dist/server/render-flaky.d.ts +0 -20
- package/dist/server/render-follow-through.d.ts +0 -11
- package/dist/server/render-history.d.ts +0 -51
- package/dist/server/render-new-task.d.ts +0 -54
- package/dist/server/render-pages.d.ts +0 -236
- package/dist/server/render-people.d.ts +0 -102
- package/dist/server/render-projects.d.ts +0 -104
- package/dist/server/render-release.d.ts +0 -19
- package/dist/server/render-results.d.ts +0 -758
- package/dist/server/render-settings.d.ts +0 -93
- package/dist/server/render-tasks.d.ts +0 -783
- package/dist/server/request-context.d.ts +0 -78
- package/dist/server/retired-routes.d.ts +0 -17
- package/dist/server/route-policy.d.ts +0 -18
- package/dist/server/route-table.d.ts +0 -114
- package/dist/server/runtime.d.ts +0 -343
- package/dist/server/session.d.ts +0 -192
- package/dist/server/settings.d.ts +0 -76
- package/dist/server/signup-gate.d.ts +0 -9
- package/dist/server/sweeps.d.ts +0 -4
- package/dist/server/task-views.d.ts +0 -98
- package/dist/server/tasks.d.ts +0 -108
- package/dist/server/terminals.d.ts +0 -31
- package/dist/server/welcome.d.ts +0 -28
- package/dist/server-telemetry.d.ts +0 -87
- package/dist/settings-groups-ui.d.ts +0 -286
- package/dist/settings-kit-script.d.ts +0 -21
- package/dist/settings-kit.d.ts +0 -173
- package/dist/settings-proofs.d.ts +0 -64
- package/dist/setup-guide.d.ts +0 -39
- package/dist/shared-deps.d.ts +0 -115
- package/dist/sign-in-guard.d.ts +0 -70
- package/dist/skills-ui.d.ts +0 -12
- package/dist/skills.d.ts +0 -99
- package/dist/slack-api.d.ts +0 -59
- package/dist/slack-chat.d.ts +0 -37
- package/dist/slack-settings.d.ts +0 -4
- package/dist/slack-socket.d.ts +0 -12
- package/dist/slack.d.ts +0 -6
- package/dist/sleep.d.ts +0 -2
- package/dist/source-key.d.ts +0 -2
- package/dist/spend-report.d.ts +0 -87
- package/dist/spend-ui.d.ts +0 -80
- package/dist/spend.d.ts +0 -142
- package/dist/sqlite-runtime.d.ts +0 -3
- package/dist/sqlite-telemetry.d.ts +0 -9
- package/dist/sso-settings.d.ts +0 -33
- package/dist/sso-ui.d.ts +0 -26
- package/dist/staged-runtimes.d.ts +0 -54
- package/dist/steer-capabilities.d.ts +0 -32
- package/dist/steer-controls.d.ts +0 -14
- package/dist/steer-live.d.ts +0 -19
- package/dist/steer-mailbox.d.ts +0 -46
- package/dist/steer-status.d.ts +0 -25
- package/dist/stop-proof.d.ts +0 -67
- package/dist/storage-sweep-child.d.ts +0 -1
- package/dist/storage-sweep-process.d.ts +0 -55
- package/dist/storage-sweep-schedule.d.ts +0 -30
- package/dist/storage-sweep.d.ts +0 -77
- package/dist/storage-ui.d.ts +0 -23
- package/dist/storage.d.ts +0 -68
- package/dist/store-baseline.d.ts +0 -19
- package/dist/store.d.ts +0 -8613
- package/dist/stream-scope.d.ts +0 -18
- package/dist/structured-output.d.ts +0 -57
- package/dist/style-asset.d.ts +0 -7
- package/dist/subagent-admin.d.ts +0 -53
- package/dist/subagent-desk.d.ts +0 -59
- package/dist/subagent-memory.d.ts +0 -65
- package/dist/subagent-question.d.ts +0 -59
- package/dist/subagent-tools.d.ts +0 -125
- package/dist/subagent-week.d.ts +0 -68
- package/dist/subagent-work.d.ts +0 -76
- package/dist/subagents-ui.d.ts +0 -22
- package/dist/subagents.d.ts +0 -146
- package/dist/subscription-chat.d.ts +0 -54
- package/dist/summary.d.ts +0 -33
- package/dist/surface.d.ts +0 -49
- package/dist/sweep-gate.d.ts +0 -10
- package/dist/sweep-quarantine.d.ts +0 -29
- package/dist/sync.d.ts +0 -94
- package/dist/tailnet.d.ts +0 -11
- package/dist/tamper-scan.d.ts +0 -4
- package/dist/task-activity.d.ts +0 -27
- package/dist/task-aliases.d.ts +0 -5
- package/dist/task-archive.d.ts +0 -13
- package/dist/task-base.d.ts +0 -39
- package/dist/task-composer.d.ts +0 -14
- package/dist/task-control.d.ts +0 -159
- package/dist/task-live.d.ts +0 -8
- package/dist/task-moves.d.ts +0 -90
- package/dist/task-outcome-cli.d.ts +0 -48
- package/dist/task-review-brief.d.ts +0 -69
- package/dist/task-sizing.d.ts +0 -58
- package/dist/task-source.d.ts +0 -77
- package/dist/task-status.d.ts +0 -324
- package/dist/task-text.d.ts +0 -31
- package/dist/team-chat-authorization.d.ts +0 -11
- package/dist/team-contract.d.ts +0 -103
- package/dist/team-http.d.ts +0 -25
- package/dist/team-leads.d.ts +0 -85
- package/dist/team-runtime.d.ts +0 -25
- package/dist/team-ui.d.ts +0 -4
- package/dist/team-updates.d.ts +0 -8
- package/dist/teams-api.d.ts +0 -33
- package/dist/teams-chat.d.ts +0 -36
- package/dist/teams-settings.d.ts +0 -14
- package/dist/teams.d.ts +0 -24
- package/dist/teardown-git.d.ts +0 -164
- package/dist/telegram-flow.d.ts +0 -112
- package/dist/telegram-lead.d.ts +0 -151
- package/dist/telegram-live.d.ts +0 -116
- package/dist/telegram-progress.d.ts +0 -20
- package/dist/telegram-settings.d.ts +0 -9
- package/dist/telegram-status.d.ts +0 -83
- package/dist/telegram-team.d.ts +0 -68
- package/dist/telegram.d.ts +0 -271
- package/dist/templates.d.ts +0 -69
- package/dist/terminal-catalog.d.ts +0 -11
- package/dist/terminal-text.d.ts +0 -11
- package/dist/test-infra.d.ts +0 -34
- package/dist/test-temp.d.ts +0 -40
- package/dist/text-limits.d.ts +0 -297
- package/dist/tidy.d.ts +0 -130
- package/dist/tier-report.d.ts +0 -44
- package/dist/token-notices.d.ts +0 -11
- package/dist/tokens-cli.d.ts +0 -21
- package/dist/tool-broker.d.ts +0 -52
- package/dist/tool-launcher.d.ts +0 -1
- package/dist/tool-secret-store.d.ts +0 -167
- package/dist/toolroll-update-cli.d.ts +0 -15
- package/dist/toolroll-update-ui.d.ts +0 -47
- package/dist/toolroll-update.d.ts +0 -265
- package/dist/tools-ui.d.ts +0 -51
- package/dist/transitions-recipes.d.ts +0 -1
- package/dist/tree-proof.d.ts +0 -34
- package/dist/tui-contract.d.ts +0 -202
- package/dist/tui-source.d.ts +0 -14
- package/dist/typed-start.d.ts +0 -51
- package/dist/unfenced-test-support.d.ts +0 -2
- package/dist/up-processes.d.ts +0 -162
- package/dist/up-role-child.d.ts +0 -1
- package/dist/update-notice.d.ts +0 -5
- package/dist/vanished-retry.d.ts +0 -30
- package/dist/verification-evidence.d.ts +0 -68
- package/dist/version.d.ts +0 -2
- package/dist/wake-hub.d.ts +0 -72
- package/dist/webhook-limits.d.ts +0 -23
- package/dist/webhook-readers.d.ts +0 -56
- package/dist/webhook-signing.d.ts +0 -27
- package/dist/webhooks.d.ts +0 -84
- package/dist/welcome-facts.d.ts +0 -18
- package/dist/when-html.d.ts +0 -40
- package/dist/work-index.d.ts +0 -175
- package/dist/work-summary.d.ts +0 -61
- package/dist/workspace-motion.d.ts +0 -4
- package/dist/workspace-revision.d.ts +0 -48
- package/dist/workspace-ui.d.ts +0 -385
- package/dist/worktree-notices.d.ts +0 -13
- package/dist/worktree.d.ts +0 -365
- package/dist/writes-mode.d.ts +0 -9
- package/dist/youiyoux-intake.d.ts +0 -234
package/dist/telegram-lead.js
CHANGED
|
@@ -4,27 +4,6 @@ import { CHAT_ACTIONS, sharedActionAllowsChallenge, sharedActionPayload } from "
|
|
|
4
4
|
import { typedStartOf } from "./typed-start.js";
|
|
5
5
|
import { armedQuestion, taskInCeiling, mirrorToTaskChat, couldNotAnswerText, channelRepos as telegramConversationRepos, resolveChannelLead as resolveTelegramLead, NO_PHONE_LINK, NO_TASK_LINK, phoneProposalLink, confirmedLink, startedTaskLink, phoneProposalPreview, proposalOutcomeText, handoffCardText, confirmedCardText } from "./chat-channel.js";
|
|
6
6
|
export { channelRepos as telegramConversationRepos, resolveChannelLead as resolveTelegramLead, tooLongText, whichTaskText, replyContextFor, NO_PHONE_LINK, NO_TASK_LINK, proposalLink, confirmedLink, proposalPreview, proposalOutcomeText, handoffCardText, confirmedCardText, CHAT_ACTION_PARITY as TELEGRAM_ACTION_PARITY, parityGaps } from "./chat-channel.js";
|
|
7
|
-
/**
|
|
8
|
-
* The paired phone as one more way to use the same assistant.
|
|
9
|
-
*
|
|
10
|
-
* Transport only. An ordinary private Telegram message becomes a lead turn
|
|
11
|
-
* through `runLeadTurn` — the same saved thread, proposal rows, confirm
|
|
12
|
-
* doors and result actions the console and `toolroll chat` use —
|
|
13
|
-
* and every act is still a card the operator confirms. This module owns
|
|
14
|
-
* what is specific to the wire: proving the pairing (chat AND immutable
|
|
15
|
-
* sender AND approver generation AND the enrolled ceiling) before any
|
|
16
|
-
* model call and again after every wait; the durable inbound row that
|
|
17
|
-
* precedes polling acknowledgement; the request identity the engine
|
|
18
|
-
* receipts a turn under so a replay or a restart never dispatches the
|
|
19
|
-
* provider twice; concise previews with opaque one-tap tokens; and the
|
|
20
|
-
* honest words for what a phone cannot do (a password, a cancel, a
|
|
21
|
-
* console-only control).
|
|
22
|
-
*
|
|
23
|
-
* Nothing here mints authority: the principal comes from
|
|
24
|
-
* `verifyApproverStanding` against the live binding row, the session is
|
|
25
|
-
* the approver's own compatible one (or one minted under the same terms
|
|
26
|
-
* the console and CLI state), and the door re-proves everything again.
|
|
27
|
-
*/
|
|
28
7
|
import { createHash, randomBytes } from "node:crypto";
|
|
29
8
|
import { leadFailureText, runLeadTurn } from "./lead.js";
|
|
30
9
|
import { confirmLeadProposal, confirmTypedStart, dismissLeadProposal, TYPED_START_STARTED } from "./lead-doors.js";
|
|
@@ -38,40 +17,16 @@ import { chatResultHref } from "./chat-controls.js";
|
|
|
38
17
|
import { resultImageFileName, safeResultImageCaption, verifyResultImage } from "./chat-evidence.js";
|
|
39
18
|
import { telegramButton } from "./contracts/telegram-callback.js";
|
|
40
19
|
import { chatOutcome, isAdmittedWait, isLeadWait } from "./chat-message-states.js";
|
|
41
|
-
/** How long one claimed turn may go without a heartbeat before another poller may take it over. */
|
|
42
20
|
export const CONVERSATION_CLAIM_MS = 2 * 60_000;
|
|
43
|
-
/** A busy engine (one turn at a time) defers a queued message this long, up to the age bound below. */
|
|
44
21
|
export const CONVERSATION_RETRY_MS = 5_000;
|
|
45
22
|
export const CONVERSATION_MAX_AGE_MS = 10 * 60_000;
|
|
46
|
-
/** Waiting for the lead itself (it is answering, or earlier messages wait in the person's lead queue) is bounded longer:
|
|
47
|
-
* two hours from the message's arrival, never reset as it moves from waiting behind the queue to waiting on a turn. */
|
|
48
23
|
export const CONVERSATION_WAIT_MAX_AGE_MS = 2 * 3_600_000;
|
|
49
|
-
/** A card's buttons live this long; its armed Yes and Cancel last CONFIRM_TTL_MS. */
|
|
50
24
|
export const CARD_TTL_MS = 24 * 3_600_000;
|
|
51
|
-
/** Telegram's own message ceiling, with room for our part headers (the same bound telegram.ts splits at). */
|
|
52
25
|
export const PART_CAP = 3_900;
|
|
53
|
-
// ---- the ceiling and the principal --------------------------------------------
|
|
54
|
-
/**
|
|
55
|
-
* The phone's project ceiling: the enrolled registry, canonicalized and
|
|
56
|
-
* deduplicated IN ORDER exactly as the console's managed list is, then
|
|
57
|
-
* narrowed to what this approver's account may access. Order matters —
|
|
58
|
-
* `r1..rN` is an index and the ceiling digest hashes the order — so a
|
|
59
|
-
* console session over the same enrollment shares its digest here.
|
|
60
|
-
*/
|
|
61
|
-
/** The engine's request identity for one inbound message: exact bot, binding and update, never text. */
|
|
62
26
|
export function telegramRequestId(botId, bindingId, updateId) {
|
|
63
27
|
return createHash("sha256").update(`telegram:${botId}:${bindingId}:${updateId}`).digest("hex").slice(0, 32);
|
|
64
28
|
}
|
|
65
|
-
/** The one channel problem that is transient: the registry could not be read now. Retried, never a refusal. */
|
|
66
29
|
export const UNREADABLE_REGISTRY = "current project access could not be read";
|
|
67
|
-
/**
|
|
68
|
-
* Is the channel still what a turn opened under? The live binding must be
|
|
69
|
-
* the SAME row and generation, its approver still an approver, and the
|
|
70
|
-
* enrolled ceiling (reloaded now) still the exact list the principal
|
|
71
|
-
* holds — or, for a reply recovered after a restart, the ceiling digest
|
|
72
|
-
* its session was minted under. A string names what changed; null means
|
|
73
|
-
* nothing did.
|
|
74
|
-
*/
|
|
75
30
|
export async function telegramChannelProblem(store, expected, readProjects) {
|
|
76
31
|
let registry;
|
|
77
32
|
try {
|
|
@@ -93,27 +48,20 @@ export async function telegramChannelProblem(store, expected, readProjects) {
|
|
|
93
48
|
return "the connected projects changed";
|
|
94
49
|
return null;
|
|
95
50
|
}
|
|
96
|
-
// ---- words ---------------------------------------------------------------------
|
|
97
51
|
export function phoneLinkButton(origin, link) {
|
|
98
52
|
if (origin === null || link === null)
|
|
99
53
|
return null;
|
|
100
54
|
return [{ text: link.label, url: `${origin}${link.path}` }];
|
|
101
55
|
}
|
|
102
|
-
/** Why a card that wanted a link carries none — null when it carries one. */
|
|
103
56
|
function linkNote(origin, link) {
|
|
104
57
|
if (origin === null)
|
|
105
58
|
return NO_PHONE_LINK;
|
|
106
59
|
return link === null ? NO_TASK_LINK : null;
|
|
107
60
|
}
|
|
108
|
-
/** The keyboard as sent: the persisted callback rows, then the link row minted now. */
|
|
109
61
|
function keyboardWith(callbacks, link) {
|
|
110
62
|
const rows = [...(callbacks ?? []), ...(link === null ? [] : [link])];
|
|
111
63
|
return rows.length === 0 ? undefined : rows;
|
|
112
64
|
}
|
|
113
|
-
// ---- proposal cards on the wire ------------------------------------------------------
|
|
114
|
-
/** One inline button: an opaque callback token (a real in-chat act) or a url (navigation, never authority). */
|
|
115
|
-
/** The buttons under the lead's question: options two to a row, then "Something else". Each names the turn and the
|
|
116
|
-
* option's place, nothing more; a tap re-proves that the question is still open and is the tapper's own. */
|
|
117
65
|
export function askKeyboard(ask) {
|
|
118
66
|
const rows = [];
|
|
119
67
|
for (let at = 0; at < ask.options.length; at += 2)
|
|
@@ -121,35 +69,21 @@ export function askKeyboard(ask) {
|
|
|
121
69
|
rows.push([telegramButton(LEAD_ASK_OTHER, `ask:${ask.turn}:x`)]);
|
|
122
70
|
return rows;
|
|
123
71
|
}
|
|
124
|
-
/** Mint the card's tokens before the send, so a tap can never name a token that does not exist. */
|
|
125
72
|
export function mintCardTokens(store, binding, proposal, now, messageId, chatId = binding.chatId) {
|
|
126
73
|
const confirm = randomBytes(16).toString("hex");
|
|
127
74
|
const dismiss = randomBytes(16).toString("hex");
|
|
128
75
|
for (const [token, phase] of [[confirm, "confirm"], [dismiss, "dismiss"]]) {
|
|
129
76
|
store.createTelegramProposalAction({ token, binding: binding.id, proposal, phase, chatId, ttlMs: CARD_TTL_MS, ...(messageId === undefined ? {} : { messageId }) }, now);
|
|
130
77
|
}
|
|
131
|
-
// A Start card's button says what it does: the card's last line tells the person to tap it (or reply yes).
|
|
132
78
|
const saved = store.getLeadProposal(proposal);
|
|
133
79
|
const label = saved?.kind === "action" && sharedActionPayload(saved.payload)?.operation === "task_start" ? "Start work" : "Confirm";
|
|
134
80
|
return { keyboard: [[telegramButton(label, confirm), telegramButton("Dismiss", dismiss)]], tokens: [confirm, dismiss] };
|
|
135
81
|
}
|
|
136
|
-
/**
|
|
137
|
-
* One tap on a proposal card, applied inside the update's own transaction
|
|
138
|
-
* by the bridge (which already proved the live binding, the exact sender
|
|
139
|
-
* and the exact chat). Returns what to tell Telegram afterwards. The
|
|
140
|
-
* principal is minted from the binding row against the CURRENT enrolled
|
|
141
|
-
* ceiling; the door re-proves standing, ceiling, session and the
|
|
142
|
-
* proposal's own terms again inside its transaction.
|
|
143
|
-
*/
|
|
144
82
|
export function applyProposalTap(store, binding, token, message, repos, options, now) {
|
|
145
83
|
const effects = [];
|
|
146
84
|
const ack = (text) => { effects.push({ kind: "ack", text }); };
|
|
147
85
|
const edit = (text, keyboard) => { effects.push({ kind: "edit", text, ...(keyboard === undefined ? {} : { keyboard }) }); };
|
|
148
86
|
const action = store.getTelegramProposalAction(token);
|
|
149
|
-
// The tap must land where the card was placed. In a paired private chat
|
|
150
|
-
// that is the tapper's own binding; in a group that follows a team
|
|
151
|
-
// conversation any paired member may tap, and the door then proves that
|
|
152
|
-
// person's own membership and consent.
|
|
153
87
|
const tapChatId = message.chat === undefined ? binding.chatId : String(message.chat.id);
|
|
154
88
|
const selected = store.telegramTeamChat(binding.botId, tapChatId);
|
|
155
89
|
const groupCard = tapChatId !== binding.chatId && selected?.kind === "group";
|
|
@@ -167,9 +101,6 @@ export function applyProposalTap(store, binding, token, message, repos, options,
|
|
|
167
101
|
edit("This card no longer exists.");
|
|
168
102
|
return { effects, confirmed: false, ignored: true };
|
|
169
103
|
}
|
|
170
|
-
// A card belongs to the selected conversation, not merely the same
|
|
171
|
-
// Telegram group. Check the tapper before rendering even an outcome or a
|
|
172
|
-
// challenge: a paired outsider must learn none of the proposal's details.
|
|
173
104
|
let actionRepos = repos;
|
|
174
105
|
const shared = store.handle.prepare("SELECT id FROM team_conversation WHERE thread = ?").get(proposal.thread);
|
|
175
106
|
if (groupCard || shared !== undefined) {
|
|
@@ -185,7 +116,7 @@ export function applyProposalTap(store, binding, token, message, repos, options,
|
|
|
185
116
|
allowed = groupCard ? audience.conversation.visibility === "team" : grant.id === binding.id;
|
|
186
117
|
}
|
|
187
118
|
}
|
|
188
|
-
catch {
|
|
119
|
+
catch { }
|
|
189
120
|
}
|
|
190
121
|
if (!allowed) {
|
|
191
122
|
ack("that button is no longer available in this conversation");
|
|
@@ -193,15 +124,12 @@ export function applyProposalTap(store, binding, token, message, repos, options,
|
|
|
193
124
|
}
|
|
194
125
|
}
|
|
195
126
|
if (proposal.state !== "pending") {
|
|
196
|
-
// Already acted on — here, on the console, or from the terminal. The
|
|
197
|
-
// card shows the recorded outcome; nothing runs twice.
|
|
198
127
|
store.consumeTelegramProposalActions(proposal.id, now);
|
|
199
128
|
ack(proposal.state === "confirmed" ? "already done" : proposal.state === "dismissed" ? "already dismissed" : "already acted on");
|
|
200
129
|
edit(proposalOutcomeText(proposal));
|
|
201
130
|
return { effects, confirmed: false, ignored: true };
|
|
202
131
|
}
|
|
203
132
|
if (actionRepos === null) {
|
|
204
|
-
// The registry could not be read: the token stays live for a retry.
|
|
205
133
|
ack("project access could not be read — tap again in a moment");
|
|
206
134
|
return { effects, confirmed: false, ignored: true };
|
|
207
135
|
}
|
|
@@ -231,7 +159,6 @@ export function applyProposalTap(store, binding, token, message, repos, options,
|
|
|
231
159
|
return { effects, confirmed: false, ignored: !done };
|
|
232
160
|
}
|
|
233
161
|
if (action.phase === "cancel") {
|
|
234
|
-
// Cancel means cancelled: the armed yes dies with it and the card is restored.
|
|
235
162
|
store.consumeTelegramProposalAction(token, now);
|
|
236
163
|
store.consumeTelegramProposalActions(proposal.id, now, ["yes", "cancel"]);
|
|
237
164
|
const fresh = mintCardTokens(store, binding, proposal.id, now, String(message.message_id), tapChatId);
|
|
@@ -240,8 +167,6 @@ export function applyProposalTap(store, binding, token, message, repos, options,
|
|
|
240
167
|
return { effects, confirmed: false, ignored: false };
|
|
241
168
|
}
|
|
242
169
|
if (!preview.buttons) {
|
|
243
|
-
// A forged keyboard on a handoff card: nothing acts; the card is
|
|
244
|
-
// repainted with its current link (or the honest absence of one).
|
|
245
170
|
store.consumeTelegramProposalActions(proposal.id, now);
|
|
246
171
|
const wanted = phoneProposalLink(store, proposal, actionRepos, "telegram");
|
|
247
172
|
const link = phoneLinkButton(origin, wanted);
|
|
@@ -252,8 +177,6 @@ export function applyProposalTap(store, binding, token, message, repos, options,
|
|
|
252
177
|
const irreversible = proposal.kind === "answer" && proposal.payload["reversible"] === false;
|
|
253
178
|
const sharedAction = proposal.kind === "action" ? sharedActionPayload(proposal.payload) : null;
|
|
254
179
|
const challenged = sharedAction !== null && sharedActionAllowsChallenge(sharedAction, "telegram");
|
|
255
|
-
// The arm: two fresh one-time tokens make a real challenge, exactly as a
|
|
256
|
-
// decision button does. Nothing is answered or recorded here.
|
|
257
180
|
const arm = () => {
|
|
258
181
|
store.consumeTelegramProposalActions(proposal.id, now, ["yes", "cancel"]);
|
|
259
182
|
const yes = randomBytes(16).toString("hex");
|
|
@@ -289,7 +212,6 @@ export function applyProposalTap(store, binding, token, message, repos, options,
|
|
|
289
212
|
return { effects, confirmed: false, ignored: true };
|
|
290
213
|
}
|
|
291
214
|
const outcome = confirmLeadProposal(store, who, proposal.id, now, {
|
|
292
|
-
// The paired phone speaks for its account's full authority (pairing is a full session's act).
|
|
293
215
|
authority: "full",
|
|
294
216
|
via: "telegram",
|
|
295
217
|
binding: binding.id,
|
|
@@ -298,7 +220,6 @@ export function applyProposalTap(store, binding, token, message, repos, options,
|
|
|
298
220
|
deferSignal: signal => effects.push({ kind: "signal", run: signal }),
|
|
299
221
|
});
|
|
300
222
|
if (!outcome.ok && outcome.reason === "needs-confirm") {
|
|
301
|
-
// Not armed yet (a card drafted without the reversible mark): arm now, the tap is not lost.
|
|
302
223
|
arm();
|
|
303
224
|
return { effects, confirmed: false, ignored: false };
|
|
304
225
|
}
|
|
@@ -309,9 +230,7 @@ export function applyProposalTap(store, binding, token, message, repos, options,
|
|
|
309
230
|
edit(confirmedCardText(store, outcome, proposal, linkNote(origin, wanted)), keyboardWith(null, link));
|
|
310
231
|
return { effects, confirmed: outcome.ok, ignored: false };
|
|
311
232
|
}
|
|
312
|
-
/** A part's next attempt after a failed send: bounded backoff by attempt, or Telegram's own retry_after when it named a longer one. */
|
|
313
233
|
export const PART_RETRY_MS = [5_000, 15_000, 60_000, 300_000];
|
|
314
|
-
/** Unsent parts are retried this long after the message arrived (the card's own lifetime); then the row fails, explicitly unsent. */
|
|
315
234
|
export const DELIVERY_MAX_AGE_MS = CARD_TTL_MS;
|
|
316
235
|
export function splitParts(text) {
|
|
317
236
|
if (text.length <= PART_CAP)
|
|
@@ -326,18 +245,6 @@ export function splitParts(text) {
|
|
|
326
245
|
}
|
|
327
246
|
return parts;
|
|
328
247
|
}
|
|
329
|
-
/**
|
|
330
|
-
* Run every claimable queued message for this bot, one at a time, each
|
|
331
|
-
* outside any SQLite transaction. The caller holds the poll lease and
|
|
332
|
-
* renews it; the row's own claim is renewed here. Bounded per call so a
|
|
333
|
-
* flood cannot pin one pass forever.
|
|
334
|
-
*
|
|
335
|
-
* `only` splits the work for the follower: "turns" runs the model and
|
|
336
|
-
* persists the reply but leaves the sending to the bridge's own cycle,
|
|
337
|
-
* which calls back with "replies" — so a reply goes out from the same
|
|
338
|
-
* place, in the same order and over the same connection as notifications,
|
|
339
|
-
* never beside a long poll. Absent, a row is answered and sent in one go.
|
|
340
|
-
*/
|
|
341
248
|
export async function processTelegramConversations(args) {
|
|
342
249
|
const limit = args.limit ?? 20;
|
|
343
250
|
for (let count = 0; count < limit && args.signal?.aborted !== true; count++) {
|
|
@@ -348,7 +255,6 @@ export async function processTelegramConversations(args) {
|
|
|
348
255
|
await runTelegramConversation(row, args);
|
|
349
256
|
}
|
|
350
257
|
catch (error) {
|
|
351
|
-
// The claim lapses on its own; the receipt and the persisted parts make the retry safe.
|
|
352
258
|
args.report.problems.push(`telegram chat for update ${row.updateId}: ${error instanceof Error ? error.message : String(error)}`);
|
|
353
259
|
return;
|
|
354
260
|
}
|
|
@@ -356,31 +262,14 @@ export async function processTelegramConversations(args) {
|
|
|
356
262
|
}
|
|
357
263
|
class PlanRefused extends Error {
|
|
358
264
|
}
|
|
359
|
-
/**
|
|
360
|
-
* One claimed message, in order of what is already known about it:
|
|
361
|
-
*
|
|
362
|
-
* 1. Unsent parts exist — the turn already answered; send what remains.
|
|
363
|
-
* No registry resolution beyond the fence, no model, no proposal.
|
|
364
|
-
* 2. A session was bound before a dispatch — read the engine's receipt
|
|
365
|
-
* THERE. A receipt names the original turn: recover its outcome, even
|
|
366
|
-
* if that session has since been ended and replaced from the console.
|
|
367
|
-
* 3. Otherwise resolve the session and thread, bind the session to the
|
|
368
|
-
* row BEFORE dispatching, run the turn, persist its reply and cards
|
|
369
|
-
* as parts in one transaction, then send them.
|
|
370
|
-
*
|
|
371
|
-
* Every outgoing part is fenced on the row's claim, the live pairing and
|
|
372
|
-
* the ceiling the turn opened under; only a confirmed message id counts.
|
|
373
|
-
*/
|
|
374
265
|
async function runTelegramConversation(row, args) {
|
|
375
266
|
const { store, botId, transport, owner, clock, readProjects, options, report, only } = args;
|
|
376
|
-
/** The row's live binding as it arrived (pairing alone: a reaction or a waiting draft carries no project data). */
|
|
377
267
|
const stillPaired = () => {
|
|
378
268
|
const live = store.liveTelegramBindingById(row.binding);
|
|
379
269
|
return live !== null && live.botId === botId && live.approverGeneration === row.approverGeneration && store.accountOf(live.approver)?.role === "approver";
|
|
380
270
|
};
|
|
381
271
|
const finish = (result) => {
|
|
382
272
|
const done = store.finishTelegramConversation(row.id, owner, result, clock());
|
|
383
|
-
// Answered (every part sent) or failed (its notice tried): the 👀 comes off, after what was delivered. Never awaited.
|
|
384
273
|
if (done && (result.state === "done" || result.state === "failed")) {
|
|
385
274
|
forgetWaitingDraft(botId, row.id);
|
|
386
275
|
void telegramAck({ store, botId, transport, clock, chatId: row.chatId, messageId: row.messageId, on: false, paired: stillPaired, ...(options.liveTiming?.ackGapMs === undefined ? {} : { gapMs: options.liveTiming.ackGapMs }) });
|
|
@@ -388,15 +277,12 @@ async function runTelegramConversation(row, args) {
|
|
|
388
277
|
return done;
|
|
389
278
|
};
|
|
390
279
|
const held = () => store.renewTelegramConversation(row.id, owner, CONVERSATION_CLAIM_MS, clock());
|
|
391
|
-
/** The claim, read (a draft never renews it: only the turn's own heartbeat and durable steps do). */
|
|
392
280
|
const claimed = () => {
|
|
393
281
|
const now = store.getTelegramConversation(row.id);
|
|
394
282
|
return now !== null && now.claimOwner === owner && now.claimExpiresAt !== null && now.claimExpiresAt > clock().toISOString();
|
|
395
283
|
};
|
|
396
284
|
const ageMs = clock().getTime() - Date.parse(row.createdAt);
|
|
397
285
|
const requeue = async (outcome) => {
|
|
398
|
-
// A turn already admitted for it waits for that turn's own outcome (bounded by the turn's deadline); waiting for the
|
|
399
|
-
// lead gets two hours from arrival; anything else, ten minutes.
|
|
400
286
|
const limit = isAdmittedWait(outcome) ? Number.POSITIVE_INFINITY : isLeadWait(outcome) ? CONVERSATION_WAIT_MAX_AGE_MS : CONVERSATION_MAX_AGE_MS;
|
|
401
287
|
if (ageMs > limit) {
|
|
402
288
|
await notify(couldNotAnswerText(outcome === "registry-unavailable" ? "your projects couldn't be read" : "the assistant stayed busy with another message"));
|
|
@@ -404,16 +290,13 @@ async function runTelegramConversation(row, args) {
|
|
|
404
290
|
report.refused++;
|
|
405
291
|
return;
|
|
406
292
|
}
|
|
407
|
-
// Behind the person's own earlier messages: said once, then it waits quietly.
|
|
408
293
|
if (outcome === "backlog" && row.outcome !== "backlog")
|
|
409
294
|
await notify("Queued behind your earlier messages. It goes to the lead once they're answered.");
|
|
410
|
-
// Waiting for the lead: a draft that says so, refreshed while it waits (never over this chat's running turn).
|
|
411
295
|
if (isLeadWait(outcome)) {
|
|
412
296
|
await telegramWaitingDraft({ store, botId, transport, clock, chatId: row.chatId, binding: row.binding, draftId: row.id, allowed: () => stillPaired() && claimed(), ...(options.liveTiming === undefined ? {} : { timing: options.liveTiming }) });
|
|
413
297
|
}
|
|
414
298
|
finish({ state: "queued", outcome, nextAttemptAt: new Date(clock().getTime() + CONVERSATION_RETRY_MS).toISOString() });
|
|
415
299
|
};
|
|
416
|
-
// 1. The exact binding the message arrived under must still be the live one.
|
|
417
300
|
const binding = store.liveTelegramBindingById(row.binding);
|
|
418
301
|
if (binding === null || binding.botId !== botId || binding.approverGeneration !== row.approverGeneration || store.accountOf(binding.approver)?.role !== "approver") {
|
|
419
302
|
finish({ state: "failed", outcome: "unpaired" });
|
|
@@ -429,7 +312,6 @@ async function runTelegramConversation(row, args) {
|
|
|
429
312
|
return "the paired account is no longer an approver";
|
|
430
313
|
return null;
|
|
431
314
|
};
|
|
432
|
-
/** A notice that carries no project data — "this changed, nothing happened" — sent once, best effort, under the pairing fence alone. */
|
|
433
315
|
const notify = async (text, keyboard) => {
|
|
434
316
|
if (pairingProblem() !== null || !held())
|
|
435
317
|
return;
|
|
@@ -445,9 +327,7 @@ async function runTelegramConversation(row, args) {
|
|
|
445
327
|
report.problems.push(`telegram chat notice for update ${row.updateId} could not be sent: Telegram transport failed`);
|
|
446
328
|
}
|
|
447
329
|
};
|
|
448
|
-
/** The outbound half: send every pending part in order, each fenced; done only when every part is sent or moot. */
|
|
449
330
|
const deliver = async (outcomeWord) => {
|
|
450
|
-
// The row as it is NOW: the session was bound after this claim read it.
|
|
451
331
|
const bound = store.getTelegramConversation(row.id)?.session ?? null;
|
|
452
332
|
const session = bound === null ? null : store.getLeadSession(bound);
|
|
453
333
|
if (session === null) {
|
|
@@ -467,14 +347,11 @@ async function runTelegramConversation(row, args) {
|
|
|
467
347
|
if (part.kind === "card") {
|
|
468
348
|
const proposal = part.proposal === null ? null : store.getLeadProposal(part.proposal);
|
|
469
349
|
if (proposal === null || proposal.state !== "pending") {
|
|
470
|
-
// Confirmed or dismissed from the console or the terminal before the card went out: moot, not lost.
|
|
471
350
|
if (!store.dropTelegramConversationPart(row.id, part.ordinal, owner, proposal === null ? "the proposal is gone" : `the proposal was already ${proposal.state}`, now))
|
|
472
351
|
return;
|
|
473
352
|
continue;
|
|
474
353
|
}
|
|
475
354
|
}
|
|
476
|
-
// A day from when this part was planned (its card's tokens were minted then), not from the message's arrival: an
|
|
477
|
-
// answer that waited out a registry outage still gets its full day to go out.
|
|
478
355
|
if (now.getTime() - Date.parse(part.createdAt) > DELIVERY_MAX_AGE_MS) {
|
|
479
356
|
report.problems.push(`telegram chat reply for update ${row.updateId} was not sent within a day: ${part.lastError ?? "unsent"}`);
|
|
480
357
|
await notify(couldNotAnswerText("my reply couldn't be sent for a day"));
|
|
@@ -482,13 +359,11 @@ async function runTelegramConversation(row, args) {
|
|
|
482
359
|
report.refused++;
|
|
483
360
|
return;
|
|
484
361
|
}
|
|
485
|
-
// Telegram's own retry_after, shared with the outbox: nothing goes out while it holds.
|
|
486
362
|
const limitedUntil = store.telegramRetryAt(botId);
|
|
487
363
|
if (limitedUntil > now.toISOString()) {
|
|
488
364
|
defer(new Date(limitedUntil), "Telegram asked for a pause");
|
|
489
365
|
return;
|
|
490
366
|
}
|
|
491
|
-
// The channel the reply was composed under, re-proved after ONE registry read; then the claim.
|
|
492
367
|
let registry = null;
|
|
493
368
|
try {
|
|
494
369
|
registry = await readProjects();
|
|
@@ -515,31 +390,13 @@ async function runTelegramConversation(row, args) {
|
|
|
515
390
|
const backoff = new Date(clock().getTime() + PART_RETRY_MS[Math.min(part.attempts, PART_RETRY_MS.length - 1)]);
|
|
516
391
|
let send;
|
|
517
392
|
let method;
|
|
518
|
-
/** What Telegram's confirmed message id makes of the part: sent (the reply, a card, an image), or dropped (an image whose refusal notice is now confirmed). */
|
|
519
393
|
let confirm = messageId => store.settleTelegramConversationPart(row.id, part.ordinal, owner, { ok: true, messageId }, clock());
|
|
520
394
|
if (part.kind === "image") {
|
|
521
|
-
// The image, re-proved NOW — after the registry await, under the
|
|
522
|
-
// held claim, immediately before the upload, on every attempt: the
|
|
523
|
-
// task still in this phone's projects, the run still its own, the
|
|
524
|
-
// artifact row still the one planned from, the bytes read again and
|
|
525
|
-
// still a bounded PNG/JPEG. Anything less is refused in plain words
|
|
526
|
-
// and never sent; the exact result is one button away when a
|
|
527
|
-
// trusted origin can carry it. The original bytes travel untouched.
|
|
528
395
|
const image = part.taskId === null || part.run === null || part.artifact === null || part.sha256 === null
|
|
529
396
|
? { ok: false, problem: "the saved file's record changed" }
|
|
530
397
|
: verifyResultImage(store, options.evidenceRoot, repos, { taskId: part.taskId, run: part.run, artifact: part.artifact, sha256: part.sha256 });
|
|
531
|
-
// The caption as persisted, checked again on every attempt: a row
|
|
532
|
-
// that carries a credential-shaped task id is rebuilt from its typed
|
|
533
|
-
// identity before a word of it reaches Telegram.
|
|
534
398
|
const caption = safeResultImageCaption(part.text, part.taskId ?? "", part.run ?? 0);
|
|
535
399
|
if (!image.ok) {
|
|
536
|
-
// The refusal is the part's own message now: it rides the same
|
|
537
|
-
// pending row, retry schedule and uncertain count as the upload
|
|
538
|
-
// it replaces, and the part is dropped only once Telegram confirms
|
|
539
|
-
// the notice. A lost or failed notice is retried after a restart
|
|
540
|
-
// like any part; the image is re-verified first each time, so a
|
|
541
|
-
// file repaired meanwhile is sent and one still wrong is refused
|
|
542
|
-
// again. The row is never done while the notice is unconfirmed.
|
|
543
400
|
report.problems.push(`telegram chat image for update ${row.updateId} was not sent: ${image.problem}`);
|
|
544
401
|
const link = part.taskId !== null && part.run !== null && taskInCeiling(store, part.taskId, repos) ? { label: "Open result", path: chatResultHref(part.taskId, part.run) } : null;
|
|
545
402
|
const button = phoneLinkButton(options.phoneOrigin?.() ?? null, link);
|
|
@@ -566,24 +423,16 @@ async function runTelegramConversation(row, args) {
|
|
|
566
423
|
}
|
|
567
424
|
}
|
|
568
425
|
else {
|
|
569
|
-
// A card's link is minted NOW, from the persisted proposal and the
|
|
570
|
-
// origin configured at this moment: a retry after the setting changed
|
|
571
|
-
// or went away carries the current truth, never a stored URL.
|
|
572
426
|
const proposal = part.kind === "card" && part.proposal !== null ? store.getLeadProposal(part.proposal) : null;
|
|
573
427
|
const origin = proposal === null ? null : options.phoneOrigin?.() ?? null;
|
|
574
428
|
const wanted = proposal === null ? null : phoneProposalLink(store, proposal, repos);
|
|
575
|
-
// A typed yes that started a task (one-step-chat.md C5): Toolroll's reply carries the task's link, as a tapped
|
|
576
|
-
// card does. From the record and the origin read now, like every link.
|
|
577
429
|
const yes = part.kind === "reply" ? typedStartOf(store, "telegram", `m${row.id}`) : null;
|
|
578
430
|
const started = yes !== null && yes.outcome === "started" && yes.taskId !== null ? phoneLinkButton(options.phoneOrigin?.() ?? null, startedTaskLink(store, yes.taskId, repos)) : null;
|
|
579
431
|
const keyboard = keyboardWith(part.keyboard, started ?? phoneLinkButton(origin, wanted));
|
|
580
|
-
// A Toolroll card: read again now, shown only where every project behind it is still reachable. An unreadable
|
|
581
|
-
// one goes out as its saved plain words.
|
|
582
432
|
const isCard = proposal !== null && isCardProposal(proposal);
|
|
583
433
|
const rich = isCard ? cardOfProposal(proposal) : null;
|
|
584
434
|
const shown = rich !== null && cardWithin(rich, repos) ? telegramCardMessage(rich) : null;
|
|
585
435
|
const links = rich === null ? [] : rich.buttons.flatMap(one => phoneLinkButton(origin, one) ?? []).map(one => [one]);
|
|
586
|
-
// The lead's own words carry their bold anchors and labelled links as entities, never as Markdown characters.
|
|
587
436
|
const voiced = part.kind === "reply" ? telegramReply(part.text) : null;
|
|
588
437
|
const text = isCard ? shown?.text ?? (rich === null ? part.text : "This card's projects changed, so it wasn't sent.")
|
|
589
438
|
: proposal !== null && part.keyboard === null ? handoffCardText(part.text, linkNote(origin, wanted)) : voiced?.text ?? part.text;
|
|
@@ -599,9 +448,6 @@ async function runTelegramConversation(row, args) {
|
|
|
599
448
|
...(buttons === undefined ? {} : { reply_markup: { inline_keyboard: buttons } }),
|
|
600
449
|
});
|
|
601
450
|
}
|
|
602
|
-
// The first time the answer itself fails to go out, the person hears so once,
|
|
603
|
-
// in plain words; the reply itself keeps being retried and shows as
|
|
604
|
-
// unsent in status and the console after two minutes.
|
|
605
451
|
const firstFailure = part.kind === "reply" && store.listTelegramConversationParts(row.id).every(one => one.attempts <= (one.state === "sent" ? 1 : 0));
|
|
606
452
|
const failed = async (until, error, uncertain) => {
|
|
607
453
|
if (!store.settleTelegramConversationPart(row.id, part.ordinal, owner, { ok: false, error, uncertain, retryAt: until.toISOString() }, clock()))
|
|
@@ -615,7 +461,6 @@ async function runTelegramConversation(row, args) {
|
|
|
615
461
|
answer = await send();
|
|
616
462
|
}
|
|
617
463
|
catch {
|
|
618
|
-
// The answer was lost: Telegram may or may not have the message. Said so, retried, counted.
|
|
619
464
|
await failed(backoff, "Telegram transport failed; delivery may be uncertain", true);
|
|
620
465
|
return;
|
|
621
466
|
}
|
|
@@ -642,28 +487,23 @@ async function runTelegramConversation(row, args) {
|
|
|
642
487
|
const messageId = String(id);
|
|
643
488
|
if (!confirm(messageId))
|
|
644
489
|
return;
|
|
645
|
-
// Placement names the persisted callback tokens only; a url row is not a token.
|
|
646
490
|
if (part.keyboard !== null)
|
|
647
491
|
store.placeTelegramProposalActions(part.keyboard.flat().map(one => one.callback_data), messageId);
|
|
648
492
|
}
|
|
649
493
|
if (finish({ state: "done", outcome: outcomeWord }))
|
|
650
494
|
report.answered++;
|
|
651
495
|
};
|
|
652
|
-
/** The reply, one image per screenshot the ANSWERED turn selected (typed identity only — bytes are read and re-verified at send time), and one card per pending proposal, persisted with the cards' tokens in ONE transaction before any send. */
|
|
653
496
|
const plan = (session, turn, reply, proposals, repos) => {
|
|
654
497
|
try {
|
|
655
498
|
return store.transact(() => {
|
|
656
499
|
const now = clock();
|
|
657
500
|
const parts = shapeReplyParts(reply, PART_CAP, { asked: row.text, appOrigin: options.phoneOrigin?.() ?? null }, shaped => telegramReply(shaped).text.length).map((text, index) => ({ kind: "reply", text, replyTo: index === 0 ? row.messageId : null }));
|
|
658
|
-
// The lead's question to its owner: one tap per option, then "Something else".
|
|
659
501
|
const ask = store.leadAsk(turn);
|
|
660
502
|
if (ask !== null)
|
|
661
503
|
parts.push({ kind: "reply", text: phoneText(ask.question, 1_000), keyboard: askKeyboard(ask) });
|
|
662
|
-
// Only a turn that answered may have its selection sent: a failed or revoked turn's rows were deleted with its drafts, and the state is read again here.
|
|
663
504
|
const selected = store.getLeadTurn(turn)?.state === "answered" ? store.listLeadTurnEvidence(turn) : [];
|
|
664
505
|
for (const image of selected)
|
|
665
506
|
parts.push({ kind: "image", text: image.caption, taskId: image.taskId, run: image.run, artifact: image.artifact, sha256: image.sha256 });
|
|
666
|
-
// Cards first, so what a card leads to sits right under it. A card mints no tokens: it confirms nothing.
|
|
667
507
|
for (const proposal of cardsFirst(proposals)) {
|
|
668
508
|
if (isCardProposal(proposal)) {
|
|
669
509
|
parts.push({ kind: "card", text: cardPlainOf(proposal), proposal: proposal.id, keyboard: null });
|
|
@@ -673,7 +513,6 @@ async function runTelegramConversation(row, args) {
|
|
|
673
513
|
const keyboard = preview.buttons ? mintCardTokens(store, binding, proposal.id, now).keyboard : null;
|
|
674
514
|
parts.push({ kind: "card", text: preview.text, proposal: proposal.id, keyboard });
|
|
675
515
|
}
|
|
676
|
-
// A lapsed claim (or parts already planned by another claimant) keeps nothing minted here.
|
|
677
516
|
if (!store.planTelegramConversationParts(row.id, owner, { session, turn }, parts, now))
|
|
678
517
|
throw new PlanRefused();
|
|
679
518
|
return true;
|
|
@@ -685,10 +524,7 @@ async function runTelegramConversation(row, args) {
|
|
|
685
524
|
throw error;
|
|
686
525
|
}
|
|
687
526
|
};
|
|
688
|
-
/** The recorded turn's outcome — nothing dispatched — from the session it was receipted under. */
|
|
689
527
|
const recover = async (session, turnId, repos) => {
|
|
690
|
-
// A turn that died past its deadline is swept to failed first, so a
|
|
691
|
-
// restart reports the truth instead of waiting on a ghost.
|
|
692
528
|
store.sweepStaleLeadTurns(clock());
|
|
693
529
|
const turn = store.getLeadTurn(turnId);
|
|
694
530
|
if (turn === null) {
|
|
@@ -713,7 +549,6 @@ async function runTelegramConversation(row, args) {
|
|
|
713
549
|
return;
|
|
714
550
|
await sendOrHandOff("replayed");
|
|
715
551
|
};
|
|
716
|
-
/** Send now, or — for the follower's turn worker — leave it to the bridge's cycle, which sends it next. */
|
|
717
552
|
const sendOrHandOff = async (outcomeWord) => {
|
|
718
553
|
if (only !== "turns") {
|
|
719
554
|
await deliver(outcomeWord);
|
|
@@ -721,13 +556,10 @@ async function runTelegramConversation(row, args) {
|
|
|
721
556
|
}
|
|
722
557
|
finish({ state: "queued", outcome: outcomeWord === "answered" ? "answered:sending" : "delivering", nextAttemptAt: clock().toISOString() });
|
|
723
558
|
};
|
|
724
|
-
// 2. Parts already planned: the turn answered; only the sending remains.
|
|
725
559
|
if (store.listTelegramConversationParts(row.id).length > 0) {
|
|
726
560
|
await deliver(row.outcome === "answered:sending" ? "answered" : "replayed");
|
|
727
561
|
return;
|
|
728
562
|
}
|
|
729
|
-
// 3. A turn already admitted for it and still working: wait for that turn's own outcome. Nothing here needs the
|
|
730
|
-
// project records, so a registry that can't be read never fails a message whose turn is running.
|
|
731
563
|
if (row.session !== null) {
|
|
732
564
|
const admitted = store.leadRequestReceipt(row.session, row.request);
|
|
733
565
|
if (admitted !== null) {
|
|
@@ -740,45 +572,33 @@ async function runTelegramConversation(row, args) {
|
|
|
740
572
|
}
|
|
741
573
|
}
|
|
742
574
|
}
|
|
743
|
-
// The ceiling, reloaded now.
|
|
744
575
|
let registry;
|
|
745
576
|
try {
|
|
746
577
|
registry = await readProjects();
|
|
747
578
|
}
|
|
748
579
|
catch {
|
|
749
580
|
report.problems.push("telegram chat could not read the current project records");
|
|
750
|
-
// A turn already took it (its receipt is in the bound session): its answer exists or will, and is delivered once
|
|
751
|
-
// the projects can be read again — never abandoned to the outage.
|
|
752
581
|
const admitted = row.session !== null && store.leadRequestReceipt(row.session, row.request) !== null;
|
|
753
582
|
await requeue(admitted ? "registry-unavailable:admitted" : "registry-unavailable");
|
|
754
583
|
return;
|
|
755
584
|
}
|
|
756
585
|
const repos = telegramConversationRepos(store, binding.approver, registry);
|
|
757
|
-
// A typed yes to a Start card (docs/plans/one-step-chat.md C5), recorded when the message arrived: Toolroll acts on it
|
|
758
|
-
// here and no lead turn runs for it. Its outcome and Toolroll's own reply are written in ONE transaction (the claim
|
|
759
|
-
// fences the reply; a lapsed claim takes the whole act back), then sent like any reply. A settled record returns its
|
|
760
|
-
// first outcome, so a redelivery or a crash starts nothing more.
|
|
761
586
|
const typed = typedStartOf(store, "telegram", `m${row.id}`);
|
|
762
587
|
if (typed !== null) {
|
|
763
588
|
const verified = verifyApproverStanding(store, binding.approver, binding.approverGeneration, repos);
|
|
764
|
-
// The card's turn is gone when the chat was ended (its proposals are deleted) or its project deleted: there is then
|
|
765
|
-
// no session to send a reply under, and nothing can have started. Toolroll says so itself. The yes is never passed on.
|
|
766
589
|
const unanchored = { said: null };
|
|
767
590
|
try {
|
|
768
591
|
store.transact(() => {
|
|
769
592
|
const now = clock();
|
|
770
593
|
const answered = confirmTypedStart(store, verified.ok ? verified.who : null, { provider: "telegram", event: typed.event }, now, { binding: binding.id, evidenceRoot: options.evidenceRoot });
|
|
771
|
-
// The reply is fenced on the session the card was composed under.
|
|
772
594
|
const card = store.getLeadProposal(typed.proposal);
|
|
773
595
|
const turn = card === null ? null : store.getLeadTurn(card.turn);
|
|
774
596
|
if (turn === null) {
|
|
775
|
-
// A start without its card can't happen (the door re-reads the card); if it ever did, take it back.
|
|
776
597
|
if (answered.ok)
|
|
777
598
|
throw new PlanRefused();
|
|
778
599
|
unanchored.said = answered.said;
|
|
779
600
|
return;
|
|
780
601
|
}
|
|
781
|
-
// The card is answered: its buttons are spent with it.
|
|
782
602
|
if (answered.ok)
|
|
783
603
|
store.consumeTelegramProposalActions(typed.proposal, now);
|
|
784
604
|
if (!store.planTelegramConversationParts(row.id, owner, { session: turn.session, turn: turn.id }, [{ kind: "reply", text: answered.said, replyTo: row.messageId }], now))
|
|
@@ -796,8 +616,6 @@ async function runTelegramConversation(row, args) {
|
|
|
796
616
|
report.refused++;
|
|
797
617
|
return;
|
|
798
618
|
}
|
|
799
|
-
// The card it answered is repainted as a tap's would be, best effort: its buttons are already spent, and the
|
|
800
|
-
// reply below says the same words with the same link.
|
|
801
619
|
const settled = typedStartOf(store, "telegram", typed.event);
|
|
802
620
|
if (settled?.outcome === "started" && settled.taskId !== null && pairingProblem() === null && held()) {
|
|
803
621
|
const link = phoneLinkButton(options.phoneOrigin?.() ?? null, startedTaskLink(store, settled.taskId, repos));
|
|
@@ -805,13 +623,11 @@ async function runTelegramConversation(row, args) {
|
|
|
805
623
|
await transport("editMessageText", { chat_id: chatId, message_id: Number(typed.cardMessage), text: `✓ ${TYPED_START_STARTED}`, link_preview_options: { is_disabled: true },
|
|
806
624
|
reply_markup: { inline_keyboard: link === null ? [] : [link] } });
|
|
807
625
|
}
|
|
808
|
-
catch {
|
|
626
|
+
catch { }
|
|
809
627
|
}
|
|
810
628
|
await sendOrHandOff("typed-start");
|
|
811
629
|
return;
|
|
812
630
|
}
|
|
813
|
-
// 4. A session bound before an earlier dispatch: the receipt lives there,
|
|
814
|
-
// whatever session is live today.
|
|
815
631
|
if (row.session !== null) {
|
|
816
632
|
const receipt = store.leadRequestReceipt(row.session, row.request);
|
|
817
633
|
if (receipt !== null) {
|
|
@@ -819,13 +635,10 @@ async function runTelegramConversation(row, args) {
|
|
|
819
635
|
return;
|
|
820
636
|
}
|
|
821
637
|
}
|
|
822
|
-
// It waited (for the lead, or behind earlier messages), was never admitted, and is past the wait from its arrival:
|
|
823
|
-
// it is never sent this late, even when the lead is free now.
|
|
824
638
|
if (isLeadWait(row.outcome) && ageMs > CONVERSATION_WAIT_MAX_AGE_MS) {
|
|
825
639
|
await requeue(row.outcome);
|
|
826
640
|
return;
|
|
827
641
|
}
|
|
828
|
-
// 5. The session and thread — shared with the console and the CLI.
|
|
829
642
|
const resolved = resolveTelegramLead(store, binding, repos, clock());
|
|
830
643
|
if (!resolved.ok && resolved.reason === "busy") {
|
|
831
644
|
await requeue("busy");
|
|
@@ -849,19 +662,10 @@ async function runTelegramConversation(row, args) {
|
|
|
849
662
|
: problem === "the connected projects changed" ? "projects-changed" : "access-changed";
|
|
850
663
|
return { ok: false, reason };
|
|
851
664
|
};
|
|
852
|
-
// Bound BEFORE the dispatch, under the claim: a crash from here on finds
|
|
853
|
-
// the receipt in this session, not in whichever session is live later.
|
|
854
665
|
if (!store.bindTelegramConversationSession(row.id, owner, session.id))
|
|
855
666
|
return;
|
|
856
|
-
// 6. The turn. The claim is renewed while the model works; the poll lease
|
|
857
|
-
// is the caller's. The request id is the receipt: a second pass after a
|
|
858
|
-
// crash gets the original turn back, never a second dispatch.
|
|
859
667
|
const heartbeat = setInterval(() => { held(); }, 30_000);
|
|
860
668
|
heartbeat.unref?.();
|
|
861
|
-
// The live reply: one draft in this private chat with the status line and the reply as it is written
|
|
862
|
-
// (telegram-live.ts). A draft with words goes out only after the full fence: this exact binding, approver and the
|
|
863
|
-
// ceiling the turn opened under (the registry read at most every 5 s), the turn still running under the generation it
|
|
864
|
-
// first ran with, and this row's claim, re-checked after the read.
|
|
865
669
|
let draftGeneration = null;
|
|
866
670
|
let draftRegistry = null;
|
|
867
671
|
const turnStillRunning = (turnId) => {
|
|
@@ -889,7 +693,6 @@ async function runTelegramConversation(row, args) {
|
|
|
889
693
|
};
|
|
890
694
|
const live = createTelegramLiveDraft({
|
|
891
695
|
store, botId, transport, clock, chatId, binding: binding.id, draftId: row.id,
|
|
892
|
-
// Shaped as the final reply is: for this message, with the phone's own trusted origin.
|
|
893
696
|
shape: { asked: row.text, appOrigin: options.phoneOrigin?.() ?? null },
|
|
894
697
|
standing: draftStanding, paired: () => pairingProblem() === null,
|
|
895
698
|
...(options.liveTiming === undefined ? {} : { timing: options.liveTiming }),
|
|
@@ -907,7 +710,6 @@ async function runTelegramConversation(row, args) {
|
|
|
907
710
|
}
|
|
908
711
|
finally {
|
|
909
712
|
clearInterval(heartbeat);
|
|
910
|
-
// Closed, and its draft in flight settled, before anything durable: no draft can land after the answer or a notice.
|
|
911
713
|
await live.close();
|
|
912
714
|
}
|
|
913
715
|
const receipt = store.leadRequestReceipt(session.id, row.request);
|
|
@@ -924,8 +726,6 @@ async function runTelegramConversation(row, args) {
|
|
|
924
726
|
return;
|
|
925
727
|
}
|
|
926
728
|
if (!outcome.ok) {
|
|
927
|
-
// Truthful: what failed, that nothing was kept, and that a new message
|
|
928
|
-
// is a new turn. A failed turn's drafts are already gone.
|
|
929
729
|
await notify(phoneText(outcome.message, 1_000));
|
|
930
730
|
finish({ state: "failed", outcome: chatOutcome.failed(outcome.failed) });
|
|
931
731
|
report.refused++;
|
|
@@ -937,7 +737,6 @@ async function runTelegramConversation(row, args) {
|
|
|
937
737
|
}
|
|
938
738
|
if (row.taskId !== null)
|
|
939
739
|
mirrorToTaskChat(store, who, row.taskId, "Telegram", row.text, outcome.reply, clock());
|
|
940
|
-
// 7. The reply and its cards: durable first, then sent.
|
|
941
740
|
const proposals = store.listLeadProposals(thread.id, ["pending"]).filter(one => one.turn === outcome.turn);
|
|
942
741
|
if (!plan(session.id, outcome.turn, outcome.reply, proposals, who.repos) && store.listTelegramConversationParts(row.id).length === 0)
|
|
943
742
|
return;
|