@phnx-labs/agents-cli 1.22.120 → 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 +227 -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 +17 -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/commands/doctor.js
CHANGED
|
@@ -42,13 +42,6 @@ import { readRepoBehindMarkers } from '../lib/auto-pull.js';
|
|
|
42
42
|
import { detectAgentsBinaryShadows } from '../lib/binary-shadow.js';
|
|
43
43
|
import * as fs from 'fs';
|
|
44
44
|
const AGENT_NAMES = Object.fromEntries(ALL_AGENT_IDS.map((id) => [id, AGENTS[id].name]));
|
|
45
|
-
// ─── overview mode (no target) ────────────────────────────────────────────────
|
|
46
|
-
// doctor is the umbrella diagnostic and must never crash on one subsystem
|
|
47
|
-
// (§Diagnostic command taxonomy). The standalone secrets CLI being absent from
|
|
48
|
-
// PATH is a routine, expected state on a box that hasn't installed it — not a
|
|
49
|
-
// reason to abort the whole report — so these two checks degrade to "nothing to
|
|
50
|
-
// report" on a transport error and let every other finding still print. A data
|
|
51
|
-
// error the standalone actually answered with must still surface.
|
|
52
45
|
function scanUserRcFiles() {
|
|
53
46
|
try {
|
|
54
47
|
return scanUserRcFilesSync();
|
|
@@ -99,9 +92,6 @@ export function wrapLine(prefix, text, width = terminalWidth()) {
|
|
|
99
92
|
lines.push(line);
|
|
100
93
|
return lines;
|
|
101
94
|
}
|
|
102
|
-
/** Reshape into the pure finding-builder's input: install state
|
|
103
|
-
* per declared CLI, plus the manifests the loader rejected (a bad manifest
|
|
104
|
-
* declares a CLI that can never install, so it is a finding, not silence). */
|
|
105
95
|
function toHostCliInput(status) {
|
|
106
96
|
return {
|
|
107
97
|
statuses: status.statuses.map((c) => ({ name: c.manifest.name, installed: c.installed })),
|
|
@@ -142,7 +132,6 @@ function printWrappedLine(prefix, text) {
|
|
|
142
132
|
* message says so.
|
|
143
133
|
*/
|
|
144
134
|
const REMOTE_FORWARDED_KINDS = ['rc-secret-export', 'env-secret-export', 'auth-bundle-wrong-backend', 'ssh-key-enrollment'];
|
|
145
|
-
/** Canonical, locally-authored text for a forwarded kind. Never the remote's. */
|
|
146
135
|
const REMOTE_SECRET_MESSAGE = {
|
|
147
136
|
'rc-secret-export': 'a credential-shaped export was found in this box\'s shell rc files'
|
|
148
137
|
+ ' — run `agents doctor` there for the file and line',
|
|
@@ -167,7 +156,7 @@ export function asRemoteSecretFindings(raw, device) {
|
|
|
167
156
|
if (!REMOTE_FORWARDED_KINDS.includes(kind))
|
|
168
157
|
continue;
|
|
169
158
|
if (seen.has(kind))
|
|
170
|
-
continue;
|
|
159
|
+
continue;
|
|
171
160
|
seen.add(kind);
|
|
172
161
|
const k = kind;
|
|
173
162
|
const base = {
|
|
@@ -183,8 +172,6 @@ export function asRemoteSecretFindings(raw, device) {
|
|
|
183
172
|
async function resolveFleetTargets(opts) {
|
|
184
173
|
const singleName = opts.device;
|
|
185
174
|
if (singleName) {
|
|
186
|
-
// --device as a single-device filter: resolve through the device
|
|
187
|
-
// registry first, then the general host registry, then ad-hoc user@host.
|
|
188
175
|
const registry = await loadDevices();
|
|
189
176
|
const deviceProfile = registry[singleName];
|
|
190
177
|
if (deviceProfile) {
|
|
@@ -205,8 +192,6 @@ async function resolveFleetTargets(opts) {
|
|
|
205
192
|
const registry = await loadDevices();
|
|
206
193
|
const localName = machineId();
|
|
207
194
|
return Object.values(registry)
|
|
208
|
-
// Normalize names so zion/ZION/zion.local all match machineId() and we never
|
|
209
|
-
// self-SSH the local box during fleet probes (RUSH-2114).
|
|
210
195
|
.filter((d) => normalizeHost(d.name) !== localName)
|
|
211
196
|
.map((d) => ({
|
|
212
197
|
name: d.name,
|
|
@@ -218,11 +203,7 @@ async function resolveFleetTargets(opts) {
|
|
|
218
203
|
async function probeFleetTarget(target) {
|
|
219
204
|
const forwarded = ['teams', 'doctor', '--json'];
|
|
220
205
|
const isWin = /^win/i.test((target.os ?? '').trim());
|
|
221
|
-
const remoteCmd = buildRemoteAgentsInvocation(forwarded, undefined, isWin ? 'windows' : undefined,
|
|
222
|
-
// POSIX login shells often lack the shims dir; Windows PowerShell usually
|
|
223
|
-
// has it via the install profile, and our single-quote escaping would
|
|
224
|
-
// prevent $HOME expansion there, so skip the bootstrap on Windows.
|
|
225
|
-
isWin ? undefined : { PATH: '$HOME/.agents/.cache/shims:$HOME/.local/bin:$PATH' });
|
|
206
|
+
const remoteCmd = buildRemoteAgentsInvocation(forwarded, undefined, isWin ? 'windows' : undefined, isWin ? undefined : { PATH: '$HOME/.agents/.cache/shims:$HOME/.local/bin:$PATH' });
|
|
226
207
|
const res = await sshExecAsync(target.sshTarget, remoteCmd, { timeoutMs: 30000, multiplex: true, extraSshArgs: target.extraSshArgs });
|
|
227
208
|
if (res.code !== 0) {
|
|
228
209
|
return {
|
|
@@ -248,27 +229,6 @@ async function probeFleetTarget(target) {
|
|
|
248
229
|
};
|
|
249
230
|
}
|
|
250
231
|
}
|
|
251
|
-
/**
|
|
252
|
-
* Fetch a device's harness inventory by running its top-level `agents doctor
|
|
253
|
-
* --json` (which carries the `fleet` field, RUSH-2027). Separate from
|
|
254
|
-
* {@link probeFleetTarget} — that forwards `teams doctor --json` for per-agent
|
|
255
|
-
* readiness, a different payload. Returns the parsed {@link FleetInventory} or
|
|
256
|
-
* null (unreachable, non-zero exit, unparseable, or an older CLI with no
|
|
257
|
-
* `fleet` field); a null is skipped by the comparator, never a false gap.
|
|
258
|
-
*/
|
|
259
|
-
/**
|
|
260
|
-
* How long one remote `doctor --json` probe may take.
|
|
261
|
-
*
|
|
262
|
-
* 180s, matching `ChildProcess.doctorTimeout`, which was set to 180 for this
|
|
263
|
-
* same command for this same reason. The previous 30s sat BELOW the command's
|
|
264
|
-
* real cost — 56s measured on `yosemite-m0`, 136s on an idle box — so every slow
|
|
265
|
-
* device silently contributed nothing at all: no inventory, no sign-in, no
|
|
266
|
-
* divergence, no secret findings. A ceiling under the true cost does not make a
|
|
267
|
-
* probe cheap, it makes it always fail.
|
|
268
|
-
*
|
|
269
|
-
* This does not multiply by device count: `fanOutDevices` is `Promise.all`, so
|
|
270
|
-
* whole-fleet wall time is bounded near the slowest box, not 180s x N.
|
|
271
|
-
*/
|
|
272
232
|
export const FLEET_INVENTORY_TIMEOUT_MS = 180_000;
|
|
273
233
|
async function probeFleetInventory(target) {
|
|
274
234
|
const isWin = /^win/i.test((target.os ?? '').trim());
|
|
@@ -291,28 +251,7 @@ async function probeFleetInventory(target) {
|
|
|
291
251
|
return null;
|
|
292
252
|
}
|
|
293
253
|
}
|
|
294
|
-
/**
|
|
295
|
-
* Narrow a remote `doctor --json` `.fleet` payload to a usable inventory, or null.
|
|
296
|
-
*
|
|
297
|
-
* The remote runs ITS OWN agents-cli, whose version we do not control, so the
|
|
298
|
-
* payload is untrusted input rather than a typed value — a cast alone let a
|
|
299
|
-
* partial object (`{"fleet":{}}` from a skewed or truncated remote) reach
|
|
300
|
-
* `compareFleetInventories`, which indexes `inv.resources[kind]` and
|
|
301
|
-
* `Object.keys(inv.agentVersions)` unconditionally and throws. Returning null
|
|
302
|
-
* routes that device into the existing "older agents-cli / no inventory" path,
|
|
303
|
-
* which is honest and already rendered, instead of aborting the whole fan-out.
|
|
304
|
-
*
|
|
305
|
-
* This validates EVERY field of {@link FleetInventory} that anything downstream
|
|
306
|
-
* reads — `resources`, `agentVersions`, `repos` and each optional `signIn` row.
|
|
307
|
-
* It was tightened four times during review, each round finding the next
|
|
308
|
-
* unvalidated layer, so treat partial validation here as a bug: a field added to
|
|
309
|
-
* the inventory must be checked here in the same change.
|
|
310
|
-
*/
|
|
311
254
|
export function asFleetInventory(value) {
|
|
312
|
-
// `typeof [] === 'object'`, so a shallow object check is not enough: an array
|
|
313
|
-
// passes it, every `inv.resources[kind] ?? []` then yields empty, and the
|
|
314
|
-
// comparison reports EVERY baseline resource as missing on that device — a
|
|
315
|
-
// screenful of false findings, worse than the crash this guard replaced.
|
|
316
255
|
const isMap = (x) => !!x && typeof x === 'object' && !Array.isArray(x);
|
|
317
256
|
const isStringArray = (x) => Array.isArray(x) && x.every((e) => typeof e === 'string');
|
|
318
257
|
if (!isMap(value))
|
|
@@ -322,10 +261,6 @@ export function asFleetInventory(value) {
|
|
|
322
261
|
return null;
|
|
323
262
|
if (!isMap(v.agentVersions) || !Object.values(v.agentVersions).every(isStringArray))
|
|
324
263
|
return null;
|
|
325
|
-
// `repos.agents` / `repos.system` must each be a RepoState or null. Checking
|
|
326
|
-
// only that `repos` is a record let `{agents: [], system: []}` through: `[]` is
|
|
327
|
-
// truthy, so `describeRepoDrift` read `.head`/`.branch`/`.dirty` off an array,
|
|
328
|
-
// got undefined for each, and could emit a bogus repo-drift row.
|
|
329
264
|
const isRepoState = (x) => x === null
|
|
330
265
|
|| (isMap(x)
|
|
331
266
|
&& (x.branch === null || typeof x.branch === 'string')
|
|
@@ -333,11 +268,6 @@ export function asFleetInventory(value) {
|
|
|
333
268
|
&& typeof x.dirty === 'boolean');
|
|
334
269
|
if (!isMap(v.repos) || !Object.values(v.repos).every(isRepoState))
|
|
335
270
|
return null;
|
|
336
|
-
// `signIn` is optional (older remotes omit it) but every FIELD must be
|
|
337
|
-
// well-formed if sent — not just `version`. `provable` and `signedIn` are read
|
|
338
|
-
// as booleans to decide a CRITICAL vs a hedged warning, so a remote sending
|
|
339
|
-
// `provable: "yes"` would print a logged-out critical for a signed-in version,
|
|
340
|
-
// and a non-string `account` would render straight into the accounts line.
|
|
341
271
|
if (v.signIn !== undefined) {
|
|
342
272
|
if (!isMap(v.signIn))
|
|
343
273
|
return null;
|
|
@@ -350,10 +280,6 @@ export function asFleetInventory(value) {
|
|
|
350
280
|
if (!rowsOk)
|
|
351
281
|
return null;
|
|
352
282
|
}
|
|
353
|
-
// Hook-runtime state is optional for wire compatibility with older remotes,
|
|
354
|
-
// but a present field is a closed enum map keyed exactly by the installed
|
|
355
|
-
// agent/version pairs. The fleet never accepts a remote path or diagnostic
|
|
356
|
-
// string, so an untrusted box cannot inject shell paths/text into this doctor.
|
|
357
283
|
if (v.hookRuntime !== undefined) {
|
|
358
284
|
if (!isMap(v.hookRuntime))
|
|
359
285
|
return null;
|
|
@@ -384,8 +310,6 @@ async function runDevicesDoctor(opts) {
|
|
|
384
310
|
const targets = await resolveFleetTargets(opts);
|
|
385
311
|
const localName = machineId();
|
|
386
312
|
const results = [];
|
|
387
|
-
// Local machine first, directly. Its inventory is collected in-process — no
|
|
388
|
-
// SSH round-trip to this box.
|
|
389
313
|
if (!singleName) {
|
|
390
314
|
results.push({
|
|
391
315
|
name: localName,
|
|
@@ -394,9 +318,6 @@ async function runDevicesDoctor(opts) {
|
|
|
394
318
|
inventory: await collectLocalFleetInventory(opts.cwd ?? process.cwd()),
|
|
395
319
|
});
|
|
396
320
|
}
|
|
397
|
-
// Remote targets in parallel: agent readiness (teams doctor) and the harness
|
|
398
|
-
// inventory (top-level doctor --json) in one fan-out per concern. Both run
|
|
399
|
-
// through the shared fleet helper so an offline box degrades to a skipped row.
|
|
400
321
|
const [remoteResults, inventoryResults] = await Promise.all([
|
|
401
322
|
fanOutDevices(targets, probeFleetTarget),
|
|
402
323
|
fanOutDevices(targets, probeFleetInventory),
|
|
@@ -419,10 +340,6 @@ async function runDevicesDoctor(opts) {
|
|
|
419
340
|
secretFindings,
|
|
420
341
|
};
|
|
421
342
|
}));
|
|
422
|
-
// Cross-device divergence: compare every device's inventory against the local
|
|
423
|
-
// baseline and flag resources / agent versions / repo state present on one box
|
|
424
|
-
// but missing on another (RUSH-2027). A single-device filter has no baseline
|
|
425
|
-
// to compare against, so the section is only meaningful for the full fan-out.
|
|
426
343
|
const divergence = singleName
|
|
427
344
|
? null
|
|
428
345
|
: compareFleetInventories(results.map((r) => ({ name: r.name, inventory: r.inventory ?? null })), localName);
|
|
@@ -434,20 +351,11 @@ async function runDevicesDoctor(opts) {
|
|
|
434
351
|
console.log(chalk.gray('No registered devices. Run `agents devices` to register some.'));
|
|
435
352
|
return;
|
|
436
353
|
}
|
|
437
|
-
// ── Hybrid fleet view (RUSH-2069): CRITICAL section across all boxes, then a
|
|
438
|
-
// per-computer block for each. Findings come from:
|
|
439
|
-
// - LOCAL: per-version resource reports + sync/orphan/repo-behind + sign-in.
|
|
440
|
-
// - REMOTE: the box's self-reported inventory (per-version sign-in) folded to
|
|
441
|
-
// logged-out findings, plus cross-device divergence (version-skew, repo
|
|
442
|
-
// drift, missing resources). A remote on an older CLI with no `signIn` in
|
|
443
|
-
// its inventory emits the "older agents-cli — can't report per-version
|
|
444
|
-
// sign-in → upgrade" warning so the readout stays honest.
|
|
445
354
|
const cwd = opts.cwd ?? process.cwd();
|
|
446
355
|
const findings = [];
|
|
447
356
|
const accounts = {};
|
|
448
357
|
for (const r of results) {
|
|
449
358
|
if (r.name === localName) {
|
|
450
|
-
// Local findings from the real reports (not just the inventory summary).
|
|
451
359
|
const localReports = [];
|
|
452
360
|
for (const agent of ALL_AGENT_IDS) {
|
|
453
361
|
for (const version of listInstalledVersions(agent)) {
|
|
@@ -475,22 +383,14 @@ async function runDevicesDoctor(opts) {
|
|
|
475
383
|
isolatedVersions: localReports
|
|
476
384
|
.filter((rep) => isVersionIsolated(rep.agent, rep.version))
|
|
477
385
|
.map((rep) => `${rep.agent}@${rep.version}`),
|
|
478
|
-
// Can the owner-delivery lane escalate a block from THIS box? Local only —
|
|
479
|
-
// remote boxes self-report it in their own `agents doctor --json`.
|
|
480
386
|
ownerSink: await probeOwnerSink(readMeta()),
|
|
481
387
|
binaryShadows: detectAgentsBinaryShadows(),
|
|
482
|
-
// A `__daemon-run` no unit main PID or daemon.pid owns (W4, PHNX-3736) —
|
|
483
|
-
// the /tmp/pin-e2e leak class the registry-scoped duplicate check cannot
|
|
484
|
-
// see. Local only: a remote box self-reports in its own doctor.
|
|
485
388
|
leakedDaemons: findLeakedDaemons(),
|
|
486
389
|
}));
|
|
487
390
|
accounts[localName] = r.inventory?.signIn ?? {};
|
|
488
391
|
continue;
|
|
489
392
|
}
|
|
490
|
-
// Remote device.
|
|
491
393
|
if (!r.online) {
|
|
492
|
-
// An offline / unreachable box: surface it as a warning so it isn't
|
|
493
|
-
// silently dropped from the per-computer section.
|
|
494
394
|
findings.push({
|
|
495
395
|
severity: 'warning', kind: 'stale-cli', device: r.name,
|
|
496
396
|
message: r.error ? `unreachable — ${r.error}` : 'unreachable',
|
|
@@ -498,21 +398,14 @@ async function runDevicesDoctor(opts) {
|
|
|
498
398
|
});
|
|
499
399
|
continue;
|
|
500
400
|
}
|
|
501
|
-
// Secret hygiene the aggregator cannot see for itself — the remote's shell
|
|
502
|
-
// rc files and its process environment. Without this the fleet readout
|
|
503
|
-
// reports a leaking box as clean (RUSH-1968).
|
|
504
401
|
if (r.secretFindings?.length)
|
|
505
402
|
findings.push(...r.secretFindings);
|
|
506
|
-
// Unlike sign-in, the remote's hook-runtime payload is deliberately just a
|
|
507
|
-
// closed enum state. Rebuild the finding locally so no remote file path or
|
|
508
|
-
// detector text reaches this host's output.
|
|
509
403
|
findings.push(...hookRuntimeToFindings(r.name, r.inventory?.hookRuntime));
|
|
510
404
|
if (r.inventory?.signIn) {
|
|
511
405
|
findings.push(...signInToFindings(r.name, r.inventory.signIn));
|
|
512
406
|
accounts[r.name] = r.inventory.signIn;
|
|
513
407
|
}
|
|
514
408
|
else {
|
|
515
|
-
// Reachable, but an older CLI that can't report per-version sign-in.
|
|
516
409
|
findings.push({
|
|
517
410
|
severity: 'warning', kind: 'stale-cli', device: r.name,
|
|
518
411
|
message: "older agents-cli — can't report per-version sign-in",
|
|
@@ -521,16 +414,9 @@ async function runDevicesDoctor(opts) {
|
|
|
521
414
|
accounts[r.name] = {};
|
|
522
415
|
}
|
|
523
416
|
}
|
|
524
|
-
// Cross-device divergence → version-skew / repo-drift / missing-resource
|
|
525
|
-
// warnings, attributed to the lagging box.
|
|
526
417
|
if (divergence) {
|
|
527
418
|
findings.push(...fleetDivergenceToFindings(divergence.divergences, divergence.baseline));
|
|
528
419
|
}
|
|
529
|
-
// `--json` emits HERE, not before the findings are built: a consumer that reads
|
|
530
|
-
// the JSON must see the same finding set the text renders — same membership,
|
|
531
|
-
// same severities, so the CRITICAL `(N)` and each device's `✗ N critical`
|
|
532
|
-
// reconcile. Emitting early left `--devices --json` with no `findings` at all
|
|
533
|
-
// while the bare `--json` had one.
|
|
534
420
|
if (opts.json) {
|
|
535
421
|
console.log(JSON.stringify({ devices: results, fleet: divergence, findings }, null, 2));
|
|
536
422
|
return;
|
|
@@ -547,14 +433,12 @@ function parseTargetArg(arg) {
|
|
|
547
433
|
const agent = resolveAgentName(agentPart);
|
|
548
434
|
if (!agent)
|
|
549
435
|
return { error: formatAgentError(agentPart) };
|
|
550
|
-
// No qualifier → diagnose every installed version of the agent.
|
|
551
436
|
if (!qualifier) {
|
|
552
437
|
const versions = listInstalledVersions(agent);
|
|
553
438
|
if (versions.length === 0)
|
|
554
439
|
return { error: `${AGENTS[agent].name} has no installed versions. Run \`agents add ${agent}@<version>\` first.` };
|
|
555
440
|
return { agent, versions, versionExplicit: false };
|
|
556
441
|
}
|
|
557
|
-
// All explicit qualifiers (@all, @latest, @oldest, @default, @pinned, @x.y.z) → shared resolver
|
|
558
442
|
try {
|
|
559
443
|
const targets = resolveAgentTargets(`${agent}@${qualifier}`, { availableAgents: [agent] });
|
|
560
444
|
const versions = targets.map((t) => t.version).filter((v) => v !== null);
|
|
@@ -594,7 +478,6 @@ function sourceLabel(diff, layers) {
|
|
|
594
478
|
if (!diff.source)
|
|
595
479
|
return '';
|
|
596
480
|
if (diff.source === 'extra') {
|
|
597
|
-
// Find which extra repo this came from.
|
|
598
481
|
const sourcePath = diff.sourcePath;
|
|
599
482
|
if (sourcePath) {
|
|
600
483
|
for (const e of layers.extras) {
|
|
@@ -637,8 +520,6 @@ function renderKindSection(kind, rows, layers, options) {
|
|
|
637
520
|
console.log(` ${chalk.bold(kind.padEnd(11))} ${chalk.gray(`${total} item${total === 1 ? '' : 's'}`)} ${summary}`);
|
|
638
521
|
if (total === 0)
|
|
639
522
|
return;
|
|
640
|
-
// Hide ok rows by default for big lists; show them only with --diff so the
|
|
641
|
-
// operator can verify presence; otherwise keep output focused on problems.
|
|
642
523
|
const visible = options.showDiff ? rows : rows.filter((r) => r.status !== 'ok');
|
|
643
524
|
if (visible.length === 0) {
|
|
644
525
|
console.log(` ${chalk.gray('all ok')}`);
|
|
@@ -676,29 +557,18 @@ function safeRead(p) {
|
|
|
676
557
|
}
|
|
677
558
|
}
|
|
678
559
|
function readExpectedForDiff(kind, row) {
|
|
679
|
-
// Skills are directories; per-file diffs would need recursive walking.
|
|
680
|
-
// Keep the v1 behaviour minimal: the row already says DIFF, the user can
|
|
681
|
-
// open the source path to inspect.
|
|
682
560
|
if (kind === 'skills')
|
|
683
561
|
return null;
|
|
684
562
|
if (!row.sourcePath)
|
|
685
563
|
return null;
|
|
686
564
|
return safeRead(row.sourcePath);
|
|
687
565
|
}
|
|
688
|
-
/** Categories `agents sync` reconciles (vs. `agents repo pull` for a behind
|
|
689
|
-
* source, or `agents prune cleanup` for an orphan). Drives the heal footer. */
|
|
690
566
|
const AUTO_FIXABLE_CATEGORIES = new Set([
|
|
691
567
|
'hook-runtime-broken', 'unwired-hook', 'settings-missing', 'settings-unparseable', 'missing', 'divergent', 'stale', 'never-synced',
|
|
692
568
|
]);
|
|
693
569
|
export function verdictIsAutoFixable(v) {
|
|
694
570
|
return v.issues.some((i) => AUTO_FIXABLE_CATEGORIES.has(i.category));
|
|
695
571
|
}
|
|
696
|
-
/**
|
|
697
|
-
* Missing-resource severity for one `DoctorKind`, read from `FINDING_SEVERITY`
|
|
698
|
-
* (the fleet-mode rubric) so target mode agrees with it kind by kind instead of
|
|
699
|
-
* re-hardcoding its own. Hooks and plugins map to their dedicated critical
|
|
700
|
-
* finding kinds; every other kind maps to the generic 'missing-resource' warning.
|
|
701
|
-
*/
|
|
702
572
|
function missingResourceSeverity(kind) {
|
|
703
573
|
if (kind === 'hooks')
|
|
704
574
|
return FINDING_SEVERITY['missing-hook'];
|
|
@@ -706,21 +576,11 @@ function missingResourceSeverity(kind) {
|
|
|
706
576
|
return FINDING_SEVERITY['missing-plugin'];
|
|
707
577
|
return FINDING_SEVERITY['missing-resource'];
|
|
708
578
|
}
|
|
709
|
-
/**
|
|
710
|
-
* Fold a version report's divergences into a triaged verdict — one severity-tagged
|
|
711
|
-
* finding per unwired hook, missing/divergent/extra resource, and behind-origin
|
|
712
|
-
* source layer, each carrying its subject, plain-English impact, and exact fix. An
|
|
713
|
-
* UNWIRED hook or a stale source is as unhealthy as a divergent file, not a
|
|
714
|
-
* footnote. Pure so the health rollup is unit-testable without a version home.
|
|
715
|
-
*/
|
|
716
579
|
export function computeVerdict(report) {
|
|
717
580
|
const issues = [];
|
|
718
581
|
const idLabel = `${report.agent}@${report.version}`;
|
|
719
|
-
// doctor diagnoses; `agents sync` fixes. Every auto-fixable finding points at
|
|
720
|
-
// the one fixer — a command sync can actually deliver (asserted in the tests).
|
|
721
582
|
const fixCmd = `agents sync ${idLabel} --yes`;
|
|
722
583
|
const syncCmd = fixCmd;
|
|
723
|
-
// ── critical: settings.json / unwired hooks (silent breakage) ──
|
|
724
584
|
const w = report.hookWiring;
|
|
725
585
|
for (const issue of w?.runtimeBroken ?? []) {
|
|
726
586
|
issues.push({
|
|
@@ -757,8 +617,6 @@ export function computeVerdict(report) {
|
|
|
757
617
|
});
|
|
758
618
|
}
|
|
759
619
|
}
|
|
760
|
-
// ── missing resources (declared in sources, absent from home) — severity
|
|
761
|
-
// follows FINDING_SEVERITY: hooks/plugins are critical, everything else warns ──
|
|
762
620
|
for (const kind of DOCTOR_ALL_KINDS) {
|
|
763
621
|
for (const r of report.kinds[kind]) {
|
|
764
622
|
if (r.status !== 'missing')
|
|
@@ -772,7 +630,6 @@ export function computeVerdict(report) {
|
|
|
772
630
|
});
|
|
773
631
|
}
|
|
774
632
|
}
|
|
775
|
-
// ── warning: source layer behind origin (home reconciled against stale truth) ──
|
|
776
633
|
for (const b of report.sourceBehind ?? []) {
|
|
777
634
|
if (b.behind <= 0)
|
|
778
635
|
continue;
|
|
@@ -783,7 +640,6 @@ export function computeVerdict(report) {
|
|
|
783
640
|
text: `source ${b.label} ${b.behind} commit${b.behind === 1 ? '' : 's'} behind ${b.branch}`, color: 'yellow',
|
|
784
641
|
});
|
|
785
642
|
}
|
|
786
|
-
// ── warning: divergent resources (drifted from source) ──
|
|
787
643
|
for (const kind of DOCTOR_ALL_KINDS) {
|
|
788
644
|
for (const r of report.kinds[kind]) {
|
|
789
645
|
if (r.status !== 'diff')
|
|
@@ -796,7 +652,6 @@ export function computeVerdict(report) {
|
|
|
796
652
|
});
|
|
797
653
|
}
|
|
798
654
|
}
|
|
799
|
-
// ── info: extra / orphan resources (present in home, no source) ──
|
|
800
655
|
for (const kind of DOCTOR_ALL_KINDS) {
|
|
801
656
|
for (const r of report.kinds[kind]) {
|
|
802
657
|
if (r.status !== 'extra')
|
|
@@ -811,14 +666,11 @@ export function computeVerdict(report) {
|
|
|
811
666
|
}
|
|
812
667
|
return { healthy: issues.length === 0, issues, reconciled: report.summary.ok };
|
|
813
668
|
}
|
|
814
|
-
// ─── triaged health block (shared by target + overview) ────────────────────────
|
|
815
669
|
const SEVERITY_COLOR = {
|
|
816
670
|
critical: chalk.red,
|
|
817
671
|
warning: chalk.yellow,
|
|
818
672
|
info: chalk.magenta,
|
|
819
673
|
};
|
|
820
|
-
// Restrained terminal glyphs — the ✓ ✗ ⚠ set plus a subtle info dot, colored via
|
|
821
|
-
// chalk to match the man-page voice. No colorful emoji.
|
|
822
674
|
const SEVERITY_GLYPH = {
|
|
823
675
|
critical: '✗',
|
|
824
676
|
warning: '⚠',
|
|
@@ -831,18 +683,7 @@ function severityCounts(issues) {
|
|
|
831
683
|
info: issues.filter((i) => i.severity === 'info').length,
|
|
832
684
|
};
|
|
833
685
|
}
|
|
834
|
-
/** The info tier (orphans; one identical `prune cleanup` fix, already enumerated
|
|
835
|
-
* in the detail section) is capped with a rollup so the block stays scannable
|
|
836
|
-
* when a version home carries dozens of orphans. Critical + warning are
|
|
837
|
-
* actionable, each with a distinct subject/fix, so they are never capped. */
|
|
838
686
|
const INFO_CAP = 5;
|
|
839
|
-
/**
|
|
840
|
-
* Build the lines of a triaged health block: a single green ✓ line when healthy,
|
|
841
|
-
* otherwise a severity-counted ✗ header followed by one row per finding (icon ·
|
|
842
|
-
* severity · subject — impact, then the exact fix under it) and an optional heal
|
|
843
|
-
* footer. Pure — returns the lines so the rendered output is unit-testable. Shared
|
|
844
|
-
* by target mode and the bare overview so both read the same way.
|
|
845
|
-
*/
|
|
846
687
|
export function healthBlockLines(verdict, opts) {
|
|
847
688
|
if (verdict.healthy) {
|
|
848
689
|
return [` ${chalk.green('✓')} ${chalk.green('healthy')} ${chalk.gray('— ' + opts.healthySummary)}`];
|
|
@@ -859,7 +700,7 @@ export function healthBlockLines(verdict, opts) {
|
|
|
859
700
|
const total = verdict.issues.length;
|
|
860
701
|
lines.push(` ${chalk.red('✗')} ${chalk.red('unhealthy')} ${chalk.gray(`— ${total} issue${total === 1 ? '' : 's'} (${bits.join(' · ')})`)}`);
|
|
861
702
|
lines.push('');
|
|
862
|
-
const cont = ' '.repeat(14);
|
|
703
|
+
const cont = ' '.repeat(14);
|
|
863
704
|
const issueLines = (i) => {
|
|
864
705
|
const glyph = SEVERITY_COLOR[i.severity](SEVERITY_GLYPH[i.severity]);
|
|
865
706
|
const word = SEVERITY_COLOR[i.severity](i.severity.padEnd(8));
|
|
@@ -888,18 +729,9 @@ function renderHealthBlock(verdict, opts) {
|
|
|
888
729
|
for (const line of healthBlockLines(verdict, opts))
|
|
889
730
|
console.log(line);
|
|
890
731
|
}
|
|
891
|
-
/**
|
|
892
|
-
* Aggregate the bare `agents doctor` overview into the same triaged verdict target
|
|
893
|
-
* mode uses — folding per-version wiring/sync drift, behind-origin source layers,
|
|
894
|
-
* and orphan resources into severity-tagged findings. Agent-agnostic: every
|
|
895
|
-
* installed version is classified the same way. Pure, so it is unit-testable.
|
|
896
|
-
*/
|
|
897
732
|
export function computeOverviewHealth(syncRows, orphanRows, repoBehindMarkers, duplicateHooks = []) {
|
|
898
733
|
const issues = [];
|
|
899
734
|
const pretty = (agent, version) => `${AGENT_NAMES[agent] || agent}@${version}`;
|
|
900
|
-
// critical/warning: same hook resource materialized in several version homes.
|
|
901
|
-
// Different content is more severe because a stale copy can disagree with
|
|
902
|
-
// the active gate; byte-identical copies are noise and duplicate runtime cost.
|
|
903
735
|
for (const finding of duplicateHooks) {
|
|
904
736
|
const versions = finding.copies.map((copy) => copy.version).join(', ');
|
|
905
737
|
const active = finding.authoritative.version;
|
|
@@ -914,7 +746,6 @@ export function computeOverviewHealth(syncRows, orphanRows, repoBehindMarkers, d
|
|
|
914
746
|
color: drift ? 'red' : 'yellow',
|
|
915
747
|
});
|
|
916
748
|
}
|
|
917
|
-
// critical: generated hook runtime / unwired hooks / broken settings.json per version
|
|
918
749
|
for (const row of syncRows) {
|
|
919
750
|
const brokenRuntime = row.brokenHookRuntime ?? 0;
|
|
920
751
|
if (brokenRuntime > 0) {
|
|
@@ -937,7 +768,6 @@ export function computeOverviewHealth(syncRows, orphanRows, repoBehindMarkers, d
|
|
|
937
768
|
text: `${label} ${n} unwired`, color: 'red',
|
|
938
769
|
});
|
|
939
770
|
}
|
|
940
|
-
// warning: source layers behind origin
|
|
941
771
|
for (const m of repoBehindMarkers) {
|
|
942
772
|
if (m.behind <= 0)
|
|
943
773
|
continue;
|
|
@@ -949,7 +779,6 @@ export function computeOverviewHealth(syncRows, orphanRows, repoBehindMarkers, d
|
|
|
949
779
|
text: `${label} ${m.behind} behind`, color: 'yellow',
|
|
950
780
|
});
|
|
951
781
|
}
|
|
952
|
-
// warning: stale / never-synced versions
|
|
953
782
|
for (const row of syncRows) {
|
|
954
783
|
const label = pretty(row.agent, row.version);
|
|
955
784
|
if (row.status === 'stale') {
|
|
@@ -969,7 +798,6 @@ export function computeOverviewHealth(syncRows, orphanRows, repoBehindMarkers, d
|
|
|
969
798
|
});
|
|
970
799
|
}
|
|
971
800
|
}
|
|
972
|
-
// info: orphan resources per version
|
|
973
801
|
for (const row of orphanRows) {
|
|
974
802
|
const parts = [];
|
|
975
803
|
if (row.commands)
|
|
@@ -989,10 +817,6 @@ export function computeOverviewHealth(syncRows, orphanRows, repoBehindMarkers, d
|
|
|
989
817
|
const reconciled = syncRows.filter((r) => r.status === 'fresh' && (r.unwiredHooks ?? 0) === 0 && (r.brokenHookRuntime ?? 0) === 0).length;
|
|
990
818
|
return { healthy: issues.length === 0, issues, reconciled };
|
|
991
819
|
}
|
|
992
|
-
/**
|
|
993
|
-
* Render the UNWIRED hook rows (and settings.json problems) inside the hooks
|
|
994
|
-
* section, in the same row style as the reconcile rows above them.
|
|
995
|
-
*/
|
|
996
820
|
function renderHookWiringRows(w) {
|
|
997
821
|
if (!w.supported)
|
|
998
822
|
return;
|
|
@@ -1028,8 +852,6 @@ function renderTargetText(report, options) {
|
|
|
1028
852
|
: null,
|
|
1029
853
|
].filter(Boolean).join(' ');
|
|
1030
854
|
printWrappedLine(' layers: ', layerStr);
|
|
1031
|
-
// Staleness manifest verdict — single-line summary from the staleness
|
|
1032
|
-
// library, sitting alongside the detailed per-resource diff below.
|
|
1033
855
|
const manifest = loadManifest(report.agent, report.version);
|
|
1034
856
|
if (!manifest) {
|
|
1035
857
|
console.log(chalk.gray(` manifest: ${chalk.gray('cold')} (never synced)`));
|
|
@@ -1046,10 +868,6 @@ function renderTargetText(report, options) {
|
|
|
1046
868
|
console.log();
|
|
1047
869
|
for (const kind of DOCTOR_ALL_KINDS) {
|
|
1048
870
|
const rows = report.kinds[kind];
|
|
1049
|
-
// Skip kinds that weren't requested (kind filter narrowed the report).
|
|
1050
|
-
// We detect this by checking whether the kind has any rows AND was in
|
|
1051
|
-
// scope; absent kinds with empty arrays still render so the operator
|
|
1052
|
-
// sees what was checked. options.requestedKinds drives this.
|
|
1053
871
|
if (options.requestedKinds && !options.requestedKinds.has(kind))
|
|
1054
872
|
continue;
|
|
1055
873
|
if (kind === 'hooks' && report.hookInventory) {
|
|
@@ -1058,17 +876,11 @@ function renderTargetText(report, options) {
|
|
|
1058
876
|
console.log(chalk.gray(` inventory: capable ${report.hookInventory.capable ? 'yes' : 'no'} · on-disk ${report.hookInventory.onDisk.length} · wired ${wired}${unmanaged}`));
|
|
1059
877
|
}
|
|
1060
878
|
renderKindSection(kind, rows, report.layers, options);
|
|
1061
|
-
// A hook file can reconcile "ok" above yet be absent from settings.json — a
|
|
1062
|
-
// present-but-dead hook. Surface that right under the hooks section.
|
|
1063
879
|
if (kind === 'hooks' && report.hookWiring)
|
|
1064
880
|
renderHookWiringRows(report.hookWiring);
|
|
1065
881
|
}
|
|
1066
882
|
console.log();
|
|
1067
883
|
const verdict = computeVerdict(report);
|
|
1068
|
-
// A source layer behind origin is healed by `agents repo pull`, not by sync —
|
|
1069
|
-
// the per-issue fix already names the right command, so the heal footer only
|
|
1070
|
-
// shows when something is genuinely sync-fixable (never in the source-behind or
|
|
1071
|
-
// orphan-only case, where it would mislead).
|
|
1072
884
|
const hooksWired = report.hookWiring?.supported ? ' · hooks wired' : '';
|
|
1073
885
|
renderHealthBlock(verdict, {
|
|
1074
886
|
healthySummary: `${verdict.reconciled} resource${verdict.reconciled === 1 ? '' : 's'} reconciled${hooksWired} · sources current`,
|
|
@@ -1102,8 +914,6 @@ function runCheckGate(opts, cwd) {
|
|
|
1102
914
|
process.exit(drift.hasDrift ? 1 : 0);
|
|
1103
915
|
}
|
|
1104
916
|
if (drift.syncRows.length === 0) {
|
|
1105
|
-
// Nothing installed is a clean state, not a failure — CI on a fresh
|
|
1106
|
-
// checkout with no versions should pass, not error.
|
|
1107
917
|
console.log(chalk.gray('check: no installed versions — nothing to verify'));
|
|
1108
918
|
process.exit(0);
|
|
1109
919
|
}
|
|
@@ -1114,10 +924,6 @@ function runCheckGate(opts, cwd) {
|
|
|
1114
924
|
console.log(`${chalk.gray('check:')} ${chalk.green('ok')} — ${drift.syncRows.length} version(s) in sync${orphanNote}`);
|
|
1115
925
|
process.exit(0);
|
|
1116
926
|
}
|
|
1117
|
-
// Drift: one-line verdict always, per-version detail unless --quiet. The
|
|
1118
|
-
// `check:` prefix and total count make every verdict line grep/parse-alike
|
|
1119
|
-
// whether it's clean or drifted, instead of the bare `drift <parts>` shape
|
|
1120
|
-
// that gave CI logs no anchor to search on.
|
|
1121
927
|
const parts = [];
|
|
1122
928
|
if (drift.staleCount > 0)
|
|
1123
929
|
parts.push(`${drift.staleCount} stale`);
|
|
@@ -1131,10 +937,6 @@ function runCheckGate(opts, cwd) {
|
|
|
1131
937
|
parts.push(`${drift.sourceBehind.length} source layer(s) behind origin`);
|
|
1132
938
|
console.error(`${chalk.gray('check:')} ${chalk.red('drift')} — ${parts.join(', ')} across ${drift.syncRows.length} version(s)`);
|
|
1133
939
|
if (!opts.quiet) {
|
|
1134
|
-
// Fixed-width, left-aligned so rows form a real column; the badge text is
|
|
1135
|
-
// the actual status name ('never-synced'), not the unrelated 'cold' label
|
|
1136
|
-
// that used to hide it. Width is 'never-synced'.length + a 2-space gap so
|
|
1137
|
-
// the longest badge still separates cleanly from the label that follows.
|
|
1138
940
|
const STATUS_BADGE_WIDTH = 'never-synced'.length + 2;
|
|
1139
941
|
for (const row of drift.syncRows) {
|
|
1140
942
|
const unwired = (row.unwiredHooks ?? 0) > 0;
|
|
@@ -1245,7 +1047,6 @@ async function runDevicesCheck(opts, cwd) {
|
|
|
1245
1047
|
}
|
|
1246
1048
|
process.exit(1);
|
|
1247
1049
|
}
|
|
1248
|
-
// ─── command registration ────────────────────────────────────────────────────
|
|
1249
1050
|
export function registerDoctorCommand(program) {
|
|
1250
1051
|
const doctorCmd = addHostOption(program.command('doctor [target]'))
|
|
1251
1052
|
.description('Diagnose CLI availability, sync status, and resource divergence (optionally for a specific agent[@version]).')
|
|
@@ -1301,9 +1102,6 @@ export function registerDoctorCommand(program) {
|
|
|
1301
1102
|
});
|
|
1302
1103
|
doctorCmd.action(async (target, opts) => {
|
|
1303
1104
|
const cwd = opts.cwd ? opts.cwd : process.cwd();
|
|
1304
|
-
// CI drift gate. Kept BEFORE the --devices branch so `doctor --check
|
|
1305
|
-
// --devices` routes to the drift gate fan-out (runDevicesCheck), while a
|
|
1306
|
-
// bare `doctor --devices` still routes to the readiness matrix below.
|
|
1307
1105
|
if (opts.check) {
|
|
1308
1106
|
if (target) {
|
|
1309
1107
|
console.error(chalk.red('Cannot combine --check with a target argument.'));
|
|
@@ -1325,8 +1123,6 @@ export function registerDoctorCommand(program) {
|
|
|
1325
1123
|
await runDevicesDoctor(opts);
|
|
1326
1124
|
return;
|
|
1327
1125
|
}
|
|
1328
|
-
// Launcher adoption escape hatch. `--adopt <agent>` forces the take-over
|
|
1329
|
-
// even for a non-default agent; `--release <agent>` reverses it.
|
|
1330
1126
|
if (opts.adopt || opts.release) {
|
|
1331
1127
|
if (opts.adopt && opts.release) {
|
|
1332
1128
|
console.error(chalk.red('--adopt and --release are mutually exclusive; pass only one.'));
|
|
@@ -1349,9 +1145,6 @@ export function registerDoctorCommand(program) {
|
|
|
1349
1145
|
}
|
|
1350
1146
|
return;
|
|
1351
1147
|
}
|
|
1352
|
-
// adoptShadowingLauncher resolves the launcher itself (PATH shadow, then
|
|
1353
|
-
// the durable ~/.local/bin symlink), so it forces the take-over even when
|
|
1354
|
-
// this shell's PATH already has the shim first.
|
|
1355
1148
|
let result;
|
|
1356
1149
|
try {
|
|
1357
1150
|
result = adoptShadowingLauncher(agent);
|
|
@@ -1381,17 +1174,6 @@ export function registerDoctorCommand(program) {
|
|
|
1381
1174
|
return;
|
|
1382
1175
|
}
|
|
1383
1176
|
if (!target) {
|
|
1384
|
-
// Singleflight + short-TTL cache for the bare `doctor --json` overview.
|
|
1385
|
-
// This overview probes every host CLI, every agent's sign-in, and every
|
|
1386
|
-
// agent×version diff — seconds on an idle box, minutes on a loaded one.
|
|
1387
|
-
// The menu-bar helper polls it with only a per-*process* in-flight guard,
|
|
1388
|
-
// so a helper relaunch (or any second poller) each launched its own live
|
|
1389
|
-
// compute, and a helper killed mid-run orphaned a `doctor --json` that
|
|
1390
|
-
// kept spinning — stacking to dozens of concurrent runs pinning the CPU
|
|
1391
|
-
// (RUSH-2153). Now: a fresh snapshot serves instantly, and when a compute
|
|
1392
|
-
// IS needed exactly one runs while every other caller serves its result.
|
|
1393
|
-
// A crashed computer never wedges the gate — the lock is stolen once its
|
|
1394
|
-
// directory mtime goes stale (see enterDoctorOverviewGate).
|
|
1395
1177
|
let releaseOverviewGate;
|
|
1396
1178
|
if (opts.json) {
|
|
1397
1179
|
const gate = await enterDoctorOverviewGate({ forceRefresh: !!opts.refresh });
|
|
@@ -1404,23 +1186,12 @@ export function registerDoctorCommand(program) {
|
|
|
1404
1186
|
const clis = checkAllClis();
|
|
1405
1187
|
const syncRows = checkSyncStatus(cwd);
|
|
1406
1188
|
const orphanRows = countOrphans();
|
|
1407
|
-
// Parallel host-CLI probe (RUSH-2136): the serial spawnSync version ran a
|
|
1408
|
-
// dozen+ blocking 10s-timeout checks one after another, which measured
|
|
1409
|
-
// ~136s on an idle box and stalled the menu-bar helper's poll.
|
|
1410
1189
|
const hostClis = await listCliStatusAsync(cwd);
|
|
1411
1190
|
const repoBehindMarkers = readRepoBehindMarkers();
|
|
1412
|
-
// The local inventory now carries per-version sign-in (RUSH-2069), so it
|
|
1413
|
-
// is the single source for both the accounts line and the logged-out
|
|
1414
|
-
// criticals. Collected once (async: it parses each version's account).
|
|
1415
1191
|
const inventory = await collectLocalFleetInventory(cwd);
|
|
1416
1192
|
const localName = machineId();
|
|
1417
1193
|
const duplicateHooks = inspectDuplicateVersionHooks(cwd);
|
|
1418
|
-
// A routine belongs to one device. A multi-device pin used to fire it
|
|
1419
|
-
// once per listed device — duplicate agent runs, duplicate spend — so
|
|
1420
|
-
// surface any that are still on disk with the exact fix.
|
|
1421
1194
|
const ambiguousPins = findAmbiguousDevicePins(cwd);
|
|
1422
|
-
// Legacy account-global sign-in map, kept for `--json` back-compat
|
|
1423
|
-
// (ssh.ts RemoteDoctorJson / menubar read `signIn`). File-based, no home.
|
|
1424
1195
|
const signIn = {};
|
|
1425
1196
|
await Promise.all(Object.entries(clis)
|
|
1426
1197
|
.filter(([, e]) => e.installed)
|
|
@@ -1429,23 +1200,15 @@ export function registerDoctorCommand(program) {
|
|
|
1429
1200
|
signIn[name] = await getAccountInfo(name);
|
|
1430
1201
|
}
|
|
1431
1202
|
catch {
|
|
1432
|
-
/* advisory only */
|
|
1433
1203
|
}
|
|
1434
1204
|
}));
|
|
1435
|
-
// Per-version resource reports drive the missing-hook / missing-plugin /
|
|
1436
|
-
// unwired / content-drift findings. Non-project layers only (the global
|
|
1437
|
-
// home is never reconciled against per-cwd project resources).
|
|
1438
1205
|
const reports = [];
|
|
1439
1206
|
for (const agent of ALL_AGENT_IDS) {
|
|
1440
1207
|
for (const version of listInstalledVersions(agent)) {
|
|
1441
1208
|
reports.push(diffVersionResources(agent, version, { cwd, excludeProject: true }));
|
|
1442
1209
|
}
|
|
1443
1210
|
}
|
|
1444
|
-
// A MANAGED agent (installed versions) whose binary won't resolve is a
|
|
1445
|
-
// real critical — an unmanaged-and-absent agent is not.
|
|
1446
1211
|
const cliMissing = ALL_AGENT_IDS.filter((a) => listInstalledVersions(a).length > 0 && clis[a] && !clis[a].installed);
|
|
1447
|
-
// An isolated copy is skipped by the agent-wide `agents sync` sweep, so
|
|
1448
|
-
// its findings must never fold into a collapsed cross-version row.
|
|
1449
1212
|
const isolatedVersions = reports
|
|
1450
1213
|
.filter((r) => isVersionIsolated(r.agent, r.version))
|
|
1451
1214
|
.map((r) => `${r.agent}@${r.version}`);
|
|
@@ -1463,43 +1226,24 @@ export function registerDoctorCommand(program) {
|
|
|
1463
1226
|
rcSecrets: scanUserRcFiles(),
|
|
1464
1227
|
masterPassphraseInEnv: masterPassphraseInEnv(),
|
|
1465
1228
|
authBundleWrongBackend: !inspectReservedAuthBundle().ok,
|
|
1466
|
-
// getEffectiveExecutionPolicy spawns powershell — a doomed process on
|
|
1467
|
-
// POSIX, where the advisory never applies. Probe only on Windows.
|
|
1468
1229
|
execPolicy: process.platform === 'win32'
|
|
1469
1230
|
? { platform: process.platform, policy: getEffectiveExecutionPolicy() }
|
|
1470
1231
|
: undefined,
|
|
1471
1232
|
isolatedVersions,
|
|
1472
|
-
// Can the owner-delivery lane (feed/notify) escalate a block from this
|
|
1473
|
-
// box? A factory that cannot escalate is not healthy (RUSH-2262).
|
|
1474
1233
|
ownerSink: await probeOwnerSink(readMeta()),
|
|
1475
|
-
// A `__daemon-run` no unit main PID or daemon.pid owns (W4, PHNX-3736).
|
|
1476
1234
|
leakedDaemons: findLeakedDaemons(),
|
|
1477
1235
|
});
|
|
1478
1236
|
if (opts.json) {
|
|
1479
1237
|
const overviewPayload = {
|
|
1480
1238
|
clis,
|
|
1481
1239
|
signIn,
|
|
1482
|
-
// Cached auth-health rollup for THIS host — lets `agents fleet status`
|
|
1483
|
-
// show a live-verified Auth column from the same fan-out it already
|
|
1484
|
-
// runs, without a separate fleet-wide `fleet ping`.
|
|
1485
1240
|
auth: summarizeHostAuth(readAuthHealthCache(), machineId()),
|
|
1486
1241
|
sync: syncRows,
|
|
1487
1242
|
orphans: orphanRows,
|
|
1488
|
-
// Triaged overview health — severity/category/subject/impact/fix per
|
|
1489
|
-
// finding, aggregated across versions. Additive; existing consumers
|
|
1490
|
-
// reading `sync`/`orphans`/`repos` are unaffected.
|
|
1491
1243
|
health: computeOverviewHealth(syncRows, orphanRows, repoBehindMarkers, duplicateHooks),
|
|
1492
1244
|
duplicateHooks,
|
|
1493
|
-
// Routines whose `devices` names more than one machine — each used to
|
|
1494
|
-
// fire once per device. `owner` is the one that fires now.
|
|
1495
1245
|
ambiguousDevicePins: ambiguousPins,
|
|
1496
|
-
// Prioritized RUSH-2069 findings (critical/warning, per-version, with
|
|
1497
|
-
// remediation). Additive alongside the legacy fields above.
|
|
1498
1246
|
findings,
|
|
1499
|
-
// This host's harness inventory — installed resources per kind,
|
|
1500
|
-
// installed version ids per agent, `.agents`/`.system` repo state, and
|
|
1501
|
-
// per-version sign-in — so `agents doctor --devices` can compare
|
|
1502
|
-
// presence and sign-in across the fleet (RUSH-2027/2069). Read-only.
|
|
1503
1247
|
fleet: inventory,
|
|
1504
1248
|
hostClis: {
|
|
1505
1249
|
statuses: hostClis.statuses.map((s) => ({
|
|
@@ -1510,8 +1254,6 @@ export function registerDoctorCommand(program) {
|
|
|
1510
1254
|
})),
|
|
1511
1255
|
errors: hostClis.errors,
|
|
1512
1256
|
},
|
|
1513
|
-
// Repos behind upstream — emitted here so menubar and other consumers
|
|
1514
|
-
// can surface the notices without reading stderr from normal commands.
|
|
1515
1257
|
repos: repoBehindMarkers.map((m) => ({
|
|
1516
1258
|
alias: m.alias,
|
|
1517
1259
|
dir: m.dir,
|
|
@@ -1520,14 +1262,11 @@ export function registerDoctorCommand(program) {
|
|
|
1520
1262
|
fetchedAt: m.fetchedAt,
|
|
1521
1263
|
})),
|
|
1522
1264
|
};
|
|
1523
|
-
// Persist for the next poller and release the singleflight lock BEFORE
|
|
1524
|
-
// printing, so a concurrent caller picks up the fresh snapshot at once.
|
|
1525
1265
|
writeDoctorOverviewCache(overviewPayload);
|
|
1526
1266
|
releaseOverviewGate?.();
|
|
1527
1267
|
console.log(JSON.stringify(overviewPayload, null, 2));
|
|
1528
1268
|
return;
|
|
1529
1269
|
}
|
|
1530
|
-
// Single-machine hybrid: CRITICAL section + one `▸ <machine>` block.
|
|
1531
1270
|
const accounts = {
|
|
1532
1271
|
[localName]: inventory.signIn ?? {},
|
|
1533
1272
|
};
|
|
@@ -1535,24 +1274,15 @@ export function registerDoctorCommand(program) {
|
|
|
1535
1274
|
for (const line of renderFindings(findings, accounts, { fleet: false, baseline: localName, header })) {
|
|
1536
1275
|
console.log(line);
|
|
1537
1276
|
}
|
|
1538
|
-
// Point at the interactive reconcile when anything is out of sync — each
|
|
1539
|
-
// finding carries its own fix, but `agents sync status` is the one place that
|
|
1540
|
-
// reviews and applies them together (opt-in, never auto-fires here).
|
|
1541
1277
|
if (syncRows.some((r) => r.status !== 'fresh' || (r.unwiredHooks ?? 0) > 0) || repoBehindMarkers.some((m) => m.behind > 0)) {
|
|
1542
1278
|
console.log(chalk.gray('\nRun `agents sync status` to review and sync what has drifted.'));
|
|
1543
1279
|
}
|
|
1544
|
-
// A routine runs on exactly one device. Each of these named several and
|
|
1545
|
-
// used to fire once per device — duplicate agent runs on every schedule.
|
|
1546
1280
|
if (ambiguousPins.length > 0) {
|
|
1547
1281
|
console.log();
|
|
1548
1282
|
console.log(chalk.yellow(`${ambiguousPins.length} routine(s) pin more than one device — a routine runs on exactly one:`));
|
|
1549
1283
|
for (const pin of ambiguousPins) {
|
|
1550
1284
|
console.log(` ${chalk.cyan(pin.name)} ${chalk.gray(`[${pin.devices.join(', ')}]`)} ` +
|
|
1551
1285
|
`${chalk.gray('→ fires only on')} ${pin.owner}`);
|
|
1552
|
-
// Deliberately not prescribing `--set ${pin.owner}`: ownership is the
|
|
1553
|
-
// lowest-sorted name, which can be a registry alias that matches no
|
|
1554
|
-
// live machine (`worker` here), and cementing that keeps the routine
|
|
1555
|
-
// dead. Name the candidates and let the operator pick the real box.
|
|
1556
1286
|
console.log(chalk.gray(` fix: agents routines devices ${pin.name} --set <${pin.devices.join('|')}>`));
|
|
1557
1287
|
}
|
|
1558
1288
|
}
|
|
@@ -1569,16 +1299,10 @@ export function registerDoctorCommand(program) {
|
|
|
1569
1299
|
process.exit(1);
|
|
1570
1300
|
}
|
|
1571
1301
|
const reports = parsed.versions.map((v) => diffVersionResources(parsed.agent, v, { cwd, kinds }));
|
|
1572
|
-
// Source-layer staleness is global (same across versions) and needs a git
|
|
1573
|
-
// probe kept out of the pure diff — compute once, attach to every report so
|
|
1574
|
-
// both --json and the text verdict carry it.
|
|
1575
1302
|
const sourceBehind = computeSourceBehind();
|
|
1576
1303
|
for (const r of reports)
|
|
1577
1304
|
r.sourceBehind = sourceBehind;
|
|
1578
1305
|
if (opts.json) {
|
|
1579
|
-
// Carry the triaged verdict (severity/category/subject/impact/fix per
|
|
1580
|
-
// issue) alongside the report — additive, so existing consumers reading
|
|
1581
|
-
// `summary`/`kinds`/`hookWiring`/`sourceBehind` are unaffected.
|
|
1582
1306
|
const withVerdict = reports.map((r) => ({ ...r, verdict: computeVerdict(r) }));
|
|
1583
1307
|
console.log(JSON.stringify(withVerdict.length === 1 ? withVerdict[0] : withVerdict, null, 2));
|
|
1584
1308
|
return;
|