@phnx-labs/agents-cli 1.22.119 → 1.22.121
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 +236 -0
- package/README.md +19 -2
- package/dist/bootstrap.d.ts +0 -15
- package/dist/bootstrap.js +10 -409
- package/dist/cli/command-registry.d.ts +0 -58
- package/dist/cli/command-registry.js +2 -74
- package/dist/commands/accounts.d.ts +0 -17
- package/dist/commands/accounts.js +1 -52
- package/dist/commands/alias.d.ts +0 -12
- package/dist/commands/alias.js +0 -6
- package/dist/commands/apply.d.ts +0 -15
- package/dist/commands/apply.js +0 -63
- package/dist/commands/audit.d.ts +0 -12
- package/dist/commands/audit.js +0 -13
- package/dist/commands/auth.js +4 -12
- package/dist/commands/beta.d.ts +0 -6
- package/dist/commands/beta.js +2 -6
- package/dist/commands/browser-sessions-picker.d.ts +0 -8
- package/dist/commands/browser-sessions-picker.js +0 -26
- package/dist/commands/browser.d.ts +0 -57
- package/dist/commands/browser.js +0 -80
- package/dist/commands/budget.d.ts +0 -13
- package/dist/commands/budget.js +0 -2
- package/dist/commands/cli.d.ts +0 -12
- package/dist/commands/cli.js +0 -4
- package/dist/commands/cloud.d.ts +0 -9
- package/dist/commands/cloud.js +0 -43
- package/dist/commands/commands.d.ts +0 -9
- package/dist/commands/commands.js +0 -18
- package/dist/commands/computer-sessions-picker.d.ts +0 -11
- package/dist/commands/computer-sessions-picker.js +0 -29
- package/dist/commands/computer.d.ts +0 -62
- package/dist/commands/computer.js +3 -114
- package/dist/commands/config.d.ts +0 -14
- package/dist/commands/config.js +21 -60
- package/dist/commands/cost.d.ts +0 -11
- package/dist/commands/cost.js +1 -17
- package/dist/commands/daemon-test-harness.d.ts +0 -32
- package/dist/commands/daemon-test-harness.js +1 -36
- package/dist/commands/daemon.d.ts +0 -46
- package/dist/commands/daemon.js +8 -255
- package/dist/commands/detach-core.d.ts +0 -28
- package/dist/commands/detach-core.js +0 -30
- package/dist/commands/detach.d.ts +1 -12
- package/dist/commands/detach.js +16 -52
- package/dist/commands/device-config-test-harness.js +0 -12
- package/dist/commands/doctor.d.ts +0 -103
- package/dist/commands/doctor.js +3 -279
- package/dist/commands/events.d.ts +0 -29
- package/dist/commands/events.js +1 -55
- package/dist/commands/exec.d.ts +0 -163
- package/dist/commands/exec.js +15 -964
- package/dist/commands/factory.d.ts +0 -6
- package/dist/commands/factory.js +0 -2
- package/dist/commands/feed-watch.js +0 -20
- package/dist/commands/feed.d.ts +0 -38
- package/dist/commands/feed.js +1 -151
- package/dist/commands/feedback.d.ts +0 -5
- package/dist/commands/feedback.js +0 -5
- package/dist/commands/fleet-capture.d.ts +0 -12
- package/dist/commands/fleet-capture.js +1 -39
- package/dist/commands/focus.d.ts +6 -94
- package/dist/commands/focus.js +13 -183
- package/dist/commands/fork.d.ts +0 -21
- package/dist/commands/fork.js +0 -45
- package/dist/commands/funnel.d.ts +0 -3
- package/dist/commands/go.d.ts +2 -71
- package/dist/commands/go.js +5 -99
- package/dist/commands/harness-hooks.d.ts +0 -41
- package/dist/commands/harness-hooks.js +0 -48
- package/dist/commands/harness-wizard.d.ts +0 -137
- package/dist/commands/harness-wizard.js +0 -109
- package/dist/commands/harness.d.ts +0 -63
- package/dist/commands/harness.js +0 -103
- package/dist/commands/hooks.d.ts +0 -9
- package/dist/commands/hooks.js +0 -26
- package/dist/commands/humans.d.ts +0 -8
- package/dist/commands/humans.js +0 -8
- package/dist/commands/import.d.ts +0 -22
- package/dist/commands/import.js +0 -79
- package/dist/commands/insights.d.ts +0 -37
- package/dist/commands/insights.js +3 -115
- package/dist/commands/inspect.d.ts +0 -117
- package/dist/commands/inspect.js +2 -448
- package/dist/commands/lease.d.ts +0 -28
- package/dist/commands/lease.js +0 -43
- package/dist/commands/logs.d.ts +0 -23
- package/dist/commands/logs.js +0 -30
- package/dist/commands/mailboxes.d.ts +0 -18
- package/dist/commands/mailboxes.js +0 -29
- package/dist/commands/mcp.d.ts +0 -9
- package/dist/commands/mcp.js +0 -53
- package/dist/commands/memory.d.ts +0 -7
- package/dist/commands/memory.js +0 -7
- package/dist/commands/menubar.d.ts +0 -8
- package/dist/commands/menubar.js +0 -24
- package/dist/commands/message.d.ts +0 -23
- package/dist/commands/message.js +0 -50
- package/dist/commands/mine.d.ts +0 -22
- package/dist/commands/mine.js +0 -21
- package/dist/commands/models.d.ts +0 -8
- package/dist/commands/models.js +0 -33
- package/dist/commands/modes.d.ts +0 -10
- package/dist/commands/modes.js +0 -13
- package/dist/commands/monitors.d.ts +0 -9
- package/dist/commands/monitors.js +3 -160
- package/dist/commands/open.d.ts +0 -26
- package/dist/commands/open.js +0 -10
- package/dist/commands/output.d.ts +0 -18
- package/dist/commands/output.js +1 -34
- package/dist/commands/packages-materialize.d.ts +0 -11
- package/dist/commands/packages-materialize.js +0 -3
- package/dist/commands/packages.d.ts +0 -10
- package/dist/commands/packages.js +0 -50
- package/dist/commands/perf.d.ts +0 -41
- package/dist/commands/perf.js +0 -55
- package/dist/commands/permissions.d.ts +0 -9
- package/dist/commands/permissions.js +0 -43
- package/dist/commands/plugins.d.ts +0 -14
- package/dist/commands/plugins.js +2 -55
- package/dist/commands/profiles.d.ts +0 -25
- package/dist/commands/profiles.js +0 -27
- package/dist/commands/projects-todo.d.ts +2 -0
- package/dist/commands/projects-todo.js +132 -0
- package/dist/commands/projects.d.ts +0 -85
- package/dist/commands/projects.js +344 -291
- package/dist/commands/prune.js +0 -30
- package/dist/commands/ps-roster.d.ts +92 -0
- package/dist/commands/ps-roster.js +744 -0
- package/dist/commands/ps.d.ts +6 -0
- package/dist/commands/ps.js +98 -0
- package/dist/commands/refresh-rules.d.ts +0 -13
- package/dist/commands/refresh-rules.js +0 -14
- package/dist/commands/reminders.d.ts +0 -7
- package/dist/commands/repo.d.ts +0 -89
- package/dist/commands/repo.js +7 -205
- package/dist/commands/resource-view.d.ts +0 -33
- package/dist/commands/resource-view.js +0 -49
- package/dist/commands/resume.d.ts +1 -19
- package/dist/commands/resume.js +0 -50
- package/dist/commands/route.d.ts +0 -10
- package/dist/commands/route.js +0 -19
- package/dist/commands/routines.d.ts +0 -42
- package/dist/commands/routines.js +5 -290
- package/dist/commands/routines.test-fixture.d.ts +0 -34
- package/dist/commands/routines.test-fixture.js +4 -100
- package/dist/commands/rules.d.ts +0 -9
- package/dist/commands/rules.js +1 -6
- package/dist/commands/run-account-picker.d.ts +0 -59
- package/dist/commands/run-account-picker.js +0 -71
- package/dist/commands/run-broadcast.d.ts +0 -9
- package/dist/commands/run-broadcast.js +0 -7
- package/dist/commands/run-cloud.d.ts +0 -15
- package/dist/commands/run-cloud.js +0 -37
- package/dist/commands/run-device-picker.d.ts +0 -25
- package/dist/commands/run-device-picker.js +1 -53
- package/dist/commands/secrets-passthrough.d.ts +0 -31
- package/dist/commands/secrets-passthrough.js +0 -10
- package/dist/commands/send.d.ts +0 -20
- package/dist/commands/send.js +14 -18
- package/dist/commands/sessions-backfill.d.ts +0 -7
- package/dist/commands/sessions-backfill.js +1 -16
- package/dist/commands/sessions-backup-setup.js +0 -11
- package/dist/commands/sessions-bookmark.d.ts +0 -8
- package/dist/commands/sessions-bookmark.js +0 -28
- package/dist/commands/sessions-browser.d.ts +2 -117
- package/dist/commands/sessions-browser.js +5 -243
- package/dist/commands/sessions-export.d.ts +1 -26
- package/dist/commands/sessions-export.js +3 -81
- package/dist/commands/sessions-import.d.ts +0 -14
- package/dist/commands/sessions-import.js +0 -59
- package/dist/commands/sessions-inject.d.ts +0 -60
- package/dist/commands/sessions-inject.js +3 -96
- package/dist/commands/sessions-migrate.d.ts +2 -37
- package/dist/commands/sessions-migrate.js +7 -159
- package/dist/commands/sessions-optimize.d.ts +0 -12
- package/dist/commands/sessions-picker-factory.d.ts +0 -7
- package/dist/commands/sessions-picker-factory.js +0 -8
- package/dist/commands/sessions-picker.d.ts +4 -103
- package/dist/commands/sessions-picker.js +13 -352
- package/dist/commands/sessions-render.d.ts +1 -2
- package/dist/commands/sessions-render.js +3 -7
- package/dist/commands/sessions-resume.d.ts +1 -24
- package/dist/commands/sessions-resume.js +2 -65
- package/dist/commands/sessions-share.d.ts +1 -9
- package/dist/commands/sessions-share.js +1 -45
- package/dist/commands/sessions-stats.d.ts +0 -24
- package/dist/commands/sessions-stats.js +0 -49
- package/dist/commands/sessions-stop.d.ts +1 -20
- package/dist/commands/sessions-stop.js +4 -9
- package/dist/commands/sessions-tail.d.ts +1 -19
- package/dist/commands/sessions-tail.js +3 -36
- package/dist/commands/sessions-trace.d.ts +5 -36
- package/dist/commands/sessions-trace.js +7 -82
- package/dist/commands/sessions.d.ts +1 -666
- package/dist/commands/sessions.js +30 -2279
- package/dist/commands/sessions.test-fixture.d.ts +0 -9
- package/dist/commands/sessions.test-fixture.js +8 -23
- package/dist/commands/setup-accounts.d.ts +0 -6
- package/dist/commands/setup-browser.d.ts +0 -23
- package/dist/commands/setup-browser.js +0 -28
- package/dist/commands/setup-computer.d.ts +0 -16
- package/dist/commands/setup-computer.js +0 -28
- package/dist/commands/setup-fleet.d.ts +0 -8
- package/dist/commands/setup-fleet.js +0 -11
- package/dist/commands/setup-mine.d.ts +0 -14
- package/dist/commands/setup-mine.js +0 -25
- package/dist/commands/setup-preferences.d.ts +0 -47
- package/dist/commands/setup-preferences.js +0 -53
- package/dist/commands/setup-secrets.d.ts +2 -24
- package/dist/commands/setup-secrets.js +0 -24
- package/dist/commands/setup-term.d.ts +0 -21
- package/dist/commands/setup-term.js +0 -21
- package/dist/commands/setup-terminal.d.ts +0 -1
- package/dist/commands/setup-terminal.js +0 -1
- package/dist/commands/setup-tools.d.ts +2 -0
- package/dist/commands/setup-tools.js +73 -0
- package/dist/commands/setup.d.ts +0 -20
- package/dist/commands/setup.js +4 -57
- package/dist/commands/skills.d.ts +0 -9
- package/dist/commands/skills.js +1 -22
- package/dist/commands/snapshot.d.ts +0 -9
- package/dist/commands/snapshot.js +0 -10
- package/dist/commands/ssh.d.ts +0 -64
- package/dist/commands/ssh.js +9 -420
- package/dist/commands/status.d.ts +0 -12
- package/dist/commands/status.js +0 -26
- package/dist/commands/subagents.d.ts +0 -8
- package/dist/commands/subagents.js +0 -31
- package/dist/commands/sync.d.ts +0 -37
- package/dist/commands/sync.js +0 -256
- package/dist/commands/teams-picker.d.ts +0 -3
- package/dist/commands/teams-picker.js +0 -34
- package/dist/commands/teams.d.ts +1 -76
- package/dist/commands/teams.js +9 -477
- package/dist/commands/tmux.d.ts +0 -25
- package/dist/commands/tmux.js +0 -46
- package/dist/commands/traces.js +0 -19
- package/dist/commands/trash.d.ts +0 -17
- package/dist/commands/trash.js +1 -11
- package/dist/commands/uninstall.d.ts +0 -9
- package/dist/commands/uninstall.js +0 -6
- package/dist/commands/update.d.ts +0 -22
- package/dist/commands/update.js +0 -44
- package/dist/commands/upgrade.d.ts +0 -1
- package/dist/commands/upgrade.js +0 -1
- package/dist/commands/utils.d.ts +0 -85
- package/dist/commands/utils.js +1 -95
- package/dist/commands/versions.d.ts +0 -16
- package/dist/commands/versions.js +0 -134
- package/dist/commands/view.d.ts +0 -90
- package/dist/commands/view.js +4 -343
- package/dist/commands/watchdog.d.ts +0 -19
- package/dist/commands/watchdog.js +3 -43
- package/dist/commands/webhook.d.ts +0 -8
- package/dist/commands/webhook.js +0 -14
- package/dist/commands/workflows.d.ts +0 -8
- package/dist/commands/workflows.js +0 -6
- package/dist/index.d.ts +0 -25
- package/dist/index.js +5 -119
- package/dist/lib/account-capabilities.d.ts +0 -34
- package/dist/lib/account-capabilities.js +0 -32
- package/dist/lib/account-catalog.d.ts +0 -128
- package/dist/lib/account-catalog.js +8 -154
- package/dist/lib/account-provider-registry.d.ts +0 -14
- package/dist/lib/account-provider-registry.js +0 -8
- package/dist/lib/account-registry.d.ts +0 -74
- package/dist/lib/account-registry.js +14 -189
- package/dist/lib/account-schema.d.ts +0 -19
- package/dist/lib/account-schema.js +0 -43
- package/dist/lib/accounting/account-launch.d.ts +0 -15
- package/dist/lib/accounting/account-launch.js +1 -3
- package/dist/lib/accounting/account-pool-collect.d.ts +0 -26
- package/dist/lib/accounting/account-pool-collect.js +0 -42
- package/dist/lib/accounting/account-pool.d.ts +0 -41
- package/dist/lib/accounting/account-pool.js +0 -17
- package/dist/lib/accounting/capacity.d.ts +0 -32
- package/dist/lib/accounting/capacity.js +0 -32
- package/dist/lib/accounting/rotate.d.ts +0 -518
- package/dist/lib/accounting/rotate.js +4 -598
- package/dist/lib/accounting/usage-ingest.d.ts +0 -1
- package/dist/lib/accounting/usage-ingest.js +0 -44
- package/dist/lib/accounting/usage-sync.d.ts +0 -60
- package/dist/lib/accounting/usage-sync.js +4 -51
- package/dist/lib/accounting/usage.d.ts +0 -632
- package/dist/lib/accounting/usage.js +14 -1055
- package/dist/lib/accounts/add.d.ts +0 -60
- package/dist/lib/accounts/add.js +0 -127
- package/dist/lib/accounts/auth-operation-lock.d.ts +0 -1
- package/dist/lib/accounts/auth-operation-lock.js +0 -4
- package/dist/lib/accounts/migrate.d.ts +0 -9
- package/dist/lib/accounts/migrate.js +3 -42
- package/dist/lib/accounts/slots.d.ts +0 -25
- package/dist/lib/accounts/slots.js +1 -49
- package/dist/lib/acp/client.d.ts +0 -16
- package/dist/lib/acp/client.js +0 -29
- package/dist/lib/acp/harnesses.d.ts +0 -15
- package/dist/lib/acp/harnesses.js +0 -16
- package/dist/lib/acp/run.d.ts +0 -8
- package/dist/lib/acp/run.js +0 -8
- package/dist/lib/actor.d.ts +1 -71
- package/dist/lib/actor.js +1 -99
- package/dist/lib/add-dir.d.ts +0 -46
- package/dist/lib/add-dir.js +1 -70
- package/dist/lib/address.d.ts +0 -17
- package/dist/lib/address.js +0 -15
- package/dist/lib/agent-cli-commands.d.ts +0 -10
- package/dist/lib/agent-cli-commands.js +0 -10
- package/dist/lib/agent-modes.d.ts +0 -29
- package/dist/lib/agent-modes.js +0 -31
- package/dist/lib/agent-spec/agents.d.ts +0 -426
- package/dist/lib/agent-spec/agents.js +37 -924
- package/dist/lib/agent-spec/index.d.ts +0 -5
- package/dist/lib/agent-spec/index.js +0 -14
- package/dist/lib/agent-spec/materialize.d.ts +0 -10
- package/dist/lib/agent-spec/materialize.js +2 -139
- package/dist/lib/agent-spec/package-resolve.d.ts +0 -8
- package/dist/lib/agent-spec/package-resolve.js +1 -44
- package/dist/lib/agent-spec/package-schema.d.ts +0 -2
- package/dist/lib/agent-spec/package-schema.js +0 -11
- package/dist/lib/agent-spec/package-types.d.ts +0 -27
- package/dist/lib/agent-spec/package-types.js +0 -1
- package/dist/lib/agent-spec/primitives.d.ts +0 -18
- package/dist/lib/agent-spec/primitives.js +0 -27
- package/dist/lib/agent-spec/provider.js +0 -2
- package/dist/lib/agent-spec/resolve.d.ts +0 -23
- package/dist/lib/agent-spec/resolve.js +0 -41
- package/dist/lib/agent-spec/types.d.ts +0 -34
- package/dist/lib/agent-spec/types.js +0 -6
- package/dist/lib/agents.d.ts +0 -1
- package/dist/lib/agents.js +0 -1
- package/dist/lib/analytics/mix-commands.d.ts +0 -23
- package/dist/lib/analytics/mix-commands.js +0 -26
- package/dist/lib/analytics/recipes.d.ts +0 -1
- package/dist/lib/analytics/recipes.js +5 -10
- package/dist/lib/analytics/usage-db.js +4 -6
- package/dist/lib/answer-router.d.ts +0 -61
- package/dist/lib/answer-router.js +0 -57
- package/dist/lib/app-bundle-install.d.ts +0 -13
- package/dist/lib/app-bundle-install.js +0 -50
- package/dist/lib/artifact-actions.d.ts +0 -15
- package/dist/lib/artifact-actions.js +0 -18
- package/dist/lib/artifacts-client.d.ts +0 -10
- package/dist/lib/artifacts-client.js +0 -17
- package/dist/lib/ask-classifier.d.ts +0 -38
- package/dist/lib/ask-classifier.js +0 -27
- package/dist/lib/audit/log.d.ts +0 -47
- package/dist/lib/audit/log.js +1 -59
- package/dist/lib/auth-health.d.ts +0 -213
- package/dist/lib/auth-health.js +16 -266
- package/dist/lib/auth-mint.d.ts +0 -83
- package/dist/lib/auth-mint.js +8 -85
- package/dist/lib/auto-pull-worker.d.ts +0 -10
- package/dist/lib/auto-pull-worker.js +3 -48
- package/dist/lib/auto-pull.d.ts +0 -64
- package/dist/lib/auto-pull.js +0 -79
- package/dist/lib/beta.d.ts +0 -9
- package/dist/lib/beta.js +0 -9
- package/dist/lib/binary-shadow.d.ts +0 -22
- package/dist/lib/binary-shadow.js +4 -34
- package/dist/lib/boot-profile.d.ts +0 -10
- package/dist/lib/boot-profile.js +1 -31
- package/dist/lib/brand.d.ts +0 -20
- package/dist/lib/brand.js +0 -50
- package/dist/lib/browser/context.d.ts +0 -54
- package/dist/lib/browser/context.js +0 -49
- package/dist/lib/browser/paths.d.ts +0 -21
- package/dist/lib/browser/paths.js +0 -26
- package/dist/lib/browser/record.d.ts +0 -34
- package/dist/lib/browser/record.js +0 -38
- package/dist/lib/browser/sessions-list.d.ts +1 -79
- package/dist/lib/browser/sessions-list.js +2 -98
- package/dist/lib/browser-client.d.ts +0 -112
- package/dist/lib/browser-client.js +1 -90
- package/dist/lib/budget/config.d.ts +0 -6
- package/dist/lib/budget/config.js +0 -29
- package/dist/lib/budget/enforce.d.ts +0 -50
- package/dist/lib/budget/enforce.js +0 -27
- package/dist/lib/budget/ledger.d.ts +0 -23
- package/dist/lib/budget/ledger.js +0 -28
- package/dist/lib/budget/live-cloud.d.ts +0 -26
- package/dist/lib/budget/live-cloud.js +0 -12
- package/dist/lib/budget/live-team.d.ts +0 -17
- package/dist/lib/budget/live-team.js +1 -35
- package/dist/lib/budget/preflight.d.ts +0 -51
- package/dist/lib/budget/preflight.js +0 -36
- package/dist/lib/byok-usage.d.ts +0 -20
- package/dist/lib/byok-usage.js +1 -24
- package/dist/lib/capabilities.d.ts +0 -24
- package/dist/lib/capabilities.js +0 -29
- package/dist/lib/catchup.d.ts +0 -87
- package/dist/lib/catchup.js +1 -81
- package/dist/lib/channels/owner-forward.d.ts +0 -70
- package/dist/lib/channels/owner-forward.js +1 -43
- package/dist/lib/channels/owner-sink.js +0 -21
- package/dist/lib/channels/providers/desktop.d.ts +0 -37
- package/dist/lib/channels/providers/desktop.js +0 -72
- package/dist/lib/channels/providers/index.d.ts +0 -1
- package/dist/lib/channels/providers/index.js +2 -6
- package/dist/lib/channels/providers/mailbox.js +0 -7
- package/dist/lib/channels/providers/openclaw-telegram.js +0 -8
- package/dist/lib/channels/providers/rush.d.ts +0 -2
- package/dist/lib/channels/providers/rush.js +0 -26
- package/dist/lib/channels/providers/session.d.ts +2 -0
- package/dist/lib/channels/providers/session.js +26 -0
- package/dist/lib/channels/registry.d.ts +0 -27
- package/dist/lib/channels/registry.js +0 -10
- package/dist/lib/channels/resolve.d.ts +0 -19
- package/dist/lib/channels/resolve.js +0 -2
- package/dist/lib/channels/send.d.ts +0 -50
- package/dist/lib/channels/send.js +0 -25
- package/dist/lib/checkpoint.d.ts +0 -36
- package/dist/lib/checkpoint.js +0 -28
- package/dist/lib/claude-account-token.d.ts +0 -98
- package/dist/lib/claude-account-token.js +7 -169
- package/dist/lib/claude-statusline.d.ts +0 -41
- package/dist/lib/claude-statusline.js +0 -68
- package/dist/lib/cli-entry.d.ts +0 -26
- package/dist/lib/cli-entry.js +1 -61
- package/dist/lib/cli-resources.d.ts +31 -89
- package/dist/lib/cli-resources.js +116 -152
- package/dist/lib/cloud/antigravity.d.ts +0 -29
- package/dist/lib/cloud/antigravity.js +0 -36
- package/dist/lib/cloud/codex.d.ts +0 -8
- package/dist/lib/cloud/codex.js +0 -41
- package/dist/lib/cloud/cursor.d.ts +0 -5
- package/dist/lib/cloud/cursor.js +2 -7
- package/dist/lib/cloud/dispatch.d.ts +0 -13
- package/dist/lib/cloud/dispatch.js +1 -48
- package/dist/lib/cloud/factory.d.ts +0 -52
- package/dist/lib/cloud/factory.js +3 -67
- package/dist/lib/cloud/host.d.ts +0 -39
- package/dist/lib/cloud/host.js +5 -48
- package/dist/lib/cloud/registry.d.ts +0 -25
- package/dist/lib/cloud/registry.js +0 -29
- package/dist/lib/cloud/rush.d.ts +0 -47
- package/dist/lib/cloud/rush.js +1 -82
- package/dist/lib/cloud/session-index.d.ts +0 -27
- package/dist/lib/cloud/session-index.js +1 -32
- package/dist/lib/cloud/store.d.ts +0 -18
- package/dist/lib/cloud/store.js +0 -28
- package/dist/lib/cloud/stream.d.ts +0 -14
- package/dist/lib/cloud/stream.js +0 -25
- package/dist/lib/cloud/types.d.ts +0 -168
- package/dist/lib/cloud/types.js +0 -46
- package/dist/lib/cloudflare/creds.d.ts +0 -2
- package/dist/lib/cloudflare/creds.js +0 -14
- package/dist/lib/cloudflare/provision.d.ts +0 -8
- package/dist/lib/cloudflare/provision.js +1 -19
- package/dist/lib/codex-home.d.ts +0 -60
- package/dist/lib/codex-home.js +2 -72
- package/dist/lib/codex-policy.d.ts +0 -10
- package/dist/lib/codex-policy.js +0 -13
- package/dist/lib/command-skills.d.ts +0 -10
- package/dist/lib/command-skills.js +0 -10
- package/dist/lib/commands.d.ts +0 -74
- package/dist/lib/commands.js +0 -112
- package/dist/lib/comms-render.d.ts +0 -5
- package/dist/lib/comms-render.js +0 -5
- package/dist/lib/computer/context.d.ts +0 -23
- package/dist/lib/computer/context.js +0 -14
- package/dist/lib/computer/policy.d.ts +0 -20
- package/dist/lib/computer/policy.js +0 -53
- package/dist/lib/computer/record.d.ts +0 -33
- package/dist/lib/computer/record.js +1 -48
- package/dist/lib/computer/sessions-list.d.ts +1 -128
- package/dist/lib/computer/sessions-list.js +6 -165
- package/dist/lib/computer-client.d.ts +0 -106
- package/dist/lib/computer-client.js +5 -86
- package/dist/lib/concurrency.d.ts +0 -14
- package/dist/lib/concurrency.js +0 -3
- package/dist/lib/config-drift.d.ts +0 -31
- package/dist/lib/config-drift.js +0 -32
- package/dist/lib/config-keys.d.ts +1 -65
- package/dist/lib/config-keys.js +6 -52
- package/dist/lib/config-transfer.d.ts +0 -14
- package/dist/lib/config-transfer.js +0 -26
- package/dist/lib/convert.d.ts +0 -17
- package/dist/lib/convert.js +0 -18
- package/dist/lib/crabbox/cli.d.ts +0 -156
- package/dist/lib/crabbox/cli.js +1 -188
- package/dist/lib/crabbox/config.d.ts +0 -18
- package/dist/lib/crabbox/config.js +1 -19
- package/dist/lib/crabbox/lease.d.ts +0 -93
- package/dist/lib/crabbox/lease.js +4 -148
- package/dist/lib/crabbox/progress.d.ts +0 -56
- package/dist/lib/crabbox/progress.js +2 -49
- package/dist/lib/crabbox/runtimes.d.ts +0 -94
- package/dist/lib/crabbox/runtimes.js +1 -111
- package/dist/lib/crabbox/setup-copy.d.ts +0 -64
- package/dist/lib/crabbox/setup-copy.js +1 -53
- package/dist/lib/daemon/account-state-daemon-service.d.ts +0 -48
- package/dist/lib/daemon/account-state-daemon-service.js +2 -63
- package/dist/lib/daemon/attention-notify-service.d.ts +0 -12
- package/dist/lib/daemon/attention-notify-service.js +1 -24
- package/dist/lib/daemon/auth-sync-service.d.ts +0 -28
- package/dist/lib/daemon/auth-sync-service.js +0 -56
- package/dist/lib/daemon/catchup-service.d.ts +0 -34
- package/dist/lib/daemon/catchup-service.js +0 -30
- package/dist/lib/daemon/daemon.d.ts +0 -374
- package/dist/lib/daemon/daemon.js +44 -1049
- package/dist/lib/daemon/daemon.test-fixture.d.ts +0 -19
- package/dist/lib/daemon/daemon.test-fixture.js +1 -24
- package/dist/lib/daemon/device-probe-service.d.ts +0 -16
- package/dist/lib/daemon/device-probe-service.js +0 -20
- package/dist/lib/daemon/feed-stream-service.d.ts +0 -15
- package/dist/lib/daemon/feed-stream-service.js +0 -20
- package/dist/lib/daemon/harness-update-service.d.ts +2 -61
- package/dist/lib/daemon/harness-update-service.js +6 -86
- package/dist/lib/daemon/heartbeat-service.d.ts +0 -1
- package/dist/lib/daemon/heartbeat-service.js +0 -1
- package/dist/lib/daemon/leaked-daemons.d.ts +0 -46
- package/dist/lib/daemon/leaked-daemons.js +2 -78
- package/dist/lib/daemon/monitor-engine-service.d.ts +0 -13
- package/dist/lib/daemon/monitor-engine-service.js +3 -15
- package/dist/lib/daemon/runner.d.ts +0 -194
- package/dist/lib/daemon/runner.js +39 -760
- package/dist/lib/daemon/self-heal-service.d.ts +18 -17
- package/dist/lib/daemon/self-heal-service.js +83 -37
- package/dist/lib/daemon/self-update-service.d.ts +1 -131
- package/dist/lib/daemon/self-update-service.js +26 -189
- package/dist/lib/daemon/service.d.ts +0 -73
- package/dist/lib/daemon/service.js +0 -34
- package/dist/lib/daemon/session-index-service.d.ts +0 -12
- package/dist/lib/daemon/session-index-service.js +0 -23
- package/dist/lib/daemon/session-state-service.d.ts +0 -8
- package/dist/lib/daemon/session-state-service.js +0 -8
- package/dist/lib/daemon/session-summarizer-service.d.ts +0 -14
- package/dist/lib/daemon/session-summarizer-service.js +1 -19
- package/dist/lib/daemon/session-title-service.d.ts +0 -25
- package/dist/lib/daemon/session-title-service.js +0 -32
- package/dist/lib/daemon/state-dir-check-service.d.ts +0 -24
- package/dist/lib/daemon/state-dir-check-service.js +0 -29
- package/dist/lib/daemon/supervisor.d.ts +0 -112
- package/dist/lib/daemon/supervisor.js +4 -147
- package/dist/lib/daemon/testdata/process-view-daemon.js +0 -2
- package/dist/lib/daemon/testdata/process-view-start.js +0 -5
- package/dist/lib/daemon/tmux-reap-service.d.ts +0 -1
- package/dist/lib/daemon/tmux-reap-service.js +0 -1
- package/dist/lib/daemon/usage-sync-service.d.ts +0 -23
- package/dist/lib/daemon/usage-sync-service.js +0 -26
- package/dist/lib/daemon/watchdog-service.d.ts +0 -9
- package/dist/lib/daemon/watchdog-service.js +0 -13
- package/dist/lib/daemon/webhook-receiver-service.d.ts +0 -1
- package/dist/lib/daemon/webhook-receiver-service.js +0 -1
- package/dist/lib/daemon-health.d.ts +0 -55
- package/dist/lib/daemon-health.js +4 -77
- package/dist/lib/daemon-services.d.ts +0 -36
- package/dist/lib/daemon-services.js +0 -45
- package/dist/lib/daemon-ticks.d.ts +0 -126
- package/dist/lib/daemon-ticks.js +1 -156
- package/dist/lib/daemon-webhooks.d.ts +0 -57
- package/dist/lib/daemon-webhooks.js +2 -54
- package/dist/lib/deeplink/register.d.ts +0 -15
- package/dist/lib/deeplink/register.js +0 -60
- package/dist/lib/deeplink/url.d.ts +0 -24
- package/dist/lib/deeplink/url.js +1 -33
- package/dist/lib/device-config.d.ts +1 -192
- package/dist/lib/device-config.js +86 -240
- package/dist/lib/devices/config-migration.d.ts +0 -43
- package/dist/lib/devices/config-migration.js +7 -127
- package/dist/lib/devices/connect.d.ts +0 -168
- package/dist/lib/devices/connect.js +6 -254
- package/dist/lib/devices/device-docs.d.ts +0 -24
- package/dist/lib/devices/device-docs.js +0 -46
- package/dist/lib/devices/discovery-policy.d.ts +0 -30
- package/dist/lib/devices/discovery-policy.js +3 -34
- package/dist/lib/devices/doctor-findings.d.ts +0 -109
- package/dist/lib/devices/doctor-findings.js +30 -326
- package/dist/lib/devices/doctor-overview-cache.d.ts +0 -33
- package/dist/lib/devices/doctor-overview-cache.js +0 -81
- package/dist/lib/devices/fleet-divergence.d.ts +0 -89
- package/dist/lib/devices/fleet-divergence.js +1 -60
- package/dist/lib/devices/fleet-inventory.d.ts +0 -27
- package/dist/lib/devices/fleet-inventory.js +0 -38
- package/dist/lib/devices/fleet.d.ts +0 -95
- package/dist/lib/devices/fleet.js +0 -79
- package/dist/lib/devices/harness-inventory.d.ts +0 -75
- package/dist/lib/devices/harness-inventory.js +0 -101
- package/dist/lib/devices/health-report.d.ts +0 -37
- package/dist/lib/devices/health-report.js +0 -73
- package/dist/lib/devices/health.d.ts +0 -71
- package/dist/lib/devices/health.js +2 -82
- package/dist/lib/devices/interactive-host.d.ts +0 -10
- package/dist/lib/devices/interactive-host.js +0 -34
- package/dist/lib/devices/known-hosts.d.ts +0 -45
- package/dist/lib/devices/known-hosts.js +0 -77
- package/dist/lib/devices/pending.d.ts +0 -31
- package/dist/lib/devices/pending.js +7 -67
- package/dist/lib/devices/pool.d.ts +0 -36
- package/dist/lib/devices/pool.js +0 -30
- package/dist/lib/devices/reachability.d.ts +0 -25
- package/dist/lib/devices/reachability.js +0 -14
- package/dist/lib/devices/registry.d.ts +0 -141
- package/dist/lib/devices/registry.js +4 -151
- package/dist/lib/devices/resolve-profile.d.ts +0 -18
- package/dist/lib/devices/resolve-profile.js +0 -18
- package/dist/lib/devices/resolve-target.d.ts +0 -20
- package/dist/lib/devices/resolve-target.js +1 -51
- package/dist/lib/devices/rollout-verify.d.ts +1 -81
- package/dist/lib/devices/rollout-verify.js +0 -77
- package/dist/lib/devices/self-host.d.ts +0 -7
- package/dist/lib/devices/self-host.js +1 -29
- package/dist/lib/devices/ssh-config.d.ts +0 -18
- package/dist/lib/devices/ssh-config.js +0 -9
- package/dist/lib/devices/stats-cache.d.ts +0 -48
- package/dist/lib/devices/stats-cache.js +0 -80
- package/dist/lib/devices/sync.d.ts +0 -97
- package/dist/lib/devices/sync.js +0 -88
- package/dist/lib/devices/tailscale.d.ts +0 -18
- package/dist/lib/devices/tailscale.js +1 -38
- package/dist/lib/devices/terminfo.d.ts +0 -27
- package/dist/lib/devices/terminfo.js +2 -64
- package/dist/lib/devices/worker-pick.d.ts +0 -15
- package/dist/lib/devices/worker-pick.js +0 -48
- package/dist/lib/diff-text.d.ts +0 -18
- package/dist/lib/diff-text.js +0 -15
- package/dist/lib/doctor-diff.d.ts +0 -79
- package/dist/lib/doctor-diff.js +2 -181
- package/dist/lib/drift-sync.d.ts +0 -29
- package/dist/lib/drift-sync.js +0 -40
- package/dist/lib/drift.d.ts +0 -43
- package/dist/lib/drift.js +0 -31
- package/dist/lib/event-families.d.ts +0 -17
- package/dist/lib/event-families.js +0 -33
- package/dist/lib/event-provenance.d.ts +0 -4
- package/dist/lib/event-provenance.js +0 -5
- package/dist/lib/event-stream.d.ts +0 -29
- package/dist/lib/event-stream.js +0 -36
- package/dist/lib/events-ingest.d.ts +0 -27
- package/dist/lib/events-ingest.js +0 -54
- package/dist/lib/exec-account-home.d.ts +0 -24
- package/dist/lib/exec-account-home.js +0 -41
- package/dist/lib/exec-bounded.d.ts +1 -37
- package/dist/lib/exec-bounded.js +10 -46
- package/dist/lib/exec.d.ts +3 -583
- package/dist/lib/exec.js +18 -1025
- package/dist/lib/factory/snapshot.js +1 -15
- package/dist/lib/feed/activity-stream.d.ts +0 -27
- package/dist/lib/feed/activity-stream.js +4 -80
- package/dist/lib/feed/activity.d.ts +1 -243
- package/dist/lib/feed/activity.js +8 -273
- package/dist/lib/feed/answer.d.ts +0 -103
- package/dist/lib/feed/answer.js +0 -267
- package/dist/lib/feed/attention.d.ts +0 -56
- package/dist/lib/feed/attention.js +0 -161
- package/dist/lib/feed/envelope.d.ts +2 -17
- package/dist/lib/feed/envelope.js +0 -14
- package/dist/lib/feed/events.d.ts +0 -118
- package/dist/lib/feed/events.js +13 -213
- package/dist/lib/feed/feed.d.ts +1 -250
- package/dist/lib/feed/feed.js +24 -334
- package/dist/lib/feed/hub-server.d.ts +0 -100
- package/dist/lib/feed/hub-server.js +1 -191
- package/dist/lib/feed/hub.d.ts +0 -53
- package/dist/lib/feed/hub.js +0 -89
- package/dist/lib/feed/pr-status.d.ts +1 -19
- package/dist/lib/feed/pr-status.js +0 -18
- package/dist/lib/feed/tool-activity.d.ts +0 -59
- package/dist/lib/feed/tool-activity.js +1 -119
- package/dist/lib/feed/tools.d.ts +0 -100
- package/dist/lib/feed/tools.js +0 -89
- package/dist/lib/feed/watch.d.ts +0 -33
- package/dist/lib/feed/watch.js +2 -94
- package/dist/lib/feed-broadcast.d.ts +0 -148
- package/dist/lib/feed-broadcast.js +1 -283
- package/dist/lib/feed-outcome.d.ts +0 -50
- package/dist/lib/feed-outcome.js +1 -67
- package/dist/lib/feed-policy.d.ts +0 -6
- package/dist/lib/feed-policy.js +1 -27
- package/dist/lib/feed-post.d.ts +0 -61
- package/dist/lib/feed-post.js +4 -61
- package/dist/lib/feed-ranking.d.ts +1 -1
- package/dist/lib/fleet/apply.d.ts +0 -64
- package/dist/lib/fleet/apply.js +0 -125
- package/dist/lib/fleet/auth-sync.d.ts +0 -48
- package/dist/lib/fleet/auth-sync.js +4 -49
- package/dist/lib/fleet/capture.d.ts +0 -26
- package/dist/lib/fleet/capture.js +1 -36
- package/dist/lib/fleet/manifest.d.ts +0 -38
- package/dist/lib/fleet/manifest.js +0 -40
- package/dist/lib/fleet/types.d.ts +1 -138
- package/dist/lib/fleet/types.js +0 -12
- package/dist/lib/fleet-cache.d.ts +0 -12
- package/dist/lib/fleet-cache.js +0 -24
- package/dist/lib/fleet-shared-state.d.ts +6 -59
- package/dist/lib/fleet-shared-state.js +5 -51
- package/dist/lib/fleet-status.d.ts +0 -27
- package/dist/lib/fleet-status.js +0 -48
- package/dist/lib/format.d.ts +0 -74
- package/dist/lib/format.js +3 -77
- package/dist/lib/friction-heuristics.d.ts +0 -20
- package/dist/lib/friction-heuristics.js +0 -8
- package/dist/lib/fs-atomic.d.ts +0 -51
- package/dist/lib/fs-atomic.js +8 -66
- package/dist/lib/fs-walk.d.ts +0 -13
- package/dist/lib/fs-walk.js +0 -22
- package/dist/lib/fuzzy.d.ts +0 -29
- package/dist/lib/fuzzy.js +0 -31
- package/dist/lib/gemini-settings.js +0 -12
- package/dist/lib/git.d.ts +0 -366
- package/dist/lib/git.js +7 -574
- package/dist/lib/github/ci-failure.d.ts +30 -0
- package/dist/lib/github/ci-failure.js +95 -0
- package/dist/lib/github/gh-overload.d.ts +0 -38
- package/dist/lib/github/gh-overload.js +3 -55
- package/dist/lib/github/pr-mergeable.d.ts +3 -34
- package/dist/lib/github/pr-mergeable.js +2 -42
- package/dist/lib/github/pr-verdict.d.ts +0 -44
- package/dist/lib/github/pr-verdict.js +0 -36
- package/dist/lib/github/project-prs.d.ts +135 -105
- package/dist/lib/github/project-prs.js +530 -170
- package/dist/lib/github/release-drift.d.ts +45 -0
- package/dist/lib/github/release-drift.js +91 -0
- package/dist/lib/github/rest.d.ts +0 -50
- package/dist/lib/github/rest.js +0 -49
- package/dist/lib/github/viewer.d.ts +27 -0
- package/dist/lib/github/viewer.js +101 -0
- package/dist/lib/goose-commands.d.ts +0 -29
- package/dist/lib/goose-commands.js +3 -48
- package/dist/lib/harness/adapter.d.ts +0 -151
- package/dist/lib/harness/adapter.js +0 -41
- package/dist/lib/harness/adapters/claude.d.ts +0 -8
- package/dist/lib/harness/adapters/claude.js +0 -89
- package/dist/lib/harness/adapters/codex.js +0 -18
- package/dist/lib/harness/adapters/copilot.js +0 -3
- package/dist/lib/harness/adapters/cursor.js +0 -16
- package/dist/lib/harness/adapters/droid.js +0 -3
- package/dist/lib/harness/adapters/kimi.js +0 -19
- package/dist/lib/harness/adapters/muse.js +0 -9
- package/dist/lib/harness/adapters/opencode.js +0 -2
- package/dist/lib/harness/exec-config-version.d.ts +0 -2
- package/dist/lib/harness/exec-config-version.js +0 -13
- package/dist/lib/harness/index.js +0 -10
- package/dist/lib/harness-auth-capabilities.d.ts +0 -26
- package/dist/lib/harness-auth-capabilities.js +0 -18
- package/dist/lib/harness-connection-test.d.ts +0 -27
- package/dist/lib/harness-connection-test.js +2 -20
- package/dist/lib/heal.d.ts +0 -45
- package/dist/lib/heal.js +2 -82
- package/dist/lib/help.d.ts +0 -32
- package/dist/lib/help.js +0 -41
- package/dist/lib/helper-download.d.ts +0 -85
- package/dist/lib/helper-download.js +0 -95
- package/dist/lib/helper-versions.d.ts +0 -51
- package/dist/lib/helper-versions.js +1 -45
- package/dist/lib/hooks/cache.d.ts +0 -40
- package/dist/lib/hooks/cache.js +8 -122
- package/dist/lib/hooks/install.d.ts +0 -253
- package/dist/lib/hooks/install.js +49 -822
- package/dist/lib/hooks/match.d.ts +0 -24
- package/dist/lib/hooks/match.js +0 -31
- package/dist/lib/hooks/profile.d.ts +0 -21
- package/dist/lib/hooks/profile.js +0 -28
- package/dist/lib/hosts/credential-transport.d.ts +0 -6
- package/dist/lib/hosts/credential-transport.js +0 -17
- package/dist/lib/hosts/credentials.d.ts +0 -35
- package/dist/lib/hosts/credentials.js +0 -38
- package/dist/lib/hosts/dispatch.d.ts +0 -140
- package/dist/lib/hosts/dispatch.js +0 -176
- package/dist/lib/hosts/logs.d.ts +0 -25
- package/dist/lib/hosts/logs.js +1 -51
- package/dist/lib/hosts/option.d.ts +0 -12
- package/dist/lib/hosts/option.js +0 -12
- package/dist/lib/hosts/passthrough.d.ts +0 -129
- package/dist/lib/hosts/passthrough.js +12 -249
- package/dist/lib/hosts/progress.d.ts +0 -90
- package/dist/lib/hosts/progress.js +5 -115
- package/dist/lib/hosts/providers/devices.d.ts +0 -19
- package/dist/lib/hosts/providers/devices.js +1 -34
- package/dist/lib/hosts/providers/local.d.ts +0 -14
- package/dist/lib/hosts/providers/local.js +0 -22
- package/dist/lib/hosts/ready.d.ts +0 -99
- package/dist/lib/hosts/ready.js +0 -101
- package/dist/lib/hosts/reconcile.d.ts +0 -38
- package/dist/lib/hosts/reconcile.js +1 -50
- package/dist/lib/hosts/reconnect.d.ts +0 -75
- package/dist/lib/hosts/reconnect.js +0 -98
- package/dist/lib/hosts/registry.d.ts +0 -74
- package/dist/lib/hosts/registry.js +0 -110
- package/dist/lib/hosts/remote-cmd.d.ts +1 -228
- package/dist/lib/hosts/remote-cmd.js +19 -294
- package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +0 -1
- package/dist/lib/hosts/remote-cmd.test-fixture.js +0 -12
- package/dist/lib/hosts/remote-os.d.ts +0 -19
- package/dist/lib/hosts/remote-os.js +0 -22
- package/dist/lib/hosts/remote-session-id.d.ts +0 -22
- package/dist/lib/hosts/remote-session-id.js +0 -24
- package/dist/lib/hosts/routing-flag.d.ts +0 -21
- package/dist/lib/hosts/routing-flag.js +0 -21
- package/dist/lib/hosts/run-target.d.ts +0 -53
- package/dist/lib/hosts/run-target.js +0 -56
- package/dist/lib/hosts/session-index.d.ts +1 -53
- package/dist/lib/hosts/session-index.js +2 -59
- package/dist/lib/hosts/session-marker.d.ts +0 -31
- package/dist/lib/hosts/session-marker.js +0 -32
- package/dist/lib/hosts/ssh-config.d.ts +0 -25
- package/dist/lib/hosts/ssh-config.js +1 -32
- package/dist/lib/hosts/tasks.d.ts +0 -54
- package/dist/lib/hosts/tasks.js +0 -35
- package/dist/lib/hosts/types.d.ts +0 -39
- package/dist/lib/hosts/types.js +0 -22
- package/dist/lib/humans.d.ts +0 -21
- package/dist/lib/humans.js +0 -30
- package/dist/lib/identity/client.d.ts +1 -35
- package/dist/lib/identity/client.js +3 -29
- package/dist/lib/identity/index.d.ts +3 -27
- package/dist/lib/identity/index.js +8 -24
- package/dist/lib/import.d.ts +0 -104
- package/dist/lib/import.js +1 -137
- package/dist/lib/installations/active-check.d.ts +0 -53
- package/dist/lib/installations/active-check.js +0 -49
- package/dist/lib/installations/index.d.ts +0 -9
- package/dist/lib/installations/index.js +0 -9
- package/dist/lib/installations/installation-lock.js +0 -8
- package/dist/lib/installations/launch-gate.d.ts +0 -56
- package/dist/lib/installations/launch-gate.js +0 -83
- package/dist/lib/installations/migrate.d.ts +0 -100
- package/dist/lib/installations/migrate.js +105 -572
- package/dist/lib/installations/native-command.d.ts +0 -1
- package/dist/lib/installations/native-command.js +0 -6
- package/dist/lib/installations/resolve.d.ts +0 -24
- package/dist/lib/installations/resolve.js +0 -24
- package/dist/lib/installations/shims.d.ts +0 -395
- package/dist/lib/installations/shims.js +30 -957
- package/dist/lib/installations/store.d.ts +0 -199
- package/dist/lib/installations/store.js +1 -297
- package/dist/lib/installations/strategies.d.ts +0 -44
- package/dist/lib/installations/strategies.js +0 -87
- package/dist/lib/installations/types.d.ts +1 -67
- package/dist/lib/installations/types.js +0 -6
- package/dist/lib/installations/update-cancellation.d.ts +0 -74
- package/dist/lib/installations/update-cancellation.js +0 -74
- package/dist/lib/installations/update-policy.d.ts +0 -57
- package/dist/lib/installations/update-policy.js +0 -62
- package/dist/lib/installations/update-runtime.d.ts +0 -88
- package/dist/lib/installations/update-runtime.js +1 -127
- package/dist/lib/installations/update.d.ts +0 -53
- package/dist/lib/installations/update.js +0 -95
- package/dist/lib/installations/versions.d.ts +0 -310
- package/dist/lib/installations/versions.js +14 -837
- package/dist/lib/isolation-boundary-report.d.ts +0 -7
- package/dist/lib/isolation-boundary-report.js +0 -7
- package/dist/lib/launch-identity.d.ts +0 -8
- package/dist/lib/launch-identity.js +0 -8
- package/dist/lib/linear-autoclose.d.ts +0 -25
- package/dist/lib/linear-autoclose.js +0 -19
- package/dist/lib/linear-cache.d.ts +0 -57
- package/dist/lib/linear-cache.js +1 -81
- package/dist/lib/linear-project-counts.d.ts +0 -83
- package/dist/lib/linear-project-counts.js +2 -64
- package/dist/lib/linear-projects.d.ts +0 -62
- package/dist/lib/linear-projects.js +0 -85
- package/dist/lib/linear-rate-limit.d.ts +0 -21
- package/dist/lib/linear-rate-limit.js +1 -93
- package/dist/lib/linux-userns.d.ts +1 -42
- package/dist/lib/linux-userns.js +0 -47
- package/dist/lib/lock-compromise.d.ts +0 -7
- package/dist/lib/lock-compromise.js +0 -7
- package/dist/lib/log-follow.d.ts +0 -2
- package/dist/lib/log-follow.js +5 -15
- package/dist/lib/loop.d.ts +0 -106
- package/dist/lib/loop.js +0 -135
- package/dist/lib/machine-id.d.ts +0 -19
- package/dist/lib/machine-id.js +0 -19
- package/dist/lib/mailbox-gc.d.ts +0 -7
- package/dist/lib/mailbox-gc.js +0 -25
- package/dist/lib/mailbox-target.d.ts +0 -31
- package/dist/lib/mailbox-target.js +0 -27
- package/dist/lib/mailbox.d.ts +0 -77
- package/dist/lib/mailbox.js +5 -105
- package/dist/lib/manifest.d.ts +0 -4
- package/dist/lib/manifest.js +0 -36
- package/dist/lib/markdown.d.ts +0 -3
- package/dist/lib/markdown.js +0 -9
- package/dist/lib/mcp-registry.d.ts +1 -50
- package/dist/lib/mcp-registry.js +0 -64
- package/dist/lib/mcp.d.ts +0 -115
- package/dist/lib/mcp.js +3 -199
- package/dist/lib/memory-cache.d.ts +0 -11
- package/dist/lib/memory-cache.js +0 -9
- package/dist/lib/memory.d.ts +0 -52
- package/dist/lib/memory.js +12 -74
- package/dist/lib/menubar/download-menubar.d.ts +0 -35
- package/dist/lib/menubar/download-menubar.js +0 -38
- package/dist/lib/menubar/install-menubar.d.ts +0 -405
- package/dist/lib/menubar/install-menubar.js +25 -667
- package/dist/lib/menubar/migrate-prefs.d.ts +0 -47
- package/dist/lib/menubar/migrate-prefs.js +1 -70
- package/dist/lib/menubar/notify-desktop.d.ts +0 -82
- package/dist/lib/menubar/notify-desktop.js +0 -68
- package/dist/lib/menubar/resolve-version.d.ts +0 -41
- package/dist/lib/menubar/resolve-version.js +2 -44
- package/dist/lib/menubar/snapshot.d.ts +13 -66
- package/dist/lib/menubar/snapshot.js +45 -39
- package/dist/lib/merged-resources.d.ts +0 -10
- package/dist/lib/merged-resources.js +0 -10
- package/dist/lib/migrate-fold.d.ts +0 -31
- package/dist/lib/migrate-fold.js +6 -38
- package/dist/lib/model-tier-overrides.d.ts +0 -30
- package/dist/lib/model-tier-overrides.js +0 -14
- package/dist/lib/model-tiers.d.ts +0 -43
- package/dist/lib/model-tiers.js +5 -78
- package/dist/lib/models.d.ts +0 -145
- package/dist/lib/models.js +3 -333
- package/dist/lib/monitors/config.d.ts +0 -187
- package/dist/lib/monitors/config.js +4 -101
- package/dist/lib/monitors/dispatch.d.ts +0 -22
- package/dist/lib/monitors/dispatch.js +0 -35
- package/dist/lib/monitors/engine.d.ts +1 -53
- package/dist/lib/monitors/engine.js +17 -106
- package/dist/lib/monitors/fingerprint.d.ts +0 -43
- package/dist/lib/monitors/fingerprint.js +0 -57
- package/dist/lib/monitors/pid-watch.d.ts +0 -31
- package/dist/lib/monitors/pid-watch.js +0 -31
- package/dist/lib/monitors/remote.d.ts +0 -52
- package/dist/lib/monitors/remote.js +0 -42
- package/dist/lib/monitors/sources/command.d.ts +2 -9
- package/dist/lib/monitors/sources/command.js +13 -34
- package/dist/lib/monitors/sources/device.d.ts +0 -10
- package/dist/lib/monitors/sources/device.js +0 -14
- package/dist/lib/monitors/sources/failure.d.ts +0 -27
- package/dist/lib/monitors/sources/failure.js +0 -27
- package/dist/lib/monitors/sources/file.d.ts +0 -10
- package/dist/lib/monitors/sources/file.js +0 -11
- package/dist/lib/monitors/sources/http.d.ts +0 -7
- package/dist/lib/monitors/sources/http.js +0 -9
- package/dist/lib/monitors/sources/index.d.ts +0 -9
- package/dist/lib/monitors/sources/index.js +0 -9
- package/dist/lib/monitors/sources/poll.d.ts +0 -8
- package/dist/lib/monitors/sources/poll.js +0 -8
- package/dist/lib/monitors/sources/types.d.ts +0 -18
- package/dist/lib/monitors/sources/types.js +0 -8
- package/dist/lib/monitors/sources/webhook.d.ts +0 -7
- package/dist/lib/monitors/sources/webhook.js +0 -7
- package/dist/lib/monitors/sources/ws.d.ts +0 -10
- package/dist/lib/monitors/sources/ws.js +3 -13
- package/dist/lib/monitors/state.d.ts +0 -132
- package/dist/lib/monitors/state.js +2 -86
- package/dist/lib/native-accounts.d.ts +0 -32
- package/dist/lib/native-accounts.js +0 -17
- package/dist/lib/net-close.d.ts +0 -9
- package/dist/lib/net-close.js +0 -5
- package/dist/lib/notify.d.ts +0 -47
- package/dist/lib/notify.js +0 -30
- package/dist/lib/onepassword.d.ts +0 -14
- package/dist/lib/onepassword.js +0 -12
- package/dist/lib/open-url.d.ts +0 -38
- package/dist/lib/open-url.js +1 -69
- package/dist/lib/openclaw-keychain.js +2 -7
- package/dist/lib/operator.d.ts +0 -9
- package/dist/lib/operator.js +0 -34
- package/dist/lib/origin-machine.d.ts +0 -16
- package/dist/lib/origin-machine.js +0 -16
- package/dist/lib/output/git-output.d.ts +0 -31
- package/dist/lib/output/git-output.js +4 -43
- package/dist/lib/overdue.d.ts +0 -35
- package/dist/lib/overdue.js +0 -60
- package/dist/lib/owner-message.d.ts +0 -20
- package/dist/lib/owner-message.js +1 -40
- package/dist/lib/packages/output-home.d.ts +0 -28
- package/dist/lib/packages/output-home.js +0 -114
- package/dist/lib/paths.d.ts +0 -26
- package/dist/lib/paths.js +1 -27
- package/dist/lib/percentile.d.ts +0 -11
- package/dist/lib/percentile.js +0 -11
- package/dist/lib/perf/db.d.ts +0 -16
- package/dist/lib/perf/db.js +3 -32
- package/dist/lib/perf/spool.d.ts +0 -12
- package/dist/lib/perf/spool.js +0 -13
- package/dist/lib/perf/types.d.ts +0 -26
- package/dist/lib/perf/types.js +0 -1
- package/dist/lib/permissions-registry.d.ts +0 -48
- package/dist/lib/permissions-registry.js +0 -108
- package/dist/lib/permissions.d.ts +0 -215
- package/dist/lib/permissions.js +4 -407
- package/dist/lib/picker.d.ts +0 -124
- package/dist/lib/picker.js +0 -140
- package/dist/lib/placement.d.ts +0 -57
- package/dist/lib/placement.js +0 -47
- package/dist/lib/platform/exec.d.ts +0 -73
- package/dist/lib/platform/exec.js +0 -80
- package/dist/lib/platform/index.d.ts +0 -14
- package/dist/lib/platform/index.js +0 -14
- package/dist/lib/platform/ipc.d.ts +0 -10
- package/dist/lib/platform/ipc.js +0 -13
- package/dist/lib/platform/links.d.ts +0 -14
- package/dist/lib/platform/links.js +0 -25
- package/dist/lib/platform/paths.d.ts +0 -48
- package/dist/lib/platform/paths.js +0 -52
- package/dist/lib/platform/posixpath.d.ts +0 -18
- package/dist/lib/platform/posixpath.js +0 -62
- package/dist/lib/platform/process.d.ts +0 -67
- package/dist/lib/platform/process.js +5 -99
- package/dist/lib/platform/winpath.d.ts +0 -50
- package/dist/lib/platform/winpath.js +0 -81
- package/dist/lib/plugins/plugin-marketplace.d.ts +0 -165
- package/dist/lib/plugins/plugin-marketplace.js +10 -238
- package/dist/lib/plugins/plugins.d.ts +0 -238
- package/dist/lib/plugins/plugins.js +20 -454
- package/dist/lib/plugins/skills.d.ts +0 -86
- package/dist/lib/plugins/skills.js +1 -139
- package/dist/lib/pr-land-detach.d.ts +0 -17
- package/dist/lib/pr-land-detach.js +0 -30
- package/dist/lib/pricing/cost.d.ts +0 -29
- package/dist/lib/pricing/cost.js +0 -38
- package/dist/lib/pricing/index.d.ts +0 -6
- package/dist/lib/pricing/index.js +0 -6
- package/dist/lib/pricing/table.d.ts +0 -8
- package/dist/lib/pricing/table.js +3 -56
- package/dist/lib/probe.d.ts +0 -5
- package/dist/lib/probe.js +0 -40
- package/dist/lib/profiles-presets.d.ts +0 -20
- package/dist/lib/profiles-presets.js +1 -36
- package/dist/lib/profiles.d.ts +0 -185
- package/dist/lib/profiles.js +1 -158
- package/dist/lib/project-doctor.d.ts +0 -29
- package/dist/lib/project-doctor.js +0 -26
- package/dist/lib/project-focus.d.ts +0 -41
- package/dist/lib/project-focus.js +0 -49
- package/dist/lib/project-import.d.ts +0 -41
- package/dist/lib/project-import.js +0 -36
- package/dist/lib/project-key.d.ts +0 -65
- package/dist/lib/project-key.js +0 -70
- package/dist/lib/project-launch.d.ts +0 -49
- package/dist/lib/project-launch.js +2 -91
- package/dist/lib/project-probe.d.ts +0 -86
- package/dist/lib/project-probe.js +1 -88
- package/dist/lib/project-pull.d.ts +0 -96
- package/dist/lib/project-pull.js +0 -122
- package/dist/lib/project-resources.d.ts +0 -44
- package/dist/lib/project-resources.js +7 -171
- package/dist/lib/project-root.d.ts +0 -95
- package/dist/lib/project-root.js +0 -101
- package/dist/lib/project-schedule.d.ts +0 -43
- package/dist/lib/project-schedule.js +0 -52
- package/dist/lib/project-status.d.ts +0 -108
- package/dist/lib/project-status.js +0 -117
- package/dist/lib/projects.d.ts +0 -197
- package/dist/lib/projects.js +1 -213
- package/dist/lib/pwsh.d.ts +0 -41
- package/dist/lib/pwsh.js +0 -51
- package/dist/lib/quick-todo.d.ts +84 -0
- package/dist/lib/quick-todo.js +243 -0
- package/dist/lib/reconcile-and-repair.d.ts +0 -78
- package/dist/lib/reconcile-and-repair.js +3 -66
- package/dist/lib/redact.d.ts +0 -29
- package/dist/lib/redact.js +0 -54
- package/dist/lib/refresh-coordinator.d.ts +0 -15
- package/dist/lib/refresh-coordinator.js +0 -10
- package/dist/lib/refresh.d.ts +0 -39
- package/dist/lib/refresh.js +0 -45
- package/dist/lib/registry.d.ts +0 -65
- package/dist/lib/registry.js +0 -127
- package/dist/lib/reminders.d.ts +0 -21
- package/dist/lib/reminders.js +0 -30
- package/dist/lib/remote-agents-json.d.ts +0 -44
- package/dist/lib/remote-agents-json.js +1 -44
- package/dist/lib/reserved-stores.d.ts +0 -28
- package/dist/lib/reserved-stores.js +2 -28
- package/dist/lib/resource-aliases.d.ts +0 -12
- package/dist/lib/resource-aliases.js +0 -12
- package/dist/lib/resource-content-diff.d.ts +0 -28
- package/dist/lib/resource-content-diff.js +7 -34
- package/dist/lib/resource-inventory.d.ts +0 -51
- package/dist/lib/resource-inventory.js +0 -45
- package/dist/lib/resource-patterns.d.ts +0 -32
- package/dist/lib/resource-patterns.js +0 -34
- package/dist/lib/resource-profiles.d.ts +0 -7
- package/dist/lib/resource-profiles.js +0 -11
- package/dist/lib/resources/types.d.ts +0 -50
- package/dist/lib/resources/types.js +0 -7
- package/dist/lib/resources/workflows.d.ts +0 -7
- package/dist/lib/resources/workflows.js +0 -13
- package/dist/lib/resources.d.ts +0 -65
- package/dist/lib/resources.js +0 -78
- package/dist/lib/routers.d.ts +0 -67
- package/dist/lib/routers.js +0 -60
- package/dist/lib/routine-activation.d.ts +0 -23
- package/dist/lib/routine-activation.js +0 -24
- package/dist/lib/routine-context.d.ts +1 -91
- package/dist/lib/routine-context.js +0 -107
- package/dist/lib/routine-notify-owner.d.ts +0 -79
- package/dist/lib/routine-notify-owner.js +1 -103
- package/dist/lib/routine-notify.d.ts +0 -70
- package/dist/lib/routine-notify.js +1 -75
- package/dist/lib/routine-process-cleanup.d.ts +0 -1
- package/dist/lib/routine-process-cleanup.js +1 -4
- package/dist/lib/routine-readiness.d.ts +0 -63
- package/dist/lib/routine-readiness.js +4 -86
- package/dist/lib/routines-format.d.ts +0 -40
- package/dist/lib/routines-format.js +0 -67
- package/dist/lib/routines-placement.d.ts +0 -33
- package/dist/lib/routines-placement.js +0 -40
- package/dist/lib/routines-project.d.ts +0 -57
- package/dist/lib/routines-project.js +6 -80
- package/dist/lib/rules/compile.d.ts +0 -66
- package/dist/lib/rules/compile.js +6 -118
- package/dist/lib/rules/compose.d.ts +0 -56
- package/dist/lib/rules/compose.js +2 -83
- package/dist/lib/rules/rules.d.ts +0 -23
- package/dist/lib/rules/rules.js +0 -35
- package/dist/lib/rules/run-sync.d.ts +0 -16
- package/dist/lib/rules/run-sync.js +1 -44
- package/dist/lib/run-config.d.ts +0 -7
- package/dist/lib/run-config.js +0 -8
- package/dist/lib/run-defaults.d.ts +0 -14
- package/dist/lib/run-defaults.js +0 -14
- package/dist/lib/run-notify.d.ts +0 -18
- package/dist/lib/run-notify.js +0 -36
- package/dist/lib/run-trace-sync.d.ts +0 -21
- package/dist/lib/run-trace-sync.js +2 -66
- package/dist/lib/rush-session.d.ts +0 -26
- package/dist/lib/rush-session.js +0 -28
- package/dist/lib/sandbox.d.ts +0 -45
- package/dist/lib/sandbox.js +5 -93
- package/dist/lib/scheduler.d.ts +0 -28
- package/dist/lib/scheduler.js +0 -45
- package/dist/lib/scheduling/routines.d.ts +0 -652
- package/dist/lib/scheduling/routines.js +8 -475
- package/dist/lib/secrets-cli.d.ts +3 -8
- package/dist/lib/secrets-cli.js +1 -19
- package/dist/lib/secrets-client.d.ts +0 -117
- package/dist/lib/secrets-client.js +4 -275
- package/dist/lib/secrets-policy.d.ts +0 -142
- package/dist/lib/secrets-policy.js +4 -237
- package/dist/lib/secrets-types.d.ts +0 -87
- package/dist/lib/secrets-types.js +0 -13
- package/dist/lib/self-heal/checks/hook-manifest.js +0 -25
- package/dist/lib/self-heal/checks/hook-runtime.js +0 -5
- package/dist/lib/self-heal/checks/install-staging.d.ts +0 -1
- package/dist/lib/self-heal/checks/install-staging.js +1 -28
- package/dist/lib/self-heal/checks/menubar-helper.js +0 -5
- package/dist/lib/self-heal/checks/path.js +0 -9
- package/dist/lib/self-heal/checks/resources.js +0 -5
- package/dist/lib/self-heal/checks/shadowing.js +2 -16
- package/dist/lib/self-heal/checks/shims.js +0 -14
- package/dist/lib/self-heal/child.d.ts +12 -0
- package/dist/lib/self-heal/child.js +23 -0
- package/dist/lib/self-heal/registry.d.ts +0 -9
- package/dist/lib/self-heal/registry.js +0 -16
- package/dist/lib/self-heal/types.d.ts +0 -12
- package/dist/lib/self-heal/types.js +0 -15
- package/dist/lib/self-update.d.ts +0 -312
- package/dist/lib/self-update.js +9 -360
- package/dist/lib/service-manifest.d.ts +0 -39
- package/dist/lib/service-manifest.js +0 -72
- package/dist/lib/session/active.d.ts +13 -869
- package/dist/lib/session/active.js +20 -976
- package/dist/lib/session/actor-sidecar.d.ts +1 -32
- package/dist/lib/session/actor-sidecar.js +1 -41
- package/dist/lib/session/bookmarks.d.ts +0 -33
- package/dist/lib/session/bookmarks.js +0 -37
- package/dist/lib/session/bundle.d.ts +0 -86
- package/dist/lib/session/bundle.js +0 -54
- package/dist/lib/session/claude-accounts.d.ts +0 -40
- package/dist/lib/session/claude-accounts.js +0 -49
- package/dist/lib/session/cloud.d.ts +1 -23
- package/dist/lib/session/cloud.js +0 -26
- package/dist/lib/session/db.d.ts +5 -658
- package/dist/lib/session/db.js +22 -1443
- package/dist/lib/session/detached.d.ts +0 -21
- package/dist/lib/session/detached.js +0 -29
- package/dist/lib/session/discover.d.ts +3 -420
- package/dist/lib/session/discover.js +30 -1123
- package/dist/lib/session/fork.d.ts +1 -41
- package/dist/lib/session/fork.js +0 -19
- package/dist/lib/session/ghostty-tabs.d.ts +0 -24
- package/dist/lib/session/ghostty-tabs.js +0 -37
- package/dist/lib/session/glance-files.d.ts +19 -0
- package/dist/lib/session/glance-files.js +258 -0
- package/dist/lib/session/hook-sessions.d.ts +0 -33
- package/dist/lib/session/hook-sessions.js +4 -99
- package/dist/lib/session/host-link.d.ts +1 -94
- package/dist/lib/session/host-link.js +1 -81
- package/dist/lib/session/inject-target.d.ts +8 -0
- package/dist/lib/session/inject-target.js +32 -0
- package/dist/lib/session/inject.d.ts +0 -15
- package/dist/lib/session/inject.js +0 -15
- package/dist/lib/session/live-metadata.d.ts +1 -34
- package/dist/lib/session/live-metadata.js +1 -73
- package/dist/lib/session/local-tmux-attach.d.ts +0 -37
- package/dist/lib/session/local-tmux-attach.js +1 -76
- package/dist/lib/session/migrate-targets.d.ts +0 -46
- package/dist/lib/session/migrate-targets.js +0 -24
- package/dist/lib/session/migrations.d.ts +0 -12
- package/dist/lib/session/migrations.js +1 -20
- package/dist/lib/session/mirror.d.ts +0 -32
- package/dist/lib/session/mirror.js +0 -77
- package/dist/lib/session/origin-machine.js +0 -3
- package/dist/lib/session/pid-registry.d.ts +0 -80
- package/dist/lib/session/pid-registry.js +2 -81
- package/dist/lib/session/presence.d.ts +0 -39
- package/dist/lib/session/presence.js +2 -52
- package/dist/lib/session/process-view.d.ts +0 -11
- package/dist/lib/session/process-view.js +0 -25
- package/dist/lib/session/projection.d.ts +0 -3
- package/dist/lib/session/projection.js +0 -10
- package/dist/lib/session/provenance.d.ts +1 -37
- package/dist/lib/session/provenance.js +0 -69
- package/dist/lib/session/recovery.d.ts +1 -40
- package/dist/lib/session/recovery.js +2 -80
- package/dist/lib/session/relative-time.js +0 -3
- package/dist/lib/session/remote/peer-stream.d.ts +0 -42
- package/dist/lib/session/remote/peer-stream.js +0 -64
- package/dist/lib/session/remote/remote-bundle.d.ts +0 -6
- package/dist/lib/session/remote/remote-bundle.js +0 -21
- package/dist/lib/session/remote/remote-list.d.ts +1 -110
- package/dist/lib/session/remote/remote-list.js +5 -139
- package/dist/lib/session/remote/remote.d.ts +0 -98
- package/dist/lib/session/remote/remote.js +3 -119
- package/dist/lib/session/remote/watch.d.ts +1 -34
- package/dist/lib/session/remote/watch.js +12 -72
- package/dist/lib/session/remote-active.d.ts +0 -35
- package/dist/lib/session/remote-active.js +0 -48
- package/dist/lib/session/remote-bundle.js +0 -2
- package/dist/lib/session/remote-list.js +0 -2
- package/dist/lib/session/remote-preview-cache.d.ts +0 -7
- package/dist/lib/session/remote-preview-cache.js +1 -76
- package/dist/lib/session/remote.js +0 -2
- package/dist/lib/session/resume-command.d.ts +0 -6
- package/dist/lib/session/resume-command.js +0 -6
- package/dist/lib/session/resume-owner.d.ts +1 -52
- package/dist/lib/session/resume-owner.js +0 -56
- package/dist/lib/session/run-names.d.ts +0 -24
- package/dist/lib/session/run-names.js +0 -26
- package/dist/lib/session/session-cache.d.ts +2 -146
- package/dist/lib/session/session-cache.js +26 -203
- package/dist/lib/session/short-id.js +0 -3
- package/dist/lib/session/sync/agents.d.ts +0 -68
- package/dist/lib/session/sync/agents.js +0 -0
- package/dist/lib/session/sync/backend.d.ts +0 -39
- package/dist/lib/session/sync/backend.js +0 -45
- package/dist/lib/session/sync/config.d.ts +0 -27
- package/dist/lib/session/sync/config.js +0 -56
- package/dist/lib/session/sync/managed-config.d.ts +0 -17
- package/dist/lib/session/sync/managed-config.js +0 -17
- package/dist/lib/session/sync/managed-key.d.ts +0 -38
- package/dist/lib/session/sync/managed-key.js +1 -42
- package/dist/lib/session/sync/net-client.d.ts +0 -36
- package/dist/lib/session/sync/net-client.js +0 -30
- package/dist/lib/session/sync/provision.d.ts +0 -2
- package/dist/lib/session/sync/provision.js +0 -13
- package/dist/lib/session/sync/r2.d.ts +0 -20
- package/dist/lib/session/sync/r2.js +0 -20
- package/dist/lib/session/sync/transcript-crypto.d.ts +0 -37
- package/dist/lib/session/sync/transcript-crypto.js +5 -37
- package/dist/lib/session/sync/worker-template.d.ts +0 -5
- package/dist/lib/session/sync/worker-template.js +0 -40
- package/dist/lib/session/testdata/pid-registry-namespace.js +0 -2
- package/dist/lib/session/testdata/process-view-private.js +0 -1
- package/dist/lib/session/throughput.d.ts +0 -24
- package/dist/lib/session/throughput.js +1 -25
- package/dist/lib/session/timeline-pass.d.ts +1 -63
- package/dist/lib/session/timeline-pass.js +161 -148
- package/dist/lib/session/title.d.ts +0 -182
- package/dist/lib/session/title.js +0 -139
- package/dist/lib/session/tool-index.d.ts +2 -21
- package/dist/lib/session/tool-index.js +3 -75
- package/dist/lib/session/tool-store.d.ts +2 -48
- package/dist/lib/session/tool-store.js +1 -33
- package/dist/lib/session/viewing-in.d.ts +0 -67
- package/dist/lib/session/viewing-in.js +1 -71
- package/dist/lib/session/watch.js +0 -2
- package/dist/lib/session/width.js +0 -3
- package/dist/lib/sessions-client.d.ts +0 -46
- package/dist/lib/sessions-client.js +36 -113
- package/dist/lib/settings-manifest.d.ts +1 -17
- package/dist/lib/settings-manifest.js +4 -57
- package/dist/lib/setup-tool-install.d.ts +0 -1
- package/dist/lib/setup-tool-install.js +2 -7
- package/dist/lib/setup-tool-status.d.ts +0 -3
- package/dist/lib/setup-tool-status.js +4 -14
- package/dist/lib/sha256-asset.d.ts +0 -20
- package/dist/lib/sha256-asset.js +0 -20
- package/dist/lib/share-runtime.d.ts +0 -10
- package/dist/lib/share-runtime.js +1 -27
- package/dist/lib/shim-heal.d.ts +0 -15
- package/dist/lib/shim-heal.js +3 -29
- package/dist/lib/signin-badge.d.ts +0 -72
- package/dist/lib/signin-badge.js +0 -86
- package/dist/lib/sink-format.d.ts +0 -32
- package/dist/lib/sink-format.js +0 -14
- package/dist/lib/smart-launch.d.ts +0 -75
- package/dist/lib/smart-launch.js +1 -83
- package/dist/lib/snapshot.d.ts +0 -46
- package/dist/lib/snapshot.js +5 -31
- package/dist/lib/spinner.d.ts +0 -37
- package/dist/lib/spinner.js +0 -37
- package/dist/lib/sqlite.d.ts +0 -13
- package/dist/lib/sqlite.js +3 -71
- package/dist/lib/ssh-exec.d.ts +0 -209
- package/dist/lib/ssh-exec.js +11 -248
- package/dist/lib/ssh-tunnel.d.ts +0 -43
- package/dist/lib/ssh-tunnel.js +2 -48
- package/dist/lib/staleness/checkers/commands.d.ts +0 -4
- package/dist/lib/staleness/checkers/commands.js +0 -4
- package/dist/lib/staleness/checkers/hooks.d.ts +0 -10
- package/dist/lib/staleness/checkers/hooks.js +0 -15
- package/dist/lib/staleness/checkers/mcp.d.ts +0 -9
- package/dist/lib/staleness/checkers/mcp.js +0 -9
- package/dist/lib/staleness/checkers/permissions.d.ts +0 -12
- package/dist/lib/staleness/checkers/permissions.js +0 -13
- package/dist/lib/staleness/checkers/plugins.d.ts +0 -8
- package/dist/lib/staleness/checkers/plugins.js +0 -8
- package/dist/lib/staleness/checkers/rules.d.ts +0 -15
- package/dist/lib/staleness/checkers/rules.js +0 -26
- package/dist/lib/staleness/checkers/skills.d.ts +0 -4
- package/dist/lib/staleness/checkers/skills.js +0 -4
- package/dist/lib/staleness/checkers/subagents.d.ts +0 -9
- package/dist/lib/staleness/checkers/subagents.js +0 -9
- package/dist/lib/staleness/checkers/types.d.ts +0 -34
- package/dist/lib/staleness/checkers/types.js +0 -19
- package/dist/lib/staleness/checkers/workflows.d.ts +0 -7
- package/dist/lib/staleness/checkers/workflows.js +0 -7
- package/dist/lib/staleness/detectors/commands.js +0 -17
- package/dist/lib/staleness/detectors/hooks.js +1 -6
- package/dist/lib/staleness/detectors/mcp.js +0 -4
- package/dist/lib/staleness/detectors/permissions.js +10 -23
- package/dist/lib/staleness/detectors/rules.js +0 -6
- package/dist/lib/staleness/detectors/skills.d.ts +0 -1
- package/dist/lib/staleness/detectors/skills.js +1 -12
- package/dist/lib/staleness/detectors/types.d.ts +0 -10
- package/dist/lib/staleness/fingerprint.d.ts +0 -19
- package/dist/lib/staleness/fingerprint.js +0 -35
- package/dist/lib/staleness/index.d.ts +0 -28
- package/dist/lib/staleness/index.js +1 -45
- package/dist/lib/staleness/layers.d.ts +0 -23
- package/dist/lib/staleness/layers.js +0 -34
- package/dist/lib/staleness/prune.d.ts +0 -71
- package/dist/lib/staleness/prune.js +2 -27
- package/dist/lib/staleness/registry.d.ts +0 -10
- package/dist/lib/staleness/registry.js +3 -33
- package/dist/lib/staleness/types.d.ts +0 -36
- package/dist/lib/staleness/types.js +0 -5
- package/dist/lib/staleness/writers/commands.js +1 -48
- package/dist/lib/staleness/writers/hooks.js +1 -18
- package/dist/lib/staleness/writers/kinds.d.ts +0 -12
- package/dist/lib/staleness/writers/kinds.js +0 -1
- package/dist/lib/staleness/writers/lazy-map.d.ts +0 -11
- package/dist/lib/staleness/writers/mcp.js +0 -13
- package/dist/lib/staleness/writers/plugins.js +0 -4
- package/dist/lib/staleness/writers/rules.d.ts +0 -1
- package/dist/lib/staleness/writers/rules.js +1 -19
- package/dist/lib/staleness/writers/skills.js +3 -14
- package/dist/lib/staleness/writers/sources.d.ts +0 -11
- package/dist/lib/staleness/writers/sources.js +0 -32
- package/dist/lib/staleness/writers/subagents.js +0 -16
- package/dist/lib/staleness/writers/types.d.ts +0 -58
- package/dist/lib/staleness/writers/workflows.js +1 -1
- package/dist/lib/standalone-tools.d.ts +24 -0
- package/dist/lib/standalone-tools.js +58 -0
- package/dist/lib/star-nudge.d.ts +0 -32
- package/dist/lib/star-nudge.js +2 -36
- package/dist/lib/startup/command-registry.d.ts +0 -45
- package/dist/lib/startup/command-registry.js +1 -46
- package/dist/lib/startup/dev-build.d.ts +0 -9
- package/dist/lib/startup/dev-build.js +1 -42
- package/dist/lib/startup/root-command.d.ts +0 -19
- package/dist/lib/startup/root-command.js +0 -19
- package/dist/lib/startup/spellcheck.d.ts +0 -13
- package/dist/lib/startup/spellcheck.js +0 -13
- package/dist/lib/state.d.ts +0 -376
- package/dist/lib/state.js +19 -737
- package/dist/lib/storage/selection.d.ts +0 -40
- package/dist/lib/storage/selection.js +0 -29
- package/dist/lib/subagents-registry.d.ts +0 -56
- package/dist/lib/subagents-registry.js +0 -99
- package/dist/lib/subagents.d.ts +0 -128
- package/dist/lib/subagents.js +1 -158
- package/dist/lib/summarizer/config.d.ts +0 -37
- package/dist/lib/summarizer/config.js +0 -37
- package/dist/lib/summarizer/pass.d.ts +0 -20
- package/dist/lib/summarizer/pass.js +1 -34
- package/dist/lib/summarizer/summarize.d.ts +1 -49
- package/dist/lib/summarizer/summarize.js +0 -35
- package/dist/lib/sync-passphrase.d.ts +0 -16
- package/dist/lib/sync-passphrase.js +1 -18
- package/dist/lib/sync-status.d.ts +0 -72
- package/dist/lib/sync-status.js +0 -55
- package/dist/lib/sync-umbrella.d.ts +0 -54
- package/dist/lib/sync-umbrella.js +0 -48
- package/dist/lib/system-run-sync.d.ts +0 -5
- package/dist/lib/system-run-sync.js +1 -31
- package/dist/lib/teams/agents.d.ts +1 -444
- package/dist/lib/teams/agents.js +11 -871
- package/dist/lib/teams/api.d.ts +2 -52
- package/dist/lib/teams/api.js +4 -63
- package/dist/lib/teams/debug.d.ts +0 -6
- package/dist/lib/teams/debug.js +0 -6
- package/dist/lib/teams/delivery.d.ts +0 -41
- package/dist/lib/teams/delivery.js +0 -32
- package/dist/lib/teams/file_ops.d.ts +0 -11
- package/dist/lib/teams/file_ops.js +0 -11
- package/dist/lib/teams/forEach.d.ts +0 -76
- package/dist/lib/teams/forEach.js +1 -77
- package/dist/lib/teams/index.d.ts +1 -7
- package/dist/lib/teams/index.js +1 -7
- package/dist/lib/teams/parsers.d.ts +0 -4
- package/dist/lib/teams/parsers.js +0 -81
- package/dist/lib/teams/persistence.d.ts +0 -2
- package/dist/lib/teams/persistence.js +0 -12
- package/dist/lib/teams/placement-probe.d.ts +0 -12
- package/dist/lib/teams/placement-probe.js +1 -51
- package/dist/lib/teams/pr-watch.d.ts +0 -107
- package/dist/lib/teams/pr-watch.js +1 -107
- package/dist/lib/teams/registry.d.ts +0 -36
- package/dist/lib/teams/registry.js +0 -47
- package/dist/lib/teams/remoteWorktree.d.ts +0 -50
- package/dist/lib/teams/remoteWorktree.js +1 -96
- package/dist/lib/teams/scheduler.d.ts +0 -111
- package/dist/lib/teams/scheduler.js +2 -125
- package/dist/lib/teams/summarizer.d.ts +0 -22
- package/dist/lib/teams/summarizer.js +6 -50
- package/dist/lib/teams/supervisor.d.ts +0 -38
- package/dist/lib/teams/supervisor.js +0 -21
- package/dist/lib/teams/worktree.d.ts +0 -95
- package/dist/lib/teams/worktree.js +3 -110
- package/dist/lib/template.d.ts +0 -21
- package/dist/lib/template.js +0 -23
- package/dist/lib/term-client.d.ts +0 -26
- package/dist/lib/term-client.js +0 -48
- package/dist/lib/term-driver.d.ts +0 -5
- package/dist/lib/term-driver.js +0 -8
- package/dist/lib/terminal/backends/ghostty.d.ts +0 -2
- package/dist/lib/terminal/backends/ghostty.js +0 -12
- package/dist/lib/terminal/backends/index.d.ts +0 -17
- package/dist/lib/terminal/backends/index.js +0 -15
- package/dist/lib/terminal/backends/iterm.d.ts +0 -2
- package/dist/lib/terminal/backends/iterm.js +0 -10
- package/dist/lib/terminal/backends/terminal-app.d.ts +0 -10
- package/dist/lib/terminal/backends/terminal-app.js +0 -30
- package/dist/lib/terminal/backends/tmux.d.ts +0 -10
- package/dist/lib/terminal/backends/tmux.js +0 -2
- package/dist/lib/terminal/backends/vscodium-agent.d.ts +0 -25
- package/dist/lib/terminal/backends/vscodium-agent.js +0 -36
- package/dist/lib/terminal/engine.d.ts +0 -17
- package/dist/lib/terminal/engine.js +0 -10
- package/dist/lib/terminal/index.d.ts +0 -8
- package/dist/lib/terminal/inject.d.ts +1 -173
- package/dist/lib/terminal/inject.js +0 -146
- package/dist/lib/terminal/policy.d.ts +0 -8
- package/dist/lib/terminal/policy.js +0 -1
- package/dist/lib/terminal/preferred.d.ts +0 -66
- package/dist/lib/terminal/preferred.js +0 -30
- package/dist/lib/terminal/quote.d.ts +0 -8
- package/dist/lib/terminal/quote.js +0 -8
- package/dist/lib/terminal/resolve.d.ts +0 -46
- package/dist/lib/terminal/resolve.js +0 -30
- package/dist/lib/terminal/run-surface.d.ts +0 -56
- package/dist/lib/terminal/run-surface.js +0 -46
- package/dist/lib/terminal/shell.d.ts +0 -3
- package/dist/lib/terminal/shell.js +0 -13
- package/dist/lib/terminal/transport.d.ts +0 -14
- package/dist/lib/terminal/transport.js +1 -30
- package/dist/lib/terminal/types.d.ts +0 -40
- package/dist/lib/terminal/types.js +0 -10
- package/dist/lib/text/relative-time.d.ts +0 -36
- package/dist/lib/text/relative-time.js +0 -43
- package/dist/lib/text/short-id.d.ts +0 -16
- package/dist/lib/text/short-id.js +0 -16
- package/dist/lib/text/width.d.ts +0 -24
- package/dist/lib/text/width.js +10 -52
- package/dist/lib/tmux/binary.d.ts +0 -36
- package/dist/lib/tmux/binary.js +0 -28
- package/dist/lib/tmux/index.d.ts +0 -5
- package/dist/lib/tmux/index.js +0 -5
- package/dist/lib/tmux/orphan-reap.d.ts +0 -253
- package/dist/lib/tmux/orphan-reap.js +3 -299
- package/dist/lib/tmux/paths.d.ts +0 -14
- package/dist/lib/tmux/paths.js +0 -14
- package/dist/lib/tmux/session.d.ts +0 -263
- package/dist/lib/tmux/session.js +6 -344
- package/dist/lib/traces/backend.d.ts +0 -20
- package/dist/lib/traces/backend.js +0 -23
- package/dist/lib/traces/classify.d.ts +0 -20
- package/dist/lib/traces/classify.js +0 -7
- package/dist/lib/traces/insights.d.ts +1 -84
- package/dist/lib/traces/insights.js +0 -126
- package/dist/lib/traces/phenotype.d.ts +0 -69
- package/dist/lib/traces/phenotype.js +0 -150
- package/dist/lib/traces/provision.d.ts +0 -1
- package/dist/lib/traces/provision.js +0 -5
- package/dist/lib/traces/schema2-build.d.ts +3 -60
- package/dist/lib/traces/schema2-build.js +8 -149
- package/dist/lib/traces/schema2-danger.d.ts +0 -30
- package/dist/lib/traces/schema2-danger.js +1 -63
- package/dist/lib/traces/schema2.d.ts +0 -11
- package/dist/lib/traces/segments.d.ts +0 -44
- package/dist/lib/traces/segments.js +0 -65
- package/dist/lib/traces/sync.d.ts +2 -239
- package/dist/lib/traces/sync.js +15 -237
- package/dist/lib/traces/worker-template.d.ts +0 -3
- package/dist/lib/traces/worker-template.js +0 -29
- package/dist/lib/triggers/handlers.d.ts +0 -82
- package/dist/lib/triggers/handlers.js +0 -75
- package/dist/lib/triggers/webhook.d.ts +0 -158
- package/dist/lib/triggers/webhook.js +0 -143
- package/dist/lib/types.d.ts +0 -736
- package/dist/lib/types.js +0 -50
- package/dist/lib/uninstall.d.ts +0 -17
- package/dist/lib/uninstall.js +0 -75
- package/dist/lib/usage-backoff.d.ts +0 -20
- package/dist/lib/usage-backoff.js +3 -60
- package/dist/lib/usage-refresh.d.ts +0 -154
- package/dist/lib/usage-refresh.js +8 -212
- package/dist/lib/verbs.d.ts +0 -12
- package/dist/lib/verbs.js +0 -12
- package/dist/lib/version-duplicates.d.ts +0 -6
- package/dist/lib/version-duplicates.js +0 -6
- package/dist/lib/version.d.ts +0 -55
- package/dist/lib/version.js +1 -58
- package/dist/lib/view-types.d.ts +0 -48
- package/dist/lib/warn-unpushed.d.ts +0 -27
- package/dist/lib/warn-unpushed.js +1 -45
- package/dist/lib/watchdog/history.d.ts +0 -1
- package/dist/lib/watchdog/history.js +0 -3
- package/dist/lib/watchdog/index.js +0 -2
- package/dist/lib/watchdog/log.d.ts +0 -19
- package/dist/lib/watchdog/log.js +0 -34
- package/dist/lib/watchdog/read.d.ts +0 -27
- package/dist/lib/watchdog/read.js +3 -58
- package/dist/lib/watchdog/rotate.d.ts +0 -139
- package/dist/lib/watchdog/rotate.js +2 -151
- package/dist/lib/watchdog/runner.d.ts +0 -125
- package/dist/lib/watchdog/runner.js +3 -223
- package/dist/lib/watchdog/service.d.ts +0 -1
- package/dist/lib/watchdog/service.js +0 -2
- package/dist/lib/watchdog/watchdog-agent.d.ts +0 -31
- package/dist/lib/watchdog/watchdog-agent.js +0 -27
- package/dist/lib/watchdog/watchdog.d.ts +0 -7
- package/dist/lib/watchdog/watchdog.js +0 -10
- package/dist/lib/watchdog/watchdogTail.js +0 -7
- package/dist/lib/whats-new.d.ts +0 -10
- package/dist/lib/whats-new.js +0 -21
- package/dist/lib/workflows-registry.d.ts +0 -45
- package/dist/lib/workflows-registry.js +0 -60
- package/dist/lib/workflows.d.ts +0 -282
- package/dist/lib/workflows.js +3 -213
- package/dist/lib/worktree/held.d.ts +0 -89
- package/dist/lib/worktree/held.js +1 -103
- package/dist/lib/wrap.d.ts +0 -32
- package/dist/lib/wrap.js +0 -32
- package/dist/lib/yaml-io.d.ts +0 -45
- package/dist/lib/yaml-io.js +0 -47
- package/dist/session-tracker/dist/adapters/claude.js +0 -2
- package/dist/session-tracker/dist/hook.sh +4 -37
- package/dist/session-tracker/dist/index.d.ts +0 -7
- package/dist/session-tracker/dist/index.js +0 -5
- package/dist/session-tracker/dist/install-hook.d.ts +0 -5
- package/dist/session-tracker/dist/install-hook.js +1 -15
- package/dist/session-tracker/dist/prune-state.js +0 -4
- package/dist/session-tracker/dist/reader.js +0 -4
- package/dist/session-tracker/dist/state-file.d.ts +0 -3
- package/dist/session-tracker/dist/state-file.js +3 -8
- package/package.json +3 -4
- package/scripts/postinstall.js +8 -116
- package/dist/lib/session/artifacts.d.ts +0 -14
- package/dist/lib/session/artifacts.js +0 -101
- package/dist/lib/session/bash-command.d.ts +0 -63
- package/dist/lib/session/bash-command.js +0 -490
- package/dist/lib/session/digest.d.ts +0 -66
- package/dist/lib/session/digest.js +0 -328
- package/dist/lib/session/highlights.d.ts +0 -151
- package/dist/lib/session/highlights.js +0 -391
- package/dist/lib/session/insights.d.ts +0 -165
- package/dist/lib/session/insights.js +0 -563
- package/dist/lib/session/linear.d.ts +0 -19
- package/dist/lib/session/linear.js +0 -99
- package/dist/lib/session/parse.d.ts +0 -224
- package/dist/lib/session/parse.js +0 -2408
- package/dist/lib/session/prompt.d.ts +0 -213
- package/dist/lib/session/prompt.js +0 -601
- package/dist/lib/session/render.d.ts +0 -133
- package/dist/lib/session/render.js +0 -1047
- package/dist/lib/session/share-html.d.ts +0 -35
- package/dist/lib/session/share-html.js +0 -319
- package/dist/lib/session/shell-programs.d.ts +0 -33
- package/dist/lib/session/shell-programs.js +0 -380
- package/dist/lib/session/state.d.ts +0 -269
- package/dist/lib/session/state.js +0 -777
- package/dist/lib/session/stream-render.d.ts +0 -4
- package/dist/lib/session/stream-render.js +0 -131
- package/dist/lib/session/tail.d.ts +0 -88
- package/dist/lib/session/tail.js +0 -294
- package/dist/lib/session/team-filter.d.ts +0 -129
- package/dist/lib/session/team-filter.js +0 -269
- package/dist/lib/session/timeline.d.ts +0 -172
- package/dist/lib/session/timeline.js +0 -636
- package/dist/lib/session/tool-calls.d.ts +0 -132
- package/dist/lib/session/tool-calls.js +0 -674
- package/dist/lib/session/trajectory-compare.d.ts +0 -48
- package/dist/lib/session/trajectory-compare.js +0 -116
- package/dist/lib/session/trajectory-html.d.ts +0 -19
- package/dist/lib/session/trajectory-html.js +0 -771
- package/dist/lib/session/trajectory-lineage.d.ts +0 -93
- package/dist/lib/session/trajectory-lineage.js +0 -195
- package/dist/lib/session/trajectory-text.d.ts +0 -38
- package/dist/lib/session/trajectory-text.js +0 -284
- package/dist/lib/session/trajectory.d.ts +0 -145
- package/dist/lib/session/trajectory.js +0 -394
- package/dist/lib/session/types.d.ts +0 -627
- package/dist/lib/session/types.js +0 -43
package/dist/lib/feed/answer.js
CHANGED
|
@@ -1,38 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Deliver one operator answer to one open attention item (PHNX-3999).
|
|
3
|
-
*
|
|
4
|
-
* The AGI Menu abandons a reply at 30s, so every path here is bounded and every
|
|
5
|
-
* outcome is reported from real evidence:
|
|
6
|
-
*
|
|
7
|
-
* - **Match before enrichment.** The requested key names its session, so the
|
|
8
|
-
* candidate set is that session alone and the optional `gh pr view` read
|
|
9
|
-
* runs only for a key whose generation is a PR review. Enriching every
|
|
10
|
-
* active session first spent one 15s-bounded `gh` call per session on a
|
|
11
|
-
* question that never needed one.
|
|
12
|
-
* - **Unknown stays unknown.** Three outcomes are distinct and never merged: a
|
|
13
|
-
* confirmed failure (nothing was sent, the claim is released, retry is safe),
|
|
14
|
-
* an unconfirmed delivery (something may have landed, the claim is KEPT), and
|
|
15
|
-
* a real receipt. A timeout is unconfirmed, never a failure.
|
|
16
|
-
* - **Receipts are read, never synthesized, and never over-read.** `queued`
|
|
17
|
-
* means a rail took the answer and nothing more; only the agent's own
|
|
18
|
-
* `consumed`/`continued` resolves the item; `dropped`/`expired` are failures.
|
|
19
|
-
* - **Replay is de-duplicable or refused.** A claim stranded by a kill is
|
|
20
|
-
* adopted only on the mailbox rail, where the queued message's block id makes
|
|
21
|
-
* re-delivery detectable, and only through a compare-and-swap on the claim so
|
|
22
|
-
* two retries cannot both adopt it. A keystroke or resume rail cannot be
|
|
23
|
-
* replayed safely, so it reports unknown and points at the session.
|
|
24
|
-
* - **Exact tokens across the hop.** A remote answer is quoted with the
|
|
25
|
-
* canonical `shellQuote` and run through the canonical bounded `sshExecAsync`,
|
|
26
|
-
* so newlines and shell metacharacters arrive byte-identical, and the returned
|
|
27
|
-
* receipt is verified to belong to the key that was asked about.
|
|
28
|
-
*
|
|
29
|
-
* - **A claim is not a resolution.** The claim is taken `pending`
|
|
30
|
-
* (`recordAnswer`'s two-phase option): it locks the item against a second
|
|
31
|
-
* surface but leaves the block `open` and writes no tombstone, so the card
|
|
32
|
-
* stays in the operator's feed. Only a real receipt calls
|
|
33
|
-
* `confirmAnswerResolution` and lets the item leave. A delivery that never
|
|
34
|
-
* confirms can no longer make the request silently disappear.
|
|
35
|
-
*/
|
|
36
1
|
import { spawn } from 'node:child_process';
|
|
37
2
|
import { getActiveSessions } from '../session/active.js';
|
|
38
3
|
import { resolveAnswerRoute, resumeArgv } from '../answer-router.js';
|
|
@@ -45,38 +10,13 @@ import { blockGeneration, blockIdForSession, confirmAnswerResolution, getAnswerR
|
|
|
45
10
|
import { reconcileAttention } from './attention.js';
|
|
46
11
|
import { readPullRequestStatus } from './pr-status.js';
|
|
47
12
|
import { getAgentsInvocation } from '../daemon/daemon.js';
|
|
48
|
-
/**
|
|
49
|
-
* Total budget for one answer. Sits below the AGI Menu's 30s abandon so the
|
|
50
|
-
* operator always gets a typed verdict instead of a timeout.
|
|
51
|
-
*/
|
|
52
13
|
export const ANSWER_DEADLINE_MS = 20_000;
|
|
53
|
-
/** Slice of the budget the optional PR-review enrichment may spend. */
|
|
54
14
|
export const PR_ENRICHMENT_BUDGET_MS = 4_000;
|
|
55
|
-
/** Budget for the forwarded leg — the remote repeats the local work under its own deadline. */
|
|
56
15
|
export const REMOTE_ANSWER_TIMEOUT_MS = 25_000;
|
|
57
|
-
/**
|
|
58
|
-
* A claim older than this with no receipt was stranded by a kill, not left in
|
|
59
|
-
* flight: it exceeds a full local deadline plus the remote leg, so no live
|
|
60
|
-
* delivery can still be running behind it.
|
|
61
|
-
*/
|
|
62
16
|
export const STRANDED_CLAIM_MS = 60_000;
|
|
63
|
-
/**
|
|
64
|
-
* How long to watch a `resume` child before giving up on a verdict. A resume
|
|
65
|
-
* runs the agent's whole next turn — minutes — so waiting for exit would blow the
|
|
66
|
-
* operator deadline on every headless answer. Only a clean early exit is booked;
|
|
67
|
-
* a non-zero exit or a still-running child is unknown, because neither proves
|
|
68
|
-
* the agent did or did not accept the prompt.
|
|
69
|
-
*/
|
|
70
17
|
export const RESUME_SETTLE_MS = 2_000;
|
|
71
|
-
/**
|
|
72
|
-
* How long a caller that LOST the claim waits for the holder's receipt before
|
|
73
|
-
* reporting unknown. The holder is mid-delivery — a double-clicked answer is the
|
|
74
|
-
* common case — so a short wait turns "I can't tell" into the real receipt,
|
|
75
|
-
* without ever delivering a second copy.
|
|
76
|
-
*/
|
|
77
18
|
export const HOLDER_RECEIPT_WAIT_MS = 400;
|
|
78
19
|
const HOLDER_RECEIPT_POLL_MS = 20;
|
|
79
|
-
/** A CONFIRMED failure: nothing reached a rail, the claim is released, retry is safe. */
|
|
80
20
|
export class AnswerError extends Error {
|
|
81
21
|
code;
|
|
82
22
|
constructor(message, code) {
|
|
@@ -85,22 +25,12 @@ export class AnswerError extends Error {
|
|
|
85
25
|
this.name = 'AnswerError';
|
|
86
26
|
}
|
|
87
27
|
}
|
|
88
|
-
/**
|
|
89
|
-
* An UNCONFIRMED outcome: something may have been delivered. The claim is kept
|
|
90
|
-
* so a retry cannot double-send, and the operator is offered a delivery check
|
|
91
|
-
* rather than a resend.
|
|
92
|
-
*/
|
|
93
28
|
export class AnswerUnknownError extends Error {
|
|
94
29
|
constructor(message) {
|
|
95
30
|
super(message);
|
|
96
31
|
this.name = 'AnswerUnknownError';
|
|
97
32
|
}
|
|
98
33
|
}
|
|
99
|
-
/**
|
|
100
|
-
* Split `<host>/<session>/<generation>` (attention.ts `attentionKey`). Fails
|
|
101
|
-
* loud on a malformed key: the old `slice(0, indexOf('/'))` returned a truncated
|
|
102
|
-
* host for a key with no separator, which then routed the answer at random.
|
|
103
|
-
*/
|
|
104
34
|
export function parseAttentionKey(key) {
|
|
105
35
|
const first = key.indexOf('/');
|
|
106
36
|
const last = key.lastIndexOf('/');
|
|
@@ -109,28 +39,12 @@ export function parseAttentionKey(key) {
|
|
|
109
39
|
}
|
|
110
40
|
return { host: key.slice(0, first), sessionId: key.slice(first + 1, last), generation: key.slice(last + 1) };
|
|
111
41
|
}
|
|
112
|
-
/**
|
|
113
|
-
* Whether THIS machine owns the item. The exact local/remote choice: the key's
|
|
114
|
-
* host is compared through the same {@link normalizeHost} the machine id is
|
|
115
|
-
* minted with, so `Yosemite-M4.local` and `yosemite-m4` are one machine.
|
|
116
|
-
*/
|
|
117
42
|
export function answerOwnerIsLocal(host, self = machineId()) {
|
|
118
43
|
return normalizeHost(host) === normalizeHost(self);
|
|
119
44
|
}
|
|
120
|
-
/** A PR-review generation (`pr<number>:<decision>`) — the only kind a `gh` read can produce. */
|
|
121
45
|
function isPullRequestGeneration(generation) {
|
|
122
46
|
return /^pr\d+:/.test(generation);
|
|
123
47
|
}
|
|
124
|
-
// --- receipt semantics ------------------------------------------------------
|
|
125
|
-
/**
|
|
126
|
-
* What a stored receipt proves. The lifecycle vocabulary is fixed by
|
|
127
|
-
* `MessageReceipt`, and each member means exactly one thing here:
|
|
128
|
-
* queued — a rail took the answer. Delivery, never resolution.
|
|
129
|
-
* consumed/continued— the agent itself acknowledged it. This resolves the item.
|
|
130
|
-
* dropped/expired — terminal failure; it is the newest truth for its message
|
|
131
|
-
* (the write rank puts it top precisely so it cannot be
|
|
132
|
-
* regressed), which is exactly why it must not read as success.
|
|
133
|
-
*/
|
|
134
48
|
export function classifyReceipt(receipt) {
|
|
135
49
|
if (receipt.status === 'consumed' || receipt.status === 'continued')
|
|
136
50
|
return { delivery: 'receipt', resolved: true };
|
|
@@ -140,11 +54,6 @@ export function classifyReceipt(receipt) {
|
|
|
140
54
|
}
|
|
141
55
|
function startDeadline(totalMs) { return { endMs: Date.now() + totalMs }; }
|
|
142
56
|
function remainingMs(deadline) { return deadline.endMs - Date.now(); }
|
|
143
|
-
/**
|
|
144
|
-
* Bound one delivery await. Expiry is UNKNOWN, not failure: the rail's own child
|
|
145
|
-
* may still land the answer, so the claim stays and the operator is sent to a
|
|
146
|
-
* delivery check.
|
|
147
|
-
*/
|
|
148
57
|
async function withinDeadline(work, deadline, what) {
|
|
149
58
|
const budget = remainingMs(deadline);
|
|
150
59
|
if (budget <= 0)
|
|
@@ -164,7 +73,6 @@ async function withinDeadline(work, deadline, what) {
|
|
|
164
73
|
clearTimeout(timer);
|
|
165
74
|
}
|
|
166
75
|
}
|
|
167
|
-
// --- resolution -------------------------------------------------------------
|
|
168
76
|
function blockFromAttention(attention, session) {
|
|
169
77
|
return {
|
|
170
78
|
blockId: blockIdForSession(attention.sessionId), sessionId: attention.sessionId,
|
|
@@ -173,18 +81,10 @@ function blockFromAttention(attention, session) {
|
|
|
173
81
|
state: 'open', sourceCursor: attention.sourceCursor, project: attention.project,
|
|
174
82
|
ts: attention.openedAt, questions: [attention.question ?? { text: 'Continue from this attention item.' }],
|
|
175
83
|
kind: attention.kind === 'permission' ? 'notification' : attention.kind === 'declared' ? 'declared' : attention.source === 'system' ? 'control' : 'question',
|
|
176
|
-
// A notification block is a permission only by its recorded subtype
|
|
177
|
-
// (attention.ts kindFromNotification), so the reconstructed block must carry
|
|
178
|
-
// it or a re-read classifies the same item as unverified.
|
|
179
84
|
...(attention.kind === 'permission' ? { notificationType: 'permission_prompt' } : {}),
|
|
180
85
|
safeDefault: attention.safeDefault,
|
|
181
86
|
};
|
|
182
87
|
}
|
|
183
|
-
/**
|
|
184
|
-
* Reconcile one session against the requested key. `pullRequest` is passed only
|
|
185
|
-
* on the enrichment pass — `reconcileAttention` consults it last
|
|
186
|
-
* (`attentionFromPullRequest`), so a block- or session-derived match never needed it.
|
|
187
|
-
*/
|
|
188
88
|
function matchSession(session, key, attentionKey, root, pullRequest) {
|
|
189
89
|
const projected = { ...session, host: key.host };
|
|
190
90
|
const blockId = blockIdForSession(session.sessionId);
|
|
@@ -195,8 +95,6 @@ function matchSession(session, key, attentionKey, root, pullRequest) {
|
|
|
195
95
|
});
|
|
196
96
|
if (attention?.key === attentionKey) {
|
|
197
97
|
if (attention.kind === 'unverified') {
|
|
198
|
-
// No confirmed prompt to land a reply in: an answer typed into the session
|
|
199
|
-
// could hit an empty prompt line or a different dialog (PHNX-3999).
|
|
200
98
|
throw new AnswerError(`'${attentionKey}' could not be verified as a pending request — open the session and answer it there.`, 'unverified');
|
|
201
99
|
}
|
|
202
100
|
if (block)
|
|
@@ -205,9 +103,6 @@ function matchSession(session, key, attentionKey, root, pullRequest) {
|
|
|
205
103
|
publishBlock(reconstructed, root);
|
|
206
104
|
return { hit: { block: reconstructed, attention, session } };
|
|
207
105
|
}
|
|
208
|
-
// The winning caller advances the block to answered before a concurrent loser
|
|
209
|
-
// resolves it. Reconstruct only this block's original generation so the loser
|
|
210
|
-
// reaches the claim check and reports the real outcome, without routing again.
|
|
211
106
|
if (block && getAnswerRecord(blockId, root)) {
|
|
212
107
|
const original = reconcileAttention({
|
|
213
108
|
block: { ...block, state: 'open', answer: undefined }, session: projected, nowMs: Date.now(),
|
|
@@ -218,8 +113,6 @@ function matchSession(session, key, attentionKey, root, pullRequest) {
|
|
|
218
113
|
return { observed: attention };
|
|
219
114
|
}
|
|
220
115
|
async function resolveTarget(key, attentionKey, sessions, deadline, root) {
|
|
221
|
-
// The key names its session, so only that session can produce it. Narrowing
|
|
222
|
-
// here is also what keeps an answer off an unrelated operator's pending item.
|
|
223
116
|
const candidates = sessions.filter((session) => session.sessionId && session.sessionId === key.sessionId);
|
|
224
117
|
if (candidates.length === 0) {
|
|
225
118
|
throw new AnswerError(`No live session '${key.sessionId}' here to answer '${attentionKey}'.`, 'no_session');
|
|
@@ -231,8 +124,6 @@ async function resolveTarget(key, attentionKey, sessions, deadline, root) {
|
|
|
231
124
|
return outcome.hit;
|
|
232
125
|
observed ??= outcome.observed;
|
|
233
126
|
}
|
|
234
|
-
// Enrichment pass — only a review key can come from a PR read, and only the
|
|
235
|
-
// named session is fetched, under whatever budget is left.
|
|
236
127
|
if (isPullRequestGeneration(key.generation)) {
|
|
237
128
|
for (const session of candidates) {
|
|
238
129
|
const budget = Math.min(PR_ENRICHMENT_BUDGET_MS, remainingMs(deadline));
|
|
@@ -247,30 +138,16 @@ async function resolveTarget(key, attentionKey, sessions, deadline, root) {
|
|
|
247
138
|
observed ??= outcome.observed;
|
|
248
139
|
}
|
|
249
140
|
}
|
|
250
|
-
// The session is live but has moved on — a different generation, or none. That
|
|
251
|
-
// is a STALE request, not a missing one: the operator answered yesterday's card.
|
|
252
141
|
throw new AnswerError(observed
|
|
253
142
|
? `'${attentionKey}' is no longer the open request for '${key.sessionId}' — it is now '${observed.key}'.`
|
|
254
143
|
: `'${attentionKey}' is no longer open — session '${key.sessionId}' has no pending request.`, 'stale');
|
|
255
144
|
}
|
|
256
|
-
/**
|
|
257
|
-
* Take over a claim a kill stranded, atomically.
|
|
258
|
-
*
|
|
259
|
-
* `rollbackAnswerClaim` compares `answeredAt` before releasing, so it IS the
|
|
260
|
-
* compare-and-swap: exactly one racer can release this exact claim, and it
|
|
261
|
-
* re-takes it immediately under `recordAnswer`'s `O_EXCL`. A racer that loses
|
|
262
|
-
* either the release or the re-take finds a live marker and reports
|
|
263
|
-
* `already_answered` instead of delivering a second copy.
|
|
264
|
-
*/
|
|
265
145
|
function adoptStrandedClaim(block, stranded, operator, verified, root) {
|
|
266
146
|
let released;
|
|
267
147
|
try {
|
|
268
148
|
released = rollbackAnswerClaim(block.blockId, stranded.answeredAt, { ...block, state: 'open', answer: undefined }, undefined, root);
|
|
269
149
|
}
|
|
270
150
|
catch {
|
|
271
|
-
// The release is a read-compare-then-unlink, so a racing adopter that got
|
|
272
|
-
// there first leaves this one unlinking a marker that is already gone. That
|
|
273
|
-
// is losing the race, not an error — fall through and let the loser report.
|
|
274
151
|
return undefined;
|
|
275
152
|
}
|
|
276
153
|
if (!released)
|
|
@@ -282,10 +159,6 @@ function adoptStrandedClaim(block, stranded, operator, verified, root) {
|
|
|
282
159
|
return undefined;
|
|
283
160
|
return getAnswerRecord(block.blockId, root);
|
|
284
161
|
}
|
|
285
|
-
/**
|
|
286
|
-
* Wait briefly for the claim holder to record its receipt. Read-only — it polls
|
|
287
|
-
* the block's own receipt list and never claims, routes or resends.
|
|
288
|
-
*/
|
|
289
162
|
async function awaitHolderReceipt(blockId, waitMs, origin, root) {
|
|
290
163
|
const until = Date.now() + waitMs;
|
|
291
164
|
for (;;) {
|
|
@@ -313,17 +186,7 @@ function heldClaimResult(block, attentionKey, host, existing, receipt) {
|
|
|
313
186
|
...base,
|
|
314
187
|
};
|
|
315
188
|
}
|
|
316
|
-
/**
|
|
317
|
-
* Take the claim, or reconcile the one already on disk against the block's real
|
|
318
|
-
* receipts. A stranded claim is adopted only when `replayable` — the mailbox rail,
|
|
319
|
-
* where the queued message's block id makes a second enqueue detectable. A
|
|
320
|
-
* keystroke or resume rail may already have landed before the kill and cannot be
|
|
321
|
-
* de-duplicated, so it stays unknown.
|
|
322
|
-
*/
|
|
323
189
|
async function claimOrReconcile(block, attentionKey, host, operator, verified, replayable, generation, nowMs, deadline, root) {
|
|
324
|
-
// PENDING: claimed, not resolved. The card stays in the operator's feed until
|
|
325
|
-
// a rail reports a receipt, so a claim whose delivery never lands cannot make
|
|
326
|
-
// the request silently disappear.
|
|
327
190
|
const claim = recordAnswer(block.blockId, {
|
|
328
191
|
answeredBy: operator.label, answeredFrom: 'feed', operatorId: operator.id, verified,
|
|
329
192
|
}, root, { pending: true });
|
|
@@ -336,21 +199,14 @@ async function claimOrReconcile(block, attentionKey, host, operator, verified, r
|
|
|
336
199
|
if ('unauthorized' in claim)
|
|
337
200
|
throw new AnswerError(claim.reason, 'unauthorized');
|
|
338
201
|
const existing = getAnswerRecord(block.blockId, root) ?? claim.existing;
|
|
339
|
-
// Scope every receipt read to THIS ask and THIS attempt, so a leftover receipt
|
|
340
|
-
// from an earlier question on the same session cannot answer for this one.
|
|
341
202
|
const origin = { generation, attempt: existing.answeredAt };
|
|
342
203
|
const claimedAtMs = Date.parse(existing.answeredAt);
|
|
343
204
|
const stranded = Number.isFinite(claimedAtMs) && nowMs - claimedAtMs >= STRANDED_CLAIM_MS;
|
|
344
|
-
// A fresh claim with no receipt is a delivery IN FLIGHT (the double-clicked
|
|
345
|
-
// answer), so give the holder a moment to record it rather than reporting a
|
|
346
|
-
// scary unknown for what is about to be a receipt.
|
|
347
205
|
const receipt = stranded
|
|
348
206
|
? latestMessageReceipt(block.blockId, root, origin)
|
|
349
207
|
: await awaitHolderReceipt(block.blockId, Math.max(0, Math.min(HOLDER_RECEIPT_WAIT_MS, remainingMs(deadline))), origin, root);
|
|
350
208
|
if (receipt)
|
|
351
209
|
return { adopted: false, lost: heldClaimResult(block, attentionKey, host, existing, receipt) };
|
|
352
|
-
// No receipt and the claim predates any possible live delivery: a kill cut it
|
|
353
|
-
// between the claim and the receipt.
|
|
354
210
|
if (stranded && replayable) {
|
|
355
211
|
const adopted = adoptStrandedClaim(block, existing, operator, verified, root);
|
|
356
212
|
if (adopted)
|
|
@@ -358,23 +214,11 @@ async function claimOrReconcile(block, attentionKey, host, operator, verified, r
|
|
|
358
214
|
}
|
|
359
215
|
return { adopted: false, lost: heldClaimResult(block, attentionKey, host, existing, undefined) };
|
|
360
216
|
}
|
|
361
|
-
/** A multiline free-text answer needs a rail that inserts rather than submits per line. */
|
|
362
217
|
function isMultilineFreeText(route, answer) {
|
|
363
218
|
return (route.payload ?? '') === answer && answer.includes('\n');
|
|
364
219
|
}
|
|
365
220
|
async function deliverMailbox(block, answer, operator, adopted, origin, mailboxRoot) {
|
|
366
221
|
const dir = mailboxDir(block.mailboxId, mailboxRoot);
|
|
367
|
-
// An adopted claim may already have enqueued before it was killed. The whole
|
|
368
|
-
// spool is scanned — inbox, processing AND consumed (`readBox`, not `peek`) —
|
|
369
|
-
// because a kill AFTER the agent drained the message would otherwise look
|
|
370
|
-
// like nothing was ever sent and enqueue the answer a second time.
|
|
371
|
-
//
|
|
372
|
-
// The match is on the ASK (block id + generation), not just the block id: a
|
|
373
|
-
// block id is per SESSION, so an already-consumed message answering question N
|
|
374
|
-
// would otherwise suppress a genuine delivery for question N+1. It is NOT keyed
|
|
375
|
-
// on the attempt: adopting a stranded claim necessarily mints a NEW attempt, so
|
|
376
|
-
// requiring an attempt match would never find the message the killed run queued
|
|
377
|
-
// and would duplicate the answer.
|
|
378
222
|
const existing = adopted
|
|
379
223
|
? readBox(dir).find((msg) => msg.blockId === block.blockId && msg.generation === origin.generation)
|
|
380
224
|
: undefined;
|
|
@@ -387,17 +231,6 @@ async function deliverMailbox(block, answer, operator, adopted, origin, mailboxR
|
|
|
387
231
|
...(existing ? { reason: 'Re-used the message a stranded claim had already enqueued.' } : {}),
|
|
388
232
|
};
|
|
389
233
|
}
|
|
390
|
-
/**
|
|
391
|
-
* Re-enter a headless agent with the answer as its next user turn.
|
|
392
|
-
*
|
|
393
|
-
* Nothing here can prove non-delivery. A non-zero exit does NOT mean the prompt
|
|
394
|
-
* never ran — the agent may have acted on it and then crashed — and a process
|
|
395
|
-
* still running is not evidence the prompt was accepted either. Both are
|
|
396
|
-
* therefore UNKNOWN, which keeps the claim and sends the operator to a delivery
|
|
397
|
-
* check instead of a resend. Only a clean exit is booked, as `queued`: the
|
|
398
|
-
* resume command completed, which is the rail taking the answer — not the agent
|
|
399
|
-
* acknowledging it, which is what `consumed`/`continued` mean.
|
|
400
|
-
*/
|
|
401
234
|
async function deliverResume(route, block, claimedAt, operator, attentionKey, deadline, origin) {
|
|
402
235
|
const invocation = getAgentsInvocation(resumeArgv(route));
|
|
403
236
|
const settleMs = Math.max(0, Math.min(RESUME_SETTLE_MS, remainingMs(deadline)));
|
|
@@ -413,7 +246,6 @@ async function deliverResume(route, block, claimedAt, operator, attentionKey, de
|
|
|
413
246
|
child.once('error', () => { clearTimeout(timer); resolve(1); });
|
|
414
247
|
child.once('close', (code) => { clearTimeout(timer); resolve(code ?? 1); });
|
|
415
248
|
});
|
|
416
|
-
// Detach either way — the agent's turn outlives the operator's deadline.
|
|
417
249
|
child.stderr?.destroy();
|
|
418
250
|
child.unref();
|
|
419
251
|
if (exit !== undefined && exit !== 0) {
|
|
@@ -424,29 +256,12 @@ async function deliverResume(route, block, claimedAt, operator, attentionKey, de
|
|
|
424
256
|
}
|
|
425
257
|
return { receipt: { msgId: `resume-${block.blockId}-${claimedAt}`, status: 'queued', at: new Date().toISOString(), from: operator.label, ...origin } };
|
|
426
258
|
}
|
|
427
|
-
/**
|
|
428
|
-
* Drive a keystroke rail.
|
|
429
|
-
*
|
|
430
|
-
* A failure here is UNKNOWN, not a confirmed failure: the tmux/iTerm path writes
|
|
431
|
-
* the text and its Enter as two separate sends (terminal/inject.ts, the Ink-safe
|
|
432
|
-
* split), so a reported error can mean the text already landed in the composer
|
|
433
|
-
* and only the submit failed. Every check that can prove nothing was sent —
|
|
434
|
-
* rail completeness, paste capability — runs BEFORE the claim instead.
|
|
435
|
-
*/
|
|
436
259
|
async function deliverInject(route, block, answer, claimedAt, operator, origin, deadline) {
|
|
437
|
-
// The rail gets the remaining budget, so it cancels its own process group and
|
|
438
|
-
// never starts a write the deadline can no longer cover.
|
|
439
260
|
const delivered = await injectIntoTerminal(route.inject, route.payload, {
|
|
440
261
|
enter: route.enter ?? true, combined: false, deadlineMs: Math.max(0, remainingMs(deadline)),
|
|
441
262
|
...(isMultilineFreeText(route, answer) ? { paste: true } : {}),
|
|
442
263
|
});
|
|
443
264
|
if (!delivered.ok) {
|
|
444
|
-
// `writes === 0` means no write was even issued, so nothing landed and the
|
|
445
|
-
// item is cleanly retryable. Anything past the first write is ambiguous: the
|
|
446
|
-
// text may sit in the composer with only its submit missing.
|
|
447
|
-
// `started === 0` is the ONLY proof nothing reached the terminal. A spec that
|
|
448
|
-
// was started and then failed or timed out may have written bytes first, so
|
|
449
|
-
// `writes` (which counts COMPLETED specs) cannot license a retry.
|
|
450
265
|
if (delivered.started === 0) {
|
|
451
266
|
throw new AnswerError(`${delivered.error ?? `Failed to deliver over ${route.kind}`} — no keystroke was sent.`, 'rail_failed');
|
|
452
267
|
}
|
|
@@ -457,11 +272,6 @@ async function deliverInject(route, block, answer, claimedAt, operator, origin,
|
|
|
457
272
|
}
|
|
458
273
|
return { receipt: { msgId: `inject-${block.blockId}-${claimedAt}`, status: 'queued', at: new Date().toISOString(), from: operator.label, ...origin } };
|
|
459
274
|
}
|
|
460
|
-
/**
|
|
461
|
-
* Everything provable BEFORE a claim is taken. Each of these means nothing was
|
|
462
|
-
* sent, so raising here keeps the item cleanly retryable instead of parking it
|
|
463
|
-
* in an unknown state.
|
|
464
|
-
*/
|
|
465
275
|
function preflightRoute(route, answer, attentionKey) {
|
|
466
276
|
if (route.kind === 'refuse')
|
|
467
277
|
throw new AnswerError(route.reason, 'refused');
|
|
@@ -473,29 +283,16 @@ function preflightRoute(route, answer, attentionKey) {
|
|
|
473
283
|
throw new AnswerError(`A multiline answer cannot be typed into the ${route.inject.backend} rail for '${attentionKey}' — only tmux carries bracketed paste. Open the session and paste it there.`, 'refused');
|
|
474
284
|
}
|
|
475
285
|
}
|
|
476
|
-
// --- entry points -----------------------------------------------------------
|
|
477
|
-
/**
|
|
478
|
-
* Read-only reconciliation of an attention item's delivery state — what powers
|
|
479
|
-
* "Check delivery" on an unconfirmed answer. It NEVER claims, routes, adopts or
|
|
480
|
-
* resends; it reports the stored claim and the block's real receipt so an
|
|
481
|
-
* operator can tell "still unconfirmed" from "the agent has it".
|
|
482
|
-
*/
|
|
483
286
|
export function checkAnswerDelivery(attentionKey, feedRoot, expectedAttempt) {
|
|
484
287
|
const key = parseAttentionKey(attentionKey);
|
|
485
288
|
const blockId = blockIdForSession(key.sessionId);
|
|
486
289
|
const base = { attentionKey, blockId, host: key.host };
|
|
487
290
|
const claim = getAnswerRecord(blockId, feedRoot);
|
|
488
|
-
// Scoped to the requested ask AND the attempt being checked, so a receipt left
|
|
489
|
-
// by a different question or a superseded attempt is never read as this one's.
|
|
490
291
|
const receipt = claim
|
|
491
292
|
? latestMessageReceipt(blockId, feedRoot, {
|
|
492
293
|
generation: key.generation, attempt: expectedAttempt ?? claim.answeredAt,
|
|
493
294
|
})
|
|
494
295
|
: undefined;
|
|
495
|
-
// A block id is per SESSION, so its claim and receipts belong to whatever
|
|
496
|
-
// generation the session is on NOW. Checking an older card against them would
|
|
497
|
-
// report the NEXT question's receipt as this question's answer, which is the
|
|
498
|
-
// one way a read-only check can still lie.
|
|
499
296
|
const block = readBlock(blockId, feedRoot);
|
|
500
297
|
const resolution = readResolution(blockId, feedRoot);
|
|
501
298
|
const liveGeneration = block ? blockGeneration(block) : resolution?.generation;
|
|
@@ -506,8 +303,6 @@ export function checkAnswerDelivery(attentionKey, feedRoot, expectedAttempt) {
|
|
|
506
303
|
...base,
|
|
507
304
|
};
|
|
508
305
|
}
|
|
509
|
-
// An attempt the caller did not ask about is a DIFFERENT delivery — say so
|
|
510
|
-
// rather than answering about someone else's.
|
|
511
306
|
if (expectedAttempt !== undefined && claim && claim.answeredAt !== expectedAttempt) {
|
|
512
307
|
return {
|
|
513
308
|
status: 'unknown', delivery: 'unconfirmed', resolved: false,
|
|
@@ -532,15 +327,12 @@ export function checkAnswerDelivery(attentionKey, feedRoot, expectedAttempt) {
|
|
|
532
327
|
...base, attempt: claim.answeredAt,
|
|
533
328
|
};
|
|
534
329
|
}
|
|
535
|
-
// No claim at all is the one state that IS a confirmed non-delivery: nothing
|
|
536
|
-
// ever took the item, so the operator can safely answer it again.
|
|
537
330
|
return {
|
|
538
331
|
status: 'failed', delivery: 'failed', resolved: false, code: 'rail_failed',
|
|
539
332
|
reason: `No answer has been claimed for '${attentionKey}'.`,
|
|
540
333
|
...base,
|
|
541
334
|
};
|
|
542
335
|
}
|
|
543
|
-
/** Atomically claim the first answer, then route it over the session's recorded reply rail. */
|
|
544
336
|
export async function claimAndRouteAttentionAnswer(input) {
|
|
545
337
|
if ((input.choiceId == null) === (input.text == null)) {
|
|
546
338
|
throw new AnswerError('Exactly one of choiceId or text is required.', 'empty_answer');
|
|
@@ -556,8 +348,6 @@ export async function claimAndRouteAttentionAnswer(input) {
|
|
|
556
348
|
const answer = input.text ?? choice?.deliveryKey ?? choice?.label;
|
|
557
349
|
if (!answer)
|
|
558
350
|
throw new AnswerError('Answer is empty.', 'empty_answer');
|
|
559
|
-
// The route is pure, so it is resolved BEFORE the claim: a refusal or an
|
|
560
|
-
// incapable rail then fails with nothing claimed and nothing delivered.
|
|
561
351
|
const route = resolveAnswerRoute({ mailboxId: block.mailboxId, answer, block, session });
|
|
562
352
|
preflightRoute(route, answer, input.attentionKey);
|
|
563
353
|
const verified = input.operator.verified && verifyOperatorIdentity(input.operator.id);
|
|
@@ -566,12 +356,8 @@ export async function claimAndRouteAttentionAnswer(input) {
|
|
|
566
356
|
if (outcome.lost)
|
|
567
357
|
return outcome.lost;
|
|
568
358
|
const claim = outcome.claim;
|
|
569
|
-
// Every receipt this delivery writes names the ask and the attempt it belongs
|
|
570
|
-
// to, so a late acknowledgement can never be read against a different question.
|
|
571
359
|
const origin = { generation: key.generation, attempt: claim.answeredAt };
|
|
572
360
|
const base = { attentionKey: input.attentionKey, blockId: block.blockId, host: key.host, attempt: claim.answeredAt };
|
|
573
|
-
// An adopted claim was created by the killed run, so releasing it means
|
|
574
|
-
// restoring the pre-claim OPEN state, not the tombstone that claim wrote.
|
|
575
361
|
const restoreBlock = outcome.adopted ? { ...block, state: 'open', answer: undefined } : block;
|
|
576
362
|
const restoreResolution = outcome.adopted ? undefined : previousResolution;
|
|
577
363
|
let delivered;
|
|
@@ -583,10 +369,6 @@ export async function claimAndRouteAttentionAnswer(input) {
|
|
|
583
369
|
: deliverInject(route, block, answer, claim.answeredAt, input.operator, origin, deadline), deadline, `Delivering '${input.attentionKey}' over ${route.kind}`);
|
|
584
370
|
}
|
|
585
371
|
catch (error) {
|
|
586
|
-
// Only a CONFIRMED failure releases the claim. Past this point the code is
|
|
587
|
-
// inside a rail that may already have written bytes, so anything unexpected
|
|
588
|
-
// is UNKNOWN too — keeping the claim is what stops a retry double-sending
|
|
589
|
-
// behind a delivery that may have landed.
|
|
590
372
|
if (error instanceof AnswerError) {
|
|
591
373
|
rollbackAnswerClaim(block.blockId, claim.answeredAt, restoreBlock, restoreResolution, input.feedRoot);
|
|
592
374
|
throw error;
|
|
@@ -597,12 +379,6 @@ export async function claimAndRouteAttentionAnswer(input) {
|
|
|
597
379
|
const { delivery, resolved } = classifyReceipt(delivered.receipt);
|
|
598
380
|
try {
|
|
599
381
|
recordMessageReceipt(block.blockId, delivered.receipt, input.feedRoot);
|
|
600
|
-
// Only the AGENT's own acknowledgement resolves the item. A `queued` receipt
|
|
601
|
-
// says a rail took the answer and nothing more, so the card stays up until
|
|
602
|
-
// the mailbox drain records `consumed` (which promotes it through
|
|
603
|
-
// `recordMessageReceipt`) or the transcript moves past the block. The
|
|
604
|
-
// generation + attempt binding stops a slow delivery from resolving the ask
|
|
605
|
-
// the agent has since moved on to.
|
|
606
382
|
if (resolved) {
|
|
607
383
|
confirmAnswerResolution(block.blockId, input.feedRoot, {
|
|
608
384
|
generation: key.generation, answeredAt: claim.answeredAt,
|
|
@@ -610,8 +386,6 @@ export async function claimAndRouteAttentionAnswer(input) {
|
|
|
610
386
|
}
|
|
611
387
|
}
|
|
612
388
|
catch (error) {
|
|
613
|
-
// The answer IS on the rail; only the bookkeeping failed. Reporting a
|
|
614
|
-
// failure here would invite a resend of something already delivered.
|
|
615
389
|
return {
|
|
616
390
|
status: 'unknown', delivery: 'unconfirmed', resolved: false,
|
|
617
391
|
reason: `Delivered over ${route.kind}, but the receipt could not be recorded: ${error instanceof Error ? error.message : String(error)}.`,
|
|
@@ -624,10 +398,6 @@ export async function claimAndRouteAttentionAnswer(input) {
|
|
|
624
398
|
...base,
|
|
625
399
|
};
|
|
626
400
|
}
|
|
627
|
-
/**
|
|
628
|
-
* The remote `agents feed answer` argv for a forwarded answer. Exported so the
|
|
629
|
-
* exact tokens that cross the hop are asserted directly.
|
|
630
|
-
*/
|
|
631
401
|
export function remoteAnswerArgv(input) {
|
|
632
402
|
const argv = ['agents', 'feed', 'answer', input.attentionKey, '--json'];
|
|
633
403
|
if (input.check)
|
|
@@ -642,21 +412,6 @@ export function remoteAnswerArgv(input) {
|
|
|
642
412
|
argv.push('--as', input.operatorId);
|
|
643
413
|
return argv;
|
|
644
414
|
}
|
|
645
|
-
/**
|
|
646
|
-
* Forward a fleet attention answer to the device that owns its scope.
|
|
647
|
-
*
|
|
648
|
-
* Every token is POSIX-quoted with the canonical {@link shellQuote} before the
|
|
649
|
-
* remote login shell parses it, so a multiline answer or one carrying `$`, `"`,
|
|
650
|
-
* `` ` ``, `;` or a newline arrives byte-identical. The transport is the
|
|
651
|
-
* canonical bounded {@link sshExecAsync} — it disables ControlMaster whenever a
|
|
652
|
-
* timeout is set, so the bound actually tears the remote command down instead of
|
|
653
|
-
* orphaning it behind a control socket.
|
|
654
|
-
*
|
|
655
|
-
* A timeout is reported UNKNOWN: the remote may well have delivered before the
|
|
656
|
-
* link was cut, so the operator is offered a delivery check, never an implicit
|
|
657
|
-
* resend. The returned receipt is verified to be about the key that was asked
|
|
658
|
-
* for, so a mismatched or truncated remote reply cannot be trusted as one.
|
|
659
|
-
*/
|
|
660
415
|
export async function forwardFeedAnswer(input) {
|
|
661
416
|
const timeoutMs = input.timeoutMs ?? REMOTE_ANSWER_TIMEOUT_MS;
|
|
662
417
|
const remoteCmd = remoteAnswerArgv(input).map(shellQuote).join(' ');
|
|
@@ -665,10 +420,6 @@ export async function forwardFeedAnswer(input) {
|
|
|
665
420
|
reason: `${reason} Check delivery rather than resending.`,
|
|
666
421
|
attentionKey: input.attentionKey, host: input.host,
|
|
667
422
|
});
|
|
668
|
-
// The caller enforces the bound, not the transport. `sshExecAsync` resolves on
|
|
669
|
-
// the child's `close`, which a remote peer still holding the pipe can delay
|
|
670
|
-
// past the kill it already issued — so the operator's verdict is raced against
|
|
671
|
-
// the deadline directly and returns on time regardless.
|
|
672
423
|
const settled = await Promise.race([
|
|
673
424
|
sshExecAsync(input.host, remoteCmd, { timeoutMs }).then((value) => ({ value })),
|
|
674
425
|
new Promise((resolve) => {
|
|
@@ -680,13 +431,6 @@ export async function forwardFeedAnswer(input) {
|
|
|
680
431
|
if (!result || result.timedOut) {
|
|
681
432
|
return unknown(`Answering on '${input.host}' did not finish in ${timeoutMs}ms — it may already have been delivered.`);
|
|
682
433
|
}
|
|
683
|
-
// Once ssh has been handed the command there is NO way to prove the remote did
|
|
684
|
-
// not run it. Exit 255 covers both "could not connect" and "connection dropped
|
|
685
|
-
// after the answer was delivered", and a dropped link can lose stdout, so even
|
|
686
|
-
// an echoed start marker is not proof of its own absence. Every post-dispatch
|
|
687
|
-
// remote outcome is therefore UNKNOWN — the operator gets "check delivery",
|
|
688
|
-
// never a retry that could double-send. (A locally-detectable fault, such as an
|
|
689
|
-
// invalid ssh target, throws from `sshExecAsync` before anything is dispatched.)
|
|
690
434
|
if (result.code === SSH_CONN_FAILURE_CODE) {
|
|
691
435
|
return unknown(`ssh to '${input.host}' failed (exit 255)${result.stderr.trim() ? `: ${result.stderr.trim()}` : ''}; whether the answer ran there is unknown.`);
|
|
692
436
|
}
|
|
@@ -709,11 +453,6 @@ export async function forwardFeedAnswer(input) {
|
|
|
709
453
|
const ANSWER_STATUSES = ['delivered', 'already_answered', 'unknown', 'failed'];
|
|
710
454
|
const ANSWER_DELIVERIES = ['receipt', 'unconfirmed', 'failed'];
|
|
711
455
|
const RECEIPT_STATUSES = ['queued', 'consumed', 'continued', 'dropped', 'expired'];
|
|
712
|
-
/**
|
|
713
|
-
* Validate a forwarded result as a whole, not just its key: an off-key, truncated
|
|
714
|
-
* or shape-invalid reply is not evidence about THIS request, and a caller that
|
|
715
|
-
* trusted one would report another item's outcome as this one's.
|
|
716
|
-
*/
|
|
717
456
|
function remoteResultProblem(parsed, attentionKey, requestedAttempt) {
|
|
718
457
|
if (parsed?.attentionKey !== attentionKey) {
|
|
719
458
|
return `reported '${parsed?.attentionKey ?? 'no key'}', not '${attentionKey}'`;
|
|
@@ -727,8 +466,6 @@ function remoteResultProblem(parsed, attentionKey, requestedAttempt) {
|
|
|
727
466
|
if (parsed.blockId !== undefined && parsed.blockId !== blockIdForSession(parseAttentionKey(attentionKey).sessionId)) {
|
|
728
467
|
return `reported block '${parsed.blockId}', which is not this key's block`;
|
|
729
468
|
}
|
|
730
|
-
// An answer about a DIFFERENT attempt than the one asked about is not evidence
|
|
731
|
-
// for this one, even though the key matches.
|
|
732
469
|
if (requestedAttempt !== undefined && parsed.attempt !== undefined && parsed.attempt !== requestedAttempt) {
|
|
733
470
|
return `reported attempt '${parsed.attempt}', not the requested '${requestedAttempt}'`;
|
|
734
471
|
}
|
|
@@ -738,11 +475,9 @@ function remoteResultProblem(parsed, attentionKey, requestedAttempt) {
|
|
|
738
475
|
if (!RECEIPT_STATUSES.includes(parsed.receipt.status)) {
|
|
739
476
|
return `reported an unknown receipt status '${parsed.receipt.status}'`;
|
|
740
477
|
}
|
|
741
|
-
// A dead message is a failure, not a delivery.
|
|
742
478
|
if (parsed.receipt.status === 'dropped' || parsed.receipt.status === 'expired') {
|
|
743
479
|
return `reported delivery 'receipt' for a '${parsed.receipt.status}' message`;
|
|
744
480
|
}
|
|
745
|
-
// The receipt must be about the ASK that was requested.
|
|
746
481
|
const generation = parseAttentionKey(attentionKey).generation;
|
|
747
482
|
if (parsed.receipt.generation !== undefined && parsed.receipt.generation !== generation) {
|
|
748
483
|
return `returned a receipt for ask '${parsed.receipt.generation}', not '${generation}'`;
|
|
@@ -751,8 +486,6 @@ function remoteResultProblem(parsed, attentionKey, requestedAttempt) {
|
|
|
751
486
|
&& parsed.receipt.attempt !== parsed.attempt) {
|
|
752
487
|
return `returned a receipt for attempt '${parsed.receipt.attempt}', not its own '${parsed.attempt}'`;
|
|
753
488
|
}
|
|
754
|
-
// `resolved` means the agent itself acknowledged — only consumed/continued
|
|
755
|
-
// can support it. A `queued` receipt claiming resolution is inconsistent.
|
|
756
489
|
const acknowledged = parsed.receipt.status === 'consumed' || parsed.receipt.status === 'continued';
|
|
757
490
|
if (parsed.resolved !== acknowledged) {
|
|
758
491
|
return `reported resolved=${parsed.resolved} for a '${parsed.receipt.status}' receipt`;
|