@phnx-labs/agents-cli 1.22.119 → 1.22.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +236 -0
- package/README.md +19 -2
- package/dist/bootstrap.d.ts +0 -15
- package/dist/bootstrap.js +10 -409
- package/dist/cli/command-registry.d.ts +0 -58
- package/dist/cli/command-registry.js +2 -74
- package/dist/commands/accounts.d.ts +0 -17
- package/dist/commands/accounts.js +1 -52
- package/dist/commands/alias.d.ts +0 -12
- package/dist/commands/alias.js +0 -6
- package/dist/commands/apply.d.ts +0 -15
- package/dist/commands/apply.js +0 -63
- package/dist/commands/audit.d.ts +0 -12
- package/dist/commands/audit.js +0 -13
- package/dist/commands/auth.js +4 -12
- package/dist/commands/beta.d.ts +0 -6
- package/dist/commands/beta.js +2 -6
- package/dist/commands/browser-sessions-picker.d.ts +0 -8
- package/dist/commands/browser-sessions-picker.js +0 -26
- package/dist/commands/browser.d.ts +0 -57
- package/dist/commands/browser.js +0 -80
- package/dist/commands/budget.d.ts +0 -13
- package/dist/commands/budget.js +0 -2
- package/dist/commands/cli.d.ts +0 -12
- package/dist/commands/cli.js +0 -4
- package/dist/commands/cloud.d.ts +0 -9
- package/dist/commands/cloud.js +0 -43
- package/dist/commands/commands.d.ts +0 -9
- package/dist/commands/commands.js +0 -18
- package/dist/commands/computer-sessions-picker.d.ts +0 -11
- package/dist/commands/computer-sessions-picker.js +0 -29
- package/dist/commands/computer.d.ts +0 -62
- package/dist/commands/computer.js +3 -114
- package/dist/commands/config.d.ts +0 -14
- package/dist/commands/config.js +21 -60
- package/dist/commands/cost.d.ts +0 -11
- package/dist/commands/cost.js +1 -17
- package/dist/commands/daemon-test-harness.d.ts +0 -32
- package/dist/commands/daemon-test-harness.js +1 -36
- package/dist/commands/daemon.d.ts +0 -46
- package/dist/commands/daemon.js +8 -255
- package/dist/commands/detach-core.d.ts +0 -28
- package/dist/commands/detach-core.js +0 -30
- package/dist/commands/detach.d.ts +1 -12
- package/dist/commands/detach.js +16 -52
- package/dist/commands/device-config-test-harness.js +0 -12
- package/dist/commands/doctor.d.ts +0 -103
- package/dist/commands/doctor.js +3 -279
- package/dist/commands/events.d.ts +0 -29
- package/dist/commands/events.js +1 -55
- package/dist/commands/exec.d.ts +0 -163
- package/dist/commands/exec.js +15 -964
- package/dist/commands/factory.d.ts +0 -6
- package/dist/commands/factory.js +0 -2
- package/dist/commands/feed-watch.js +0 -20
- package/dist/commands/feed.d.ts +0 -38
- package/dist/commands/feed.js +1 -151
- package/dist/commands/feedback.d.ts +0 -5
- package/dist/commands/feedback.js +0 -5
- package/dist/commands/fleet-capture.d.ts +0 -12
- package/dist/commands/fleet-capture.js +1 -39
- package/dist/commands/focus.d.ts +6 -94
- package/dist/commands/focus.js +13 -183
- package/dist/commands/fork.d.ts +0 -21
- package/dist/commands/fork.js +0 -45
- package/dist/commands/funnel.d.ts +0 -3
- package/dist/commands/go.d.ts +2 -71
- package/dist/commands/go.js +5 -99
- package/dist/commands/harness-hooks.d.ts +0 -41
- package/dist/commands/harness-hooks.js +0 -48
- package/dist/commands/harness-wizard.d.ts +0 -137
- package/dist/commands/harness-wizard.js +0 -109
- package/dist/commands/harness.d.ts +0 -63
- package/dist/commands/harness.js +0 -103
- package/dist/commands/hooks.d.ts +0 -9
- package/dist/commands/hooks.js +0 -26
- package/dist/commands/humans.d.ts +0 -8
- package/dist/commands/humans.js +0 -8
- package/dist/commands/import.d.ts +0 -22
- package/dist/commands/import.js +0 -79
- package/dist/commands/insights.d.ts +0 -37
- package/dist/commands/insights.js +3 -115
- package/dist/commands/inspect.d.ts +0 -117
- package/dist/commands/inspect.js +2 -448
- package/dist/commands/lease.d.ts +0 -28
- package/dist/commands/lease.js +0 -43
- package/dist/commands/logs.d.ts +0 -23
- package/dist/commands/logs.js +0 -30
- package/dist/commands/mailboxes.d.ts +0 -18
- package/dist/commands/mailboxes.js +0 -29
- package/dist/commands/mcp.d.ts +0 -9
- package/dist/commands/mcp.js +0 -53
- package/dist/commands/memory.d.ts +0 -7
- package/dist/commands/memory.js +0 -7
- package/dist/commands/menubar.d.ts +0 -8
- package/dist/commands/menubar.js +0 -24
- package/dist/commands/message.d.ts +0 -23
- package/dist/commands/message.js +0 -50
- package/dist/commands/mine.d.ts +0 -22
- package/dist/commands/mine.js +0 -21
- package/dist/commands/models.d.ts +0 -8
- package/dist/commands/models.js +0 -33
- package/dist/commands/modes.d.ts +0 -10
- package/dist/commands/modes.js +0 -13
- package/dist/commands/monitors.d.ts +0 -9
- package/dist/commands/monitors.js +3 -160
- package/dist/commands/open.d.ts +0 -26
- package/dist/commands/open.js +0 -10
- package/dist/commands/output.d.ts +0 -18
- package/dist/commands/output.js +1 -34
- package/dist/commands/packages-materialize.d.ts +0 -11
- package/dist/commands/packages-materialize.js +0 -3
- package/dist/commands/packages.d.ts +0 -10
- package/dist/commands/packages.js +0 -50
- package/dist/commands/perf.d.ts +0 -41
- package/dist/commands/perf.js +0 -55
- package/dist/commands/permissions.d.ts +0 -9
- package/dist/commands/permissions.js +0 -43
- package/dist/commands/plugins.d.ts +0 -14
- package/dist/commands/plugins.js +2 -55
- package/dist/commands/profiles.d.ts +0 -25
- package/dist/commands/profiles.js +0 -27
- package/dist/commands/projects-todo.d.ts +2 -0
- package/dist/commands/projects-todo.js +132 -0
- package/dist/commands/projects.d.ts +0 -85
- package/dist/commands/projects.js +344 -291
- package/dist/commands/prune.js +0 -30
- package/dist/commands/ps-roster.d.ts +92 -0
- package/dist/commands/ps-roster.js +744 -0
- package/dist/commands/ps.d.ts +6 -0
- package/dist/commands/ps.js +98 -0
- package/dist/commands/refresh-rules.d.ts +0 -13
- package/dist/commands/refresh-rules.js +0 -14
- package/dist/commands/reminders.d.ts +0 -7
- package/dist/commands/repo.d.ts +0 -89
- package/dist/commands/repo.js +7 -205
- package/dist/commands/resource-view.d.ts +0 -33
- package/dist/commands/resource-view.js +0 -49
- package/dist/commands/resume.d.ts +1 -19
- package/dist/commands/resume.js +0 -50
- package/dist/commands/route.d.ts +0 -10
- package/dist/commands/route.js +0 -19
- package/dist/commands/routines.d.ts +0 -42
- package/dist/commands/routines.js +5 -290
- package/dist/commands/routines.test-fixture.d.ts +0 -34
- package/dist/commands/routines.test-fixture.js +4 -100
- package/dist/commands/rules.d.ts +0 -9
- package/dist/commands/rules.js +1 -6
- package/dist/commands/run-account-picker.d.ts +0 -59
- package/dist/commands/run-account-picker.js +0 -71
- package/dist/commands/run-broadcast.d.ts +0 -9
- package/dist/commands/run-broadcast.js +0 -7
- package/dist/commands/run-cloud.d.ts +0 -15
- package/dist/commands/run-cloud.js +0 -37
- package/dist/commands/run-device-picker.d.ts +0 -25
- package/dist/commands/run-device-picker.js +1 -53
- package/dist/commands/secrets-passthrough.d.ts +0 -31
- package/dist/commands/secrets-passthrough.js +0 -10
- package/dist/commands/send.d.ts +0 -20
- package/dist/commands/send.js +14 -18
- package/dist/commands/sessions-backfill.d.ts +0 -7
- package/dist/commands/sessions-backfill.js +1 -16
- package/dist/commands/sessions-backup-setup.js +0 -11
- package/dist/commands/sessions-bookmark.d.ts +0 -8
- package/dist/commands/sessions-bookmark.js +0 -28
- package/dist/commands/sessions-browser.d.ts +2 -117
- package/dist/commands/sessions-browser.js +5 -243
- package/dist/commands/sessions-export.d.ts +1 -26
- package/dist/commands/sessions-export.js +3 -81
- package/dist/commands/sessions-import.d.ts +0 -14
- package/dist/commands/sessions-import.js +0 -59
- package/dist/commands/sessions-inject.d.ts +0 -60
- package/dist/commands/sessions-inject.js +3 -96
- package/dist/commands/sessions-migrate.d.ts +2 -37
- package/dist/commands/sessions-migrate.js +7 -159
- package/dist/commands/sessions-optimize.d.ts +0 -12
- package/dist/commands/sessions-picker-factory.d.ts +0 -7
- package/dist/commands/sessions-picker-factory.js +0 -8
- package/dist/commands/sessions-picker.d.ts +4 -103
- package/dist/commands/sessions-picker.js +13 -352
- package/dist/commands/sessions-render.d.ts +1 -2
- package/dist/commands/sessions-render.js +3 -7
- package/dist/commands/sessions-resume.d.ts +1 -24
- package/dist/commands/sessions-resume.js +2 -65
- package/dist/commands/sessions-share.d.ts +1 -9
- package/dist/commands/sessions-share.js +1 -45
- package/dist/commands/sessions-stats.d.ts +0 -24
- package/dist/commands/sessions-stats.js +0 -49
- package/dist/commands/sessions-stop.d.ts +1 -20
- package/dist/commands/sessions-stop.js +4 -9
- package/dist/commands/sessions-tail.d.ts +1 -19
- package/dist/commands/sessions-tail.js +3 -36
- package/dist/commands/sessions-trace.d.ts +5 -36
- package/dist/commands/sessions-trace.js +7 -82
- package/dist/commands/sessions.d.ts +1 -666
- package/dist/commands/sessions.js +30 -2279
- package/dist/commands/sessions.test-fixture.d.ts +0 -9
- package/dist/commands/sessions.test-fixture.js +8 -23
- package/dist/commands/setup-accounts.d.ts +0 -6
- package/dist/commands/setup-browser.d.ts +0 -23
- package/dist/commands/setup-browser.js +0 -28
- package/dist/commands/setup-computer.d.ts +0 -16
- package/dist/commands/setup-computer.js +0 -28
- package/dist/commands/setup-fleet.d.ts +0 -8
- package/dist/commands/setup-fleet.js +0 -11
- package/dist/commands/setup-mine.d.ts +0 -14
- package/dist/commands/setup-mine.js +0 -25
- package/dist/commands/setup-preferences.d.ts +0 -47
- package/dist/commands/setup-preferences.js +0 -53
- package/dist/commands/setup-secrets.d.ts +2 -24
- package/dist/commands/setup-secrets.js +0 -24
- package/dist/commands/setup-term.d.ts +0 -21
- package/dist/commands/setup-term.js +0 -21
- package/dist/commands/setup-terminal.d.ts +0 -1
- package/dist/commands/setup-terminal.js +0 -1
- package/dist/commands/setup-tools.d.ts +2 -0
- package/dist/commands/setup-tools.js +73 -0
- package/dist/commands/setup.d.ts +0 -20
- package/dist/commands/setup.js +4 -57
- package/dist/commands/skills.d.ts +0 -9
- package/dist/commands/skills.js +1 -22
- package/dist/commands/snapshot.d.ts +0 -9
- package/dist/commands/snapshot.js +0 -10
- package/dist/commands/ssh.d.ts +0 -64
- package/dist/commands/ssh.js +9 -420
- package/dist/commands/status.d.ts +0 -12
- package/dist/commands/status.js +0 -26
- package/dist/commands/subagents.d.ts +0 -8
- package/dist/commands/subagents.js +0 -31
- package/dist/commands/sync.d.ts +0 -37
- package/dist/commands/sync.js +0 -256
- package/dist/commands/teams-picker.d.ts +0 -3
- package/dist/commands/teams-picker.js +0 -34
- package/dist/commands/teams.d.ts +1 -76
- package/dist/commands/teams.js +9 -477
- package/dist/commands/tmux.d.ts +0 -25
- package/dist/commands/tmux.js +0 -46
- package/dist/commands/traces.js +0 -19
- package/dist/commands/trash.d.ts +0 -17
- package/dist/commands/trash.js +1 -11
- package/dist/commands/uninstall.d.ts +0 -9
- package/dist/commands/uninstall.js +0 -6
- package/dist/commands/update.d.ts +0 -22
- package/dist/commands/update.js +0 -44
- package/dist/commands/upgrade.d.ts +0 -1
- package/dist/commands/upgrade.js +0 -1
- package/dist/commands/utils.d.ts +0 -85
- package/dist/commands/utils.js +1 -95
- package/dist/commands/versions.d.ts +0 -16
- package/dist/commands/versions.js +0 -134
- package/dist/commands/view.d.ts +0 -90
- package/dist/commands/view.js +4 -343
- package/dist/commands/watchdog.d.ts +0 -19
- package/dist/commands/watchdog.js +3 -43
- package/dist/commands/webhook.d.ts +0 -8
- package/dist/commands/webhook.js +0 -14
- package/dist/commands/workflows.d.ts +0 -8
- package/dist/commands/workflows.js +0 -6
- package/dist/index.d.ts +0 -25
- package/dist/index.js +5 -119
- package/dist/lib/account-capabilities.d.ts +0 -34
- package/dist/lib/account-capabilities.js +0 -32
- package/dist/lib/account-catalog.d.ts +0 -128
- package/dist/lib/account-catalog.js +8 -154
- package/dist/lib/account-provider-registry.d.ts +0 -14
- package/dist/lib/account-provider-registry.js +0 -8
- package/dist/lib/account-registry.d.ts +0 -74
- package/dist/lib/account-registry.js +14 -189
- package/dist/lib/account-schema.d.ts +0 -19
- package/dist/lib/account-schema.js +0 -43
- package/dist/lib/accounting/account-launch.d.ts +0 -15
- package/dist/lib/accounting/account-launch.js +1 -3
- package/dist/lib/accounting/account-pool-collect.d.ts +0 -26
- package/dist/lib/accounting/account-pool-collect.js +0 -42
- package/dist/lib/accounting/account-pool.d.ts +0 -41
- package/dist/lib/accounting/account-pool.js +0 -17
- package/dist/lib/accounting/capacity.d.ts +0 -32
- package/dist/lib/accounting/capacity.js +0 -32
- package/dist/lib/accounting/rotate.d.ts +0 -518
- package/dist/lib/accounting/rotate.js +4 -598
- package/dist/lib/accounting/usage-ingest.d.ts +0 -1
- package/dist/lib/accounting/usage-ingest.js +0 -44
- package/dist/lib/accounting/usage-sync.d.ts +0 -60
- package/dist/lib/accounting/usage-sync.js +4 -51
- package/dist/lib/accounting/usage.d.ts +0 -632
- package/dist/lib/accounting/usage.js +14 -1055
- package/dist/lib/accounts/add.d.ts +0 -60
- package/dist/lib/accounts/add.js +0 -127
- package/dist/lib/accounts/auth-operation-lock.d.ts +0 -1
- package/dist/lib/accounts/auth-operation-lock.js +0 -4
- package/dist/lib/accounts/migrate.d.ts +0 -9
- package/dist/lib/accounts/migrate.js +3 -42
- package/dist/lib/accounts/slots.d.ts +0 -25
- package/dist/lib/accounts/slots.js +1 -49
- package/dist/lib/acp/client.d.ts +0 -16
- package/dist/lib/acp/client.js +0 -29
- package/dist/lib/acp/harnesses.d.ts +0 -15
- package/dist/lib/acp/harnesses.js +0 -16
- package/dist/lib/acp/run.d.ts +0 -8
- package/dist/lib/acp/run.js +0 -8
- package/dist/lib/actor.d.ts +1 -71
- package/dist/lib/actor.js +1 -99
- package/dist/lib/add-dir.d.ts +0 -46
- package/dist/lib/add-dir.js +1 -70
- package/dist/lib/address.d.ts +0 -17
- package/dist/lib/address.js +0 -15
- package/dist/lib/agent-cli-commands.d.ts +0 -10
- package/dist/lib/agent-cli-commands.js +0 -10
- package/dist/lib/agent-modes.d.ts +0 -29
- package/dist/lib/agent-modes.js +0 -31
- package/dist/lib/agent-spec/agents.d.ts +0 -426
- package/dist/lib/agent-spec/agents.js +37 -924
- package/dist/lib/agent-spec/index.d.ts +0 -5
- package/dist/lib/agent-spec/index.js +0 -14
- package/dist/lib/agent-spec/materialize.d.ts +0 -10
- package/dist/lib/agent-spec/materialize.js +2 -139
- package/dist/lib/agent-spec/package-resolve.d.ts +0 -8
- package/dist/lib/agent-spec/package-resolve.js +1 -44
- package/dist/lib/agent-spec/package-schema.d.ts +0 -2
- package/dist/lib/agent-spec/package-schema.js +0 -11
- package/dist/lib/agent-spec/package-types.d.ts +0 -27
- package/dist/lib/agent-spec/package-types.js +0 -1
- package/dist/lib/agent-spec/primitives.d.ts +0 -18
- package/dist/lib/agent-spec/primitives.js +0 -27
- package/dist/lib/agent-spec/provider.js +0 -2
- package/dist/lib/agent-spec/resolve.d.ts +0 -23
- package/dist/lib/agent-spec/resolve.js +0 -41
- package/dist/lib/agent-spec/types.d.ts +0 -34
- package/dist/lib/agent-spec/types.js +0 -6
- package/dist/lib/agents.d.ts +0 -1
- package/dist/lib/agents.js +0 -1
- package/dist/lib/analytics/mix-commands.d.ts +0 -23
- package/dist/lib/analytics/mix-commands.js +0 -26
- package/dist/lib/analytics/recipes.d.ts +0 -1
- package/dist/lib/analytics/recipes.js +5 -10
- package/dist/lib/analytics/usage-db.js +4 -6
- package/dist/lib/answer-router.d.ts +0 -61
- package/dist/lib/answer-router.js +0 -57
- package/dist/lib/app-bundle-install.d.ts +0 -13
- package/dist/lib/app-bundle-install.js +0 -50
- package/dist/lib/artifact-actions.d.ts +0 -15
- package/dist/lib/artifact-actions.js +0 -18
- package/dist/lib/artifacts-client.d.ts +0 -10
- package/dist/lib/artifacts-client.js +0 -17
- package/dist/lib/ask-classifier.d.ts +0 -38
- package/dist/lib/ask-classifier.js +0 -27
- package/dist/lib/audit/log.d.ts +0 -47
- package/dist/lib/audit/log.js +1 -59
- package/dist/lib/auth-health.d.ts +0 -213
- package/dist/lib/auth-health.js +16 -266
- package/dist/lib/auth-mint.d.ts +0 -83
- package/dist/lib/auth-mint.js +8 -85
- package/dist/lib/auto-pull-worker.d.ts +0 -10
- package/dist/lib/auto-pull-worker.js +3 -48
- package/dist/lib/auto-pull.d.ts +0 -64
- package/dist/lib/auto-pull.js +0 -79
- package/dist/lib/beta.d.ts +0 -9
- package/dist/lib/beta.js +0 -9
- package/dist/lib/binary-shadow.d.ts +0 -22
- package/dist/lib/binary-shadow.js +4 -34
- package/dist/lib/boot-profile.d.ts +0 -10
- package/dist/lib/boot-profile.js +1 -31
- package/dist/lib/brand.d.ts +0 -20
- package/dist/lib/brand.js +0 -50
- package/dist/lib/browser/context.d.ts +0 -54
- package/dist/lib/browser/context.js +0 -49
- package/dist/lib/browser/paths.d.ts +0 -21
- package/dist/lib/browser/paths.js +0 -26
- package/dist/lib/browser/record.d.ts +0 -34
- package/dist/lib/browser/record.js +0 -38
- package/dist/lib/browser/sessions-list.d.ts +1 -79
- package/dist/lib/browser/sessions-list.js +2 -98
- package/dist/lib/browser-client.d.ts +0 -112
- package/dist/lib/browser-client.js +1 -90
- package/dist/lib/budget/config.d.ts +0 -6
- package/dist/lib/budget/config.js +0 -29
- package/dist/lib/budget/enforce.d.ts +0 -50
- package/dist/lib/budget/enforce.js +0 -27
- package/dist/lib/budget/ledger.d.ts +0 -23
- package/dist/lib/budget/ledger.js +0 -28
- package/dist/lib/budget/live-cloud.d.ts +0 -26
- package/dist/lib/budget/live-cloud.js +0 -12
- package/dist/lib/budget/live-team.d.ts +0 -17
- package/dist/lib/budget/live-team.js +1 -35
- package/dist/lib/budget/preflight.d.ts +0 -51
- package/dist/lib/budget/preflight.js +0 -36
- package/dist/lib/byok-usage.d.ts +0 -20
- package/dist/lib/byok-usage.js +1 -24
- package/dist/lib/capabilities.d.ts +0 -24
- package/dist/lib/capabilities.js +0 -29
- package/dist/lib/catchup.d.ts +0 -87
- package/dist/lib/catchup.js +1 -81
- package/dist/lib/channels/owner-forward.d.ts +0 -70
- package/dist/lib/channels/owner-forward.js +1 -43
- package/dist/lib/channels/owner-sink.js +0 -21
- package/dist/lib/channels/providers/desktop.d.ts +0 -37
- package/dist/lib/channels/providers/desktop.js +0 -72
- package/dist/lib/channels/providers/index.d.ts +0 -1
- package/dist/lib/channels/providers/index.js +2 -6
- package/dist/lib/channels/providers/mailbox.js +0 -7
- package/dist/lib/channels/providers/openclaw-telegram.js +0 -8
- package/dist/lib/channels/providers/rush.d.ts +0 -2
- package/dist/lib/channels/providers/rush.js +0 -26
- package/dist/lib/channels/providers/session.d.ts +2 -0
- package/dist/lib/channels/providers/session.js +26 -0
- package/dist/lib/channels/registry.d.ts +0 -27
- package/dist/lib/channels/registry.js +0 -10
- package/dist/lib/channels/resolve.d.ts +0 -19
- package/dist/lib/channels/resolve.js +0 -2
- package/dist/lib/channels/send.d.ts +0 -50
- package/dist/lib/channels/send.js +0 -25
- package/dist/lib/checkpoint.d.ts +0 -36
- package/dist/lib/checkpoint.js +0 -28
- package/dist/lib/claude-account-token.d.ts +0 -98
- package/dist/lib/claude-account-token.js +7 -169
- package/dist/lib/claude-statusline.d.ts +0 -41
- package/dist/lib/claude-statusline.js +0 -68
- package/dist/lib/cli-entry.d.ts +0 -26
- package/dist/lib/cli-entry.js +1 -61
- package/dist/lib/cli-resources.d.ts +31 -89
- package/dist/lib/cli-resources.js +116 -152
- package/dist/lib/cloud/antigravity.d.ts +0 -29
- package/dist/lib/cloud/antigravity.js +0 -36
- package/dist/lib/cloud/codex.d.ts +0 -8
- package/dist/lib/cloud/codex.js +0 -41
- package/dist/lib/cloud/cursor.d.ts +0 -5
- package/dist/lib/cloud/cursor.js +2 -7
- package/dist/lib/cloud/dispatch.d.ts +0 -13
- package/dist/lib/cloud/dispatch.js +1 -48
- package/dist/lib/cloud/factory.d.ts +0 -52
- package/dist/lib/cloud/factory.js +3 -67
- package/dist/lib/cloud/host.d.ts +0 -39
- package/dist/lib/cloud/host.js +5 -48
- package/dist/lib/cloud/registry.d.ts +0 -25
- package/dist/lib/cloud/registry.js +0 -29
- package/dist/lib/cloud/rush.d.ts +0 -47
- package/dist/lib/cloud/rush.js +1 -82
- package/dist/lib/cloud/session-index.d.ts +0 -27
- package/dist/lib/cloud/session-index.js +1 -32
- package/dist/lib/cloud/store.d.ts +0 -18
- package/dist/lib/cloud/store.js +0 -28
- package/dist/lib/cloud/stream.d.ts +0 -14
- package/dist/lib/cloud/stream.js +0 -25
- package/dist/lib/cloud/types.d.ts +0 -168
- package/dist/lib/cloud/types.js +0 -46
- package/dist/lib/cloudflare/creds.d.ts +0 -2
- package/dist/lib/cloudflare/creds.js +0 -14
- package/dist/lib/cloudflare/provision.d.ts +0 -8
- package/dist/lib/cloudflare/provision.js +1 -19
- package/dist/lib/codex-home.d.ts +0 -60
- package/dist/lib/codex-home.js +2 -72
- package/dist/lib/codex-policy.d.ts +0 -10
- package/dist/lib/codex-policy.js +0 -13
- package/dist/lib/command-skills.d.ts +0 -10
- package/dist/lib/command-skills.js +0 -10
- package/dist/lib/commands.d.ts +0 -74
- package/dist/lib/commands.js +0 -112
- package/dist/lib/comms-render.d.ts +0 -5
- package/dist/lib/comms-render.js +0 -5
- package/dist/lib/computer/context.d.ts +0 -23
- package/dist/lib/computer/context.js +0 -14
- package/dist/lib/computer/policy.d.ts +0 -20
- package/dist/lib/computer/policy.js +0 -53
- package/dist/lib/computer/record.d.ts +0 -33
- package/dist/lib/computer/record.js +1 -48
- package/dist/lib/computer/sessions-list.d.ts +1 -128
- package/dist/lib/computer/sessions-list.js +6 -165
- package/dist/lib/computer-client.d.ts +0 -106
- package/dist/lib/computer-client.js +5 -86
- package/dist/lib/concurrency.d.ts +0 -14
- package/dist/lib/concurrency.js +0 -3
- package/dist/lib/config-drift.d.ts +0 -31
- package/dist/lib/config-drift.js +0 -32
- package/dist/lib/config-keys.d.ts +1 -65
- package/dist/lib/config-keys.js +6 -52
- package/dist/lib/config-transfer.d.ts +0 -14
- package/dist/lib/config-transfer.js +0 -26
- package/dist/lib/convert.d.ts +0 -17
- package/dist/lib/convert.js +0 -18
- package/dist/lib/crabbox/cli.d.ts +0 -156
- package/dist/lib/crabbox/cli.js +1 -188
- package/dist/lib/crabbox/config.d.ts +0 -18
- package/dist/lib/crabbox/config.js +1 -19
- package/dist/lib/crabbox/lease.d.ts +0 -93
- package/dist/lib/crabbox/lease.js +4 -148
- package/dist/lib/crabbox/progress.d.ts +0 -56
- package/dist/lib/crabbox/progress.js +2 -49
- package/dist/lib/crabbox/runtimes.d.ts +0 -94
- package/dist/lib/crabbox/runtimes.js +1 -111
- package/dist/lib/crabbox/setup-copy.d.ts +0 -64
- package/dist/lib/crabbox/setup-copy.js +1 -53
- package/dist/lib/daemon/account-state-daemon-service.d.ts +0 -48
- package/dist/lib/daemon/account-state-daemon-service.js +2 -63
- package/dist/lib/daemon/attention-notify-service.d.ts +0 -12
- package/dist/lib/daemon/attention-notify-service.js +1 -24
- package/dist/lib/daemon/auth-sync-service.d.ts +0 -28
- package/dist/lib/daemon/auth-sync-service.js +0 -56
- package/dist/lib/daemon/catchup-service.d.ts +0 -34
- package/dist/lib/daemon/catchup-service.js +0 -30
- package/dist/lib/daemon/daemon.d.ts +0 -374
- package/dist/lib/daemon/daemon.js +44 -1049
- package/dist/lib/daemon/daemon.test-fixture.d.ts +0 -19
- package/dist/lib/daemon/daemon.test-fixture.js +1 -24
- package/dist/lib/daemon/device-probe-service.d.ts +0 -16
- package/dist/lib/daemon/device-probe-service.js +0 -20
- package/dist/lib/daemon/feed-stream-service.d.ts +0 -15
- package/dist/lib/daemon/feed-stream-service.js +0 -20
- package/dist/lib/daemon/harness-update-service.d.ts +2 -61
- package/dist/lib/daemon/harness-update-service.js +6 -86
- package/dist/lib/daemon/heartbeat-service.d.ts +0 -1
- package/dist/lib/daemon/heartbeat-service.js +0 -1
- package/dist/lib/daemon/leaked-daemons.d.ts +0 -46
- package/dist/lib/daemon/leaked-daemons.js +2 -78
- package/dist/lib/daemon/monitor-engine-service.d.ts +0 -13
- package/dist/lib/daemon/monitor-engine-service.js +3 -15
- package/dist/lib/daemon/runner.d.ts +0 -194
- package/dist/lib/daemon/runner.js +39 -760
- package/dist/lib/daemon/self-heal-service.d.ts +18 -17
- package/dist/lib/daemon/self-heal-service.js +83 -37
- package/dist/lib/daemon/self-update-service.d.ts +1 -131
- package/dist/lib/daemon/self-update-service.js +26 -189
- package/dist/lib/daemon/service.d.ts +0 -73
- package/dist/lib/daemon/service.js +0 -34
- package/dist/lib/daemon/session-index-service.d.ts +0 -12
- package/dist/lib/daemon/session-index-service.js +0 -23
- package/dist/lib/daemon/session-state-service.d.ts +0 -8
- package/dist/lib/daemon/session-state-service.js +0 -8
- package/dist/lib/daemon/session-summarizer-service.d.ts +0 -14
- package/dist/lib/daemon/session-summarizer-service.js +1 -19
- package/dist/lib/daemon/session-title-service.d.ts +0 -25
- package/dist/lib/daemon/session-title-service.js +0 -32
- package/dist/lib/daemon/state-dir-check-service.d.ts +0 -24
- package/dist/lib/daemon/state-dir-check-service.js +0 -29
- package/dist/lib/daemon/supervisor.d.ts +0 -112
- package/dist/lib/daemon/supervisor.js +4 -147
- package/dist/lib/daemon/testdata/process-view-daemon.js +0 -2
- package/dist/lib/daemon/testdata/process-view-start.js +0 -5
- package/dist/lib/daemon/tmux-reap-service.d.ts +0 -1
- package/dist/lib/daemon/tmux-reap-service.js +0 -1
- package/dist/lib/daemon/usage-sync-service.d.ts +0 -23
- package/dist/lib/daemon/usage-sync-service.js +0 -26
- package/dist/lib/daemon/watchdog-service.d.ts +0 -9
- package/dist/lib/daemon/watchdog-service.js +0 -13
- package/dist/lib/daemon/webhook-receiver-service.d.ts +0 -1
- package/dist/lib/daemon/webhook-receiver-service.js +0 -1
- package/dist/lib/daemon-health.d.ts +0 -55
- package/dist/lib/daemon-health.js +4 -77
- package/dist/lib/daemon-services.d.ts +0 -36
- package/dist/lib/daemon-services.js +0 -45
- package/dist/lib/daemon-ticks.d.ts +0 -126
- package/dist/lib/daemon-ticks.js +1 -156
- package/dist/lib/daemon-webhooks.d.ts +0 -57
- package/dist/lib/daemon-webhooks.js +2 -54
- package/dist/lib/deeplink/register.d.ts +0 -15
- package/dist/lib/deeplink/register.js +0 -60
- package/dist/lib/deeplink/url.d.ts +0 -24
- package/dist/lib/deeplink/url.js +1 -33
- package/dist/lib/device-config.d.ts +1 -192
- package/dist/lib/device-config.js +86 -240
- package/dist/lib/devices/config-migration.d.ts +0 -43
- package/dist/lib/devices/config-migration.js +7 -127
- package/dist/lib/devices/connect.d.ts +0 -168
- package/dist/lib/devices/connect.js +6 -254
- package/dist/lib/devices/device-docs.d.ts +0 -24
- package/dist/lib/devices/device-docs.js +0 -46
- package/dist/lib/devices/discovery-policy.d.ts +0 -30
- package/dist/lib/devices/discovery-policy.js +3 -34
- package/dist/lib/devices/doctor-findings.d.ts +0 -109
- package/dist/lib/devices/doctor-findings.js +30 -326
- package/dist/lib/devices/doctor-overview-cache.d.ts +0 -33
- package/dist/lib/devices/doctor-overview-cache.js +0 -81
- package/dist/lib/devices/fleet-divergence.d.ts +0 -89
- package/dist/lib/devices/fleet-divergence.js +1 -60
- package/dist/lib/devices/fleet-inventory.d.ts +0 -27
- package/dist/lib/devices/fleet-inventory.js +0 -38
- package/dist/lib/devices/fleet.d.ts +0 -95
- package/dist/lib/devices/fleet.js +0 -79
- package/dist/lib/devices/harness-inventory.d.ts +0 -75
- package/dist/lib/devices/harness-inventory.js +0 -101
- package/dist/lib/devices/health-report.d.ts +0 -37
- package/dist/lib/devices/health-report.js +0 -73
- package/dist/lib/devices/health.d.ts +0 -71
- package/dist/lib/devices/health.js +2 -82
- package/dist/lib/devices/interactive-host.d.ts +0 -10
- package/dist/lib/devices/interactive-host.js +0 -34
- package/dist/lib/devices/known-hosts.d.ts +0 -45
- package/dist/lib/devices/known-hosts.js +0 -77
- package/dist/lib/devices/pending.d.ts +0 -31
- package/dist/lib/devices/pending.js +7 -67
- package/dist/lib/devices/pool.d.ts +0 -36
- package/dist/lib/devices/pool.js +0 -30
- package/dist/lib/devices/reachability.d.ts +0 -25
- package/dist/lib/devices/reachability.js +0 -14
- package/dist/lib/devices/registry.d.ts +0 -141
- package/dist/lib/devices/registry.js +4 -151
- package/dist/lib/devices/resolve-profile.d.ts +0 -18
- package/dist/lib/devices/resolve-profile.js +0 -18
- package/dist/lib/devices/resolve-target.d.ts +0 -20
- package/dist/lib/devices/resolve-target.js +1 -51
- package/dist/lib/devices/rollout-verify.d.ts +1 -81
- package/dist/lib/devices/rollout-verify.js +0 -77
- package/dist/lib/devices/self-host.d.ts +0 -7
- package/dist/lib/devices/self-host.js +1 -29
- package/dist/lib/devices/ssh-config.d.ts +0 -18
- package/dist/lib/devices/ssh-config.js +0 -9
- package/dist/lib/devices/stats-cache.d.ts +0 -48
- package/dist/lib/devices/stats-cache.js +0 -80
- package/dist/lib/devices/sync.d.ts +0 -97
- package/dist/lib/devices/sync.js +0 -88
- package/dist/lib/devices/tailscale.d.ts +0 -18
- package/dist/lib/devices/tailscale.js +1 -38
- package/dist/lib/devices/terminfo.d.ts +0 -27
- package/dist/lib/devices/terminfo.js +2 -64
- package/dist/lib/devices/worker-pick.d.ts +0 -15
- package/dist/lib/devices/worker-pick.js +0 -48
- package/dist/lib/diff-text.d.ts +0 -18
- package/dist/lib/diff-text.js +0 -15
- package/dist/lib/doctor-diff.d.ts +0 -79
- package/dist/lib/doctor-diff.js +2 -181
- package/dist/lib/drift-sync.d.ts +0 -29
- package/dist/lib/drift-sync.js +0 -40
- package/dist/lib/drift.d.ts +0 -43
- package/dist/lib/drift.js +0 -31
- package/dist/lib/event-families.d.ts +0 -17
- package/dist/lib/event-families.js +0 -33
- package/dist/lib/event-provenance.d.ts +0 -4
- package/dist/lib/event-provenance.js +0 -5
- package/dist/lib/event-stream.d.ts +0 -29
- package/dist/lib/event-stream.js +0 -36
- package/dist/lib/events-ingest.d.ts +0 -27
- package/dist/lib/events-ingest.js +0 -54
- package/dist/lib/exec-account-home.d.ts +0 -24
- package/dist/lib/exec-account-home.js +0 -41
- package/dist/lib/exec-bounded.d.ts +1 -37
- package/dist/lib/exec-bounded.js +10 -46
- package/dist/lib/exec.d.ts +3 -583
- package/dist/lib/exec.js +18 -1025
- package/dist/lib/factory/snapshot.js +1 -15
- package/dist/lib/feed/activity-stream.d.ts +0 -27
- package/dist/lib/feed/activity-stream.js +4 -80
- package/dist/lib/feed/activity.d.ts +1 -243
- package/dist/lib/feed/activity.js +8 -273
- package/dist/lib/feed/answer.d.ts +0 -103
- package/dist/lib/feed/answer.js +0 -267
- package/dist/lib/feed/attention.d.ts +0 -56
- package/dist/lib/feed/attention.js +0 -161
- package/dist/lib/feed/envelope.d.ts +2 -17
- package/dist/lib/feed/envelope.js +0 -14
- package/dist/lib/feed/events.d.ts +0 -118
- package/dist/lib/feed/events.js +13 -213
- package/dist/lib/feed/feed.d.ts +1 -250
- package/dist/lib/feed/feed.js +24 -334
- package/dist/lib/feed/hub-server.d.ts +0 -100
- package/dist/lib/feed/hub-server.js +1 -191
- package/dist/lib/feed/hub.d.ts +0 -53
- package/dist/lib/feed/hub.js +0 -89
- package/dist/lib/feed/pr-status.d.ts +1 -19
- package/dist/lib/feed/pr-status.js +0 -18
- package/dist/lib/feed/tool-activity.d.ts +0 -59
- package/dist/lib/feed/tool-activity.js +1 -119
- package/dist/lib/feed/tools.d.ts +0 -100
- package/dist/lib/feed/tools.js +0 -89
- package/dist/lib/feed/watch.d.ts +0 -33
- package/dist/lib/feed/watch.js +2 -94
- package/dist/lib/feed-broadcast.d.ts +0 -148
- package/dist/lib/feed-broadcast.js +1 -283
- package/dist/lib/feed-outcome.d.ts +0 -50
- package/dist/lib/feed-outcome.js +1 -67
- package/dist/lib/feed-policy.d.ts +0 -6
- package/dist/lib/feed-policy.js +1 -27
- package/dist/lib/feed-post.d.ts +0 -61
- package/dist/lib/feed-post.js +4 -61
- package/dist/lib/feed-ranking.d.ts +1 -1
- package/dist/lib/fleet/apply.d.ts +0 -64
- package/dist/lib/fleet/apply.js +0 -125
- package/dist/lib/fleet/auth-sync.d.ts +0 -48
- package/dist/lib/fleet/auth-sync.js +4 -49
- package/dist/lib/fleet/capture.d.ts +0 -26
- package/dist/lib/fleet/capture.js +1 -36
- package/dist/lib/fleet/manifest.d.ts +0 -38
- package/dist/lib/fleet/manifest.js +0 -40
- package/dist/lib/fleet/types.d.ts +1 -138
- package/dist/lib/fleet/types.js +0 -12
- package/dist/lib/fleet-cache.d.ts +0 -12
- package/dist/lib/fleet-cache.js +0 -24
- package/dist/lib/fleet-shared-state.d.ts +6 -59
- package/dist/lib/fleet-shared-state.js +5 -51
- package/dist/lib/fleet-status.d.ts +0 -27
- package/dist/lib/fleet-status.js +0 -48
- package/dist/lib/format.d.ts +0 -74
- package/dist/lib/format.js +3 -77
- package/dist/lib/friction-heuristics.d.ts +0 -20
- package/dist/lib/friction-heuristics.js +0 -8
- package/dist/lib/fs-atomic.d.ts +0 -51
- package/dist/lib/fs-atomic.js +8 -66
- package/dist/lib/fs-walk.d.ts +0 -13
- package/dist/lib/fs-walk.js +0 -22
- package/dist/lib/fuzzy.d.ts +0 -29
- package/dist/lib/fuzzy.js +0 -31
- package/dist/lib/gemini-settings.js +0 -12
- package/dist/lib/git.d.ts +0 -366
- package/dist/lib/git.js +7 -574
- package/dist/lib/github/ci-failure.d.ts +30 -0
- package/dist/lib/github/ci-failure.js +95 -0
- package/dist/lib/github/gh-overload.d.ts +0 -38
- package/dist/lib/github/gh-overload.js +3 -55
- package/dist/lib/github/pr-mergeable.d.ts +3 -34
- package/dist/lib/github/pr-mergeable.js +2 -42
- package/dist/lib/github/pr-verdict.d.ts +0 -44
- package/dist/lib/github/pr-verdict.js +0 -36
- package/dist/lib/github/project-prs.d.ts +135 -105
- package/dist/lib/github/project-prs.js +530 -170
- package/dist/lib/github/release-drift.d.ts +45 -0
- package/dist/lib/github/release-drift.js +91 -0
- package/dist/lib/github/rest.d.ts +0 -50
- package/dist/lib/github/rest.js +0 -49
- package/dist/lib/github/viewer.d.ts +27 -0
- package/dist/lib/github/viewer.js +101 -0
- package/dist/lib/goose-commands.d.ts +0 -29
- package/dist/lib/goose-commands.js +3 -48
- package/dist/lib/harness/adapter.d.ts +0 -151
- package/dist/lib/harness/adapter.js +0 -41
- package/dist/lib/harness/adapters/claude.d.ts +0 -8
- package/dist/lib/harness/adapters/claude.js +0 -89
- package/dist/lib/harness/adapters/codex.js +0 -18
- package/dist/lib/harness/adapters/copilot.js +0 -3
- package/dist/lib/harness/adapters/cursor.js +0 -16
- package/dist/lib/harness/adapters/droid.js +0 -3
- package/dist/lib/harness/adapters/kimi.js +0 -19
- package/dist/lib/harness/adapters/muse.js +0 -9
- package/dist/lib/harness/adapters/opencode.js +0 -2
- package/dist/lib/harness/exec-config-version.d.ts +0 -2
- package/dist/lib/harness/exec-config-version.js +0 -13
- package/dist/lib/harness/index.js +0 -10
- package/dist/lib/harness-auth-capabilities.d.ts +0 -26
- package/dist/lib/harness-auth-capabilities.js +0 -18
- package/dist/lib/harness-connection-test.d.ts +0 -27
- package/dist/lib/harness-connection-test.js +2 -20
- package/dist/lib/heal.d.ts +0 -45
- package/dist/lib/heal.js +2 -82
- package/dist/lib/help.d.ts +0 -32
- package/dist/lib/help.js +0 -41
- package/dist/lib/helper-download.d.ts +0 -85
- package/dist/lib/helper-download.js +0 -95
- package/dist/lib/helper-versions.d.ts +0 -51
- package/dist/lib/helper-versions.js +1 -45
- package/dist/lib/hooks/cache.d.ts +0 -40
- package/dist/lib/hooks/cache.js +8 -122
- package/dist/lib/hooks/install.d.ts +0 -253
- package/dist/lib/hooks/install.js +49 -822
- package/dist/lib/hooks/match.d.ts +0 -24
- package/dist/lib/hooks/match.js +0 -31
- package/dist/lib/hooks/profile.d.ts +0 -21
- package/dist/lib/hooks/profile.js +0 -28
- package/dist/lib/hosts/credential-transport.d.ts +0 -6
- package/dist/lib/hosts/credential-transport.js +0 -17
- package/dist/lib/hosts/credentials.d.ts +0 -35
- package/dist/lib/hosts/credentials.js +0 -38
- package/dist/lib/hosts/dispatch.d.ts +0 -140
- package/dist/lib/hosts/dispatch.js +0 -176
- package/dist/lib/hosts/logs.d.ts +0 -25
- package/dist/lib/hosts/logs.js +1 -51
- package/dist/lib/hosts/option.d.ts +0 -12
- package/dist/lib/hosts/option.js +0 -12
- package/dist/lib/hosts/passthrough.d.ts +0 -129
- package/dist/lib/hosts/passthrough.js +12 -249
- package/dist/lib/hosts/progress.d.ts +0 -90
- package/dist/lib/hosts/progress.js +5 -115
- package/dist/lib/hosts/providers/devices.d.ts +0 -19
- package/dist/lib/hosts/providers/devices.js +1 -34
- package/dist/lib/hosts/providers/local.d.ts +0 -14
- package/dist/lib/hosts/providers/local.js +0 -22
- package/dist/lib/hosts/ready.d.ts +0 -99
- package/dist/lib/hosts/ready.js +0 -101
- package/dist/lib/hosts/reconcile.d.ts +0 -38
- package/dist/lib/hosts/reconcile.js +1 -50
- package/dist/lib/hosts/reconnect.d.ts +0 -75
- package/dist/lib/hosts/reconnect.js +0 -98
- package/dist/lib/hosts/registry.d.ts +0 -74
- package/dist/lib/hosts/registry.js +0 -110
- package/dist/lib/hosts/remote-cmd.d.ts +1 -228
- package/dist/lib/hosts/remote-cmd.js +19 -294
- package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +0 -1
- package/dist/lib/hosts/remote-cmd.test-fixture.js +0 -12
- package/dist/lib/hosts/remote-os.d.ts +0 -19
- package/dist/lib/hosts/remote-os.js +0 -22
- package/dist/lib/hosts/remote-session-id.d.ts +0 -22
- package/dist/lib/hosts/remote-session-id.js +0 -24
- package/dist/lib/hosts/routing-flag.d.ts +0 -21
- package/dist/lib/hosts/routing-flag.js +0 -21
- package/dist/lib/hosts/run-target.d.ts +0 -53
- package/dist/lib/hosts/run-target.js +0 -56
- package/dist/lib/hosts/session-index.d.ts +1 -53
- package/dist/lib/hosts/session-index.js +2 -59
- package/dist/lib/hosts/session-marker.d.ts +0 -31
- package/dist/lib/hosts/session-marker.js +0 -32
- package/dist/lib/hosts/ssh-config.d.ts +0 -25
- package/dist/lib/hosts/ssh-config.js +1 -32
- package/dist/lib/hosts/tasks.d.ts +0 -54
- package/dist/lib/hosts/tasks.js +0 -35
- package/dist/lib/hosts/types.d.ts +0 -39
- package/dist/lib/hosts/types.js +0 -22
- package/dist/lib/humans.d.ts +0 -21
- package/dist/lib/humans.js +0 -30
- package/dist/lib/identity/client.d.ts +1 -35
- package/dist/lib/identity/client.js +3 -29
- package/dist/lib/identity/index.d.ts +3 -27
- package/dist/lib/identity/index.js +8 -24
- package/dist/lib/import.d.ts +0 -104
- package/dist/lib/import.js +1 -137
- package/dist/lib/installations/active-check.d.ts +0 -53
- package/dist/lib/installations/active-check.js +0 -49
- package/dist/lib/installations/index.d.ts +0 -9
- package/dist/lib/installations/index.js +0 -9
- package/dist/lib/installations/installation-lock.js +0 -8
- package/dist/lib/installations/launch-gate.d.ts +0 -56
- package/dist/lib/installations/launch-gate.js +0 -83
- package/dist/lib/installations/migrate.d.ts +0 -100
- package/dist/lib/installations/migrate.js +105 -572
- package/dist/lib/installations/native-command.d.ts +0 -1
- package/dist/lib/installations/native-command.js +0 -6
- package/dist/lib/installations/resolve.d.ts +0 -24
- package/dist/lib/installations/resolve.js +0 -24
- package/dist/lib/installations/shims.d.ts +0 -395
- package/dist/lib/installations/shims.js +30 -957
- package/dist/lib/installations/store.d.ts +0 -199
- package/dist/lib/installations/store.js +1 -297
- package/dist/lib/installations/strategies.d.ts +0 -44
- package/dist/lib/installations/strategies.js +0 -87
- package/dist/lib/installations/types.d.ts +1 -67
- package/dist/lib/installations/types.js +0 -6
- package/dist/lib/installations/update-cancellation.d.ts +0 -74
- package/dist/lib/installations/update-cancellation.js +0 -74
- package/dist/lib/installations/update-policy.d.ts +0 -57
- package/dist/lib/installations/update-policy.js +0 -62
- package/dist/lib/installations/update-runtime.d.ts +0 -88
- package/dist/lib/installations/update-runtime.js +1 -127
- package/dist/lib/installations/update.d.ts +0 -53
- package/dist/lib/installations/update.js +0 -95
- package/dist/lib/installations/versions.d.ts +0 -310
- package/dist/lib/installations/versions.js +14 -837
- package/dist/lib/isolation-boundary-report.d.ts +0 -7
- package/dist/lib/isolation-boundary-report.js +0 -7
- package/dist/lib/launch-identity.d.ts +0 -8
- package/dist/lib/launch-identity.js +0 -8
- package/dist/lib/linear-autoclose.d.ts +0 -25
- package/dist/lib/linear-autoclose.js +0 -19
- package/dist/lib/linear-cache.d.ts +0 -57
- package/dist/lib/linear-cache.js +1 -81
- package/dist/lib/linear-project-counts.d.ts +0 -83
- package/dist/lib/linear-project-counts.js +2 -64
- package/dist/lib/linear-projects.d.ts +0 -62
- package/dist/lib/linear-projects.js +0 -85
- package/dist/lib/linear-rate-limit.d.ts +0 -21
- package/dist/lib/linear-rate-limit.js +1 -93
- package/dist/lib/linux-userns.d.ts +1 -42
- package/dist/lib/linux-userns.js +0 -47
- package/dist/lib/lock-compromise.d.ts +0 -7
- package/dist/lib/lock-compromise.js +0 -7
- package/dist/lib/log-follow.d.ts +0 -2
- package/dist/lib/log-follow.js +5 -15
- package/dist/lib/loop.d.ts +0 -106
- package/dist/lib/loop.js +0 -135
- package/dist/lib/machine-id.d.ts +0 -19
- package/dist/lib/machine-id.js +0 -19
- package/dist/lib/mailbox-gc.d.ts +0 -7
- package/dist/lib/mailbox-gc.js +0 -25
- package/dist/lib/mailbox-target.d.ts +0 -31
- package/dist/lib/mailbox-target.js +0 -27
- package/dist/lib/mailbox.d.ts +0 -77
- package/dist/lib/mailbox.js +5 -105
- package/dist/lib/manifest.d.ts +0 -4
- package/dist/lib/manifest.js +0 -36
- package/dist/lib/markdown.d.ts +0 -3
- package/dist/lib/markdown.js +0 -9
- package/dist/lib/mcp-registry.d.ts +1 -50
- package/dist/lib/mcp-registry.js +0 -64
- package/dist/lib/mcp.d.ts +0 -115
- package/dist/lib/mcp.js +3 -199
- package/dist/lib/memory-cache.d.ts +0 -11
- package/dist/lib/memory-cache.js +0 -9
- package/dist/lib/memory.d.ts +0 -52
- package/dist/lib/memory.js +12 -74
- package/dist/lib/menubar/download-menubar.d.ts +0 -35
- package/dist/lib/menubar/download-menubar.js +0 -38
- package/dist/lib/menubar/install-menubar.d.ts +0 -405
- package/dist/lib/menubar/install-menubar.js +25 -667
- package/dist/lib/menubar/migrate-prefs.d.ts +0 -47
- package/dist/lib/menubar/migrate-prefs.js +1 -70
- package/dist/lib/menubar/notify-desktop.d.ts +0 -82
- package/dist/lib/menubar/notify-desktop.js +0 -68
- package/dist/lib/menubar/resolve-version.d.ts +0 -41
- package/dist/lib/menubar/resolve-version.js +2 -44
- package/dist/lib/menubar/snapshot.d.ts +13 -66
- package/dist/lib/menubar/snapshot.js +45 -39
- package/dist/lib/merged-resources.d.ts +0 -10
- package/dist/lib/merged-resources.js +0 -10
- package/dist/lib/migrate-fold.d.ts +0 -31
- package/dist/lib/migrate-fold.js +6 -38
- package/dist/lib/model-tier-overrides.d.ts +0 -30
- package/dist/lib/model-tier-overrides.js +0 -14
- package/dist/lib/model-tiers.d.ts +0 -43
- package/dist/lib/model-tiers.js +5 -78
- package/dist/lib/models.d.ts +0 -145
- package/dist/lib/models.js +3 -333
- package/dist/lib/monitors/config.d.ts +0 -187
- package/dist/lib/monitors/config.js +4 -101
- package/dist/lib/monitors/dispatch.d.ts +0 -22
- package/dist/lib/monitors/dispatch.js +0 -35
- package/dist/lib/monitors/engine.d.ts +1 -53
- package/dist/lib/monitors/engine.js +17 -106
- package/dist/lib/monitors/fingerprint.d.ts +0 -43
- package/dist/lib/monitors/fingerprint.js +0 -57
- package/dist/lib/monitors/pid-watch.d.ts +0 -31
- package/dist/lib/monitors/pid-watch.js +0 -31
- package/dist/lib/monitors/remote.d.ts +0 -52
- package/dist/lib/monitors/remote.js +0 -42
- package/dist/lib/monitors/sources/command.d.ts +2 -9
- package/dist/lib/monitors/sources/command.js +13 -34
- package/dist/lib/monitors/sources/device.d.ts +0 -10
- package/dist/lib/monitors/sources/device.js +0 -14
- package/dist/lib/monitors/sources/failure.d.ts +0 -27
- package/dist/lib/monitors/sources/failure.js +0 -27
- package/dist/lib/monitors/sources/file.d.ts +0 -10
- package/dist/lib/monitors/sources/file.js +0 -11
- package/dist/lib/monitors/sources/http.d.ts +0 -7
- package/dist/lib/monitors/sources/http.js +0 -9
- package/dist/lib/monitors/sources/index.d.ts +0 -9
- package/dist/lib/monitors/sources/index.js +0 -9
- package/dist/lib/monitors/sources/poll.d.ts +0 -8
- package/dist/lib/monitors/sources/poll.js +0 -8
- package/dist/lib/monitors/sources/types.d.ts +0 -18
- package/dist/lib/monitors/sources/types.js +0 -8
- package/dist/lib/monitors/sources/webhook.d.ts +0 -7
- package/dist/lib/monitors/sources/webhook.js +0 -7
- package/dist/lib/monitors/sources/ws.d.ts +0 -10
- package/dist/lib/monitors/sources/ws.js +3 -13
- package/dist/lib/monitors/state.d.ts +0 -132
- package/dist/lib/monitors/state.js +2 -86
- package/dist/lib/native-accounts.d.ts +0 -32
- package/dist/lib/native-accounts.js +0 -17
- package/dist/lib/net-close.d.ts +0 -9
- package/dist/lib/net-close.js +0 -5
- package/dist/lib/notify.d.ts +0 -47
- package/dist/lib/notify.js +0 -30
- package/dist/lib/onepassword.d.ts +0 -14
- package/dist/lib/onepassword.js +0 -12
- package/dist/lib/open-url.d.ts +0 -38
- package/dist/lib/open-url.js +1 -69
- package/dist/lib/openclaw-keychain.js +2 -7
- package/dist/lib/operator.d.ts +0 -9
- package/dist/lib/operator.js +0 -34
- package/dist/lib/origin-machine.d.ts +0 -16
- package/dist/lib/origin-machine.js +0 -16
- package/dist/lib/output/git-output.d.ts +0 -31
- package/dist/lib/output/git-output.js +4 -43
- package/dist/lib/overdue.d.ts +0 -35
- package/dist/lib/overdue.js +0 -60
- package/dist/lib/owner-message.d.ts +0 -20
- package/dist/lib/owner-message.js +1 -40
- package/dist/lib/packages/output-home.d.ts +0 -28
- package/dist/lib/packages/output-home.js +0 -114
- package/dist/lib/paths.d.ts +0 -26
- package/dist/lib/paths.js +1 -27
- package/dist/lib/percentile.d.ts +0 -11
- package/dist/lib/percentile.js +0 -11
- package/dist/lib/perf/db.d.ts +0 -16
- package/dist/lib/perf/db.js +3 -32
- package/dist/lib/perf/spool.d.ts +0 -12
- package/dist/lib/perf/spool.js +0 -13
- package/dist/lib/perf/types.d.ts +0 -26
- package/dist/lib/perf/types.js +0 -1
- package/dist/lib/permissions-registry.d.ts +0 -48
- package/dist/lib/permissions-registry.js +0 -108
- package/dist/lib/permissions.d.ts +0 -215
- package/dist/lib/permissions.js +4 -407
- package/dist/lib/picker.d.ts +0 -124
- package/dist/lib/picker.js +0 -140
- package/dist/lib/placement.d.ts +0 -57
- package/dist/lib/placement.js +0 -47
- package/dist/lib/platform/exec.d.ts +0 -73
- package/dist/lib/platform/exec.js +0 -80
- package/dist/lib/platform/index.d.ts +0 -14
- package/dist/lib/platform/index.js +0 -14
- package/dist/lib/platform/ipc.d.ts +0 -10
- package/dist/lib/platform/ipc.js +0 -13
- package/dist/lib/platform/links.d.ts +0 -14
- package/dist/lib/platform/links.js +0 -25
- package/dist/lib/platform/paths.d.ts +0 -48
- package/dist/lib/platform/paths.js +0 -52
- package/dist/lib/platform/posixpath.d.ts +0 -18
- package/dist/lib/platform/posixpath.js +0 -62
- package/dist/lib/platform/process.d.ts +0 -67
- package/dist/lib/platform/process.js +5 -99
- package/dist/lib/platform/winpath.d.ts +0 -50
- package/dist/lib/platform/winpath.js +0 -81
- package/dist/lib/plugins/plugin-marketplace.d.ts +0 -165
- package/dist/lib/plugins/plugin-marketplace.js +10 -238
- package/dist/lib/plugins/plugins.d.ts +0 -238
- package/dist/lib/plugins/plugins.js +20 -454
- package/dist/lib/plugins/skills.d.ts +0 -86
- package/dist/lib/plugins/skills.js +1 -139
- package/dist/lib/pr-land-detach.d.ts +0 -17
- package/dist/lib/pr-land-detach.js +0 -30
- package/dist/lib/pricing/cost.d.ts +0 -29
- package/dist/lib/pricing/cost.js +0 -38
- package/dist/lib/pricing/index.d.ts +0 -6
- package/dist/lib/pricing/index.js +0 -6
- package/dist/lib/pricing/table.d.ts +0 -8
- package/dist/lib/pricing/table.js +3 -56
- package/dist/lib/probe.d.ts +0 -5
- package/dist/lib/probe.js +0 -40
- package/dist/lib/profiles-presets.d.ts +0 -20
- package/dist/lib/profiles-presets.js +1 -36
- package/dist/lib/profiles.d.ts +0 -185
- package/dist/lib/profiles.js +1 -158
- package/dist/lib/project-doctor.d.ts +0 -29
- package/dist/lib/project-doctor.js +0 -26
- package/dist/lib/project-focus.d.ts +0 -41
- package/dist/lib/project-focus.js +0 -49
- package/dist/lib/project-import.d.ts +0 -41
- package/dist/lib/project-import.js +0 -36
- package/dist/lib/project-key.d.ts +0 -65
- package/dist/lib/project-key.js +0 -70
- package/dist/lib/project-launch.d.ts +0 -49
- package/dist/lib/project-launch.js +2 -91
- package/dist/lib/project-probe.d.ts +0 -86
- package/dist/lib/project-probe.js +1 -88
- package/dist/lib/project-pull.d.ts +0 -96
- package/dist/lib/project-pull.js +0 -122
- package/dist/lib/project-resources.d.ts +0 -44
- package/dist/lib/project-resources.js +7 -171
- package/dist/lib/project-root.d.ts +0 -95
- package/dist/lib/project-root.js +0 -101
- package/dist/lib/project-schedule.d.ts +0 -43
- package/dist/lib/project-schedule.js +0 -52
- package/dist/lib/project-status.d.ts +0 -108
- package/dist/lib/project-status.js +0 -117
- package/dist/lib/projects.d.ts +0 -197
- package/dist/lib/projects.js +1 -213
- package/dist/lib/pwsh.d.ts +0 -41
- package/dist/lib/pwsh.js +0 -51
- package/dist/lib/quick-todo.d.ts +84 -0
- package/dist/lib/quick-todo.js +243 -0
- package/dist/lib/reconcile-and-repair.d.ts +0 -78
- package/dist/lib/reconcile-and-repair.js +3 -66
- package/dist/lib/redact.d.ts +0 -29
- package/dist/lib/redact.js +0 -54
- package/dist/lib/refresh-coordinator.d.ts +0 -15
- package/dist/lib/refresh-coordinator.js +0 -10
- package/dist/lib/refresh.d.ts +0 -39
- package/dist/lib/refresh.js +0 -45
- package/dist/lib/registry.d.ts +0 -65
- package/dist/lib/registry.js +0 -127
- package/dist/lib/reminders.d.ts +0 -21
- package/dist/lib/reminders.js +0 -30
- package/dist/lib/remote-agents-json.d.ts +0 -44
- package/dist/lib/remote-agents-json.js +1 -44
- package/dist/lib/reserved-stores.d.ts +0 -28
- package/dist/lib/reserved-stores.js +2 -28
- package/dist/lib/resource-aliases.d.ts +0 -12
- package/dist/lib/resource-aliases.js +0 -12
- package/dist/lib/resource-content-diff.d.ts +0 -28
- package/dist/lib/resource-content-diff.js +7 -34
- package/dist/lib/resource-inventory.d.ts +0 -51
- package/dist/lib/resource-inventory.js +0 -45
- package/dist/lib/resource-patterns.d.ts +0 -32
- package/dist/lib/resource-patterns.js +0 -34
- package/dist/lib/resource-profiles.d.ts +0 -7
- package/dist/lib/resource-profiles.js +0 -11
- package/dist/lib/resources/types.d.ts +0 -50
- package/dist/lib/resources/types.js +0 -7
- package/dist/lib/resources/workflows.d.ts +0 -7
- package/dist/lib/resources/workflows.js +0 -13
- package/dist/lib/resources.d.ts +0 -65
- package/dist/lib/resources.js +0 -78
- package/dist/lib/routers.d.ts +0 -67
- package/dist/lib/routers.js +0 -60
- package/dist/lib/routine-activation.d.ts +0 -23
- package/dist/lib/routine-activation.js +0 -24
- package/dist/lib/routine-context.d.ts +1 -91
- package/dist/lib/routine-context.js +0 -107
- package/dist/lib/routine-notify-owner.d.ts +0 -79
- package/dist/lib/routine-notify-owner.js +1 -103
- package/dist/lib/routine-notify.d.ts +0 -70
- package/dist/lib/routine-notify.js +1 -75
- package/dist/lib/routine-process-cleanup.d.ts +0 -1
- package/dist/lib/routine-process-cleanup.js +1 -4
- package/dist/lib/routine-readiness.d.ts +0 -63
- package/dist/lib/routine-readiness.js +4 -86
- package/dist/lib/routines-format.d.ts +0 -40
- package/dist/lib/routines-format.js +0 -67
- package/dist/lib/routines-placement.d.ts +0 -33
- package/dist/lib/routines-placement.js +0 -40
- package/dist/lib/routines-project.d.ts +0 -57
- package/dist/lib/routines-project.js +6 -80
- package/dist/lib/rules/compile.d.ts +0 -66
- package/dist/lib/rules/compile.js +6 -118
- package/dist/lib/rules/compose.d.ts +0 -56
- package/dist/lib/rules/compose.js +2 -83
- package/dist/lib/rules/rules.d.ts +0 -23
- package/dist/lib/rules/rules.js +0 -35
- package/dist/lib/rules/run-sync.d.ts +0 -16
- package/dist/lib/rules/run-sync.js +1 -44
- package/dist/lib/run-config.d.ts +0 -7
- package/dist/lib/run-config.js +0 -8
- package/dist/lib/run-defaults.d.ts +0 -14
- package/dist/lib/run-defaults.js +0 -14
- package/dist/lib/run-notify.d.ts +0 -18
- package/dist/lib/run-notify.js +0 -36
- package/dist/lib/run-trace-sync.d.ts +0 -21
- package/dist/lib/run-trace-sync.js +2 -66
- package/dist/lib/rush-session.d.ts +0 -26
- package/dist/lib/rush-session.js +0 -28
- package/dist/lib/sandbox.d.ts +0 -45
- package/dist/lib/sandbox.js +5 -93
- package/dist/lib/scheduler.d.ts +0 -28
- package/dist/lib/scheduler.js +0 -45
- package/dist/lib/scheduling/routines.d.ts +0 -652
- package/dist/lib/scheduling/routines.js +8 -475
- package/dist/lib/secrets-cli.d.ts +3 -8
- package/dist/lib/secrets-cli.js +1 -19
- package/dist/lib/secrets-client.d.ts +0 -117
- package/dist/lib/secrets-client.js +4 -275
- package/dist/lib/secrets-policy.d.ts +0 -142
- package/dist/lib/secrets-policy.js +4 -237
- package/dist/lib/secrets-types.d.ts +0 -87
- package/dist/lib/secrets-types.js +0 -13
- package/dist/lib/self-heal/checks/hook-manifest.js +0 -25
- package/dist/lib/self-heal/checks/hook-runtime.js +0 -5
- package/dist/lib/self-heal/checks/install-staging.d.ts +0 -1
- package/dist/lib/self-heal/checks/install-staging.js +1 -28
- package/dist/lib/self-heal/checks/menubar-helper.js +0 -5
- package/dist/lib/self-heal/checks/path.js +0 -9
- package/dist/lib/self-heal/checks/resources.js +0 -5
- package/dist/lib/self-heal/checks/shadowing.js +2 -16
- package/dist/lib/self-heal/checks/shims.js +0 -14
- package/dist/lib/self-heal/child.d.ts +12 -0
- package/dist/lib/self-heal/child.js +23 -0
- package/dist/lib/self-heal/registry.d.ts +0 -9
- package/dist/lib/self-heal/registry.js +0 -16
- package/dist/lib/self-heal/types.d.ts +0 -12
- package/dist/lib/self-heal/types.js +0 -15
- package/dist/lib/self-update.d.ts +0 -312
- package/dist/lib/self-update.js +9 -360
- package/dist/lib/service-manifest.d.ts +0 -39
- package/dist/lib/service-manifest.js +0 -72
- package/dist/lib/session/active.d.ts +13 -869
- package/dist/lib/session/active.js +20 -976
- package/dist/lib/session/actor-sidecar.d.ts +1 -32
- package/dist/lib/session/actor-sidecar.js +1 -41
- package/dist/lib/session/bookmarks.d.ts +0 -33
- package/dist/lib/session/bookmarks.js +0 -37
- package/dist/lib/session/bundle.d.ts +0 -86
- package/dist/lib/session/bundle.js +0 -54
- package/dist/lib/session/claude-accounts.d.ts +0 -40
- package/dist/lib/session/claude-accounts.js +0 -49
- package/dist/lib/session/cloud.d.ts +1 -23
- package/dist/lib/session/cloud.js +0 -26
- package/dist/lib/session/db.d.ts +5 -658
- package/dist/lib/session/db.js +22 -1443
- package/dist/lib/session/detached.d.ts +0 -21
- package/dist/lib/session/detached.js +0 -29
- package/dist/lib/session/discover.d.ts +3 -420
- package/dist/lib/session/discover.js +30 -1123
- package/dist/lib/session/fork.d.ts +1 -41
- package/dist/lib/session/fork.js +0 -19
- package/dist/lib/session/ghostty-tabs.d.ts +0 -24
- package/dist/lib/session/ghostty-tabs.js +0 -37
- package/dist/lib/session/glance-files.d.ts +19 -0
- package/dist/lib/session/glance-files.js +258 -0
- package/dist/lib/session/hook-sessions.d.ts +0 -33
- package/dist/lib/session/hook-sessions.js +4 -99
- package/dist/lib/session/host-link.d.ts +1 -94
- package/dist/lib/session/host-link.js +1 -81
- package/dist/lib/session/inject-target.d.ts +8 -0
- package/dist/lib/session/inject-target.js +32 -0
- package/dist/lib/session/inject.d.ts +0 -15
- package/dist/lib/session/inject.js +0 -15
- package/dist/lib/session/live-metadata.d.ts +1 -34
- package/dist/lib/session/live-metadata.js +1 -73
- package/dist/lib/session/local-tmux-attach.d.ts +0 -37
- package/dist/lib/session/local-tmux-attach.js +1 -76
- package/dist/lib/session/migrate-targets.d.ts +0 -46
- package/dist/lib/session/migrate-targets.js +0 -24
- package/dist/lib/session/migrations.d.ts +0 -12
- package/dist/lib/session/migrations.js +1 -20
- package/dist/lib/session/mirror.d.ts +0 -32
- package/dist/lib/session/mirror.js +0 -77
- package/dist/lib/session/origin-machine.js +0 -3
- package/dist/lib/session/pid-registry.d.ts +0 -80
- package/dist/lib/session/pid-registry.js +2 -81
- package/dist/lib/session/presence.d.ts +0 -39
- package/dist/lib/session/presence.js +2 -52
- package/dist/lib/session/process-view.d.ts +0 -11
- package/dist/lib/session/process-view.js +0 -25
- package/dist/lib/session/projection.d.ts +0 -3
- package/dist/lib/session/projection.js +0 -10
- package/dist/lib/session/provenance.d.ts +1 -37
- package/dist/lib/session/provenance.js +0 -69
- package/dist/lib/session/recovery.d.ts +1 -40
- package/dist/lib/session/recovery.js +2 -80
- package/dist/lib/session/relative-time.js +0 -3
- package/dist/lib/session/remote/peer-stream.d.ts +0 -42
- package/dist/lib/session/remote/peer-stream.js +0 -64
- package/dist/lib/session/remote/remote-bundle.d.ts +0 -6
- package/dist/lib/session/remote/remote-bundle.js +0 -21
- package/dist/lib/session/remote/remote-list.d.ts +1 -110
- package/dist/lib/session/remote/remote-list.js +5 -139
- package/dist/lib/session/remote/remote.d.ts +0 -98
- package/dist/lib/session/remote/remote.js +3 -119
- package/dist/lib/session/remote/watch.d.ts +1 -34
- package/dist/lib/session/remote/watch.js +12 -72
- package/dist/lib/session/remote-active.d.ts +0 -35
- package/dist/lib/session/remote-active.js +0 -48
- package/dist/lib/session/remote-bundle.js +0 -2
- package/dist/lib/session/remote-list.js +0 -2
- package/dist/lib/session/remote-preview-cache.d.ts +0 -7
- package/dist/lib/session/remote-preview-cache.js +1 -76
- package/dist/lib/session/remote.js +0 -2
- package/dist/lib/session/resume-command.d.ts +0 -6
- package/dist/lib/session/resume-command.js +0 -6
- package/dist/lib/session/resume-owner.d.ts +1 -52
- package/dist/lib/session/resume-owner.js +0 -56
- package/dist/lib/session/run-names.d.ts +0 -24
- package/dist/lib/session/run-names.js +0 -26
- package/dist/lib/session/session-cache.d.ts +2 -146
- package/dist/lib/session/session-cache.js +26 -203
- package/dist/lib/session/short-id.js +0 -3
- package/dist/lib/session/sync/agents.d.ts +0 -68
- package/dist/lib/session/sync/agents.js +0 -0
- package/dist/lib/session/sync/backend.d.ts +0 -39
- package/dist/lib/session/sync/backend.js +0 -45
- package/dist/lib/session/sync/config.d.ts +0 -27
- package/dist/lib/session/sync/config.js +0 -56
- package/dist/lib/session/sync/managed-config.d.ts +0 -17
- package/dist/lib/session/sync/managed-config.js +0 -17
- package/dist/lib/session/sync/managed-key.d.ts +0 -38
- package/dist/lib/session/sync/managed-key.js +1 -42
- package/dist/lib/session/sync/net-client.d.ts +0 -36
- package/dist/lib/session/sync/net-client.js +0 -30
- package/dist/lib/session/sync/provision.d.ts +0 -2
- package/dist/lib/session/sync/provision.js +0 -13
- package/dist/lib/session/sync/r2.d.ts +0 -20
- package/dist/lib/session/sync/r2.js +0 -20
- package/dist/lib/session/sync/transcript-crypto.d.ts +0 -37
- package/dist/lib/session/sync/transcript-crypto.js +5 -37
- package/dist/lib/session/sync/worker-template.d.ts +0 -5
- package/dist/lib/session/sync/worker-template.js +0 -40
- package/dist/lib/session/testdata/pid-registry-namespace.js +0 -2
- package/dist/lib/session/testdata/process-view-private.js +0 -1
- package/dist/lib/session/throughput.d.ts +0 -24
- package/dist/lib/session/throughput.js +1 -25
- package/dist/lib/session/timeline-pass.d.ts +1 -63
- package/dist/lib/session/timeline-pass.js +161 -148
- package/dist/lib/session/title.d.ts +0 -182
- package/dist/lib/session/title.js +0 -139
- package/dist/lib/session/tool-index.d.ts +2 -21
- package/dist/lib/session/tool-index.js +3 -75
- package/dist/lib/session/tool-store.d.ts +2 -48
- package/dist/lib/session/tool-store.js +1 -33
- package/dist/lib/session/viewing-in.d.ts +0 -67
- package/dist/lib/session/viewing-in.js +1 -71
- package/dist/lib/session/watch.js +0 -2
- package/dist/lib/session/width.js +0 -3
- package/dist/lib/sessions-client.d.ts +0 -46
- package/dist/lib/sessions-client.js +36 -113
- package/dist/lib/settings-manifest.d.ts +1 -17
- package/dist/lib/settings-manifest.js +4 -57
- package/dist/lib/setup-tool-install.d.ts +0 -1
- package/dist/lib/setup-tool-install.js +2 -7
- package/dist/lib/setup-tool-status.d.ts +0 -3
- package/dist/lib/setup-tool-status.js +4 -14
- package/dist/lib/sha256-asset.d.ts +0 -20
- package/dist/lib/sha256-asset.js +0 -20
- package/dist/lib/share-runtime.d.ts +0 -10
- package/dist/lib/share-runtime.js +1 -27
- package/dist/lib/shim-heal.d.ts +0 -15
- package/dist/lib/shim-heal.js +3 -29
- package/dist/lib/signin-badge.d.ts +0 -72
- package/dist/lib/signin-badge.js +0 -86
- package/dist/lib/sink-format.d.ts +0 -32
- package/dist/lib/sink-format.js +0 -14
- package/dist/lib/smart-launch.d.ts +0 -75
- package/dist/lib/smart-launch.js +1 -83
- package/dist/lib/snapshot.d.ts +0 -46
- package/dist/lib/snapshot.js +5 -31
- package/dist/lib/spinner.d.ts +0 -37
- package/dist/lib/spinner.js +0 -37
- package/dist/lib/sqlite.d.ts +0 -13
- package/dist/lib/sqlite.js +3 -71
- package/dist/lib/ssh-exec.d.ts +0 -209
- package/dist/lib/ssh-exec.js +11 -248
- package/dist/lib/ssh-tunnel.d.ts +0 -43
- package/dist/lib/ssh-tunnel.js +2 -48
- package/dist/lib/staleness/checkers/commands.d.ts +0 -4
- package/dist/lib/staleness/checkers/commands.js +0 -4
- package/dist/lib/staleness/checkers/hooks.d.ts +0 -10
- package/dist/lib/staleness/checkers/hooks.js +0 -15
- package/dist/lib/staleness/checkers/mcp.d.ts +0 -9
- package/dist/lib/staleness/checkers/mcp.js +0 -9
- package/dist/lib/staleness/checkers/permissions.d.ts +0 -12
- package/dist/lib/staleness/checkers/permissions.js +0 -13
- package/dist/lib/staleness/checkers/plugins.d.ts +0 -8
- package/dist/lib/staleness/checkers/plugins.js +0 -8
- package/dist/lib/staleness/checkers/rules.d.ts +0 -15
- package/dist/lib/staleness/checkers/rules.js +0 -26
- package/dist/lib/staleness/checkers/skills.d.ts +0 -4
- package/dist/lib/staleness/checkers/skills.js +0 -4
- package/dist/lib/staleness/checkers/subagents.d.ts +0 -9
- package/dist/lib/staleness/checkers/subagents.js +0 -9
- package/dist/lib/staleness/checkers/types.d.ts +0 -34
- package/dist/lib/staleness/checkers/types.js +0 -19
- package/dist/lib/staleness/checkers/workflows.d.ts +0 -7
- package/dist/lib/staleness/checkers/workflows.js +0 -7
- package/dist/lib/staleness/detectors/commands.js +0 -17
- package/dist/lib/staleness/detectors/hooks.js +1 -6
- package/dist/lib/staleness/detectors/mcp.js +0 -4
- package/dist/lib/staleness/detectors/permissions.js +10 -23
- package/dist/lib/staleness/detectors/rules.js +0 -6
- package/dist/lib/staleness/detectors/skills.d.ts +0 -1
- package/dist/lib/staleness/detectors/skills.js +1 -12
- package/dist/lib/staleness/detectors/types.d.ts +0 -10
- package/dist/lib/staleness/fingerprint.d.ts +0 -19
- package/dist/lib/staleness/fingerprint.js +0 -35
- package/dist/lib/staleness/index.d.ts +0 -28
- package/dist/lib/staleness/index.js +1 -45
- package/dist/lib/staleness/layers.d.ts +0 -23
- package/dist/lib/staleness/layers.js +0 -34
- package/dist/lib/staleness/prune.d.ts +0 -71
- package/dist/lib/staleness/prune.js +2 -27
- package/dist/lib/staleness/registry.d.ts +0 -10
- package/dist/lib/staleness/registry.js +3 -33
- package/dist/lib/staleness/types.d.ts +0 -36
- package/dist/lib/staleness/types.js +0 -5
- package/dist/lib/staleness/writers/commands.js +1 -48
- package/dist/lib/staleness/writers/hooks.js +1 -18
- package/dist/lib/staleness/writers/kinds.d.ts +0 -12
- package/dist/lib/staleness/writers/kinds.js +0 -1
- package/dist/lib/staleness/writers/lazy-map.d.ts +0 -11
- package/dist/lib/staleness/writers/mcp.js +0 -13
- package/dist/lib/staleness/writers/plugins.js +0 -4
- package/dist/lib/staleness/writers/rules.d.ts +0 -1
- package/dist/lib/staleness/writers/rules.js +1 -19
- package/dist/lib/staleness/writers/skills.js +3 -14
- package/dist/lib/staleness/writers/sources.d.ts +0 -11
- package/dist/lib/staleness/writers/sources.js +0 -32
- package/dist/lib/staleness/writers/subagents.js +0 -16
- package/dist/lib/staleness/writers/types.d.ts +0 -58
- package/dist/lib/staleness/writers/workflows.js +1 -1
- package/dist/lib/standalone-tools.d.ts +24 -0
- package/dist/lib/standalone-tools.js +58 -0
- package/dist/lib/star-nudge.d.ts +0 -32
- package/dist/lib/star-nudge.js +2 -36
- package/dist/lib/startup/command-registry.d.ts +0 -45
- package/dist/lib/startup/command-registry.js +1 -46
- package/dist/lib/startup/dev-build.d.ts +0 -9
- package/dist/lib/startup/dev-build.js +1 -42
- package/dist/lib/startup/root-command.d.ts +0 -19
- package/dist/lib/startup/root-command.js +0 -19
- package/dist/lib/startup/spellcheck.d.ts +0 -13
- package/dist/lib/startup/spellcheck.js +0 -13
- package/dist/lib/state.d.ts +0 -376
- package/dist/lib/state.js +19 -737
- package/dist/lib/storage/selection.d.ts +0 -40
- package/dist/lib/storage/selection.js +0 -29
- package/dist/lib/subagents-registry.d.ts +0 -56
- package/dist/lib/subagents-registry.js +0 -99
- package/dist/lib/subagents.d.ts +0 -128
- package/dist/lib/subagents.js +1 -158
- package/dist/lib/summarizer/config.d.ts +0 -37
- package/dist/lib/summarizer/config.js +0 -37
- package/dist/lib/summarizer/pass.d.ts +0 -20
- package/dist/lib/summarizer/pass.js +1 -34
- package/dist/lib/summarizer/summarize.d.ts +1 -49
- package/dist/lib/summarizer/summarize.js +0 -35
- package/dist/lib/sync-passphrase.d.ts +0 -16
- package/dist/lib/sync-passphrase.js +1 -18
- package/dist/lib/sync-status.d.ts +0 -72
- package/dist/lib/sync-status.js +0 -55
- package/dist/lib/sync-umbrella.d.ts +0 -54
- package/dist/lib/sync-umbrella.js +0 -48
- package/dist/lib/system-run-sync.d.ts +0 -5
- package/dist/lib/system-run-sync.js +1 -31
- package/dist/lib/teams/agents.d.ts +1 -444
- package/dist/lib/teams/agents.js +11 -871
- package/dist/lib/teams/api.d.ts +2 -52
- package/dist/lib/teams/api.js +4 -63
- package/dist/lib/teams/debug.d.ts +0 -6
- package/dist/lib/teams/debug.js +0 -6
- package/dist/lib/teams/delivery.d.ts +0 -41
- package/dist/lib/teams/delivery.js +0 -32
- package/dist/lib/teams/file_ops.d.ts +0 -11
- package/dist/lib/teams/file_ops.js +0 -11
- package/dist/lib/teams/forEach.d.ts +0 -76
- package/dist/lib/teams/forEach.js +1 -77
- package/dist/lib/teams/index.d.ts +1 -7
- package/dist/lib/teams/index.js +1 -7
- package/dist/lib/teams/parsers.d.ts +0 -4
- package/dist/lib/teams/parsers.js +0 -81
- package/dist/lib/teams/persistence.d.ts +0 -2
- package/dist/lib/teams/persistence.js +0 -12
- package/dist/lib/teams/placement-probe.d.ts +0 -12
- package/dist/lib/teams/placement-probe.js +1 -51
- package/dist/lib/teams/pr-watch.d.ts +0 -107
- package/dist/lib/teams/pr-watch.js +1 -107
- package/dist/lib/teams/registry.d.ts +0 -36
- package/dist/lib/teams/registry.js +0 -47
- package/dist/lib/teams/remoteWorktree.d.ts +0 -50
- package/dist/lib/teams/remoteWorktree.js +1 -96
- package/dist/lib/teams/scheduler.d.ts +0 -111
- package/dist/lib/teams/scheduler.js +2 -125
- package/dist/lib/teams/summarizer.d.ts +0 -22
- package/dist/lib/teams/summarizer.js +6 -50
- package/dist/lib/teams/supervisor.d.ts +0 -38
- package/dist/lib/teams/supervisor.js +0 -21
- package/dist/lib/teams/worktree.d.ts +0 -95
- package/dist/lib/teams/worktree.js +3 -110
- package/dist/lib/template.d.ts +0 -21
- package/dist/lib/template.js +0 -23
- package/dist/lib/term-client.d.ts +0 -26
- package/dist/lib/term-client.js +0 -48
- package/dist/lib/term-driver.d.ts +0 -5
- package/dist/lib/term-driver.js +0 -8
- package/dist/lib/terminal/backends/ghostty.d.ts +0 -2
- package/dist/lib/terminal/backends/ghostty.js +0 -12
- package/dist/lib/terminal/backends/index.d.ts +0 -17
- package/dist/lib/terminal/backends/index.js +0 -15
- package/dist/lib/terminal/backends/iterm.d.ts +0 -2
- package/dist/lib/terminal/backends/iterm.js +0 -10
- package/dist/lib/terminal/backends/terminal-app.d.ts +0 -10
- package/dist/lib/terminal/backends/terminal-app.js +0 -30
- package/dist/lib/terminal/backends/tmux.d.ts +0 -10
- package/dist/lib/terminal/backends/tmux.js +0 -2
- package/dist/lib/terminal/backends/vscodium-agent.d.ts +0 -25
- package/dist/lib/terminal/backends/vscodium-agent.js +0 -36
- package/dist/lib/terminal/engine.d.ts +0 -17
- package/dist/lib/terminal/engine.js +0 -10
- package/dist/lib/terminal/index.d.ts +0 -8
- package/dist/lib/terminal/inject.d.ts +1 -173
- package/dist/lib/terminal/inject.js +0 -146
- package/dist/lib/terminal/policy.d.ts +0 -8
- package/dist/lib/terminal/policy.js +0 -1
- package/dist/lib/terminal/preferred.d.ts +0 -66
- package/dist/lib/terminal/preferred.js +0 -30
- package/dist/lib/terminal/quote.d.ts +0 -8
- package/dist/lib/terminal/quote.js +0 -8
- package/dist/lib/terminal/resolve.d.ts +0 -46
- package/dist/lib/terminal/resolve.js +0 -30
- package/dist/lib/terminal/run-surface.d.ts +0 -56
- package/dist/lib/terminal/run-surface.js +0 -46
- package/dist/lib/terminal/shell.d.ts +0 -3
- package/dist/lib/terminal/shell.js +0 -13
- package/dist/lib/terminal/transport.d.ts +0 -14
- package/dist/lib/terminal/transport.js +1 -30
- package/dist/lib/terminal/types.d.ts +0 -40
- package/dist/lib/terminal/types.js +0 -10
- package/dist/lib/text/relative-time.d.ts +0 -36
- package/dist/lib/text/relative-time.js +0 -43
- package/dist/lib/text/short-id.d.ts +0 -16
- package/dist/lib/text/short-id.js +0 -16
- package/dist/lib/text/width.d.ts +0 -24
- package/dist/lib/text/width.js +10 -52
- package/dist/lib/tmux/binary.d.ts +0 -36
- package/dist/lib/tmux/binary.js +0 -28
- package/dist/lib/tmux/index.d.ts +0 -5
- package/dist/lib/tmux/index.js +0 -5
- package/dist/lib/tmux/orphan-reap.d.ts +0 -253
- package/dist/lib/tmux/orphan-reap.js +3 -299
- package/dist/lib/tmux/paths.d.ts +0 -14
- package/dist/lib/tmux/paths.js +0 -14
- package/dist/lib/tmux/session.d.ts +0 -263
- package/dist/lib/tmux/session.js +6 -344
- package/dist/lib/traces/backend.d.ts +0 -20
- package/dist/lib/traces/backend.js +0 -23
- package/dist/lib/traces/classify.d.ts +0 -20
- package/dist/lib/traces/classify.js +0 -7
- package/dist/lib/traces/insights.d.ts +1 -84
- package/dist/lib/traces/insights.js +0 -126
- package/dist/lib/traces/phenotype.d.ts +0 -69
- package/dist/lib/traces/phenotype.js +0 -150
- package/dist/lib/traces/provision.d.ts +0 -1
- package/dist/lib/traces/provision.js +0 -5
- package/dist/lib/traces/schema2-build.d.ts +3 -60
- package/dist/lib/traces/schema2-build.js +8 -149
- package/dist/lib/traces/schema2-danger.d.ts +0 -30
- package/dist/lib/traces/schema2-danger.js +1 -63
- package/dist/lib/traces/schema2.d.ts +0 -11
- package/dist/lib/traces/segments.d.ts +0 -44
- package/dist/lib/traces/segments.js +0 -65
- package/dist/lib/traces/sync.d.ts +2 -239
- package/dist/lib/traces/sync.js +15 -237
- package/dist/lib/traces/worker-template.d.ts +0 -3
- package/dist/lib/traces/worker-template.js +0 -29
- package/dist/lib/triggers/handlers.d.ts +0 -82
- package/dist/lib/triggers/handlers.js +0 -75
- package/dist/lib/triggers/webhook.d.ts +0 -158
- package/dist/lib/triggers/webhook.js +0 -143
- package/dist/lib/types.d.ts +0 -736
- package/dist/lib/types.js +0 -50
- package/dist/lib/uninstall.d.ts +0 -17
- package/dist/lib/uninstall.js +0 -75
- package/dist/lib/usage-backoff.d.ts +0 -20
- package/dist/lib/usage-backoff.js +3 -60
- package/dist/lib/usage-refresh.d.ts +0 -154
- package/dist/lib/usage-refresh.js +8 -212
- package/dist/lib/verbs.d.ts +0 -12
- package/dist/lib/verbs.js +0 -12
- package/dist/lib/version-duplicates.d.ts +0 -6
- package/dist/lib/version-duplicates.js +0 -6
- package/dist/lib/version.d.ts +0 -55
- package/dist/lib/version.js +1 -58
- package/dist/lib/view-types.d.ts +0 -48
- package/dist/lib/warn-unpushed.d.ts +0 -27
- package/dist/lib/warn-unpushed.js +1 -45
- package/dist/lib/watchdog/history.d.ts +0 -1
- package/dist/lib/watchdog/history.js +0 -3
- package/dist/lib/watchdog/index.js +0 -2
- package/dist/lib/watchdog/log.d.ts +0 -19
- package/dist/lib/watchdog/log.js +0 -34
- package/dist/lib/watchdog/read.d.ts +0 -27
- package/dist/lib/watchdog/read.js +3 -58
- package/dist/lib/watchdog/rotate.d.ts +0 -139
- package/dist/lib/watchdog/rotate.js +2 -151
- package/dist/lib/watchdog/runner.d.ts +0 -125
- package/dist/lib/watchdog/runner.js +3 -223
- package/dist/lib/watchdog/service.d.ts +0 -1
- package/dist/lib/watchdog/service.js +0 -2
- package/dist/lib/watchdog/watchdog-agent.d.ts +0 -31
- package/dist/lib/watchdog/watchdog-agent.js +0 -27
- package/dist/lib/watchdog/watchdog.d.ts +0 -7
- package/dist/lib/watchdog/watchdog.js +0 -10
- package/dist/lib/watchdog/watchdogTail.js +0 -7
- package/dist/lib/whats-new.d.ts +0 -10
- package/dist/lib/whats-new.js +0 -21
- package/dist/lib/workflows-registry.d.ts +0 -45
- package/dist/lib/workflows-registry.js +0 -60
- package/dist/lib/workflows.d.ts +0 -282
- package/dist/lib/workflows.js +3 -213
- package/dist/lib/worktree/held.d.ts +0 -89
- package/dist/lib/worktree/held.js +1 -103
- package/dist/lib/wrap.d.ts +0 -32
- package/dist/lib/wrap.js +0 -32
- package/dist/lib/yaml-io.d.ts +0 -45
- package/dist/lib/yaml-io.js +0 -47
- package/dist/session-tracker/dist/adapters/claude.js +0 -2
- package/dist/session-tracker/dist/hook.sh +4 -37
- package/dist/session-tracker/dist/index.d.ts +0 -7
- package/dist/session-tracker/dist/index.js +0 -5
- package/dist/session-tracker/dist/install-hook.d.ts +0 -5
- package/dist/session-tracker/dist/install-hook.js +1 -15
- package/dist/session-tracker/dist/prune-state.js +0 -4
- package/dist/session-tracker/dist/reader.js +0 -4
- package/dist/session-tracker/dist/state-file.d.ts +0 -3
- package/dist/session-tracker/dist/state-file.js +3 -8
- package/package.json +3 -4
- package/scripts/postinstall.js +8 -116
- package/dist/lib/session/artifacts.d.ts +0 -14
- package/dist/lib/session/artifacts.js +0 -101
- package/dist/lib/session/bash-command.d.ts +0 -63
- package/dist/lib/session/bash-command.js +0 -490
- package/dist/lib/session/digest.d.ts +0 -66
- package/dist/lib/session/digest.js +0 -328
- package/dist/lib/session/highlights.d.ts +0 -151
- package/dist/lib/session/highlights.js +0 -391
- package/dist/lib/session/insights.d.ts +0 -165
- package/dist/lib/session/insights.js +0 -563
- package/dist/lib/session/linear.d.ts +0 -19
- package/dist/lib/session/linear.js +0 -99
- package/dist/lib/session/parse.d.ts +0 -224
- package/dist/lib/session/parse.js +0 -2408
- package/dist/lib/session/prompt.d.ts +0 -213
- package/dist/lib/session/prompt.js +0 -601
- package/dist/lib/session/render.d.ts +0 -133
- package/dist/lib/session/render.js +0 -1047
- package/dist/lib/session/share-html.d.ts +0 -35
- package/dist/lib/session/share-html.js +0 -319
- package/dist/lib/session/shell-programs.d.ts +0 -33
- package/dist/lib/session/shell-programs.js +0 -380
- package/dist/lib/session/state.d.ts +0 -269
- package/dist/lib/session/state.js +0 -777
- package/dist/lib/session/stream-render.d.ts +0 -4
- package/dist/lib/session/stream-render.js +0 -131
- package/dist/lib/session/tail.d.ts +0 -88
- package/dist/lib/session/tail.js +0 -294
- package/dist/lib/session/team-filter.d.ts +0 -129
- package/dist/lib/session/team-filter.js +0 -269
- package/dist/lib/session/timeline.d.ts +0 -172
- package/dist/lib/session/timeline.js +0 -636
- package/dist/lib/session/tool-calls.d.ts +0 -132
- package/dist/lib/session/tool-calls.js +0 -674
- package/dist/lib/session/trajectory-compare.d.ts +0 -48
- package/dist/lib/session/trajectory-compare.js +0 -116
- package/dist/lib/session/trajectory-html.d.ts +0 -19
- package/dist/lib/session/trajectory-html.js +0 -771
- package/dist/lib/session/trajectory-lineage.d.ts +0 -93
- package/dist/lib/session/trajectory-lineage.js +0 -195
- package/dist/lib/session/trajectory-text.d.ts +0 -38
- package/dist/lib/session/trajectory-text.js +0 -284
- package/dist/lib/session/trajectory.d.ts +0 -145
- package/dist/lib/session/trajectory.js +0 -394
- package/dist/lib/session/types.d.ts +0 -627
- package/dist/lib/session/types.js +0 -43
package/dist/lib/tmux/session.js
CHANGED
|
@@ -1,70 +1,22 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* tmux session lifecycle.
|
|
3
|
-
*
|
|
4
|
-
* Public surface used by both `agents tmux` commands and external consumers
|
|
5
|
-
* (swarmify, `agents teams` with a future multiplexer mode). Every state
|
|
6
|
-
* change goes through here so the CLI surface stays a thin parser.
|
|
7
|
-
*
|
|
8
|
-
* Liveness model: tmux itself owns liveness. The `<name>.json` meta files are
|
|
9
|
-
* pure provenance — `listSessions()` always reconciles them against
|
|
10
|
-
* `tmux list-sessions` and prunes stale entries on the fly.
|
|
11
|
-
*/
|
|
12
1
|
import * as fs from 'fs';
|
|
13
2
|
import * as fsp from 'fs/promises';
|
|
14
3
|
import * as os from 'os';
|
|
15
4
|
import * as path from 'path';
|
|
16
5
|
import { runTmux, TmuxCommandError } from './binary.js';
|
|
17
6
|
import { ensureTmuxDir, getDefaultSocketPath, getSessionMetaPath } from './paths.js';
|
|
18
|
-
/** Tmux session names must not contain `.` or `:` — those are reserved for window/pane addressing. */
|
|
19
7
|
const VALID_NAME = /^[A-Za-z0-9_-]{1,64}$/;
|
|
20
|
-
/**
|
|
21
|
-
* Ten times tmux's 2,000-line default, while keeping per-pane memory bounded:
|
|
22
|
-
* history storage scales with pane width, so a 200-column pane retains at most
|
|
23
|
-
* four million grid cells rather than an unbounded agent transcript.
|
|
24
|
-
*/
|
|
25
8
|
export const AGENTS_TMUX_HISTORY_LIMIT = 20_000;
|
|
26
|
-
/**
|
|
27
|
-
* Bump when the generated startup config changes, so an ALREADY-RUNNING server
|
|
28
|
-
* picks the new settings up. tmux reads `-f` only when it actually starts a
|
|
29
|
-
* server: a second `new-session -f other.conf` against a live server exits 0
|
|
30
|
-
* and silently applies nothing (verified against tmux 3.4). Since agents-cli
|
|
31
|
-
* uses one long-lived shared socket, the normal state at upgrade is a running
|
|
32
|
-
* server — so without this reconcile every existing machine would get none of
|
|
33
|
-
* these defaults, silently. Same shape as AGENT_HOOK_SCHEMA below.
|
|
34
|
-
*/
|
|
35
9
|
export const AGENTS_TMUX_CONFIG_SCHEMA = 1;
|
|
36
|
-
/** Server-scoped user-option recording which AGENTS_TMUX_CONFIG_SCHEMA is applied. */
|
|
37
10
|
const CONFIG_SCHEMA_OPTION = '@ag_tmux_config_schema';
|
|
38
|
-
/**
|
|
39
|
-
* Session-scoped user options naming WHICH agent session a wrapper session runs,
|
|
40
|
-
* so a status bar (or any tmux format) can show it without shelling out:
|
|
41
|
-
* `#{@ag_session_id}` / `#{@ag_agent}`.
|
|
42
|
-
*
|
|
43
|
-
* The session NAME cannot serve this purpose. runInTmux builds it from
|
|
44
|
-
* `(options.sessionId ?? randomUUID()).slice(0, 8)` (exec.ts), so a run with no
|
|
45
|
-
* pre-assigned id still gets 8 hex characters — indistinguishable from a real
|
|
46
|
-
* short session id but resolving to nothing. Only claude currently takes a
|
|
47
|
-
* forced `--session-id`, so on a box running both, `ag-claude-<real>` and
|
|
48
|
-
* `ag-codex-<fabricated>` look identical. These options are stamped ONLY from
|
|
49
|
-
* `labels.sessionId`, which is set only when the id is genuine — absent rather
|
|
50
|
-
* than wrong, so a consumer can fall back instead of displaying a fake handle.
|
|
51
|
-
*/
|
|
52
11
|
const SESSION_ID_OPTION = '@ag_session_id';
|
|
53
12
|
const AGENT_NAME_OPTION = '@ag_agent';
|
|
54
13
|
let startupConfigSequence = 0;
|
|
55
14
|
function tmuxConfigArgument(value) {
|
|
56
15
|
return `"${value.replace(/([\\"$])/g, '\\$1')}"`;
|
|
57
16
|
}
|
|
58
|
-
/** Source one user config without tmux's quiet flag, preserving path bytes. */
|
|
59
17
|
export function userConfigSourceLine(value) {
|
|
60
18
|
return `source-file ${tmuxConfigArgument(value)}`;
|
|
61
19
|
}
|
|
62
|
-
/**
|
|
63
|
-
* tmux loads `-f` instead of its normal user config, so put agents-cli's
|
|
64
|
-
* defaults first and explicitly source the first user config tmux would have
|
|
65
|
-
* selected afterward. Configuration files execute in order; this makes these
|
|
66
|
-
* settings defaults while preserving every option or binding the user sets.
|
|
67
|
-
*/
|
|
68
20
|
function writeStartupConfig(env) {
|
|
69
21
|
const effectiveEnv = env ?? process.env;
|
|
70
22
|
const home = effectiveEnv.HOME ?? os.homedir();
|
|
@@ -75,17 +27,9 @@ function writeStartupConfig(env) {
|
|
|
75
27
|
: []),
|
|
76
28
|
path.join(home, '.config', 'tmux', 'tmux.conf'),
|
|
77
29
|
];
|
|
78
|
-
// tmux's own start_cfg() sources EVERY entry of TMUX_CONF that exists, not
|
|
79
|
-
// just the first — a user with both ~/.tmux.conf and ~/.config/tmux/tmux.conf
|
|
80
|
-
// gets both. Sourcing only the first would silently drop the second and break
|
|
81
|
-
// the "never override a user-set value" contract this file exists to keep.
|
|
82
30
|
const userConfigs = candidates.filter((candidate) => fs.existsSync(candidate));
|
|
83
31
|
const startupConfig = path.join(ensureTmuxDir(), `startup-${process.pid}-${startupConfigSequence++}.conf`);
|
|
84
32
|
const lines = [
|
|
85
|
-
// Stamp the schema HERE as well as in reconcileServerConfig. Without it a
|
|
86
|
-
// cold start leaves the option unset, the post-new-session check sees a
|
|
87
|
-
// stale stamp, and the reconcile re-sources the user's config a second time
|
|
88
|
-
// on launch #1 — firing any run-shell side effect (TPM) twice.
|
|
89
33
|
`set-option -g ${CONFIG_SCHEMA_OPTION} ${AGENTS_TMUX_CONFIG_SCHEMA}`,
|
|
90
34
|
'set-option -g mouse on',
|
|
91
35
|
'set-option -s set-clipboard on',
|
|
@@ -94,14 +38,11 @@ function writeStartupConfig(env) {
|
|
|
94
38
|
'bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection-no-clear',
|
|
95
39
|
];
|
|
96
40
|
for (const userConfig of userConfigs) {
|
|
97
|
-
// Do not suppress parse/read failures: a broken user config must fail the
|
|
98
|
-
// launch visibly instead of producing a silently half-configured server.
|
|
99
41
|
lines.push(userConfigSourceLine(userConfig));
|
|
100
42
|
}
|
|
101
43
|
fs.writeFileSync(startupConfig, `${lines.join('\n')}\n`, { mode: 0o600 });
|
|
102
44
|
return startupConfig;
|
|
103
45
|
}
|
|
104
|
-
/** Build the atomic server-configuration + session-creation command. */
|
|
105
46
|
export function buildCreateSessionArgs(opts, startupConfig) {
|
|
106
47
|
const args = [
|
|
107
48
|
'-f', startupConfig,
|
|
@@ -114,8 +55,6 @@ export function buildCreateSessionArgs(opts, startupConfig) {
|
|
|
114
55
|
args.push('-y', String(opts.height));
|
|
115
56
|
if (opts.cwd)
|
|
116
57
|
args.push('-c', opts.cwd);
|
|
117
|
-
// Separator + child command. tmux passes the rest verbatim to exec, so no
|
|
118
|
-
// shell escaping is required — array args end-to-end.
|
|
119
58
|
if (opts.cmd) {
|
|
120
59
|
args.push('--', 'sh', '-c', opts.cmd);
|
|
121
60
|
}
|
|
@@ -129,18 +68,15 @@ export class TmuxSessionError extends Error {
|
|
|
129
68
|
this.name = 'TmuxSessionError';
|
|
130
69
|
}
|
|
131
70
|
}
|
|
132
|
-
/** Reject invalid session names early — tmux's error for `.`/`:` is cryptic. */
|
|
133
71
|
export function assertValidSessionName(name) {
|
|
134
72
|
if (!VALID_NAME.test(name)) {
|
|
135
73
|
throw new TmuxSessionError(`Invalid session name: "${name}". Use 1-64 characters from [A-Za-z0-9_-]. tmux disallows '.' and ':'.`);
|
|
136
74
|
}
|
|
137
75
|
}
|
|
138
|
-
/** Slugify an arbitrary string into a valid session name. Useful for swarmify auto-generated names. */
|
|
139
76
|
export function slugifyName(input) {
|
|
140
77
|
const s = input.replace(/[^A-Za-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '').slice(0, 64);
|
|
141
78
|
return s || `s-${Date.now()}`;
|
|
142
79
|
}
|
|
143
|
-
/** True when a session by this name currently exists on the given socket. */
|
|
144
80
|
export async function hasSession(name, socket) {
|
|
145
81
|
assertValidSessionName(name);
|
|
146
82
|
const sock = socket ?? getDefaultSocketPath();
|
|
@@ -151,7 +87,6 @@ export async function hasSession(name, socket) {
|
|
|
151
87
|
});
|
|
152
88
|
return res.code === 0;
|
|
153
89
|
}
|
|
154
|
-
/** Which AGENTS_TMUX_CONFIG_SCHEMA a live server has applied; undefined when none. */
|
|
155
90
|
async function appliedConfigSchema(socket) {
|
|
156
91
|
const res = await runTmux({
|
|
157
92
|
socket,
|
|
@@ -163,11 +98,6 @@ async function appliedConfigSchema(socket) {
|
|
|
163
98
|
const n = Number(res.stdout.trim());
|
|
164
99
|
return Number.isFinite(n) ? n : undefined;
|
|
165
100
|
}
|
|
166
|
-
/**
|
|
167
|
-
* Apply the generated startup config to an already-running server and stamp it.
|
|
168
|
-
* Failure is surfaced, not swallowed: a server left without these settings is
|
|
169
|
-
* the silent no-op this exists to prevent.
|
|
170
|
-
*/
|
|
171
101
|
async function reconcileServerConfig(socket, env) {
|
|
172
102
|
const conf = writeStartupConfig(env);
|
|
173
103
|
try {
|
|
@@ -186,10 +116,6 @@ async function reconcileServerConfig(socket, env) {
|
|
|
186
116
|
fs.rmSync(conf, { force: true });
|
|
187
117
|
}
|
|
188
118
|
}
|
|
189
|
-
/**
|
|
190
|
-
* Create a new detached session. Throws when the name is already taken unless
|
|
191
|
-
* `replace` or `attachExisting` is set.
|
|
192
|
-
*/
|
|
193
119
|
export async function createSession(opts) {
|
|
194
120
|
assertValidSessionName(opts.name);
|
|
195
121
|
ensureTmuxDir();
|
|
@@ -200,10 +126,6 @@ export async function createSession(opts) {
|
|
|
200
126
|
const existed = await hasSession(opts.name, socket);
|
|
201
127
|
if (existed) {
|
|
202
128
|
if (opts.attachExisting) {
|
|
203
|
-
// Reuse of a live session is precisely the already-running-server case,
|
|
204
|
-
// so it needs the same reconcile the create path gets — otherwise
|
|
205
|
-
// `agents tmux new --attach-existing` silently keeps a pre-fix server
|
|
206
|
-
// with none of these settings.
|
|
207
129
|
if ((await appliedConfigSchema(socket)) !== AGENTS_TMUX_CONFIG_SCHEMA) {
|
|
208
130
|
await reconcileServerConfig(socket, opts.env);
|
|
209
131
|
}
|
|
@@ -220,13 +142,6 @@ export async function createSession(opts) {
|
|
|
220
142
|
}
|
|
221
143
|
await killSession(opts.name, socket);
|
|
222
144
|
}
|
|
223
|
-
// Configure the agents-cli tmux server BEFORE the child command can finish — a fast-exiting
|
|
224
|
-
// cmd (e.g. `echo BRIEF && true`) would otherwise collapse the only session,
|
|
225
|
-
// exit the server, and the follow-up `set-option` would race with "no
|
|
226
|
-
// server running". Server-wide (`-g`) is applied in the same tmux
|
|
227
|
-
// invocation as new-session so they share one server lifetime.
|
|
228
|
-
// `-P -F '#{pane_id}'` prints the new session's first pane id on stdout so we
|
|
229
|
-
// can record the exact `%N` handle without a follow-up `list-panes`.
|
|
230
145
|
const startupConfig = writeStartupConfig(opts.env);
|
|
231
146
|
const args = buildCreateSessionArgs(opts, startupConfig);
|
|
232
147
|
let res;
|
|
@@ -236,28 +151,13 @@ export async function createSession(opts) {
|
|
|
236
151
|
finally {
|
|
237
152
|
fs.rmSync(startupConfig, { force: true });
|
|
238
153
|
}
|
|
239
|
-
// Only the new-session command in the `;`-chained invocation emits output.
|
|
240
154
|
const pane = /^%\d+$/.test(res.stdout.trim()) ? res.stdout.trim() : undefined;
|
|
241
|
-
// If the server was ALREADY running, its `-f` was ignored, so the config above
|
|
242
|
-
// never applied. Re-source it — the generated file ends by sourcing the user's
|
|
243
|
-
// own tmux.conf, so re-applying preserves the same precedence a cold start
|
|
244
|
-
// gives. Gated on a generation stamp so a user config with side effects (tpm's
|
|
245
|
-
// run-shell, for one) is not re-executed on every single launch.
|
|
246
155
|
if (existed || (await appliedConfigSchema(socket)) !== AGENTS_TMUX_CONFIG_SCHEMA) {
|
|
247
156
|
await reconcileServerConfig(socket, opts.env);
|
|
248
157
|
}
|
|
249
|
-
// Keep the agent pane around after its process exits (so runInTmux can read
|
|
250
|
-
// the exit status and capture the final error), but do NOT keep that behavior
|
|
251
|
-
// for user-created splits. Apply remain-on-exit to the agent pane only, then
|
|
252
|
-
// revert the global default so future splits close automatically when their
|
|
253
|
-
// command finishes. The global-on above protects a fast-exiting agent during
|
|
254
|
-
// the brief window before the pane option is stamped.
|
|
255
158
|
if (pane) {
|
|
256
159
|
await runTmux({ socket, args: ['set-option', '-pt', pane, 'remain-on-exit', 'on', ';', 'set-option', '-g', 'remain-on-exit', 'off'], throwOnError: false }).catch(() => { });
|
|
257
160
|
}
|
|
258
|
-
// Stamp the agent identity onto the session so tmux formats can read it.
|
|
259
|
-
// Best-effort: a failure here must not fail a launch that otherwise worked,
|
|
260
|
-
// and an unset option simply renders empty in a format.
|
|
261
161
|
const identityArgs = [];
|
|
262
162
|
if (opts.labels?.sessionId) {
|
|
263
163
|
identityArgs.push('set-option', '-t', opts.name, SESSION_ID_OPTION, opts.labels.sessionId);
|
|
@@ -274,8 +174,6 @@ export async function createSession(opts) {
|
|
|
274
174
|
name: opts.name,
|
|
275
175
|
socket,
|
|
276
176
|
createdAt: Date.now(),
|
|
277
|
-
// Persist the redacted copy when provided so resolved secret values in the
|
|
278
|
-
// launch command never land on disk (RUSH-1758).
|
|
279
177
|
cmd: opts.metaCmd ?? opts.cmd,
|
|
280
178
|
cwd: opts.cwd,
|
|
281
179
|
source: opts.source ?? 'cli',
|
|
@@ -285,17 +183,6 @@ export async function createSession(opts) {
|
|
|
285
183
|
writeSessionMeta(meta);
|
|
286
184
|
return meta;
|
|
287
185
|
}
|
|
288
|
-
/**
|
|
289
|
-
* Kill one named session. Idempotent — killing a non-existent session is a no-op.
|
|
290
|
-
*
|
|
291
|
-
* Destroying the tmux session only SIGHUPs each pane's FOREGROUND process group,
|
|
292
|
-
* so a helper the agent put in its own process group (an MCP server, a harness
|
|
293
|
-
* background daemon) survives and reparents to init. `reapOrphans` therefore
|
|
294
|
-
* defaults ON: the session's leftover helpers are terminated with it rather than
|
|
295
|
-
* waiting for the daemon's next sweep (RUSH-2521). {@link reapDeadTmuxPanes}
|
|
296
|
-
* passes `false` because it sweeps every session's leftovers in one pass instead
|
|
297
|
-
* of re-snapshotting the process table per session.
|
|
298
|
-
*/
|
|
299
186
|
export async function killSession(name, socket, opts = {}) {
|
|
300
187
|
assertValidSessionName(name);
|
|
301
188
|
const sock = socket ?? getDefaultSocketPath();
|
|
@@ -309,7 +196,6 @@ export async function killSession(name, socket, opts = {}) {
|
|
|
309
196
|
}
|
|
310
197
|
catch (err) {
|
|
311
198
|
if (err instanceof TmuxCommandError && err.code !== 0) {
|
|
312
|
-
// Already dead by the time the kill landed — treat as success.
|
|
313
199
|
}
|
|
314
200
|
else {
|
|
315
201
|
throw err;
|
|
@@ -322,15 +208,6 @@ export async function killSession(name, socket, opts = {}) {
|
|
|
322
208
|
removeSessionMeta(name);
|
|
323
209
|
return true;
|
|
324
210
|
}
|
|
325
|
-
/**
|
|
326
|
-
* After an attach client returns: destroy the session if every pane is dead
|
|
327
|
-
* (the agent exited); leave it if any pane is still alive (Ctrl-b d).
|
|
328
|
-
*
|
|
329
|
-
* `runInTmux` already does this via `resolveAfterAttach`. The attach verbs
|
|
330
|
-
* (`agents tmux attach`, `sessions focus`/`resume --attach-only`, `jumpTo`)
|
|
331
|
-
* used to `process.exit` the tmux client status and leave a `remain-on-exit`
|
|
332
|
-
* husk — the session "came back" in `tmux ls` after the user exited the agent.
|
|
333
|
-
*/
|
|
334
211
|
export async function teardownIfAgentExited(name, socket) {
|
|
335
212
|
assertValidSessionName(name);
|
|
336
213
|
const sock = socket ?? getDefaultSocketPath();
|
|
@@ -351,10 +228,6 @@ export async function teardownIfAgentExited(name, socket) {
|
|
|
351
228
|
await killSession(name, sock).catch(() => { });
|
|
352
229
|
return 'killed';
|
|
353
230
|
}
|
|
354
|
-
/**
|
|
355
|
-
* Kill every session on the shared server AND the server itself, then prune
|
|
356
|
-
* meta files. Wipes the socket so the next `new` starts from a clean slate.
|
|
357
|
-
*/
|
|
358
231
|
export async function killAll(socket) {
|
|
359
232
|
const sock = socket ?? getDefaultSocketPath();
|
|
360
233
|
let count = 0;
|
|
@@ -364,63 +237,30 @@ export async function killAll(socket) {
|
|
|
364
237
|
await runTmux({ socket: sock, args: ['kill-server'], throwOnError: false });
|
|
365
238
|
}
|
|
366
239
|
catch {
|
|
367
|
-
// Server already gone — that's a successful kill-all.
|
|
368
240
|
}
|
|
369
|
-
// Clear meta files for every session we knew about.
|
|
370
241
|
const dir = ensureTmuxDir();
|
|
371
242
|
for (const f of fs.readdirSync(dir)) {
|
|
372
243
|
if (f.endsWith('.json')) {
|
|
373
244
|
try {
|
|
374
245
|
fs.unlinkSync(`${dir}/${f}`);
|
|
375
246
|
}
|
|
376
|
-
catch {
|
|
247
|
+
catch { }
|
|
377
248
|
}
|
|
378
249
|
}
|
|
379
|
-
// Stale socket can survive kill-server on some platforms — sweep it.
|
|
380
250
|
try {
|
|
381
251
|
fs.unlinkSync(sock);
|
|
382
252
|
}
|
|
383
|
-
catch {
|
|
253
|
+
catch { }
|
|
384
254
|
return count;
|
|
385
255
|
}
|
|
386
|
-
/**
|
|
387
|
-
* Kill every tmux session whose panes are ALL dead (`pane_dead=1`), and
|
|
388
|
-
* terminate the helper processes whose owning agent has exited.
|
|
389
|
-
*
|
|
390
|
-
* Dead panes accumulate because `remain-on-exit on` is intentionally set
|
|
391
|
-
* per-pane so the harness can inspect exit status. Without a periodic sweep
|
|
392
|
-
* they pile up indefinitely — e.g. 48 of 127 sessions dead on yosemite-s0
|
|
393
|
-
* (RUSH-2501).
|
|
394
|
-
*
|
|
395
|
-
* Killing the pane is not enough on its own: it SIGHUPs only the pane's
|
|
396
|
-
* FOREGROUND process group, so an MCP server or harness background daemon that
|
|
397
|
-
* moved itself out of that group survives the session that spawned it and keeps
|
|
398
|
-
* its memory forever (RUSH-2521). The process sweep runs FIRST, while the dead
|
|
399
|
-
* sessions still exist, so every leftover is attributed to a named session
|
|
400
|
-
* rather than to a session tmux has already forgotten.
|
|
401
|
-
*
|
|
402
|
-
* Safety invariant: a session with ANY live pane (`pane_dead=0`) is never
|
|
403
|
-
* touched, and neither are the processes belonging to a session whose agent is
|
|
404
|
-
* still running or that has a client attached.
|
|
405
|
-
*
|
|
406
|
-
* `dryRun` reports both halves without killing anything.
|
|
407
|
-
*/
|
|
408
256
|
export async function reapDeadTmuxPanes(socket, opts = {}) {
|
|
409
257
|
const sock = socket ?? getDefaultSocketPath();
|
|
410
258
|
const result = { reaped: 0, sessions: [], details: [], processes: 0, processDetails: [], warnings: [] };
|
|
411
|
-
// The process sweep may run with no server, but an absent session is not
|
|
412
|
-
// evidence that a still-live marked process is orphaned. Tier 1 only acts on
|
|
413
|
-
// a present pane owner confirmed dead; tier 2 independently verifies its
|
|
414
|
-
// declared spawner pid (RUSH-2603).
|
|
415
|
-
// `opts.pids` is a test-only process-table scope (see `readAgentProcesses`)
|
|
416
|
-
// — production callers never set it.
|
|
417
259
|
const { reapOrphanAgentProcesses } = await import('./orphan-reap.js');
|
|
418
260
|
const orphans = await reapOrphanAgentProcesses({ socket: sock, dryRun: opts.dryRun, pids: opts.pids });
|
|
419
261
|
result.warnings = orphans.warnings;
|
|
420
262
|
result.processes = opts.dryRun ? orphans.candidates.length : orphans.killed;
|
|
421
263
|
result.processDetails = orphans.details;
|
|
422
|
-
// Async existence check — this runs on the daemon's tmux-reap tick, so a sync
|
|
423
|
-
// `existsSync` would block the shared event loop (PHNX-3695).
|
|
424
264
|
if (!(await fsp.access(sock).then(() => true, () => false)))
|
|
425
265
|
return result;
|
|
426
266
|
const res = await runTmux({
|
|
@@ -428,10 +268,8 @@ export async function reapDeadTmuxPanes(socket, opts = {}) {
|
|
|
428
268
|
args: ['list-panes', '-a', '-F', '#{pane_id}\t#{session_name}\t#{pane_dead}'],
|
|
429
269
|
throwOnError: false,
|
|
430
270
|
});
|
|
431
|
-
// Nonzero exit means no server or no sessions — nothing to reap.
|
|
432
271
|
if (res.code !== 0)
|
|
433
272
|
return result;
|
|
434
|
-
// Group dead-flags by session name.
|
|
435
273
|
const sessionFlags = new Map();
|
|
436
274
|
for (const raw of res.stdout.split('\n')) {
|
|
437
275
|
const parts = raw.trim().split('\t');
|
|
@@ -443,13 +281,10 @@ export async function reapDeadTmuxPanes(socket, opts = {}) {
|
|
|
443
281
|
sessionFlags.set(name, []);
|
|
444
282
|
sessionFlags.get(name).push(dead);
|
|
445
283
|
}
|
|
446
|
-
// Kill only sessions where every pane is dead.
|
|
447
284
|
for (const [name, flags] of sessionFlags) {
|
|
448
285
|
if (flags.length === 0 || !flags.every(d => d))
|
|
449
286
|
continue;
|
|
450
287
|
try {
|
|
451
|
-
// The one process-table sweep above already collected this session's
|
|
452
|
-
// leftovers; a per-session reap here would re-snapshot `ps` N times.
|
|
453
288
|
if (!opts.dryRun)
|
|
454
289
|
await killSession(name, sock, { reapOrphans: false });
|
|
455
290
|
result.reaped++;
|
|
@@ -457,20 +292,10 @@ export async function reapDeadTmuxPanes(socket, opts = {}) {
|
|
|
457
292
|
result.details.push(`${name} (${flags.length} dead pane${flags.length === 1 ? '' : 's'})`);
|
|
458
293
|
}
|
|
459
294
|
catch {
|
|
460
|
-
// Best-effort: session may already be gone by the time we hit it.
|
|
461
295
|
}
|
|
462
296
|
}
|
|
463
297
|
return result;
|
|
464
298
|
}
|
|
465
|
-
/**
|
|
466
|
-
* Map every pane id (`%N`) on a socket to its `session:window.pane` attach
|
|
467
|
-
* target, in one batched `tmux list-panes -a` call. `%116 -> main:2.0` is a
|
|
468
|
-
* valid `tmux attach -t main:2` / `tmux select-window -t main:2` target — a
|
|
469
|
-
* human jump target, unlike the bare `%pane` send-keys id. Because it walks
|
|
470
|
-
* every pane (not just one-per-session), it also surfaces multiple agents that
|
|
471
|
-
* share a session across windows. Best-effort: returns an empty map on any
|
|
472
|
-
* failure (tmux gone, foreign socket) so callers fall back to the raw pane id.
|
|
473
|
-
*/
|
|
474
299
|
export async function mapPanesToTargets(socket) {
|
|
475
300
|
const out = new Map();
|
|
476
301
|
let res;
|
|
@@ -493,14 +318,6 @@ export async function mapPanesToTargets(socket) {
|
|
|
493
318
|
}
|
|
494
319
|
return out;
|
|
495
320
|
}
|
|
496
|
-
/**
|
|
497
|
-
* List every client attached to the shared server, with the terminal PID and
|
|
498
|
-
* the session/window/pane it's viewing. This is how "viewing in <app> tab N"
|
|
499
|
-
* resolves: a client's `pid` walks the process ancestry to name the host app,
|
|
500
|
-
* and its `target` says which session it's attached to. Best-effort — returns
|
|
501
|
-
* an empty list on any failure (no server, foreign socket) so the renderer
|
|
502
|
-
* degrades to "detached".
|
|
503
|
-
*/
|
|
504
321
|
export async function listClients(socket) {
|
|
505
322
|
let res;
|
|
506
323
|
try {
|
|
@@ -535,12 +352,6 @@ export async function listClients(socket) {
|
|
|
535
352
|
}
|
|
536
353
|
return out;
|
|
537
354
|
}
|
|
538
|
-
/**
|
|
539
|
-
* Read whether a pane's process has exited and, if so, its exit status. Used by
|
|
540
|
-
* the spawn-wrap path to recover the wrapped agent's exit code after the attach
|
|
541
|
-
* client returns. `found: false` distinguishes a missing pane from a living one;
|
|
542
|
-
* focus must recover the former instead of attaching a retained/stale target.
|
|
543
|
-
*/
|
|
544
355
|
export async function paneExitStatus(pane, socket) {
|
|
545
356
|
let res;
|
|
546
357
|
try {
|
|
@@ -559,13 +370,6 @@ export async function paneExitStatus(pane, socket) {
|
|
|
559
370
|
const status = statusRaw !== undefined && statusRaw !== '' ? parseInt(statusRaw, 10) : undefined;
|
|
560
371
|
return { found: true, dead: deadRaw === '1', status: Number.isFinite(status) ? status : undefined };
|
|
561
372
|
}
|
|
562
|
-
/**
|
|
563
|
-
* Bind a per-session hook. Used by the spawn-wrap path to install a `pane-died`
|
|
564
|
-
* hook that detaches the attach client the instant the wrapped agent exits (the
|
|
565
|
-
* global `remain-on-exit on` otherwise leaves the client staring at a dead pane).
|
|
566
|
-
* Best-effort — returns false when tmux rejects the hook so callers do not
|
|
567
|
-
* stamp a schema marker and daemon reconciliation can retry later.
|
|
568
|
-
*/
|
|
569
373
|
export async function setSessionHook(name, hook, command, socket, timeoutMs) {
|
|
570
374
|
assertValidSessionName(name);
|
|
571
375
|
const sock = socket ?? getDefaultSocketPath();
|
|
@@ -577,82 +381,17 @@ export async function setSessionHook(name, hook, command, socket, timeoutMs) {
|
|
|
577
381
|
}).catch(() => null);
|
|
578
382
|
return result?.code === 0;
|
|
579
383
|
}
|
|
580
|
-
/**
|
|
581
|
-
* Schema version of the `pane-died` hook installed on managed `agents run`
|
|
582
|
-
* sessions. Bump whenever the hook's SHAPE changes so the daemon reconcile
|
|
583
|
-
* (reconcileSessionHooks) knows to re-stamp live sessions a prior binary left on
|
|
584
|
-
* an older shape.
|
|
585
|
-
* v1 — the original unconditional `detach-client`: ANY pane death (including a
|
|
586
|
-
* user exiting a split they opened) tore down the whole client.
|
|
587
|
-
* v2 — `#{hook_pane}`-guarded: only the AGENT pane dying detaches; a user
|
|
588
|
-
* split's death runs `kill-pane`, closing just that split.
|
|
589
|
-
* v3 — the else-branch pins its target via
|
|
590
|
-
* `run-shell "tmux -S <socket> kill-pane -t #{hook_pane}"`. Untargeted
|
|
591
|
-
* kill-pane resolves "current pane" inside the hook context, which goes
|
|
592
|
-
* nondeterministic on a loaded detached server (CI flake #965: the dead
|
|
593
|
-
* split survived as a husk); run-shell format-expands its command at
|
|
594
|
-
* fire time, so the event pane is always the target.
|
|
595
|
-
* v4 — `run-shell -C "kill-pane -t #{hook_pane}"` executes the targeted command
|
|
596
|
-
* in the tmux server instead of launching a second tmux client against
|
|
597
|
-
* the same socket from inside the hook. That self-client could race the
|
|
598
|
-
* server under load and leave the dead split behind.
|
|
599
|
-
* v5 — `run-shell -b -C "kill-pane -t #{hook_pane}"` runs the targeted kill-pane
|
|
600
|
-
* in the background inside the server command queue. The synchronous
|
|
601
|
-
* variant could stall the hook on a loaded CI runner, letting the dead
|
|
602
|
-
* split survive until the test's wait timeout expired (flake in CI shard
|
|
603
|
-
* 3: pane-guarded pane-died hook / user split exit).
|
|
604
|
-
* v6 — the agent-pane branch is now `session_attached`-aware: with a client
|
|
605
|
-
* attached it `detach-client`s (the interactive path, so runInTmux's
|
|
606
|
-
* attach returns and reads the exit status, EXEC-23b unchanged); with NO
|
|
607
|
-
* client it `kill-session`s outright. A `remain-on-exit` pane with no
|
|
608
|
-
* attach client to reap it otherwise lingers as a dead husk until the
|
|
609
|
-
* daemon's periodic `reapDeadTmuxPanes` sweep — so a run whose terminal
|
|
610
|
-
* was closed, or a `/exit` after the user detached, left an idle-looking
|
|
611
|
-
* dead session on the socket. Killing it the instant the agent exits is
|
|
612
|
-
* the "one close tears down every layer" contract (#5a).
|
|
613
|
-
*/
|
|
614
384
|
export const AGENT_HOOK_SCHEMA = 6;
|
|
615
|
-
/** Per-session tmux user-option that records which AGENT_HOOK_SCHEMA a session's hook is at. */
|
|
616
385
|
const HOOK_SCHEMA_OPTION = '@ag_hook_schema';
|
|
617
|
-
/**
|
|
618
|
-
* Bound on every tmux call made by the hook-repair path (daemon startup,
|
|
619
|
-
* upgrade migration, and single-session repair-before-attach). A wedged tmux
|
|
620
|
-
* server would otherwise hang the caller indefinitely — exactly the class of
|
|
621
|
-
* bug RUSH-2507 fixed for `listTmuxAgentSessions`'s `list-panes` call, applied
|
|
622
|
-
* here to `reconcileSessionHooks`/`repairSessionHookIfStale`'s calls so a
|
|
623
|
-
* wedged shared socket can no longer wedge daemon startup (RUSH-2435 review).
|
|
624
|
-
*/
|
|
625
386
|
const TMUX_HOOK_REPAIR_TIMEOUT_MS = 5_000;
|
|
626
|
-
/**
|
|
627
|
-
* The guarded `pane-died` hook. When the AGENT pane dies, tear the whole session
|
|
628
|
-
* down — but HOW depends on whether a client is attached:
|
|
629
|
-
* - attached (`#{session_attached}`): `detach-client` so the blocking attach in
|
|
630
|
-
* runInTmux returns and `resolveAfterAttach` reads the exit status off the
|
|
631
|
-
* still-`remain-on-exit` dead pane, then kills the session (EXEC-23b, unchanged);
|
|
632
|
-
* - no client: `kill-session` outright. Without this the dead pane sits under
|
|
633
|
-
* `remain-on-exit` as an idle-looking husk until the daemon's periodic
|
|
634
|
-
* `reapDeadTmuxPanes` sweep — the "second exit" / orphaned-idle session bug
|
|
635
|
-
* when a wrapped agent exits with nobody attached (a closed terminal, or a
|
|
636
|
-
* `/exit` after the user detached). `detach-client` on an unattached session
|
|
637
|
-
* is a no-op, so the old hook left the husk; `kill-session` ends it at once.
|
|
638
|
-
* A user split's death still runs the else-branch, closing just that split via
|
|
639
|
-
* `run-shell -b -C` with an explicit `-t #{hook_pane}` target: tmux format-expands
|
|
640
|
-
* the command at fire time and executes it inside the server command queue in the
|
|
641
|
-
* background, so the event pane is always the one killed without launching a second
|
|
642
|
-
* tmux client against the same socket and without stalling the hook on a loaded
|
|
643
|
-
* runner. Single source of truth: both the spawn-wrap (exec.ts) and the daemon
|
|
644
|
-
* reconcile build the hook here, so the two can never drift.
|
|
645
|
-
*/
|
|
646
387
|
export function agentPaneDiedHook(sessionName, agentPane) {
|
|
647
388
|
const agentPaneAction = `if -F '#{session_attached}' 'detach-client -s =${sessionName}' 'kill-session -t =${sessionName}'`;
|
|
648
389
|
return `if -F '#{==:#{hook_pane},${agentPane}}' "${agentPaneAction}" 'run-shell -b -C "kill-pane -t #{hook_pane}"'`;
|
|
649
390
|
}
|
|
650
|
-
/** Stamp a session's hook-schema marker to the current version. */
|
|
651
391
|
export async function markSessionHookSchema(name, socket, timeoutMs) {
|
|
652
392
|
const sock = socket ?? getDefaultSocketPath();
|
|
653
393
|
await runTmux({ socket: sock, args: ['set-option', '-t', name, HOOK_SCHEMA_OPTION, String(AGENT_HOOK_SCHEMA)], throwOnError: false, timeoutMs }).catch(() => { });
|
|
654
394
|
}
|
|
655
|
-
/** Read a session's hook-schema marker; undefined when unset (pre-marker sessions). */
|
|
656
395
|
async function readHookSchema(name, socket, timeoutMs) {
|
|
657
396
|
const res = await runTmux({ socket, args: ['show-options', '-v', '-t', name, HOOK_SCHEMA_OPTION], throwOnError: false, timeoutMs }).catch(() => null);
|
|
658
397
|
if (!res || res.code !== 0)
|
|
@@ -660,12 +399,6 @@ async function readHookSchema(name, socket, timeoutMs) {
|
|
|
660
399
|
const v = res.stdout.trim();
|
|
661
400
|
return v === '' ? undefined : v;
|
|
662
401
|
}
|
|
663
|
-
/**
|
|
664
|
-
* Lowest pane id (`%N`) in a session — the first pane created, i.e. the agent
|
|
665
|
-
* pane, since user splits are always created later and get higher ids. Fallback
|
|
666
|
-
* for sessions whose SessionMeta (which records the agent pane) predates meta
|
|
667
|
-
* persistence. Undefined when the session has no panes (already torn down).
|
|
668
|
-
*/
|
|
669
402
|
async function lowestPaneId(name, socket, timeoutMs) {
|
|
670
403
|
const res = await runTmux({ socket, args: ['list-panes', '-t', name, '-F', '#{pane_id}'], throwOnError: false, timeoutMs }).catch(() => null);
|
|
671
404
|
if (!res || res.code !== 0)
|
|
@@ -675,13 +408,6 @@ async function lowestPaneId(name, socket, timeoutMs) {
|
|
|
675
408
|
return undefined;
|
|
676
409
|
return ids.reduce((lo, id) => (parseInt(id.slice(1), 10) < parseInt(lo.slice(1), 10) ? id : lo));
|
|
677
410
|
}
|
|
678
|
-
/**
|
|
679
|
-
* Decide whether a native resume may attach an existing managed tmux session.
|
|
680
|
-
* Only a positively resolved, living agent pane is reusable. Metadata-less
|
|
681
|
-
* legacy sessions and stale metadata resolve their real first pane through
|
|
682
|
-
* tmux before the decision; a dead or unreadable session is reaped so the
|
|
683
|
-
* caller can create a fresh wrapper for the resumed harness.
|
|
684
|
-
*/
|
|
685
411
|
export async function prepareSessionForResume(name, socket) {
|
|
686
412
|
const sock = socket ?? getDefaultSocketPath();
|
|
687
413
|
if (!(await hasSession(name, sock)))
|
|
@@ -693,22 +419,12 @@ export async function prepareSessionForResume(name, socket) {
|
|
|
693
419
|
: await lowestPaneId(name, sock);
|
|
694
420
|
const state = pane ? await paneExitStatus(pane, sock) : undefined;
|
|
695
421
|
if (pane && state?.found && !state.dead) {
|
|
696
|
-
// Self-heal a legacy/stale hook right before handing the session back to
|
|
697
|
-
// an attach client — the steady-state repair point between the daemon's
|
|
698
|
-
// startup and upgrade one-shots (RUSH-2435).
|
|
699
422
|
await ensureSessionHookRepaired(name, sock);
|
|
700
423
|
return { decision: 'attach', pane };
|
|
701
424
|
}
|
|
702
425
|
await killSession(name, sock);
|
|
703
426
|
return { decision: 'create' };
|
|
704
427
|
}
|
|
705
|
-
/**
|
|
706
|
-
* Repair ONE session's `pane-died` hook if it predates AGENT_HOOK_SCHEMA.
|
|
707
|
-
* Idempotent and NON-DESTRUCTIVE — only `set-hook`s, never kills a pane or
|
|
708
|
-
* detaches a client. Shared by {@link reconcileSessionHooks} (full sweep) and
|
|
709
|
-
* {@link ensureSessionHookRepaired} (single session, called before attach) so
|
|
710
|
-
* the two can never drift on what counts as "repaired" (RUSH-2435).
|
|
711
|
-
*/
|
|
712
428
|
async function repairSessionHookIfStale(name, sock, meta, timeoutMs = TMUX_HOOK_REPAIR_TIMEOUT_MS) {
|
|
713
429
|
if (await readHookSchema(name, sock, timeoutMs) === String(AGENT_HOOK_SCHEMA))
|
|
714
430
|
return false;
|
|
@@ -721,26 +437,6 @@ async function repairSessionHookIfStale(name, sock, meta, timeoutMs = TMUX_HOOK_
|
|
|
721
437
|
await markSessionHookSchema(name, sock, timeoutMs);
|
|
722
438
|
return true;
|
|
723
439
|
}
|
|
724
|
-
/**
|
|
725
|
-
* Retrofit the current guarded `pane-died` hook onto every managed `agents run`
|
|
726
|
-
* session whose hook predates AGENT_HOOK_SCHEMA. Idempotent and NON-DESTRUCTIVE:
|
|
727
|
-
* it only `set-hook`s (never kills a pane or detaches a client), so a long-lived
|
|
728
|
-
* shared server started by a pre-fix binary — whose still-running sessions carry
|
|
729
|
-
* the old unconditional hook that kicked the user out of the whole view when they
|
|
730
|
-
* exited a split — self-heals in place, without waiting for those agents to exit
|
|
731
|
-
* or for the server to be recycled.
|
|
732
|
-
*
|
|
733
|
-
* NOT a daemon poll — the 5-minute `tmux-reconcile` routine that used to call this
|
|
734
|
-
* was deleted (RUSH-2495). It survives as the version-skew ONE-SHOT: the daemon
|
|
735
|
-
* calls it once at startup (`runDaemon` in `../daemon.js`) and once from the
|
|
736
|
-
* upgrade-time migration (`runMigration` in `../migrate.js`), so a session a
|
|
737
|
-
* pre-fix binary left with a stale hook still self-heals without a live poller.
|
|
738
|
-
* `ensureSessionHookRepaired` covers the steady-state gap between those two
|
|
739
|
-
* points by repairing a single session right before it's attached to. The
|
|
740
|
-
* per-session `@ag_hook_schema` marker makes both paths a cheap no-op once a
|
|
741
|
-
* session is current. Only run-wrapped sessions (`ag-` prefix) are touched — an
|
|
742
|
-
* externally-created session on the socket keeps whatever hook it set.
|
|
743
|
-
*/
|
|
744
440
|
export async function reconcileSessionHooks(socket) {
|
|
745
441
|
const sock = socket ?? getDefaultSocketPath();
|
|
746
442
|
if (!fs.existsSync(sock))
|
|
@@ -755,20 +451,12 @@ export async function reconcileSessionHooks(socket) {
|
|
|
755
451
|
let reconciled = 0;
|
|
756
452
|
for (const s of sessions) {
|
|
757
453
|
if (!s.name.startsWith('ag-'))
|
|
758
|
-
continue;
|
|
454
|
+
continue;
|
|
759
455
|
if (await repairSessionHookIfStale(s.name, sock, s.meta))
|
|
760
456
|
reconciled++;
|
|
761
457
|
}
|
|
762
458
|
return { scanned: sessions.length, reconciled };
|
|
763
459
|
}
|
|
764
|
-
/**
|
|
765
|
-
* Repair a single managed session's `pane-died` hook right before it is
|
|
766
|
-
* attached to, so a legacy session left by a pre-fix binary self-heals on the
|
|
767
|
-
* next touch instead of waiting for the next daemon-startup/upgrade one-shot
|
|
768
|
-
* (RUSH-2435). Only `ag-`-prefixed (run-wrapped) sessions are touched; a no-op
|
|
769
|
-
* for anything else. Best-effort — never throws, so a repair failure can never
|
|
770
|
-
* block the attach it is protecting.
|
|
771
|
-
*/
|
|
772
460
|
export async function ensureSessionHookRepaired(name, socket) {
|
|
773
461
|
if (!name.startsWith('ag-'))
|
|
774
462
|
return;
|
|
@@ -779,22 +467,14 @@ export async function ensureSessionHookRepaired(name, socket) {
|
|
|
779
467
|
await repairSessionHookIfStale(name, sock, readSessionMeta(name) ?? undefined);
|
|
780
468
|
}
|
|
781
469
|
catch {
|
|
782
|
-
// best-effort — an attach must never fail because a repair attempt did
|
|
783
470
|
}
|
|
784
471
|
}
|
|
785
|
-
/**
|
|
786
|
-
* List live sessions on the socket. Reconciles meta JSONs against tmux's view:
|
|
787
|
-
* - tmux session with no meta → returned without `meta` (external session)
|
|
788
|
-
* - meta file with no tmux session → meta deleted (stale)
|
|
789
|
-
*/
|
|
790
472
|
export async function listSessions(opts = {}) {
|
|
791
473
|
const socket = opts.socket ?? getDefaultSocketPath();
|
|
792
474
|
if (!fs.existsSync(socket)) {
|
|
793
|
-
// No server has ever run — clean orphan metas defensively.
|
|
794
475
|
pruneAllMetas();
|
|
795
476
|
return [];
|
|
796
477
|
}
|
|
797
|
-
// Pipe-separated format so we don't need to parse tmux's variable-width default output.
|
|
798
478
|
const fmt = '#{session_name}|#{session_created}|#{session_windows}|#{session_attached}';
|
|
799
479
|
const res = await runTmux({
|
|
800
480
|
socket,
|
|
@@ -802,7 +482,6 @@ export async function listSessions(opts = {}) {
|
|
|
802
482
|
throwOnError: false,
|
|
803
483
|
timeoutMs: opts.timeoutMs,
|
|
804
484
|
});
|
|
805
|
-
// tmux returns nonzero with "no server running" or "no sessions" — both mean empty.
|
|
806
485
|
if (res.code !== 0) {
|
|
807
486
|
if (/no server running|no sessions|error connecting/i.test(res.stderr)) {
|
|
808
487
|
pruneAllMetas();
|
|
@@ -827,26 +506,15 @@ export async function listSessions(opts = {}) {
|
|
|
827
506
|
meta: readSessionMeta(name) ?? undefined,
|
|
828
507
|
});
|
|
829
508
|
}
|
|
830
|
-
// Drop metas with no matching live session.
|
|
831
509
|
pruneOrphanMetas(liveNames);
|
|
832
510
|
return out;
|
|
833
511
|
}
|
|
834
|
-
/**
|
|
835
|
-
* Split the active pane of a session. Returns the new pane's tmux pane id
|
|
836
|
-
* (e.g. `%3`) so callers can target it later via `send`/`capture`.
|
|
837
|
-
*/
|
|
838
512
|
export async function splitPane(opts) {
|
|
839
513
|
assertValidSessionName(opts.name);
|
|
840
514
|
const socket = opts.socket ?? getDefaultSocketPath();
|
|
841
515
|
if (opts.cwd && !fs.existsSync(opts.cwd)) {
|
|
842
516
|
throw new TmuxSessionError(`cwd does not exist: ${opts.cwd}`);
|
|
843
517
|
}
|
|
844
|
-
// tmux split-window directions: -h splits the pane left/right (sibling on the
|
|
845
|
-
// right); -v splits top/bottom. swarmify treats H as "below" and V as "side"
|
|
846
|
-
// — keep tmux semantics (h=left/right, v=top/bottom) and document it.
|
|
847
|
-
// Pane-target ops use the bare name (no =) — the '=' exact-match modifier is
|
|
848
|
-
// a session-only feature; pane targets reject it with "can't find pane".
|
|
849
|
-
// Slug validation already guarantees the name is unambiguous.
|
|
850
518
|
const args = ['split-window', `-${opts.direction}`, '-t', opts.name, '-P', '-F', '#{pane_id}'];
|
|
851
519
|
if (opts.cwd)
|
|
852
520
|
args.push('-c', opts.cwd);
|
|
@@ -855,11 +523,9 @@ export async function splitPane(opts) {
|
|
|
855
523
|
const res = await runTmux({ socket, args });
|
|
856
524
|
return res.stdout.trim();
|
|
857
525
|
}
|
|
858
|
-
/** Send keystrokes to a session's active pane (or a specific pane via :pane). */
|
|
859
526
|
export async function sendKeys(opts) {
|
|
860
527
|
assertValidSessionName(opts.name);
|
|
861
528
|
const socket = opts.socket ?? getDefaultSocketPath();
|
|
862
|
-
// Bare name (no =) for pane targets — see note in splitPane.
|
|
863
529
|
const target = opts.pane ? `${opts.name}.${opts.pane}` : opts.name;
|
|
864
530
|
const args = ['send-keys', '-t', target];
|
|
865
531
|
if (opts.raw)
|
|
@@ -869,23 +535,19 @@ export async function sendKeys(opts) {
|
|
|
869
535
|
args.push('Enter');
|
|
870
536
|
await runTmux({ socket, args });
|
|
871
537
|
}
|
|
872
|
-
/** Capture pane contents as a string. The cleaned form is what humans see. */
|
|
873
538
|
export async function capturePane(opts) {
|
|
874
539
|
assertValidSessionName(opts.name);
|
|
875
540
|
const socket = opts.socket ?? getDefaultSocketPath();
|
|
876
|
-
// Bare name (no =) for pane targets — see note in splitPane.
|
|
877
541
|
const target = opts.pane ? `${opts.name}.${opts.pane}` : opts.name;
|
|
878
542
|
const args = ['capture-pane', '-p', '-t', target];
|
|
879
543
|
if (opts.ansi)
|
|
880
544
|
args.push('-e');
|
|
881
545
|
if (opts.lines && opts.lines > 0) {
|
|
882
|
-
// -S -N means "start N lines back from current view"; we use -S -<lines> -E -.
|
|
883
546
|
args.push('-S', `-${opts.lines}`);
|
|
884
547
|
}
|
|
885
548
|
const res = await runTmux({ socket, args });
|
|
886
549
|
return res.stdout;
|
|
887
550
|
}
|
|
888
|
-
/** Read a session's provenance JSON, if present. */
|
|
889
551
|
export function readSessionMeta(name) {
|
|
890
552
|
try {
|
|
891
553
|
const raw = fs.readFileSync(getSessionMetaPath(name), 'utf8');
|
|
@@ -903,7 +565,7 @@ function removeSessionMeta(name) {
|
|
|
903
565
|
try {
|
|
904
566
|
fs.unlinkSync(getSessionMetaPath(name));
|
|
905
567
|
}
|
|
906
|
-
catch {
|
|
568
|
+
catch { }
|
|
907
569
|
}
|
|
908
570
|
function pruneOrphanMetas(liveNames) {
|
|
909
571
|
const dir = ensureTmuxDir();
|
|
@@ -915,7 +577,7 @@ function pruneOrphanMetas(liveNames) {
|
|
|
915
577
|
try {
|
|
916
578
|
fs.unlinkSync(`${dir}/${f}`);
|
|
917
579
|
}
|
|
918
|
-
catch {
|
|
580
|
+
catch { }
|
|
919
581
|
}
|
|
920
582
|
}
|
|
921
583
|
}
|
|
@@ -926,7 +588,7 @@ function pruneAllMetas() {
|
|
|
926
588
|
try {
|
|
927
589
|
fs.unlinkSync(`${dir}/${f}`);
|
|
928
590
|
}
|
|
929
|
-
catch {
|
|
591
|
+
catch { }
|
|
930
592
|
}
|
|
931
593
|
}
|
|
932
594
|
}
|