@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/ssh-exec.js
CHANGED
|
@@ -1,53 +1,21 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared SSH exec primitive — the single hardened choke point for running a
|
|
3
|
-
* command on a remote host over the system `ssh`.
|
|
4
|
-
*
|
|
5
|
-
* `agents run --device` dispatch and the browser driver both go through here so the
|
|
6
|
-
* connection hardening (`BatchMode`, `accept-new`, `ConnectTimeout`) and the
|
|
7
|
-
* target-injection guard live in exactly one place. Target validation is the
|
|
8
|
-
* canonical definition; `commands/secrets.ts` re-exports it.
|
|
9
|
-
*/
|
|
10
1
|
import { spawn, spawnSync } from 'child_process';
|
|
11
2
|
import { StringDecoder } from 'string_decoder';
|
|
12
3
|
import * as fs from 'fs';
|
|
13
4
|
import * as path from 'path';
|
|
14
5
|
import { getCacheDir } from './state.js';
|
|
15
|
-
/**
|
|
16
|
-
* SSH target: a bare ssh-config host alias (e.g. `yosemite-s0`) or `user@host`.
|
|
17
|
-
* The strict allowlist blocks shell metacharacters so a target can't be
|
|
18
|
-
* smuggled in as part of a remote command, and `sshExec` additionally rejects a
|
|
19
|
-
* leading `-` so it can never be parsed as an ssh argv flag.
|
|
20
|
-
*/
|
|
21
|
-
/**
|
|
22
|
-
* ssh's own connection-layer failure code — the transport dropped or never came
|
|
23
|
-
* up, as opposed to the remote command choosing an exit status. Defined here,
|
|
24
|
-
* in the layer that owns the ssh invocation, and re-exported by
|
|
25
|
-
* `lib/hosts/reconnect.ts` as `SSH_CONN_FAILURE` so there is one constant for
|
|
26
|
-
* the concept rather than two that can drift apart.
|
|
27
|
-
*/
|
|
28
6
|
export const SSH_CONN_FAILURE_CODE = 255;
|
|
29
7
|
export const SSH_TARGET_RE = /^[a-zA-Z0-9._-]+(@[a-zA-Z0-9._-]+)?$/;
|
|
8
|
+
// Validate at the SSH argv sink so metacharacters and leading-option injection never reach ssh.
|
|
30
9
|
export function assertValidSshTarget(host) {
|
|
31
10
|
if (host.startsWith('-') || !SSH_TARGET_RE.test(host)) {
|
|
32
11
|
throw new Error(`Invalid SSH target ${JSON.stringify(host)}. Expected a host alias or user@host (letters, digits, '.', '_', '-').`);
|
|
33
12
|
}
|
|
34
13
|
}
|
|
35
|
-
/** POSIX single-quote a string for safe interpolation into a remote shell command. */
|
|
36
14
|
export function shellQuote(s) {
|
|
37
15
|
if (/^[A-Za-z0-9_./:=@%+-]+$/.test(s))
|
|
38
16
|
return s;
|
|
39
17
|
return "'" + s.replace(/'/g, "'\\''") + "'";
|
|
40
18
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Hardened ssh options applied to every connection — the single baseline every
|
|
43
|
-
* `ssh` in the codebase composes from (directly here, or as `[...SSH_OPTS, …]`
|
|
44
|
-
* in the few callers that need extra flags like `-L`/`-N`/`ProxyCommand`).
|
|
45
|
-
*
|
|
46
|
-
* `ServerAliveInterval`/`ServerAliveCountMax` add in-connection keepalive: a
|
|
47
|
-
* silently-dropped link (laptop sleeps, Wi-Fi flips) is detected and the ssh
|
|
48
|
-
* process exits within ~45s instead of hanging forever — so a followed run or a
|
|
49
|
-
* long-lived `-N` tunnel can't leave a zombie ssh + socket pinned on the laptop.
|
|
50
|
-
*/
|
|
51
19
|
export const SSH_OPTS = [
|
|
52
20
|
'-o', 'StrictHostKeyChecking=accept-new',
|
|
53
21
|
'-o', 'BatchMode=yes',
|
|
@@ -55,24 +23,7 @@ export const SSH_OPTS = [
|
|
|
55
23
|
'-o', 'ServerAliveInterval=15',
|
|
56
24
|
'-o', 'ServerAliveCountMax=3',
|
|
57
25
|
];
|
|
58
|
-
/**
|
|
59
|
-
* Hard ceiling on the stdout one peer may return before its capture is aborted.
|
|
60
|
-
* A cross-machine fan-out streams every peer's `agents … --json` into memory in
|
|
61
|
-
* parallel, so an unbounded buffer means one runaway peer (a corrupt or
|
|
62
|
-
* pathologically large payload) can exhaust the caller's heap and take the whole
|
|
63
|
-
* sweep down with it — RUSH-2065 observed ~170MB retained across a single
|
|
64
|
-
* `--active` gather. 16 MiB is far above any legitimate JSON listing yet small
|
|
65
|
-
* enough that N peers in flight stay bounded. A peer that overflows is treated as
|
|
66
|
-
* unreachable rather than trusted with partial output.
|
|
67
|
-
*/
|
|
68
26
|
export const REMOTE_STDOUT_MAX_BYTES = 16 * 1024 * 1024;
|
|
69
|
-
/**
|
|
70
|
-
* Accumulate SSH stdout as UTF-8 without corrupting a multi-byte code point that
|
|
71
|
-
* a chunk boundary splits — the streaming `on('data')` callbacks hand us raw
|
|
72
|
-
* `Buffer`s, and a naive `buf.toString()` per chunk mangles any character the
|
|
73
|
-
* kernel cut in half. `StringDecoder` holds the trailing partial bytes until the
|
|
74
|
-
* next chunk completes them.
|
|
75
|
-
*/
|
|
76
27
|
export class RemoteUtf8Accumulator {
|
|
77
28
|
decoder = new StringDecoder('utf8');
|
|
78
29
|
value = '';
|
|
@@ -87,62 +38,9 @@ export class RemoteUtf8Accumulator {
|
|
|
87
38
|
return this.value;
|
|
88
39
|
}
|
|
89
40
|
}
|
|
90
|
-
/**
|
|
91
|
-
* How long OpenSSH keeps a multiplex master alive after its last client exits
|
|
92
|
-
* (`ControlPersist`, in seconds).
|
|
93
|
-
*
|
|
94
|
-
* The master only survives while it stays IDLE under this window, so it helps
|
|
95
|
-
* exactly a *repeated* touch of the same host that arrives within the window; a
|
|
96
|
-
* touch that arrives after the master has expired pays the full cold TCP+auth
|
|
97
|
-
* handshake again (~100-300ms direct, up to ~500ms relayed; measured on the live
|
|
98
|
-
* fleet 2026-08-10, PHNX-2582).
|
|
99
|
-
*
|
|
100
|
-
* The repeated same-host touches are the ad-hoc `--device` and fleet fan-out
|
|
101
|
-
* calls — `sessions --active`, `fleet ping`/`status`, `doctor`, `teams`, a
|
|
102
|
-
* `--device <box>` command run a few times while working — which arrive in
|
|
103
|
-
* BURSTS spread over minutes, not on a fixed clock. (The one truly high-frequency
|
|
104
|
-
* caller, `followHostTask`'s ~1.5s follow poll, was already warm even at 60s and
|
|
105
|
-
* is not the target here.) At the old 60s window any two touches of the same box
|
|
106
|
-
* more than a minute apart were both cold, so a burst paid a fresh handshake
|
|
107
|
-
* almost every time.
|
|
108
|
-
*
|
|
109
|
-
* 10 minutes keeps a multi-minute burst warm (3-5ms per reuse) while still
|
|
110
|
-
* bounding how long an idle master lingers — an important limit, because a reused
|
|
111
|
-
* master to a box that has since slept costs a ~45s ServerAlive teardown on the
|
|
112
|
-
* first touch (`ServerAliveInterval=15 × ServerAliveCountMax=3`), and a wider
|
|
113
|
-
* window would only widen the chance of hitting that. The daemon's periodic
|
|
114
|
-
* SSH-touching services (`usage-sync`/`auth-sync`) tick every 15 minutes, longer
|
|
115
|
-
* than this window ON PURPOSE: warming them would need a wider window for a
|
|
116
|
-
* handshake that is negligible at that cadence. Fan-outs stay bounded regardless
|
|
117
|
-
* by their own per-peer `timeoutMs`.
|
|
118
|
-
*/
|
|
119
41
|
export const SSH_CONTROL_PERSIST_SECONDS = 10 * 60;
|
|
120
|
-
/**
|
|
121
|
-
* OpenSSH connection-multiplexing options. The first connection to a host opens
|
|
122
|
-
* a control socket; subsequent connections (even from a *separate* `agents`
|
|
123
|
-
* invocation) reuse it, skipping the TCP+auth handshake — so repeated
|
|
124
|
-
* `--device <name>` calls to the same box feel local instead of paying ~100-300ms
|
|
125
|
-
* each. `ControlPersist` keeps the master alive after the last client exits, sized
|
|
126
|
-
* to span a multi-minute burst of repeated touches — see
|
|
127
|
-
* {@link SSH_CONTROL_PERSIST_SECONDS} for the value and the rationale. `%C` (a
|
|
128
|
-
* short fixed-length hash of local-host/remote/port/user) keeps the socket path
|
|
129
|
-
* well under macOS's 104-char `sun_path` limit.
|
|
130
|
-
*
|
|
131
|
-
* This is **on by default** for every `sshExec`/`sshStream` call: the poll loops
|
|
132
|
-
* (`followHostTask`), readiness probes, and per-host fan-outs are exactly the
|
|
133
|
-
* high-frequency callers that benefit most from socket reuse, and they should
|
|
134
|
-
* never have to remember to opt in. A caller passes `multiplex: false` only for
|
|
135
|
-
* a genuine one-shot where a lingering master is pure overhead.
|
|
136
|
-
*
|
|
137
|
-
* The socket directory is created lazily; if ssh can't open the control socket
|
|
138
|
-
* it falls back to a normal connection (multiplexing is an optimisation, never a
|
|
139
|
-
* requirement), so this can never make a reachable host unreachable.
|
|
140
|
-
*/
|
|
141
42
|
let controlDirEnsured = false;
|
|
142
43
|
export function controlOpts() {
|
|
143
|
-
// OpenSSH on Windows has no ControlMaster/ControlPath (unix-socket) support —
|
|
144
|
-
// passing those options makes ssh error out. Multiplexing is a pure latency
|
|
145
|
-
// optimisation, so on Windows we simply skip it and use a fresh connection.
|
|
146
44
|
if (process.platform === 'win32')
|
|
147
45
|
return [];
|
|
148
46
|
const dir = path.join(getCacheDir(), 'ssh');
|
|
@@ -151,7 +49,6 @@ export function controlOpts() {
|
|
|
151
49
|
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
152
50
|
}
|
|
153
51
|
catch {
|
|
154
|
-
/* best-effort — ssh degrades to a fresh connection if the dir is missing */
|
|
155
52
|
}
|
|
156
53
|
controlDirEnsured = true;
|
|
157
54
|
}
|
|
@@ -161,26 +58,11 @@ export function controlOpts() {
|
|
|
161
58
|
'-o', `ControlPersist=${SSH_CONTROL_PERSIST_SECONDS}s`,
|
|
162
59
|
];
|
|
163
60
|
}
|
|
164
|
-
/**
|
|
165
|
-
* Compose an ssh connection-option prefix.
|
|
166
|
-
*
|
|
167
|
-
* `hostKeyOpts` (a caller's host-key posture, e.g. a pinned
|
|
168
|
-
* `StrictHostKeyChecking=yes` + managed `UserKnownHostsFile`) go FIRST, ahead of
|
|
169
|
-
* the `SSH_OPTS` baseline: ssh honors the *first* value it sees for each option,
|
|
170
|
-
* so an override placed after the baseline's `accept-new` would be silently
|
|
171
|
-
* ignored. Pure so the ordering contract is unit-testable. See RUSH-1767.
|
|
172
|
-
*/
|
|
173
61
|
export function sshConnectOpts(mux, hostKeyOpts) {
|
|
62
|
+
// Host-key overrides precede SSH_OPTS because OpenSSH uses the first value.
|
|
174
63
|
return [...(hostKeyOpts ?? []), ...SSH_OPTS, ...mux];
|
|
175
64
|
}
|
|
176
|
-
/** Grace after a timed-out child receives SIGTERM before SIGKILL enforces the bound. */
|
|
177
65
|
export const SSH_TIMEOUT_KILL_GRACE_MS = 250;
|
|
178
|
-
/**
|
|
179
|
-
* Run `remoteCmd` on `target` over ssh and capture stdout/stderr/exit.
|
|
180
|
-
*
|
|
181
|
-
* `remoteCmd` is passed as a single argv to ssh (the remote login shell parses
|
|
182
|
-
* it); callers that build it from user input must `shellQuote` the pieces.
|
|
183
|
-
*/
|
|
184
66
|
export function sshExec(target, remoteCmd, opts = {}) {
|
|
185
67
|
assertValidSshTarget(target);
|
|
186
68
|
const mux = opts.multiplex === false ? [] : controlOpts();
|
|
@@ -192,9 +74,6 @@ export function sshExec(target, remoteCmd, opts = {}) {
|
|
|
192
74
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
193
75
|
windowsHide: true,
|
|
194
76
|
});
|
|
195
|
-
// Node's spawnSync with a `timeout` option kills the child via SIGTERM and sets
|
|
196
|
-
// res.signal (e.g. 'SIGTERM') — it does NOT set res.error.code = 'ETIMEDOUT'.
|
|
197
|
-
// Check both so the detection fires whether the timeout is signalled or errored.
|
|
198
77
|
const timedOut = !!(res.error && res.error.code === 'ETIMEDOUT') ||
|
|
199
78
|
(!!opts.timeoutMs && res.signal !== null);
|
|
200
79
|
return {
|
|
@@ -204,21 +83,8 @@ export function sshExec(target, remoteCmd, opts = {}) {
|
|
|
204
83
|
timedOut,
|
|
205
84
|
};
|
|
206
85
|
}
|
|
207
|
-
/**
|
|
208
|
-
* Async variant of {@link sshExec}. Same hardened argv composition, but uses
|
|
209
|
-
* child_process.spawn so fleet fan-outs can probe multiple hosts concurrently.
|
|
210
|
-
*
|
|
211
|
-
* A timeout-bearing call uses a fresh ssh connection (`multiplex: false`) even
|
|
212
|
-
* when the caller requests multiplexing: a control-master outlives the local
|
|
213
|
-
* client, so killing the local ssh process on timeout would leave the remote
|
|
214
|
-
* command running. With a direct connection, terminating the local child tears
|
|
215
|
-
* down the remote side (RUSH-2114).
|
|
216
|
-
*/
|
|
217
86
|
export function sshExecAsync(target, remoteCmd, opts = {}) {
|
|
218
87
|
assertValidSshTarget(target);
|
|
219
|
-
// Control-master connections defeat local timeouts — the master keeps the
|
|
220
|
-
// remote command alive after we kill the client. Force a fresh connection
|
|
221
|
-
// whenever the caller asked for a timeout so the timeout actually stops work.
|
|
222
88
|
const mux = opts.multiplex === false || opts.timeoutMs ? [] : controlOpts();
|
|
223
89
|
const args = [...sshConnectOpts(mux, opts.hostKeyOpts), ...(opts.extraSshArgs ?? []), target, remoteCmd];
|
|
224
90
|
return new Promise((resolve) => {
|
|
@@ -235,10 +101,6 @@ export function sshExecAsync(target, remoteCmd, opts = {}) {
|
|
|
235
101
|
? setTimeout(() => {
|
|
236
102
|
timedOut = true;
|
|
237
103
|
child.kill('SIGTERM');
|
|
238
|
-
// SIGTERM is advisory. A wedged ssh process can ignore it and keep the
|
|
239
|
-
// Promise (and daemon tick) open forever, so enforce a short hard-kill
|
|
240
|
-
// bound. Timeout calls always disable ControlMaster above; killing this
|
|
241
|
-
// direct client therefore tears down the remote connection too.
|
|
242
104
|
killTimer = setTimeout(() => {
|
|
243
105
|
if (!settled)
|
|
244
106
|
child.kill('SIGKILL');
|
|
@@ -256,10 +118,6 @@ export function sshExecAsync(target, remoteCmd, opts = {}) {
|
|
|
256
118
|
child.stderr.setEncoding('utf-8');
|
|
257
119
|
child.stdout.on('data', (chunk) => { stdout += chunk; });
|
|
258
120
|
child.stderr.on('data', (chunk) => { stderr += chunk; });
|
|
259
|
-
// Guard the stdin pipe: if the child closes stdin early (e.g. exits fast), the
|
|
260
|
-
// end()/write below emits EPIPE on the stream. With no listener Node escalates
|
|
261
|
-
// that to an uncaught exception that kills the whole CLI. Swallow it — the real
|
|
262
|
-
// outcome is still reported by the 'close'/'error' handlers below.
|
|
263
121
|
child.stdin.on('error', () => { });
|
|
264
122
|
if (opts.input !== undefined)
|
|
265
123
|
child.stdin.end(opts.input);
|
|
@@ -281,25 +139,16 @@ export function sshExecAsync(target, remoteCmd, opts = {}) {
|
|
|
281
139
|
});
|
|
282
140
|
});
|
|
283
141
|
}
|
|
284
|
-
/**
|
|
285
|
-
* Like {@link sshExec} but returns raw stdout/stderr Buffers — no UTF-8 decode.
|
|
286
|
-
*
|
|
287
|
-
* Use when byte-exactness matters, e.g. offset-tracked log tailing: a multibyte
|
|
288
|
-
* character split across a read boundary must stay raw bytes, not collapse to a
|
|
289
|
-
* U+FFFD replacement char (which would desync a byte offset from the wire).
|
|
290
|
-
*/
|
|
291
142
|
export function sshExecRaw(target, remoteCmd, opts = {}) {
|
|
292
143
|
assertValidSshTarget(target);
|
|
293
144
|
const mux = opts.multiplex === false ? [] : controlOpts();
|
|
294
145
|
const args = [...sshConnectOpts(mux, opts.hostKeyOpts), ...(opts.extraSshArgs ?? []), target, remoteCmd];
|
|
295
146
|
const res = spawnSync('ssh', args, {
|
|
296
147
|
input: opts.input,
|
|
297
|
-
// No `encoding` → spawnSync returns Buffers.
|
|
298
148
|
timeout: opts.timeoutMs,
|
|
299
149
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
300
150
|
windowsHide: true,
|
|
301
151
|
});
|
|
302
|
-
// Same fix as sshExec: spawnSync sets res.signal, not error.code = 'ETIMEDOUT'.
|
|
303
152
|
const timedOut = !!(res.error && res.error.code === 'ETIMEDOUT') ||
|
|
304
153
|
(!!opts.timeoutMs && res.signal !== null);
|
|
305
154
|
return {
|
|
@@ -309,17 +158,7 @@ export function sshExecRaw(target, remoteCmd, opts = {}) {
|
|
|
309
158
|
timedOut,
|
|
310
159
|
};
|
|
311
160
|
}
|
|
312
|
-
/**
|
|
313
|
-
* Stream raw stdout from a long-lived remote command over ssh.
|
|
314
|
-
*
|
|
315
|
-
* Unlike {@link sshStream}, this does not inherit local stdio: callers receive
|
|
316
|
-
* byte-exact stdout chunks and decide how to account for them. That matters for
|
|
317
|
-
* offset-resumed log following where a UTF-8 decode boundary must not shift the
|
|
318
|
-
* byte cursor.
|
|
319
|
-
*/
|
|
320
|
-
/** Grace between SIGTERM and SIGKILL for a stream that will not stop. */
|
|
321
161
|
export const SSH_STREAM_KILL_GRACE_MS = 3_000;
|
|
322
|
-
/** Bytes of a stream's stderr retained; the rest is dropped, with a note. */
|
|
323
162
|
export const SSH_STREAM_MAX_STDERR = 8 * 1024;
|
|
324
163
|
/**
|
|
325
164
|
* Stream one ssh command's stdout, with the args and env a CALLER built.
|
|
@@ -350,10 +189,6 @@ export function sshStreamWithArgs(opts) {
|
|
|
350
189
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
351
190
|
env: opts.env ? { ...process.env, ...opts.env } : process.env,
|
|
352
191
|
windowsHide: true,
|
|
353
|
-
// Own process group on POSIX so a kill reaches the whole tree. Killing only
|
|
354
|
-
// the ssh pid is not enough: a descendant that inherited stdout keeps the
|
|
355
|
-
// pipe open, `'close'` never fires, and the promise hangs for as long as
|
|
356
|
-
// that grandchild lives — which defeats the timeout entirely.
|
|
357
192
|
detached: process.platform !== 'win32',
|
|
358
193
|
});
|
|
359
194
|
const stderr = [];
|
|
@@ -364,7 +199,6 @@ export function sshStreamWithArgs(opts) {
|
|
|
364
199
|
let consumerError;
|
|
365
200
|
let settled = false;
|
|
366
201
|
let killTimer;
|
|
367
|
-
/** Signal the whole group where the platform supports it, else just the child. */
|
|
368
202
|
const signal = (sig) => {
|
|
369
203
|
try {
|
|
370
204
|
if (process.platform !== 'win32' && child.pid)
|
|
@@ -372,12 +206,10 @@ export function sshStreamWithArgs(opts) {
|
|
|
372
206
|
else
|
|
373
207
|
child.kill(sig);
|
|
374
208
|
}
|
|
375
|
-
catch {
|
|
209
|
+
catch { }
|
|
376
210
|
};
|
|
377
211
|
const escalate = () => {
|
|
378
212
|
signal('SIGTERM');
|
|
379
|
-
// Escalation, not a second polite ask: a child still alive after the grace
|
|
380
|
-
// is one that is not going to honour SIGTERM.
|
|
381
213
|
killTimer = setTimeout(() => { killed = true; signal('SIGKILL'); }, grace);
|
|
382
214
|
killTimer.unref?.();
|
|
383
215
|
};
|
|
@@ -407,8 +239,6 @@ export function sshStreamWithArgs(opts) {
|
|
|
407
239
|
opts.onStdout(chunk);
|
|
408
240
|
}
|
|
409
241
|
catch (error) {
|
|
410
|
-
// Captured, not thrown: a throw here would surface as an unhandled error
|
|
411
|
-
// on the stream and skip the caller's cleanup entirely.
|
|
412
242
|
consumerError = error;
|
|
413
243
|
escalate();
|
|
414
244
|
}
|
|
@@ -437,6 +267,7 @@ export function sshStreamWithArgs(opts) {
|
|
|
437
267
|
});
|
|
438
268
|
}
|
|
439
269
|
export function sshExecRawStream(target, remoteCmd, opts) {
|
|
270
|
+
// Raw streaming preserves byte offsets across UTF-8 chunk boundaries.
|
|
440
271
|
assertValidSshTarget(target);
|
|
441
272
|
const mux = opts.multiplex === false ? [] : controlOpts();
|
|
442
273
|
const args = [...sshConnectOpts(mux, opts.hostKeyOpts), ...(opts.extraSshArgs ?? []), target, remoteCmd];
|
|
@@ -485,73 +316,37 @@ export function sshExecRawStream(target, remoteCmd, opts) {
|
|
|
485
316
|
});
|
|
486
317
|
});
|
|
487
318
|
}
|
|
488
|
-
/** True if `target` is reachable over ssh (a passwordless `true` succeeds quickly). */
|
|
489
319
|
export function sshReachable(target, timeoutMs = 10000) {
|
|
490
320
|
return sshExec(target, 'true', { timeoutMs, multiplex: true }).code === 0;
|
|
491
321
|
}
|
|
492
|
-
/**
|
|
493
|
-
* The DEC private modes a full-screen remote app turns ON and, when it exits
|
|
494
|
-
* cleanly, turns back off itself. A remote agent TUI killed by a dropped link
|
|
495
|
-
* never gets to, so they stay enabled on the LOCAL terminal after ssh is gone:
|
|
496
|
-
* focus reporting (1004) and the mode/colour-scheme reports (996/997) then make
|
|
497
|
-
* the terminal emit answerback sequences at a shell that is not expecting them,
|
|
498
|
-
* which is the `^[[?997;1n ^[[I ^[[O` litter seen after a drop (RUSH-3125). Also
|
|
499
|
-
* resets bracketed paste (2004), the alternate screen (1049), mouse tracking
|
|
500
|
-
* (1000/1002/1003/1006), and re-shows the cursor (25) — every one of which a TUI
|
|
501
|
-
* leaves armed the same way.
|
|
502
|
-
*/
|
|
503
322
|
export const TERMINAL_MODE_RESET = '\x1b[?1004l\x1b[?996l\x1b[?997l\x1b[?2004l\x1b[?1049l'
|
|
504
323
|
+ '\x1b[?1000l\x1b[?1002l\x1b[?1003l\x1b[?1006l\x1b[?25h';
|
|
505
|
-
/**
|
|
506
|
-
* Put the local terminal back the way ssh found it.
|
|
507
|
-
*
|
|
508
|
-
* Two independent kinds of state survive a hard ssh death, and BOTH have to be
|
|
509
|
-
* undone or the next thing the user sees is corrupted:
|
|
510
|
-
*
|
|
511
|
-
* - **termios** (kernel side): `-tt` puts the tty in raw mode, so a killed ssh
|
|
512
|
-
* leaves it with echo and line-editing off. `saved` is the `stty -g` snapshot
|
|
513
|
-
* taken before the spawn; restoring it is exact, unlike guessing at `sane`.
|
|
514
|
-
* - **DEC private modes** (terminal side): see {@link TERMINAL_MODE_RESET}.
|
|
515
|
-
*
|
|
516
|
-
* Then drain whatever the terminal already answered back into the input buffer.
|
|
517
|
-
* Without the drain those bytes are not merely cosmetic — they are still queued
|
|
518
|
-
* on the tty, so the NEXT attach hands them straight to the agent as if the user
|
|
519
|
-
* had typed them.
|
|
520
|
-
*
|
|
521
|
-
* Best-effort by construction: this runs while recovering from a failure, so a
|
|
522
|
-
* missing `stty`, a non-TTY stdin, or a closed stream must never turn a
|
|
523
|
-
* recoverable drop into a thrown error.
|
|
524
|
-
*/
|
|
525
324
|
export function restoreLocalTerminal(saved, opts) {
|
|
325
|
+
// Drain only after abnormal SSH termination; draining a clean exit destroys user typeahead.
|
|
526
326
|
try {
|
|
527
327
|
if (saved)
|
|
528
328
|
spawnSync('stty', [saved], { stdio: ['inherit', 'ignore', 'ignore'] });
|
|
529
329
|
}
|
|
530
|
-
catch {
|
|
330
|
+
catch { }
|
|
531
331
|
try {
|
|
532
332
|
if (process.stdout.isTTY)
|
|
533
333
|
process.stdout.write(TERMINAL_MODE_RESET);
|
|
534
334
|
}
|
|
535
|
-
catch {
|
|
335
|
+
catch { }
|
|
536
336
|
try {
|
|
537
337
|
if (process.stdin.isTTY)
|
|
538
338
|
process.stdin.setRawMode?.(false);
|
|
539
339
|
}
|
|
540
|
-
catch {
|
|
541
|
-
// The DRAIN is the one destructive step here, so it is opt-in per exit. See
|
|
542
|
-
// {@link sshStream} for why it must not run on a clean exit.
|
|
340
|
+
catch { }
|
|
543
341
|
if (!opts.drainStdin)
|
|
544
342
|
return;
|
|
545
343
|
try {
|
|
546
|
-
// read() on a paused non-flowing stdin returns the buffered bytes and
|
|
547
|
-
// discards them; the loop clears a burst rather than one chunk.
|
|
548
344
|
if (process.stdin.isTTY) {
|
|
549
|
-
while (process.stdin.read() !== null) {
|
|
345
|
+
while (process.stdin.read() !== null) { }
|
|
550
346
|
}
|
|
551
347
|
}
|
|
552
|
-
catch {
|
|
348
|
+
catch { }
|
|
553
349
|
}
|
|
554
|
-
/** `stty -g` snapshot of the local tty, or undefined when there is nothing to snapshot. */
|
|
555
350
|
export function saveLocalTerminal() {
|
|
556
351
|
if (!process.stdin.isTTY)
|
|
557
352
|
return undefined;
|
|
@@ -564,52 +359,20 @@ export function saveLocalTerminal() {
|
|
|
564
359
|
return undefined;
|
|
565
360
|
}
|
|
566
361
|
}
|
|
567
|
-
/**
|
|
568
|
-
* Foreground counterpart to `sshExec`: run `remoteCmd` on `target` with the
|
|
569
|
-
* local stdio wired straight through (`stdio: 'inherit'`), so output streams as
|
|
570
|
-
* it is produced and — with `tty` — keystrokes reach a remote picker. Blocks
|
|
571
|
-
* until the remote command exits and returns its exit code (255 is ssh's own
|
|
572
|
-
* connection-layer failure; any other non-zero is the remote command's code).
|
|
573
|
-
*
|
|
574
|
-
* On a `tty` stream the local terminal state is snapshotted before the spawn and
|
|
575
|
-
* restored after it. ssh restores termios itself when it exits cleanly, so this
|
|
576
|
-
* is for the case that matters here: the link dying under a full-screen agent
|
|
577
|
-
* TUI, which leaves the tty raw and the TUI's DEC modes armed. Doing it HERE
|
|
578
|
-
* rather than in the reconnect loop means every caller that opens an interactive
|
|
579
|
-
* remote stream is covered, not just the one that noticed (RUSH-3125).
|
|
580
|
-
*
|
|
581
|
-
* **The stdin drain is gated on an ABNORMAL exit, and the distinction is not
|
|
582
|
-
* cosmetic.** Resetting termios and the DEC modes is idempotent — on a clean
|
|
583
|
-
* exit ssh and the remote TUI have already done it, so re-doing it changes
|
|
584
|
-
* nothing. Draining stdin is destructive: it discards whatever the user has
|
|
585
|
-
* typed ahead. On a clean exit those bytes are legitimate type-ahead the
|
|
586
|
-
* resuming shell should receive, and eating them would be a new bug in every
|
|
587
|
-
* caller of this function (`runInteractiveOnHost`, the remote-tmux attach in
|
|
588
|
-
* commands/go.ts, the remote secrets browse) rather than a fix. Only an
|
|
589
|
-
* abnormal exit — ssh killed by a signal (`status === null`) or its own
|
|
590
|
-
* connection-layer failure (255) — produces the answerback storm the drain
|
|
591
|
-
* exists to clear, because only then did the TUI die without sending its own
|
|
592
|
-
* mode resets.
|
|
593
|
-
*/
|
|
594
362
|
export function sshStream(target, remoteCmd, opts = {}) {
|
|
595
363
|
assertValidSshTarget(target);
|
|
596
364
|
const mux = opts.multiplex === false ? [] : controlOpts();
|
|
597
365
|
const tty = opts.tty ? ['-tt'] : [];
|
|
598
366
|
const args = [...sshConnectOpts(mux, opts.hostKeyOpts), ...(opts.extraSshArgs ?? []), ...tty, target, remoteCmd];
|
|
599
367
|
const saved = opts.tty ? saveLocalTerminal() : undefined;
|
|
600
|
-
let abnormal = true;
|
|
368
|
+
let abnormal = true;
|
|
601
369
|
try {
|
|
602
370
|
const res = spawnSync('ssh', args, { stdio: 'inherit' });
|
|
603
371
|
const code = typeof res.status === 'number' ? res.status : 255;
|
|
604
|
-
// Killed by a signal (no numeric status) or ssh's own connection-layer
|
|
605
|
-
// failure — the two shapes in which the remote TUI never got to reset the
|
|
606
|
-
// terminal. Any other code is ssh exiting normally with the remote's status.
|
|
607
372
|
abnormal = res.status === null || code === SSH_CONN_FAILURE_CODE;
|
|
608
373
|
return code;
|
|
609
374
|
}
|
|
610
375
|
finally {
|
|
611
|
-
// `finally`, because the abnormal exits are precisely the ones that leave
|
|
612
|
-
// the terminal wrecked — but the drain within it is gated (see the doc).
|
|
613
376
|
if (opts.tty)
|
|
614
377
|
restoreLocalTerminal(saved, { drainStdin: abnormal });
|
|
615
378
|
}
|
package/dist/lib/ssh-tunnel.d.ts
CHANGED
|
@@ -1,60 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ssh-tunnel.ts — the generic `ssh -L localPort:127.0.0.1:remotePort -N`
|
|
3
|
-
* port-forward, plus the fleet-device resolution that names its far end.
|
|
4
|
-
*
|
|
5
|
-
* WHY IT LIVES HERE. These primitives used to sit in `lib/computer/ssh-tunnel.ts`
|
|
6
|
-
* alongside the Windows computer-helper provisioning, because `agents computer
|
|
7
|
-
* --device` was their second caller after the browser CDP driver. The computer
|
|
8
|
-
* engine has since moved to the standalone `computer` CLI (PHNX-4075), so a
|
|
9
|
-
* generic tunnel parked in a deleted subsystem's directory would have gone with
|
|
10
|
-
* it and taken `agents browser`'s remote path down. It is fleet plumbing — the
|
|
11
|
-
* devices registry, the hardened ssh baseline, a local loopback port — and
|
|
12
|
-
* belongs in the fleet layer, not under a feature.
|
|
13
|
-
*
|
|
14
|
-
* Its callers are thin: `browser/drivers/ssh.ts` holds a tunnel for one CDP
|
|
15
|
-
* session, and `lib/computer/context.ts` uses `resolveRemoteDevice` alone —
|
|
16
|
-
* `agents computer --device` resolves the fleet name here and forwards the
|
|
17
|
-
* answer to the standalone engine, which opens and owns its own tunnel (it
|
|
18
|
-
* holds the helper token that tunnel's transport needs).
|
|
19
|
-
*/
|
|
20
1
|
import { type ChildProcess } from 'child_process';
|
|
21
2
|
import { type DeviceProfile } from './devices/registry.js';
|
|
22
3
|
interface StartTunnelOptions {
|
|
23
4
|
extraSshArgs?: string[];
|
|
24
5
|
}
|
|
25
|
-
/** Build the ssh argv (after the `ssh` program name) for an `-L` tunnel. Pure.
|
|
26
|
-
*
|
|
27
|
-
* Composes the shared hardened baseline (`SSH_OPTS`) rather than re-listing it,
|
|
28
|
-
* so the tunnel inherits the same options — crucially the keepalive, which lets
|
|
29
|
-
* a dropped `-N` tunnel exit instead of lingering as a zombie on the laptop. */
|
|
30
6
|
export declare function buildTunnelArgs(user: string, host: string, localPort: number, remotePort: number, extraSshArgs?: string[]): string[];
|
|
31
|
-
/**
|
|
32
|
-
* Spawn `ssh -L localPort:127.0.0.1:remotePort -N user@host`.
|
|
33
|
-
*
|
|
34
|
-
* stderr is captured so a tunnel that dies inside 500ms rejects with the ssh
|
|
35
|
-
* error — the browser driver's original contract. The tunnel is held by this
|
|
36
|
-
* process for the lifetime of the session that opened it.
|
|
37
|
-
*/
|
|
38
7
|
export declare function startSSHTunnel(user: string, host: string, localPort: number, remotePort: number, opts?: StartTunnelOptions): Promise<ChildProcess>;
|
|
39
|
-
/** One registered device, resolved to everything an ssh invocation needs. */
|
|
40
8
|
interface ResolvedRemoteDevice {
|
|
41
9
|
device: DeviceProfile;
|
|
42
10
|
target: string;
|
|
43
11
|
user: string;
|
|
44
12
|
host: string;
|
|
45
|
-
/** Per-device identity flags (`-i <key> -o IdentitiesOnly=yes`), possibly empty. */
|
|
46
13
|
identityArgs: string[];
|
|
47
14
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Resolve a registered device to its ssh pieces, or throw a clear error.
|
|
50
|
-
*
|
|
51
|
-
* `expectPlatform` is how a caller keeps a platform requirement it used to
|
|
52
|
-
* hard-code: `agents computer --device` drives the Windows helper daemon, so it
|
|
53
|
-
* passes `'windows'` and gets the same refusal as before. Callers with no
|
|
54
|
-
* platform requirement (the browser driver) omit it. The gate is a parameter
|
|
55
|
-
* rather than a baked-in check so this module stays fleet-generic — a
|
|
56
|
-
* hard-coded `windows` here would be a feature rule in shared plumbing.
|
|
57
|
-
*/
|
|
58
15
|
export declare function resolveRemoteDevice(name: string, opts?: {
|
|
59
16
|
expectPlatform?: DeviceProfile['platform'];
|
|
60
17
|
forWhat?: string;
|
package/dist/lib/ssh-tunnel.js
CHANGED
|
@@ -1,32 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ssh-tunnel.ts — the generic `ssh -L localPort:127.0.0.1:remotePort -N`
|
|
3
|
-
* port-forward, plus the fleet-device resolution that names its far end.
|
|
4
|
-
*
|
|
5
|
-
* WHY IT LIVES HERE. These primitives used to sit in `lib/computer/ssh-tunnel.ts`
|
|
6
|
-
* alongside the Windows computer-helper provisioning, because `agents computer
|
|
7
|
-
* --device` was their second caller after the browser CDP driver. The computer
|
|
8
|
-
* engine has since moved to the standalone `computer` CLI (PHNX-4075), so a
|
|
9
|
-
* generic tunnel parked in a deleted subsystem's directory would have gone with
|
|
10
|
-
* it and taken `agents browser`'s remote path down. It is fleet plumbing — the
|
|
11
|
-
* devices registry, the hardened ssh baseline, a local loopback port — and
|
|
12
|
-
* belongs in the fleet layer, not under a feature.
|
|
13
|
-
*
|
|
14
|
-
* Its callers are thin: `browser/drivers/ssh.ts` holds a tunnel for one CDP
|
|
15
|
-
* session, and `lib/computer/context.ts` uses `resolveRemoteDevice` alone —
|
|
16
|
-
* `agents computer --device` resolves the fleet name here and forwards the
|
|
17
|
-
* answer to the standalone engine, which opens and owns its own tunnel (it
|
|
18
|
-
* holds the helper token that tunnel's transport needs).
|
|
19
|
-
*/
|
|
20
1
|
import { spawn } from 'child_process';
|
|
21
2
|
import { SSH_OPTS, assertValidSshTarget } from './ssh-exec.js';
|
|
22
3
|
import { getDevice } from './devices/registry.js';
|
|
23
4
|
import { deviceIdentityArgs, sshTargetFor } from './devices/connect.js';
|
|
24
5
|
import { hostNameFor } from './devices/ssh-config.js';
|
|
25
|
-
/** Build the ssh argv (after the `ssh` program name) for an `-L` tunnel. Pure.
|
|
26
|
-
*
|
|
27
|
-
* Composes the shared hardened baseline (`SSH_OPTS`) rather than re-listing it,
|
|
28
|
-
* so the tunnel inherits the same options — crucially the keepalive, which lets
|
|
29
|
-
* a dropped `-N` tunnel exit instead of lingering as a zombie on the laptop. */
|
|
30
6
|
export function buildTunnelArgs(user, host, localPort, remotePort, extraSshArgs = []) {
|
|
31
7
|
return [
|
|
32
8
|
'-L',
|
|
@@ -37,20 +13,8 @@ export function buildTunnelArgs(user, host, localPort, remotePort, extraSshArgs
|
|
|
37
13
|
...SSH_OPTS,
|
|
38
14
|
];
|
|
39
15
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Spawn `ssh -L localPort:127.0.0.1:remotePort -N user@host`.
|
|
42
|
-
*
|
|
43
|
-
* stderr is captured so a tunnel that dies inside 500ms rejects with the ssh
|
|
44
|
-
* error — the browser driver's original contract. The tunnel is held by this
|
|
45
|
-
* process for the lifetime of the session that opened it.
|
|
46
|
-
*/
|
|
47
16
|
export function startSSHTunnel(user, host, localPort, remotePort, opts = {}) {
|
|
48
17
|
return new Promise((resolve, reject) => {
|
|
49
|
-
// `user`/`host` can originate from a browser ssh:// profile or a device
|
|
50
|
-
// record. buildTunnelArgs places `${user}@${host}` before `-N`/SSH_OPTS, so
|
|
51
|
-
// a `-`-leading user would be parsed as an ssh option flag (option
|
|
52
|
-
// injection). Validate at the spawn sink so every caller is covered; reject
|
|
53
|
-
// (rather than throw synchronously) to keep the Promise contract.
|
|
54
18
|
try {
|
|
55
19
|
assertValidSshTarget(`${user}@${host}`);
|
|
56
20
|
}
|
|
@@ -79,16 +43,6 @@ export function startSSHTunnel(user, host, localPort, remotePort, opts = {}) {
|
|
|
79
43
|
}, 500);
|
|
80
44
|
});
|
|
81
45
|
}
|
|
82
|
-
/**
|
|
83
|
-
* Resolve a registered device to its ssh pieces, or throw a clear error.
|
|
84
|
-
*
|
|
85
|
-
* `expectPlatform` is how a caller keeps a platform requirement it used to
|
|
86
|
-
* hard-code: `agents computer --device` drives the Windows helper daemon, so it
|
|
87
|
-
* passes `'windows'` and gets the same refusal as before. Callers with no
|
|
88
|
-
* platform requirement (the browser driver) omit it. The gate is a parameter
|
|
89
|
-
* rather than a baked-in check so this module stays fleet-generic — a
|
|
90
|
-
* hard-coded `windows` here would be a feature rule in shared plumbing.
|
|
91
|
-
*/
|
|
92
46
|
export async function resolveRemoteDevice(name, opts = {}) {
|
|
93
47
|
const device = await getDevice(name);
|
|
94
48
|
if (!device) {
|
|
@@ -98,8 +52,8 @@ export async function resolveRemoteDevice(name, opts = {}) {
|
|
|
98
52
|
const what = opts.forWhat ?? `this command`;
|
|
99
53
|
throw new Error(`Device '${name}' is ${device.platform}, not ${opts.expectPlatform}. ${what} needs a ${opts.expectPlatform} device.`);
|
|
100
54
|
}
|
|
101
|
-
const target = sshTargetFor(device);
|
|
102
|
-
const host = hostNameFor(device);
|
|
55
|
+
const target = sshTargetFor(device);
|
|
56
|
+
const host = hostNameFor(device);
|
|
103
57
|
const user = device.user || process.env.USER || 'Administrator';
|
|
104
58
|
return { device, target, user, host, identityArgs: deviceIdentityArgs(device) };
|
|
105
59
|
}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Commands staleness — one `.md` file per command, first-wins across
|
|
3
|
-
* project > user > system > extras.
|
|
4
|
-
*/
|
|
5
1
|
import type { FileEntry } from '../types.js';
|
|
6
2
|
import type { TypedResourceChecker } from './types.js';
|
|
7
3
|
export declare const commandsChecker: TypedResourceChecker<FileEntry>;
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hooks staleness — one executable file per hook. Project layer is EXCLUDED
|
|
3
|
-
* by design: a cloned public repo with `.agents/hooks/foo` must not plant a
|
|
4
|
-
* hook that fires next time the user runs an agent inside it (see
|
|
5
|
-
* `src/lib/installations/versions.ts:1832-1836`). Only user + system + extras count.
|
|
6
|
-
*
|
|
7
|
-
* Auxiliary files (README.md, promptcuts.yaml) live in hooks/ but are not
|
|
8
|
-
* hooks — the executable bit on the source distinguishes them. This matches
|
|
9
|
-
* the filter in `getAvailableResources`.
|
|
10
|
-
*/
|
|
11
1
|
import type { FileEntry } from '../types.js';
|
|
12
2
|
import type { TypedResourceChecker } from './types.js';
|
|
13
3
|
export declare const hooksChecker: TypedResourceChecker<FileEntry>;
|
|
@@ -1,23 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hooks staleness — one executable file per hook. Project layer is EXCLUDED
|
|
3
|
-
* by design: a cloned public repo with `.agents/hooks/foo` must not plant a
|
|
4
|
-
* hook that fires next time the user runs an agent inside it (see
|
|
5
|
-
* `src/lib/installations/versions.ts:1832-1836`). Only user + system + extras count.
|
|
6
|
-
*
|
|
7
|
-
* Auxiliary files (README.md, promptcuts.yaml) live in hooks/ but are not
|
|
8
|
-
* hooks — the executable bit on the source distinguishes them. This matches
|
|
9
|
-
* the filter in `getAvailableResources`.
|
|
10
|
-
*/
|
|
11
1
|
import * as fs from 'fs';
|
|
12
2
|
import * as path from 'path';
|
|
13
3
|
import { hookLayers, listAcrossLayers, resolveByName } from '../layers.js';
|
|
14
4
|
import { fingerprintFile, isFileStale } from '../fingerprint.js';
|
|
15
|
-
/** Extensions that are NEVER hooks — docs, configuration, plain data. */
|
|
16
5
|
const NON_SCRIPT_EXTENSIONS = new Set([
|
|
17
6
|
'.md', '.markdown', '.rst', '.txt',
|
|
18
7
|
'.yaml', '.yml', '.json', '.toml', '.ini', '.conf',
|
|
19
8
|
]);
|
|
20
|
-
/** Extensions that explicitly mark a file as a script regardless of exec bit. */
|
|
21
9
|
const SCRIPT_EXTENSIONS = new Set([
|
|
22
10
|
'.sh', '.bash', '.zsh',
|
|
23
11
|
'.py', '.js', '.ts', '.mjs', '.cjs',
|
|
@@ -31,9 +19,6 @@ function isHookScript(full) {
|
|
|
31
19
|
const ext = path.extname(full).toLowerCase();
|
|
32
20
|
if (SCRIPT_EXTENSIONS.has(ext))
|
|
33
21
|
return true;
|
|
34
|
-
// Otherwise require exec bit AND a non-data extension. Older sync runs
|
|
35
|
-
// chmod 0o755'd everything including `promptcuts.yaml` / `README.md`,
|
|
36
|
-
// so exec bit alone can't be trusted.
|
|
37
22
|
if ((stat.mode & 0o111) === 0)
|
|
38
23
|
return false;
|
|
39
24
|
return !NON_SCRIPT_EXTENSIONS.has(ext);
|