@phnx-labs/agents-cli 1.22.119 → 1.22.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +236 -0
- package/README.md +19 -2
- package/dist/bootstrap.d.ts +0 -15
- package/dist/bootstrap.js +10 -409
- package/dist/cli/command-registry.d.ts +0 -58
- package/dist/cli/command-registry.js +2 -74
- package/dist/commands/accounts.d.ts +0 -17
- package/dist/commands/accounts.js +1 -52
- package/dist/commands/alias.d.ts +0 -12
- package/dist/commands/alias.js +0 -6
- package/dist/commands/apply.d.ts +0 -15
- package/dist/commands/apply.js +0 -63
- package/dist/commands/audit.d.ts +0 -12
- package/dist/commands/audit.js +0 -13
- package/dist/commands/auth.js +4 -12
- package/dist/commands/beta.d.ts +0 -6
- package/dist/commands/beta.js +2 -6
- package/dist/commands/browser-sessions-picker.d.ts +0 -8
- package/dist/commands/browser-sessions-picker.js +0 -26
- package/dist/commands/browser.d.ts +0 -57
- package/dist/commands/browser.js +0 -80
- package/dist/commands/budget.d.ts +0 -13
- package/dist/commands/budget.js +0 -2
- package/dist/commands/cli.d.ts +0 -12
- package/dist/commands/cli.js +0 -4
- package/dist/commands/cloud.d.ts +0 -9
- package/dist/commands/cloud.js +0 -43
- package/dist/commands/commands.d.ts +0 -9
- package/dist/commands/commands.js +0 -18
- package/dist/commands/computer-sessions-picker.d.ts +0 -11
- package/dist/commands/computer-sessions-picker.js +0 -29
- package/dist/commands/computer.d.ts +0 -62
- package/dist/commands/computer.js +3 -114
- package/dist/commands/config.d.ts +0 -14
- package/dist/commands/config.js +21 -60
- package/dist/commands/cost.d.ts +0 -11
- package/dist/commands/cost.js +1 -17
- package/dist/commands/daemon-test-harness.d.ts +0 -32
- package/dist/commands/daemon-test-harness.js +1 -36
- package/dist/commands/daemon.d.ts +0 -46
- package/dist/commands/daemon.js +8 -255
- package/dist/commands/detach-core.d.ts +0 -28
- package/dist/commands/detach-core.js +0 -30
- package/dist/commands/detach.d.ts +1 -12
- package/dist/commands/detach.js +16 -52
- package/dist/commands/device-config-test-harness.js +0 -12
- package/dist/commands/doctor.d.ts +0 -103
- package/dist/commands/doctor.js +3 -279
- package/dist/commands/events.d.ts +0 -29
- package/dist/commands/events.js +1 -55
- package/dist/commands/exec.d.ts +0 -163
- package/dist/commands/exec.js +15 -964
- package/dist/commands/factory.d.ts +0 -6
- package/dist/commands/factory.js +0 -2
- package/dist/commands/feed-watch.js +0 -20
- package/dist/commands/feed.d.ts +0 -38
- package/dist/commands/feed.js +1 -151
- package/dist/commands/feedback.d.ts +0 -5
- package/dist/commands/feedback.js +0 -5
- package/dist/commands/fleet-capture.d.ts +0 -12
- package/dist/commands/fleet-capture.js +1 -39
- package/dist/commands/focus.d.ts +6 -94
- package/dist/commands/focus.js +13 -183
- package/dist/commands/fork.d.ts +0 -21
- package/dist/commands/fork.js +0 -45
- package/dist/commands/funnel.d.ts +0 -3
- package/dist/commands/go.d.ts +2 -71
- package/dist/commands/go.js +5 -99
- package/dist/commands/harness-hooks.d.ts +0 -41
- package/dist/commands/harness-hooks.js +0 -48
- package/dist/commands/harness-wizard.d.ts +0 -137
- package/dist/commands/harness-wizard.js +0 -109
- package/dist/commands/harness.d.ts +0 -63
- package/dist/commands/harness.js +0 -103
- package/dist/commands/hooks.d.ts +0 -9
- package/dist/commands/hooks.js +0 -26
- package/dist/commands/humans.d.ts +0 -8
- package/dist/commands/humans.js +0 -8
- package/dist/commands/import.d.ts +0 -22
- package/dist/commands/import.js +0 -79
- package/dist/commands/insights.d.ts +0 -37
- package/dist/commands/insights.js +3 -115
- package/dist/commands/inspect.d.ts +0 -117
- package/dist/commands/inspect.js +2 -448
- package/dist/commands/lease.d.ts +0 -28
- package/dist/commands/lease.js +0 -43
- package/dist/commands/logs.d.ts +0 -23
- package/dist/commands/logs.js +0 -30
- package/dist/commands/mailboxes.d.ts +0 -18
- package/dist/commands/mailboxes.js +0 -29
- package/dist/commands/mcp.d.ts +0 -9
- package/dist/commands/mcp.js +0 -53
- package/dist/commands/memory.d.ts +0 -7
- package/dist/commands/memory.js +0 -7
- package/dist/commands/menubar.d.ts +0 -8
- package/dist/commands/menubar.js +0 -24
- package/dist/commands/message.d.ts +0 -23
- package/dist/commands/message.js +0 -50
- package/dist/commands/mine.d.ts +0 -22
- package/dist/commands/mine.js +0 -21
- package/dist/commands/models.d.ts +0 -8
- package/dist/commands/models.js +0 -33
- package/dist/commands/modes.d.ts +0 -10
- package/dist/commands/modes.js +0 -13
- package/dist/commands/monitors.d.ts +0 -9
- package/dist/commands/monitors.js +3 -160
- package/dist/commands/open.d.ts +0 -26
- package/dist/commands/open.js +0 -10
- package/dist/commands/output.d.ts +0 -18
- package/dist/commands/output.js +1 -34
- package/dist/commands/packages-materialize.d.ts +0 -11
- package/dist/commands/packages-materialize.js +0 -3
- package/dist/commands/packages.d.ts +0 -10
- package/dist/commands/packages.js +0 -50
- package/dist/commands/perf.d.ts +0 -41
- package/dist/commands/perf.js +0 -55
- package/dist/commands/permissions.d.ts +0 -9
- package/dist/commands/permissions.js +0 -43
- package/dist/commands/plugins.d.ts +0 -14
- package/dist/commands/plugins.js +2 -55
- package/dist/commands/profiles.d.ts +0 -25
- package/dist/commands/profiles.js +0 -27
- package/dist/commands/projects-todo.d.ts +2 -0
- package/dist/commands/projects-todo.js +132 -0
- package/dist/commands/projects.d.ts +0 -85
- package/dist/commands/projects.js +344 -291
- package/dist/commands/prune.js +0 -30
- package/dist/commands/ps-roster.d.ts +92 -0
- package/dist/commands/ps-roster.js +744 -0
- package/dist/commands/ps.d.ts +6 -0
- package/dist/commands/ps.js +98 -0
- package/dist/commands/refresh-rules.d.ts +0 -13
- package/dist/commands/refresh-rules.js +0 -14
- package/dist/commands/reminders.d.ts +0 -7
- package/dist/commands/repo.d.ts +0 -89
- package/dist/commands/repo.js +7 -205
- package/dist/commands/resource-view.d.ts +0 -33
- package/dist/commands/resource-view.js +0 -49
- package/dist/commands/resume.d.ts +1 -19
- package/dist/commands/resume.js +0 -50
- package/dist/commands/route.d.ts +0 -10
- package/dist/commands/route.js +0 -19
- package/dist/commands/routines.d.ts +0 -42
- package/dist/commands/routines.js +5 -290
- package/dist/commands/routines.test-fixture.d.ts +0 -34
- package/dist/commands/routines.test-fixture.js +4 -100
- package/dist/commands/rules.d.ts +0 -9
- package/dist/commands/rules.js +1 -6
- package/dist/commands/run-account-picker.d.ts +0 -59
- package/dist/commands/run-account-picker.js +0 -71
- package/dist/commands/run-broadcast.d.ts +0 -9
- package/dist/commands/run-broadcast.js +0 -7
- package/dist/commands/run-cloud.d.ts +0 -15
- package/dist/commands/run-cloud.js +0 -37
- package/dist/commands/run-device-picker.d.ts +0 -25
- package/dist/commands/run-device-picker.js +1 -53
- package/dist/commands/secrets-passthrough.d.ts +0 -31
- package/dist/commands/secrets-passthrough.js +0 -10
- package/dist/commands/send.d.ts +0 -20
- package/dist/commands/send.js +14 -18
- package/dist/commands/sessions-backfill.d.ts +0 -7
- package/dist/commands/sessions-backfill.js +1 -16
- package/dist/commands/sessions-backup-setup.js +0 -11
- package/dist/commands/sessions-bookmark.d.ts +0 -8
- package/dist/commands/sessions-bookmark.js +0 -28
- package/dist/commands/sessions-browser.d.ts +2 -117
- package/dist/commands/sessions-browser.js +5 -243
- package/dist/commands/sessions-export.d.ts +1 -26
- package/dist/commands/sessions-export.js +3 -81
- package/dist/commands/sessions-import.d.ts +0 -14
- package/dist/commands/sessions-import.js +0 -59
- package/dist/commands/sessions-inject.d.ts +0 -60
- package/dist/commands/sessions-inject.js +3 -96
- package/dist/commands/sessions-migrate.d.ts +2 -37
- package/dist/commands/sessions-migrate.js +7 -159
- package/dist/commands/sessions-optimize.d.ts +0 -12
- package/dist/commands/sessions-picker-factory.d.ts +0 -7
- package/dist/commands/sessions-picker-factory.js +0 -8
- package/dist/commands/sessions-picker.d.ts +4 -103
- package/dist/commands/sessions-picker.js +13 -352
- package/dist/commands/sessions-render.d.ts +1 -2
- package/dist/commands/sessions-render.js +3 -7
- package/dist/commands/sessions-resume.d.ts +1 -24
- package/dist/commands/sessions-resume.js +2 -65
- package/dist/commands/sessions-share.d.ts +1 -9
- package/dist/commands/sessions-share.js +1 -45
- package/dist/commands/sessions-stats.d.ts +0 -24
- package/dist/commands/sessions-stats.js +0 -49
- package/dist/commands/sessions-stop.d.ts +1 -20
- package/dist/commands/sessions-stop.js +4 -9
- package/dist/commands/sessions-tail.d.ts +1 -19
- package/dist/commands/sessions-tail.js +3 -36
- package/dist/commands/sessions-trace.d.ts +5 -36
- package/dist/commands/sessions-trace.js +7 -82
- package/dist/commands/sessions.d.ts +1 -666
- package/dist/commands/sessions.js +30 -2279
- package/dist/commands/sessions.test-fixture.d.ts +0 -9
- package/dist/commands/sessions.test-fixture.js +8 -23
- package/dist/commands/setup-accounts.d.ts +0 -6
- package/dist/commands/setup-browser.d.ts +0 -23
- package/dist/commands/setup-browser.js +0 -28
- package/dist/commands/setup-computer.d.ts +0 -16
- package/dist/commands/setup-computer.js +0 -28
- package/dist/commands/setup-fleet.d.ts +0 -8
- package/dist/commands/setup-fleet.js +0 -11
- package/dist/commands/setup-mine.d.ts +0 -14
- package/dist/commands/setup-mine.js +0 -25
- package/dist/commands/setup-preferences.d.ts +0 -47
- package/dist/commands/setup-preferences.js +0 -53
- package/dist/commands/setup-secrets.d.ts +2 -24
- package/dist/commands/setup-secrets.js +0 -24
- package/dist/commands/setup-term.d.ts +0 -21
- package/dist/commands/setup-term.js +0 -21
- package/dist/commands/setup-terminal.d.ts +0 -1
- package/dist/commands/setup-terminal.js +0 -1
- package/dist/commands/setup-tools.d.ts +2 -0
- package/dist/commands/setup-tools.js +73 -0
- package/dist/commands/setup.d.ts +0 -20
- package/dist/commands/setup.js +4 -57
- package/dist/commands/skills.d.ts +0 -9
- package/dist/commands/skills.js +1 -22
- package/dist/commands/snapshot.d.ts +0 -9
- package/dist/commands/snapshot.js +0 -10
- package/dist/commands/ssh.d.ts +0 -64
- package/dist/commands/ssh.js +9 -420
- package/dist/commands/status.d.ts +0 -12
- package/dist/commands/status.js +0 -26
- package/dist/commands/subagents.d.ts +0 -8
- package/dist/commands/subagents.js +0 -31
- package/dist/commands/sync.d.ts +0 -37
- package/dist/commands/sync.js +0 -256
- package/dist/commands/teams-picker.d.ts +0 -3
- package/dist/commands/teams-picker.js +0 -34
- package/dist/commands/teams.d.ts +1 -76
- package/dist/commands/teams.js +9 -477
- package/dist/commands/tmux.d.ts +0 -25
- package/dist/commands/tmux.js +0 -46
- package/dist/commands/traces.js +0 -19
- package/dist/commands/trash.d.ts +0 -17
- package/dist/commands/trash.js +1 -11
- package/dist/commands/uninstall.d.ts +0 -9
- package/dist/commands/uninstall.js +0 -6
- package/dist/commands/update.d.ts +0 -22
- package/dist/commands/update.js +0 -44
- package/dist/commands/upgrade.d.ts +0 -1
- package/dist/commands/upgrade.js +0 -1
- package/dist/commands/utils.d.ts +0 -85
- package/dist/commands/utils.js +1 -95
- package/dist/commands/versions.d.ts +0 -16
- package/dist/commands/versions.js +0 -134
- package/dist/commands/view.d.ts +0 -90
- package/dist/commands/view.js +4 -343
- package/dist/commands/watchdog.d.ts +0 -19
- package/dist/commands/watchdog.js +3 -43
- package/dist/commands/webhook.d.ts +0 -8
- package/dist/commands/webhook.js +0 -14
- package/dist/commands/workflows.d.ts +0 -8
- package/dist/commands/workflows.js +0 -6
- package/dist/index.d.ts +0 -25
- package/dist/index.js +5 -119
- package/dist/lib/account-capabilities.d.ts +0 -34
- package/dist/lib/account-capabilities.js +0 -32
- package/dist/lib/account-catalog.d.ts +0 -128
- package/dist/lib/account-catalog.js +8 -154
- package/dist/lib/account-provider-registry.d.ts +0 -14
- package/dist/lib/account-provider-registry.js +0 -8
- package/dist/lib/account-registry.d.ts +0 -74
- package/dist/lib/account-registry.js +14 -189
- package/dist/lib/account-schema.d.ts +0 -19
- package/dist/lib/account-schema.js +0 -43
- package/dist/lib/accounting/account-launch.d.ts +0 -15
- package/dist/lib/accounting/account-launch.js +1 -3
- package/dist/lib/accounting/account-pool-collect.d.ts +0 -26
- package/dist/lib/accounting/account-pool-collect.js +0 -42
- package/dist/lib/accounting/account-pool.d.ts +0 -41
- package/dist/lib/accounting/account-pool.js +0 -17
- package/dist/lib/accounting/capacity.d.ts +0 -32
- package/dist/lib/accounting/capacity.js +0 -32
- package/dist/lib/accounting/rotate.d.ts +0 -518
- package/dist/lib/accounting/rotate.js +4 -598
- package/dist/lib/accounting/usage-ingest.d.ts +0 -1
- package/dist/lib/accounting/usage-ingest.js +0 -44
- package/dist/lib/accounting/usage-sync.d.ts +0 -60
- package/dist/lib/accounting/usage-sync.js +4 -51
- package/dist/lib/accounting/usage.d.ts +0 -632
- package/dist/lib/accounting/usage.js +14 -1055
- package/dist/lib/accounts/add.d.ts +0 -60
- package/dist/lib/accounts/add.js +0 -127
- package/dist/lib/accounts/auth-operation-lock.d.ts +0 -1
- package/dist/lib/accounts/auth-operation-lock.js +0 -4
- package/dist/lib/accounts/migrate.d.ts +0 -9
- package/dist/lib/accounts/migrate.js +3 -42
- package/dist/lib/accounts/slots.d.ts +0 -25
- package/dist/lib/accounts/slots.js +1 -49
- package/dist/lib/acp/client.d.ts +0 -16
- package/dist/lib/acp/client.js +0 -29
- package/dist/lib/acp/harnesses.d.ts +0 -15
- package/dist/lib/acp/harnesses.js +0 -16
- package/dist/lib/acp/run.d.ts +0 -8
- package/dist/lib/acp/run.js +0 -8
- package/dist/lib/actor.d.ts +1 -71
- package/dist/lib/actor.js +1 -99
- package/dist/lib/add-dir.d.ts +0 -46
- package/dist/lib/add-dir.js +1 -70
- package/dist/lib/address.d.ts +0 -17
- package/dist/lib/address.js +0 -15
- package/dist/lib/agent-cli-commands.d.ts +0 -10
- package/dist/lib/agent-cli-commands.js +0 -10
- package/dist/lib/agent-modes.d.ts +0 -29
- package/dist/lib/agent-modes.js +0 -31
- package/dist/lib/agent-spec/agents.d.ts +0 -426
- package/dist/lib/agent-spec/agents.js +37 -924
- package/dist/lib/agent-spec/index.d.ts +0 -5
- package/dist/lib/agent-spec/index.js +0 -14
- package/dist/lib/agent-spec/materialize.d.ts +0 -10
- package/dist/lib/agent-spec/materialize.js +2 -139
- package/dist/lib/agent-spec/package-resolve.d.ts +0 -8
- package/dist/lib/agent-spec/package-resolve.js +1 -44
- package/dist/lib/agent-spec/package-schema.d.ts +0 -2
- package/dist/lib/agent-spec/package-schema.js +0 -11
- package/dist/lib/agent-spec/package-types.d.ts +0 -27
- package/dist/lib/agent-spec/package-types.js +0 -1
- package/dist/lib/agent-spec/primitives.d.ts +0 -18
- package/dist/lib/agent-spec/primitives.js +0 -27
- package/dist/lib/agent-spec/provider.js +0 -2
- package/dist/lib/agent-spec/resolve.d.ts +0 -23
- package/dist/lib/agent-spec/resolve.js +0 -41
- package/dist/lib/agent-spec/types.d.ts +0 -34
- package/dist/lib/agent-spec/types.js +0 -6
- package/dist/lib/agents.d.ts +0 -1
- package/dist/lib/agents.js +0 -1
- package/dist/lib/analytics/mix-commands.d.ts +0 -23
- package/dist/lib/analytics/mix-commands.js +0 -26
- package/dist/lib/analytics/recipes.d.ts +0 -1
- package/dist/lib/analytics/recipes.js +5 -10
- package/dist/lib/analytics/usage-db.js +4 -6
- package/dist/lib/answer-router.d.ts +0 -61
- package/dist/lib/answer-router.js +0 -57
- package/dist/lib/app-bundle-install.d.ts +0 -13
- package/dist/lib/app-bundle-install.js +0 -50
- package/dist/lib/artifact-actions.d.ts +0 -15
- package/dist/lib/artifact-actions.js +0 -18
- package/dist/lib/artifacts-client.d.ts +0 -10
- package/dist/lib/artifacts-client.js +0 -17
- package/dist/lib/ask-classifier.d.ts +0 -38
- package/dist/lib/ask-classifier.js +0 -27
- package/dist/lib/audit/log.d.ts +0 -47
- package/dist/lib/audit/log.js +1 -59
- package/dist/lib/auth-health.d.ts +0 -213
- package/dist/lib/auth-health.js +16 -266
- package/dist/lib/auth-mint.d.ts +0 -83
- package/dist/lib/auth-mint.js +8 -85
- package/dist/lib/auto-pull-worker.d.ts +0 -10
- package/dist/lib/auto-pull-worker.js +3 -48
- package/dist/lib/auto-pull.d.ts +0 -64
- package/dist/lib/auto-pull.js +0 -79
- package/dist/lib/beta.d.ts +0 -9
- package/dist/lib/beta.js +0 -9
- package/dist/lib/binary-shadow.d.ts +0 -22
- package/dist/lib/binary-shadow.js +4 -34
- package/dist/lib/boot-profile.d.ts +0 -10
- package/dist/lib/boot-profile.js +1 -31
- package/dist/lib/brand.d.ts +0 -20
- package/dist/lib/brand.js +0 -50
- package/dist/lib/browser/context.d.ts +0 -54
- package/dist/lib/browser/context.js +0 -49
- package/dist/lib/browser/paths.d.ts +0 -21
- package/dist/lib/browser/paths.js +0 -26
- package/dist/lib/browser/record.d.ts +0 -34
- package/dist/lib/browser/record.js +0 -38
- package/dist/lib/browser/sessions-list.d.ts +1 -79
- package/dist/lib/browser/sessions-list.js +2 -98
- package/dist/lib/browser-client.d.ts +0 -112
- package/dist/lib/browser-client.js +1 -90
- package/dist/lib/budget/config.d.ts +0 -6
- package/dist/lib/budget/config.js +0 -29
- package/dist/lib/budget/enforce.d.ts +0 -50
- package/dist/lib/budget/enforce.js +0 -27
- package/dist/lib/budget/ledger.d.ts +0 -23
- package/dist/lib/budget/ledger.js +0 -28
- package/dist/lib/budget/live-cloud.d.ts +0 -26
- package/dist/lib/budget/live-cloud.js +0 -12
- package/dist/lib/budget/live-team.d.ts +0 -17
- package/dist/lib/budget/live-team.js +1 -35
- package/dist/lib/budget/preflight.d.ts +0 -51
- package/dist/lib/budget/preflight.js +0 -36
- package/dist/lib/byok-usage.d.ts +0 -20
- package/dist/lib/byok-usage.js +1 -24
- package/dist/lib/capabilities.d.ts +0 -24
- package/dist/lib/capabilities.js +0 -29
- package/dist/lib/catchup.d.ts +0 -87
- package/dist/lib/catchup.js +1 -81
- package/dist/lib/channels/owner-forward.d.ts +0 -70
- package/dist/lib/channels/owner-forward.js +1 -43
- package/dist/lib/channels/owner-sink.js +0 -21
- package/dist/lib/channels/providers/desktop.d.ts +0 -37
- package/dist/lib/channels/providers/desktop.js +0 -72
- package/dist/lib/channels/providers/index.d.ts +0 -1
- package/dist/lib/channels/providers/index.js +2 -6
- package/dist/lib/channels/providers/mailbox.js +0 -7
- package/dist/lib/channels/providers/openclaw-telegram.js +0 -8
- package/dist/lib/channels/providers/rush.d.ts +0 -2
- package/dist/lib/channels/providers/rush.js +0 -26
- package/dist/lib/channels/providers/session.d.ts +2 -0
- package/dist/lib/channels/providers/session.js +26 -0
- package/dist/lib/channels/registry.d.ts +0 -27
- package/dist/lib/channels/registry.js +0 -10
- package/dist/lib/channels/resolve.d.ts +0 -19
- package/dist/lib/channels/resolve.js +0 -2
- package/dist/lib/channels/send.d.ts +0 -50
- package/dist/lib/channels/send.js +0 -25
- package/dist/lib/checkpoint.d.ts +0 -36
- package/dist/lib/checkpoint.js +0 -28
- package/dist/lib/claude-account-token.d.ts +0 -98
- package/dist/lib/claude-account-token.js +7 -169
- package/dist/lib/claude-statusline.d.ts +0 -41
- package/dist/lib/claude-statusline.js +0 -68
- package/dist/lib/cli-entry.d.ts +0 -26
- package/dist/lib/cli-entry.js +1 -61
- package/dist/lib/cli-resources.d.ts +31 -89
- package/dist/lib/cli-resources.js +116 -152
- package/dist/lib/cloud/antigravity.d.ts +0 -29
- package/dist/lib/cloud/antigravity.js +0 -36
- package/dist/lib/cloud/codex.d.ts +0 -8
- package/dist/lib/cloud/codex.js +0 -41
- package/dist/lib/cloud/cursor.d.ts +0 -5
- package/dist/lib/cloud/cursor.js +2 -7
- package/dist/lib/cloud/dispatch.d.ts +0 -13
- package/dist/lib/cloud/dispatch.js +1 -48
- package/dist/lib/cloud/factory.d.ts +0 -52
- package/dist/lib/cloud/factory.js +3 -67
- package/dist/lib/cloud/host.d.ts +0 -39
- package/dist/lib/cloud/host.js +5 -48
- package/dist/lib/cloud/registry.d.ts +0 -25
- package/dist/lib/cloud/registry.js +0 -29
- package/dist/lib/cloud/rush.d.ts +0 -47
- package/dist/lib/cloud/rush.js +1 -82
- package/dist/lib/cloud/session-index.d.ts +0 -27
- package/dist/lib/cloud/session-index.js +1 -32
- package/dist/lib/cloud/store.d.ts +0 -18
- package/dist/lib/cloud/store.js +0 -28
- package/dist/lib/cloud/stream.d.ts +0 -14
- package/dist/lib/cloud/stream.js +0 -25
- package/dist/lib/cloud/types.d.ts +0 -168
- package/dist/lib/cloud/types.js +0 -46
- package/dist/lib/cloudflare/creds.d.ts +0 -2
- package/dist/lib/cloudflare/creds.js +0 -14
- package/dist/lib/cloudflare/provision.d.ts +0 -8
- package/dist/lib/cloudflare/provision.js +1 -19
- package/dist/lib/codex-home.d.ts +0 -60
- package/dist/lib/codex-home.js +2 -72
- package/dist/lib/codex-policy.d.ts +0 -10
- package/dist/lib/codex-policy.js +0 -13
- package/dist/lib/command-skills.d.ts +0 -10
- package/dist/lib/command-skills.js +0 -10
- package/dist/lib/commands.d.ts +0 -74
- package/dist/lib/commands.js +0 -112
- package/dist/lib/comms-render.d.ts +0 -5
- package/dist/lib/comms-render.js +0 -5
- package/dist/lib/computer/context.d.ts +0 -23
- package/dist/lib/computer/context.js +0 -14
- package/dist/lib/computer/policy.d.ts +0 -20
- package/dist/lib/computer/policy.js +0 -53
- package/dist/lib/computer/record.d.ts +0 -33
- package/dist/lib/computer/record.js +1 -48
- package/dist/lib/computer/sessions-list.d.ts +1 -128
- package/dist/lib/computer/sessions-list.js +6 -165
- package/dist/lib/computer-client.d.ts +0 -106
- package/dist/lib/computer-client.js +5 -86
- package/dist/lib/concurrency.d.ts +0 -14
- package/dist/lib/concurrency.js +0 -3
- package/dist/lib/config-drift.d.ts +0 -31
- package/dist/lib/config-drift.js +0 -32
- package/dist/lib/config-keys.d.ts +1 -65
- package/dist/lib/config-keys.js +6 -52
- package/dist/lib/config-transfer.d.ts +0 -14
- package/dist/lib/config-transfer.js +0 -26
- package/dist/lib/convert.d.ts +0 -17
- package/dist/lib/convert.js +0 -18
- package/dist/lib/crabbox/cli.d.ts +0 -156
- package/dist/lib/crabbox/cli.js +1 -188
- package/dist/lib/crabbox/config.d.ts +0 -18
- package/dist/lib/crabbox/config.js +1 -19
- package/dist/lib/crabbox/lease.d.ts +0 -93
- package/dist/lib/crabbox/lease.js +4 -148
- package/dist/lib/crabbox/progress.d.ts +0 -56
- package/dist/lib/crabbox/progress.js +2 -49
- package/dist/lib/crabbox/runtimes.d.ts +0 -94
- package/dist/lib/crabbox/runtimes.js +1 -111
- package/dist/lib/crabbox/setup-copy.d.ts +0 -64
- package/dist/lib/crabbox/setup-copy.js +1 -53
- package/dist/lib/daemon/account-state-daemon-service.d.ts +0 -48
- package/dist/lib/daemon/account-state-daemon-service.js +2 -63
- package/dist/lib/daemon/attention-notify-service.d.ts +0 -12
- package/dist/lib/daemon/attention-notify-service.js +1 -24
- package/dist/lib/daemon/auth-sync-service.d.ts +0 -28
- package/dist/lib/daemon/auth-sync-service.js +0 -56
- package/dist/lib/daemon/catchup-service.d.ts +0 -34
- package/dist/lib/daemon/catchup-service.js +0 -30
- package/dist/lib/daemon/daemon.d.ts +0 -374
- package/dist/lib/daemon/daemon.js +44 -1049
- package/dist/lib/daemon/daemon.test-fixture.d.ts +0 -19
- package/dist/lib/daemon/daemon.test-fixture.js +1 -24
- package/dist/lib/daemon/device-probe-service.d.ts +0 -16
- package/dist/lib/daemon/device-probe-service.js +0 -20
- package/dist/lib/daemon/feed-stream-service.d.ts +0 -15
- package/dist/lib/daemon/feed-stream-service.js +0 -20
- package/dist/lib/daemon/harness-update-service.d.ts +2 -61
- package/dist/lib/daemon/harness-update-service.js +6 -86
- package/dist/lib/daemon/heartbeat-service.d.ts +0 -1
- package/dist/lib/daemon/heartbeat-service.js +0 -1
- package/dist/lib/daemon/leaked-daemons.d.ts +0 -46
- package/dist/lib/daemon/leaked-daemons.js +2 -78
- package/dist/lib/daemon/monitor-engine-service.d.ts +0 -13
- package/dist/lib/daemon/monitor-engine-service.js +3 -15
- package/dist/lib/daemon/runner.d.ts +0 -194
- package/dist/lib/daemon/runner.js +39 -760
- package/dist/lib/daemon/self-heal-service.d.ts +18 -17
- package/dist/lib/daemon/self-heal-service.js +83 -37
- package/dist/lib/daemon/self-update-service.d.ts +1 -131
- package/dist/lib/daemon/self-update-service.js +26 -189
- package/dist/lib/daemon/service.d.ts +0 -73
- package/dist/lib/daemon/service.js +0 -34
- package/dist/lib/daemon/session-index-service.d.ts +0 -12
- package/dist/lib/daemon/session-index-service.js +0 -23
- package/dist/lib/daemon/session-state-service.d.ts +0 -8
- package/dist/lib/daemon/session-state-service.js +0 -8
- package/dist/lib/daemon/session-summarizer-service.d.ts +0 -14
- package/dist/lib/daemon/session-summarizer-service.js +1 -19
- package/dist/lib/daemon/session-title-service.d.ts +0 -25
- package/dist/lib/daemon/session-title-service.js +0 -32
- package/dist/lib/daemon/state-dir-check-service.d.ts +0 -24
- package/dist/lib/daemon/state-dir-check-service.js +0 -29
- package/dist/lib/daemon/supervisor.d.ts +0 -112
- package/dist/lib/daemon/supervisor.js +4 -147
- package/dist/lib/daemon/testdata/process-view-daemon.js +0 -2
- package/dist/lib/daemon/testdata/process-view-start.js +0 -5
- package/dist/lib/daemon/tmux-reap-service.d.ts +0 -1
- package/dist/lib/daemon/tmux-reap-service.js +0 -1
- package/dist/lib/daemon/usage-sync-service.d.ts +0 -23
- package/dist/lib/daemon/usage-sync-service.js +0 -26
- package/dist/lib/daemon/watchdog-service.d.ts +0 -9
- package/dist/lib/daemon/watchdog-service.js +0 -13
- package/dist/lib/daemon/webhook-receiver-service.d.ts +0 -1
- package/dist/lib/daemon/webhook-receiver-service.js +0 -1
- package/dist/lib/daemon-health.d.ts +0 -55
- package/dist/lib/daemon-health.js +4 -77
- package/dist/lib/daemon-services.d.ts +0 -36
- package/dist/lib/daemon-services.js +0 -45
- package/dist/lib/daemon-ticks.d.ts +0 -126
- package/dist/lib/daemon-ticks.js +1 -156
- package/dist/lib/daemon-webhooks.d.ts +0 -57
- package/dist/lib/daemon-webhooks.js +2 -54
- package/dist/lib/deeplink/register.d.ts +0 -15
- package/dist/lib/deeplink/register.js +0 -60
- package/dist/lib/deeplink/url.d.ts +0 -24
- package/dist/lib/deeplink/url.js +1 -33
- package/dist/lib/device-config.d.ts +1 -192
- package/dist/lib/device-config.js +86 -240
- package/dist/lib/devices/config-migration.d.ts +0 -43
- package/dist/lib/devices/config-migration.js +7 -127
- package/dist/lib/devices/connect.d.ts +0 -168
- package/dist/lib/devices/connect.js +6 -254
- package/dist/lib/devices/device-docs.d.ts +0 -24
- package/dist/lib/devices/device-docs.js +0 -46
- package/dist/lib/devices/discovery-policy.d.ts +0 -30
- package/dist/lib/devices/discovery-policy.js +3 -34
- package/dist/lib/devices/doctor-findings.d.ts +0 -109
- package/dist/lib/devices/doctor-findings.js +30 -326
- package/dist/lib/devices/doctor-overview-cache.d.ts +0 -33
- package/dist/lib/devices/doctor-overview-cache.js +0 -81
- package/dist/lib/devices/fleet-divergence.d.ts +0 -89
- package/dist/lib/devices/fleet-divergence.js +1 -60
- package/dist/lib/devices/fleet-inventory.d.ts +0 -27
- package/dist/lib/devices/fleet-inventory.js +0 -38
- package/dist/lib/devices/fleet.d.ts +0 -95
- package/dist/lib/devices/fleet.js +0 -79
- package/dist/lib/devices/harness-inventory.d.ts +0 -75
- package/dist/lib/devices/harness-inventory.js +0 -101
- package/dist/lib/devices/health-report.d.ts +0 -37
- package/dist/lib/devices/health-report.js +0 -73
- package/dist/lib/devices/health.d.ts +0 -71
- package/dist/lib/devices/health.js +2 -82
- package/dist/lib/devices/interactive-host.d.ts +0 -10
- package/dist/lib/devices/interactive-host.js +0 -34
- package/dist/lib/devices/known-hosts.d.ts +0 -45
- package/dist/lib/devices/known-hosts.js +0 -77
- package/dist/lib/devices/pending.d.ts +0 -31
- package/dist/lib/devices/pending.js +7 -67
- package/dist/lib/devices/pool.d.ts +0 -36
- package/dist/lib/devices/pool.js +0 -30
- package/dist/lib/devices/reachability.d.ts +0 -25
- package/dist/lib/devices/reachability.js +0 -14
- package/dist/lib/devices/registry.d.ts +0 -141
- package/dist/lib/devices/registry.js +4 -151
- package/dist/lib/devices/resolve-profile.d.ts +0 -18
- package/dist/lib/devices/resolve-profile.js +0 -18
- package/dist/lib/devices/resolve-target.d.ts +0 -20
- package/dist/lib/devices/resolve-target.js +1 -51
- package/dist/lib/devices/rollout-verify.d.ts +1 -81
- package/dist/lib/devices/rollout-verify.js +0 -77
- package/dist/lib/devices/self-host.d.ts +0 -7
- package/dist/lib/devices/self-host.js +1 -29
- package/dist/lib/devices/ssh-config.d.ts +0 -18
- package/dist/lib/devices/ssh-config.js +0 -9
- package/dist/lib/devices/stats-cache.d.ts +0 -48
- package/dist/lib/devices/stats-cache.js +0 -80
- package/dist/lib/devices/sync.d.ts +0 -97
- package/dist/lib/devices/sync.js +0 -88
- package/dist/lib/devices/tailscale.d.ts +0 -18
- package/dist/lib/devices/tailscale.js +1 -38
- package/dist/lib/devices/terminfo.d.ts +0 -27
- package/dist/lib/devices/terminfo.js +2 -64
- package/dist/lib/devices/worker-pick.d.ts +0 -15
- package/dist/lib/devices/worker-pick.js +0 -48
- package/dist/lib/diff-text.d.ts +0 -18
- package/dist/lib/diff-text.js +0 -15
- package/dist/lib/doctor-diff.d.ts +0 -79
- package/dist/lib/doctor-diff.js +2 -181
- package/dist/lib/drift-sync.d.ts +0 -29
- package/dist/lib/drift-sync.js +0 -40
- package/dist/lib/drift.d.ts +0 -43
- package/dist/lib/drift.js +0 -31
- package/dist/lib/event-families.d.ts +0 -17
- package/dist/lib/event-families.js +0 -33
- package/dist/lib/event-provenance.d.ts +0 -4
- package/dist/lib/event-provenance.js +0 -5
- package/dist/lib/event-stream.d.ts +0 -29
- package/dist/lib/event-stream.js +0 -36
- package/dist/lib/events-ingest.d.ts +0 -27
- package/dist/lib/events-ingest.js +0 -54
- package/dist/lib/exec-account-home.d.ts +0 -24
- package/dist/lib/exec-account-home.js +0 -41
- package/dist/lib/exec-bounded.d.ts +1 -37
- package/dist/lib/exec-bounded.js +10 -46
- package/dist/lib/exec.d.ts +3 -583
- package/dist/lib/exec.js +18 -1025
- package/dist/lib/factory/snapshot.js +1 -15
- package/dist/lib/feed/activity-stream.d.ts +0 -27
- package/dist/lib/feed/activity-stream.js +4 -80
- package/dist/lib/feed/activity.d.ts +1 -243
- package/dist/lib/feed/activity.js +8 -273
- package/dist/lib/feed/answer.d.ts +0 -103
- package/dist/lib/feed/answer.js +0 -267
- package/dist/lib/feed/attention.d.ts +0 -56
- package/dist/lib/feed/attention.js +0 -161
- package/dist/lib/feed/envelope.d.ts +2 -17
- package/dist/lib/feed/envelope.js +0 -14
- package/dist/lib/feed/events.d.ts +0 -118
- package/dist/lib/feed/events.js +13 -213
- package/dist/lib/feed/feed.d.ts +1 -250
- package/dist/lib/feed/feed.js +24 -334
- package/dist/lib/feed/hub-server.d.ts +0 -100
- package/dist/lib/feed/hub-server.js +1 -191
- package/dist/lib/feed/hub.d.ts +0 -53
- package/dist/lib/feed/hub.js +0 -89
- package/dist/lib/feed/pr-status.d.ts +1 -19
- package/dist/lib/feed/pr-status.js +0 -18
- package/dist/lib/feed/tool-activity.d.ts +0 -59
- package/dist/lib/feed/tool-activity.js +1 -119
- package/dist/lib/feed/tools.d.ts +0 -100
- package/dist/lib/feed/tools.js +0 -89
- package/dist/lib/feed/watch.d.ts +0 -33
- package/dist/lib/feed/watch.js +2 -94
- package/dist/lib/feed-broadcast.d.ts +0 -148
- package/dist/lib/feed-broadcast.js +1 -283
- package/dist/lib/feed-outcome.d.ts +0 -50
- package/dist/lib/feed-outcome.js +1 -67
- package/dist/lib/feed-policy.d.ts +0 -6
- package/dist/lib/feed-policy.js +1 -27
- package/dist/lib/feed-post.d.ts +0 -61
- package/dist/lib/feed-post.js +4 -61
- package/dist/lib/feed-ranking.d.ts +1 -1
- package/dist/lib/fleet/apply.d.ts +0 -64
- package/dist/lib/fleet/apply.js +0 -125
- package/dist/lib/fleet/auth-sync.d.ts +0 -48
- package/dist/lib/fleet/auth-sync.js +4 -49
- package/dist/lib/fleet/capture.d.ts +0 -26
- package/dist/lib/fleet/capture.js +1 -36
- package/dist/lib/fleet/manifest.d.ts +0 -38
- package/dist/lib/fleet/manifest.js +0 -40
- package/dist/lib/fleet/types.d.ts +1 -138
- package/dist/lib/fleet/types.js +0 -12
- package/dist/lib/fleet-cache.d.ts +0 -12
- package/dist/lib/fleet-cache.js +0 -24
- package/dist/lib/fleet-shared-state.d.ts +6 -59
- package/dist/lib/fleet-shared-state.js +5 -51
- package/dist/lib/fleet-status.d.ts +0 -27
- package/dist/lib/fleet-status.js +0 -48
- package/dist/lib/format.d.ts +0 -74
- package/dist/lib/format.js +3 -77
- package/dist/lib/friction-heuristics.d.ts +0 -20
- package/dist/lib/friction-heuristics.js +0 -8
- package/dist/lib/fs-atomic.d.ts +0 -51
- package/dist/lib/fs-atomic.js +8 -66
- package/dist/lib/fs-walk.d.ts +0 -13
- package/dist/lib/fs-walk.js +0 -22
- package/dist/lib/fuzzy.d.ts +0 -29
- package/dist/lib/fuzzy.js +0 -31
- package/dist/lib/gemini-settings.js +0 -12
- package/dist/lib/git.d.ts +0 -366
- package/dist/lib/git.js +7 -574
- package/dist/lib/github/ci-failure.d.ts +30 -0
- package/dist/lib/github/ci-failure.js +95 -0
- package/dist/lib/github/gh-overload.d.ts +0 -38
- package/dist/lib/github/gh-overload.js +3 -55
- package/dist/lib/github/pr-mergeable.d.ts +3 -34
- package/dist/lib/github/pr-mergeable.js +2 -42
- package/dist/lib/github/pr-verdict.d.ts +0 -44
- package/dist/lib/github/pr-verdict.js +0 -36
- package/dist/lib/github/project-prs.d.ts +135 -105
- package/dist/lib/github/project-prs.js +530 -170
- package/dist/lib/github/release-drift.d.ts +45 -0
- package/dist/lib/github/release-drift.js +91 -0
- package/dist/lib/github/rest.d.ts +0 -50
- package/dist/lib/github/rest.js +0 -49
- package/dist/lib/github/viewer.d.ts +27 -0
- package/dist/lib/github/viewer.js +101 -0
- package/dist/lib/goose-commands.d.ts +0 -29
- package/dist/lib/goose-commands.js +3 -48
- package/dist/lib/harness/adapter.d.ts +0 -151
- package/dist/lib/harness/adapter.js +0 -41
- package/dist/lib/harness/adapters/claude.d.ts +0 -8
- package/dist/lib/harness/adapters/claude.js +0 -89
- package/dist/lib/harness/adapters/codex.js +0 -18
- package/dist/lib/harness/adapters/copilot.js +0 -3
- package/dist/lib/harness/adapters/cursor.js +0 -16
- package/dist/lib/harness/adapters/droid.js +0 -3
- package/dist/lib/harness/adapters/kimi.js +0 -19
- package/dist/lib/harness/adapters/muse.js +0 -9
- package/dist/lib/harness/adapters/opencode.js +0 -2
- package/dist/lib/harness/exec-config-version.d.ts +0 -2
- package/dist/lib/harness/exec-config-version.js +0 -13
- package/dist/lib/harness/index.js +0 -10
- package/dist/lib/harness-auth-capabilities.d.ts +0 -26
- package/dist/lib/harness-auth-capabilities.js +0 -18
- package/dist/lib/harness-connection-test.d.ts +0 -27
- package/dist/lib/harness-connection-test.js +2 -20
- package/dist/lib/heal.d.ts +0 -45
- package/dist/lib/heal.js +2 -82
- package/dist/lib/help.d.ts +0 -32
- package/dist/lib/help.js +0 -41
- package/dist/lib/helper-download.d.ts +0 -85
- package/dist/lib/helper-download.js +0 -95
- package/dist/lib/helper-versions.d.ts +0 -51
- package/dist/lib/helper-versions.js +1 -45
- package/dist/lib/hooks/cache.d.ts +0 -40
- package/dist/lib/hooks/cache.js +8 -122
- package/dist/lib/hooks/install.d.ts +0 -253
- package/dist/lib/hooks/install.js +49 -822
- package/dist/lib/hooks/match.d.ts +0 -24
- package/dist/lib/hooks/match.js +0 -31
- package/dist/lib/hooks/profile.d.ts +0 -21
- package/dist/lib/hooks/profile.js +0 -28
- package/dist/lib/hosts/credential-transport.d.ts +0 -6
- package/dist/lib/hosts/credential-transport.js +0 -17
- package/dist/lib/hosts/credentials.d.ts +0 -35
- package/dist/lib/hosts/credentials.js +0 -38
- package/dist/lib/hosts/dispatch.d.ts +0 -140
- package/dist/lib/hosts/dispatch.js +0 -176
- package/dist/lib/hosts/logs.d.ts +0 -25
- package/dist/lib/hosts/logs.js +1 -51
- package/dist/lib/hosts/option.d.ts +0 -12
- package/dist/lib/hosts/option.js +0 -12
- package/dist/lib/hosts/passthrough.d.ts +0 -129
- package/dist/lib/hosts/passthrough.js +12 -249
- package/dist/lib/hosts/progress.d.ts +0 -90
- package/dist/lib/hosts/progress.js +5 -115
- package/dist/lib/hosts/providers/devices.d.ts +0 -19
- package/dist/lib/hosts/providers/devices.js +1 -34
- package/dist/lib/hosts/providers/local.d.ts +0 -14
- package/dist/lib/hosts/providers/local.js +0 -22
- package/dist/lib/hosts/ready.d.ts +0 -99
- package/dist/lib/hosts/ready.js +0 -101
- package/dist/lib/hosts/reconcile.d.ts +0 -38
- package/dist/lib/hosts/reconcile.js +1 -50
- package/dist/lib/hosts/reconnect.d.ts +0 -75
- package/dist/lib/hosts/reconnect.js +0 -98
- package/dist/lib/hosts/registry.d.ts +0 -74
- package/dist/lib/hosts/registry.js +0 -110
- package/dist/lib/hosts/remote-cmd.d.ts +1 -228
- package/dist/lib/hosts/remote-cmd.js +19 -294
- package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +0 -1
- package/dist/lib/hosts/remote-cmd.test-fixture.js +0 -12
- package/dist/lib/hosts/remote-os.d.ts +0 -19
- package/dist/lib/hosts/remote-os.js +0 -22
- package/dist/lib/hosts/remote-session-id.d.ts +0 -22
- package/dist/lib/hosts/remote-session-id.js +0 -24
- package/dist/lib/hosts/routing-flag.d.ts +0 -21
- package/dist/lib/hosts/routing-flag.js +0 -21
- package/dist/lib/hosts/run-target.d.ts +0 -53
- package/dist/lib/hosts/run-target.js +0 -56
- package/dist/lib/hosts/session-index.d.ts +1 -53
- package/dist/lib/hosts/session-index.js +2 -59
- package/dist/lib/hosts/session-marker.d.ts +0 -31
- package/dist/lib/hosts/session-marker.js +0 -32
- package/dist/lib/hosts/ssh-config.d.ts +0 -25
- package/dist/lib/hosts/ssh-config.js +1 -32
- package/dist/lib/hosts/tasks.d.ts +0 -54
- package/dist/lib/hosts/tasks.js +0 -35
- package/dist/lib/hosts/types.d.ts +0 -39
- package/dist/lib/hosts/types.js +0 -22
- package/dist/lib/humans.d.ts +0 -21
- package/dist/lib/humans.js +0 -30
- package/dist/lib/identity/client.d.ts +1 -35
- package/dist/lib/identity/client.js +3 -29
- package/dist/lib/identity/index.d.ts +3 -27
- package/dist/lib/identity/index.js +8 -24
- package/dist/lib/import.d.ts +0 -104
- package/dist/lib/import.js +1 -137
- package/dist/lib/installations/active-check.d.ts +0 -53
- package/dist/lib/installations/active-check.js +0 -49
- package/dist/lib/installations/index.d.ts +0 -9
- package/dist/lib/installations/index.js +0 -9
- package/dist/lib/installations/installation-lock.js +0 -8
- package/dist/lib/installations/launch-gate.d.ts +0 -56
- package/dist/lib/installations/launch-gate.js +0 -83
- package/dist/lib/installations/migrate.d.ts +0 -100
- package/dist/lib/installations/migrate.js +105 -572
- package/dist/lib/installations/native-command.d.ts +0 -1
- package/dist/lib/installations/native-command.js +0 -6
- package/dist/lib/installations/resolve.d.ts +0 -24
- package/dist/lib/installations/resolve.js +0 -24
- package/dist/lib/installations/shims.d.ts +0 -395
- package/dist/lib/installations/shims.js +30 -957
- package/dist/lib/installations/store.d.ts +0 -199
- package/dist/lib/installations/store.js +1 -297
- package/dist/lib/installations/strategies.d.ts +0 -44
- package/dist/lib/installations/strategies.js +0 -87
- package/dist/lib/installations/types.d.ts +1 -67
- package/dist/lib/installations/types.js +0 -6
- package/dist/lib/installations/update-cancellation.d.ts +0 -74
- package/dist/lib/installations/update-cancellation.js +0 -74
- package/dist/lib/installations/update-policy.d.ts +0 -57
- package/dist/lib/installations/update-policy.js +0 -62
- package/dist/lib/installations/update-runtime.d.ts +0 -88
- package/dist/lib/installations/update-runtime.js +1 -127
- package/dist/lib/installations/update.d.ts +0 -53
- package/dist/lib/installations/update.js +0 -95
- package/dist/lib/installations/versions.d.ts +0 -310
- package/dist/lib/installations/versions.js +14 -837
- package/dist/lib/isolation-boundary-report.d.ts +0 -7
- package/dist/lib/isolation-boundary-report.js +0 -7
- package/dist/lib/launch-identity.d.ts +0 -8
- package/dist/lib/launch-identity.js +0 -8
- package/dist/lib/linear-autoclose.d.ts +0 -25
- package/dist/lib/linear-autoclose.js +0 -19
- package/dist/lib/linear-cache.d.ts +0 -57
- package/dist/lib/linear-cache.js +1 -81
- package/dist/lib/linear-project-counts.d.ts +0 -83
- package/dist/lib/linear-project-counts.js +2 -64
- package/dist/lib/linear-projects.d.ts +0 -62
- package/dist/lib/linear-projects.js +0 -85
- package/dist/lib/linear-rate-limit.d.ts +0 -21
- package/dist/lib/linear-rate-limit.js +1 -93
- package/dist/lib/linux-userns.d.ts +1 -42
- package/dist/lib/linux-userns.js +0 -47
- package/dist/lib/lock-compromise.d.ts +0 -7
- package/dist/lib/lock-compromise.js +0 -7
- package/dist/lib/log-follow.d.ts +0 -2
- package/dist/lib/log-follow.js +5 -15
- package/dist/lib/loop.d.ts +0 -106
- package/dist/lib/loop.js +0 -135
- package/dist/lib/machine-id.d.ts +0 -19
- package/dist/lib/machine-id.js +0 -19
- package/dist/lib/mailbox-gc.d.ts +0 -7
- package/dist/lib/mailbox-gc.js +0 -25
- package/dist/lib/mailbox-target.d.ts +0 -31
- package/dist/lib/mailbox-target.js +0 -27
- package/dist/lib/mailbox.d.ts +0 -77
- package/dist/lib/mailbox.js +5 -105
- package/dist/lib/manifest.d.ts +0 -4
- package/dist/lib/manifest.js +0 -36
- package/dist/lib/markdown.d.ts +0 -3
- package/dist/lib/markdown.js +0 -9
- package/dist/lib/mcp-registry.d.ts +1 -50
- package/dist/lib/mcp-registry.js +0 -64
- package/dist/lib/mcp.d.ts +0 -115
- package/dist/lib/mcp.js +3 -199
- package/dist/lib/memory-cache.d.ts +0 -11
- package/dist/lib/memory-cache.js +0 -9
- package/dist/lib/memory.d.ts +0 -52
- package/dist/lib/memory.js +12 -74
- package/dist/lib/menubar/download-menubar.d.ts +0 -35
- package/dist/lib/menubar/download-menubar.js +0 -38
- package/dist/lib/menubar/install-menubar.d.ts +0 -405
- package/dist/lib/menubar/install-menubar.js +25 -667
- package/dist/lib/menubar/migrate-prefs.d.ts +0 -47
- package/dist/lib/menubar/migrate-prefs.js +1 -70
- package/dist/lib/menubar/notify-desktop.d.ts +0 -82
- package/dist/lib/menubar/notify-desktop.js +0 -68
- package/dist/lib/menubar/resolve-version.d.ts +0 -41
- package/dist/lib/menubar/resolve-version.js +2 -44
- package/dist/lib/menubar/snapshot.d.ts +13 -66
- package/dist/lib/menubar/snapshot.js +45 -39
- package/dist/lib/merged-resources.d.ts +0 -10
- package/dist/lib/merged-resources.js +0 -10
- package/dist/lib/migrate-fold.d.ts +0 -31
- package/dist/lib/migrate-fold.js +6 -38
- package/dist/lib/model-tier-overrides.d.ts +0 -30
- package/dist/lib/model-tier-overrides.js +0 -14
- package/dist/lib/model-tiers.d.ts +0 -43
- package/dist/lib/model-tiers.js +5 -78
- package/dist/lib/models.d.ts +0 -145
- package/dist/lib/models.js +3 -333
- package/dist/lib/monitors/config.d.ts +0 -187
- package/dist/lib/monitors/config.js +4 -101
- package/dist/lib/monitors/dispatch.d.ts +0 -22
- package/dist/lib/monitors/dispatch.js +0 -35
- package/dist/lib/monitors/engine.d.ts +1 -53
- package/dist/lib/monitors/engine.js +17 -106
- package/dist/lib/monitors/fingerprint.d.ts +0 -43
- package/dist/lib/monitors/fingerprint.js +0 -57
- package/dist/lib/monitors/pid-watch.d.ts +0 -31
- package/dist/lib/monitors/pid-watch.js +0 -31
- package/dist/lib/monitors/remote.d.ts +0 -52
- package/dist/lib/monitors/remote.js +0 -42
- package/dist/lib/monitors/sources/command.d.ts +2 -9
- package/dist/lib/monitors/sources/command.js +13 -34
- package/dist/lib/monitors/sources/device.d.ts +0 -10
- package/dist/lib/monitors/sources/device.js +0 -14
- package/dist/lib/monitors/sources/failure.d.ts +0 -27
- package/dist/lib/monitors/sources/failure.js +0 -27
- package/dist/lib/monitors/sources/file.d.ts +0 -10
- package/dist/lib/monitors/sources/file.js +0 -11
- package/dist/lib/monitors/sources/http.d.ts +0 -7
- package/dist/lib/monitors/sources/http.js +0 -9
- package/dist/lib/monitors/sources/index.d.ts +0 -9
- package/dist/lib/monitors/sources/index.js +0 -9
- package/dist/lib/monitors/sources/poll.d.ts +0 -8
- package/dist/lib/monitors/sources/poll.js +0 -8
- package/dist/lib/monitors/sources/types.d.ts +0 -18
- package/dist/lib/monitors/sources/types.js +0 -8
- package/dist/lib/monitors/sources/webhook.d.ts +0 -7
- package/dist/lib/monitors/sources/webhook.js +0 -7
- package/dist/lib/monitors/sources/ws.d.ts +0 -10
- package/dist/lib/monitors/sources/ws.js +3 -13
- package/dist/lib/monitors/state.d.ts +0 -132
- package/dist/lib/monitors/state.js +2 -86
- package/dist/lib/native-accounts.d.ts +0 -32
- package/dist/lib/native-accounts.js +0 -17
- package/dist/lib/net-close.d.ts +0 -9
- package/dist/lib/net-close.js +0 -5
- package/dist/lib/notify.d.ts +0 -47
- package/dist/lib/notify.js +0 -30
- package/dist/lib/onepassword.d.ts +0 -14
- package/dist/lib/onepassword.js +0 -12
- package/dist/lib/open-url.d.ts +0 -38
- package/dist/lib/open-url.js +1 -69
- package/dist/lib/openclaw-keychain.js +2 -7
- package/dist/lib/operator.d.ts +0 -9
- package/dist/lib/operator.js +0 -34
- package/dist/lib/origin-machine.d.ts +0 -16
- package/dist/lib/origin-machine.js +0 -16
- package/dist/lib/output/git-output.d.ts +0 -31
- package/dist/lib/output/git-output.js +4 -43
- package/dist/lib/overdue.d.ts +0 -35
- package/dist/lib/overdue.js +0 -60
- package/dist/lib/owner-message.d.ts +0 -20
- package/dist/lib/owner-message.js +1 -40
- package/dist/lib/packages/output-home.d.ts +0 -28
- package/dist/lib/packages/output-home.js +0 -114
- package/dist/lib/paths.d.ts +0 -26
- package/dist/lib/paths.js +1 -27
- package/dist/lib/percentile.d.ts +0 -11
- package/dist/lib/percentile.js +0 -11
- package/dist/lib/perf/db.d.ts +0 -16
- package/dist/lib/perf/db.js +3 -32
- package/dist/lib/perf/spool.d.ts +0 -12
- package/dist/lib/perf/spool.js +0 -13
- package/dist/lib/perf/types.d.ts +0 -26
- package/dist/lib/perf/types.js +0 -1
- package/dist/lib/permissions-registry.d.ts +0 -48
- package/dist/lib/permissions-registry.js +0 -108
- package/dist/lib/permissions.d.ts +0 -215
- package/dist/lib/permissions.js +4 -407
- package/dist/lib/picker.d.ts +0 -124
- package/dist/lib/picker.js +0 -140
- package/dist/lib/placement.d.ts +0 -57
- package/dist/lib/placement.js +0 -47
- package/dist/lib/platform/exec.d.ts +0 -73
- package/dist/lib/platform/exec.js +0 -80
- package/dist/lib/platform/index.d.ts +0 -14
- package/dist/lib/platform/index.js +0 -14
- package/dist/lib/platform/ipc.d.ts +0 -10
- package/dist/lib/platform/ipc.js +0 -13
- package/dist/lib/platform/links.d.ts +0 -14
- package/dist/lib/platform/links.js +0 -25
- package/dist/lib/platform/paths.d.ts +0 -48
- package/dist/lib/platform/paths.js +0 -52
- package/dist/lib/platform/posixpath.d.ts +0 -18
- package/dist/lib/platform/posixpath.js +0 -62
- package/dist/lib/platform/process.d.ts +0 -67
- package/dist/lib/platform/process.js +5 -99
- package/dist/lib/platform/winpath.d.ts +0 -50
- package/dist/lib/platform/winpath.js +0 -81
- package/dist/lib/plugins/plugin-marketplace.d.ts +0 -165
- package/dist/lib/plugins/plugin-marketplace.js +10 -238
- package/dist/lib/plugins/plugins.d.ts +0 -238
- package/dist/lib/plugins/plugins.js +20 -454
- package/dist/lib/plugins/skills.d.ts +0 -86
- package/dist/lib/plugins/skills.js +1 -139
- package/dist/lib/pr-land-detach.d.ts +0 -17
- package/dist/lib/pr-land-detach.js +0 -30
- package/dist/lib/pricing/cost.d.ts +0 -29
- package/dist/lib/pricing/cost.js +0 -38
- package/dist/lib/pricing/index.d.ts +0 -6
- package/dist/lib/pricing/index.js +0 -6
- package/dist/lib/pricing/table.d.ts +0 -8
- package/dist/lib/pricing/table.js +3 -56
- package/dist/lib/probe.d.ts +0 -5
- package/dist/lib/probe.js +0 -40
- package/dist/lib/profiles-presets.d.ts +0 -20
- package/dist/lib/profiles-presets.js +1 -36
- package/dist/lib/profiles.d.ts +0 -185
- package/dist/lib/profiles.js +1 -158
- package/dist/lib/project-doctor.d.ts +0 -29
- package/dist/lib/project-doctor.js +0 -26
- package/dist/lib/project-focus.d.ts +0 -41
- package/dist/lib/project-focus.js +0 -49
- package/dist/lib/project-import.d.ts +0 -41
- package/dist/lib/project-import.js +0 -36
- package/dist/lib/project-key.d.ts +0 -65
- package/dist/lib/project-key.js +0 -70
- package/dist/lib/project-launch.d.ts +0 -49
- package/dist/lib/project-launch.js +2 -91
- package/dist/lib/project-probe.d.ts +0 -86
- package/dist/lib/project-probe.js +1 -88
- package/dist/lib/project-pull.d.ts +0 -96
- package/dist/lib/project-pull.js +0 -122
- package/dist/lib/project-resources.d.ts +0 -44
- package/dist/lib/project-resources.js +7 -171
- package/dist/lib/project-root.d.ts +0 -95
- package/dist/lib/project-root.js +0 -101
- package/dist/lib/project-schedule.d.ts +0 -43
- package/dist/lib/project-schedule.js +0 -52
- package/dist/lib/project-status.d.ts +0 -108
- package/dist/lib/project-status.js +0 -117
- package/dist/lib/projects.d.ts +0 -197
- package/dist/lib/projects.js +1 -213
- package/dist/lib/pwsh.d.ts +0 -41
- package/dist/lib/pwsh.js +0 -51
- package/dist/lib/quick-todo.d.ts +84 -0
- package/dist/lib/quick-todo.js +243 -0
- package/dist/lib/reconcile-and-repair.d.ts +0 -78
- package/dist/lib/reconcile-and-repair.js +3 -66
- package/dist/lib/redact.d.ts +0 -29
- package/dist/lib/redact.js +0 -54
- package/dist/lib/refresh-coordinator.d.ts +0 -15
- package/dist/lib/refresh-coordinator.js +0 -10
- package/dist/lib/refresh.d.ts +0 -39
- package/dist/lib/refresh.js +0 -45
- package/dist/lib/registry.d.ts +0 -65
- package/dist/lib/registry.js +0 -127
- package/dist/lib/reminders.d.ts +0 -21
- package/dist/lib/reminders.js +0 -30
- package/dist/lib/remote-agents-json.d.ts +0 -44
- package/dist/lib/remote-agents-json.js +1 -44
- package/dist/lib/reserved-stores.d.ts +0 -28
- package/dist/lib/reserved-stores.js +2 -28
- package/dist/lib/resource-aliases.d.ts +0 -12
- package/dist/lib/resource-aliases.js +0 -12
- package/dist/lib/resource-content-diff.d.ts +0 -28
- package/dist/lib/resource-content-diff.js +7 -34
- package/dist/lib/resource-inventory.d.ts +0 -51
- package/dist/lib/resource-inventory.js +0 -45
- package/dist/lib/resource-patterns.d.ts +0 -32
- package/dist/lib/resource-patterns.js +0 -34
- package/dist/lib/resource-profiles.d.ts +0 -7
- package/dist/lib/resource-profiles.js +0 -11
- package/dist/lib/resources/types.d.ts +0 -50
- package/dist/lib/resources/types.js +0 -7
- package/dist/lib/resources/workflows.d.ts +0 -7
- package/dist/lib/resources/workflows.js +0 -13
- package/dist/lib/resources.d.ts +0 -65
- package/dist/lib/resources.js +0 -78
- package/dist/lib/routers.d.ts +0 -67
- package/dist/lib/routers.js +0 -60
- package/dist/lib/routine-activation.d.ts +0 -23
- package/dist/lib/routine-activation.js +0 -24
- package/dist/lib/routine-context.d.ts +1 -91
- package/dist/lib/routine-context.js +0 -107
- package/dist/lib/routine-notify-owner.d.ts +0 -79
- package/dist/lib/routine-notify-owner.js +1 -103
- package/dist/lib/routine-notify.d.ts +0 -70
- package/dist/lib/routine-notify.js +1 -75
- package/dist/lib/routine-process-cleanup.d.ts +0 -1
- package/dist/lib/routine-process-cleanup.js +1 -4
- package/dist/lib/routine-readiness.d.ts +0 -63
- package/dist/lib/routine-readiness.js +4 -86
- package/dist/lib/routines-format.d.ts +0 -40
- package/dist/lib/routines-format.js +0 -67
- package/dist/lib/routines-placement.d.ts +0 -33
- package/dist/lib/routines-placement.js +0 -40
- package/dist/lib/routines-project.d.ts +0 -57
- package/dist/lib/routines-project.js +6 -80
- package/dist/lib/rules/compile.d.ts +0 -66
- package/dist/lib/rules/compile.js +6 -118
- package/dist/lib/rules/compose.d.ts +0 -56
- package/dist/lib/rules/compose.js +2 -83
- package/dist/lib/rules/rules.d.ts +0 -23
- package/dist/lib/rules/rules.js +0 -35
- package/dist/lib/rules/run-sync.d.ts +0 -16
- package/dist/lib/rules/run-sync.js +1 -44
- package/dist/lib/run-config.d.ts +0 -7
- package/dist/lib/run-config.js +0 -8
- package/dist/lib/run-defaults.d.ts +0 -14
- package/dist/lib/run-defaults.js +0 -14
- package/dist/lib/run-notify.d.ts +0 -18
- package/dist/lib/run-notify.js +0 -36
- package/dist/lib/run-trace-sync.d.ts +0 -21
- package/dist/lib/run-trace-sync.js +2 -66
- package/dist/lib/rush-session.d.ts +0 -26
- package/dist/lib/rush-session.js +0 -28
- package/dist/lib/sandbox.d.ts +0 -45
- package/dist/lib/sandbox.js +5 -93
- package/dist/lib/scheduler.d.ts +0 -28
- package/dist/lib/scheduler.js +0 -45
- package/dist/lib/scheduling/routines.d.ts +0 -652
- package/dist/lib/scheduling/routines.js +8 -475
- package/dist/lib/secrets-cli.d.ts +3 -8
- package/dist/lib/secrets-cli.js +1 -19
- package/dist/lib/secrets-client.d.ts +0 -117
- package/dist/lib/secrets-client.js +4 -275
- package/dist/lib/secrets-policy.d.ts +0 -142
- package/dist/lib/secrets-policy.js +4 -237
- package/dist/lib/secrets-types.d.ts +0 -87
- package/dist/lib/secrets-types.js +0 -13
- package/dist/lib/self-heal/checks/hook-manifest.js +0 -25
- package/dist/lib/self-heal/checks/hook-runtime.js +0 -5
- package/dist/lib/self-heal/checks/install-staging.d.ts +0 -1
- package/dist/lib/self-heal/checks/install-staging.js +1 -28
- package/dist/lib/self-heal/checks/menubar-helper.js +0 -5
- package/dist/lib/self-heal/checks/path.js +0 -9
- package/dist/lib/self-heal/checks/resources.js +0 -5
- package/dist/lib/self-heal/checks/shadowing.js +2 -16
- package/dist/lib/self-heal/checks/shims.js +0 -14
- package/dist/lib/self-heal/child.d.ts +12 -0
- package/dist/lib/self-heal/child.js +23 -0
- package/dist/lib/self-heal/registry.d.ts +0 -9
- package/dist/lib/self-heal/registry.js +0 -16
- package/dist/lib/self-heal/types.d.ts +0 -12
- package/dist/lib/self-heal/types.js +0 -15
- package/dist/lib/self-update.d.ts +0 -312
- package/dist/lib/self-update.js +9 -360
- package/dist/lib/service-manifest.d.ts +0 -39
- package/dist/lib/service-manifest.js +0 -72
- package/dist/lib/session/active.d.ts +13 -869
- package/dist/lib/session/active.js +20 -976
- package/dist/lib/session/actor-sidecar.d.ts +1 -32
- package/dist/lib/session/actor-sidecar.js +1 -41
- package/dist/lib/session/bookmarks.d.ts +0 -33
- package/dist/lib/session/bookmarks.js +0 -37
- package/dist/lib/session/bundle.d.ts +0 -86
- package/dist/lib/session/bundle.js +0 -54
- package/dist/lib/session/claude-accounts.d.ts +0 -40
- package/dist/lib/session/claude-accounts.js +0 -49
- package/dist/lib/session/cloud.d.ts +1 -23
- package/dist/lib/session/cloud.js +0 -26
- package/dist/lib/session/db.d.ts +5 -658
- package/dist/lib/session/db.js +22 -1443
- package/dist/lib/session/detached.d.ts +0 -21
- package/dist/lib/session/detached.js +0 -29
- package/dist/lib/session/discover.d.ts +3 -420
- package/dist/lib/session/discover.js +30 -1123
- package/dist/lib/session/fork.d.ts +1 -41
- package/dist/lib/session/fork.js +0 -19
- package/dist/lib/session/ghostty-tabs.d.ts +0 -24
- package/dist/lib/session/ghostty-tabs.js +0 -37
- package/dist/lib/session/glance-files.d.ts +19 -0
- package/dist/lib/session/glance-files.js +258 -0
- package/dist/lib/session/hook-sessions.d.ts +0 -33
- package/dist/lib/session/hook-sessions.js +4 -99
- package/dist/lib/session/host-link.d.ts +1 -94
- package/dist/lib/session/host-link.js +1 -81
- package/dist/lib/session/inject-target.d.ts +8 -0
- package/dist/lib/session/inject-target.js +32 -0
- package/dist/lib/session/inject.d.ts +0 -15
- package/dist/lib/session/inject.js +0 -15
- package/dist/lib/session/live-metadata.d.ts +1 -34
- package/dist/lib/session/live-metadata.js +1 -73
- package/dist/lib/session/local-tmux-attach.d.ts +0 -37
- package/dist/lib/session/local-tmux-attach.js +1 -76
- package/dist/lib/session/migrate-targets.d.ts +0 -46
- package/dist/lib/session/migrate-targets.js +0 -24
- package/dist/lib/session/migrations.d.ts +0 -12
- package/dist/lib/session/migrations.js +1 -20
- package/dist/lib/session/mirror.d.ts +0 -32
- package/dist/lib/session/mirror.js +0 -77
- package/dist/lib/session/origin-machine.js +0 -3
- package/dist/lib/session/pid-registry.d.ts +0 -80
- package/dist/lib/session/pid-registry.js +2 -81
- package/dist/lib/session/presence.d.ts +0 -39
- package/dist/lib/session/presence.js +2 -52
- package/dist/lib/session/process-view.d.ts +0 -11
- package/dist/lib/session/process-view.js +0 -25
- package/dist/lib/session/projection.d.ts +0 -3
- package/dist/lib/session/projection.js +0 -10
- package/dist/lib/session/provenance.d.ts +1 -37
- package/dist/lib/session/provenance.js +0 -69
- package/dist/lib/session/recovery.d.ts +1 -40
- package/dist/lib/session/recovery.js +2 -80
- package/dist/lib/session/relative-time.js +0 -3
- package/dist/lib/session/remote/peer-stream.d.ts +0 -42
- package/dist/lib/session/remote/peer-stream.js +0 -64
- package/dist/lib/session/remote/remote-bundle.d.ts +0 -6
- package/dist/lib/session/remote/remote-bundle.js +0 -21
- package/dist/lib/session/remote/remote-list.d.ts +1 -110
- package/dist/lib/session/remote/remote-list.js +5 -139
- package/dist/lib/session/remote/remote.d.ts +0 -98
- package/dist/lib/session/remote/remote.js +3 -119
- package/dist/lib/session/remote/watch.d.ts +1 -34
- package/dist/lib/session/remote/watch.js +12 -72
- package/dist/lib/session/remote-active.d.ts +0 -35
- package/dist/lib/session/remote-active.js +0 -48
- package/dist/lib/session/remote-bundle.js +0 -2
- package/dist/lib/session/remote-list.js +0 -2
- package/dist/lib/session/remote-preview-cache.d.ts +0 -7
- package/dist/lib/session/remote-preview-cache.js +1 -76
- package/dist/lib/session/remote.js +0 -2
- package/dist/lib/session/resume-command.d.ts +0 -6
- package/dist/lib/session/resume-command.js +0 -6
- package/dist/lib/session/resume-owner.d.ts +1 -52
- package/dist/lib/session/resume-owner.js +0 -56
- package/dist/lib/session/run-names.d.ts +0 -24
- package/dist/lib/session/run-names.js +0 -26
- package/dist/lib/session/session-cache.d.ts +2 -146
- package/dist/lib/session/session-cache.js +26 -203
- package/dist/lib/session/short-id.js +0 -3
- package/dist/lib/session/sync/agents.d.ts +0 -68
- package/dist/lib/session/sync/agents.js +0 -0
- package/dist/lib/session/sync/backend.d.ts +0 -39
- package/dist/lib/session/sync/backend.js +0 -45
- package/dist/lib/session/sync/config.d.ts +0 -27
- package/dist/lib/session/sync/config.js +0 -56
- package/dist/lib/session/sync/managed-config.d.ts +0 -17
- package/dist/lib/session/sync/managed-config.js +0 -17
- package/dist/lib/session/sync/managed-key.d.ts +0 -38
- package/dist/lib/session/sync/managed-key.js +1 -42
- package/dist/lib/session/sync/net-client.d.ts +0 -36
- package/dist/lib/session/sync/net-client.js +0 -30
- package/dist/lib/session/sync/provision.d.ts +0 -2
- package/dist/lib/session/sync/provision.js +0 -13
- package/dist/lib/session/sync/r2.d.ts +0 -20
- package/dist/lib/session/sync/r2.js +0 -20
- package/dist/lib/session/sync/transcript-crypto.d.ts +0 -37
- package/dist/lib/session/sync/transcript-crypto.js +5 -37
- package/dist/lib/session/sync/worker-template.d.ts +0 -5
- package/dist/lib/session/sync/worker-template.js +0 -40
- package/dist/lib/session/testdata/pid-registry-namespace.js +0 -2
- package/dist/lib/session/testdata/process-view-private.js +0 -1
- package/dist/lib/session/throughput.d.ts +0 -24
- package/dist/lib/session/throughput.js +1 -25
- package/dist/lib/session/timeline-pass.d.ts +1 -63
- package/dist/lib/session/timeline-pass.js +161 -148
- package/dist/lib/session/title.d.ts +0 -182
- package/dist/lib/session/title.js +0 -139
- package/dist/lib/session/tool-index.d.ts +2 -21
- package/dist/lib/session/tool-index.js +3 -75
- package/dist/lib/session/tool-store.d.ts +2 -48
- package/dist/lib/session/tool-store.js +1 -33
- package/dist/lib/session/viewing-in.d.ts +0 -67
- package/dist/lib/session/viewing-in.js +1 -71
- package/dist/lib/session/watch.js +0 -2
- package/dist/lib/session/width.js +0 -3
- package/dist/lib/sessions-client.d.ts +0 -46
- package/dist/lib/sessions-client.js +36 -113
- package/dist/lib/settings-manifest.d.ts +1 -17
- package/dist/lib/settings-manifest.js +4 -57
- package/dist/lib/setup-tool-install.d.ts +0 -1
- package/dist/lib/setup-tool-install.js +2 -7
- package/dist/lib/setup-tool-status.d.ts +0 -3
- package/dist/lib/setup-tool-status.js +4 -14
- package/dist/lib/sha256-asset.d.ts +0 -20
- package/dist/lib/sha256-asset.js +0 -20
- package/dist/lib/share-runtime.d.ts +0 -10
- package/dist/lib/share-runtime.js +1 -27
- package/dist/lib/shim-heal.d.ts +0 -15
- package/dist/lib/shim-heal.js +3 -29
- package/dist/lib/signin-badge.d.ts +0 -72
- package/dist/lib/signin-badge.js +0 -86
- package/dist/lib/sink-format.d.ts +0 -32
- package/dist/lib/sink-format.js +0 -14
- package/dist/lib/smart-launch.d.ts +0 -75
- package/dist/lib/smart-launch.js +1 -83
- package/dist/lib/snapshot.d.ts +0 -46
- package/dist/lib/snapshot.js +5 -31
- package/dist/lib/spinner.d.ts +0 -37
- package/dist/lib/spinner.js +0 -37
- package/dist/lib/sqlite.d.ts +0 -13
- package/dist/lib/sqlite.js +3 -71
- package/dist/lib/ssh-exec.d.ts +0 -209
- package/dist/lib/ssh-exec.js +11 -248
- package/dist/lib/ssh-tunnel.d.ts +0 -43
- package/dist/lib/ssh-tunnel.js +2 -48
- package/dist/lib/staleness/checkers/commands.d.ts +0 -4
- package/dist/lib/staleness/checkers/commands.js +0 -4
- package/dist/lib/staleness/checkers/hooks.d.ts +0 -10
- package/dist/lib/staleness/checkers/hooks.js +0 -15
- package/dist/lib/staleness/checkers/mcp.d.ts +0 -9
- package/dist/lib/staleness/checkers/mcp.js +0 -9
- package/dist/lib/staleness/checkers/permissions.d.ts +0 -12
- package/dist/lib/staleness/checkers/permissions.js +0 -13
- package/dist/lib/staleness/checkers/plugins.d.ts +0 -8
- package/dist/lib/staleness/checkers/plugins.js +0 -8
- package/dist/lib/staleness/checkers/rules.d.ts +0 -15
- package/dist/lib/staleness/checkers/rules.js +0 -26
- package/dist/lib/staleness/checkers/skills.d.ts +0 -4
- package/dist/lib/staleness/checkers/skills.js +0 -4
- package/dist/lib/staleness/checkers/subagents.d.ts +0 -9
- package/dist/lib/staleness/checkers/subagents.js +0 -9
- package/dist/lib/staleness/checkers/types.d.ts +0 -34
- package/dist/lib/staleness/checkers/types.js +0 -19
- package/dist/lib/staleness/checkers/workflows.d.ts +0 -7
- package/dist/lib/staleness/checkers/workflows.js +0 -7
- package/dist/lib/staleness/detectors/commands.js +0 -17
- package/dist/lib/staleness/detectors/hooks.js +1 -6
- package/dist/lib/staleness/detectors/mcp.js +0 -4
- package/dist/lib/staleness/detectors/permissions.js +10 -23
- package/dist/lib/staleness/detectors/rules.js +0 -6
- package/dist/lib/staleness/detectors/skills.d.ts +0 -1
- package/dist/lib/staleness/detectors/skills.js +1 -12
- package/dist/lib/staleness/detectors/types.d.ts +0 -10
- package/dist/lib/staleness/fingerprint.d.ts +0 -19
- package/dist/lib/staleness/fingerprint.js +0 -35
- package/dist/lib/staleness/index.d.ts +0 -28
- package/dist/lib/staleness/index.js +1 -45
- package/dist/lib/staleness/layers.d.ts +0 -23
- package/dist/lib/staleness/layers.js +0 -34
- package/dist/lib/staleness/prune.d.ts +0 -71
- package/dist/lib/staleness/prune.js +2 -27
- package/dist/lib/staleness/registry.d.ts +0 -10
- package/dist/lib/staleness/registry.js +3 -33
- package/dist/lib/staleness/types.d.ts +0 -36
- package/dist/lib/staleness/types.js +0 -5
- package/dist/lib/staleness/writers/commands.js +1 -48
- package/dist/lib/staleness/writers/hooks.js +1 -18
- package/dist/lib/staleness/writers/kinds.d.ts +0 -12
- package/dist/lib/staleness/writers/kinds.js +0 -1
- package/dist/lib/staleness/writers/lazy-map.d.ts +0 -11
- package/dist/lib/staleness/writers/mcp.js +0 -13
- package/dist/lib/staleness/writers/plugins.js +0 -4
- package/dist/lib/staleness/writers/rules.d.ts +0 -1
- package/dist/lib/staleness/writers/rules.js +1 -19
- package/dist/lib/staleness/writers/skills.js +3 -14
- package/dist/lib/staleness/writers/sources.d.ts +0 -11
- package/dist/lib/staleness/writers/sources.js +0 -32
- package/dist/lib/staleness/writers/subagents.js +0 -16
- package/dist/lib/staleness/writers/types.d.ts +0 -58
- package/dist/lib/staleness/writers/workflows.js +1 -1
- package/dist/lib/standalone-tools.d.ts +24 -0
- package/dist/lib/standalone-tools.js +58 -0
- package/dist/lib/star-nudge.d.ts +0 -32
- package/dist/lib/star-nudge.js +2 -36
- package/dist/lib/startup/command-registry.d.ts +0 -45
- package/dist/lib/startup/command-registry.js +1 -46
- package/dist/lib/startup/dev-build.d.ts +0 -9
- package/dist/lib/startup/dev-build.js +1 -42
- package/dist/lib/startup/root-command.d.ts +0 -19
- package/dist/lib/startup/root-command.js +0 -19
- package/dist/lib/startup/spellcheck.d.ts +0 -13
- package/dist/lib/startup/spellcheck.js +0 -13
- package/dist/lib/state.d.ts +0 -376
- package/dist/lib/state.js +19 -737
- package/dist/lib/storage/selection.d.ts +0 -40
- package/dist/lib/storage/selection.js +0 -29
- package/dist/lib/subagents-registry.d.ts +0 -56
- package/dist/lib/subagents-registry.js +0 -99
- package/dist/lib/subagents.d.ts +0 -128
- package/dist/lib/subagents.js +1 -158
- package/dist/lib/summarizer/config.d.ts +0 -37
- package/dist/lib/summarizer/config.js +0 -37
- package/dist/lib/summarizer/pass.d.ts +0 -20
- package/dist/lib/summarizer/pass.js +1 -34
- package/dist/lib/summarizer/summarize.d.ts +1 -49
- package/dist/lib/summarizer/summarize.js +0 -35
- package/dist/lib/sync-passphrase.d.ts +0 -16
- package/dist/lib/sync-passphrase.js +1 -18
- package/dist/lib/sync-status.d.ts +0 -72
- package/dist/lib/sync-status.js +0 -55
- package/dist/lib/sync-umbrella.d.ts +0 -54
- package/dist/lib/sync-umbrella.js +0 -48
- package/dist/lib/system-run-sync.d.ts +0 -5
- package/dist/lib/system-run-sync.js +1 -31
- package/dist/lib/teams/agents.d.ts +1 -444
- package/dist/lib/teams/agents.js +11 -871
- package/dist/lib/teams/api.d.ts +2 -52
- package/dist/lib/teams/api.js +4 -63
- package/dist/lib/teams/debug.d.ts +0 -6
- package/dist/lib/teams/debug.js +0 -6
- package/dist/lib/teams/delivery.d.ts +0 -41
- package/dist/lib/teams/delivery.js +0 -32
- package/dist/lib/teams/file_ops.d.ts +0 -11
- package/dist/lib/teams/file_ops.js +0 -11
- package/dist/lib/teams/forEach.d.ts +0 -76
- package/dist/lib/teams/forEach.js +1 -77
- package/dist/lib/teams/index.d.ts +1 -7
- package/dist/lib/teams/index.js +1 -7
- package/dist/lib/teams/parsers.d.ts +0 -4
- package/dist/lib/teams/parsers.js +0 -81
- package/dist/lib/teams/persistence.d.ts +0 -2
- package/dist/lib/teams/persistence.js +0 -12
- package/dist/lib/teams/placement-probe.d.ts +0 -12
- package/dist/lib/teams/placement-probe.js +1 -51
- package/dist/lib/teams/pr-watch.d.ts +0 -107
- package/dist/lib/teams/pr-watch.js +1 -107
- package/dist/lib/teams/registry.d.ts +0 -36
- package/dist/lib/teams/registry.js +0 -47
- package/dist/lib/teams/remoteWorktree.d.ts +0 -50
- package/dist/lib/teams/remoteWorktree.js +1 -96
- package/dist/lib/teams/scheduler.d.ts +0 -111
- package/dist/lib/teams/scheduler.js +2 -125
- package/dist/lib/teams/summarizer.d.ts +0 -22
- package/dist/lib/teams/summarizer.js +6 -50
- package/dist/lib/teams/supervisor.d.ts +0 -38
- package/dist/lib/teams/supervisor.js +0 -21
- package/dist/lib/teams/worktree.d.ts +0 -95
- package/dist/lib/teams/worktree.js +3 -110
- package/dist/lib/template.d.ts +0 -21
- package/dist/lib/template.js +0 -23
- package/dist/lib/term-client.d.ts +0 -26
- package/dist/lib/term-client.js +0 -48
- package/dist/lib/term-driver.d.ts +0 -5
- package/dist/lib/term-driver.js +0 -8
- package/dist/lib/terminal/backends/ghostty.d.ts +0 -2
- package/dist/lib/terminal/backends/ghostty.js +0 -12
- package/dist/lib/terminal/backends/index.d.ts +0 -17
- package/dist/lib/terminal/backends/index.js +0 -15
- package/dist/lib/terminal/backends/iterm.d.ts +0 -2
- package/dist/lib/terminal/backends/iterm.js +0 -10
- package/dist/lib/terminal/backends/terminal-app.d.ts +0 -10
- package/dist/lib/terminal/backends/terminal-app.js +0 -30
- package/dist/lib/terminal/backends/tmux.d.ts +0 -10
- package/dist/lib/terminal/backends/tmux.js +0 -2
- package/dist/lib/terminal/backends/vscodium-agent.d.ts +0 -25
- package/dist/lib/terminal/backends/vscodium-agent.js +0 -36
- package/dist/lib/terminal/engine.d.ts +0 -17
- package/dist/lib/terminal/engine.js +0 -10
- package/dist/lib/terminal/index.d.ts +0 -8
- package/dist/lib/terminal/inject.d.ts +1 -173
- package/dist/lib/terminal/inject.js +0 -146
- package/dist/lib/terminal/policy.d.ts +0 -8
- package/dist/lib/terminal/policy.js +0 -1
- package/dist/lib/terminal/preferred.d.ts +0 -66
- package/dist/lib/terminal/preferred.js +0 -30
- package/dist/lib/terminal/quote.d.ts +0 -8
- package/dist/lib/terminal/quote.js +0 -8
- package/dist/lib/terminal/resolve.d.ts +0 -46
- package/dist/lib/terminal/resolve.js +0 -30
- package/dist/lib/terminal/run-surface.d.ts +0 -56
- package/dist/lib/terminal/run-surface.js +0 -46
- package/dist/lib/terminal/shell.d.ts +0 -3
- package/dist/lib/terminal/shell.js +0 -13
- package/dist/lib/terminal/transport.d.ts +0 -14
- package/dist/lib/terminal/transport.js +1 -30
- package/dist/lib/terminal/types.d.ts +0 -40
- package/dist/lib/terminal/types.js +0 -10
- package/dist/lib/text/relative-time.d.ts +0 -36
- package/dist/lib/text/relative-time.js +0 -43
- package/dist/lib/text/short-id.d.ts +0 -16
- package/dist/lib/text/short-id.js +0 -16
- package/dist/lib/text/width.d.ts +0 -24
- package/dist/lib/text/width.js +10 -52
- package/dist/lib/tmux/binary.d.ts +0 -36
- package/dist/lib/tmux/binary.js +0 -28
- package/dist/lib/tmux/index.d.ts +0 -5
- package/dist/lib/tmux/index.js +0 -5
- package/dist/lib/tmux/orphan-reap.d.ts +0 -253
- package/dist/lib/tmux/orphan-reap.js +3 -299
- package/dist/lib/tmux/paths.d.ts +0 -14
- package/dist/lib/tmux/paths.js +0 -14
- package/dist/lib/tmux/session.d.ts +0 -263
- package/dist/lib/tmux/session.js +6 -344
- package/dist/lib/traces/backend.d.ts +0 -20
- package/dist/lib/traces/backend.js +0 -23
- package/dist/lib/traces/classify.d.ts +0 -20
- package/dist/lib/traces/classify.js +0 -7
- package/dist/lib/traces/insights.d.ts +1 -84
- package/dist/lib/traces/insights.js +0 -126
- package/dist/lib/traces/phenotype.d.ts +0 -69
- package/dist/lib/traces/phenotype.js +0 -150
- package/dist/lib/traces/provision.d.ts +0 -1
- package/dist/lib/traces/provision.js +0 -5
- package/dist/lib/traces/schema2-build.d.ts +3 -60
- package/dist/lib/traces/schema2-build.js +8 -149
- package/dist/lib/traces/schema2-danger.d.ts +0 -30
- package/dist/lib/traces/schema2-danger.js +1 -63
- package/dist/lib/traces/schema2.d.ts +0 -11
- package/dist/lib/traces/segments.d.ts +0 -44
- package/dist/lib/traces/segments.js +0 -65
- package/dist/lib/traces/sync.d.ts +2 -239
- package/dist/lib/traces/sync.js +15 -237
- package/dist/lib/traces/worker-template.d.ts +0 -3
- package/dist/lib/traces/worker-template.js +0 -29
- package/dist/lib/triggers/handlers.d.ts +0 -82
- package/dist/lib/triggers/handlers.js +0 -75
- package/dist/lib/triggers/webhook.d.ts +0 -158
- package/dist/lib/triggers/webhook.js +0 -143
- package/dist/lib/types.d.ts +0 -736
- package/dist/lib/types.js +0 -50
- package/dist/lib/uninstall.d.ts +0 -17
- package/dist/lib/uninstall.js +0 -75
- package/dist/lib/usage-backoff.d.ts +0 -20
- package/dist/lib/usage-backoff.js +3 -60
- package/dist/lib/usage-refresh.d.ts +0 -154
- package/dist/lib/usage-refresh.js +8 -212
- package/dist/lib/verbs.d.ts +0 -12
- package/dist/lib/verbs.js +0 -12
- package/dist/lib/version-duplicates.d.ts +0 -6
- package/dist/lib/version-duplicates.js +0 -6
- package/dist/lib/version.d.ts +0 -55
- package/dist/lib/version.js +1 -58
- package/dist/lib/view-types.d.ts +0 -48
- package/dist/lib/warn-unpushed.d.ts +0 -27
- package/dist/lib/warn-unpushed.js +1 -45
- package/dist/lib/watchdog/history.d.ts +0 -1
- package/dist/lib/watchdog/history.js +0 -3
- package/dist/lib/watchdog/index.js +0 -2
- package/dist/lib/watchdog/log.d.ts +0 -19
- package/dist/lib/watchdog/log.js +0 -34
- package/dist/lib/watchdog/read.d.ts +0 -27
- package/dist/lib/watchdog/read.js +3 -58
- package/dist/lib/watchdog/rotate.d.ts +0 -139
- package/dist/lib/watchdog/rotate.js +2 -151
- package/dist/lib/watchdog/runner.d.ts +0 -125
- package/dist/lib/watchdog/runner.js +3 -223
- package/dist/lib/watchdog/service.d.ts +0 -1
- package/dist/lib/watchdog/service.js +0 -2
- package/dist/lib/watchdog/watchdog-agent.d.ts +0 -31
- package/dist/lib/watchdog/watchdog-agent.js +0 -27
- package/dist/lib/watchdog/watchdog.d.ts +0 -7
- package/dist/lib/watchdog/watchdog.js +0 -10
- package/dist/lib/watchdog/watchdogTail.js +0 -7
- package/dist/lib/whats-new.d.ts +0 -10
- package/dist/lib/whats-new.js +0 -21
- package/dist/lib/workflows-registry.d.ts +0 -45
- package/dist/lib/workflows-registry.js +0 -60
- package/dist/lib/workflows.d.ts +0 -282
- package/dist/lib/workflows.js +3 -213
- package/dist/lib/worktree/held.d.ts +0 -89
- package/dist/lib/worktree/held.js +1 -103
- package/dist/lib/wrap.d.ts +0 -32
- package/dist/lib/wrap.js +0 -32
- package/dist/lib/yaml-io.d.ts +0 -45
- package/dist/lib/yaml-io.js +0 -47
- package/dist/session-tracker/dist/adapters/claude.js +0 -2
- package/dist/session-tracker/dist/hook.sh +4 -37
- package/dist/session-tracker/dist/index.d.ts +0 -7
- package/dist/session-tracker/dist/index.js +0 -5
- package/dist/session-tracker/dist/install-hook.d.ts +0 -5
- package/dist/session-tracker/dist/install-hook.js +1 -15
- package/dist/session-tracker/dist/prune-state.js +0 -4
- package/dist/session-tracker/dist/reader.js +0 -4
- package/dist/session-tracker/dist/state-file.d.ts +0 -3
- package/dist/session-tracker/dist/state-file.js +3 -8
- package/package.json +3 -4
- package/scripts/postinstall.js +8 -116
- package/dist/lib/session/artifacts.d.ts +0 -14
- package/dist/lib/session/artifacts.js +0 -101
- package/dist/lib/session/bash-command.d.ts +0 -63
- package/dist/lib/session/bash-command.js +0 -490
- package/dist/lib/session/digest.d.ts +0 -66
- package/dist/lib/session/digest.js +0 -328
- package/dist/lib/session/highlights.d.ts +0 -151
- package/dist/lib/session/highlights.js +0 -391
- package/dist/lib/session/insights.d.ts +0 -165
- package/dist/lib/session/insights.js +0 -563
- package/dist/lib/session/linear.d.ts +0 -19
- package/dist/lib/session/linear.js +0 -99
- package/dist/lib/session/parse.d.ts +0 -224
- package/dist/lib/session/parse.js +0 -2408
- package/dist/lib/session/prompt.d.ts +0 -213
- package/dist/lib/session/prompt.js +0 -601
- package/dist/lib/session/render.d.ts +0 -133
- package/dist/lib/session/render.js +0 -1047
- package/dist/lib/session/share-html.d.ts +0 -35
- package/dist/lib/session/share-html.js +0 -319
- package/dist/lib/session/shell-programs.d.ts +0 -33
- package/dist/lib/session/shell-programs.js +0 -380
- package/dist/lib/session/state.d.ts +0 -269
- package/dist/lib/session/state.js +0 -777
- package/dist/lib/session/stream-render.d.ts +0 -4
- package/dist/lib/session/stream-render.js +0 -131
- package/dist/lib/session/tail.d.ts +0 -88
- package/dist/lib/session/tail.js +0 -294
- package/dist/lib/session/team-filter.d.ts +0 -129
- package/dist/lib/session/team-filter.js +0 -269
- package/dist/lib/session/timeline.d.ts +0 -172
- package/dist/lib/session/timeline.js +0 -636
- package/dist/lib/session/tool-calls.d.ts +0 -132
- package/dist/lib/session/tool-calls.js +0 -674
- package/dist/lib/session/trajectory-compare.d.ts +0 -48
- package/dist/lib/session/trajectory-compare.js +0 -116
- package/dist/lib/session/trajectory-html.d.ts +0 -19
- package/dist/lib/session/trajectory-html.js +0 -771
- package/dist/lib/session/trajectory-lineage.d.ts +0 -93
- package/dist/lib/session/trajectory-lineage.js +0 -195
- package/dist/lib/session/trajectory-text.d.ts +0 -38
- package/dist/lib/session/trajectory-text.js +0 -284
- package/dist/lib/session/trajectory.d.ts +0 -145
- package/dist/lib/session/trajectory.js +0 -394
- package/dist/lib/session/types.d.ts +0 -627
- package/dist/lib/session/types.js +0 -43
|
@@ -1,39 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Watchdog runner — the CONSUMER that wires the merged pure pieces into a
|
|
3
|
-
* working auto-nudge (RUSH-1415). The `agents watchdog` command drives it, so
|
|
4
|
-
* the whole loop runs WITHOUT the Swift menu-bar.
|
|
5
|
-
*
|
|
6
|
-
* One tick:
|
|
7
|
-
*
|
|
8
|
-
* getActiveSessions() (session/active.ts)
|
|
9
|
-
* -> classifyTerminal(...) per session (watchdog/watchdog.ts) — which are idle?
|
|
10
|
-
* -> readWatchdogTail(...) for the idle ones (watchdog/read.ts) — task + transcript tail
|
|
11
|
-
* -> the watchdog AGENT judges them ALL at once (watchdog/watchdog-agent.ts)
|
|
12
|
-
* — idle-but-unfinished -> nudge; idle-and-done / needs-human -> skip
|
|
13
|
-
* -> resolveInjectTargetForSession(...) (terminal/resolve.ts) — THE safety gate: addressable or an honest refusal
|
|
14
|
-
* -> injectIntoTerminal(target,text) (terminal/inject.ts) — deliver into the EXACT split, then CONFIRM
|
|
15
|
-
*
|
|
16
|
-
* There is no heuristic decider — no regex over the tail guessing done-vs-stuck.
|
|
17
|
-
* The agent is the whole decider, given every idle session's task + tail in ONE
|
|
18
|
-
* `agents run --mode plan` call per tick. The safety gate is absolute: a nudge is
|
|
19
|
-
* delivered ONLY when the resolver returns `addressable: true`, and it is booked in
|
|
20
|
-
* the cooldown ledger ONLY when delivery is CONFIRMED. On `addressable: false` the
|
|
21
|
-
* reason is recorded to a state file the menu-bar can surface and the session is
|
|
22
|
-
* SKIPPED — never a guessed / frontmost target.
|
|
23
|
-
*
|
|
24
|
-
* Persistence (all under ~/.agents/.cache/state/watchdog/, tray-readable):
|
|
25
|
-
* - nudges.json — { [sessionId]: lastNudgeMs } — enforces the cooldown.
|
|
26
|
-
* - flags.json — { [sessionId]: { reason, host, atMs } } — un-addressable stalls.
|
|
27
|
-
* - last-tick.json — the full outcome list from the most recent tick.
|
|
28
|
-
* - policy/<sessionId> — per-session sentinel: off | keep | handsoff.
|
|
29
|
-
* - rotate/<sessionId>.json — the in-place rotate state machine (rotate.ts).
|
|
30
|
-
* - rotate-skips.json — zero-healthy skip suppression: { [sessionId]: suppressUntilMs }.
|
|
31
|
-
*
|
|
32
|
-
* The pure logic (classifyTerminal) is imported and never re-implemented; the
|
|
33
|
-
* runner only supplies its I/O (sessions, tails, clock, policy, the agent decider,
|
|
34
|
-
* injection) — each an injectable seam so runner.test.ts drives real synthetic
|
|
35
|
-
* sessions without a live terminal or a real `agents run`.
|
|
36
|
-
*/
|
|
37
1
|
import * as fs from 'fs';
|
|
38
2
|
import * as path from 'path';
|
|
39
3
|
import * as crypto from 'crypto';
|
|
@@ -57,9 +21,7 @@ export const DEFAULT_THRESHOLDS = {
|
|
|
57
21
|
cooldownMs: WATCHDOG_COOLDOWN_MS,
|
|
58
22
|
dormantMs: WATCHDOG_DORMANT_MS,
|
|
59
23
|
};
|
|
60
|
-
/** The default nudge text — a short imperative, configurable via opts.nudgeText. */
|
|
61
24
|
const DEFAULT_NUDGE_TEXT = 'Continue.';
|
|
62
|
-
// --- state persistence ------------------------------------------------------
|
|
63
25
|
function watchdogStateDir(opts) {
|
|
64
26
|
return opts.stateDir ?? path.join(getRuntimeStateDir(), 'watchdog');
|
|
65
27
|
}
|
|
@@ -77,17 +39,11 @@ function writeJsonFile(file, value) {
|
|
|
77
39
|
fs.writeFileSync(file, JSON.stringify(value, null, 2));
|
|
78
40
|
}
|
|
79
41
|
catch {
|
|
80
|
-
/* best-effort: the tray tolerates a missing/partial state file */
|
|
81
42
|
}
|
|
82
43
|
}
|
|
83
|
-
/** Last-nudge timestamps keyed by sessionId (the cooldown ledger). */
|
|
84
44
|
function readNudgeLedger(dir) {
|
|
85
45
|
return readJsonFile(path.join(dir, 'nudges.json'), {});
|
|
86
46
|
}
|
|
87
|
-
/**
|
|
88
|
-
* On-disk per-session policy sentinel: `<stateDir>/policy/<sessionId>` whose
|
|
89
|
-
* contents are `off` | `keep` | `handsoff`. Absent / unreadable / unknown → keep.
|
|
90
|
-
*/
|
|
91
47
|
function readPolicySentinel(dir, sessionId) {
|
|
92
48
|
if (!sessionId)
|
|
93
49
|
return 'keep';
|
|
@@ -100,61 +56,39 @@ function readPolicySentinel(dir, sessionId) {
|
|
|
100
56
|
}
|
|
101
57
|
return raw === 'off' || raw === 'handsoff' ? raw : 'keep';
|
|
102
58
|
}
|
|
103
|
-
/** Write a per-session policy sentinel (used by the CLI `agents watchdog policy`). */
|
|
104
59
|
export function writePolicySentinel(dir, sessionId, policy) {
|
|
105
60
|
const file = path.join(dir, 'policy', sessionId);
|
|
106
61
|
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
107
62
|
fs.writeFileSync(file, policy + '\n');
|
|
108
63
|
}
|
|
109
|
-
// --- helpers ----------------------------------------------------------------
|
|
110
64
|
function defaultLastActivity(s) {
|
|
111
65
|
if (s.sessionFile) {
|
|
112
66
|
try {
|
|
113
67
|
return fs.statSync(s.sessionFile).mtimeMs;
|
|
114
68
|
}
|
|
115
69
|
catch {
|
|
116
|
-
/* file vanished */
|
|
117
70
|
}
|
|
118
71
|
}
|
|
119
72
|
return s.startedAtMs;
|
|
120
73
|
}
|
|
121
|
-
/**
|
|
122
|
-
* Pick the delivery mechanism. resolveAnswerRoute (answer-router.ts) chooses
|
|
123
|
-
* mailbox vs resume vs refuse; resolveInjectTargetForSession (resolve.ts) supplies
|
|
124
|
-
* the precise inject target — CRUCIALLY it handles the vscodium rail that the
|
|
125
|
-
* answer-router's own resolver cannot, so an IDE-terminal (VS Codium / Cursor /
|
|
126
|
-
* VS Code) session parked on a question is injected into its exact terminal rather
|
|
127
|
-
* than being downgraded to resume/refuse. When a precise rail exists it wins
|
|
128
|
-
* (that includes a stalled non-parked agent, so the v1 terminal-inject path is
|
|
129
|
-
* preserved and no nudge is stranded in a mailbox the agent will never poll).
|
|
130
|
-
*/
|
|
131
74
|
function planDelivery(session, chosenText, block, allowGhosttyFocus) {
|
|
132
75
|
const sessionId = session.sessionId ?? '';
|
|
133
76
|
const mailboxId = mailboxIdForActiveSession(session) ?? sessionId;
|
|
134
77
|
const resolution = resolveInjectTargetForSession(session, { allowGhosttyFocus });
|
|
135
78
|
const route = resolveAnswerRoute({ mailboxId, answer: chosenText, session, block });
|
|
136
|
-
// A precise split (tmux / iTerm / vscodium) is the authoritative target.
|
|
137
79
|
if (resolution.addressable) {
|
|
138
80
|
return { via: 'inject', rail: resolution.rail, target: resolution.target };
|
|
139
81
|
}
|
|
140
|
-
// No precise rail: honor the answer-router's parked-agent decision.
|
|
141
82
|
if (route.kind === 'resume')
|
|
142
83
|
return { via: 'resume' };
|
|
143
|
-
// Mailbox is correct ONLY for a still-looping agent that has an OPEN question
|
|
144
|
-
// block — it is seen at the next tool call. A stalled agent that simply stopped
|
|
145
|
-
// (no open block) would never poll the mailbox, so it is flagged instead of
|
|
146
|
-
// silently dropping a nudge into a spool it will never read.
|
|
147
84
|
if (route.kind === 'mailbox' && isOpenQuestionBlock(block))
|
|
148
85
|
return { via: 'mailbox', mailboxId };
|
|
149
86
|
return {
|
|
150
87
|
via: 'refuse',
|
|
151
|
-
// answer-router's refuse reason already bakes in the recovery hint; the
|
|
152
|
-
// resolver's reason does not, so carry hint separately for the caller.
|
|
153
88
|
reason: route.kind === 'refuse' ? route.reason : resolution.reason,
|
|
154
89
|
hint: route.kind === 'refuse' ? undefined : resolution.hint,
|
|
155
90
|
};
|
|
156
91
|
}
|
|
157
|
-
/** Default open-block reader — the same lookup `agents message` uses. */
|
|
158
92
|
function defaultOpenBlockFor(session) {
|
|
159
93
|
const id = mailboxIdForActiveSession(session) ?? session.sessionId;
|
|
160
94
|
if (!id)
|
|
@@ -164,11 +98,9 @@ function defaultOpenBlockFor(session) {
|
|
|
164
98
|
return direct;
|
|
165
99
|
return null;
|
|
166
100
|
}
|
|
167
|
-
/** Enqueue a nudge into a session's mailbox (running agent, seen at next tool call). */
|
|
168
101
|
function deliverViaMailbox(mailboxId, text, block) {
|
|
169
102
|
enqueue(mailboxDir(mailboxId), { to: mailboxId, text, from: 'watchdog', blockId: block?.blockId });
|
|
170
103
|
}
|
|
171
|
-
/** Re-enter a parked headless agent with the nudge as its next user turn. */
|
|
172
104
|
async function deliverViaResume(session, text) {
|
|
173
105
|
const sid = session.sessionId;
|
|
174
106
|
if (!sid)
|
|
@@ -190,7 +122,6 @@ async function deliverViaResume(session, text) {
|
|
|
190
122
|
return { ok: false, error: err instanceof Error ? err.message : String(err) };
|
|
191
123
|
}
|
|
192
124
|
}
|
|
193
|
-
/** The one-line reason a rotate outcome carries. */
|
|
194
125
|
function rotateOutcomeReason(s) {
|
|
195
126
|
switch (s.phase) {
|
|
196
127
|
case 'awaiting-tui':
|
|
@@ -203,23 +134,11 @@ function rotateOutcomeReason(s) {
|
|
|
203
134
|
return `rotate in flight (${s.phase})`;
|
|
204
135
|
}
|
|
205
136
|
}
|
|
206
|
-
/**
|
|
207
|
-
* Advance ONE in-flight rotate by a single tick. Only `awaiting-tui` normally
|
|
208
|
-
* spans ticks (the exit sequence kills the old session, so the machine resumes
|
|
209
|
-
* here on the next pass); `exiting`/`launching`/`replaying` persisted on disk
|
|
210
|
-
* are crash residue — the first two fall through to the readiness probe (the
|
|
211
|
-
* launch may or may not have landed; the probe/deadline decides), a `replaying`
|
|
212
|
-
* residue re-delivers the replay. On the readiness deadline the session is
|
|
213
|
-
* FAILED + flagged and the machine stops — never blind-type into a dead shell.
|
|
214
|
-
*/
|
|
215
137
|
async function advanceRotate(state, deps) {
|
|
216
138
|
let s = state;
|
|
217
139
|
const fail = (error) => {
|
|
218
140
|
s = {
|
|
219
141
|
...s, phase: 'failed', error, updatedAtMs: deps.nowMs,
|
|
220
|
-
// Failed-rotate retry cooldown (honored at begin): without it a session
|
|
221
|
-
// whose old TUI ignored the exit sequence re-begins and deadline-fails
|
|
222
|
-
// every tick forever.
|
|
223
142
|
suppressUntilMs: deps.nowMs + DEFAULT_ROTATE_FAILED_COOLDOWN_MS,
|
|
224
143
|
};
|
|
225
144
|
writeRotateState(deps.dir, s);
|
|
@@ -241,14 +160,14 @@ async function advanceRotate(state, deps) {
|
|
|
241
160
|
`into a possibly-dead shell; the terminal may sit at a BARE SHELL now: relaunch manually with ` +
|
|
242
161
|
`\`agents run auto\` (there is no automatic recovery)`);
|
|
243
162
|
}
|
|
244
|
-
return s;
|
|
163
|
+
return s;
|
|
245
164
|
}
|
|
246
165
|
s = { ...s, phase: 'replaying', updatedAtMs: deps.nowMs };
|
|
247
166
|
writeRotateState(deps.dir, s);
|
|
248
167
|
}
|
|
249
168
|
if (s.phase === 'replaying') {
|
|
250
169
|
if (!deps.mayInject)
|
|
251
|
-
return s;
|
|
170
|
+
return s;
|
|
252
171
|
let ok = true;
|
|
253
172
|
let error;
|
|
254
173
|
try {
|
|
@@ -271,13 +190,6 @@ async function advanceRotate(state, deps) {
|
|
|
271
190
|
}
|
|
272
191
|
return s;
|
|
273
192
|
}
|
|
274
|
-
// --- the tick ---------------------------------------------------------------
|
|
275
|
-
/**
|
|
276
|
-
* Run ONE watchdog pass. Returns a structured outcome per live session; injects
|
|
277
|
-
* only when `opts.nudge` is set AND the safety gate says addressable AND policy
|
|
278
|
-
* permits. Persists the cooldown ledger, un-addressable flags, and a last-tick
|
|
279
|
-
* snapshot to the tray-readable state dir.
|
|
280
|
-
*/
|
|
281
193
|
export async function runWatchdogTick(opts = {}) {
|
|
282
194
|
const nowMs = opts.nowMs ?? Date.now();
|
|
283
195
|
const nudgeText = opts.nudgeText ?? DEFAULT_NUDGE_TEXT;
|
|
@@ -289,14 +201,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
289
201
|
const openBlockFor = opts.openBlockFor ?? defaultOpenBlockFor;
|
|
290
202
|
const injectFn = opts.injectFn ?? injectIntoTerminal;
|
|
291
203
|
const publishBlockFn = opts.publishBlockFn ?? publishBlock;
|
|
292
|
-
// Rotate seams (watchdog/rotate.ts). The config is read fresh per tick
|
|
293
|
-
// (readMeta is mtime-cached), so a `watchdog.rotate` flip is honored on the
|
|
294
|
-
// next pass. The default readiness probe (defaultTuiLiveFor) treats the
|
|
295
|
-
// new-session-id transcript as PRIMARY (a claude pick honors --session-id)
|
|
296
|
-
// with a CORRELATED fallback: a fresh active session counts only when it
|
|
297
|
-
// started after the rotate began AND shares the old session's cwd and
|
|
298
|
-
// machine — an unrelated fresh session on a busy box must never satisfy it
|
|
299
|
-
// (that would type the replay into a bare shell when the relaunch failed).
|
|
300
204
|
const rotateEnabled = opts.rotate ?? isWatchdogRotateEnabled();
|
|
301
205
|
const rotateGate = opts.rotateGate ?? defaultRotateGate;
|
|
302
206
|
const newSessionIdFor = opts.newSessionIdFor ?? (() => crypto.randomUUID());
|
|
@@ -304,13 +208,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
304
208
|
const rotateKeyDelayMs = opts.rotateKeyDelayMs ?? 300;
|
|
305
209
|
const tuiLiveFor = opts.tuiLiveFor ?? defaultTuiLiveFor;
|
|
306
210
|
const sessions = opts.sessions ?? (await getActiveSessions());
|
|
307
|
-
// RUSH-2007 Layer C — reconcile per-session presence from this tick's active
|
|
308
|
-
// scan and persist it. Additive: it derives connect/disconnect from what this
|
|
309
|
-
// tick actually saw and surfaces the flips (interactive drop => reconnect-nudge
|
|
310
|
-
// candidate, headless remote => keep-alive) for the tray/status, without
|
|
311
|
-
// touching the nudge decisions below. Uses the tick's own session view (fleet-
|
|
312
|
-
// wide when the caller passes gatherRemoteActive results), so it adds no SSH
|
|
313
|
-
// fan-out of its own.
|
|
314
211
|
const presenceResult = reconcilePresence(loadPresence(dir), observedFromActive(sessions), nowMs);
|
|
315
212
|
savePresence(presenceResult.next, dir);
|
|
316
213
|
const presence = {
|
|
@@ -319,16 +216,11 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
319
216
|
transitions: presenceResult.transitions,
|
|
320
217
|
};
|
|
321
218
|
const ledger = readNudgeLedger(dir);
|
|
322
|
-
// Cooldown timestamps this tick decided to (re)start — merged into the ledger
|
|
323
|
-
// under a lock at the end so a concurrent tick's updates are never lost.
|
|
324
219
|
const ledgerUpdates = {};
|
|
325
220
|
const flags = {};
|
|
326
221
|
const outcomes = [];
|
|
327
222
|
const logEvents = [];
|
|
328
223
|
const viaLabel = (plan) => plan.via === 'inject' ? `inject (${plan.rail})` : plan.via;
|
|
329
|
-
// Rotate bookkeeping for this tick: ids the in-loop path already advanced
|
|
330
|
-
// (the post-loop sweep handles the rest — a session whose exit sequence
|
|
331
|
-
// killed it drops out of the active list, so only the sweep can finish it).
|
|
332
224
|
const advancedRotates = new Set();
|
|
333
225
|
const rotateDeps = {
|
|
334
226
|
dir, nowMs, sessions,
|
|
@@ -337,14 +229,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
337
229
|
injectDryRun: opts.injectDryRun,
|
|
338
230
|
logEvents, flags,
|
|
339
231
|
};
|
|
340
|
-
// --- decide, once, with the AGENT ------------------------------------------
|
|
341
|
-
// Classify every session up front, collect the idle ones (with their task +
|
|
342
|
-
// tail), and hand the WHOLE idle set to the watchdog agent in ONE call
|
|
343
|
-
// (WD-GAP-1: the decider sees the fleet at once, not a lone tail). Tails are
|
|
344
|
-
// cached so the main loop below does not re-read them. Tests inject a
|
|
345
|
-
// per-candidate `smartDecider`; production runs one batched
|
|
346
|
-
// `agents run --mode plan` (watchdog-agent.ts). A session the agent returns no
|
|
347
|
-
// verdict for is a SAFE skip, never a blind nudge.
|
|
348
232
|
const tailCache = new Map();
|
|
349
233
|
const idleCandidates = [];
|
|
350
234
|
for (const session of sessions) {
|
|
@@ -364,10 +248,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
364
248
|
continue;
|
|
365
249
|
const tail = tailFor(session);
|
|
366
250
|
tailCache.set(sid, tail);
|
|
367
|
-
// Rotate takes precedence over the nudge agent: a session with an in-flight
|
|
368
|
-
// rotate (or in the failed-rotate cooldown) or a HARD account-limit tail is
|
|
369
|
-
// owned by the rotate machine in the loop below — a capped account cannot be
|
|
370
|
-
// "Continue."d, so the agent must not judge it (and is never even consulted).
|
|
371
251
|
if (rotateEnabled) {
|
|
372
252
|
const inflight = readRotateState(dir, sid);
|
|
373
253
|
if (inflight && (isInflightPhase(inflight.phase) || (inflight.phase === 'failed' && (inflight.suppressUntilMs ?? 0) > nowMs)))
|
|
@@ -390,22 +270,14 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
390
270
|
const decisionByTerminal = new Map();
|
|
391
271
|
if (idleCandidates.length > 0) {
|
|
392
272
|
if (opts.smartDecider) {
|
|
393
|
-
// Test seam: a synthetic per-candidate decider, called once per candidate. A
|
|
394
|
-
// skip with no explicit needsHuman defaults to surfacing it (same rule as the
|
|
395
|
-
// agent path) so an unfinished session is never silently abandoned.
|
|
396
273
|
for (const { session, candidate } of idleCandidates) {
|
|
397
274
|
const raw = await opts.smartDecider(session, candidate);
|
|
398
275
|
decisionByTerminal.set(candidate.terminalId, raw.nudge ? raw : { ...raw, needsHuman: raw.needsHuman ?? true });
|
|
399
276
|
}
|
|
400
277
|
}
|
|
401
278
|
else {
|
|
402
|
-
// Production: ONE batched agent call for every idle session this tick.
|
|
403
279
|
const decide = opts.agentDecider ?? makeWatchdogAgentDecider(opts.smartAgent ?? 'claude');
|
|
404
280
|
const verdicts = await decide(idleCandidates.map((e) => e.candidate));
|
|
405
|
-
// A decider outage (agent unavailable / timeout) returns no verdicts while
|
|
406
|
-
// idle sessions exist — surface it as an error so it is not an invisible
|
|
407
|
-
// no-op tick (the watchdog silently steering nothing is the failure mode
|
|
408
|
-
// this whole subsystem exists to prevent).
|
|
409
281
|
if (verdicts.size === 0) {
|
|
410
282
|
logEvents.push({
|
|
411
283
|
ts: nowMs, kind: 'error',
|
|
@@ -419,17 +291,8 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
419
291
|
nudge: d.action === 'nudge',
|
|
420
292
|
reason: d.reason || `agent: ${d.action}`,
|
|
421
293
|
text: d.text || undefined,
|
|
422
|
-
// A skip with no explicit needsHuman defaults to surfacing it —
|
|
423
|
-
// never silently abandon an unfinished session (the highest-risk state).
|
|
424
294
|
needsHuman: d.action === 'skip' ? d.needsHuman ?? true : undefined,
|
|
425
295
|
}
|
|
426
|
-
// No verdict for this session — the agent couldn't decide (partial or a
|
|
427
|
-
// decider outage). A NEUTRAL safe-skip: NOT "done" (needsHuman stays
|
|
428
|
-
// undefined, so it is never logged as finished and the reminder never
|
|
429
|
-
// fires), nothing booked, so the next tick re-evaluates it once the
|
|
430
|
-
// decider is back. Marking it done (needsHuman:false) would let an
|
|
431
|
-
// outage abandon every idle session; marking it needsHuman would spam a
|
|
432
|
-
// "you're stuck" reminder into every idle terminal on any outage.
|
|
433
296
|
: { nudge: false, reason: 'watchdog agent returned no verdict — retry next tick' });
|
|
434
297
|
}
|
|
435
298
|
}
|
|
@@ -461,14 +324,10 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
461
324
|
reason: '',
|
|
462
325
|
nudgeText,
|
|
463
326
|
};
|
|
464
|
-
// A session with no id can neither be addressed nor cooldown-tracked.
|
|
465
327
|
if (!session.sessionId) {
|
|
466
328
|
outcomes.push({ ...base, reason: 'no session id (cannot address or track)' });
|
|
467
329
|
continue;
|
|
468
330
|
}
|
|
469
|
-
// `off` = fully opted out. We short-circuit here rather than relying on
|
|
470
|
-
// classifyTerminal (which is always called with optedOut: false below), so the
|
|
471
|
-
// policy reason is reported explicitly.
|
|
472
331
|
if (policy === 'off') {
|
|
473
332
|
outcomes.push({ ...base, stall: 'opted_out', reason: 'policy: off (opted out)' });
|
|
474
333
|
continue;
|
|
@@ -498,7 +357,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
498
357
|
continue;
|
|
499
358
|
}
|
|
500
359
|
base.stalledForMs = status.stalledForMs;
|
|
501
|
-
// Stalled — reuse the tail the pre-pass already read for the agent.
|
|
502
360
|
const tailLines = tailCache.get(session.sessionId) ?? tailFor(session);
|
|
503
361
|
const candidate = {
|
|
504
362
|
terminalId: session.sessionId,
|
|
@@ -506,10 +364,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
506
364
|
tailLines,
|
|
507
365
|
stalledForMs: status.stalledForMs,
|
|
508
366
|
};
|
|
509
|
-
// --- rotate path (watchdog/rotate.ts) -----------------------------------
|
|
510
|
-
// An in-flight rotate OWNS this session: advance the machine, never nudge.
|
|
511
|
-
// A stalled session whose tail shows a HARD LIMIT rotates in place instead
|
|
512
|
-
// of nudging — "Continue." cannot unspend a capped account.
|
|
513
367
|
if (rotateEnabled) {
|
|
514
368
|
const sid = session.sessionId;
|
|
515
369
|
const inflight = readRotateState(dir, sid);
|
|
@@ -522,9 +376,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
522
376
|
});
|
|
523
377
|
continue;
|
|
524
378
|
}
|
|
525
|
-
// Failed-rotate retry cooldown: a terminal that already failed (e.g. its
|
|
526
|
-
// old TUI ignored the exit sequence) is not re-entered until the
|
|
527
|
-
// suppression recorded at the failure lapses.
|
|
528
379
|
if (inflight && inflight.phase === 'failed' && (inflight.suppressUntilMs ?? 0) > nowMs) {
|
|
529
380
|
outcomes.push({
|
|
530
381
|
...base, decision: 'skip', rotatePhase: 'failed',
|
|
@@ -534,7 +385,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
534
385
|
}
|
|
535
386
|
const verdict = classifyTailForRotate(tailLines, nowMs);
|
|
536
387
|
if (verdict.kind === 'rate_limited') {
|
|
537
|
-
// handsoff = detect + flag, but never rotate (mirrors the nudge path).
|
|
538
388
|
if (policy === 'handsoff') {
|
|
539
389
|
flags[sid] = {
|
|
540
390
|
reason: 'handsoff: rate-limited, would rotate in place but policy is hands-off',
|
|
@@ -547,7 +397,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
547
397
|
});
|
|
548
398
|
continue;
|
|
549
399
|
}
|
|
550
|
-
// Dry tick (no --nudge): report what WOULD happen, touch nothing.
|
|
551
400
|
if (!opts.nudge) {
|
|
552
401
|
outcomes.push({
|
|
553
402
|
...base, decision: 'rotate',
|
|
@@ -555,12 +404,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
555
404
|
});
|
|
556
405
|
continue;
|
|
557
406
|
}
|
|
558
|
-
// First-party health gate — the SAME selection `agents run auto` would
|
|
559
|
-
// make. Zero healthy → ONE skip event per cooldown window, terminal
|
|
560
|
-
// untouched. Cooldown = earliestResetAcross (gate) → parsed tail reset
|
|
561
|
-
// → 30m default, whichever is known first. A gate THROW degrades to a
|
|
562
|
-
// skip for this session — it must never abort the whole tick (which
|
|
563
|
-
// would skip last-tick.json and every other session's decision).
|
|
564
407
|
let gate;
|
|
565
408
|
try {
|
|
566
409
|
gate = await rotateGate();
|
|
@@ -596,8 +439,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
596
439
|
});
|
|
597
440
|
continue;
|
|
598
441
|
}
|
|
599
|
-
// The safety gate is the same one the nudge path obeys: an exact
|
|
600
|
-
// addressable rail or an honest flag — never a guessed target.
|
|
601
442
|
const resolution = resolveInjectTargetForSession(session, { allowGhosttyFocus: opts.allowGhosttyFocus });
|
|
602
443
|
if (!resolution.addressable) {
|
|
603
444
|
flags[sid] = { reason: `rotate: ${resolution.reason}`, host: session.host, atMs: nowMs };
|
|
@@ -609,9 +450,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
609
450
|
});
|
|
610
451
|
continue;
|
|
611
452
|
}
|
|
612
|
-
// Begin: persist exiting → inject the per-harness exit sequence →
|
|
613
|
-
// launching → inject `agents run auto` → awaiting-tui (bounded). cwd +
|
|
614
|
-
// machineHost are stored for the readiness fallback's correlation.
|
|
615
453
|
const newSessionId = newSessionIdFor();
|
|
616
454
|
let state = {
|
|
617
455
|
sessionId: sid,
|
|
@@ -641,7 +479,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
641
479
|
rotateFailed = `exit sequence inject threw: ${err instanceof Error ? err.message : String(err)}`;
|
|
642
480
|
break;
|
|
643
481
|
}
|
|
644
|
-
// A real TUI needs a beat between Esc and the interrupt pair.
|
|
645
482
|
if (rotateKeyDelayMs > 0 && !opts.injectDryRun) {
|
|
646
483
|
await new Promise((resolve) => setTimeout(resolve, rotateKeyDelayMs));
|
|
647
484
|
}
|
|
@@ -689,12 +526,9 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
689
526
|
continue;
|
|
690
527
|
}
|
|
691
528
|
}
|
|
692
|
-
// The decision was made up front by the watchdog agent over the whole idle
|
|
693
|
-
// set (see the pre-pass). A session with no verdict is a safe skip.
|
|
694
529
|
const decision = decisionByTerminal.get(session.sessionId) ??
|
|
695
530
|
{ nudge: false, reason: 'not evaluated by the watchdog agent', needsHuman: false };
|
|
696
531
|
const chosenText = decision.text ?? nudgeText;
|
|
697
|
-
// Log the decision for the Factory watchdog card.
|
|
698
532
|
const summary = summarizeWatchdogTail(tailLines, candidate.agentType);
|
|
699
533
|
logEvents.push({
|
|
700
534
|
ts: nowMs,
|
|
@@ -710,11 +544,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
710
544
|
lastAssistantMessage: summary.lastAssistantMessage,
|
|
711
545
|
});
|
|
712
546
|
if (!decision.nudge) {
|
|
713
|
-
// Brain explicitly concluded "leave for human" (needsHuman === true). Inject a
|
|
714
|
-
// self-file reminder into the agent's terminal so it knows to post a feed block.
|
|
715
|
-
// Cheap deterministic skips (session done, no stall) are NOT reminder-worthy —
|
|
716
|
-
// guard on needsHuman so a finished session is never poked.
|
|
717
|
-
// Gated by the same cooldown as a nudge to prevent re-firing every 2-minute tick.
|
|
718
547
|
if (decision.needsHuman) {
|
|
719
548
|
const lastNudgeMs = ledger[session.sessionId ?? ''] ?? 0;
|
|
720
549
|
const cooldownMs = thresholds.cooldownMs;
|
|
@@ -722,10 +551,8 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
722
551
|
if (opts.nudge && session.sessionId && !withinCooldown) {
|
|
723
552
|
const existingBlock = openBlockFor(session);
|
|
724
553
|
if (existingBlock === null) {
|
|
725
|
-
// Determine addressability without planning the full nudge (no text needed).
|
|
726
554
|
const resolution = resolveInjectTargetForSession(session, { allowGhosttyFocus: opts.allowGhosttyFocus });
|
|
727
555
|
if (resolution.addressable) {
|
|
728
|
-
// Addressable → inject a reminder asking the agent to self-file a feed block.
|
|
729
556
|
const reminderText = 'You appear stuck. If you genuinely need Muqsit, file it: ' +
|
|
730
557
|
'agents feed post "<one-line ask>" --blocked --default "<safe default>". ' +
|
|
731
558
|
'Otherwise keep going.';
|
|
@@ -733,15 +560,10 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
733
560
|
await injectFn(resolution.target, reminderText, { dryRun: opts.injectDryRun });
|
|
734
561
|
}
|
|
735
562
|
catch {
|
|
736
|
-
// Swallow inject errors — reminder is best-effort; flag set below.
|
|
737
563
|
}
|
|
738
564
|
ledgerUpdates[session.sessionId] = nowMs;
|
|
739
565
|
}
|
|
740
566
|
else {
|
|
741
|
-
// Un-addressable → we can't reach the terminal to remind it, so the ONLY
|
|
742
|
-
// way to reach Muqsit is to file a declared block on the agent's behalf.
|
|
743
|
-
// This is the most important case: the session genuinely needs the human
|
|
744
|
-
// AND the watchdog can't even nudge it. Never let it silently vanish.
|
|
745
567
|
const mailboxId = mailboxIdForActiveSession(session) ?? session.sessionId;
|
|
746
568
|
const machineHost = session.provenance?.host ?? 'unknown';
|
|
747
569
|
const runtime = session.kind;
|
|
@@ -755,7 +577,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
755
577
|
ledgerUpdates[session.sessionId] = nowMs;
|
|
756
578
|
}
|
|
757
579
|
catch {
|
|
758
|
-
// publishBlock failure is non-fatal — best-effort owner page.
|
|
759
580
|
}
|
|
760
581
|
}
|
|
761
582
|
}
|
|
@@ -764,21 +585,11 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
764
585
|
outcomes.push({ ...base, decision: 'skip', reason: decision.reason });
|
|
765
586
|
continue;
|
|
766
587
|
}
|
|
767
|
-
// A nudge is warranted — plan delivery (answer-router picks mailbox/resume/
|
|
768
|
-
// refuse; resolveInjectTargetForSession supplies the vscodium-aware inject
|
|
769
|
-
// target) BEFORE any side effect.
|
|
770
588
|
const block = openBlockFor(session);
|
|
771
589
|
const plan = planDelivery(session, chosenText, block, opts.allowGhosttyFocus);
|
|
772
590
|
const rail = plan.via === 'inject' ? plan.rail : undefined;
|
|
773
591
|
const addressable = plan.via === 'inject' ? true : undefined;
|
|
774
592
|
if (plan.via === 'refuse') {
|
|
775
|
-
// No addressable rail and not headless-resumable — flag, NEVER guess.
|
|
776
|
-
// This branch is reached ONLY for a nudge-worthy (decision.nudge === true)
|
|
777
|
-
// drive-forward poke, which is NEVER needsHuman (needsHuman is set only when
|
|
778
|
-
// decision.nudge === false). So we do NOT page the owner here — a short "just
|
|
779
|
-
// needs a poke" stall must not text Muqsit's phone. Owner-paging for an
|
|
780
|
-
// un-addressable session happens only on the confirmed needsHuman skip path
|
|
781
|
-
// above. Here we only flag it for the tray.
|
|
782
593
|
flags[session.sessionId] = { reason: plan.reason, host: session.host, atMs: nowMs };
|
|
783
594
|
outcomes.push({
|
|
784
595
|
...base, decision: 'skip', addressable: false,
|
|
@@ -789,14 +600,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
789
600
|
});
|
|
790
601
|
continue;
|
|
791
602
|
}
|
|
792
|
-
// handsoff = detect + flag, but never deliver via inject/mailbox.
|
|
793
|
-
// This branch is reached ONLY for a nudge-worthy (decision.nudge === true)
|
|
794
|
-
// drive-forward poke, which is NEVER needsHuman. A hands-off policy means "don't
|
|
795
|
-
// nudge it forward" — it must NOT translate into paging Muqsit for a poke. So we
|
|
796
|
-
// only flag it for the tray, no owner page. A genuinely needs-human session (even
|
|
797
|
-
// under hands-off) is paged by the confirmed-needsHuman skip path above, which
|
|
798
|
-
// does not consult policy — hands-off silences the forward nudge, not the
|
|
799
|
-
// "it's actually stuck" signal.
|
|
800
603
|
if (policy === 'handsoff') {
|
|
801
604
|
flags[session.sessionId] = {
|
|
802
605
|
reason: `handsoff: would nudge via ${viaLabel(plan)} but policy is hands-off`,
|
|
@@ -810,7 +613,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
810
613
|
});
|
|
811
614
|
continue;
|
|
812
615
|
}
|
|
813
|
-
// Dry status (no --nudge): report what WOULD happen, deliver nothing.
|
|
814
616
|
if (!opts.nudge) {
|
|
815
617
|
outcomes.push({
|
|
816
618
|
...base, decision: 'nudge', addressable, rail, via: plan.via, injected: false,
|
|
@@ -819,11 +621,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
819
621
|
});
|
|
820
622
|
continue;
|
|
821
623
|
}
|
|
822
|
-
// Deliver. injectDryRun exercises the path without a real side effect: inject
|
|
823
|
-
// still calls injectFn (which honors dryRun), mailbox/resume are short-circuited.
|
|
824
|
-
// `confirmed` distinguishes a delivery we KNOW reached the agent (tmux/iterm,
|
|
825
|
-
// mailbox, resume) from one merely dispatched (vscodium's fire-and-forget
|
|
826
|
-
// --open-url). Only a CONFIRMED delivery is booked as a landed nudge.
|
|
827
624
|
let delivered;
|
|
828
625
|
if (plan.via === 'inject') {
|
|
829
626
|
try {
|
|
@@ -852,7 +649,7 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
852
649
|
delivered = opts.injectDryRun ? { ok: true, confirmed: true } : { ...(await deliverViaResume(session, chosenText)), confirmed: true };
|
|
853
650
|
}
|
|
854
651
|
if (delivered.ok && delivered.confirmed) {
|
|
855
|
-
ledgerUpdates[session.sessionId] = nowMs;
|
|
652
|
+
ledgerUpdates[session.sessionId] = nowMs;
|
|
856
653
|
logEvents.push({
|
|
857
654
|
ts: nowMs, kind: 'nudge', terminalId: session.sessionId, agentType: candidate.agentType,
|
|
858
655
|
message: `nudged via ${viaLabel(plan)}`, reason: decision.reason, nudgeText: chosenText,
|
|
@@ -864,11 +661,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
864
661
|
});
|
|
865
662
|
}
|
|
866
663
|
else if (delivered.ok && !delivered.confirmed) {
|
|
867
|
-
// Dispatched but UNCONFIRMED (vscodium --open-url handed off, but the ext may
|
|
868
|
-
// have no-op'd the verb). Do NOT claim it landed — record `undelivered` in
|
|
869
|
-
// history so the phantom-nudge is visible. Still start the cooldown so a
|
|
870
|
-
// possibly-working ext session is not re-nudged every tick; the honest
|
|
871
|
-
// `undelivered` signal tells the operator to ship the swarm-ext ack.
|
|
872
664
|
ledgerUpdates[session.sessionId] = nowMs;
|
|
873
665
|
logEvents.push({
|
|
874
666
|
ts: nowMs, kind: 'undelivered', terminalId: session.sessionId, agentType: candidate.agentType,
|
|
@@ -889,20 +681,11 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
889
681
|
});
|
|
890
682
|
}
|
|
891
683
|
}
|
|
892
|
-
// Advance in-flight rotates the in-loop path did NOT touch — critically the
|
|
893
|
-
// common case where the exit sequence killed the old harness, so the old
|
|
894
|
-
// session dropped out of the active-session list and only this sweep can
|
|
895
|
-
// finish the machine (readiness → replay, or deadline → fail + flag). Runs
|
|
896
|
-
// even when rotate was just disabled so a mid-flight machine is never
|
|
897
|
-
// stranded; a dry tick advances state but never injects (mayInject).
|
|
898
684
|
for (const inflight of listInflightRotates(dir)) {
|
|
899
685
|
if (advancedRotates.has(inflight.sessionId))
|
|
900
686
|
continue;
|
|
901
687
|
await advanceRotate(inflight, rotateDeps);
|
|
902
688
|
}
|
|
903
|
-
// Persist the cooldown ledger under a lock: fresh-read + merge this tick's
|
|
904
|
-
// updates + atomic write, so a concurrent tick's timestamps are never lost
|
|
905
|
-
// (the old unlocked read-at-start / write-at-end was a lost-update race).
|
|
906
689
|
if (Object.keys(ledgerUpdates).length > 0) {
|
|
907
690
|
const nudgesPath = path.join(dir, 'nudges.json');
|
|
908
691
|
const ledgerLock = path.join(dir, '.ledger.lock');
|
|
@@ -916,7 +699,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
916
699
|
});
|
|
917
700
|
}
|
|
918
701
|
catch {
|
|
919
|
-
/* best-effort: a lock failure must not throw out of a tick */
|
|
920
702
|
}
|
|
921
703
|
}
|
|
922
704
|
writeJsonFile(path.join(dir, 'flags.json'), flags);
|
|
@@ -930,8 +712,6 @@ export async function runWatchdogTick(opts = {}) {
|
|
|
930
712
|
};
|
|
931
713
|
const result = { atMs: nowMs, didNudge: opts.nudge === true, outcomes, counts, presence };
|
|
932
714
|
writeJsonFile(path.join(dir, 'last-tick.json'), result);
|
|
933
|
-
// Heartbeat + decision/nudge events to the canonical watchdog.log the Factory
|
|
934
|
-
// Floor reads. Best-effort; never throws into the tick.
|
|
935
715
|
logEvents.push({
|
|
936
716
|
ts: nowMs,
|
|
937
717
|
kind: 'tick',
|
|
@@ -11,6 +11,5 @@ interface WatchdogPassOptions {
|
|
|
11
11
|
mailboxGc?: boolean;
|
|
12
12
|
}
|
|
13
13
|
export declare function loadWatchdogSessions(): Promise<ActiveSession[]>;
|
|
14
|
-
/** Execute one watchdog pass from the daemon or the explicit CLI command. */
|
|
15
14
|
export declare function runWatchdogPass(opts: WatchdogPassOptions): Promise<WatchdogTickResult>;
|
|
16
15
|
export {};
|
|
@@ -17,10 +17,8 @@ function runWatchdogMailboxGc(sessions) {
|
|
|
17
17
|
gcMailbox(activeBoxIds);
|
|
18
18
|
}
|
|
19
19
|
catch {
|
|
20
|
-
// Housekeeping is retried by the next daemon tick.
|
|
21
20
|
}
|
|
22
21
|
}
|
|
23
|
-
/** Execute one watchdog pass from the daemon or the explicit CLI command. */
|
|
24
22
|
export async function runWatchdogPass(opts) {
|
|
25
23
|
const sessions = opts.sessions ?? await loadWatchdogSessions();
|
|
26
24
|
const result = await runWatchdogTick({
|
|
@@ -1,37 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The watchdog AGENT — the whole decider, in ONE call per tick.
|
|
3
|
-
*
|
|
4
|
-
* The watchdog does not use a heuristic script to guess idle-vs-unfinished. It
|
|
5
|
-
* hands every idle session's task + tail to an agent (via `agents run <target>
|
|
6
|
-
* --mode plan`, read-only) and asks it, for each, whether it is idle-but-unfinished
|
|
7
|
-
* (→ nudge) or idle-and-done / needs-human (→ skip). The whole idle set goes in ONE
|
|
8
|
-
* invocation, so the cost is one bounded plan-mode call per tick regardless of how
|
|
9
|
-
* many sessions are idle — not one agent per session, and only when something is
|
|
10
|
-
* actually idle (the caller does not invoke this with an empty list).
|
|
11
|
-
*
|
|
12
|
-
* A resolved `watchdog` workflow (repo > user > system, via resolveWorkflowRef)
|
|
13
|
-
* runs by name so its WORKFLOW.md body + `model:` frontmatter apply; otherwise the
|
|
14
|
-
* bare agent runs the built-in WATCHDOG_SYSTEM_PROMPT. Best-effort: any failure
|
|
15
|
-
* (agent unavailable, timeout, no verdict) yields an empty map, and the caller
|
|
16
|
-
* treats an unlisted terminal as a SAFE skip — never a blind nudge.
|
|
17
|
-
*/
|
|
18
1
|
import { type WatchdogCandidate, type Decision } from './watchdog.js';
|
|
19
|
-
/** Judge every idle candidate at once; returns decisions keyed by terminalId. */
|
|
20
2
|
export type WatchdogAgentDecider = (candidates: WatchdogCandidate[]) => Promise<Map<string, Decision>>;
|
|
21
|
-
/**
|
|
22
|
-
* Runs the agent once and returns its raw stdout. Injectable so a test can assert
|
|
23
|
-
* the ONE-call-per-tick property and the assembled prompt without shelling out.
|
|
24
|
-
* `runTarget` is the resolved `agents run` target (a `watchdog` workflow or the
|
|
25
|
-
* bare agent id).
|
|
26
|
-
*/
|
|
27
3
|
type WatchdogAgentRunner = (runTarget: string, prompt: string) => Promise<string>;
|
|
28
|
-
/**
|
|
29
|
-
* The default agent decider. `agent` is the harness the built-in prompt runs as
|
|
30
|
-
* (default 'claude'); `workflowCwd` is where a `watchdog` workflow override is
|
|
31
|
-
* resolved from (the daemon's cwd — the batch spans many projects, so there is no
|
|
32
|
-
* single per-session cwd to key on); `run` is the injectable subprocess seam
|
|
33
|
-
* (tests pass a synthetic one). The whole idle set goes to the runner in ONE call.
|
|
34
|
-
*/
|
|
35
4
|
export declare function makeWatchdogAgentDecider(agent: string, opts?: {
|
|
36
5
|
workflowCwd?: string;
|
|
37
6
|
run?: WatchdogAgentRunner;
|