@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
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Connection layer for `agents ssh` — turn a device profile into a real ssh
|
|
3
|
-
* invocation, with platform-aware command wrapping and password-from-bundle
|
|
4
|
-
* auth.
|
|
5
|
-
*
|
|
6
|
-
* Auth is genuinely two first-class, non-interactive methods:
|
|
7
|
-
* - `key` — the system ssh agent / on-disk keys (BatchMode-friendly).
|
|
8
|
-
* - `password` — the secret is pulled from a Keychain-backed secrets bundle
|
|
9
|
-
* by an askpass shim. The wrapper points `SSH_ASKPASS` at the
|
|
10
|
-
* shim and forces its use; ssh calls the shim, the shim calls
|
|
11
|
-
* back into `agents ssh __askpass`, which resolves the bundle
|
|
12
|
-
* via the existing `readAndResolveBundleEnv` path and prints
|
|
13
|
-
* the password to ssh. The password never touches argv or an
|
|
14
|
-
* expect buffer.
|
|
15
|
-
*/
|
|
16
1
|
import * as fs from 'fs';
|
|
17
2
|
import * as path from 'path';
|
|
18
3
|
import { assertValidSshTarget, shellQuote } from '../ssh-exec.js';
|
|
@@ -26,9 +11,7 @@ import { hostKeyCheckingOpts } from './known-hosts.js';
|
|
|
26
11
|
import { hostNameFor } from './ssh-config.js';
|
|
27
12
|
import { resolveDeviceProfile } from './resolve-profile.js';
|
|
28
13
|
import { renderPowershellCommand, windowsAgentsInvocation } from '../hosts/remote-cmd.js';
|
|
29
|
-
/** Env var the askpass shim reads to know which bundle holds the password. */
|
|
30
14
|
export const ASKPASS_BUNDLE_ENV = 'AGENTS_SSH_BUNDLE';
|
|
31
|
-
/** Env var the askpass shim reads to know which key in the bundle is the password. */
|
|
32
15
|
export const ASKPASS_KEY_ENV = 'AGENTS_SSH_KEY';
|
|
33
16
|
/**
|
|
34
17
|
* Env var that forces the askpass bundle resolve to be broker-only (`agentOnly`)
|
|
@@ -38,11 +21,8 @@ export const ASKPASS_KEY_ENV = 'AGENTS_SSH_KEY';
|
|
|
38
21
|
* sheet. See {@link buildSshInvocation}'s `agentOnly` option and `runAskpass`. (RUSH-1970)
|
|
39
22
|
*/
|
|
40
23
|
export const ASKPASS_AGENT_ONLY_ENV = 'AGENTS_SSH_AGENT_ONLY';
|
|
41
|
-
/**
|
|
42
|
-
* Build the `user@host` (or bare `host`) ssh target for a device and validate
|
|
43
|
-
* it against the shared injection guard. Throws if the device has no address.
|
|
44
|
-
*/
|
|
45
24
|
export function sshTargetFor(device) {
|
|
25
|
+
// A registered address is authoritative over any stale same-name SSH config alias.
|
|
46
26
|
const resolved = resolveDeviceProfile(device);
|
|
47
27
|
const host = hostNameFor(resolved);
|
|
48
28
|
if (!host) {
|
|
@@ -52,18 +32,6 @@ export function sshTargetFor(device) {
|
|
|
52
32
|
assertValidSshTarget(target);
|
|
53
33
|
return target;
|
|
54
34
|
}
|
|
55
|
-
/**
|
|
56
|
-
* The address a fleet fan-out probe should hand to `ssh` for a device: the
|
|
57
|
-
* registry's known-good Tailscale dnsName/IP (via {@link sshTargetFor}) when
|
|
58
|
-
* present, else the bare name (an address-less manual device dials by name as
|
|
59
|
-
* before — never worse than the old behaviour).
|
|
60
|
-
*
|
|
61
|
-
* Prefer the registry address so a stale `~/.ssh/config` alias can never shadow
|
|
62
|
-
* it: dialing the bare device name lets ssh resolve it through the user's config,
|
|
63
|
-
* where a hand-written `Host <name>` block with a DHCP-drifted LAN IP silently
|
|
64
|
-
* shadows the correct entry, times out, and makes a reachable box look dead.
|
|
65
|
-
* Pure/testable.
|
|
66
|
-
*/
|
|
67
35
|
export function fleetDialTarget(device) {
|
|
68
36
|
try {
|
|
69
37
|
return sshTargetFor(device);
|
|
@@ -73,41 +41,13 @@ export function fleetDialTarget(device) {
|
|
|
73
41
|
return resolved.user ? `${resolved.user}@${resolved.name}` : resolved.name;
|
|
74
42
|
}
|
|
75
43
|
}
|
|
76
|
-
/**
|
|
77
|
-
* Render `cmd` as the single command string ssh sends to the peer.
|
|
78
|
-
*
|
|
79
|
-
* Windows devices speak PowerShell, so the result is run through
|
|
80
|
-
* `powershell -NoProfile -EncodedCommand`; POSIX devices get it as the remote
|
|
81
|
-
* login shell sees it. Returns undefined when no command was given (interactive
|
|
82
|
-
* login).
|
|
83
|
-
*
|
|
84
|
-
* TWO MODES, and the difference is load-bearing rather than a convenience.
|
|
85
|
-
*
|
|
86
|
-
* The default joins the tokens RAW. That is not a bug to be tidied away: every
|
|
87
|
-
* existing caller of `agents ssh` relies on the remote shell interpreting what it
|
|
88
|
-
* is handed — `agents ssh box 'bash -lc "cd x && make"'` arrives as ONE token
|
|
89
|
-
* whose pipeline, globs and redirections the peer's shell must expand. Quoting
|
|
90
|
-
* that would ship the whole line as a literal argument and break it.
|
|
91
|
-
*
|
|
92
|
-
* `{ argv: true }` is for a caller that genuinely holds an argv ARRAY and needs
|
|
93
|
-
* each element delivered as exactly one token. Joining those raw destroys any
|
|
94
|
-
* token containing a space or a metacharacter — `['--title', 'two words']`
|
|
95
|
-
* arrives as three tokens, and `'a & b'` arrives as a backgrounded command — which
|
|
96
|
-
* is what a native client hitting this path actually hit.
|
|
97
|
-
*
|
|
98
|
-
* So fidelity is opt-in at the call site that knows which shape it has, and the
|
|
99
|
-
* quoting itself reuses the canonical helpers (`shellQuote`, {@link pwshQuote})
|
|
100
|
-
* rather than introducing a third escaping scheme.
|
|
101
|
-
*/
|
|
102
44
|
export function wrapRemoteCommand(device, cmd, opts = {}) {
|
|
45
|
+
// Raw mode preserves caller shell syntax; argv mode preserves token boundaries.
|
|
103
46
|
if (cmd.length === 0)
|
|
104
47
|
return undefined;
|
|
105
48
|
const prelude = opts.prelude ?? [];
|
|
106
49
|
let script;
|
|
107
50
|
if (opts.argv) {
|
|
108
|
-
// Quote EACH caller token so the peer receives it byte-for-byte, then prefix
|
|
109
|
-
// the prelude VERBATIM — it is already shell syntax and re-quoting it would
|
|
110
|
-
// break it (see `fleetRemotePrelude`).
|
|
111
51
|
if (device.shell === 'powershell') {
|
|
112
52
|
script = pwshExactArgvScript(cmd, prelude);
|
|
113
53
|
}
|
|
@@ -116,106 +56,39 @@ export function wrapRemoteCommand(device, cmd, opts = {}) {
|
|
|
116
56
|
}
|
|
117
57
|
}
|
|
118
58
|
else {
|
|
119
|
-
// The default joins raw, which is what lets a caller hand the remote shell
|
|
120
|
-
// something to interpret. See the docblock above for why both must exist.
|
|
121
59
|
script = [...prelude, ...cmd].join(' ');
|
|
122
60
|
}
|
|
123
61
|
if (device.shell === 'powershell') {
|
|
124
|
-
// Same renderer the Windows `agents` launcher uses, so a long script gets the
|
|
125
|
-
// compressed representation here too rather than only on that path. The
|
|
126
|
-
// interactive login route (`buildInteractiveShellCommand`, -NoExit) is
|
|
127
|
-
// deliberately left alone: it must stay an interactive session.
|
|
128
62
|
return renderPowershellCommand(script);
|
|
129
63
|
}
|
|
130
64
|
return script;
|
|
131
65
|
}
|
|
132
|
-
/**
|
|
133
|
-
* Single-quote one token for PowerShell's OWN parser. Inside a single-quoted pwsh
|
|
134
|
-
* string the only special character is `'`, escaped by doubling.
|
|
135
|
-
*
|
|
136
|
-
* This is correct for a value PowerShell itself consumes, and NOT sufficient for
|
|
137
|
-
* an argument handed on to a native program — see the Win32 note below.
|
|
138
|
-
*/
|
|
139
66
|
export function pwshQuote(token) {
|
|
140
67
|
return `'${token.replace(/'/g, "''")}'`;
|
|
141
68
|
}
|
|
142
|
-
/**
|
|
143
|
-
* Emit a PowerShell script that runs `cmd` with EXACT argv, for either kind of
|
|
144
|
-
* target a Windows peer can name.
|
|
145
|
-
*
|
|
146
|
-
* Windows has no argv array: a process receives ONE string and splits it itself.
|
|
147
|
-
* PowerShell 5.1 rebuilds that string when it invokes a native program, and its
|
|
148
|
-
* serializer is lossy — measured on a real peer, an EMPTY argument is dropped and
|
|
149
|
-
* an embedded `"` is discarded, so the callee's argv silently shifts.
|
|
150
|
-
*
|
|
151
|
-
* The obvious fix, the `--%` stop-parsing token, is NOT used, because measurement
|
|
152
|
-
* killed it three ways:
|
|
153
|
-
* - it only applies to a NATIVE command, and `agents` on Windows resolves to
|
|
154
|
-
* `agents.ps1`, so a script target received `--%` as a literal argument and
|
|
155
|
-
* the whole remainder as one string;
|
|
156
|
-
* - a token containing a NEWLINE terminates the directive, producing a parser
|
|
157
|
-
* error;
|
|
158
|
-
* - it performs cmd-style `%VAR%` expansion, so a literal `%PATH%` became six
|
|
159
|
-
* arguments — the exact opposite of exact argv.
|
|
160
|
-
*
|
|
161
|
-
* So the script branches on what the peer's own command discovery finds:
|
|
162
|
-
*
|
|
163
|
-
* - **native executable** — launched through `System.Diagnostics.Process` with a
|
|
164
|
-
* pre-built `Arguments` string escaped by {@link quoteWin32ExecArg}. .NET hands
|
|
165
|
-
* that string to `CreateProcess` essentially verbatim, so the child's
|
|
166
|
-
* `CommandLineToArgvW` reconstructs the tokens exactly; no shell sees it, so
|
|
167
|
-
* no `%VAR%` expansion and no newline sensitivity. `UseShellExecute = $false`
|
|
168
|
-
* with no redirection leaves the child on the inherited handles, which is what
|
|
169
|
-
* lets a binary stdout stream through unchanged.
|
|
170
|
-
* - **anything else** (a `.ps1`/`.cmd` launcher, a function, a cmdlet, an alias)
|
|
171
|
-
* — invoked with a splatted PowerShell array. That is an in-process call, so
|
|
172
|
-
* the native serializer is never involved and every token survives as itself.
|
|
173
|
-
*
|
|
174
|
-
* The exit code is propagated in both branches; a script launcher that sets no
|
|
175
|
-
* `$LASTEXITCODE` is left alone rather than forced to 0.
|
|
176
|
-
*/
|
|
177
69
|
function pwshExactArgvScript(cmd, prelude) {
|
|
178
|
-
// The Agents CLI gets the canonical launcher, not the generic dispatch. On
|
|
179
|
-
// Windows `agents` is an npm `agents.ps1` whose own body splats `$args` into
|
|
180
|
-
// native node.exe — the PowerShell 5.1 lossy path — so even a perfectly
|
|
181
|
-
// splatted call into that script loses an embedded quote one layer deeper.
|
|
182
|
-
// `windowsAgentsInvocation` resolves the package's declared entry and runs it
|
|
183
|
-
// directly, which is the only way the real Agents parser sees exact tokens.
|
|
184
70
|
const bin = cmd[0];
|
|
71
|
+
// Bypass npm's PowerShell shim: its second native hop loses exact argv boundaries.
|
|
185
72
|
if (bin === 'agents' || bin === 'ag') {
|
|
186
|
-
// `windowsAgentsInvocation` leaves the child's code in `$zq`.
|
|
187
73
|
return [...prelude, windowsAgentsInvocation(cmd.slice(1), bin), 'exit $zq'].join('\n');
|
|
188
74
|
}
|
|
189
75
|
const program = pwshQuote(cmd[0]);
|
|
190
76
|
const rest = cmd.slice(1);
|
|
191
77
|
const splat = rest.length > 0 ? `@(${rest.map(pwshQuote).join(', ')})` : '@()';
|
|
78
|
+
// Native applications need the Win32 emitter; cmdlets and scripts receive a splatted PowerShell array.
|
|
192
79
|
return [
|
|
193
80
|
...prelude,
|
|
194
81
|
`$ErrorActionPreference='Stop'`,
|
|
195
82
|
`$__c = Get-Command -Name ${program} -ErrorAction Stop`,
|
|
196
83
|
`if ($__c.CommandType -eq 'Application') {`,
|
|
197
|
-
// One emitter for the .NET native-exec block, shared with the Windows
|
|
198
|
-
// `agents` launcher in `hosts/remote-cmd.ts`; a second copy would drift.
|
|
199
84
|
...pwshNativeExecStatements('$__c.Source', pwshLiteral(rest.map(quoteWin32ExecArg).join(' '))).map((line) => ` ${line}`),
|
|
200
|
-
// `pwshNativeExecStatements` names the process handle `$zp`.
|
|
201
85
|
` exit $zp.ExitCode`,
|
|
202
86
|
`}`,
|
|
203
|
-
// `@__a` SPLATS the array into separate arguments. `& $__c @(...)` on an
|
|
204
|
-
// array LITERAL does not splat — it passes one array-valued argument, which
|
|
205
|
-
// a real peer reported back as every token collapsed into one.
|
|
206
87
|
`$__a = ${splat}`,
|
|
207
88
|
`& $__c @__a`,
|
|
208
89
|
`if ($null -ne $LASTEXITCODE) { exit $LASTEXITCODE }`,
|
|
209
90
|
].join('\n');
|
|
210
91
|
}
|
|
211
|
-
/**
|
|
212
|
-
* True when `cmd` is a browser drive: `agents browser …`, `ag browser …`, or
|
|
213
|
-
* the standalone `browser` binary (`cli/package.json` `bin.browser` →
|
|
214
|
-
* `src/browser.ts`), including the quoted single-string form
|
|
215
|
-
* `agents ssh box 'browser …'`. The `--device` passthrough stamps
|
|
216
|
-
* {@link markFleetRemote} on this shape so the far-side consent gate can fire;
|
|
217
|
-
* `agents ssh` must too (PHNX-3065).
|
|
218
|
-
*/
|
|
219
92
|
export function isAgentsBrowserDrive(cmd) {
|
|
220
93
|
if (cmd.length === 0)
|
|
221
94
|
return false;
|
|
@@ -225,38 +98,8 @@ export function isAgentsBrowserDrive(cmd) {
|
|
|
225
98
|
return true;
|
|
226
99
|
return (bin === 'agents' || bin === 'ag') && tokens[1] === 'browser';
|
|
227
100
|
}
|
|
228
|
-
/**
|
|
229
|
-
* Prefix a remote command with the provenance the far-side browser needs: the
|
|
230
|
-
* `AGENTS_FLEET_REMOTE=1` consent marker AND the caller's resolved actor
|
|
231
|
-
* (`AGENTS_ACTOR*`/`GIT_*`). Without the actor, a task created over
|
|
232
|
-
* `agents ssh <host> 'agents browser …'` is stamped `UNRESOLVED@<host>` because
|
|
233
|
-
* the peer re-resolves identity from its own (empty) env — the same RUSH-2028
|
|
234
|
-
* gap the `--device` dispatch already closes via `withActorEnv`, applied here to
|
|
235
|
-
* the `agents ssh` browser-drive seam so ownership is honest across BOTH paths.
|
|
236
|
-
*
|
|
237
|
-
* `wrapRemoteCommand` joins the argv with spaces (POSIX) or base64-encodes it for
|
|
238
|
-
* PowerShell, so a shell-appropriate prelude rides through both: `env VAR=v …` on
|
|
239
|
-
* POSIX, `$env:VAR='v'; …` on PowerShell. The marker stays the FIRST token so the
|
|
240
|
-
* consent gate and the idempotency guard below both still key on it.
|
|
241
|
-
*
|
|
242
|
-
* `provenanceEnv` is injectable so tests can pin a deterministic actor; it
|
|
243
|
-
* defaults to the live resolved actor. Already-marked argv (the `--device`
|
|
244
|
-
* fan-out stamps the marker before {@link buildSshInvocation}) is left unchanged
|
|
245
|
-
* so nothing is doubled.
|
|
246
|
-
*/
|
|
247
|
-
/**
|
|
248
|
-
* The provenance prefix as READY SHELL SYNTAX for the device's shell.
|
|
249
|
-
*
|
|
250
|
-
* These tokens are already quoted/escaped for their target shell — a POSIX
|
|
251
|
-
* `K=V` pair is `shellQuote`d here, and a PowerShell assignment is a complete
|
|
252
|
-
* statement with its own doubled quotes. That matters because argv mode quotes
|
|
253
|
-
* every token it is handed: quoting THESE again turns
|
|
254
|
-
* `'AGENTS_ACTOR=Some Name'` into `''\''AGENTS_ACTOR=Some Name'\'''` and turns a
|
|
255
|
-
* pwsh assignment into an inert string literal. So the prelude is composed
|
|
256
|
-
* SEPARATELY from the caller's argv rather than concatenated into it, and this is
|
|
257
|
-
* the single definition both paths use.
|
|
258
|
-
*/
|
|
259
101
|
export function fleetRemotePrelude(device, provenanceEnv = actorEnv(resolveActor())) {
|
|
102
|
+
// These entries are already shell syntax and must be composed separately from argv quoting.
|
|
260
103
|
if (device.shell === 'powershell') {
|
|
261
104
|
return [
|
|
262
105
|
`$env:AGENTS_FLEET_REMOTE='1';`,
|
|
@@ -269,54 +112,23 @@ export function fleetRemotePrelude(device, provenanceEnv = actorEnv(resolveActor
|
|
|
269
112
|
...Object.entries(provenanceEnv).map(([k, v]) => shellQuote(`${k}=${v}`)),
|
|
270
113
|
];
|
|
271
114
|
}
|
|
272
|
-
/** True when `cmd` already carries the prelude {@link fleetRemotePrelude} emits. */
|
|
273
115
|
function alreadyMarked(cmd, device) {
|
|
274
116
|
if (device.shell === 'powershell')
|
|
275
117
|
return cmd[0] === `$env:AGENTS_FLEET_REMOTE='1';`;
|
|
276
118
|
return cmd[0] === 'env' && cmd[1] === 'AGENTS_FLEET_REMOTE=1';
|
|
277
119
|
}
|
|
278
120
|
export function markFleetRemote(cmd, device, provenanceEnv = actorEnv(resolveActor())) {
|
|
279
|
-
// Exact-match guard: the marker token is always this literal, so `startsWith`
|
|
280
|
-
// would only loosen it for no gain.
|
|
281
121
|
if (alreadyMarked(cmd, device))
|
|
282
122
|
return cmd;
|
|
283
123
|
return [...fleetRemotePrelude(device, provenanceEnv), ...cmd];
|
|
284
124
|
}
|
|
285
|
-
/**
|
|
286
|
-
* Build the remote command that starts an INTERACTIVE LOGIN shell inside a
|
|
287
|
-
* mirrored project directory, falling back to the remote home when that
|
|
288
|
-
* directory is absent. Returns undefined when there is nothing to mirror
|
|
289
|
-
* (`mirrorCwd` is undefined, or resolves to the home root itself) so the caller
|
|
290
|
-
* keeps the plain no-command interactive login.
|
|
291
|
-
*
|
|
292
|
-
* This is the interactive analogue of `agents run --device`'s cwd mirroring, and
|
|
293
|
-
* it reuses the SAME machinery so there is no second resolver: the portable
|
|
294
|
-
* `mirrorCwd` comes from `deriveMirroredCwd`, and — for POSIX — the best-effort
|
|
295
|
-
* `cd` comes from `remoteCdPrefix({ mirror: true })`, whose `|| cd "$HOME"`
|
|
296
|
-
* guarantees a missing checkout never fails the login (acceptance #2). It then
|
|
297
|
-
* replaces the wrapper with a login shell (`exec "$SHELL" -l`); running under
|
|
298
|
-
* the forced tty (`-tt`, see {@link buildSshInvocation}) makes that login shell
|
|
299
|
-
* interactive, so prompt, startup files, and login behavior match a plain
|
|
300
|
-
* `ssh <host>` (acceptance #1).
|
|
301
|
-
*
|
|
302
|
-
* PowerShell hosts get a profile-loading interactive shell (`-NoExit`, and
|
|
303
|
-
* deliberately NOT `-NoProfile` so the user's profile still runs) that
|
|
304
|
-
* `Set-Location`s into the mirrored dir when it exists. The path is carried
|
|
305
|
-
* through `-EncodedCommand` (base64 UTF-16LE), so it is literal and
|
|
306
|
-
* injection-safe regardless of spaces or shell metacharacters (acceptance #3).
|
|
307
|
-
*/
|
|
308
125
|
export function buildInteractiveShellCommand(device, mirrorCwd) {
|
|
309
126
|
if (!mirrorCwd)
|
|
310
127
|
return undefined;
|
|
311
128
|
const rest = homeRemainder(mirrorCwd);
|
|
312
|
-
// Only a real sub-path of the home dir is worth mirroring; the home root
|
|
313
|
-
// itself (rest === '') is where a plain login already lands, and a
|
|
314
|
-
// non-home-anchored path (rest === null) has no meaningful remote analogue.
|
|
315
129
|
if (rest === null || rest === '')
|
|
316
130
|
return undefined;
|
|
317
131
|
if (device.shell === 'powershell') {
|
|
318
|
-
// Single-quoted PowerShell literal: the only escape inside '…' is '' for a
|
|
319
|
-
// literal quote, so this is injection-safe for any path.
|
|
320
132
|
const literal = rest.replace(/'/g, "''");
|
|
321
133
|
const script = `$d = Join-Path -Path $HOME -ChildPath '${literal}'; ` +
|
|
322
134
|
`if (Test-Path -LiteralPath $d) { Set-Location -LiteralPath $d }`;
|
|
@@ -324,58 +136,16 @@ export function buildInteractiveShellCommand(device, mirrorCwd) {
|
|
|
324
136
|
}
|
|
325
137
|
return `${remoteCdPrefix(mirrorCwd, { mirror: true })}exec "$SHELL" -l`;
|
|
326
138
|
}
|
|
327
|
-
/** OpenSSH argv that makes an explicit device key authoritative. */
|
|
328
139
|
export function deviceIdentityArgs(device) {
|
|
329
140
|
const resolved = resolveDeviceProfile(device);
|
|
330
141
|
return resolved.auth?.method === 'key' && resolved.auth.identityFile
|
|
331
142
|
? ['-i', resolved.auth.identityFile, '-o', 'IdentitiesOnly=yes']
|
|
332
143
|
: [];
|
|
333
144
|
}
|
|
334
|
-
/**
|
|
335
|
-
* Build the argv (after the `ssh` program name) and the environment overlay
|
|
336
|
-
* for connecting to a device. For password auth this points `SSH_ASKPASS` at
|
|
337
|
-
* the shim and disables pubkey + the host's interactive password prompt so the
|
|
338
|
-
* shim is the only auth path. Pure (no spawn) so it is unit-testable.
|
|
339
|
-
*
|
|
340
|
-
* Host-key checking runs against the CLI-managed known_hosts store (never the
|
|
341
|
-
* user's `~/.ssh/known_hosts`): strict once `hostKey.pinned` is set, else
|
|
342
|
-
* `accept-new` to learn+pin the key on first connect (RUSH-1767).
|
|
343
|
-
*
|
|
344
|
-
* `opts.agentOnly` marks the connection as a read-only probe: for password auth
|
|
345
|
-
* it sets {@link ASKPASS_AGENT_ONLY_ENV} in the overlay so the askpass resolve
|
|
346
|
-
* stays broker-only and never pops a foreground biometric (RUSH-1970).
|
|
347
|
-
*
|
|
348
|
-
* `opts.interactiveCwd` is the portable (`~/…`) directory to mirror on an
|
|
349
|
-
* interactive login (no `cmd`) — from `deriveMirroredCwd(process.cwd())`. When
|
|
350
|
-
* it names a real home-relative sub-path, the login starts there via
|
|
351
|
-
* {@link buildInteractiveShellCommand} (best-effort — a missing dir falls back
|
|
352
|
-
* to the remote home), matching `agents run --device`. It is ignored when a `cmd`
|
|
353
|
-
* is given: an explicit command keeps its current cwd (the remote home) and its
|
|
354
|
-
* behavior unchanged (RUSH-2412).
|
|
355
|
-
*
|
|
356
|
-
* An `agents browser …` / `ag browser …` / standalone `browser …` command is
|
|
357
|
-
* prefixed with {@link markFleetRemote} so the far-side consent gate sees
|
|
358
|
-
* `AGENTS_FLEET_REMOTE=1` the same way `browser --device` does. The local `env`
|
|
359
|
-
* overlay here is for the ssh *client* (askpass); it cannot carry the marker —
|
|
360
|
-
* OpenSSH does not forward arbitrary env (PHNX-3065).
|
|
361
|
-
*/
|
|
362
145
|
export function buildSshInvocation(device, cmd, askpassShimPath, hostKey = {}, opts = {}) {
|
|
363
|
-
// The effective profile: central config (ssh.*/platform/user) overlaid on
|
|
364
|
-
// the registry's discovery record.
|
|
365
146
|
device = resolveDeviceProfile(device);
|
|
366
147
|
const target = sshTargetFor(device);
|
|
367
|
-
// No cmd ⇒ interactive login. It may still carry a derived cd+login-shell
|
|
368
|
-
// wrapper (interactiveCwd), which is an interactive login too and still needs
|
|
369
|
-
// a real tty below.
|
|
370
148
|
const interactive = cmd.length === 0;
|
|
371
|
-
// Stamp the consent marker on the REMOTE command, not the local ssh env:
|
|
372
|
-
// SSH_ASKPASS lives on this side; AGENTS_FLEET_REMOTE must be visible to the
|
|
373
|
-
// process that runs on the peer.
|
|
374
|
-
// Provenance is composed as a PRELUDE, not prepended to the argv array. In argv
|
|
375
|
-
// mode every token handed to `wrapRemoteCommand` is quoted, and the prelude is
|
|
376
|
-
// already shell syntax — mixing them in meant the actor pairs were quoted twice
|
|
377
|
-
// (breaking any value with a space or a quote) and the pwsh assignments became
|
|
378
|
-
// inert string literals.
|
|
379
149
|
const needsProvenance = !interactive && isAgentsBrowserDrive(cmd) && !alreadyMarked(cmd, device);
|
|
380
150
|
const prelude = needsProvenance ? fleetRemotePrelude(device) : [];
|
|
381
151
|
const remote = interactive
|
|
@@ -387,6 +157,7 @@ export function buildSshInvocation(device, cmd, askpassShimPath, hostKey = {}, o
|
|
|
387
157
|
'-o', 'ConnectTimeout=10',
|
|
388
158
|
];
|
|
389
159
|
if (device.auth.method === 'password') {
|
|
160
|
+
// Passwords stay in forced askpass environment state and never enter process arguments.
|
|
390
161
|
if (!device.auth.bundle) {
|
|
391
162
|
throw new Error(`Device '${device.name}' uses password auth but has no secrets bundle. Set one with \`agents devices config ${device.name} ssh.bundle <name>\`.`);
|
|
392
163
|
}
|
|
@@ -402,8 +173,6 @@ export function buildSshInvocation(device, cmd, askpassShimPath, hostKey = {}, o
|
|
|
402
173
|
args.push('-o', 'BatchMode=yes');
|
|
403
174
|
args.push(...deviceIdentityArgs(device));
|
|
404
175
|
}
|
|
405
|
-
// An interactive login needs a real tty — whether it starts a bare login
|
|
406
|
-
// shell (no remote command) or the derived cd+login-shell mirror.
|
|
407
176
|
if (interactive)
|
|
408
177
|
args.push('-tt');
|
|
409
178
|
args.push(target);
|
|
@@ -411,27 +180,10 @@ export function buildSshInvocation(device, cmd, askpassShimPath, hostKey = {}, o
|
|
|
411
180
|
args.push(remote);
|
|
412
181
|
return { args, env };
|
|
413
182
|
}
|
|
414
|
-
/**
|
|
415
|
-
* Build the askpass shim's `#!/bin/sh` body: a script that re-invokes this CLI
|
|
416
|
-
* as `agents ssh __askpass`. The relaunch argv comes from {@link getCliLaunch},
|
|
417
|
-
* never a hand-rolled `[process.execPath, process.argv[1], …]` — on a Bun
|
|
418
|
-
* standalone binary `process.argv[1]` is the *virtual* embedded entry
|
|
419
|
-
* `/$bunfs/root/agents`, which the CLI would then receive as a bogus subcommand
|
|
420
|
-
* (`unknown command '/$bunfs/root/agents'`), print nothing, and hand ssh an
|
|
421
|
-
* empty password. `getCliLaunch` resolves the physical executable so the shim
|
|
422
|
-
* works on both the standalone and JS/dev builds. Every argv element is
|
|
423
|
-
* shell-quoted. Pure (takes the launch as a parameter) so it is unit-testable.
|
|
424
|
-
*/
|
|
425
183
|
export function buildAskpassShimBody(launch = getCliLaunch(['ssh', '__askpass'])) {
|
|
426
184
|
const exec = [launch.command, ...launch.args].map(shellQuote).join(' ');
|
|
427
185
|
return `#!/bin/sh\n# Generated by agents-cli — bridges ssh SSH_ASKPASS back into the CLI.\nexec ${exec}\n`;
|
|
428
186
|
}
|
|
429
|
-
/**
|
|
430
|
-
* Write (idempotently) the askpass shim — a tiny executable that re-invokes
|
|
431
|
-
* this CLI as `agents ssh __askpass`. ssh execs `SSH_ASKPASS` with no usable
|
|
432
|
-
* args, so the shim carries no secret itself; it only bridges ssh's askpass
|
|
433
|
-
* protocol back into the CLI, which then resolves the bundle.
|
|
434
|
-
*/
|
|
435
187
|
export function writeAskpassShim() {
|
|
436
188
|
const dir = path.join(getCacheDir(), 'devices');
|
|
437
189
|
fs.mkdirSync(dir, { recursive: true });
|
|
@@ -1,35 +1,11 @@
|
|
|
1
1
|
import type { HostEntry } from '../types.js';
|
|
2
2
|
import type { IgnoredDeviceEntry } from '../fleet/types.js';
|
|
3
|
-
/** One parsed device doc under `~/.agents/devices/`. */
|
|
4
3
|
export interface DeviceDoc {
|
|
5
4
|
device: string;
|
|
6
5
|
doc: Record<string, unknown>;
|
|
7
6
|
}
|
|
8
|
-
/**
|
|
9
|
-
* Every device doc, sorted by device name so the union is order-independent. A
|
|
10
|
-
* corrupt or non-map doc throws (loud), never silently skipped — a dropped doc
|
|
11
|
-
* would let the next writer clobber that peer's slice.
|
|
12
|
-
*/
|
|
13
7
|
export declare function readAllDeviceDocs(): DeviceDoc[];
|
|
14
|
-
/**
|
|
15
|
-
* Union the per-box `fleet.discovery` maps. Precedence for a name declared by
|
|
16
|
-
* more than one box is deterministic and order-independent: `ignored` beats
|
|
17
|
-
* `approved` (a dismissal on any box wins), so every box computes the identical
|
|
18
|
-
* effective policy regardless of walk order.
|
|
19
|
-
*/
|
|
20
8
|
export declare function unionDeviceDiscovery(docs?: DeviceDoc[]): Record<string, 'approved' | 'ignored'>;
|
|
21
|
-
/**
|
|
22
|
-
* Union the per-box `fleet.ignored` dismissal lists by node name. When two boxes
|
|
23
|
-
* dismissed the same node, the entry with the newest `ignoredAt` wins (ties
|
|
24
|
-
* broken by `ignoredOn`), so the attribution is deterministic and
|
|
25
|
-
* order-independent. Sorted by name to match the central writer's ordering.
|
|
26
|
-
*/
|
|
27
9
|
export declare function unionDeviceIgnored(docs?: DeviceDoc[]): IgnoredDeviceEntry[];
|
|
28
|
-
/** Insert/replace a dismissal, newest ignoredAt (then ignoredOn) winning. */
|
|
29
10
|
export declare function addIgnoredEntry(byName: Map<string, IgnoredDeviceEntry>, entry: IgnoredDeviceEntry): void;
|
|
30
|
-
/**
|
|
31
|
-
* Union the per-box `hosts:` registries by host name. When two boxes registered
|
|
32
|
-
* the same name, the newest `addedAt` wins (ties broken by device name), so the
|
|
33
|
-
* merged directory is deterministic. Entries missing `addedAt` sort oldest.
|
|
34
|
-
*/
|
|
35
11
|
export declare function unionDeviceHosts(docs?: DeviceDoc[]): Record<string, HostEntry>;
|
|
@@ -1,21 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Union-on-read across every tracked device document (PHNX-3315).
|
|
3
|
-
*
|
|
4
|
-
* Phase 2 device-scopes three writers that used to rewrite one fleet-shared
|
|
5
|
-
* block in the central `agents.yaml` (fleet discovery/dismissals, the host
|
|
6
|
-
* registry, and device-scoped accounts). Each box now records only its OWN
|
|
7
|
-
* decisions in `~/.agents/devices/<machine>/agents.yaml`, so pulls never
|
|
8
|
-
* conflict — and the effective fleet view is recomputed here as a deterministic,
|
|
9
|
-
* order-independent UNION across every device doc, exactly like the browser
|
|
10
|
-
* profile registry (`lib/browser/registry.ts` `profileRegistry`).
|
|
11
|
-
*
|
|
12
|
-
* These readers walk the device docs ONLY. The central-legacy values (present
|
|
13
|
-
* until the fold-then-delete migration drains them) are merged in by each
|
|
14
|
-
* caller, so a value mid-migration is never lost. A doc that fails to parse is a
|
|
15
|
-
* hard error — silently returning an empty union would let a later write wipe a
|
|
16
|
-
* peer's decision, the same corruption contract `routine-activation.ts` and the
|
|
17
|
-
* device registry keep.
|
|
18
|
-
*/
|
|
19
1
|
import * as fs from 'node:fs';
|
|
20
2
|
import * as path from 'node:path';
|
|
21
3
|
import * as yaml from 'yaml';
|
|
@@ -23,11 +5,6 @@ import { getUserAgentsDir } from '../state.js';
|
|
|
23
5
|
function isRecord(value) {
|
|
24
6
|
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
25
7
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Every device doc, sorted by device name so the union is order-independent. A
|
|
28
|
-
* corrupt or non-map doc throws (loud), never silently skipped — a dropped doc
|
|
29
|
-
* would let the next writer clobber that peer's slice.
|
|
30
|
-
*/
|
|
31
8
|
export function readAllDeviceDocs() {
|
|
32
9
|
const devicesDir = path.join(getUserAgentsDir(), 'devices');
|
|
33
10
|
if (!fs.existsSync(devicesDir))
|
|
@@ -58,12 +35,6 @@ export function readAllDeviceDocs() {
|
|
|
58
35
|
}
|
|
59
36
|
return out;
|
|
60
37
|
}
|
|
61
|
-
/**
|
|
62
|
-
* Union the per-box `fleet.discovery` maps. Precedence for a name declared by
|
|
63
|
-
* more than one box is deterministic and order-independent: `ignored` beats
|
|
64
|
-
* `approved` (a dismissal on any box wins), so every box computes the identical
|
|
65
|
-
* effective policy regardless of walk order.
|
|
66
|
-
*/
|
|
67
38
|
export function unionDeviceDiscovery(docs = readAllDeviceDocs()) {
|
|
68
39
|
const out = {};
|
|
69
40
|
for (const { device, doc } of docs) {
|
|
@@ -81,7 +52,6 @@ export function unionDeviceDiscovery(docs = readAllDeviceDocs()) {
|
|
|
81
52
|
if (status !== 'approved' && status !== 'ignored') {
|
|
82
53
|
throw new Error(`Device discovery policy for '${name}' in devices/${device}/agents.yaml must be approved or ignored.`);
|
|
83
54
|
}
|
|
84
|
-
// ignored beats approved; once ignored, never downgraded by another box.
|
|
85
55
|
if (out[name] === 'ignored')
|
|
86
56
|
continue;
|
|
87
57
|
out[name] = status;
|
|
@@ -89,12 +59,6 @@ export function unionDeviceDiscovery(docs = readAllDeviceDocs()) {
|
|
|
89
59
|
}
|
|
90
60
|
return out;
|
|
91
61
|
}
|
|
92
|
-
/**
|
|
93
|
-
* Union the per-box `fleet.ignored` dismissal lists by node name. When two boxes
|
|
94
|
-
* dismissed the same node, the entry with the newest `ignoredAt` wins (ties
|
|
95
|
-
* broken by `ignoredOn`), so the attribution is deterministic and
|
|
96
|
-
* order-independent. Sorted by name to match the central writer's ordering.
|
|
97
|
-
*/
|
|
98
62
|
export function unionDeviceIgnored(docs = readAllDeviceDocs()) {
|
|
99
63
|
const byName = new Map();
|
|
100
64
|
for (const { device, doc } of docs) {
|
|
@@ -117,7 +81,6 @@ export function unionDeviceIgnored(docs = readAllDeviceDocs()) {
|
|
|
117
81
|
}
|
|
118
82
|
return [...byName.values()].sort((a, b) => a.name.localeCompare(b.name));
|
|
119
83
|
}
|
|
120
|
-
/** Insert/replace a dismissal, newest ignoredAt (then ignoredOn) winning. */
|
|
121
84
|
export function addIgnoredEntry(byName, entry) {
|
|
122
85
|
const prev = byName.get(entry.name);
|
|
123
86
|
if (!prev) {
|
|
@@ -130,11 +93,6 @@ export function addIgnoredEntry(byName, entry) {
|
|
|
130
93
|
byName.set(entry.name, entry);
|
|
131
94
|
}
|
|
132
95
|
}
|
|
133
|
-
/**
|
|
134
|
-
* Union the per-box `hosts:` registries by host name. When two boxes registered
|
|
135
|
-
* the same name, the newest `addedAt` wins (ties broken by device name), so the
|
|
136
|
-
* merged directory is deterministic. Entries missing `addedAt` sort oldest.
|
|
137
|
-
*/
|
|
138
96
|
export function unionDeviceHosts(docs = readAllDeviceDocs()) {
|
|
139
97
|
const out = {};
|
|
140
98
|
const wonAt = new Map();
|
|
@@ -157,7 +115,3 @@ export function unionDeviceHosts(docs = readAllDeviceDocs()) {
|
|
|
157
115
|
}
|
|
158
116
|
return out;
|
|
159
117
|
}
|
|
160
|
-
// Native accounts and their bindings are machine-local (a native login lives in
|
|
161
|
-
// the harness home on ONE box), so account-registry.ts reads THIS box's own
|
|
162
|
-
// slice (meta.deviceAccounts) merged with the fleet-shared central store rather
|
|
163
|
-
// than a cross-box union — there is deliberately no unionDeviceAccounts here.
|
|
@@ -5,39 +5,9 @@ interface DeviceDiscoveryReconcileResult {
|
|
|
5
5
|
registered: string[];
|
|
6
6
|
unresolved: string[];
|
|
7
7
|
}
|
|
8
|
-
/** Read one portable decision. Absence means pending. */
|
|
9
8
|
export declare function getDeviceDiscoveryStatus(name: string): DeviceDiscoveryStatus | undefined;
|
|
10
|
-
/**
|
|
11
|
-
* Persist ONE discovery decision in THIS box's device doc (PHNX-3315). Each box
|
|
12
|
-
* records only its own choices in `devices/<machine>/agents.yaml` `fleet.discovery`,
|
|
13
|
-
* so N boxes no longer rewrite one shared central map (the guaranteed pull
|
|
14
|
-
* conflict). The effective policy is the union across every box
|
|
15
|
-
* ({@link loadDeviceDiscoveryPolicies}).
|
|
16
|
-
*/
|
|
17
9
|
export declare function setDeviceDiscoveryStatus(name: string, status: DeviceDiscoveryStatus | undefined): void;
|
|
18
|
-
/**
|
|
19
|
-
* The effective discovery policy: the UNION across every box's device doc, plus
|
|
20
|
-
* any lingering central-legacy map (drained by the fold-then-delete migration).
|
|
21
|
-
* Precedence for a name declared by more than one box is deterministic and
|
|
22
|
-
* order-independent — `ignored` beats `approved` — so every box computes the
|
|
23
|
-
* identical policy. Absence means pending.
|
|
24
|
-
*/
|
|
25
10
|
export declare function loadDeviceDiscoveryPolicies(): Map<string, DeviceDiscoveryStatus>;
|
|
26
|
-
/**
|
|
27
|
-
* Apply synced intent to this machine's local registry. Approval resolves live
|
|
28
|
-
* Tailscale metadata; ignore never needs the network. Missing approved peers are
|
|
29
|
-
* reported as unresolved rather than written with invented connection details.
|
|
30
|
-
*
|
|
31
|
-
* Only devices with an EXPLICIT entry in the synced policy are touched. A
|
|
32
|
-
* device absent from the map is left alone, whether or not the map itself is
|
|
33
|
-
* defined — the map is not treated as authoritative-by-omission, because not
|
|
34
|
-
* every local registration path writes a policy entry (daemon/umbrella
|
|
35
|
-
* auto-refresh, and any device registered before this feature shipped).
|
|
36
|
-
* Wiping those on the next `agents repo pull user` would be
|
|
37
|
-
* silent, fleet-wide data loss for a decision (e.g. "ignore this one iPad")
|
|
38
|
-
* that never meant to touch them.
|
|
39
|
-
*/
|
|
40
11
|
export declare function reconcileDeviceDiscoveryPolicies(): Promise<DeviceDiscoveryReconcileResult>;
|
|
41
|
-
/** Complete reconciliation from real `tailscale status --json` output. */
|
|
42
12
|
export declare function registerApprovedDevicesFromTailscale(json: string, approved: string[], ignored: string[], missing: string[]): Promise<DeviceDiscoveryReconcileResult>;
|
|
43
13
|
export {};
|
|
@@ -1,21 +1,12 @@
|
|
|
1
|
-
/** Synced device approval/ignore policy and local registry reconciliation. */
|
|
2
1
|
import { readMeta, updateMeta } from '../state.js';
|
|
3
2
|
import { unionDeviceDiscovery } from './device-docs.js';
|
|
4
3
|
import { addIgnored, assertValidDeviceName, loadDevices, removeDevice, removeIgnored, upsertDevice, } from './registry.js';
|
|
5
4
|
import { localLoginUser, withDefaultUser } from './sync.js';
|
|
6
5
|
import { nodeToDeviceInput, parseTailscaleStatus, tailscaleStatusJson } from './tailscale.js';
|
|
7
|
-
/** Read one portable decision. Absence means pending. */
|
|
8
6
|
export function getDeviceDiscoveryStatus(name) {
|
|
9
7
|
assertValidDeviceName(name);
|
|
10
8
|
return loadDeviceDiscoveryPolicies().get(name);
|
|
11
9
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Persist ONE discovery decision in THIS box's device doc (PHNX-3315). Each box
|
|
14
|
-
* records only its own choices in `devices/<machine>/agents.yaml` `fleet.discovery`,
|
|
15
|
-
* so N boxes no longer rewrite one shared central map (the guaranteed pull
|
|
16
|
-
* conflict). The effective policy is the union across every box
|
|
17
|
-
* ({@link loadDeviceDiscoveryPolicies}).
|
|
18
|
-
*/
|
|
19
10
|
export function setDeviceDiscoveryStatus(name, status) {
|
|
20
11
|
assertValidDeviceName(name);
|
|
21
12
|
updateMeta((meta) => {
|
|
@@ -27,13 +18,6 @@ export function setDeviceDiscoveryStatus(name, status) {
|
|
|
27
18
|
return { ...meta, deviceFleet: { ...meta.deviceFleet, discovery } };
|
|
28
19
|
});
|
|
29
20
|
}
|
|
30
|
-
/**
|
|
31
|
-
* The effective discovery policy: the UNION across every box's device doc, plus
|
|
32
|
-
* any lingering central-legacy map (drained by the fold-then-delete migration).
|
|
33
|
-
* Precedence for a name declared by more than one box is deterministic and
|
|
34
|
-
* order-independent — `ignored` beats `approved` — so every box computes the
|
|
35
|
-
* identical policy. Absence means pending.
|
|
36
|
-
*/
|
|
37
21
|
export function loadDeviceDiscoveryPolicies() {
|
|
38
22
|
const policies = new Map();
|
|
39
23
|
const apply = (rec) => {
|
|
@@ -43,28 +27,14 @@ export function loadDeviceDiscoveryPolicies() {
|
|
|
43
27
|
throw new Error(`Device discovery policy for '${name}' must be approved or ignored.`);
|
|
44
28
|
}
|
|
45
29
|
if (policies.get(name) === 'ignored')
|
|
46
|
-
continue;
|
|
30
|
+
continue;
|
|
47
31
|
policies.set(name, status);
|
|
48
32
|
}
|
|
49
33
|
};
|
|
50
|
-
apply(readMeta().fleet?.discovery);
|
|
51
|
-
apply(unionDeviceDiscovery());
|
|
34
|
+
apply(readMeta().fleet?.discovery);
|
|
35
|
+
apply(unionDeviceDiscovery());
|
|
52
36
|
return policies;
|
|
53
37
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Apply synced intent to this machine's local registry. Approval resolves live
|
|
56
|
-
* Tailscale metadata; ignore never needs the network. Missing approved peers are
|
|
57
|
-
* reported as unresolved rather than written with invented connection details.
|
|
58
|
-
*
|
|
59
|
-
* Only devices with an EXPLICIT entry in the synced policy are touched. A
|
|
60
|
-
* device absent from the map is left alone, whether or not the map itself is
|
|
61
|
-
* defined — the map is not treated as authoritative-by-omission, because not
|
|
62
|
-
* every local registration path writes a policy entry (daemon/umbrella
|
|
63
|
-
* auto-refresh, and any device registered before this feature shipped).
|
|
64
|
-
* Wiping those on the next `agents repo pull user` would be
|
|
65
|
-
* silent, fleet-wide data loss for a decision (e.g. "ignore this one iPad")
|
|
66
|
-
* that never meant to touch them.
|
|
67
|
-
*/
|
|
68
38
|
export async function reconcileDeviceDiscoveryPolicies() {
|
|
69
39
|
const policies = loadDeviceDiscoveryPolicies();
|
|
70
40
|
if (policies.size === 0) {
|
|
@@ -91,7 +61,6 @@ export async function reconcileDeviceDiscoveryPolicies() {
|
|
|
91
61
|
}
|
|
92
62
|
return registerApprovedDevicesFromTailscale(json, approved, ignored, missing);
|
|
93
63
|
}
|
|
94
|
-
/** Complete reconciliation from real `tailscale status --json` output. */
|
|
95
64
|
export async function registerApprovedDevicesFromTailscale(json, approved, ignored, missing) {
|
|
96
65
|
const nodes = parseTailscaleStatus(json);
|
|
97
66
|
const byName = new Map(nodes.map((node) => [node.name, node]));
|