@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
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scheduled routines management.
|
|
3
|
-
*
|
|
4
|
-
* Registers the `agents routines` command tree for creating, editing,
|
|
5
|
-
* running, pausing, and removing cron-scheduled agent invocations.
|
|
6
|
-
* Also exposes scheduler lifecycle controls (start/stop/status/logs).
|
|
7
|
-
*/
|
|
8
1
|
import chalk from 'chalk';
|
|
9
2
|
import ora from 'ora';
|
|
10
3
|
import * as fs from 'fs';
|
|
@@ -40,11 +33,6 @@ import { addHostOption } from '../lib/hosts/option.js';
|
|
|
40
33
|
import { devicesWithRoutineEnabled } from '../lib/routine-activation.js';
|
|
41
34
|
import { spawnSync } from 'node:child_process';
|
|
42
35
|
import { getCliLaunch } from '../lib/cli-entry.js';
|
|
43
|
-
/**
|
|
44
|
-
* Human-friendly wall-clock a run took (e.g. " · 3 min", " · 45 sec"), or ""
|
|
45
|
-
* when it hasn't completed or timestamps are unparseable. Leading separator lets
|
|
46
|
-
* callers drop it straight into a status line.
|
|
47
|
-
*/
|
|
48
36
|
export function formatRunDuration(startedAt, completedAt) {
|
|
49
37
|
if (!completedAt)
|
|
50
38
|
return '';
|
|
@@ -61,10 +49,6 @@ export function formatRunDuration(startedAt, completedAt) {
|
|
|
61
49
|
const rem = min % 60;
|
|
62
50
|
return rem ? ` · ${hr} hr ${rem} min` : ` · ${hr} hr`;
|
|
63
51
|
}
|
|
64
|
-
/**
|
|
65
|
-
* Human label for what fires a job: its cron schedule, or its event trigger
|
|
66
|
-
* for schedule-less (trigger-only) routines.
|
|
67
|
-
*/
|
|
68
52
|
function scheduleLabel(job) {
|
|
69
53
|
let label = fireConditionLabel(job);
|
|
70
54
|
if (isOneShotRoutine(job))
|
|
@@ -124,8 +108,6 @@ function groupRoutineJobsByDevice(jobs, registry, self = machineId()) {
|
|
|
124
108
|
existing.jobs.push(job);
|
|
125
109
|
return;
|
|
126
110
|
}
|
|
127
|
-
// `device:` is the only group that describes a machine other than this one,
|
|
128
|
-
// so it is the only one whose rows this device cannot report a status for.
|
|
129
111
|
groups.set(key, { key, title, jobs: [job], local: !key.startsWith('device:') });
|
|
130
112
|
};
|
|
131
113
|
for (const job of jobs) {
|
|
@@ -175,11 +157,6 @@ function groupRoutineJobsByDevice(jobs, registry, self = machineId()) {
|
|
|
175
157
|
};
|
|
176
158
|
return [...groups.values()].sort((a, b) => order(a) - order(b) || a.title.localeCompare(b.title));
|
|
177
159
|
}
|
|
178
|
-
/**
|
|
179
|
-
* Group routines by their `projects` metadata field.
|
|
180
|
-
* Named projects come first (alphabetically), followed by All projects, Cross-project,
|
|
181
|
-
* Operations (no project), and Unknown projects (stale names).
|
|
182
|
-
*/
|
|
183
160
|
export function groupRoutineJobsByProject(jobs, knownProjectNames) {
|
|
184
161
|
const groups = new Map();
|
|
185
162
|
const add = (key, title, job) => {
|
|
@@ -197,15 +174,9 @@ export function groupRoutineJobsByProject(jobs, knownProjectNames) {
|
|
|
197
174
|
orderByKey.set(key, projectGroupOrder(group));
|
|
198
175
|
add(key, projectGroupTitle(group), job);
|
|
199
176
|
}
|
|
200
|
-
// Order by the discriminated group rank (named first, then All projects,
|
|
201
|
-
// Cross-project, Operations, Unknown projects), then alphabetically by title
|
|
202
|
-
// within a rank. Buckets are keyed on the discriminant, never the label, so a
|
|
203
|
-
// project named "Operations" sorts among the named projects — not with the
|
|
204
|
-
// no-project special that shares its title.
|
|
205
177
|
const order = (group) => orderByKey.get(group.key) ?? 0;
|
|
206
178
|
return [...groups.values()].sort((a, b) => order(a) - order(b) || a.title.localeCompare(b.title));
|
|
207
179
|
}
|
|
208
|
-
/** commander repeatable-option collector for --project. */
|
|
209
180
|
function collectProject(value, previous) {
|
|
210
181
|
return previous.concat([value]);
|
|
211
182
|
}
|
|
@@ -241,14 +212,9 @@ function renderRoutineRows({ jobs, scheduler, overdueSet, link, now, local = tru
|
|
|
241
212
|
const statusColor = lastStatus === 'completed' ? chalk.green
|
|
242
213
|
: lastStatus === 'failed' ? chalk.red
|
|
243
214
|
: lastStatus === 'timeout' ? chalk.yellow
|
|
244
|
-
// A miss is an infrastructure problem, not a task failure — the routine
|
|
245
|
-
// never ran. Distinct from red so the two prompt different reactions.
|
|
246
215
|
: lastStatus === 'missed' ? chalk.magenta
|
|
247
216
|
: chalk.gray;
|
|
248
217
|
const overdueTag = overdueSet.has(job.name) ? chalk.yellow(' (overdue)') : '';
|
|
249
|
-
// Append the concrete reason a routine did not complete (auth_failed,
|
|
250
|
-
// blocked, missed) right in the Last Status cell, so the list answers "why"
|
|
251
|
-
// without a drill-in. Only for non-completed local runs; peer rows stay blank.
|
|
252
218
|
const reason = latestRun ? runFailureReason(latestRun) : null;
|
|
253
219
|
const reasonTag = reason ? chalk.gray(` — ${reason}`) : '';
|
|
254
220
|
const agentLabelPadded = job.command
|
|
@@ -295,14 +261,6 @@ function parseRoutineTrigger(options) {
|
|
|
295
261
|
}
|
|
296
262
|
throw new Error('--on source must be github or linear');
|
|
297
263
|
}
|
|
298
|
-
/**
|
|
299
|
-
* Start or reload the background scheduler so newly-added jobs fire on time.
|
|
300
|
-
* `quiet` suppresses human status lines for JSON callers.
|
|
301
|
-
*
|
|
302
|
-
* When this device has `scheduler.enabled=false` the auto-start is skipped with
|
|
303
|
-
* the stated reason (the add itself already succeeded — the job is config and
|
|
304
|
-
* stays valid fleet-wide); the refusal message names the setting and the fix.
|
|
305
|
-
*/
|
|
306
264
|
function ensureSchedulerRunning(opts = {}) {
|
|
307
265
|
const log = opts.stderr ? console.error : console.log;
|
|
308
266
|
try {
|
|
@@ -310,7 +268,6 @@ function ensureSchedulerRunning(opts = {}) {
|
|
|
310
268
|
assertSchedulerEnabled();
|
|
311
269
|
}
|
|
312
270
|
catch (err) {
|
|
313
|
-
// Loud stated skip, on stderr so --json stdout stays clean.
|
|
314
271
|
console.error(chalk.yellow(err.message));
|
|
315
272
|
return;
|
|
316
273
|
}
|
|
@@ -332,10 +289,6 @@ function ensureSchedulerRunning(opts = {}) {
|
|
|
332
289
|
result = startDaemon();
|
|
333
290
|
}
|
|
334
291
|
catch (err) {
|
|
335
|
-
// The redirected-HOME refusal (W4) is an auto-start policy, not a failure
|
|
336
|
-
// of the routine just added — state it and leave the foreground command
|
|
337
|
-
// green, the same tier split as the auto-start circuit breaker. Anything
|
|
338
|
-
// else (a genuinely unspawnable binary) still fails loud.
|
|
339
292
|
if (err instanceof RedirectedHomeDaemonError) {
|
|
340
293
|
if (!opts.quiet)
|
|
341
294
|
log(chalk.yellow(err.message));
|
|
@@ -390,33 +343,12 @@ function runMetaJson(run) {
|
|
|
390
343
|
export function buildRunsJson(runs) {
|
|
391
344
|
return runs.map(runMetaJson);
|
|
392
345
|
}
|
|
393
|
-
/** Build the exact structured routine rows shared by `routines list --json`
|
|
394
|
-
* and the one-process AGI Menu snapshot. */
|
|
395
|
-
/**
|
|
396
|
-
* Materialised routines plus project routines discoverable from registered
|
|
397
|
-
* projects, deduped by name. The discovered ones are always disabled (available
|
|
398
|
-
* to enable) — this is a DISPLAY-only merge, so `list` shows the full single
|
|
399
|
-
* enabled/disabled picture. Execution paths (`run`/`catchup`/`webhook`) keep
|
|
400
|
-
* using `listAllJobs` so an un-materialised project routine can never fire.
|
|
401
|
-
*/
|
|
402
|
-
/** Detect Ctrl+C or premature stream close during an interactive prompt. */
|
|
403
346
|
function isPromptCancelled(err) {
|
|
404
347
|
return (err instanceof Error &&
|
|
405
348
|
(err.message.includes('User force closed') ||
|
|
406
349
|
err.name === 'ExitPromptError' ||
|
|
407
350
|
err.code === 'ERR_USE_AFTER_CLOSE'));
|
|
408
351
|
}
|
|
409
|
-
/**
|
|
410
|
-
* Interactive job picker. Returns the selected job name or null on cancel/empty.
|
|
411
|
-
*
|
|
412
|
-
* `cwd` is opt-in: pass `process.cwd()` only for inspect-class commands
|
|
413
|
-
* (`view`) whose backing operation tolerates project-layer entries. Mutation
|
|
414
|
-
* (`remove`/`edit`/`pause`/`resume`) and execution (`run`) callers omit it,
|
|
415
|
-
* which limits the picker — and therefore the user — to user-layer routines
|
|
416
|
-
* only. Without that guard, a cloned public repo's `.agents/routines/<name>.yml`
|
|
417
|
-
* would surface in `agents routines run`'s picker and execute with an
|
|
418
|
-
* attacker-supplied prompt under the user's Claude session.
|
|
419
|
-
*/
|
|
420
352
|
async function pickJob(message, filter, alternatives = [], cwd) {
|
|
421
353
|
let jobs = listAllJobs(cwd);
|
|
422
354
|
if (filter) {
|
|
@@ -447,13 +379,6 @@ async function pickJob(message, filter, alternatives = [], cwd) {
|
|
|
447
379
|
throw err;
|
|
448
380
|
}
|
|
449
381
|
}
|
|
450
|
-
/**
|
|
451
|
-
* Enable a routine on this device. If the name is not yet a user/system routine
|
|
452
|
-
* but names a project routine (in the current project or a registered one), it
|
|
453
|
-
* is materialised into the user layer first — one step, no separate opt-in. The
|
|
454
|
-
* device flag (`meta.deviceRoutines`) is the only thing that turns firing on, so
|
|
455
|
-
* a project YAML can never enable itself.
|
|
456
|
-
*/
|
|
457
382
|
async function enableRoutineAction(name) {
|
|
458
383
|
if (!name) {
|
|
459
384
|
name = await pickJob('Select routine to enable', (job) => !job.enabled, ['agents routines enable <name>']) ?? undefined;
|
|
@@ -467,8 +392,6 @@ async function enableRoutineAction(name) {
|
|
|
467
392
|
}
|
|
468
393
|
}
|
|
469
394
|
try {
|
|
470
|
-
// Not a user/system routine yet? Resolve it as a project routine and
|
|
471
|
-
// materialise it before enabling.
|
|
472
395
|
if (!readJob(name)) {
|
|
473
396
|
const found = findProjectRoutine(name);
|
|
474
397
|
if (!found) {
|
|
@@ -491,8 +414,6 @@ async function enableRoutineAction(name) {
|
|
|
491
414
|
}
|
|
492
415
|
console.log(chalk.gray(`Materialised '${name}' from ${displayProjectPath(found.projectRoot)}`));
|
|
493
416
|
}
|
|
494
|
-
// Enabling re-runs readiness — it can never bypass a proven blocker. A
|
|
495
|
-
// blocked routine stays disabled.
|
|
496
417
|
const job = readJob(name);
|
|
497
418
|
if (job) {
|
|
498
419
|
const readiness = await evaluateActivationReadinessLive(job);
|
|
@@ -518,7 +439,6 @@ async function enableRoutineAction(name) {
|
|
|
518
439
|
process.exit(1);
|
|
519
440
|
}
|
|
520
441
|
}
|
|
521
|
-
/** Disable a routine on this device. Its definition stays; only firing stops. */
|
|
522
442
|
async function disableRoutineAction(name) {
|
|
523
443
|
if (!name) {
|
|
524
444
|
name = await pickJob('Select routine to disable', (job) => job.enabled, ['agents routines disable <name>']) ?? undefined;
|
|
@@ -542,11 +462,6 @@ async function disableRoutineAction(name) {
|
|
|
542
462
|
process.exit(1);
|
|
543
463
|
}
|
|
544
464
|
}
|
|
545
|
-
/**
|
|
546
|
-
* Parse a comma-separated devices string, normalize, deduplicate, and validate
|
|
547
|
-
* each entry against the registered fleet. Exits nonzero on empty/whitespace
|
|
548
|
-
* input or unknown devices.
|
|
549
|
-
*/
|
|
550
465
|
async function parseAndValidateDevices(raw) {
|
|
551
466
|
const names = [...new Set(raw.split(',').map((s) => s.trim()).filter(Boolean).map((s) => normalizeHost(s)))];
|
|
552
467
|
if (names.length === 0) {
|
|
@@ -564,11 +479,6 @@ async function parseAndValidateDevices(raw) {
|
|
|
564
479
|
}
|
|
565
480
|
return names;
|
|
566
481
|
}
|
|
567
|
-
/**
|
|
568
|
-
* The static routines table. Shared verbatim by `agents routines list` and the
|
|
569
|
-
* non-interactive fall-through of the bare `agents routines` command, so both emit
|
|
570
|
-
* byte-identical `--json` and text output.
|
|
571
|
-
*/
|
|
572
482
|
function runRoutinesList(options) {
|
|
573
483
|
if (options.groupBy && options.groupBy !== 'device' && options.groupBy !== 'project') {
|
|
574
484
|
console.error(chalk.red(`Unsupported --group-by '${options.groupBy}'. Use: project (default) or device`));
|
|
@@ -581,7 +491,7 @@ function runRoutinesList(options) {
|
|
|
581
491
|
try {
|
|
582
492
|
monitorRunningJobs();
|
|
583
493
|
}
|
|
584
|
-
catch {
|
|
494
|
+
catch { }
|
|
585
495
|
const jobs = listJobsForDisplay(process.cwd());
|
|
586
496
|
if (jobs.length === 0) {
|
|
587
497
|
console.log(chalk.gray('No jobs configured'));
|
|
@@ -590,19 +500,14 @@ function runRoutinesList(options) {
|
|
|
590
500
|
}
|
|
591
501
|
const scheduler = new JobScheduler(async () => { });
|
|
592
502
|
scheduler.loadAll();
|
|
593
|
-
// Build a quick lookup: which jobs are currently overdue?
|
|
594
503
|
const overdueSet = new Set();
|
|
595
504
|
try {
|
|
596
505
|
for (const j of detectOverdueJobs())
|
|
597
506
|
overdueSet.add(j.name);
|
|
598
507
|
}
|
|
599
508
|
catch {
|
|
600
|
-
// Best-effort indicator; never block the list on detection errors.
|
|
601
509
|
}
|
|
602
510
|
console.log(chalk.bold('Scheduled Jobs\n'));
|
|
603
|
-
// OSC 8 hyperlink helper — renders as a clickable link in supporting terminals.
|
|
604
|
-
// Guarded on process.stdout.isTTY so that piped/redirected output never
|
|
605
|
-
// contains raw ESC ] 8 ;; ... BEL escape sequences.
|
|
606
511
|
const link = (label, url) => url && process.stdout.isTTY ? `\x1b]8;;${url}\x07${label}\x1b]8;;\x07` : label;
|
|
607
512
|
const now = new Date();
|
|
608
513
|
if (options.flat) {
|
|
@@ -627,7 +532,6 @@ function runRoutinesList(options) {
|
|
|
627
532
|
}
|
|
628
533
|
}
|
|
629
534
|
else {
|
|
630
|
-
// Default: group by project
|
|
631
535
|
const knownProjectNames = new Set(listProjectDefs().map((p) => p.name));
|
|
632
536
|
const groups = groupRoutineJobsByProject(jobs, knownProjectNames);
|
|
633
537
|
for (const group of groups) {
|
|
@@ -642,7 +546,6 @@ function runRoutinesList(options) {
|
|
|
642
546
|
scheduler.stopAll();
|
|
643
547
|
console.log();
|
|
644
548
|
}
|
|
645
|
-
/** True when a routine matches the browser's live filter query. */
|
|
646
549
|
function routineMatchesQuery(job, q) {
|
|
647
550
|
const kind = job.command ? 'command' : job.workflow ? `wf:${job.workflow}` : job.agent ?? '';
|
|
648
551
|
return [job.name, kind, fireConditionLabel(job), (job.projects ?? []).join(' ')]
|
|
@@ -650,22 +553,10 @@ function routineMatchesQuery(job, q) {
|
|
|
650
553
|
.toLowerCase()
|
|
651
554
|
.includes(q);
|
|
652
555
|
}
|
|
653
|
-
/**
|
|
654
|
-
* Friendly one-liners for the claim a `skipped` run lost — the reasons whose
|
|
655
|
-
* message is static. `active_run` is dynamic (it names the live run that owns
|
|
656
|
-
* the slot and when it started), built in {@link runFailureReason}: since
|
|
657
|
-
* PHNX-4116 there is no "wedged" daemon state, so an overlapping routine reads
|
|
658
|
-
* as `blocked` on the live run, not "wedged".
|
|
659
|
-
*/
|
|
660
556
|
const SKIP_REASON_LABEL = {
|
|
661
557
|
duplicate_slot: 'duplicate slot (already fired)',
|
|
662
558
|
wrong_owner: 'pinned to another device',
|
|
663
559
|
};
|
|
664
|
-
/**
|
|
665
|
-
* A run id is an ISO timestamp with `:`/`.` replaced by `-` (`slotRunId` /
|
|
666
|
-
* `generateRunId`), so it reverses losslessly to the run's start time. Returns
|
|
667
|
-
* the ISO string, or null when the id is not that shape (a hand-set id).
|
|
668
|
-
*/
|
|
669
560
|
function runIdToStartIso(runId) {
|
|
670
561
|
const m = /^(\d{4}-\d{2}-\d{2})T(\d{2})-(\d{2})-(\d{2})-(\d{3})Z$/.exec(runId);
|
|
671
562
|
if (!m)
|
|
@@ -673,13 +564,6 @@ function runIdToStartIso(runId) {
|
|
|
673
564
|
const iso = `${m[1]}T${m[2]}:${m[3]}:${m[4]}.${m[5]}Z`;
|
|
674
565
|
return Number.isFinite(Date.parse(iso)) ? iso : null;
|
|
675
566
|
}
|
|
676
|
-
/**
|
|
677
|
-
* The short, human reason a run did not simply complete — for inline display in
|
|
678
|
-
* the list/detail so "why did it fail" needs no dig into the run dir. Prefers the
|
|
679
|
-
* concrete `errorMessage` (which carries `auth_failed: …`, OAuth-revoked, timeouts),
|
|
680
|
-
* then the readiness block for a `blocked` run, then the mapped skip reason. Returns
|
|
681
|
-
* null for a healthy (`completed`/`running`) run, which needs no annotation.
|
|
682
|
-
*/
|
|
683
567
|
export function runFailureReason(run) {
|
|
684
568
|
if (run.status === 'completed' || run.status === 'running')
|
|
685
569
|
return null;
|
|
@@ -687,10 +571,6 @@ export function runFailureReason(run) {
|
|
|
687
571
|
const one = s.replace(/\s+/g, ' ').trim();
|
|
688
572
|
return one.length > 80 ? one.slice(0, 79) + '…' : one;
|
|
689
573
|
};
|
|
690
|
-
// An overlap skip names the live run it lost to (PHNX-4116): `blocked: run
|
|
691
|
-
// <id> active since <t>`, not the removed "wedged" wording. The structured
|
|
692
|
-
// `activeRunId` is preferred; a legacy record without it falls back to the
|
|
693
|
-
// errorMessage (which embeds the same id) so nothing regresses to vaguer text.
|
|
694
574
|
if (run.skipReason === 'active_run') {
|
|
695
575
|
if (run.activeRunId) {
|
|
696
576
|
const since = runIdToStartIso(run.activeRunId);
|
|
@@ -711,15 +591,11 @@ export function runFailureReason(run) {
|
|
|
711
591
|
return SKIP_REASON_LABEL[run.skipReason];
|
|
712
592
|
if (run.status === 'missed')
|
|
713
593
|
return 'scheduler was not running when it came due';
|
|
714
|
-
// The most common failure shape: a command/agent body that exited nonzero with
|
|
715
|
-
// no structured errorMessage (the cause is in stdout). Naming the exit code is
|
|
716
|
-
// still more than the bare status word, and tells the reader it ran and threw.
|
|
717
594
|
if ((run.status === 'failed' || run.status === 'timeout') && run.exitCode !== null && run.exitCode !== undefined) {
|
|
718
595
|
return `exit ${run.exitCode}`;
|
|
719
596
|
}
|
|
720
597
|
return null;
|
|
721
598
|
}
|
|
722
|
-
/** One compact routine row for the browser list: name · kind · schedule · next · last. */
|
|
723
599
|
function routineBrowserRow(job, scheduler, overdueSet, now) {
|
|
724
600
|
const kind = job.command ? 'command' : job.workflow ? `wf:${job.workflow}` : job.agent ?? '?';
|
|
725
601
|
const name = job.name.length > 24 ? job.name.slice(0, 23) + '…' : job.name.padEnd(24);
|
|
@@ -737,13 +613,8 @@ function routineBrowserRow(job, scheduler, overdueSet, now) {
|
|
|
737
613
|
: chalk.gray(nextRunLabel(job, scheduler, now));
|
|
738
614
|
return `${chalk.bold(name)} ${chalk.cyan(kind.padEnd(12))} ${enabled.padEnd(6)} ${chalk.gray(scheduleLabel(job)).padEnd(24)} next ${next} · last ${last}`;
|
|
739
615
|
}
|
|
740
|
-
/**
|
|
741
|
-
* The four-block routine detail — Definition, Next fire, Recent runs, Stats — shown
|
|
742
|
-
* both live in the picker's preview pane and, in full, when a routine is selected.
|
|
743
|
-
*/
|
|
744
616
|
function buildRoutineDetail(job, scheduler, now) {
|
|
745
617
|
const lines = [];
|
|
746
|
-
// 1. Definition
|
|
747
618
|
lines.push(chalk.bold.underline('Definition'));
|
|
748
619
|
const kind = job.command
|
|
749
620
|
? `command: ${job.command}`
|
|
@@ -762,12 +633,10 @@ function buildRoutineDetail(job, scheduler, now) {
|
|
|
762
633
|
const oneLine = job.prompt.replace(/\s+/g, ' ').trim();
|
|
763
634
|
lines.push(` prompt: ${oneLine.length > 120 ? oneLine.slice(0, 119) + '…' : oneLine}`);
|
|
764
635
|
}
|
|
765
|
-
// 2. Next fire
|
|
766
636
|
lines.push('');
|
|
767
637
|
lines.push(chalk.bold.underline('Next fire'));
|
|
768
638
|
const nextDate = nextRunForDisplay(job, scheduler);
|
|
769
639
|
lines.push(` ${nextRunLabel(job, scheduler, now)}${nextDate ? chalk.gray(` (${nextDate.toISOString()})`) : ''}`);
|
|
770
|
-
// 3. Recent runs (most recent last, like `routines runs`)
|
|
771
640
|
lines.push('');
|
|
772
641
|
lines.push(chalk.bold.underline('Recent runs'));
|
|
773
642
|
const runs = listRuns(job.name).slice(-5);
|
|
@@ -782,15 +651,11 @@ function buildRoutineDetail(job, scheduler, now) {
|
|
|
782
651
|
? chalk.red(run.status)
|
|
783
652
|
: chalk.yellow(run.status);
|
|
784
653
|
const dur = run.completedAt ? ` ${formatRunDuration(run.startedAt, run.completedAt)}` : '';
|
|
785
|
-
// Surface WHY a run did not complete, inline, so "looking at status" does not
|
|
786
|
-
// require digging into the run dir. auth_failed / OAuth-revoked, an
|
|
787
|
-
// active-run overlap skip, or a readiness block all live on the RunMeta already.
|
|
788
654
|
const reason = runFailureReason(run);
|
|
789
655
|
const why = reason ? chalk.gray(` — ${reason}`) : '';
|
|
790
656
|
lines.push(` ${run.startedAt} ${status}${dur}${why}`);
|
|
791
657
|
}
|
|
792
658
|
}
|
|
793
|
-
// 4. Stats
|
|
794
659
|
lines.push('');
|
|
795
660
|
lines.push(chalk.bold.underline('Stats'));
|
|
796
661
|
const stats = routineStats(job.name);
|
|
@@ -803,14 +668,7 @@ function buildRoutineDetail(job, scheduler, now) {
|
|
|
803
668
|
}
|
|
804
669
|
return lines.join('\n');
|
|
805
670
|
}
|
|
806
|
-
/**
|
|
807
|
-
* Interactive routines browser behind the bare `agents routines` command on a TTY.
|
|
808
|
-
* Reuses {@link itemPicker}, keeping the project/device group headers as inline
|
|
809
|
-
* dividers, with a live four-block detail pane and a full drill-in on select.
|
|
810
|
-
*/
|
|
811
671
|
async function runRoutinesBrowser(options) {
|
|
812
|
-
// Same --group-by validation as the static list, so a bad value fails the same
|
|
813
|
-
// way on a TTY as it does under --json / a pipe (rather than silently defaulting).
|
|
814
672
|
if (options.groupBy && options.groupBy !== 'device' && options.groupBy !== 'project') {
|
|
815
673
|
console.error(chalk.red(`Unsupported --group-by '${options.groupBy}'. Use: project (default) or device`));
|
|
816
674
|
process.exit(1);
|
|
@@ -818,7 +676,7 @@ async function runRoutinesBrowser(options) {
|
|
|
818
676
|
try {
|
|
819
677
|
monitorRunningJobs();
|
|
820
678
|
}
|
|
821
|
-
catch {
|
|
679
|
+
catch { }
|
|
822
680
|
const jobs = listJobsForDisplay(process.cwd());
|
|
823
681
|
if (jobs.length === 0) {
|
|
824
682
|
console.log(chalk.gray('No jobs configured'));
|
|
@@ -834,16 +692,14 @@ async function runRoutinesBrowser(options) {
|
|
|
834
692
|
for (const j of detectOverdueJobs())
|
|
835
693
|
overdueSet.add(j.name);
|
|
836
694
|
}
|
|
837
|
-
catch {
|
|
838
|
-
// Group with the same headers the static list uses, so the picker's dividers
|
|
839
|
-
// read identically to `routines list`.
|
|
695
|
+
catch { }
|
|
840
696
|
let groups;
|
|
841
697
|
if (options.groupBy === 'device') {
|
|
842
698
|
let registry = {};
|
|
843
699
|
try {
|
|
844
700
|
registry = loadDevicesSync();
|
|
845
701
|
}
|
|
846
|
-
catch {
|
|
702
|
+
catch { }
|
|
847
703
|
groups = groupRoutineJobsByDevice(jobs, registry);
|
|
848
704
|
}
|
|
849
705
|
else {
|
|
@@ -875,7 +731,6 @@ async function runRoutinesBrowser(options) {
|
|
|
875
731
|
emptyMessage: 'No routines match.',
|
|
876
732
|
});
|
|
877
733
|
if (picked) {
|
|
878
|
-
// Drill-in: print the full, untruncated four-block detail for the selection.
|
|
879
734
|
console.log();
|
|
880
735
|
console.log(chalk.bold(picked.item.name));
|
|
881
736
|
console.log(buildRoutineDetail(picked.item, scheduler, now));
|
|
@@ -885,7 +740,6 @@ async function runRoutinesBrowser(options) {
|
|
|
885
740
|
scheduler.stopAll();
|
|
886
741
|
}
|
|
887
742
|
}
|
|
888
|
-
/** Register the `agents routines` command tree. */
|
|
889
743
|
export function registerRoutinesCommands(program) {
|
|
890
744
|
const routinesCmd = program
|
|
891
745
|
.command('routines')
|
|
@@ -971,12 +825,6 @@ export function registerRoutinesCommands(program) {
|
|
|
971
825
|
run is skipped up front with a re-login hint.
|
|
972
826
|
`,
|
|
973
827
|
});
|
|
974
|
-
// Bare `agents routines`: a HIDDEN default subcommand carries the bare-command's
|
|
975
|
-
// own --json/--group-by/--flat. It must be a subcommand rather than options on the
|
|
976
|
-
// parent `routines`, because commander binds a same-named PARENT option first and
|
|
977
|
-
// would shadow the identical --json on every sibling (`add`/`run`/`runs`/`list`/…).
|
|
978
|
-
// On a TTY it opens the interactive browser; with --json, --flat, or in a
|
|
979
|
-
// non-interactive shell it prints the exact static `routines list` output.
|
|
980
828
|
routinesCmd
|
|
981
829
|
.command('browse', { isDefault: true, hidden: true })
|
|
982
830
|
.description('Interactive routines browser (the default for a bare `agents routines`)')
|
|
@@ -1036,16 +884,13 @@ export function registerRoutinesCommands(program) {
|
|
|
1036
884
|
.option('--cwd <path>', 'Portable execution directory. Relative values resolve under --project-anchor when usable, otherwise under the execution target $HOME. Supersedes --run-cwd/remoteCwd.')
|
|
1037
885
|
.option('--json', 'Emit machine-readable JSON with the created routine id and status')
|
|
1038
886
|
.action(async (nameOrPath, options) => {
|
|
1039
|
-
// Check if inline mode (has flags) or file mode
|
|
1040
887
|
const hasInlineFlags = options.schedule || options.agent || options.workflow || options.command || options.prompt || options.at || options.on;
|
|
1041
888
|
if (hasInlineFlags) {
|
|
1042
|
-
// Inline mode: create job from flags
|
|
1043
889
|
if (!nameOrPath) {
|
|
1044
890
|
console.error(chalk.red('Job name is required'));
|
|
1045
891
|
console.error(chalk.gray('Usage: agents routines add <name> --schedule "..." --agent <agent> --prompt "..."'));
|
|
1046
892
|
process.exit(1);
|
|
1047
893
|
}
|
|
1048
|
-
// Validate mutually exclusive --agent / --workflow / --command
|
|
1049
894
|
if ([options.agent, options.workflow, options.command].filter(Boolean).length > 1) {
|
|
1050
895
|
console.error(chalk.red('--agent, --workflow, and --command are mutually exclusive; specify exactly one'));
|
|
1051
896
|
process.exit(1);
|
|
@@ -1060,7 +905,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1060
905
|
console.error(chalk.red(err.message));
|
|
1061
906
|
process.exit(1);
|
|
1062
907
|
}
|
|
1063
|
-
// Handle --at for one-shot jobs
|
|
1064
908
|
if (options.at) {
|
|
1065
909
|
const parsed = parseAtTime(options.at);
|
|
1066
910
|
if (!parsed) {
|
|
@@ -1083,17 +927,8 @@ export function registerRoutinesCommands(program) {
|
|
|
1083
927
|
console.error(chalk.red('An agent, workflow, or command is required (use --agent, --workflow, or --command)'));
|
|
1084
928
|
process.exit(1);
|
|
1085
929
|
}
|
|
1086
|
-
// Normalize `--agent <agent[@version]>` into separate bare agent +
|
|
1087
|
-
// version fields, the same split `agents run` performs. Storing the raw
|
|
1088
|
-
// compound string is the RUSH-2719 bug: validateJob compared
|
|
1089
|
-
// 'claude@2.1.207' against bare AgentIds, and the deprecation gate below
|
|
1090
|
-
// silently missed a hard-deprecated harness pinned with @version.
|
|
1091
930
|
let parsedAgent;
|
|
1092
931
|
if (options.agent) {
|
|
1093
|
-
// A custom harness (agents harness list) is a valid routine agent:
|
|
1094
|
-
// the runner delegates it to `agents run <name>`. It pins its own
|
|
1095
|
-
// host version, so no @version suffix applies (a suffixed name falls
|
|
1096
|
-
// through to the parse error below).
|
|
1097
932
|
if (isCustomHarnessName(options.agent)) {
|
|
1098
933
|
parsedAgent = { agent: options.agent };
|
|
1099
934
|
}
|
|
@@ -1104,18 +939,12 @@ export function registerRoutinesCommands(program) {
|
|
|
1104
939
|
process.exit(1);
|
|
1105
940
|
}
|
|
1106
941
|
parsedAgent = parsed;
|
|
1107
|
-
// Hard-deprecated harnesses cannot be scheduled — refuse at create time
|
|
1108
|
-
// so no new recurring job silently fails against a retired backend.
|
|
1109
942
|
if (isAgentHardDeprecated(parsed.agent)) {
|
|
1110
943
|
console.error(chalk.red(hardDeprecationError(parsed.agent)));
|
|
1111
944
|
process.exit(1);
|
|
1112
945
|
}
|
|
1113
946
|
}
|
|
1114
947
|
}
|
|
1115
|
-
// --strategy / --balanced: per-routine selection policy, same vocabulary
|
|
1116
|
-
// as agents run. Rejected (not warned) against an @version pin: a warning
|
|
1117
|
-
// printed once at add time is easy to miss and the routine then silently
|
|
1118
|
-
// runs pinned forever.
|
|
1119
948
|
let strategy;
|
|
1120
949
|
if (options.strategy !== undefined || options.balanced) {
|
|
1121
950
|
if (options.strategy !== undefined && options.balanced) {
|
|
@@ -1142,17 +971,14 @@ export function registerRoutinesCommands(program) {
|
|
|
1142
971
|
process.exit(1);
|
|
1143
972
|
}
|
|
1144
973
|
}
|
|
1145
|
-
// Command routines run a plain shell and take no prompt; agent/workflow routines require one.
|
|
1146
974
|
if (!options.command && !options.prompt) {
|
|
1147
975
|
console.error(chalk.red('Prompt is required (use --prompt)'));
|
|
1148
976
|
process.exit(1);
|
|
1149
977
|
}
|
|
1150
|
-
// Parse and validate --devices against the fleet registry.
|
|
1151
978
|
let devices;
|
|
1152
979
|
if (options.devices !== undefined) {
|
|
1153
980
|
devices = await parseAndValidateDevices(options.devices);
|
|
1154
981
|
}
|
|
1155
|
-
// Parse and validate --project / --all-projects.
|
|
1156
982
|
let projects;
|
|
1157
983
|
if (options.allProjects) {
|
|
1158
984
|
if (options.project && options.project.length > 0) {
|
|
@@ -1162,15 +988,12 @@ export function registerRoutinesCommands(program) {
|
|
|
1162
988
|
projects = ['*'];
|
|
1163
989
|
}
|
|
1164
990
|
else if (options.project && options.project.length > 0) {
|
|
1165
|
-
// Validate each name: format check then existence check against defined projects.
|
|
1166
991
|
for (const name of options.project) {
|
|
1167
992
|
if (!isSafeProjectName(name)) {
|
|
1168
993
|
console.error(chalk.red(`Invalid project name "${name}": must start with a letter or digit, contain only letters, digits, dots, hyphens, or underscores`));
|
|
1169
994
|
process.exit(1);
|
|
1170
995
|
}
|
|
1171
996
|
}
|
|
1172
|
-
// Deduplicate at the same canonical boundary writeJob uses, so the
|
|
1173
|
-
// add path and a hand-authored YAML land identical persisted forms.
|
|
1174
997
|
const deduped = normalizeProjects(options.project) ?? [];
|
|
1175
998
|
const knownProjectNames = new Set(listProjectDefs().map((p) => p.name));
|
|
1176
999
|
const unknown = deduped.filter((n) => !knownProjectNames.has(n));
|
|
@@ -1188,9 +1011,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1188
1011
|
console.error(chalk.red(err.message));
|
|
1189
1012
|
process.exit(1);
|
|
1190
1013
|
}
|
|
1191
|
-
// --run-on implies host strategy when the user didn't pick one;
|
|
1192
|
-
// 'auto' means fleet placement re-picked at each fire, never a literal
|
|
1193
|
-
// SSH target named "auto".
|
|
1194
1014
|
if (options.runOn && !hostStrategy)
|
|
1195
1015
|
hostStrategy = options.runOn === 'auto' ? 'fleet' : 'host';
|
|
1196
1016
|
if (options.runOn === 'auto' && hostStrategy !== 'fleet') {
|
|
@@ -1201,11 +1021,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1201
1021
|
console.error(chalk.red('--placement host requires --run-on <name>'));
|
|
1202
1022
|
process.exit(1);
|
|
1203
1023
|
}
|
|
1204
|
-
// No devices auto-pin is needed for off-box placement: under the
|
|
1205
|
-
// per-device activation model (§8), a new routine is activated only on
|
|
1206
|
-
// the creating machine's device manifest (setJobEnabled below), so
|
|
1207
|
-
// exactly one daemon fires it unless it is deliberately enabled
|
|
1208
|
-
// elsewhere — the double-fire guard is structural now.
|
|
1209
1024
|
const config = {
|
|
1210
1025
|
name: nameOrPath,
|
|
1211
1026
|
...(schedule ? { schedule } : {}),
|
|
@@ -1242,10 +1057,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1242
1057
|
process.exit(1);
|
|
1243
1058
|
}
|
|
1244
1059
|
writeJob(config);
|
|
1245
|
-
// Readiness gate: a routine only activates when its execution context
|
|
1246
|
-
// resolves and the harness is available. A proven blocker saves the
|
|
1247
|
-
// definition PAUSED with a stable code + repair, so a broken routine can
|
|
1248
|
-
// never fire (and storm) — the plan's save-paused contract.
|
|
1249
1060
|
const deviceMatch = !devices || devices.map(normalizeHost).includes(normalizeHost(machineId()));
|
|
1250
1061
|
const readiness = await evaluateActivationReadinessLive(config);
|
|
1251
1062
|
const activate = config.enabled && deviceMatch && readiness.ready;
|
|
@@ -1257,9 +1068,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1257
1068
|
console.log(chalk.gray(` ${r.message}`));
|
|
1258
1069
|
if (r.repair)
|
|
1259
1070
|
console.log(chalk.gray(` repair: ${r.repair}`));
|
|
1260
|
-
// Name the resume explicitly: a paused routine is otherwise a dead
|
|
1261
|
-
// end for an agent, which is how the release train sat unregistered
|
|
1262
|
-
// (RUSH-2517 / RUSH-2476).
|
|
1263
1071
|
console.log(chalk.gray(` then: agents routines enable ${config.name}`));
|
|
1264
1072
|
}
|
|
1265
1073
|
}
|
|
@@ -1288,7 +1096,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1288
1096
|
ensureSchedulerRunning();
|
|
1289
1097
|
}
|
|
1290
1098
|
else {
|
|
1291
|
-
// File mode: load from YAML file
|
|
1292
1099
|
if (!nameOrPath) {
|
|
1293
1100
|
console.error(chalk.red('File path or job name with flags is required'));
|
|
1294
1101
|
console.error(chalk.gray('Usage: agents routines add <path-to-job.yml>'));
|
|
@@ -1330,24 +1137,12 @@ export function registerRoutinesCommands(program) {
|
|
|
1330
1137
|
config.runOnce = true;
|
|
1331
1138
|
console.error(chalk.yellow(`Schedule "${config.schedule}" pins minute, hour, day, and month; treating it as one-shot. Prefer --at for one-time routines.`));
|
|
1332
1139
|
}
|
|
1333
|
-
// `add <file>` must never rewrite the file the user pointed at. When the
|
|
1334
|
-
// source already IS the canonical routine file — the normal case for a
|
|
1335
|
-
// definition tracked in the git-backed `~/.agents` repo — writeJob would
|
|
1336
|
-
// re-serialize it in place and drop every key the canonical form omits,
|
|
1337
|
-
// including the legacy `devices:` pin, silently corrupting committed
|
|
1338
|
-
// config (RUSH-2517). The definition is already where it belongs; only
|
|
1339
|
-
// activation is left to do. A source from anywhere else is still copied
|
|
1340
|
-
// in, which is the whole point of passing a path.
|
|
1341
1140
|
if (!isCanonicalRoutineSource(resolved, config.name))
|
|
1342
1141
|
writeJob(config);
|
|
1343
1142
|
const deviceMatch = !config.devices || config.devices.map(normalizeHost).includes(normalizeHost(machineId()));
|
|
1344
1143
|
const readiness = await evaluateActivationReadinessLive(config);
|
|
1345
1144
|
const activate = config.enabled && deviceMatch && readiness.ready;
|
|
1346
1145
|
setJobEnabled(config.name, activate);
|
|
1347
|
-
// A `devices:` pin in a hand-authored definition is legacy input: since
|
|
1348
|
-
// RUSH-2392's split (723182bb5) activation lives in each device's
|
|
1349
|
-
// `agents.yaml`, and `add` only ever applies it to THIS box. Say so
|
|
1350
|
-
// rather than let the routine read `Devices: all` on every peer.
|
|
1351
1146
|
if (config.devices && config.devices.length > 0 && !options.json) {
|
|
1352
1147
|
console.log(chalk.yellow(`'devices:' pins activation on this box only — it is not propagated to peers.`));
|
|
1353
1148
|
console.log(chalk.gray(` pin the fleet with: agents routines devices ${config.name} --set ${config.devices.join(',')}`));
|
|
@@ -1358,9 +1153,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1358
1153
|
console.log(chalk.gray(` ${r.message}`));
|
|
1359
1154
|
if (r.repair)
|
|
1360
1155
|
console.log(chalk.gray(` repair: ${r.repair}`));
|
|
1361
|
-
// Name the resume explicitly: a paused routine is otherwise a dead end
|
|
1362
|
-
// for an agent, which is how the release train sat unregistered
|
|
1363
|
-
// (RUSH-2517 / RUSH-2476).
|
|
1364
1156
|
console.log(chalk.gray(` then: agents routines enable ${config.name}`));
|
|
1365
1157
|
}
|
|
1366
1158
|
if (options.json) {
|
|
@@ -1418,7 +1210,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1418
1210
|
signalDaemonReload();
|
|
1419
1211
|
}
|
|
1420
1212
|
catch {
|
|
1421
|
-
// The daemon may not be running; the next start will read the cleaned directory.
|
|
1422
1213
|
}
|
|
1423
1214
|
});
|
|
1424
1215
|
routinesCmd
|
|
@@ -1477,12 +1268,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1477
1268
|
return;
|
|
1478
1269
|
}
|
|
1479
1270
|
const existing = readJob(name);
|
|
1480
|
-
// Headless context repair. Both readiness blockers print
|
|
1481
|
-
// `agents routines edit <name> --project-anchor <name> # or --cwd <path>`
|
|
1482
|
-
// as their repair (routine-context.ts:215,334), but neither flag existed
|
|
1483
|
-
// and the only edit surface opened $EDITOR — so an agent could never
|
|
1484
|
-
// follow its own repair hint (RUSH-2517). Applying and saving directly is
|
|
1485
|
-
// what makes that hint true.
|
|
1486
1271
|
if (options.cwd !== undefined || options.projectAnchor !== undefined || options.agent !== undefined || options.strategy !== undefined) {
|
|
1487
1272
|
if (!existing) {
|
|
1488
1273
|
console.error(chalk.red(`Routine '${name}' not found. Create it first: agents routines add ${name} --schedule "..." --agent claude --prompt "..."`));
|
|
@@ -1494,8 +1279,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1494
1279
|
existing.project = options.projectAnchor;
|
|
1495
1280
|
if (options.agent !== undefined) {
|
|
1496
1281
|
if (isCustomHarnessName(options.agent)) {
|
|
1497
|
-
// Custom harness: delegated to `agents run <name>`; the profile
|
|
1498
|
-
// pins its own host version, so any prior pin is cleared.
|
|
1499
1282
|
existing.agent = options.agent;
|
|
1500
1283
|
delete existing.version;
|
|
1501
1284
|
}
|
|
@@ -1510,8 +1293,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1510
1293
|
process.exit(1);
|
|
1511
1294
|
}
|
|
1512
1295
|
existing.agent = parsed.agent;
|
|
1513
|
-
// An @version pin replaces any previous pin; a bare agent clears it so
|
|
1514
|
-
// the routine returns to strategy/balanced selection.
|
|
1515
1296
|
if (parsed.version)
|
|
1516
1297
|
existing.version = parsed.version;
|
|
1517
1298
|
else
|
|
@@ -1645,9 +1426,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1645
1426
|
.description('Duration + outcome rollup per job: run count, failed, missed, avg/p50/p95 duration')
|
|
1646
1427
|
.option('--json', 'Emit machine-readable JSON')
|
|
1647
1428
|
.action(async (name, options) => {
|
|
1648
|
-
// No name: summarize every job (like `routines list`). A name narrows to
|
|
1649
|
-
// one job's rollup — no interactive picker, since a bare `stats` already
|
|
1650
|
-
// has a useful all-jobs default.
|
|
1651
1429
|
if (!name) {
|
|
1652
1430
|
const jobs = listAllJobs();
|
|
1653
1431
|
const rows = jobs.map((j) => ({ name: j.name, ...routineStats(j.name) }));
|
|
@@ -1694,12 +1472,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1694
1472
|
if (!name)
|
|
1695
1473
|
return;
|
|
1696
1474
|
}
|
|
1697
|
-
// Execution is intentionally user-only: a routine spawns a full agent
|
|
1698
|
-
// session with a YAML-supplied prompt, so a cloned public repo's
|
|
1699
|
-
// `.agents/routines/<name>.yml` would be a prompt-injection vector if
|
|
1700
|
-
// `run` honored the project layer. `list` / `view` stay project-aware
|
|
1701
|
-
// for inspection; `run`, `remove`, `edit`, `pause`, `resume` stay on
|
|
1702
|
-
// the trusted user layer.
|
|
1703
1475
|
const job = readJob(name);
|
|
1704
1476
|
if (!job) {
|
|
1705
1477
|
if (options.json) {
|
|
@@ -1720,7 +1492,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1720
1492
|
process.exit(1);
|
|
1721
1493
|
}
|
|
1722
1494
|
const runLabel = job.command ? 'command' : job.workflow ? `workflow: ${job.workflow}` : `agent: ${job.agent}`;
|
|
1723
|
-
// A spinner writes to stderr but its human framing is noise for a JSON consumer.
|
|
1724
1495
|
const spinner = options.json ? null : ora('Executing...').start();
|
|
1725
1496
|
if (!options.json)
|
|
1726
1497
|
console.log(chalk.bold(`Running job '${name}' (${runLabel}, mode: ${job.mode})\n`));
|
|
@@ -1737,11 +1508,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1737
1508
|
logPath,
|
|
1738
1509
|
reportPath: result.reportPath ?? null,
|
|
1739
1510
|
});
|
|
1740
|
-
// A failed run must exit non-zero so cron wrappers, `&&` chains, and
|
|
1741
|
-
// `--json` consumers actually see the failure (a logged-out agent used
|
|
1742
|
-
// to exit 0 with ok:true, hiding the whole auth-failure epidemic). Set
|
|
1743
|
-
// exitCode rather than process.exit() so the JSON payload is fully
|
|
1744
|
-
// flushed to a pipe before the process ends.
|
|
1745
1511
|
if (!succeeded)
|
|
1746
1512
|
process.exitCode = 1;
|
|
1747
1513
|
return;
|
|
@@ -1792,9 +1558,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1792
1558
|
const last = job.lastRanAt ? job.lastRanAt.toLocaleString() : 'never';
|
|
1793
1559
|
console.log(` ${chalk.cyan(job.name)} — missed ${chalk.gray(job.expectedAt.toLocaleString())}, last ran ${chalk.gray(last)}`);
|
|
1794
1560
|
}
|
|
1795
|
-
// Need the daemon alive so spawned jobs are monitored and meta.json is
|
|
1796
|
-
// finalized. Start it if it isn't already running — unless daemon.enabled
|
|
1797
|
-
// is off, in which case this auto-start is skipped with a stated reason.
|
|
1798
1561
|
if (!options.dryRun && !isDaemonRunning()) {
|
|
1799
1562
|
try {
|
|
1800
1563
|
assertDaemonEnabled();
|
|
@@ -1839,7 +1602,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1839
1602
|
console.log(chalk.red(`Unknown webhook source "${options.source}". Use github or linear.`));
|
|
1840
1603
|
process.exit(1);
|
|
1841
1604
|
}
|
|
1842
|
-
// Load the raw JSON payload: --file wins, else drain stdin.
|
|
1843
1605
|
let raw;
|
|
1844
1606
|
if (options.file) {
|
|
1845
1607
|
const resolved = path.resolve(options.file);
|
|
@@ -1872,10 +1634,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1872
1634
|
process.exit(1);
|
|
1873
1635
|
}
|
|
1874
1636
|
const webhook = { source, event: options.event, payload };
|
|
1875
|
-
// Matching is intentionally user-layer only (fireWebhookJobs defaults to
|
|
1876
|
-
// listJobs() with no cwd), mirroring `run`/`catchup`: a webhook must never
|
|
1877
|
-
// fire a cloned project repo's `.agents/routines/*.yml` and run an
|
|
1878
|
-
// attacker-supplied prompt under the user's agent session.
|
|
1879
1637
|
if (options.dryRun) {
|
|
1880
1638
|
const matched = matchJobsToWebhook(listAllJobs(), webhook);
|
|
1881
1639
|
if (matched.length === 0) {
|
|
@@ -1889,10 +1647,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1889
1647
|
console.log(chalk.gray('\n(dry run — no routines triggered)'));
|
|
1890
1648
|
return;
|
|
1891
1649
|
}
|
|
1892
|
-
// Fired jobs run detached via executeJobDetached (the same path cron
|
|
1893
|
-
// uses). Keep the daemon alive so each run's meta.json is finalized —
|
|
1894
|
-
// unless daemon.enabled is off, in which case this auto-start is
|
|
1895
|
-
// skipped with a stated reason.
|
|
1896
1650
|
if (!isDaemonRunning()) {
|
|
1897
1651
|
if (!isDaemonEnabled()) {
|
|
1898
1652
|
console.log(chalk.yellow(`Daemon is disabled (daemon.enabled=false) — run(s) below fire but are not monitored. Re-enable with: agents daemon enable`));
|
|
@@ -1905,9 +1659,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1905
1659
|
}
|
|
1906
1660
|
}
|
|
1907
1661
|
catch (err) {
|
|
1908
|
-
// Same contract as the daemon.enabled=false branch above: a refused
|
|
1909
|
-
// auto-start (W4's redirected-HOME guard) never cancels the fire —
|
|
1910
|
-
// the runs below fire but are not monitored. Anything else rethrows.
|
|
1911
1662
|
if (err instanceof RedirectedHomeDaemonError) {
|
|
1912
1663
|
console.log(chalk.yellow(err.message));
|
|
1913
1664
|
}
|
|
@@ -1939,7 +1690,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1939
1690
|
if (!name)
|
|
1940
1691
|
return;
|
|
1941
1692
|
}
|
|
1942
|
-
// Resolve the run: an explicit --run row, else the latest.
|
|
1943
1693
|
const run = options.run
|
|
1944
1694
|
? listRuns(name).find((r) => r.runId === options.run)
|
|
1945
1695
|
: getLatestRun(name);
|
|
@@ -1949,7 +1699,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1949
1699
|
}
|
|
1950
1700
|
const runId = run.runId;
|
|
1951
1701
|
const logPath = path.join(getRunDir(name, runId), 'stdout.log');
|
|
1952
|
-
// --full: the raw combined stdout stream (the old default).
|
|
1953
1702
|
if (options.full) {
|
|
1954
1703
|
if (!fs.existsSync(logPath)) {
|
|
1955
1704
|
console.log(chalk.yellow(`Log not found: ${logPath}`));
|
|
@@ -1959,11 +1708,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1959
1708
|
console.log(fs.readFileSync(logPath, 'utf-8'));
|
|
1960
1709
|
return;
|
|
1961
1710
|
}
|
|
1962
|
-
// Concise by default: a status header + the extracted report (final
|
|
1963
|
-
// assistant message). Routine runs are sandboxed (transcript in an overlay
|
|
1964
|
-
// HOME, not the session index), so the captured report — not renderSummary —
|
|
1965
|
-
// is the concise view. Falls back to a bounded stdout tail when no report
|
|
1966
|
-
// was extracted (e.g. the run failed before finishing).
|
|
1967
1711
|
const statusColor = run.status === 'completed' ? chalk.green
|
|
1968
1712
|
: run.status === 'missed' ? chalk.magenta
|
|
1969
1713
|
: run.status === 'failed' || run.status === 'timeout' ? chalk.red
|
|
@@ -1973,8 +1717,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1973
1717
|
chalk.gray(` ${run.startedAt}`) +
|
|
1974
1718
|
chalk.gray(formatRunDuration(run.startedAt, run.completedAt)) +
|
|
1975
1719
|
(run.exitCode !== null && run.exitCode !== undefined ? chalk.gray(` exit ${run.exitCode}`) : ''));
|
|
1976
|
-
// The structured reason (auth_failed, blocked readiness, overlap skip) — the
|
|
1977
|
-
// report/stdout tail below often buries or omits it, so name it up front.
|
|
1978
1720
|
const logsReason = runFailureReason(run);
|
|
1979
1721
|
if (logsReason)
|
|
1980
1722
|
console.log(chalk.red('reason: ') + chalk.gray(logsReason));
|
|
@@ -1985,7 +1727,6 @@ export function registerRoutinesCommands(program) {
|
|
|
1985
1727
|
console.log(chalk.gray('\n(pass --full for the raw stdout stream)'));
|
|
1986
1728
|
return;
|
|
1987
1729
|
}
|
|
1988
|
-
// No report — show a bounded tail rather than dumping the whole stream.
|
|
1989
1730
|
if (fs.existsSync(logPath)) {
|
|
1990
1731
|
const lines = fs.readFileSync(logPath, 'utf-8').split('\n');
|
|
1991
1732
|
const tail = lines.slice(-40).join('\n').trimEnd();
|
|
@@ -2054,7 +1795,6 @@ export function registerRoutinesCommands(program) {
|
|
|
2054
1795
|
const results = await Promise.all(targets.map(async (job) => {
|
|
2055
1796
|
const deviceMatch = !job.devices || job.devices.map(normalizeHost).includes(thisDevice);
|
|
2056
1797
|
const readiness = await evaluateActivationReadinessLive(job);
|
|
2057
|
-
// `job.enabled` reflects THIS device's activation state (applyDeviceActivation).
|
|
2058
1798
|
let action;
|
|
2059
1799
|
if (options.fix && deviceMatch) {
|
|
2060
1800
|
if (readiness.ready && !job.enabled) {
|
|
@@ -2113,8 +1853,6 @@ export function registerRoutinesCommands(program) {
|
|
|
2113
1853
|
.action(async (name) => {
|
|
2114
1854
|
await disableRoutineAction(name);
|
|
2115
1855
|
});
|
|
2116
|
-
// Device activation management for a single routine. Each mutation executes
|
|
2117
|
-
// on the target device so only that host writes devices/<hostname>/agents.yaml.
|
|
2118
1856
|
routinesCmd
|
|
2119
1857
|
.command('devices [name]')
|
|
2120
1858
|
.description('View or change the devices where a routine is enabled. Without flags, opens an interactive picker (requires a TTY).')
|
|
@@ -2144,12 +1882,6 @@ export function registerRoutinesCommands(program) {
|
|
|
2144
1882
|
const unknown = [...selectedSet].filter((device) => !all.includes(device));
|
|
2145
1883
|
if (unknown.length > 0)
|
|
2146
1884
|
throw new Error(`Unknown device${unknown.length === 1 ? '' : 's'}: ${unknown.join(', ')}`);
|
|
2147
|
-
// --set/--clear fan out to every registered device so peers outside the
|
|
2148
|
-
// new set get paused. An asleep/offline peer must not abort the whole
|
|
2149
|
-
// pin: the target may already be applied, and an unreachable box cannot
|
|
2150
|
-
// be running the routine (it picks up the enabled set on next sync).
|
|
2151
|
-
// Exit non-zero only when a *selected* device could not be enabled
|
|
2152
|
-
// (github.com/phnx-labs/agents-cli#2118).
|
|
2153
1885
|
const skipped = [];
|
|
2154
1886
|
const failedTargets = [];
|
|
2155
1887
|
for (const device of all) {
|
|
@@ -2196,7 +1928,6 @@ export function registerRoutinesCommands(program) {
|
|
|
2196
1928
|
await applyDevices(await parseAndValidateDevices(options.set));
|
|
2197
1929
|
return;
|
|
2198
1930
|
}
|
|
2199
|
-
// Interactive picker
|
|
2200
1931
|
if (!isInteractiveTerminal()) {
|
|
2201
1932
|
requireInteractiveSelection('device allowlist', ['agents routines devices <name> --set a,b', 'agents routines devices <name> --clear']);
|
|
2202
1933
|
}
|
|
@@ -2227,16 +1958,11 @@ export function registerRoutinesCommands(program) {
|
|
|
2227
1958
|
throw err;
|
|
2228
1959
|
}
|
|
2229
1960
|
});
|
|
2230
|
-
// Scheduler lifecycle — usually auto-managed by `routines add`, exposed here for manual control.
|
|
2231
1961
|
routinesCmd
|
|
2232
1962
|
.command('start')
|
|
2233
1963
|
.description('Enable and reload the scheduler service. Usually unnecessary — it auto-starts when you add your first routine.')
|
|
2234
1964
|
.action(() => {
|
|
2235
1965
|
try {
|
|
2236
|
-
// A manual start on a disabled device refuses with the same message the
|
|
2237
|
-
// auto-start surfaces give — `agents routines start` is a convenience
|
|
2238
|
-
// wrapper around the daemon, not the deliberate override. Use
|
|
2239
|
-
// `agents daemon start` to bypass daemon.enabled explicitly.
|
|
2240
1966
|
assertDaemonEnabled();
|
|
2241
1967
|
assertSchedulerEnabled();
|
|
2242
1968
|
}
|
|
@@ -2250,8 +1976,6 @@ export function registerRoutinesCommands(program) {
|
|
|
2250
1976
|
result = startDaemon();
|
|
2251
1977
|
}
|
|
2252
1978
|
catch (err) {
|
|
2253
|
-
// The redirected-HOME refusal (W4) is user-actionable — print it
|
|
2254
|
-
// without a stack, same as the asserts above.
|
|
2255
1979
|
if (err instanceof RedirectedHomeDaemonError) {
|
|
2256
1980
|
console.error(chalk.red(err.message));
|
|
2257
1981
|
process.exit(1);
|
|
@@ -2259,9 +1983,6 @@ export function registerRoutinesCommands(program) {
|
|
|
2259
1983
|
throw err;
|
|
2260
1984
|
}
|
|
2261
1985
|
if (result.method === 'already-running') {
|
|
2262
|
-
// Signal a reload even here: if the daemon booted while this device had
|
|
2263
|
-
// scheduler.enabled=false, the reload re-evaluates the gate and boots
|
|
2264
|
-
// the scheduler — a manual start heals a scheduler-less daemon.
|
|
2265
1986
|
const reloaded = signalDaemonReload();
|
|
2266
1987
|
console.log(reloaded
|
|
2267
1988
|
? chalk.yellow(`Scheduler service enabled (shared daemon PID: ${result.pid}) — reloaded`)
|
|
@@ -2296,15 +2017,11 @@ export function registerRoutinesCommands(program) {
|
|
|
2296
2017
|
try {
|
|
2297
2018
|
monitorRunningJobs();
|
|
2298
2019
|
}
|
|
2299
|
-
catch {
|
|
2020
|
+
catch { }
|
|
2300
2021
|
const status = getDaemonStatus();
|
|
2301
2022
|
const schedulerServiceEnabled = isDaemonServiceEnabled('scheduler');
|
|
2302
2023
|
const schedulerDeviceEnabled = isSchedulerEnabled();
|
|
2303
2024
|
const schedulerState = schedulerServiceEnabled && schedulerDeviceEnabled ? status.state : 'stopped';
|
|
2304
|
-
// The daemon-owned status surface (PHNX-3215): scheduler truth plus, per
|
|
2305
|
-
// routine, its single owner device, last fire outcome + error, and any
|
|
2306
|
-
// in-flight spawn — the fields `list --json` (definition-shaped) does not
|
|
2307
|
-
// carry. Emitted from THIS device, so per-device fields read as this box's.
|
|
2308
2025
|
if (options.json) {
|
|
2309
2026
|
const rows = buildRoutineStatusRows();
|
|
2310
2027
|
writeJson({
|
|
@@ -2426,8 +2143,6 @@ export function registerRoutinesCommands(program) {
|
|
|
2426
2143
|
console.log(chalk.gray('No scheduler logs'));
|
|
2427
2144
|
}
|
|
2428
2145
|
});
|
|
2429
|
-
// Every direct routines subcommand accepts the shared --device family so remote
|
|
2430
|
-
// fall-through works and each subcommand's --help documents the flags.
|
|
2431
2146
|
for (const sub of routinesCmd.commands) {
|
|
2432
2147
|
addHostOption(sub);
|
|
2433
2148
|
}
|