@phnx-labs/agents-cli 1.22.120 → 1.22.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +227 -0
- package/README.md +19 -2
- package/dist/bootstrap.d.ts +0 -15
- package/dist/bootstrap.js +10 -409
- package/dist/cli/command-registry.d.ts +0 -58
- package/dist/cli/command-registry.js +2 -74
- package/dist/commands/accounts.d.ts +0 -17
- package/dist/commands/accounts.js +1 -52
- package/dist/commands/alias.d.ts +0 -12
- package/dist/commands/alias.js +0 -6
- package/dist/commands/apply.d.ts +0 -15
- package/dist/commands/apply.js +0 -63
- package/dist/commands/audit.d.ts +0 -12
- package/dist/commands/audit.js +0 -13
- package/dist/commands/auth.js +4 -12
- package/dist/commands/beta.d.ts +0 -6
- package/dist/commands/beta.js +2 -6
- package/dist/commands/browser-sessions-picker.d.ts +0 -8
- package/dist/commands/browser-sessions-picker.js +0 -26
- package/dist/commands/browser.d.ts +0 -57
- package/dist/commands/browser.js +0 -80
- package/dist/commands/budget.d.ts +0 -13
- package/dist/commands/budget.js +0 -2
- package/dist/commands/cli.d.ts +0 -12
- package/dist/commands/cli.js +0 -4
- package/dist/commands/cloud.d.ts +0 -9
- package/dist/commands/cloud.js +0 -43
- package/dist/commands/commands.d.ts +0 -9
- package/dist/commands/commands.js +0 -18
- package/dist/commands/computer-sessions-picker.d.ts +0 -11
- package/dist/commands/computer-sessions-picker.js +0 -29
- package/dist/commands/computer.d.ts +0 -62
- package/dist/commands/computer.js +3 -114
- package/dist/commands/config.d.ts +0 -14
- package/dist/commands/config.js +21 -60
- package/dist/commands/cost.d.ts +0 -11
- package/dist/commands/cost.js +1 -17
- package/dist/commands/daemon-test-harness.d.ts +0 -32
- package/dist/commands/daemon-test-harness.js +1 -36
- package/dist/commands/daemon.d.ts +0 -46
- package/dist/commands/daemon.js +8 -255
- package/dist/commands/detach-core.d.ts +0 -28
- package/dist/commands/detach-core.js +0 -30
- package/dist/commands/detach.d.ts +1 -12
- package/dist/commands/detach.js +16 -52
- package/dist/commands/device-config-test-harness.js +0 -12
- package/dist/commands/doctor.d.ts +0 -103
- package/dist/commands/doctor.js +3 -279
- package/dist/commands/events.d.ts +0 -29
- package/dist/commands/events.js +1 -55
- package/dist/commands/exec.d.ts +0 -163
- package/dist/commands/exec.js +15 -964
- package/dist/commands/factory.d.ts +0 -6
- package/dist/commands/factory.js +0 -2
- package/dist/commands/feed-watch.js +0 -20
- package/dist/commands/feed.d.ts +0 -38
- package/dist/commands/feed.js +1 -151
- package/dist/commands/feedback.d.ts +0 -5
- package/dist/commands/feedback.js +0 -5
- package/dist/commands/fleet-capture.d.ts +0 -12
- package/dist/commands/fleet-capture.js +1 -39
- package/dist/commands/focus.d.ts +6 -94
- package/dist/commands/focus.js +13 -183
- package/dist/commands/fork.d.ts +0 -21
- package/dist/commands/fork.js +0 -45
- package/dist/commands/funnel.d.ts +0 -3
- package/dist/commands/go.d.ts +2 -71
- package/dist/commands/go.js +5 -99
- package/dist/commands/harness-hooks.d.ts +0 -41
- package/dist/commands/harness-hooks.js +0 -48
- package/dist/commands/harness-wizard.d.ts +0 -137
- package/dist/commands/harness-wizard.js +0 -109
- package/dist/commands/harness.d.ts +0 -63
- package/dist/commands/harness.js +0 -103
- package/dist/commands/hooks.d.ts +0 -9
- package/dist/commands/hooks.js +0 -26
- package/dist/commands/humans.d.ts +0 -8
- package/dist/commands/humans.js +0 -8
- package/dist/commands/import.d.ts +0 -22
- package/dist/commands/import.js +0 -79
- package/dist/commands/insights.d.ts +0 -37
- package/dist/commands/insights.js +3 -115
- package/dist/commands/inspect.d.ts +0 -117
- package/dist/commands/inspect.js +2 -448
- package/dist/commands/lease.d.ts +0 -28
- package/dist/commands/lease.js +0 -43
- package/dist/commands/logs.d.ts +0 -23
- package/dist/commands/logs.js +0 -30
- package/dist/commands/mailboxes.d.ts +0 -18
- package/dist/commands/mailboxes.js +0 -29
- package/dist/commands/mcp.d.ts +0 -9
- package/dist/commands/mcp.js +0 -53
- package/dist/commands/memory.d.ts +0 -7
- package/dist/commands/memory.js +0 -7
- package/dist/commands/menubar.d.ts +0 -8
- package/dist/commands/menubar.js +0 -24
- package/dist/commands/message.d.ts +0 -23
- package/dist/commands/message.js +0 -50
- package/dist/commands/mine.d.ts +0 -22
- package/dist/commands/mine.js +0 -21
- package/dist/commands/models.d.ts +0 -8
- package/dist/commands/models.js +0 -33
- package/dist/commands/modes.d.ts +0 -10
- package/dist/commands/modes.js +0 -13
- package/dist/commands/monitors.d.ts +0 -9
- package/dist/commands/monitors.js +3 -160
- package/dist/commands/open.d.ts +0 -26
- package/dist/commands/open.js +0 -10
- package/dist/commands/output.d.ts +0 -18
- package/dist/commands/output.js +1 -34
- package/dist/commands/packages-materialize.d.ts +0 -11
- package/dist/commands/packages-materialize.js +0 -3
- package/dist/commands/packages.d.ts +0 -10
- package/dist/commands/packages.js +0 -50
- package/dist/commands/perf.d.ts +0 -41
- package/dist/commands/perf.js +0 -55
- package/dist/commands/permissions.d.ts +0 -9
- package/dist/commands/permissions.js +0 -43
- package/dist/commands/plugins.d.ts +0 -14
- package/dist/commands/plugins.js +2 -55
- package/dist/commands/profiles.d.ts +0 -25
- package/dist/commands/profiles.js +0 -27
- package/dist/commands/projects-todo.d.ts +2 -0
- package/dist/commands/projects-todo.js +132 -0
- package/dist/commands/projects.d.ts +0 -85
- package/dist/commands/projects.js +344 -291
- package/dist/commands/prune.js +0 -30
- package/dist/commands/ps-roster.d.ts +92 -0
- package/dist/commands/ps-roster.js +744 -0
- package/dist/commands/ps.d.ts +6 -0
- package/dist/commands/ps.js +98 -0
- package/dist/commands/refresh-rules.d.ts +0 -13
- package/dist/commands/refresh-rules.js +0 -14
- package/dist/commands/reminders.d.ts +0 -7
- package/dist/commands/repo.d.ts +0 -89
- package/dist/commands/repo.js +7 -205
- package/dist/commands/resource-view.d.ts +0 -33
- package/dist/commands/resource-view.js +0 -49
- package/dist/commands/resume.d.ts +1 -19
- package/dist/commands/resume.js +0 -50
- package/dist/commands/route.d.ts +0 -10
- package/dist/commands/route.js +0 -19
- package/dist/commands/routines.d.ts +0 -42
- package/dist/commands/routines.js +5 -290
- package/dist/commands/routines.test-fixture.d.ts +0 -34
- package/dist/commands/routines.test-fixture.js +4 -100
- package/dist/commands/rules.d.ts +0 -9
- package/dist/commands/rules.js +1 -6
- package/dist/commands/run-account-picker.d.ts +0 -59
- package/dist/commands/run-account-picker.js +0 -71
- package/dist/commands/run-broadcast.d.ts +0 -9
- package/dist/commands/run-broadcast.js +0 -7
- package/dist/commands/run-cloud.d.ts +0 -15
- package/dist/commands/run-cloud.js +0 -37
- package/dist/commands/run-device-picker.d.ts +0 -25
- package/dist/commands/run-device-picker.js +1 -53
- package/dist/commands/secrets-passthrough.d.ts +0 -31
- package/dist/commands/secrets-passthrough.js +0 -10
- package/dist/commands/send.d.ts +0 -20
- package/dist/commands/send.js +14 -18
- package/dist/commands/sessions-backfill.d.ts +0 -7
- package/dist/commands/sessions-backfill.js +1 -16
- package/dist/commands/sessions-backup-setup.js +0 -11
- package/dist/commands/sessions-bookmark.d.ts +0 -8
- package/dist/commands/sessions-bookmark.js +0 -28
- package/dist/commands/sessions-browser.d.ts +2 -117
- package/dist/commands/sessions-browser.js +5 -243
- package/dist/commands/sessions-export.d.ts +1 -26
- package/dist/commands/sessions-export.js +3 -81
- package/dist/commands/sessions-import.d.ts +0 -14
- package/dist/commands/sessions-import.js +0 -59
- package/dist/commands/sessions-inject.d.ts +0 -60
- package/dist/commands/sessions-inject.js +3 -96
- package/dist/commands/sessions-migrate.d.ts +2 -37
- package/dist/commands/sessions-migrate.js +7 -159
- package/dist/commands/sessions-optimize.d.ts +0 -12
- package/dist/commands/sessions-picker-factory.d.ts +0 -7
- package/dist/commands/sessions-picker-factory.js +0 -8
- package/dist/commands/sessions-picker.d.ts +4 -103
- package/dist/commands/sessions-picker.js +13 -352
- package/dist/commands/sessions-render.d.ts +1 -2
- package/dist/commands/sessions-render.js +3 -7
- package/dist/commands/sessions-resume.d.ts +1 -24
- package/dist/commands/sessions-resume.js +2 -65
- package/dist/commands/sessions-share.d.ts +1 -9
- package/dist/commands/sessions-share.js +1 -45
- package/dist/commands/sessions-stats.d.ts +0 -24
- package/dist/commands/sessions-stats.js +0 -49
- package/dist/commands/sessions-stop.d.ts +1 -20
- package/dist/commands/sessions-stop.js +4 -9
- package/dist/commands/sessions-tail.d.ts +1 -19
- package/dist/commands/sessions-tail.js +3 -36
- package/dist/commands/sessions-trace.d.ts +5 -36
- package/dist/commands/sessions-trace.js +7 -82
- package/dist/commands/sessions.d.ts +1 -666
- package/dist/commands/sessions.js +30 -2279
- package/dist/commands/sessions.test-fixture.d.ts +0 -9
- package/dist/commands/sessions.test-fixture.js +8 -23
- package/dist/commands/setup-accounts.d.ts +0 -6
- package/dist/commands/setup-browser.d.ts +0 -23
- package/dist/commands/setup-browser.js +0 -28
- package/dist/commands/setup-computer.d.ts +0 -16
- package/dist/commands/setup-computer.js +0 -28
- package/dist/commands/setup-fleet.d.ts +0 -8
- package/dist/commands/setup-fleet.js +0 -11
- package/dist/commands/setup-mine.d.ts +0 -14
- package/dist/commands/setup-mine.js +0 -25
- package/dist/commands/setup-preferences.d.ts +0 -47
- package/dist/commands/setup-preferences.js +0 -53
- package/dist/commands/setup-secrets.d.ts +2 -24
- package/dist/commands/setup-secrets.js +0 -24
- package/dist/commands/setup-term.d.ts +0 -21
- package/dist/commands/setup-term.js +0 -21
- package/dist/commands/setup-terminal.d.ts +0 -1
- package/dist/commands/setup-terminal.js +0 -1
- package/dist/commands/setup-tools.d.ts +2 -0
- package/dist/commands/setup-tools.js +73 -0
- package/dist/commands/setup.d.ts +0 -20
- package/dist/commands/setup.js +4 -57
- package/dist/commands/skills.d.ts +0 -9
- package/dist/commands/skills.js +1 -22
- package/dist/commands/snapshot.d.ts +0 -9
- package/dist/commands/snapshot.js +0 -10
- package/dist/commands/ssh.d.ts +0 -64
- package/dist/commands/ssh.js +9 -420
- package/dist/commands/status.d.ts +0 -12
- package/dist/commands/status.js +0 -26
- package/dist/commands/subagents.d.ts +0 -8
- package/dist/commands/subagents.js +0 -31
- package/dist/commands/sync.d.ts +0 -37
- package/dist/commands/sync.js +0 -256
- package/dist/commands/teams-picker.d.ts +0 -3
- package/dist/commands/teams-picker.js +0 -34
- package/dist/commands/teams.d.ts +1 -76
- package/dist/commands/teams.js +9 -477
- package/dist/commands/tmux.d.ts +0 -25
- package/dist/commands/tmux.js +0 -46
- package/dist/commands/traces.js +0 -19
- package/dist/commands/trash.d.ts +0 -17
- package/dist/commands/trash.js +1 -11
- package/dist/commands/uninstall.d.ts +0 -9
- package/dist/commands/uninstall.js +0 -6
- package/dist/commands/update.d.ts +0 -22
- package/dist/commands/update.js +0 -44
- package/dist/commands/upgrade.d.ts +0 -1
- package/dist/commands/upgrade.js +0 -1
- package/dist/commands/utils.d.ts +0 -85
- package/dist/commands/utils.js +1 -95
- package/dist/commands/versions.d.ts +0 -16
- package/dist/commands/versions.js +0 -134
- package/dist/commands/view.d.ts +0 -90
- package/dist/commands/view.js +4 -343
- package/dist/commands/watchdog.d.ts +0 -19
- package/dist/commands/watchdog.js +3 -43
- package/dist/commands/webhook.d.ts +0 -8
- package/dist/commands/webhook.js +0 -14
- package/dist/commands/workflows.d.ts +0 -8
- package/dist/commands/workflows.js +0 -6
- package/dist/index.d.ts +0 -25
- package/dist/index.js +5 -119
- package/dist/lib/account-capabilities.d.ts +0 -34
- package/dist/lib/account-capabilities.js +0 -32
- package/dist/lib/account-catalog.d.ts +0 -128
- package/dist/lib/account-catalog.js +8 -154
- package/dist/lib/account-provider-registry.d.ts +0 -14
- package/dist/lib/account-provider-registry.js +0 -8
- package/dist/lib/account-registry.d.ts +0 -74
- package/dist/lib/account-registry.js +14 -189
- package/dist/lib/account-schema.d.ts +0 -19
- package/dist/lib/account-schema.js +0 -43
- package/dist/lib/accounting/account-launch.d.ts +0 -15
- package/dist/lib/accounting/account-launch.js +1 -3
- package/dist/lib/accounting/account-pool-collect.d.ts +0 -26
- package/dist/lib/accounting/account-pool-collect.js +0 -42
- package/dist/lib/accounting/account-pool.d.ts +0 -41
- package/dist/lib/accounting/account-pool.js +0 -17
- package/dist/lib/accounting/capacity.d.ts +0 -32
- package/dist/lib/accounting/capacity.js +0 -32
- package/dist/lib/accounting/rotate.d.ts +0 -518
- package/dist/lib/accounting/rotate.js +4 -598
- package/dist/lib/accounting/usage-ingest.d.ts +0 -1
- package/dist/lib/accounting/usage-ingest.js +0 -44
- package/dist/lib/accounting/usage-sync.d.ts +0 -60
- package/dist/lib/accounting/usage-sync.js +4 -51
- package/dist/lib/accounting/usage.d.ts +0 -632
- package/dist/lib/accounting/usage.js +14 -1055
- package/dist/lib/accounts/add.d.ts +0 -60
- package/dist/lib/accounts/add.js +0 -127
- package/dist/lib/accounts/auth-operation-lock.d.ts +0 -1
- package/dist/lib/accounts/auth-operation-lock.js +0 -4
- package/dist/lib/accounts/migrate.d.ts +0 -9
- package/dist/lib/accounts/migrate.js +3 -42
- package/dist/lib/accounts/slots.d.ts +0 -25
- package/dist/lib/accounts/slots.js +1 -49
- package/dist/lib/acp/client.d.ts +0 -16
- package/dist/lib/acp/client.js +0 -29
- package/dist/lib/acp/harnesses.d.ts +0 -15
- package/dist/lib/acp/harnesses.js +0 -16
- package/dist/lib/acp/run.d.ts +0 -8
- package/dist/lib/acp/run.js +0 -8
- package/dist/lib/actor.d.ts +1 -71
- package/dist/lib/actor.js +1 -99
- package/dist/lib/add-dir.d.ts +0 -46
- package/dist/lib/add-dir.js +1 -70
- package/dist/lib/address.d.ts +0 -17
- package/dist/lib/address.js +0 -15
- package/dist/lib/agent-cli-commands.d.ts +0 -10
- package/dist/lib/agent-cli-commands.js +0 -10
- package/dist/lib/agent-modes.d.ts +0 -29
- package/dist/lib/agent-modes.js +0 -31
- package/dist/lib/agent-spec/agents.d.ts +0 -426
- package/dist/lib/agent-spec/agents.js +37 -924
- package/dist/lib/agent-spec/index.d.ts +0 -5
- package/dist/lib/agent-spec/index.js +0 -14
- package/dist/lib/agent-spec/materialize.d.ts +0 -10
- package/dist/lib/agent-spec/materialize.js +2 -139
- package/dist/lib/agent-spec/package-resolve.d.ts +0 -8
- package/dist/lib/agent-spec/package-resolve.js +1 -44
- package/dist/lib/agent-spec/package-schema.d.ts +0 -2
- package/dist/lib/agent-spec/package-schema.js +0 -11
- package/dist/lib/agent-spec/package-types.d.ts +0 -27
- package/dist/lib/agent-spec/package-types.js +0 -1
- package/dist/lib/agent-spec/primitives.d.ts +0 -18
- package/dist/lib/agent-spec/primitives.js +0 -27
- package/dist/lib/agent-spec/provider.js +0 -2
- package/dist/lib/agent-spec/resolve.d.ts +0 -23
- package/dist/lib/agent-spec/resolve.js +0 -41
- package/dist/lib/agent-spec/types.d.ts +0 -34
- package/dist/lib/agent-spec/types.js +0 -6
- package/dist/lib/agents.d.ts +0 -1
- package/dist/lib/agents.js +0 -1
- package/dist/lib/analytics/mix-commands.d.ts +0 -23
- package/dist/lib/analytics/mix-commands.js +0 -26
- package/dist/lib/analytics/recipes.d.ts +0 -1
- package/dist/lib/analytics/recipes.js +5 -10
- package/dist/lib/analytics/usage-db.js +4 -6
- package/dist/lib/answer-router.d.ts +0 -61
- package/dist/lib/answer-router.js +0 -57
- package/dist/lib/app-bundle-install.d.ts +0 -13
- package/dist/lib/app-bundle-install.js +0 -50
- package/dist/lib/artifact-actions.d.ts +0 -15
- package/dist/lib/artifact-actions.js +0 -18
- package/dist/lib/artifacts-client.d.ts +0 -10
- package/dist/lib/artifacts-client.js +0 -17
- package/dist/lib/ask-classifier.d.ts +0 -38
- package/dist/lib/ask-classifier.js +0 -27
- package/dist/lib/audit/log.d.ts +0 -47
- package/dist/lib/audit/log.js +1 -59
- package/dist/lib/auth-health.d.ts +0 -213
- package/dist/lib/auth-health.js +16 -266
- package/dist/lib/auth-mint.d.ts +0 -83
- package/dist/lib/auth-mint.js +8 -85
- package/dist/lib/auto-pull-worker.d.ts +0 -10
- package/dist/lib/auto-pull-worker.js +3 -48
- package/dist/lib/auto-pull.d.ts +0 -64
- package/dist/lib/auto-pull.js +0 -79
- package/dist/lib/beta.d.ts +0 -9
- package/dist/lib/beta.js +0 -9
- package/dist/lib/binary-shadow.d.ts +0 -22
- package/dist/lib/binary-shadow.js +4 -34
- package/dist/lib/boot-profile.d.ts +0 -10
- package/dist/lib/boot-profile.js +1 -31
- package/dist/lib/brand.d.ts +0 -20
- package/dist/lib/brand.js +0 -50
- package/dist/lib/browser/context.d.ts +0 -54
- package/dist/lib/browser/context.js +0 -49
- package/dist/lib/browser/paths.d.ts +0 -21
- package/dist/lib/browser/paths.js +0 -26
- package/dist/lib/browser/record.d.ts +0 -34
- package/dist/lib/browser/record.js +0 -38
- package/dist/lib/browser/sessions-list.d.ts +1 -79
- package/dist/lib/browser/sessions-list.js +2 -98
- package/dist/lib/browser-client.d.ts +0 -112
- package/dist/lib/browser-client.js +1 -90
- package/dist/lib/budget/config.d.ts +0 -6
- package/dist/lib/budget/config.js +0 -29
- package/dist/lib/budget/enforce.d.ts +0 -50
- package/dist/lib/budget/enforce.js +0 -27
- package/dist/lib/budget/ledger.d.ts +0 -23
- package/dist/lib/budget/ledger.js +0 -28
- package/dist/lib/budget/live-cloud.d.ts +0 -26
- package/dist/lib/budget/live-cloud.js +0 -12
- package/dist/lib/budget/live-team.d.ts +0 -17
- package/dist/lib/budget/live-team.js +1 -35
- package/dist/lib/budget/preflight.d.ts +0 -51
- package/dist/lib/budget/preflight.js +0 -36
- package/dist/lib/byok-usage.d.ts +0 -20
- package/dist/lib/byok-usage.js +1 -24
- package/dist/lib/capabilities.d.ts +0 -24
- package/dist/lib/capabilities.js +0 -29
- package/dist/lib/catchup.d.ts +0 -87
- package/dist/lib/catchup.js +1 -81
- package/dist/lib/channels/owner-forward.d.ts +0 -70
- package/dist/lib/channels/owner-forward.js +1 -43
- package/dist/lib/channels/owner-sink.js +0 -21
- package/dist/lib/channels/providers/desktop.d.ts +0 -37
- package/dist/lib/channels/providers/desktop.js +0 -72
- package/dist/lib/channels/providers/index.d.ts +0 -1
- package/dist/lib/channels/providers/index.js +2 -6
- package/dist/lib/channels/providers/mailbox.js +0 -7
- package/dist/lib/channels/providers/openclaw-telegram.js +0 -8
- package/dist/lib/channels/providers/rush.d.ts +0 -2
- package/dist/lib/channels/providers/rush.js +0 -26
- package/dist/lib/channels/providers/session.d.ts +2 -0
- package/dist/lib/channels/providers/session.js +26 -0
- package/dist/lib/channels/registry.d.ts +0 -27
- package/dist/lib/channels/registry.js +0 -10
- package/dist/lib/channels/resolve.d.ts +0 -19
- package/dist/lib/channels/resolve.js +0 -2
- package/dist/lib/channels/send.d.ts +0 -50
- package/dist/lib/channels/send.js +0 -25
- package/dist/lib/checkpoint.d.ts +0 -36
- package/dist/lib/checkpoint.js +0 -28
- package/dist/lib/claude-account-token.d.ts +0 -98
- package/dist/lib/claude-account-token.js +7 -169
- package/dist/lib/claude-statusline.d.ts +0 -41
- package/dist/lib/claude-statusline.js +0 -68
- package/dist/lib/cli-entry.d.ts +0 -26
- package/dist/lib/cli-entry.js +1 -61
- package/dist/lib/cli-resources.d.ts +31 -89
- package/dist/lib/cli-resources.js +116 -152
- package/dist/lib/cloud/antigravity.d.ts +0 -29
- package/dist/lib/cloud/antigravity.js +0 -36
- package/dist/lib/cloud/codex.d.ts +0 -8
- package/dist/lib/cloud/codex.js +0 -41
- package/dist/lib/cloud/cursor.d.ts +0 -5
- package/dist/lib/cloud/cursor.js +2 -7
- package/dist/lib/cloud/dispatch.d.ts +0 -13
- package/dist/lib/cloud/dispatch.js +1 -48
- package/dist/lib/cloud/factory.d.ts +0 -52
- package/dist/lib/cloud/factory.js +3 -67
- package/dist/lib/cloud/host.d.ts +0 -39
- package/dist/lib/cloud/host.js +5 -48
- package/dist/lib/cloud/registry.d.ts +0 -25
- package/dist/lib/cloud/registry.js +0 -29
- package/dist/lib/cloud/rush.d.ts +0 -47
- package/dist/lib/cloud/rush.js +1 -82
- package/dist/lib/cloud/session-index.d.ts +0 -27
- package/dist/lib/cloud/session-index.js +1 -32
- package/dist/lib/cloud/store.d.ts +0 -18
- package/dist/lib/cloud/store.js +0 -28
- package/dist/lib/cloud/stream.d.ts +0 -14
- package/dist/lib/cloud/stream.js +0 -25
- package/dist/lib/cloud/types.d.ts +0 -168
- package/dist/lib/cloud/types.js +0 -46
- package/dist/lib/cloudflare/creds.d.ts +0 -2
- package/dist/lib/cloudflare/creds.js +0 -14
- package/dist/lib/cloudflare/provision.d.ts +0 -8
- package/dist/lib/cloudflare/provision.js +1 -19
- package/dist/lib/codex-home.d.ts +0 -60
- package/dist/lib/codex-home.js +2 -72
- package/dist/lib/codex-policy.d.ts +0 -10
- package/dist/lib/codex-policy.js +0 -13
- package/dist/lib/command-skills.d.ts +0 -10
- package/dist/lib/command-skills.js +0 -10
- package/dist/lib/commands.d.ts +0 -74
- package/dist/lib/commands.js +0 -112
- package/dist/lib/comms-render.d.ts +0 -5
- package/dist/lib/comms-render.js +0 -5
- package/dist/lib/computer/context.d.ts +0 -23
- package/dist/lib/computer/context.js +0 -14
- package/dist/lib/computer/policy.d.ts +0 -20
- package/dist/lib/computer/policy.js +0 -53
- package/dist/lib/computer/record.d.ts +0 -33
- package/dist/lib/computer/record.js +1 -48
- package/dist/lib/computer/sessions-list.d.ts +1 -128
- package/dist/lib/computer/sessions-list.js +6 -165
- package/dist/lib/computer-client.d.ts +0 -106
- package/dist/lib/computer-client.js +5 -86
- package/dist/lib/concurrency.d.ts +0 -14
- package/dist/lib/concurrency.js +0 -3
- package/dist/lib/config-drift.d.ts +0 -31
- package/dist/lib/config-drift.js +0 -32
- package/dist/lib/config-keys.d.ts +1 -65
- package/dist/lib/config-keys.js +6 -52
- package/dist/lib/config-transfer.d.ts +0 -14
- package/dist/lib/config-transfer.js +0 -26
- package/dist/lib/convert.d.ts +0 -17
- package/dist/lib/convert.js +0 -18
- package/dist/lib/crabbox/cli.d.ts +0 -156
- package/dist/lib/crabbox/cli.js +1 -188
- package/dist/lib/crabbox/config.d.ts +0 -18
- package/dist/lib/crabbox/config.js +1 -19
- package/dist/lib/crabbox/lease.d.ts +0 -93
- package/dist/lib/crabbox/lease.js +4 -148
- package/dist/lib/crabbox/progress.d.ts +0 -56
- package/dist/lib/crabbox/progress.js +2 -49
- package/dist/lib/crabbox/runtimes.d.ts +0 -94
- package/dist/lib/crabbox/runtimes.js +1 -111
- package/dist/lib/crabbox/setup-copy.d.ts +0 -64
- package/dist/lib/crabbox/setup-copy.js +1 -53
- package/dist/lib/daemon/account-state-daemon-service.d.ts +0 -48
- package/dist/lib/daemon/account-state-daemon-service.js +2 -63
- package/dist/lib/daemon/attention-notify-service.d.ts +0 -12
- package/dist/lib/daemon/attention-notify-service.js +1 -24
- package/dist/lib/daemon/auth-sync-service.d.ts +0 -28
- package/dist/lib/daemon/auth-sync-service.js +0 -56
- package/dist/lib/daemon/catchup-service.d.ts +0 -34
- package/dist/lib/daemon/catchup-service.js +0 -30
- package/dist/lib/daemon/daemon.d.ts +0 -374
- package/dist/lib/daemon/daemon.js +44 -1049
- package/dist/lib/daemon/daemon.test-fixture.d.ts +0 -19
- package/dist/lib/daemon/daemon.test-fixture.js +1 -24
- package/dist/lib/daemon/device-probe-service.d.ts +0 -16
- package/dist/lib/daemon/device-probe-service.js +0 -20
- package/dist/lib/daemon/feed-stream-service.d.ts +0 -15
- package/dist/lib/daemon/feed-stream-service.js +0 -20
- package/dist/lib/daemon/harness-update-service.d.ts +2 -61
- package/dist/lib/daemon/harness-update-service.js +6 -86
- package/dist/lib/daemon/heartbeat-service.d.ts +0 -1
- package/dist/lib/daemon/heartbeat-service.js +0 -1
- package/dist/lib/daemon/leaked-daemons.d.ts +0 -46
- package/dist/lib/daemon/leaked-daemons.js +2 -78
- package/dist/lib/daemon/monitor-engine-service.d.ts +0 -13
- package/dist/lib/daemon/monitor-engine-service.js +3 -15
- package/dist/lib/daemon/runner.d.ts +0 -194
- package/dist/lib/daemon/runner.js +39 -760
- package/dist/lib/daemon/self-heal-service.d.ts +18 -17
- package/dist/lib/daemon/self-heal-service.js +83 -37
- package/dist/lib/daemon/self-update-service.d.ts +1 -131
- package/dist/lib/daemon/self-update-service.js +26 -189
- package/dist/lib/daemon/service.d.ts +0 -73
- package/dist/lib/daemon/service.js +0 -34
- package/dist/lib/daemon/session-index-service.d.ts +0 -12
- package/dist/lib/daemon/session-index-service.js +0 -23
- package/dist/lib/daemon/session-state-service.d.ts +0 -8
- package/dist/lib/daemon/session-state-service.js +0 -8
- package/dist/lib/daemon/session-summarizer-service.d.ts +0 -14
- package/dist/lib/daemon/session-summarizer-service.js +1 -19
- package/dist/lib/daemon/session-title-service.d.ts +0 -25
- package/dist/lib/daemon/session-title-service.js +0 -32
- package/dist/lib/daemon/state-dir-check-service.d.ts +0 -24
- package/dist/lib/daemon/state-dir-check-service.js +0 -29
- package/dist/lib/daemon/supervisor.d.ts +0 -112
- package/dist/lib/daemon/supervisor.js +4 -147
- package/dist/lib/daemon/testdata/process-view-daemon.js +0 -2
- package/dist/lib/daemon/testdata/process-view-start.js +0 -5
- package/dist/lib/daemon/tmux-reap-service.d.ts +0 -1
- package/dist/lib/daemon/tmux-reap-service.js +0 -1
- package/dist/lib/daemon/usage-sync-service.d.ts +0 -23
- package/dist/lib/daemon/usage-sync-service.js +0 -26
- package/dist/lib/daemon/watchdog-service.d.ts +0 -9
- package/dist/lib/daemon/watchdog-service.js +0 -13
- package/dist/lib/daemon/webhook-receiver-service.d.ts +0 -1
- package/dist/lib/daemon/webhook-receiver-service.js +0 -1
- package/dist/lib/daemon-health.d.ts +0 -55
- package/dist/lib/daemon-health.js +4 -77
- package/dist/lib/daemon-services.d.ts +0 -36
- package/dist/lib/daemon-services.js +0 -45
- package/dist/lib/daemon-ticks.d.ts +0 -126
- package/dist/lib/daemon-ticks.js +1 -156
- package/dist/lib/daemon-webhooks.d.ts +0 -57
- package/dist/lib/daemon-webhooks.js +2 -54
- package/dist/lib/deeplink/register.d.ts +0 -15
- package/dist/lib/deeplink/register.js +0 -60
- package/dist/lib/deeplink/url.d.ts +0 -24
- package/dist/lib/deeplink/url.js +1 -33
- package/dist/lib/device-config.d.ts +1 -192
- package/dist/lib/device-config.js +86 -240
- package/dist/lib/devices/config-migration.d.ts +0 -43
- package/dist/lib/devices/config-migration.js +7 -127
- package/dist/lib/devices/connect.d.ts +0 -168
- package/dist/lib/devices/connect.js +6 -254
- package/dist/lib/devices/device-docs.d.ts +0 -24
- package/dist/lib/devices/device-docs.js +0 -46
- package/dist/lib/devices/discovery-policy.d.ts +0 -30
- package/dist/lib/devices/discovery-policy.js +3 -34
- package/dist/lib/devices/doctor-findings.d.ts +0 -109
- package/dist/lib/devices/doctor-findings.js +30 -326
- package/dist/lib/devices/doctor-overview-cache.d.ts +0 -33
- package/dist/lib/devices/doctor-overview-cache.js +0 -81
- package/dist/lib/devices/fleet-divergence.d.ts +0 -89
- package/dist/lib/devices/fleet-divergence.js +1 -60
- package/dist/lib/devices/fleet-inventory.d.ts +0 -27
- package/dist/lib/devices/fleet-inventory.js +0 -38
- package/dist/lib/devices/fleet.d.ts +0 -95
- package/dist/lib/devices/fleet.js +0 -79
- package/dist/lib/devices/harness-inventory.d.ts +0 -75
- package/dist/lib/devices/harness-inventory.js +0 -101
- package/dist/lib/devices/health-report.d.ts +0 -37
- package/dist/lib/devices/health-report.js +0 -73
- package/dist/lib/devices/health.d.ts +0 -71
- package/dist/lib/devices/health.js +2 -82
- package/dist/lib/devices/interactive-host.d.ts +0 -10
- package/dist/lib/devices/interactive-host.js +0 -34
- package/dist/lib/devices/known-hosts.d.ts +0 -45
- package/dist/lib/devices/known-hosts.js +0 -77
- package/dist/lib/devices/pending.d.ts +0 -31
- package/dist/lib/devices/pending.js +7 -67
- package/dist/lib/devices/pool.d.ts +0 -36
- package/dist/lib/devices/pool.js +0 -30
- package/dist/lib/devices/reachability.d.ts +0 -25
- package/dist/lib/devices/reachability.js +0 -14
- package/dist/lib/devices/registry.d.ts +0 -141
- package/dist/lib/devices/registry.js +4 -151
- package/dist/lib/devices/resolve-profile.d.ts +0 -18
- package/dist/lib/devices/resolve-profile.js +0 -18
- package/dist/lib/devices/resolve-target.d.ts +0 -20
- package/dist/lib/devices/resolve-target.js +1 -51
- package/dist/lib/devices/rollout-verify.d.ts +1 -81
- package/dist/lib/devices/rollout-verify.js +0 -77
- package/dist/lib/devices/self-host.d.ts +0 -7
- package/dist/lib/devices/self-host.js +1 -29
- package/dist/lib/devices/ssh-config.d.ts +0 -18
- package/dist/lib/devices/ssh-config.js +0 -9
- package/dist/lib/devices/stats-cache.d.ts +0 -48
- package/dist/lib/devices/stats-cache.js +0 -80
- package/dist/lib/devices/sync.d.ts +0 -97
- package/dist/lib/devices/sync.js +0 -88
- package/dist/lib/devices/tailscale.d.ts +0 -18
- package/dist/lib/devices/tailscale.js +1 -38
- package/dist/lib/devices/terminfo.d.ts +0 -27
- package/dist/lib/devices/terminfo.js +2 -64
- package/dist/lib/devices/worker-pick.d.ts +0 -15
- package/dist/lib/devices/worker-pick.js +0 -48
- package/dist/lib/diff-text.d.ts +0 -18
- package/dist/lib/diff-text.js +0 -15
- package/dist/lib/doctor-diff.d.ts +0 -79
- package/dist/lib/doctor-diff.js +2 -181
- package/dist/lib/drift-sync.d.ts +0 -29
- package/dist/lib/drift-sync.js +0 -40
- package/dist/lib/drift.d.ts +0 -43
- package/dist/lib/drift.js +0 -31
- package/dist/lib/event-families.d.ts +0 -17
- package/dist/lib/event-families.js +0 -33
- package/dist/lib/event-provenance.d.ts +0 -4
- package/dist/lib/event-provenance.js +0 -5
- package/dist/lib/event-stream.d.ts +0 -29
- package/dist/lib/event-stream.js +0 -36
- package/dist/lib/events-ingest.d.ts +0 -27
- package/dist/lib/events-ingest.js +0 -54
- package/dist/lib/exec-account-home.d.ts +0 -24
- package/dist/lib/exec-account-home.js +0 -41
- package/dist/lib/exec-bounded.d.ts +1 -37
- package/dist/lib/exec-bounded.js +10 -46
- package/dist/lib/exec.d.ts +3 -583
- package/dist/lib/exec.js +18 -1025
- package/dist/lib/factory/snapshot.js +1 -15
- package/dist/lib/feed/activity-stream.d.ts +0 -27
- package/dist/lib/feed/activity-stream.js +4 -80
- package/dist/lib/feed/activity.d.ts +1 -243
- package/dist/lib/feed/activity.js +8 -273
- package/dist/lib/feed/answer.d.ts +0 -103
- package/dist/lib/feed/answer.js +0 -267
- package/dist/lib/feed/attention.d.ts +0 -56
- package/dist/lib/feed/attention.js +0 -161
- package/dist/lib/feed/envelope.d.ts +2 -17
- package/dist/lib/feed/envelope.js +0 -14
- package/dist/lib/feed/events.d.ts +0 -118
- package/dist/lib/feed/events.js +13 -213
- package/dist/lib/feed/feed.d.ts +1 -250
- package/dist/lib/feed/feed.js +24 -334
- package/dist/lib/feed/hub-server.d.ts +0 -100
- package/dist/lib/feed/hub-server.js +1 -191
- package/dist/lib/feed/hub.d.ts +0 -53
- package/dist/lib/feed/hub.js +0 -89
- package/dist/lib/feed/pr-status.d.ts +1 -19
- package/dist/lib/feed/pr-status.js +0 -18
- package/dist/lib/feed/tool-activity.d.ts +0 -59
- package/dist/lib/feed/tool-activity.js +1 -119
- package/dist/lib/feed/tools.d.ts +0 -100
- package/dist/lib/feed/tools.js +0 -89
- package/dist/lib/feed/watch.d.ts +0 -33
- package/dist/lib/feed/watch.js +2 -94
- package/dist/lib/feed-broadcast.d.ts +0 -148
- package/dist/lib/feed-broadcast.js +1 -283
- package/dist/lib/feed-outcome.d.ts +0 -50
- package/dist/lib/feed-outcome.js +1 -67
- package/dist/lib/feed-policy.d.ts +0 -6
- package/dist/lib/feed-policy.js +1 -27
- package/dist/lib/feed-post.d.ts +0 -61
- package/dist/lib/feed-post.js +4 -61
- package/dist/lib/feed-ranking.d.ts +1 -1
- package/dist/lib/fleet/apply.d.ts +0 -64
- package/dist/lib/fleet/apply.js +0 -125
- package/dist/lib/fleet/auth-sync.d.ts +0 -48
- package/dist/lib/fleet/auth-sync.js +4 -49
- package/dist/lib/fleet/capture.d.ts +0 -26
- package/dist/lib/fleet/capture.js +1 -36
- package/dist/lib/fleet/manifest.d.ts +0 -38
- package/dist/lib/fleet/manifest.js +0 -40
- package/dist/lib/fleet/types.d.ts +1 -138
- package/dist/lib/fleet/types.js +0 -12
- package/dist/lib/fleet-cache.d.ts +0 -12
- package/dist/lib/fleet-cache.js +0 -24
- package/dist/lib/fleet-shared-state.d.ts +6 -59
- package/dist/lib/fleet-shared-state.js +5 -51
- package/dist/lib/fleet-status.d.ts +0 -27
- package/dist/lib/fleet-status.js +0 -48
- package/dist/lib/format.d.ts +0 -74
- package/dist/lib/format.js +3 -77
- package/dist/lib/friction-heuristics.d.ts +0 -20
- package/dist/lib/friction-heuristics.js +0 -8
- package/dist/lib/fs-atomic.d.ts +0 -51
- package/dist/lib/fs-atomic.js +8 -66
- package/dist/lib/fs-walk.d.ts +0 -13
- package/dist/lib/fs-walk.js +0 -22
- package/dist/lib/fuzzy.d.ts +0 -29
- package/dist/lib/fuzzy.js +0 -31
- package/dist/lib/gemini-settings.js +0 -12
- package/dist/lib/git.d.ts +0 -366
- package/dist/lib/git.js +7 -574
- package/dist/lib/github/ci-failure.d.ts +30 -0
- package/dist/lib/github/ci-failure.js +95 -0
- package/dist/lib/github/gh-overload.d.ts +0 -38
- package/dist/lib/github/gh-overload.js +3 -55
- package/dist/lib/github/pr-mergeable.d.ts +3 -34
- package/dist/lib/github/pr-mergeable.js +2 -42
- package/dist/lib/github/pr-verdict.d.ts +0 -44
- package/dist/lib/github/pr-verdict.js +0 -36
- package/dist/lib/github/project-prs.d.ts +135 -105
- package/dist/lib/github/project-prs.js +530 -170
- package/dist/lib/github/release-drift.d.ts +45 -0
- package/dist/lib/github/release-drift.js +91 -0
- package/dist/lib/github/rest.d.ts +0 -50
- package/dist/lib/github/rest.js +0 -49
- package/dist/lib/github/viewer.d.ts +27 -0
- package/dist/lib/github/viewer.js +101 -0
- package/dist/lib/goose-commands.d.ts +0 -29
- package/dist/lib/goose-commands.js +3 -48
- package/dist/lib/harness/adapter.d.ts +0 -151
- package/dist/lib/harness/adapter.js +0 -41
- package/dist/lib/harness/adapters/claude.d.ts +0 -8
- package/dist/lib/harness/adapters/claude.js +0 -89
- package/dist/lib/harness/adapters/codex.js +0 -18
- package/dist/lib/harness/adapters/copilot.js +0 -3
- package/dist/lib/harness/adapters/cursor.js +0 -16
- package/dist/lib/harness/adapters/droid.js +0 -3
- package/dist/lib/harness/adapters/kimi.js +0 -19
- package/dist/lib/harness/adapters/muse.js +0 -9
- package/dist/lib/harness/adapters/opencode.js +0 -2
- package/dist/lib/harness/exec-config-version.d.ts +0 -2
- package/dist/lib/harness/exec-config-version.js +0 -13
- package/dist/lib/harness/index.js +0 -10
- package/dist/lib/harness-auth-capabilities.d.ts +0 -26
- package/dist/lib/harness-auth-capabilities.js +0 -18
- package/dist/lib/harness-connection-test.d.ts +0 -27
- package/dist/lib/harness-connection-test.js +2 -20
- package/dist/lib/heal.d.ts +0 -45
- package/dist/lib/heal.js +2 -82
- package/dist/lib/help.d.ts +0 -32
- package/dist/lib/help.js +0 -41
- package/dist/lib/helper-download.d.ts +0 -85
- package/dist/lib/helper-download.js +0 -95
- package/dist/lib/helper-versions.d.ts +0 -51
- package/dist/lib/helper-versions.js +1 -45
- package/dist/lib/hooks/cache.d.ts +0 -40
- package/dist/lib/hooks/cache.js +8 -122
- package/dist/lib/hooks/install.d.ts +0 -253
- package/dist/lib/hooks/install.js +49 -822
- package/dist/lib/hooks/match.d.ts +0 -24
- package/dist/lib/hooks/match.js +0 -31
- package/dist/lib/hooks/profile.d.ts +0 -21
- package/dist/lib/hooks/profile.js +0 -28
- package/dist/lib/hosts/credential-transport.d.ts +0 -6
- package/dist/lib/hosts/credential-transport.js +0 -17
- package/dist/lib/hosts/credentials.d.ts +0 -35
- package/dist/lib/hosts/credentials.js +0 -38
- package/dist/lib/hosts/dispatch.d.ts +0 -140
- package/dist/lib/hosts/dispatch.js +0 -176
- package/dist/lib/hosts/logs.d.ts +0 -25
- package/dist/lib/hosts/logs.js +1 -51
- package/dist/lib/hosts/option.d.ts +0 -12
- package/dist/lib/hosts/option.js +0 -12
- package/dist/lib/hosts/passthrough.d.ts +0 -129
- package/dist/lib/hosts/passthrough.js +12 -249
- package/dist/lib/hosts/progress.d.ts +0 -90
- package/dist/lib/hosts/progress.js +5 -115
- package/dist/lib/hosts/providers/devices.d.ts +0 -19
- package/dist/lib/hosts/providers/devices.js +1 -34
- package/dist/lib/hosts/providers/local.d.ts +0 -14
- package/dist/lib/hosts/providers/local.js +0 -22
- package/dist/lib/hosts/ready.d.ts +0 -99
- package/dist/lib/hosts/ready.js +0 -101
- package/dist/lib/hosts/reconcile.d.ts +0 -38
- package/dist/lib/hosts/reconcile.js +1 -50
- package/dist/lib/hosts/reconnect.d.ts +0 -75
- package/dist/lib/hosts/reconnect.js +0 -98
- package/dist/lib/hosts/registry.d.ts +0 -74
- package/dist/lib/hosts/registry.js +0 -110
- package/dist/lib/hosts/remote-cmd.d.ts +1 -228
- package/dist/lib/hosts/remote-cmd.js +19 -294
- package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +0 -1
- package/dist/lib/hosts/remote-cmd.test-fixture.js +0 -12
- package/dist/lib/hosts/remote-os.d.ts +0 -19
- package/dist/lib/hosts/remote-os.js +0 -22
- package/dist/lib/hosts/remote-session-id.d.ts +0 -22
- package/dist/lib/hosts/remote-session-id.js +0 -24
- package/dist/lib/hosts/routing-flag.d.ts +0 -21
- package/dist/lib/hosts/routing-flag.js +0 -21
- package/dist/lib/hosts/run-target.d.ts +0 -53
- package/dist/lib/hosts/run-target.js +0 -56
- package/dist/lib/hosts/session-index.d.ts +1 -53
- package/dist/lib/hosts/session-index.js +2 -59
- package/dist/lib/hosts/session-marker.d.ts +0 -31
- package/dist/lib/hosts/session-marker.js +0 -32
- package/dist/lib/hosts/ssh-config.d.ts +0 -25
- package/dist/lib/hosts/ssh-config.js +1 -32
- package/dist/lib/hosts/tasks.d.ts +0 -54
- package/dist/lib/hosts/tasks.js +0 -35
- package/dist/lib/hosts/types.d.ts +0 -39
- package/dist/lib/hosts/types.js +0 -22
- package/dist/lib/humans.d.ts +0 -21
- package/dist/lib/humans.js +0 -30
- package/dist/lib/identity/client.d.ts +1 -35
- package/dist/lib/identity/client.js +3 -29
- package/dist/lib/identity/index.d.ts +3 -27
- package/dist/lib/identity/index.js +8 -24
- package/dist/lib/import.d.ts +0 -104
- package/dist/lib/import.js +1 -137
- package/dist/lib/installations/active-check.d.ts +0 -53
- package/dist/lib/installations/active-check.js +0 -49
- package/dist/lib/installations/index.d.ts +0 -9
- package/dist/lib/installations/index.js +0 -9
- package/dist/lib/installations/installation-lock.js +0 -8
- package/dist/lib/installations/launch-gate.d.ts +0 -56
- package/dist/lib/installations/launch-gate.js +0 -83
- package/dist/lib/installations/migrate.d.ts +0 -100
- package/dist/lib/installations/migrate.js +105 -572
- package/dist/lib/installations/native-command.d.ts +0 -1
- package/dist/lib/installations/native-command.js +0 -6
- package/dist/lib/installations/resolve.d.ts +0 -24
- package/dist/lib/installations/resolve.js +0 -24
- package/dist/lib/installations/shims.d.ts +0 -395
- package/dist/lib/installations/shims.js +30 -957
- package/dist/lib/installations/store.d.ts +0 -199
- package/dist/lib/installations/store.js +1 -297
- package/dist/lib/installations/strategies.d.ts +0 -44
- package/dist/lib/installations/strategies.js +0 -87
- package/dist/lib/installations/types.d.ts +1 -67
- package/dist/lib/installations/types.js +0 -6
- package/dist/lib/installations/update-cancellation.d.ts +0 -74
- package/dist/lib/installations/update-cancellation.js +0 -74
- package/dist/lib/installations/update-policy.d.ts +0 -57
- package/dist/lib/installations/update-policy.js +0 -62
- package/dist/lib/installations/update-runtime.d.ts +0 -88
- package/dist/lib/installations/update-runtime.js +1 -127
- package/dist/lib/installations/update.d.ts +0 -53
- package/dist/lib/installations/update.js +0 -95
- package/dist/lib/installations/versions.d.ts +0 -310
- package/dist/lib/installations/versions.js +14 -837
- package/dist/lib/isolation-boundary-report.d.ts +0 -7
- package/dist/lib/isolation-boundary-report.js +0 -7
- package/dist/lib/launch-identity.d.ts +0 -8
- package/dist/lib/launch-identity.js +0 -8
- package/dist/lib/linear-autoclose.d.ts +0 -25
- package/dist/lib/linear-autoclose.js +0 -19
- package/dist/lib/linear-cache.d.ts +0 -57
- package/dist/lib/linear-cache.js +1 -81
- package/dist/lib/linear-project-counts.d.ts +0 -83
- package/dist/lib/linear-project-counts.js +2 -64
- package/dist/lib/linear-projects.d.ts +0 -62
- package/dist/lib/linear-projects.js +0 -85
- package/dist/lib/linear-rate-limit.d.ts +0 -21
- package/dist/lib/linear-rate-limit.js +1 -93
- package/dist/lib/linux-userns.d.ts +1 -42
- package/dist/lib/linux-userns.js +0 -47
- package/dist/lib/lock-compromise.d.ts +0 -7
- package/dist/lib/lock-compromise.js +0 -7
- package/dist/lib/log-follow.d.ts +0 -2
- package/dist/lib/log-follow.js +5 -15
- package/dist/lib/loop.d.ts +0 -106
- package/dist/lib/loop.js +0 -135
- package/dist/lib/machine-id.d.ts +0 -19
- package/dist/lib/machine-id.js +0 -19
- package/dist/lib/mailbox-gc.d.ts +0 -7
- package/dist/lib/mailbox-gc.js +0 -25
- package/dist/lib/mailbox-target.d.ts +0 -31
- package/dist/lib/mailbox-target.js +0 -27
- package/dist/lib/mailbox.d.ts +0 -77
- package/dist/lib/mailbox.js +5 -105
- package/dist/lib/manifest.d.ts +0 -4
- package/dist/lib/manifest.js +0 -36
- package/dist/lib/markdown.d.ts +0 -3
- package/dist/lib/markdown.js +0 -9
- package/dist/lib/mcp-registry.d.ts +1 -50
- package/dist/lib/mcp-registry.js +0 -64
- package/dist/lib/mcp.d.ts +0 -115
- package/dist/lib/mcp.js +3 -199
- package/dist/lib/memory-cache.d.ts +0 -11
- package/dist/lib/memory-cache.js +0 -9
- package/dist/lib/memory.d.ts +0 -52
- package/dist/lib/memory.js +12 -74
- package/dist/lib/menubar/download-menubar.d.ts +0 -35
- package/dist/lib/menubar/download-menubar.js +0 -38
- package/dist/lib/menubar/install-menubar.d.ts +0 -405
- package/dist/lib/menubar/install-menubar.js +25 -667
- package/dist/lib/menubar/migrate-prefs.d.ts +0 -47
- package/dist/lib/menubar/migrate-prefs.js +1 -70
- package/dist/lib/menubar/notify-desktop.d.ts +0 -82
- package/dist/lib/menubar/notify-desktop.js +0 -68
- package/dist/lib/menubar/resolve-version.d.ts +0 -41
- package/dist/lib/menubar/resolve-version.js +2 -44
- package/dist/lib/menubar/snapshot.d.ts +13 -66
- package/dist/lib/menubar/snapshot.js +45 -39
- package/dist/lib/merged-resources.d.ts +0 -10
- package/dist/lib/merged-resources.js +0 -10
- package/dist/lib/migrate-fold.d.ts +0 -31
- package/dist/lib/migrate-fold.js +6 -38
- package/dist/lib/model-tier-overrides.d.ts +0 -30
- package/dist/lib/model-tier-overrides.js +0 -14
- package/dist/lib/model-tiers.d.ts +0 -43
- package/dist/lib/model-tiers.js +5 -78
- package/dist/lib/models.d.ts +0 -145
- package/dist/lib/models.js +3 -333
- package/dist/lib/monitors/config.d.ts +0 -187
- package/dist/lib/monitors/config.js +4 -101
- package/dist/lib/monitors/dispatch.d.ts +0 -22
- package/dist/lib/monitors/dispatch.js +0 -35
- package/dist/lib/monitors/engine.d.ts +1 -53
- package/dist/lib/monitors/engine.js +17 -106
- package/dist/lib/monitors/fingerprint.d.ts +0 -43
- package/dist/lib/monitors/fingerprint.js +0 -57
- package/dist/lib/monitors/pid-watch.d.ts +0 -31
- package/dist/lib/monitors/pid-watch.js +0 -31
- package/dist/lib/monitors/remote.d.ts +0 -52
- package/dist/lib/monitors/remote.js +0 -42
- package/dist/lib/monitors/sources/command.d.ts +2 -9
- package/dist/lib/monitors/sources/command.js +13 -34
- package/dist/lib/monitors/sources/device.d.ts +0 -10
- package/dist/lib/monitors/sources/device.js +0 -14
- package/dist/lib/monitors/sources/failure.d.ts +0 -27
- package/dist/lib/monitors/sources/failure.js +0 -27
- package/dist/lib/monitors/sources/file.d.ts +0 -10
- package/dist/lib/monitors/sources/file.js +0 -11
- package/dist/lib/monitors/sources/http.d.ts +0 -7
- package/dist/lib/monitors/sources/http.js +0 -9
- package/dist/lib/monitors/sources/index.d.ts +0 -9
- package/dist/lib/monitors/sources/index.js +0 -9
- package/dist/lib/monitors/sources/poll.d.ts +0 -8
- package/dist/lib/monitors/sources/poll.js +0 -8
- package/dist/lib/monitors/sources/types.d.ts +0 -18
- package/dist/lib/monitors/sources/types.js +0 -8
- package/dist/lib/monitors/sources/webhook.d.ts +0 -7
- package/dist/lib/monitors/sources/webhook.js +0 -7
- package/dist/lib/monitors/sources/ws.d.ts +0 -10
- package/dist/lib/monitors/sources/ws.js +3 -13
- package/dist/lib/monitors/state.d.ts +0 -132
- package/dist/lib/monitors/state.js +2 -86
- package/dist/lib/native-accounts.d.ts +0 -32
- package/dist/lib/native-accounts.js +0 -17
- package/dist/lib/net-close.d.ts +0 -9
- package/dist/lib/net-close.js +0 -5
- package/dist/lib/notify.d.ts +0 -47
- package/dist/lib/notify.js +0 -30
- package/dist/lib/onepassword.d.ts +0 -14
- package/dist/lib/onepassword.js +0 -12
- package/dist/lib/open-url.d.ts +0 -38
- package/dist/lib/open-url.js +1 -69
- package/dist/lib/openclaw-keychain.js +2 -7
- package/dist/lib/operator.d.ts +0 -9
- package/dist/lib/operator.js +0 -34
- package/dist/lib/origin-machine.d.ts +0 -16
- package/dist/lib/origin-machine.js +0 -16
- package/dist/lib/output/git-output.d.ts +0 -31
- package/dist/lib/output/git-output.js +4 -43
- package/dist/lib/overdue.d.ts +0 -35
- package/dist/lib/overdue.js +0 -60
- package/dist/lib/owner-message.d.ts +0 -20
- package/dist/lib/owner-message.js +1 -40
- package/dist/lib/packages/output-home.d.ts +0 -28
- package/dist/lib/packages/output-home.js +0 -114
- package/dist/lib/paths.d.ts +0 -26
- package/dist/lib/paths.js +1 -27
- package/dist/lib/percentile.d.ts +0 -11
- package/dist/lib/percentile.js +0 -11
- package/dist/lib/perf/db.d.ts +0 -16
- package/dist/lib/perf/db.js +3 -32
- package/dist/lib/perf/spool.d.ts +0 -12
- package/dist/lib/perf/spool.js +0 -13
- package/dist/lib/perf/types.d.ts +0 -26
- package/dist/lib/perf/types.js +0 -1
- package/dist/lib/permissions-registry.d.ts +0 -48
- package/dist/lib/permissions-registry.js +0 -108
- package/dist/lib/permissions.d.ts +0 -215
- package/dist/lib/permissions.js +4 -407
- package/dist/lib/picker.d.ts +0 -124
- package/dist/lib/picker.js +0 -140
- package/dist/lib/placement.d.ts +0 -57
- package/dist/lib/placement.js +0 -47
- package/dist/lib/platform/exec.d.ts +0 -73
- package/dist/lib/platform/exec.js +0 -80
- package/dist/lib/platform/index.d.ts +0 -14
- package/dist/lib/platform/index.js +0 -14
- package/dist/lib/platform/ipc.d.ts +0 -10
- package/dist/lib/platform/ipc.js +0 -13
- package/dist/lib/platform/links.d.ts +0 -14
- package/dist/lib/platform/links.js +0 -25
- package/dist/lib/platform/paths.d.ts +0 -48
- package/dist/lib/platform/paths.js +0 -52
- package/dist/lib/platform/posixpath.d.ts +0 -18
- package/dist/lib/platform/posixpath.js +0 -62
- package/dist/lib/platform/process.d.ts +0 -67
- package/dist/lib/platform/process.js +5 -99
- package/dist/lib/platform/winpath.d.ts +0 -50
- package/dist/lib/platform/winpath.js +0 -81
- package/dist/lib/plugins/plugin-marketplace.d.ts +0 -165
- package/dist/lib/plugins/plugin-marketplace.js +10 -238
- package/dist/lib/plugins/plugins.d.ts +0 -238
- package/dist/lib/plugins/plugins.js +20 -454
- package/dist/lib/plugins/skills.d.ts +0 -86
- package/dist/lib/plugins/skills.js +1 -139
- package/dist/lib/pr-land-detach.d.ts +0 -17
- package/dist/lib/pr-land-detach.js +0 -30
- package/dist/lib/pricing/cost.d.ts +0 -29
- package/dist/lib/pricing/cost.js +0 -38
- package/dist/lib/pricing/index.d.ts +0 -6
- package/dist/lib/pricing/index.js +0 -6
- package/dist/lib/pricing/table.d.ts +0 -8
- package/dist/lib/pricing/table.js +3 -56
- package/dist/lib/probe.d.ts +0 -5
- package/dist/lib/probe.js +0 -40
- package/dist/lib/profiles-presets.d.ts +0 -20
- package/dist/lib/profiles-presets.js +1 -36
- package/dist/lib/profiles.d.ts +0 -185
- package/dist/lib/profiles.js +1 -158
- package/dist/lib/project-doctor.d.ts +0 -29
- package/dist/lib/project-doctor.js +0 -26
- package/dist/lib/project-focus.d.ts +0 -41
- package/dist/lib/project-focus.js +0 -49
- package/dist/lib/project-import.d.ts +0 -41
- package/dist/lib/project-import.js +0 -36
- package/dist/lib/project-key.d.ts +0 -65
- package/dist/lib/project-key.js +0 -70
- package/dist/lib/project-launch.d.ts +0 -49
- package/dist/lib/project-launch.js +2 -91
- package/dist/lib/project-probe.d.ts +0 -86
- package/dist/lib/project-probe.js +1 -88
- package/dist/lib/project-pull.d.ts +0 -96
- package/dist/lib/project-pull.js +0 -122
- package/dist/lib/project-resources.d.ts +0 -44
- package/dist/lib/project-resources.js +7 -171
- package/dist/lib/project-root.d.ts +0 -95
- package/dist/lib/project-root.js +0 -101
- package/dist/lib/project-schedule.d.ts +0 -43
- package/dist/lib/project-schedule.js +0 -52
- package/dist/lib/project-status.d.ts +0 -108
- package/dist/lib/project-status.js +0 -117
- package/dist/lib/projects.d.ts +0 -197
- package/dist/lib/projects.js +1 -213
- package/dist/lib/pwsh.d.ts +0 -41
- package/dist/lib/pwsh.js +0 -51
- package/dist/lib/quick-todo.d.ts +84 -0
- package/dist/lib/quick-todo.js +243 -0
- package/dist/lib/reconcile-and-repair.d.ts +0 -78
- package/dist/lib/reconcile-and-repair.js +3 -66
- package/dist/lib/redact.d.ts +0 -29
- package/dist/lib/redact.js +0 -54
- package/dist/lib/refresh-coordinator.d.ts +0 -15
- package/dist/lib/refresh-coordinator.js +0 -10
- package/dist/lib/refresh.d.ts +0 -39
- package/dist/lib/refresh.js +0 -45
- package/dist/lib/registry.d.ts +0 -65
- package/dist/lib/registry.js +0 -127
- package/dist/lib/reminders.d.ts +0 -21
- package/dist/lib/reminders.js +0 -30
- package/dist/lib/remote-agents-json.d.ts +0 -44
- package/dist/lib/remote-agents-json.js +1 -44
- package/dist/lib/reserved-stores.d.ts +0 -28
- package/dist/lib/reserved-stores.js +2 -28
- package/dist/lib/resource-aliases.d.ts +0 -12
- package/dist/lib/resource-aliases.js +0 -12
- package/dist/lib/resource-content-diff.d.ts +0 -28
- package/dist/lib/resource-content-diff.js +7 -34
- package/dist/lib/resource-inventory.d.ts +0 -51
- package/dist/lib/resource-inventory.js +0 -45
- package/dist/lib/resource-patterns.d.ts +0 -32
- package/dist/lib/resource-patterns.js +0 -34
- package/dist/lib/resource-profiles.d.ts +0 -7
- package/dist/lib/resource-profiles.js +0 -11
- package/dist/lib/resources/types.d.ts +0 -50
- package/dist/lib/resources/types.js +0 -7
- package/dist/lib/resources/workflows.d.ts +0 -7
- package/dist/lib/resources/workflows.js +0 -13
- package/dist/lib/resources.d.ts +0 -65
- package/dist/lib/resources.js +0 -78
- package/dist/lib/routers.d.ts +0 -67
- package/dist/lib/routers.js +0 -60
- package/dist/lib/routine-activation.d.ts +0 -23
- package/dist/lib/routine-activation.js +0 -24
- package/dist/lib/routine-context.d.ts +1 -91
- package/dist/lib/routine-context.js +0 -107
- package/dist/lib/routine-notify-owner.d.ts +0 -79
- package/dist/lib/routine-notify-owner.js +1 -103
- package/dist/lib/routine-notify.d.ts +0 -70
- package/dist/lib/routine-notify.js +1 -75
- package/dist/lib/routine-process-cleanup.d.ts +0 -1
- package/dist/lib/routine-process-cleanup.js +1 -4
- package/dist/lib/routine-readiness.d.ts +0 -63
- package/dist/lib/routine-readiness.js +4 -86
- package/dist/lib/routines-format.d.ts +0 -40
- package/dist/lib/routines-format.js +0 -67
- package/dist/lib/routines-placement.d.ts +0 -33
- package/dist/lib/routines-placement.js +0 -40
- package/dist/lib/routines-project.d.ts +0 -57
- package/dist/lib/routines-project.js +6 -80
- package/dist/lib/rules/compile.d.ts +0 -66
- package/dist/lib/rules/compile.js +6 -118
- package/dist/lib/rules/compose.d.ts +0 -56
- package/dist/lib/rules/compose.js +2 -83
- package/dist/lib/rules/rules.d.ts +0 -23
- package/dist/lib/rules/rules.js +0 -35
- package/dist/lib/rules/run-sync.d.ts +0 -16
- package/dist/lib/rules/run-sync.js +1 -44
- package/dist/lib/run-config.d.ts +0 -7
- package/dist/lib/run-config.js +0 -8
- package/dist/lib/run-defaults.d.ts +0 -14
- package/dist/lib/run-defaults.js +0 -14
- package/dist/lib/run-notify.d.ts +0 -18
- package/dist/lib/run-notify.js +0 -36
- package/dist/lib/run-trace-sync.d.ts +0 -21
- package/dist/lib/run-trace-sync.js +2 -66
- package/dist/lib/rush-session.d.ts +0 -26
- package/dist/lib/rush-session.js +0 -28
- package/dist/lib/sandbox.d.ts +0 -45
- package/dist/lib/sandbox.js +5 -93
- package/dist/lib/scheduler.d.ts +0 -28
- package/dist/lib/scheduler.js +0 -45
- package/dist/lib/scheduling/routines.d.ts +0 -652
- package/dist/lib/scheduling/routines.js +8 -475
- package/dist/lib/secrets-cli.d.ts +3 -8
- package/dist/lib/secrets-cli.js +1 -19
- package/dist/lib/secrets-client.d.ts +0 -117
- package/dist/lib/secrets-client.js +4 -275
- package/dist/lib/secrets-policy.d.ts +0 -142
- package/dist/lib/secrets-policy.js +4 -237
- package/dist/lib/secrets-types.d.ts +0 -87
- package/dist/lib/secrets-types.js +0 -13
- package/dist/lib/self-heal/checks/hook-manifest.js +0 -25
- package/dist/lib/self-heal/checks/hook-runtime.js +0 -5
- package/dist/lib/self-heal/checks/install-staging.d.ts +0 -1
- package/dist/lib/self-heal/checks/install-staging.js +1 -28
- package/dist/lib/self-heal/checks/menubar-helper.js +0 -5
- package/dist/lib/self-heal/checks/path.js +0 -9
- package/dist/lib/self-heal/checks/resources.js +0 -5
- package/dist/lib/self-heal/checks/shadowing.js +2 -16
- package/dist/lib/self-heal/checks/shims.js +0 -14
- package/dist/lib/self-heal/child.d.ts +12 -0
- package/dist/lib/self-heal/child.js +23 -0
- package/dist/lib/self-heal/registry.d.ts +0 -9
- package/dist/lib/self-heal/registry.js +0 -16
- package/dist/lib/self-heal/types.d.ts +0 -12
- package/dist/lib/self-heal/types.js +0 -15
- package/dist/lib/self-update.d.ts +0 -312
- package/dist/lib/self-update.js +9 -360
- package/dist/lib/service-manifest.d.ts +0 -39
- package/dist/lib/service-manifest.js +0 -72
- package/dist/lib/session/active.d.ts +13 -869
- package/dist/lib/session/active.js +17 -976
- package/dist/lib/session/actor-sidecar.d.ts +1 -32
- package/dist/lib/session/actor-sidecar.js +1 -41
- package/dist/lib/session/bookmarks.d.ts +0 -33
- package/dist/lib/session/bookmarks.js +0 -37
- package/dist/lib/session/bundle.d.ts +0 -86
- package/dist/lib/session/bundle.js +0 -54
- package/dist/lib/session/claude-accounts.d.ts +0 -40
- package/dist/lib/session/claude-accounts.js +0 -49
- package/dist/lib/session/cloud.d.ts +1 -23
- package/dist/lib/session/cloud.js +0 -26
- package/dist/lib/session/db.d.ts +5 -658
- package/dist/lib/session/db.js +22 -1443
- package/dist/lib/session/detached.d.ts +0 -21
- package/dist/lib/session/detached.js +0 -29
- package/dist/lib/session/discover.d.ts +3 -420
- package/dist/lib/session/discover.js +30 -1123
- package/dist/lib/session/fork.d.ts +1 -41
- package/dist/lib/session/fork.js +0 -19
- package/dist/lib/session/ghostty-tabs.d.ts +0 -24
- package/dist/lib/session/ghostty-tabs.js +0 -37
- package/dist/lib/session/glance-files.d.ts +19 -0
- package/dist/lib/session/glance-files.js +258 -0
- package/dist/lib/session/hook-sessions.d.ts +0 -33
- package/dist/lib/session/hook-sessions.js +4 -99
- package/dist/lib/session/host-link.d.ts +1 -94
- package/dist/lib/session/host-link.js +1 -81
- package/dist/lib/session/inject-target.d.ts +8 -0
- package/dist/lib/session/inject-target.js +32 -0
- package/dist/lib/session/inject.d.ts +0 -15
- package/dist/lib/session/inject.js +0 -15
- package/dist/lib/session/live-metadata.d.ts +1 -34
- package/dist/lib/session/live-metadata.js +1 -73
- package/dist/lib/session/local-tmux-attach.d.ts +0 -37
- package/dist/lib/session/local-tmux-attach.js +1 -76
- package/dist/lib/session/migrate-targets.d.ts +0 -46
- package/dist/lib/session/migrate-targets.js +0 -24
- package/dist/lib/session/migrations.d.ts +0 -12
- package/dist/lib/session/migrations.js +1 -20
- package/dist/lib/session/mirror.d.ts +0 -32
- package/dist/lib/session/mirror.js +0 -77
- package/dist/lib/session/origin-machine.js +0 -3
- package/dist/lib/session/pid-registry.d.ts +0 -80
- package/dist/lib/session/pid-registry.js +2 -81
- package/dist/lib/session/presence.d.ts +0 -39
- package/dist/lib/session/presence.js +2 -52
- package/dist/lib/session/process-view.d.ts +0 -11
- package/dist/lib/session/process-view.js +0 -25
- package/dist/lib/session/projection.d.ts +0 -3
- package/dist/lib/session/projection.js +0 -10
- package/dist/lib/session/provenance.d.ts +1 -37
- package/dist/lib/session/provenance.js +0 -69
- package/dist/lib/session/recovery.d.ts +1 -40
- package/dist/lib/session/recovery.js +2 -80
- package/dist/lib/session/relative-time.js +0 -3
- package/dist/lib/session/remote/peer-stream.d.ts +0 -42
- package/dist/lib/session/remote/peer-stream.js +0 -64
- package/dist/lib/session/remote/remote-bundle.d.ts +0 -6
- package/dist/lib/session/remote/remote-bundle.js +0 -21
- package/dist/lib/session/remote/remote-list.d.ts +1 -110
- package/dist/lib/session/remote/remote-list.js +5 -139
- package/dist/lib/session/remote/remote.d.ts +0 -98
- package/dist/lib/session/remote/remote.js +3 -119
- package/dist/lib/session/remote/watch.d.ts +1 -34
- package/dist/lib/session/remote/watch.js +12 -72
- package/dist/lib/session/remote-active.d.ts +0 -35
- package/dist/lib/session/remote-active.js +0 -48
- package/dist/lib/session/remote-bundle.js +0 -2
- package/dist/lib/session/remote-list.js +0 -2
- package/dist/lib/session/remote-preview-cache.d.ts +0 -7
- package/dist/lib/session/remote-preview-cache.js +1 -76
- package/dist/lib/session/remote.js +0 -2
- package/dist/lib/session/resume-command.d.ts +0 -6
- package/dist/lib/session/resume-command.js +0 -6
- package/dist/lib/session/resume-owner.d.ts +1 -52
- package/dist/lib/session/resume-owner.js +0 -56
- package/dist/lib/session/run-names.d.ts +0 -24
- package/dist/lib/session/run-names.js +0 -26
- package/dist/lib/session/session-cache.d.ts +2 -146
- package/dist/lib/session/session-cache.js +26 -203
- package/dist/lib/session/short-id.js +0 -3
- package/dist/lib/session/sync/agents.d.ts +0 -68
- package/dist/lib/session/sync/agents.js +0 -0
- package/dist/lib/session/sync/backend.d.ts +0 -39
- package/dist/lib/session/sync/backend.js +0 -45
- package/dist/lib/session/sync/config.d.ts +0 -27
- package/dist/lib/session/sync/config.js +0 -56
- package/dist/lib/session/sync/managed-config.d.ts +0 -17
- package/dist/lib/session/sync/managed-config.js +0 -17
- package/dist/lib/session/sync/managed-key.d.ts +0 -38
- package/dist/lib/session/sync/managed-key.js +1 -42
- package/dist/lib/session/sync/net-client.d.ts +0 -36
- package/dist/lib/session/sync/net-client.js +0 -30
- package/dist/lib/session/sync/provision.d.ts +0 -2
- package/dist/lib/session/sync/provision.js +0 -13
- package/dist/lib/session/sync/r2.d.ts +0 -20
- package/dist/lib/session/sync/r2.js +0 -20
- package/dist/lib/session/sync/transcript-crypto.d.ts +0 -37
- package/dist/lib/session/sync/transcript-crypto.js +5 -37
- package/dist/lib/session/sync/worker-template.d.ts +0 -5
- package/dist/lib/session/sync/worker-template.js +0 -40
- package/dist/lib/session/testdata/pid-registry-namespace.js +0 -2
- package/dist/lib/session/testdata/process-view-private.js +0 -1
- package/dist/lib/session/throughput.d.ts +0 -24
- package/dist/lib/session/throughput.js +1 -25
- package/dist/lib/session/timeline-pass.d.ts +1 -63
- package/dist/lib/session/timeline-pass.js +161 -148
- package/dist/lib/session/title.d.ts +0 -182
- package/dist/lib/session/title.js +0 -139
- package/dist/lib/session/tool-index.d.ts +2 -21
- package/dist/lib/session/tool-index.js +3 -75
- package/dist/lib/session/tool-store.d.ts +2 -48
- package/dist/lib/session/tool-store.js +1 -33
- package/dist/lib/session/viewing-in.d.ts +0 -67
- package/dist/lib/session/viewing-in.js +1 -71
- package/dist/lib/session/watch.js +0 -2
- package/dist/lib/session/width.js +0 -3
- package/dist/lib/sessions-client.d.ts +0 -46
- package/dist/lib/sessions-client.js +36 -113
- package/dist/lib/settings-manifest.d.ts +1 -17
- package/dist/lib/settings-manifest.js +4 -57
- package/dist/lib/setup-tool-install.d.ts +0 -1
- package/dist/lib/setup-tool-install.js +2 -7
- package/dist/lib/setup-tool-status.d.ts +0 -3
- package/dist/lib/setup-tool-status.js +4 -14
- package/dist/lib/sha256-asset.d.ts +0 -20
- package/dist/lib/sha256-asset.js +0 -20
- package/dist/lib/share-runtime.d.ts +0 -10
- package/dist/lib/share-runtime.js +1 -27
- package/dist/lib/shim-heal.d.ts +0 -15
- package/dist/lib/shim-heal.js +3 -29
- package/dist/lib/signin-badge.d.ts +0 -72
- package/dist/lib/signin-badge.js +0 -86
- package/dist/lib/sink-format.d.ts +0 -32
- package/dist/lib/sink-format.js +0 -14
- package/dist/lib/smart-launch.d.ts +0 -75
- package/dist/lib/smart-launch.js +1 -83
- package/dist/lib/snapshot.d.ts +0 -46
- package/dist/lib/snapshot.js +5 -31
- package/dist/lib/spinner.d.ts +0 -37
- package/dist/lib/spinner.js +0 -37
- package/dist/lib/sqlite.d.ts +0 -13
- package/dist/lib/sqlite.js +3 -71
- package/dist/lib/ssh-exec.d.ts +0 -209
- package/dist/lib/ssh-exec.js +11 -248
- package/dist/lib/ssh-tunnel.d.ts +0 -43
- package/dist/lib/ssh-tunnel.js +2 -48
- package/dist/lib/staleness/checkers/commands.d.ts +0 -4
- package/dist/lib/staleness/checkers/commands.js +0 -4
- package/dist/lib/staleness/checkers/hooks.d.ts +0 -10
- package/dist/lib/staleness/checkers/hooks.js +0 -15
- package/dist/lib/staleness/checkers/mcp.d.ts +0 -9
- package/dist/lib/staleness/checkers/mcp.js +0 -9
- package/dist/lib/staleness/checkers/permissions.d.ts +0 -12
- package/dist/lib/staleness/checkers/permissions.js +0 -13
- package/dist/lib/staleness/checkers/plugins.d.ts +0 -8
- package/dist/lib/staleness/checkers/plugins.js +0 -8
- package/dist/lib/staleness/checkers/rules.d.ts +0 -15
- package/dist/lib/staleness/checkers/rules.js +0 -26
- package/dist/lib/staleness/checkers/skills.d.ts +0 -4
- package/dist/lib/staleness/checkers/skills.js +0 -4
- package/dist/lib/staleness/checkers/subagents.d.ts +0 -9
- package/dist/lib/staleness/checkers/subagents.js +0 -9
- package/dist/lib/staleness/checkers/types.d.ts +0 -34
- package/dist/lib/staleness/checkers/types.js +0 -19
- package/dist/lib/staleness/checkers/workflows.d.ts +0 -7
- package/dist/lib/staleness/checkers/workflows.js +0 -7
- package/dist/lib/staleness/detectors/commands.js +0 -17
- package/dist/lib/staleness/detectors/hooks.js +1 -6
- package/dist/lib/staleness/detectors/mcp.js +0 -4
- package/dist/lib/staleness/detectors/permissions.js +10 -23
- package/dist/lib/staleness/detectors/rules.js +0 -6
- package/dist/lib/staleness/detectors/skills.d.ts +0 -1
- package/dist/lib/staleness/detectors/skills.js +1 -12
- package/dist/lib/staleness/detectors/types.d.ts +0 -10
- package/dist/lib/staleness/fingerprint.d.ts +0 -19
- package/dist/lib/staleness/fingerprint.js +0 -35
- package/dist/lib/staleness/index.d.ts +0 -28
- package/dist/lib/staleness/index.js +1 -45
- package/dist/lib/staleness/layers.d.ts +0 -23
- package/dist/lib/staleness/layers.js +0 -34
- package/dist/lib/staleness/prune.d.ts +0 -71
- package/dist/lib/staleness/prune.js +2 -27
- package/dist/lib/staleness/registry.d.ts +0 -10
- package/dist/lib/staleness/registry.js +3 -33
- package/dist/lib/staleness/types.d.ts +0 -36
- package/dist/lib/staleness/types.js +0 -5
- package/dist/lib/staleness/writers/commands.js +1 -48
- package/dist/lib/staleness/writers/hooks.js +1 -18
- package/dist/lib/staleness/writers/kinds.d.ts +0 -12
- package/dist/lib/staleness/writers/kinds.js +0 -1
- package/dist/lib/staleness/writers/lazy-map.d.ts +0 -11
- package/dist/lib/staleness/writers/mcp.js +0 -13
- package/dist/lib/staleness/writers/plugins.js +0 -4
- package/dist/lib/staleness/writers/rules.d.ts +0 -1
- package/dist/lib/staleness/writers/rules.js +1 -19
- package/dist/lib/staleness/writers/skills.js +3 -14
- package/dist/lib/staleness/writers/sources.d.ts +0 -11
- package/dist/lib/staleness/writers/sources.js +0 -32
- package/dist/lib/staleness/writers/subagents.js +0 -16
- package/dist/lib/staleness/writers/types.d.ts +0 -58
- package/dist/lib/staleness/writers/workflows.js +1 -1
- package/dist/lib/standalone-tools.d.ts +24 -0
- package/dist/lib/standalone-tools.js +58 -0
- package/dist/lib/star-nudge.d.ts +0 -32
- package/dist/lib/star-nudge.js +2 -36
- package/dist/lib/startup/command-registry.d.ts +0 -45
- package/dist/lib/startup/command-registry.js +1 -46
- package/dist/lib/startup/dev-build.d.ts +0 -9
- package/dist/lib/startup/dev-build.js +1 -42
- package/dist/lib/startup/root-command.d.ts +0 -19
- package/dist/lib/startup/root-command.js +0 -19
- package/dist/lib/startup/spellcheck.d.ts +0 -13
- package/dist/lib/startup/spellcheck.js +0 -13
- package/dist/lib/state.d.ts +0 -376
- package/dist/lib/state.js +19 -737
- package/dist/lib/storage/selection.d.ts +0 -40
- package/dist/lib/storage/selection.js +0 -29
- package/dist/lib/subagents-registry.d.ts +0 -56
- package/dist/lib/subagents-registry.js +0 -99
- package/dist/lib/subagents.d.ts +0 -128
- package/dist/lib/subagents.js +1 -158
- package/dist/lib/summarizer/config.d.ts +0 -37
- package/dist/lib/summarizer/config.js +0 -37
- package/dist/lib/summarizer/pass.d.ts +0 -20
- package/dist/lib/summarizer/pass.js +1 -34
- package/dist/lib/summarizer/summarize.d.ts +1 -49
- package/dist/lib/summarizer/summarize.js +0 -35
- package/dist/lib/sync-passphrase.d.ts +0 -16
- package/dist/lib/sync-passphrase.js +1 -18
- package/dist/lib/sync-status.d.ts +0 -72
- package/dist/lib/sync-status.js +0 -55
- package/dist/lib/sync-umbrella.d.ts +0 -54
- package/dist/lib/sync-umbrella.js +0 -48
- package/dist/lib/system-run-sync.d.ts +0 -5
- package/dist/lib/system-run-sync.js +1 -31
- package/dist/lib/teams/agents.d.ts +1 -444
- package/dist/lib/teams/agents.js +11 -871
- package/dist/lib/teams/api.d.ts +2 -52
- package/dist/lib/teams/api.js +4 -63
- package/dist/lib/teams/debug.d.ts +0 -6
- package/dist/lib/teams/debug.js +0 -6
- package/dist/lib/teams/delivery.d.ts +0 -41
- package/dist/lib/teams/delivery.js +0 -32
- package/dist/lib/teams/file_ops.d.ts +0 -11
- package/dist/lib/teams/file_ops.js +0 -11
- package/dist/lib/teams/forEach.d.ts +0 -76
- package/dist/lib/teams/forEach.js +1 -77
- package/dist/lib/teams/index.d.ts +1 -7
- package/dist/lib/teams/index.js +1 -7
- package/dist/lib/teams/parsers.d.ts +0 -4
- package/dist/lib/teams/parsers.js +0 -81
- package/dist/lib/teams/persistence.d.ts +0 -2
- package/dist/lib/teams/persistence.js +0 -12
- package/dist/lib/teams/placement-probe.d.ts +0 -12
- package/dist/lib/teams/placement-probe.js +1 -51
- package/dist/lib/teams/pr-watch.d.ts +0 -107
- package/dist/lib/teams/pr-watch.js +1 -107
- package/dist/lib/teams/registry.d.ts +0 -36
- package/dist/lib/teams/registry.js +0 -47
- package/dist/lib/teams/remoteWorktree.d.ts +0 -50
- package/dist/lib/teams/remoteWorktree.js +1 -96
- package/dist/lib/teams/scheduler.d.ts +0 -111
- package/dist/lib/teams/scheduler.js +2 -125
- package/dist/lib/teams/summarizer.d.ts +0 -22
- package/dist/lib/teams/summarizer.js +6 -50
- package/dist/lib/teams/supervisor.d.ts +0 -38
- package/dist/lib/teams/supervisor.js +0 -21
- package/dist/lib/teams/worktree.d.ts +0 -95
- package/dist/lib/teams/worktree.js +3 -110
- package/dist/lib/template.d.ts +0 -21
- package/dist/lib/template.js +0 -23
- package/dist/lib/term-client.d.ts +0 -26
- package/dist/lib/term-client.js +0 -48
- package/dist/lib/term-driver.d.ts +0 -5
- package/dist/lib/term-driver.js +0 -8
- package/dist/lib/terminal/backends/ghostty.d.ts +0 -2
- package/dist/lib/terminal/backends/ghostty.js +0 -12
- package/dist/lib/terminal/backends/index.d.ts +0 -17
- package/dist/lib/terminal/backends/index.js +0 -15
- package/dist/lib/terminal/backends/iterm.d.ts +0 -2
- package/dist/lib/terminal/backends/iterm.js +0 -10
- package/dist/lib/terminal/backends/terminal-app.d.ts +0 -10
- package/dist/lib/terminal/backends/terminal-app.js +0 -30
- package/dist/lib/terminal/backends/tmux.d.ts +0 -10
- package/dist/lib/terminal/backends/tmux.js +0 -2
- package/dist/lib/terminal/backends/vscodium-agent.d.ts +0 -25
- package/dist/lib/terminal/backends/vscodium-agent.js +0 -36
- package/dist/lib/terminal/engine.d.ts +0 -17
- package/dist/lib/terminal/engine.js +0 -10
- package/dist/lib/terminal/index.d.ts +0 -8
- package/dist/lib/terminal/inject.d.ts +1 -173
- package/dist/lib/terminal/inject.js +0 -146
- package/dist/lib/terminal/policy.d.ts +0 -8
- package/dist/lib/terminal/policy.js +0 -1
- package/dist/lib/terminal/preferred.d.ts +0 -66
- package/dist/lib/terminal/preferred.js +0 -30
- package/dist/lib/terminal/quote.d.ts +0 -8
- package/dist/lib/terminal/quote.js +0 -8
- package/dist/lib/terminal/resolve.d.ts +0 -46
- package/dist/lib/terminal/resolve.js +0 -30
- package/dist/lib/terminal/run-surface.d.ts +0 -56
- package/dist/lib/terminal/run-surface.js +0 -46
- package/dist/lib/terminal/shell.d.ts +0 -3
- package/dist/lib/terminal/shell.js +0 -13
- package/dist/lib/terminal/transport.d.ts +0 -14
- package/dist/lib/terminal/transport.js +1 -30
- package/dist/lib/terminal/types.d.ts +0 -40
- package/dist/lib/terminal/types.js +0 -10
- package/dist/lib/text/relative-time.d.ts +0 -36
- package/dist/lib/text/relative-time.js +0 -43
- package/dist/lib/text/short-id.d.ts +0 -16
- package/dist/lib/text/short-id.js +0 -16
- package/dist/lib/text/width.d.ts +0 -24
- package/dist/lib/text/width.js +10 -52
- package/dist/lib/tmux/binary.d.ts +0 -36
- package/dist/lib/tmux/binary.js +0 -28
- package/dist/lib/tmux/index.d.ts +0 -5
- package/dist/lib/tmux/index.js +0 -5
- package/dist/lib/tmux/orphan-reap.d.ts +0 -253
- package/dist/lib/tmux/orphan-reap.js +3 -299
- package/dist/lib/tmux/paths.d.ts +0 -14
- package/dist/lib/tmux/paths.js +0 -14
- package/dist/lib/tmux/session.d.ts +0 -263
- package/dist/lib/tmux/session.js +6 -344
- package/dist/lib/traces/backend.d.ts +0 -20
- package/dist/lib/traces/backend.js +0 -23
- package/dist/lib/traces/classify.d.ts +0 -20
- package/dist/lib/traces/classify.js +0 -7
- package/dist/lib/traces/insights.d.ts +1 -84
- package/dist/lib/traces/insights.js +0 -126
- package/dist/lib/traces/phenotype.d.ts +0 -69
- package/dist/lib/traces/phenotype.js +0 -150
- package/dist/lib/traces/provision.d.ts +0 -1
- package/dist/lib/traces/provision.js +0 -5
- package/dist/lib/traces/schema2-build.d.ts +3 -60
- package/dist/lib/traces/schema2-build.js +8 -149
- package/dist/lib/traces/schema2-danger.d.ts +0 -30
- package/dist/lib/traces/schema2-danger.js +1 -63
- package/dist/lib/traces/schema2.d.ts +0 -11
- package/dist/lib/traces/segments.d.ts +0 -44
- package/dist/lib/traces/segments.js +0 -65
- package/dist/lib/traces/sync.d.ts +2 -239
- package/dist/lib/traces/sync.js +15 -237
- package/dist/lib/traces/worker-template.d.ts +0 -3
- package/dist/lib/traces/worker-template.js +0 -29
- package/dist/lib/triggers/handlers.d.ts +0 -82
- package/dist/lib/triggers/handlers.js +0 -75
- package/dist/lib/triggers/webhook.d.ts +0 -158
- package/dist/lib/triggers/webhook.js +0 -143
- package/dist/lib/types.d.ts +0 -736
- package/dist/lib/types.js +0 -50
- package/dist/lib/uninstall.d.ts +0 -17
- package/dist/lib/uninstall.js +0 -75
- package/dist/lib/usage-backoff.d.ts +0 -20
- package/dist/lib/usage-backoff.js +3 -60
- package/dist/lib/usage-refresh.d.ts +0 -154
- package/dist/lib/usage-refresh.js +8 -212
- package/dist/lib/verbs.d.ts +0 -12
- package/dist/lib/verbs.js +0 -12
- package/dist/lib/version-duplicates.d.ts +0 -6
- package/dist/lib/version-duplicates.js +0 -6
- package/dist/lib/version.d.ts +0 -55
- package/dist/lib/version.js +1 -58
- package/dist/lib/view-types.d.ts +0 -48
- package/dist/lib/warn-unpushed.d.ts +0 -27
- package/dist/lib/warn-unpushed.js +1 -45
- package/dist/lib/watchdog/history.d.ts +0 -1
- package/dist/lib/watchdog/history.js +0 -3
- package/dist/lib/watchdog/index.js +0 -2
- package/dist/lib/watchdog/log.d.ts +0 -19
- package/dist/lib/watchdog/log.js +0 -34
- package/dist/lib/watchdog/read.d.ts +0 -27
- package/dist/lib/watchdog/read.js +3 -58
- package/dist/lib/watchdog/rotate.d.ts +0 -139
- package/dist/lib/watchdog/rotate.js +2 -151
- package/dist/lib/watchdog/runner.d.ts +0 -125
- package/dist/lib/watchdog/runner.js +3 -223
- package/dist/lib/watchdog/service.d.ts +0 -1
- package/dist/lib/watchdog/service.js +0 -2
- package/dist/lib/watchdog/watchdog-agent.d.ts +0 -31
- package/dist/lib/watchdog/watchdog-agent.js +0 -27
- package/dist/lib/watchdog/watchdog.d.ts +0 -7
- package/dist/lib/watchdog/watchdog.js +0 -10
- package/dist/lib/watchdog/watchdogTail.js +0 -7
- package/dist/lib/whats-new.d.ts +0 -10
- package/dist/lib/whats-new.js +0 -21
- package/dist/lib/workflows-registry.d.ts +0 -45
- package/dist/lib/workflows-registry.js +0 -60
- package/dist/lib/workflows.d.ts +0 -282
- package/dist/lib/workflows.js +3 -213
- package/dist/lib/worktree/held.d.ts +0 -89
- package/dist/lib/worktree/held.js +1 -103
- package/dist/lib/wrap.d.ts +0 -32
- package/dist/lib/wrap.js +0 -32
- package/dist/lib/yaml-io.d.ts +0 -45
- package/dist/lib/yaml-io.js +0 -47
- package/dist/session-tracker/dist/adapters/claude.js +0 -2
- package/dist/session-tracker/dist/hook.sh +4 -37
- package/dist/session-tracker/dist/index.d.ts +0 -7
- package/dist/session-tracker/dist/index.js +0 -5
- package/dist/session-tracker/dist/install-hook.d.ts +0 -5
- package/dist/session-tracker/dist/install-hook.js +1 -15
- package/dist/session-tracker/dist/prune-state.js +0 -4
- package/dist/session-tracker/dist/reader.js +0 -4
- package/dist/session-tracker/dist/state-file.d.ts +0 -3
- package/dist/session-tracker/dist/state-file.js +3 -8
- package/package.json +3 -4
- package/scripts/postinstall.js +8 -116
- package/dist/lib/session/artifacts.d.ts +0 -14
- package/dist/lib/session/artifacts.js +0 -101
- package/dist/lib/session/bash-command.d.ts +0 -63
- package/dist/lib/session/bash-command.js +0 -490
- package/dist/lib/session/digest.d.ts +0 -66
- package/dist/lib/session/digest.js +0 -328
- package/dist/lib/session/highlights.d.ts +0 -151
- package/dist/lib/session/highlights.js +0 -391
- package/dist/lib/session/insights.d.ts +0 -165
- package/dist/lib/session/insights.js +0 -563
- package/dist/lib/session/linear.d.ts +0 -19
- package/dist/lib/session/linear.js +0 -99
- package/dist/lib/session/parse.d.ts +0 -224
- package/dist/lib/session/parse.js +0 -2408
- package/dist/lib/session/prompt.d.ts +0 -213
- package/dist/lib/session/prompt.js +0 -601
- package/dist/lib/session/render.d.ts +0 -133
- package/dist/lib/session/render.js +0 -1047
- package/dist/lib/session/share-html.d.ts +0 -35
- package/dist/lib/session/share-html.js +0 -319
- package/dist/lib/session/shell-programs.d.ts +0 -33
- package/dist/lib/session/shell-programs.js +0 -380
- package/dist/lib/session/state.d.ts +0 -269
- package/dist/lib/session/state.js +0 -777
- package/dist/lib/session/stream-render.d.ts +0 -4
- package/dist/lib/session/stream-render.js +0 -131
- package/dist/lib/session/tail.d.ts +0 -88
- package/dist/lib/session/tail.js +0 -294
- package/dist/lib/session/team-filter.d.ts +0 -129
- package/dist/lib/session/team-filter.js +0 -269
- package/dist/lib/session/timeline.d.ts +0 -172
- package/dist/lib/session/timeline.js +0 -636
- package/dist/lib/session/tool-calls.d.ts +0 -132
- package/dist/lib/session/tool-calls.js +0 -674
- package/dist/lib/session/trajectory-compare.d.ts +0 -48
- package/dist/lib/session/trajectory-compare.js +0 -116
- package/dist/lib/session/trajectory-html.d.ts +0 -19
- package/dist/lib/session/trajectory-html.js +0 -771
- package/dist/lib/session/trajectory-lineage.d.ts +0 -93
- package/dist/lib/session/trajectory-lineage.js +0 -195
- package/dist/lib/session/trajectory-text.d.ts +0 -38
- package/dist/lib/session/trajectory-text.js +0 -284
- package/dist/lib/session/trajectory.d.ts +0 -145
- package/dist/lib/session/trajectory.js +0 -394
- package/dist/lib/session/types.d.ts +0 -627
- package/dist/lib/session/types.js +0 -43
|
@@ -1,44 +1,25 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Interactive session picker and preview renderer.
|
|
3
|
-
*
|
|
4
|
-
* Powers the fuzzy-searchable session list shown by `agents sessions` in a TTY.
|
|
5
|
-
* Builds a compact preview for each session (prompt, activity summary, last
|
|
6
|
-
* response) and delegates to the generic `itemPicker` for the interactive UI.
|
|
7
|
-
*/
|
|
8
1
|
import fs from 'node:fs';
|
|
9
2
|
import path from 'node:path';
|
|
10
3
|
import chalk from 'chalk';
|
|
11
4
|
import { truncate, humanDuration, formatBytes } from '../lib/format.js';
|
|
12
|
-
import { sessionDisplayAgent } from '
|
|
5
|
+
import { sessionDisplayAgent } from '@phnx-labs/sessions-cli/reader';
|
|
13
6
|
import { fetchPeerPreviewDigest } from '../lib/session/remote-list.js';
|
|
14
|
-
import { parseSession, sanitizeForTerminal, SNAPSHOT_TODO_TOOLS } from '
|
|
15
|
-
import { readSessionTail, readSessionHead } from '
|
|
16
|
-
import { safeTeamText } from '
|
|
17
|
-
import { cleanSessionPrompt, extractSessionTopic, isSyntheticUserMessage, firstUserMessageFromEvents } from '
|
|
18
|
-
import { linkPath, linkUrl, relativeToCwd, shortenModel } from '
|
|
19
|
-
import { linearIssueUrl } from '
|
|
20
|
-
import { extractTodoProgress, WORKTREE_RE } from '
|
|
7
|
+
import { parseSession, sanitizeForTerminal, SNAPSHOT_TODO_TOOLS } from '@phnx-labs/sessions-cli/reader';
|
|
8
|
+
import { readSessionTail, readSessionHead } from '@phnx-labs/sessions-cli/reader';
|
|
9
|
+
import { safeTeamText } from '@phnx-labs/sessions-cli/reader';
|
|
10
|
+
import { cleanSessionPrompt, extractSessionTopic, isSyntheticUserMessage, firstUserMessageFromEvents } from '@phnx-labs/sessions-cli/reader';
|
|
11
|
+
import { linkPath, linkUrl, relativeToCwd, shortenModel } from '@phnx-labs/sessions-cli/reader';
|
|
12
|
+
import { linearIssueUrl } from '@phnx-labs/sessions-cli/reader';
|
|
13
|
+
import { extractTodoProgress, WORKTREE_RE } from '@phnx-labs/sessions-cli/reader';
|
|
21
14
|
import { renderMarkdown } from '../lib/markdown.js';
|
|
22
15
|
import { wrapToWidth } from '../lib/wrap.js';
|
|
23
16
|
import { terminalWidth, stringWidth } from '../lib/session/width.js';
|
|
24
17
|
import { itemPicker } from '../lib/picker.js';
|
|
25
18
|
import { createMemoryCache } from '../lib/memory-cache.js';
|
|
26
|
-
import { classifyFileChanges, changeCounts, toolHistogram, detectTestResult } from '
|
|
27
|
-
import { extractArtifacts, extractHooks, extractLinks, extractRepos, extractSkills, harnessTracksBackgroundShells, isBackgroundShellStart, isSubAgentTool, } from '
|
|
19
|
+
import { classifyFileChanges, changeCounts, toolHistogram, detectTestResult } from '@phnx-labs/sessions-cli/reader';
|
|
20
|
+
import { extractArtifacts, extractHooks, extractLinks, extractRepos, extractSkills, harnessTracksBackgroundShells, isBackgroundShellStart, isSubAgentTool, } from '@phnx-labs/sessions-cli/reader';
|
|
28
21
|
import { getSessionPlugins, readSessionPreviewCache, writeSessionPreviewCache, readSessionContent, readArchivedSessionPreview } from '../lib/session/db.js';
|
|
29
22
|
import { machineId } from '../lib/session/sync/config.js';
|
|
30
|
-
/** A session whose transcript FILE is on another machine: its `filePath` is on
|
|
31
|
-
* that peer's disk, so the preview can't parse it locally — it fetches the
|
|
32
|
-
* peer's digest over SSH and shows metadata + a "resume there" note until that
|
|
33
|
-
* lands. `_remote` is an explicit signal; a peer `machine` plus no readable
|
|
34
|
-
* local file covers host-dispatch index rows and live-registry rows that were
|
|
35
|
-
* synthesized outside the fan-out. A locally-readable synced mirror stays
|
|
36
|
-
* local even when its recorded owner is another machine.
|
|
37
|
-
*
|
|
38
|
-
* This is the READ rule and only the read rule. Whether a session may be
|
|
39
|
-
* RESUMED here is a different question with a different answer — a mirror is
|
|
40
|
-
* readable but not resumable — and `sessionOwnerDevice`
|
|
41
|
-
* (lib/session/resume-owner.ts) is the single place that answers it (RUSH-2022). */
|
|
42
23
|
export function transcriptOnPeerOf(session) {
|
|
43
24
|
if (session._remote)
|
|
44
25
|
return session.machine;
|
|
@@ -49,12 +30,6 @@ export function transcriptOnPeerOf(session) {
|
|
|
49
30
|
}
|
|
50
31
|
return undefined;
|
|
51
32
|
}
|
|
52
|
-
/**
|
|
53
|
-
* Compact checklist tally for list rows and previews (RUSH-2045).
|
|
54
|
-
* Example: `✓6/8 · A5 wiring runner`. Empty string when there is no list.
|
|
55
|
-
* Consumes `SessionMeta.todos` / `ActiveSession.todos` as populated by the
|
|
56
|
-
* state engine — does not re-parse transcripts.
|
|
57
|
-
*/
|
|
58
33
|
export function formatTodoCompact(todos) {
|
|
59
34
|
if (!todos || !Number.isFinite(todos.total) || todos.total < 1)
|
|
60
35
|
return '';
|
|
@@ -63,11 +38,6 @@ export function formatTodoCompact(todos) {
|
|
|
63
38
|
const step = todos.activeForm?.replace(/\s+/g, ' ').trim();
|
|
64
39
|
return step ? `${tally} · ${step}` : tally;
|
|
65
40
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Best-effort GitHub repo URL from a checkout path shaped like
|
|
68
|
-
* `…/github.com/<owner>/<repo>/…`. Used to make the project name clickable
|
|
69
|
-
* when no Linear project URL is available.
|
|
70
|
-
*/
|
|
71
41
|
export function githubRepoUrlFromCwd(cwd) {
|
|
72
42
|
if (!cwd)
|
|
73
43
|
return undefined;
|
|
@@ -75,12 +45,7 @@ export function githubRepoUrlFromCwd(cwd) {
|
|
|
75
45
|
const m = norm.match(/\/github\.com\/([^/]+\/[^/]+)/);
|
|
76
46
|
return m ? `https://github.com/${m[1]}` : undefined;
|
|
77
47
|
}
|
|
78
|
-
|
|
79
|
-
* SessionMeta originates in discover.ts (gitBranch, cwd, label, etc. read from
|
|
80
|
-
* untrusted session files). parseSession sanitizes event payloads at its
|
|
81
|
-
* chokepoint, but meta fields bypass that path. Strip terminal escapes here
|
|
82
|
-
* before any meta string reaches a TTY.
|
|
83
|
-
*/
|
|
48
|
+
// Peer metadata is untrusted: bound its shape and strip terminal escapes before rendering.
|
|
84
49
|
function sanitizeMeta(s) {
|
|
85
50
|
const clean = (v) => (v == null ? v : sanitizeForTerminal(v));
|
|
86
51
|
const todos = s.todos
|
|
@@ -110,9 +75,6 @@ function sanitizeMeta(s) {
|
|
|
110
75
|
generatedTitle: clean(s.generatedTitle),
|
|
111
76
|
ticketId: clean(s.ticketId),
|
|
112
77
|
prUrl: clean(s.prUrl),
|
|
113
|
-
// A remote row's meta is peer-supplied JSON that parseRemoteList hands over
|
|
114
|
-
// unsanitized, and both of these reach the preview pane — so an escape
|
|
115
|
-
// sequence in a peer's plan text or path list would otherwise hit our TTY.
|
|
116
78
|
plan: clean(s.plan),
|
|
117
79
|
spawnedTeam: clean(s.spawnedTeam),
|
|
118
80
|
recentDirectoriesTouched: s.recentDirectoriesTouched?.map(sanitizeForTerminal),
|
|
@@ -130,17 +92,10 @@ const remoteDigestCache = createMemoryCache({
|
|
|
130
92
|
function remoteDigestKey(sessionId, machine) {
|
|
131
93
|
return `${machine}:${sessionId}`;
|
|
132
94
|
}
|
|
133
|
-
/**
|
|
134
|
-
* The open picker's repaint trigger. The peer fetch resolves while the pane is
|
|
135
|
-
* already painted, so completion has to nudge the picker into re-rendering —
|
|
136
|
-
* pickers register their trigger here (via `registerPreviewRepaint`) and clear
|
|
137
|
-
* it when they close, making a late fetch after close a no-op.
|
|
138
|
-
*/
|
|
139
95
|
let remotePreviewRepaint;
|
|
140
96
|
export function setRemotePreviewRepaint(repaint) {
|
|
141
97
|
remotePreviewRepaint = repaint;
|
|
142
98
|
}
|
|
143
|
-
/** Seam for tests: the real fetcher opens an SSH connection to the peer. */
|
|
144
99
|
let peerDigestFetcher = fetchPeerPreviewDigest;
|
|
145
100
|
export function setPeerDigestFetcherForTest(fetcher) {
|
|
146
101
|
peerDigestFetcher = fetcher ?? fetchPeerPreviewDigest;
|
|
@@ -148,12 +103,6 @@ export function setPeerDigestFetcherForTest(fetcher) {
|
|
|
148
103
|
export function clearRemoteDigestCacheForTest() {
|
|
149
104
|
remoteDigestCache.clear();
|
|
150
105
|
}
|
|
151
|
-
/**
|
|
152
|
-
* Look up (or start fetching) the peer digest for a remote row. Returns the
|
|
153
|
-
* current entry synchronously — `buildPreview` renders whatever state exists
|
|
154
|
-
* now, and the fetch's completion repaints the pane through the registered
|
|
155
|
-
* trigger.
|
|
156
|
-
*/
|
|
157
106
|
function remoteDigestForPreview(session, machine) {
|
|
158
107
|
const key = remoteDigestKey(session.id, machine);
|
|
159
108
|
const existing = remoteDigestCache.get(key);
|
|
@@ -172,14 +121,7 @@ function remoteDigestForPreview(session, machine) {
|
|
|
172
121
|
.then(() => remotePreviewRepaint?.());
|
|
173
122
|
return pending;
|
|
174
123
|
}
|
|
175
|
-
|
|
176
|
-
* Validate + scrub a peer-supplied preview digest before any of it reaches this
|
|
177
|
-
* terminal. Peer JSON is untrusted at this boundary — the same rule
|
|
178
|
-
* `sanitizeMeta` applies to fan-out rows — so every string is stripped of
|
|
179
|
-
* terminal escapes and every list re-shaped field by field. Anything that
|
|
180
|
-
* doesn't look like the v1 digest is rejected, so a version-skewed peer
|
|
181
|
-
* degrades to the metadata card instead of a corrupted pane.
|
|
182
|
-
*/
|
|
124
|
+
// Remote links retain OSC-8 only for http(s); every other field is terminal-sanitized and size-bounded.
|
|
183
125
|
export function sanitizeRemoteDigest(raw) {
|
|
184
126
|
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
185
127
|
return undefined;
|
|
@@ -235,15 +177,9 @@ export function sanitizeRemoteDigest(raw) {
|
|
|
235
177
|
planFile: str(d.planFile),
|
|
236
178
|
todos,
|
|
237
179
|
subAgentCount: num(d.subAgentCount),
|
|
238
|
-
// optNum, not num: a peer's JSON is untrusted, and the undefined-vs-0
|
|
239
|
-
// distinction is load-bearing here — num() would coerce a malformed value
|
|
240
|
-
// to 0, which reads as "scanned, none running".
|
|
241
180
|
backgroundShellCount: optNum(d.backgroundShellCount),
|
|
242
181
|
toolTags: strList(d.toolTags),
|
|
243
182
|
changes,
|
|
244
|
-
// Per-file paths from an untrusted peer: keep only well-formed {path, op}
|
|
245
|
-
// entries (path scrubbed of terminal escapes, op a known FileOp), bounded
|
|
246
|
-
// like the local build so a hostile peer can't flood the pane.
|
|
247
183
|
changedFiles: objList(d.changedFiles, (f) => {
|
|
248
184
|
const path = str(f.path);
|
|
249
185
|
const op = f.op === 'created' || f.op === 'modified' || f.op === 'deleted' ? f.op : undefined;
|
|
@@ -271,8 +207,6 @@ export function sanitizeRemoteDigest(raw) {
|
|
|
271
207
|
links: objList(d.links, (l) => {
|
|
272
208
|
const url = str(l.url);
|
|
273
209
|
const label = str(l.label);
|
|
274
|
-
// Only http(s) URLs render as OSC 8 hyperlinks — anything else a peer
|
|
275
|
-
// sends (file:, a bare payload) is dropped rather than linkified.
|
|
276
210
|
return /^https?:\/\//.test(url) && label ? { kind: 'other', url, label } : undefined;
|
|
277
211
|
}),
|
|
278
212
|
errorCount: num(d.errorCount),
|
|
@@ -295,14 +229,9 @@ function previewCacheKey(session, remote) {
|
|
|
295
229
|
fileStamp = 'missing';
|
|
296
230
|
}
|
|
297
231
|
}
|
|
298
|
-
// A remote row's rendered pane depends on the fetched digest's state
|
|
299
|
-
// (none → pending → ready/failed), so the state rides the key — otherwise the
|
|
300
|
-
// memoized metadata-only card would keep serving after the digest arrived.
|
|
301
232
|
const remoteDigestState = remote
|
|
302
233
|
? remoteDigestCache.get(remoteDigestKey(session.id, remote))?.state ?? 'none'
|
|
303
234
|
: '';
|
|
304
|
-
// The transcript stamp invalidates derived activity. Metadata that can change
|
|
305
|
-
// independently (label/ticket/PR/live scanner enrichment) also rides the key.
|
|
306
235
|
return JSON.stringify([
|
|
307
236
|
remote ?? '', remoteDigestState, session.id, fileStamp, session.lastActivity, session.label,
|
|
308
237
|
session.generatedTitle,
|
|
@@ -317,21 +246,11 @@ export function clearPreviewMemoryCacheForTest() {
|
|
|
317
246
|
}
|
|
318
247
|
export function loadSessionPreviewDigest(session) {
|
|
319
248
|
if (!session.filePath || !fs.existsSync(session.filePath)) {
|
|
320
|
-
// File gone, but an archived session (RUSH-2436) keeps its last-computed
|
|
321
|
-
// digest in the DB — serve that so the picker preview still shows its turns
|
|
322
|
-
// instead of a bare "not indexed here" note. No events to replay.
|
|
323
249
|
const archived = readArchivedSessionPreview(session.id);
|
|
324
250
|
if (archived) {
|
|
325
251
|
archived.plugins = getSessionPlugins(session.id);
|
|
326
252
|
return { digest: archived, events: [] };
|
|
327
253
|
}
|
|
328
|
-
// No file on disk AND no archived digest: a metadata-only row (a Rush
|
|
329
|
-
// dispatch/audit row, a synthesized attach-only entry, a live session not
|
|
330
|
-
// yet indexed) with nothing to read (PHNX-3999). Callers that only
|
|
331
|
-
// destructure `digest` (the picker's "not indexed here" note) are
|
|
332
|
-
// unaffected; a JSON caller reading `error` gets a truthful reason instead
|
|
333
|
-
// of a `preview: null` that looks identical to "this session genuinely has
|
|
334
|
-
// no content yet".
|
|
335
254
|
return { events: [], error: 'no local transcript for this session (metadata-only entry, no archived digest)' };
|
|
336
255
|
}
|
|
337
256
|
const safe = sanitizeMeta(session);
|
|
@@ -348,49 +267,14 @@ export function loadSessionPreviewDigest(session) {
|
|
|
348
267
|
fileSize: sourceStamp.size,
|
|
349
268
|
});
|
|
350
269
|
if (!digest) {
|
|
270
|
+
// Large uncached transcripts use bounded tail plus bounded head, so a tail follow-up is never mislabeled as the first prompt.
|
|
351
271
|
if (sourceStamp.size > PREVIEW_DIGEST_MAX_PARSE_BYTES) {
|
|
352
|
-
// A full `parseSession` on a cache miss is a synchronous, unbounded
|
|
353
|
-
// whole-file parse with no time/byte cap of its own (PHNX-3999) — real
|
|
354
|
-
// 6.3 MiB and 35.7 MiB screenshot-heavy transcripts on this fleet both
|
|
355
|
-
// lacked a computed digest/timeline, consistent with this path not
|
|
356
|
-
// finishing in a reasonable request budget for either. `PREVIEW_DIGEST_MAX_PARSE_BYTES`
|
|
357
|
-
// is deliberately smaller than the daemon's own background-work ceiling
|
|
358
|
-
// (see that constant's own doc) so this catches both real cases.
|
|
359
|
-
//
|
|
360
|
-
// This IS genuinely partial, not empty: rather than parsing nothing,
|
|
361
|
-
// `readSessionTail` (`tail.ts`) reads only the LAST 128 KiB of the file
|
|
362
|
-
// (already the live-view's own bounded reader, reused verbatim — no new
|
|
363
|
-
// parse logic) for a real recent-events window on the two harnesses it
|
|
364
|
-
// supports (Claude/Codex); event-derived fields below (toolCalls,
|
|
365
|
-
// toolTags, etc.) reflect that tail window, not the whole session, which
|
|
366
|
-
// `partialReason` states explicitly.
|
|
367
|
-
//
|
|
368
|
-
// `firstUser` is NEVER set from the tail fold: a tail window's "first
|
|
369
|
-
// user message IN THAT WINDOW" is a mid-session follow-up on any
|
|
370
|
-
// multi-turn session, not the session's actual original request, and
|
|
371
|
-
// there is no honest way to tell the two apart from the tail alone.
|
|
372
|
-
// Falling back to it would silently mislabel a follow-up as the
|
|
373
|
-
// original ask. Preference order for the CANONICAL original request:
|
|
374
|
-
// (1) the already-indexed `SessionMeta.firstUserMessage` (zero
|
|
375
|
-
// extra I/O); (2) failing that, a bounded HEAD read (`readSessionHead`,
|
|
376
|
-
// `tail.ts` — the mirror of the tail reader, first ~32 KiB from byte 0,
|
|
377
|
-
// where a session's opening turn always lives) so a row with no indexed
|
|
378
|
-
// value yet still gets the REAL original request rather than nothing.
|
|
379
|
-
// Only when neither is available does `firstUser` stay empty —
|
|
380
|
-
// `partial`/`partialReason` already say why detail is missing, which is
|
|
381
|
-
// the truthful signal, never a guessed value. The digest is cached
|
|
382
|
-
// against this stamp so the bound is paid once per transcript version,
|
|
383
|
-
// not once per call.
|
|
384
272
|
events = readSessionTail(session.filePath, session.agent);
|
|
385
273
|
digest = buildSessionPreviewDigest(events, safe);
|
|
386
274
|
if (session.firstUserMessage) {
|
|
387
275
|
digest.firstUser = session.firstUserMessage;
|
|
388
276
|
}
|
|
389
277
|
else {
|
|
390
|
-
// Reuse the canonical extractor (rejects synthetic/system-injected
|
|
391
|
-
// turns, unwraps a Grok/Cursor <user_query> wrapper) rather than a
|
|
392
|
-
// bespoke inline find — the same rules SessionMeta.firstUserMessage
|
|
393
|
-
// itself was built with.
|
|
394
278
|
digest.firstUser = firstUserMessageFromEvents(readSessionHead(session.filePath, session.agent)) ?? '';
|
|
395
279
|
}
|
|
396
280
|
digest.partial = true;
|
|
@@ -421,7 +305,6 @@ export function loadSessionPreviewDigest(session) {
|
|
|
421
305
|
digest.plugins = getSessionPlugins(session.id);
|
|
422
306
|
return { digest, events };
|
|
423
307
|
}
|
|
424
|
-
/** Build a cached multi-line preview string for display in the session picker. */
|
|
425
308
|
export function buildPreview(session) {
|
|
426
309
|
const remote = transcriptOnPeerOf(session);
|
|
427
310
|
const cacheKey = previewCacheKey(session, remote);
|
|
@@ -429,22 +312,9 @@ export function buildPreview(session) {
|
|
|
429
312
|
if (cached)
|
|
430
313
|
return cached;
|
|
431
314
|
const safe = sanitizeMeta(session);
|
|
432
|
-
// Remote session: the transcript is on the peer's disk, so there is nothing to
|
|
433
|
-
// parse here. The common case is now a fleet-synced MIRROR row (PHNX-3792): its
|
|
434
|
-
// topic + first-user snippet + metadata are already local, so the compact card
|
|
435
|
-
// renders INLINE with no per-row SSH. The live SSH digest fetch stays as the
|
|
436
|
-
// fallback for a never-synced row (or a peer whose digest was already fetched
|
|
437
|
-
// this session), and `space` still reads the full transcript live over SSH.
|
|
438
315
|
if (remote) {
|
|
439
|
-
// A fleet-synced MIRROR row is the explicit signal that this box already
|
|
440
|
-
// holds the peer session's topic + first-user snippet locally (PHNX-3792):
|
|
441
|
-
// render inline with NO per-row SSH. An ordinary remote row (a live fan-out
|
|
442
|
-
// row, or a never-synced host-dispatch stub) is NOT treated as synced — it
|
|
443
|
-
// keeps the live digest fetch below, so this change is scoped to mirror rows.
|
|
444
316
|
const fetched = remoteDigestCache.get(remoteDigestKey(session.id, remote));
|
|
445
317
|
if (fetched?.state === 'ready') {
|
|
446
|
-
// A richer live digest already landed this session (changed files, tool
|
|
447
|
-
// mix) — prefer it over the lightweight mirror card.
|
|
448
318
|
const note = ' ' + chalk.gray(`on `) + chalk.bold.white(remote)
|
|
449
319
|
+ chalk.gray(` — enter to resume there`);
|
|
450
320
|
const body = formatCompactPreview(fetched.digest, safe);
|
|
@@ -460,8 +330,6 @@ export function buildPreview(session) {
|
|
|
460
330
|
previewCache.set(cacheKey, output);
|
|
461
331
|
return output;
|
|
462
332
|
}
|
|
463
|
-
// Not a mirror row: fall back to the live SSH digest fetch (kicked off on
|
|
464
|
-
// first render; the pane repaints when it lands).
|
|
465
333
|
const note = ' ' + chalk.gray(`on `) + chalk.bold.white(remote)
|
|
466
334
|
+ chalk.gray(` — enter to resume there, or space then enter to read it over SSH`);
|
|
467
335
|
const entry = remoteDigestForPreview(session, remote);
|
|
@@ -479,9 +347,6 @@ export function buildPreview(session) {
|
|
|
479
347
|
previewCache.set(cacheKey, output);
|
|
480
348
|
return output;
|
|
481
349
|
}
|
|
482
|
-
// No transcript on disk — either an archived session (file gone, user turns
|
|
483
|
-
// still in the DB — RUSH-2436), a live session not indexed locally, or a
|
|
484
|
-
// synthesized entry (an attach-only resume). Show the header + a clean note.
|
|
485
350
|
if (!session.filePath || !fs.existsSync(session.filePath)) {
|
|
486
351
|
const archivedContent = readSessionContent(session.id);
|
|
487
352
|
if (archivedContent && archivedContent.trim() !== '') {
|
|
@@ -514,7 +379,6 @@ const DOT = chalk.gray(' · ');
|
|
|
514
379
|
function formatHeader(session, events) {
|
|
515
380
|
const model = extractModel(events) || session.model;
|
|
516
381
|
const { createdAgo, lastActiveAgo, duration } = extractTiming(session, events);
|
|
517
|
-
// Line 1: Agent v version · shortId · model · account
|
|
518
382
|
const line1 = [];
|
|
519
383
|
line1.push(chalk.gray(`${displayAgent(sessionDisplayAgent(session))}${session.version ? ` v${session.version}` : ''}`));
|
|
520
384
|
if (session.shortId)
|
|
@@ -523,9 +387,6 @@ function formatHeader(session, events) {
|
|
|
523
387
|
line1.push(chalk.bold.white(shortenModel(model)));
|
|
524
388
|
if (session.account)
|
|
525
389
|
line1.push(chalk.gray(session.account));
|
|
526
|
-
// Line 2: cwd · project · branch · created X ago · last active Y ago · lasted Z
|
|
527
|
-
// Project is clickable: Linear issue URL is for tickets (line 4); for the
|
|
528
|
-
// project name prefer a GitHub repo URL derived from the checkout path.
|
|
529
390
|
const line2 = [];
|
|
530
391
|
if (session.cwd) {
|
|
531
392
|
const label = relativeToCwd(session.cwd);
|
|
@@ -543,8 +404,6 @@ function formatHeader(session, events) {
|
|
|
543
404
|
line2.push(chalk.gray('last active ') + chalk.white(lastActiveAgo + ' ago'));
|
|
544
405
|
if (duration)
|
|
545
406
|
line2.push(chalk.gray('lasted ') + chalk.white(duration));
|
|
546
|
-
// Line 4: ticket + PR — clickable when a URL is resolvable (OSC 8 hyperlink),
|
|
547
|
-
// plain text otherwise. Only rendered when the session carries either.
|
|
548
407
|
const line4 = [];
|
|
549
408
|
if (session.ticketId) {
|
|
550
409
|
const url = linearIssueUrl(session.ticketId);
|
|
@@ -554,14 +413,6 @@ function formatHeader(session, events) {
|
|
|
554
413
|
const label = session.prNumber ? `PR#${session.prNumber}` : 'PR';
|
|
555
414
|
line4.push(chalk.blue(linkUrl(session.prUrl, label)));
|
|
556
415
|
}
|
|
557
|
-
// Lead with the session's human title: `session.label` — an agent-generated
|
|
558
|
-
// name / `/rename`, else the `--name` launch handle — else the daemon-generated
|
|
559
|
-
// title (PHNX-3797), which is a short technical NAME, not a restatement of the
|
|
560
|
-
// prompt. NOT `session.topic`: the topic is the derived first-prompt, already
|
|
561
|
-
// shown on the `Prompt:` line, so using it here too would print the same text
|
|
562
|
-
// twice. A session with neither keeps that `Prompt:` line as its topic
|
|
563
|
-
// indicator and simply leads with the agent line. Wrapped to the pane (the
|
|
564
|
-
// header sits at column 0, full terminal width).
|
|
565
416
|
const title = (session.label || session.generatedTitle || '').trim();
|
|
566
417
|
const titleLines = title
|
|
567
418
|
? wrapToWidth(title, terminalWidth()).map(l => chalk.bold.white(l))
|
|
@@ -573,44 +424,7 @@ function formatHeader(session, events) {
|
|
|
573
424
|
...(line4.length ? [line4.join(DOT)] : []),
|
|
574
425
|
].join('\n');
|
|
575
426
|
}
|
|
576
|
-
/**
|
|
577
|
-
* Body lines available from SessionMeta alone (no transcript parse) — used for
|
|
578
|
-
* remote / unindexed sessions so checklist progress still surfaces when the
|
|
579
|
-
* parser teammate (or a prior scan) has populated `session.todos`.
|
|
580
|
-
*/
|
|
581
|
-
/**
|
|
582
|
-
* The session's place in a team, from whichever end it sits at: the orchestrator
|
|
583
|
-
* that ran `agents teams create` (from the scan-derived `spawnedTeam`), or a
|
|
584
|
-
* teammate (from its `meta.json`, via `classifyTeamSession`). Empty for a session
|
|
585
|
-
* with no team involvement, which is the overwhelming majority.
|
|
586
|
-
*
|
|
587
|
-
* Deliberately no live teammate counts: tallying a team means reading every
|
|
588
|
-
* record under the teams-agents dir, which runs to thousands of files on a busy
|
|
589
|
-
* machine — far too much for a pane that repaints as the cursor moves. The line
|
|
590
|
-
* names the command that does report them instead.
|
|
591
|
-
*/
|
|
592
|
-
/**
|
|
593
|
-
* The "what did this session leave running" segments of the Doing line.
|
|
594
|
-
*
|
|
595
|
-
* Prefers a DERIVED count (fresh, from the transcript the caller just parsed)
|
|
596
|
-
* and falls back to the PERSISTED column, which is what lets a remote/unindexed
|
|
597
|
-
* row — rendered from `SessionMeta` alone, with no events — show fan-out at all.
|
|
598
|
-
* That fallback is the whole reason the counts are columns (RUSH-3091/3095).
|
|
599
|
-
*
|
|
600
|
-
* A count of 0 or undefined renders NOTHING. Both are real states — "scanned,
|
|
601
|
-
* none found" and "this harness cannot report it" — and a literal "0 background
|
|
602
|
-
* shells" would assert "nothing is running" for a harness that simply does not
|
|
603
|
-
* record them.
|
|
604
|
-
*
|
|
605
|
-
* Wording is "left behind", not "running": a transcript records a start and
|
|
606
|
-
* never a death (see extractBackgroundShells).
|
|
607
|
-
*/
|
|
608
427
|
export function formatFanOut(session, derived) {
|
|
609
|
-
// DERIVED wins when the caller has one. It is computed from the transcript as
|
|
610
|
-
// it stands right now, whereas the persisted column is only as fresh as the
|
|
611
|
-
// last scan — for a live session those disagree within seconds. The persisted
|
|
612
|
-
// value is the fallback that makes a remote/unindexed row (no events, so no
|
|
613
|
-
// derived value) render at all, which is the whole reason it is a column.
|
|
614
428
|
const subAgents = derived?.subAgentCount ?? session.subAgentCount ?? 0;
|
|
615
429
|
const shells = derived?.backgroundShellCount ?? session.backgroundShellCount ?? 0;
|
|
616
430
|
const out = [];
|
|
@@ -647,10 +461,6 @@ function formatMetaOnlyBody(session) {
|
|
|
647
461
|
const lines = [];
|
|
648
462
|
const termWidth = process.stdout.columns || 80;
|
|
649
463
|
const valueWidth = termWidth - VERB_GUTTER - 5;
|
|
650
|
-
// Same verb-led rows as the digest body (RUSH-2757), from SessionMeta alone.
|
|
651
|
-
// Prefer the fuller first genuine user turn over the one-line topic when the
|
|
652
|
-
// row carries it (a fleet-synced mirror row does — PHNX-3792) so the inline
|
|
653
|
-
// card reads like the originating prompt, not just its title.
|
|
654
464
|
const asked = session.firstUserMessage?.trim() || session.topic?.trim();
|
|
655
465
|
if (asked) {
|
|
656
466
|
lines.push(verbLabel('Asked') + chalk.white(`"${truncate(asked, valueWidth)}"`));
|
|
@@ -664,9 +474,6 @@ function formatMetaOnlyBody(session) {
|
|
|
664
474
|
for (const l of session.todos?.items?.length ? renderTodos(session.todos.items, termWidth) : []) {
|
|
665
475
|
lines.push(' ' + l);
|
|
666
476
|
}
|
|
667
|
-
// `plan` is the whole ExitPlanMode markdown, not a path — summarize it. The
|
|
668
|
-
// pane is height-clamped anyway, so pasting the blob would just push every
|
|
669
|
-
// other line out of view.
|
|
670
477
|
const planLines = session.plan?.trim() ? session.plan.trim().split('\n') : [];
|
|
671
478
|
if (planLines.length) {
|
|
672
479
|
const head = truncate(planLines[0].replace(/^#+\s*/, ''), termWidth - 20);
|
|
@@ -702,19 +509,7 @@ function extractModel(events) {
|
|
|
702
509
|
}
|
|
703
510
|
return undefined;
|
|
704
511
|
}
|
|
705
|
-
/** Shortest span worth reporting as a separate last-activity field — matches the
|
|
706
|
-
* listing's rule, so the pane and the row agree on what counts as a one-shot. */
|
|
707
512
|
const TIMING_SPAN_MIN_MS = 60_000;
|
|
708
|
-
/**
|
|
709
|
-
* The three timing facts the header reports: when the session was created, when
|
|
710
|
-
* it was last active, and how long it ran. Reads the parsed transcript when
|
|
711
|
-
* there is one and otherwise the indexed `SessionMeta`, so a remote or
|
|
712
|
-
* unindexed session — which has no local transcript to parse — still reports
|
|
713
|
-
* them instead of silently dropping the whole line.
|
|
714
|
-
*
|
|
715
|
-
* `lastActive` and `lasted` are omitted for a session whose whole life was under
|
|
716
|
-
* a minute: there they just restate `created`.
|
|
717
|
-
*/
|
|
718
513
|
export function extractTiming(session, events) {
|
|
719
514
|
const firstMs = Date.parse(events[0]?.timestamp ?? session.timestamp);
|
|
720
515
|
if (Number.isNaN(firstMs))
|
|
@@ -723,8 +518,6 @@ export function extractTiming(session, events) {
|
|
|
723
518
|
const lastMs = Date.parse(events[events.length - 1]?.timestamp ?? session.lastActivity ?? session.timestamp);
|
|
724
519
|
if (Number.isNaN(lastMs))
|
|
725
520
|
return { createdAgo };
|
|
726
|
-
// A scan-persisted duration beats the timestamp subtraction when there are no
|
|
727
|
-
// events to read, because `lastActivity` may have fallen back to file mtime.
|
|
728
521
|
const spanMs = events.length === 0 && session.durationMs !== undefined
|
|
729
522
|
? session.durationMs
|
|
730
523
|
: Math.max(0, lastMs - firstMs);
|
|
@@ -749,7 +542,6 @@ function formatTokens(n) {
|
|
|
749
542
|
const v = n / 1_000_000;
|
|
750
543
|
return (v >= 100 ? Math.round(v).toString() : v.toFixed(1).replace(/\.0$/, '')) + 'm';
|
|
751
544
|
}
|
|
752
|
-
/** Patterns that indicate a user message is system context, not a real prompt. */
|
|
753
545
|
const SYSTEM_MESSAGE_PATTERNS = [
|
|
754
546
|
/^\s*<environment_context>/i,
|
|
755
547
|
/^\s*<system-reminder>/i,
|
|
@@ -759,11 +551,8 @@ const SYSTEM_MESSAGE_PATTERNS = [
|
|
|
759
551
|
/^\s*# AGENTS\.md instructions for\b/i,
|
|
760
552
|
/^\s*<command-(message|name|args)>/i,
|
|
761
553
|
];
|
|
762
|
-
/** Strip XML/HTML tags and clean up content for display. */
|
|
763
554
|
function stripTags(text) {
|
|
764
|
-
// Remove complete tag pairs with their content for known system tags
|
|
765
555
|
let cleaned = text.replace(/<(system-reminder|environment_context|permissions[^>]*)>[\s\S]*?<\/\1>/gi, '');
|
|
766
|
-
// Remove remaining XML-like tags
|
|
767
556
|
cleaned = cleaned.replace(/<\/?[a-z_-]+[^>]*>/gi, '');
|
|
768
557
|
return cleaned;
|
|
769
558
|
}
|
|
@@ -771,28 +560,8 @@ const LAST_RESPONSE_MAX_LINES = 15;
|
|
|
771
560
|
const LAST_RESPONSE_MAX_LINES_WITH_TODOS = 8;
|
|
772
561
|
const TODOS_MAX_ITEMS = 5;
|
|
773
562
|
const DIRS_TOUCHED_MAX = 5;
|
|
774
|
-
// Upper bound on the per-file `changedFiles` list carried on the digest. High
|
|
775
|
-
// enough to cover any real session's edits, low enough that a runaway rewrite
|
|
776
|
-
// can't bloat the cached JSON. The `changes` counts stay the true totals.
|
|
777
563
|
const CHANGED_FILES_MAX = 200;
|
|
778
|
-
/**
|
|
779
|
-
* Bound for an uncached `loadSessionPreviewDigest` parse (PHNX-3999).
|
|
780
|
-
*
|
|
781
|
-
* Deliberately SMALLER than the daemon's own
|
|
782
|
-
* `TIMELINE_PASS_MAX_WHOLE_FILE_BYTES` (16 MiB, `timeline-pass.ts`) — that
|
|
783
|
-
* number bounds BACKGROUND work the daemon tick can afford to spend; this one
|
|
784
|
-
* bounds a SYNCHRONOUS request an interactive caller (the Menu, with its own
|
|
785
|
-
* end-to-end latency budget) is actively waiting on. Two real screenshot-heavy
|
|
786
|
-
* transcripts on this fleet (6.3 MiB and 35.7 MiB) both lacked any computed
|
|
787
|
-
* digest/timeline — a 16 MiB threshold here would still miss the smaller one.
|
|
788
|
-
* The exact per-byte cost of `parseSession` is not measured in this change;
|
|
789
|
-
* 4 MiB is a conservative invariant (well under the 6.3 MiB failure case,
|
|
790
|
-
* comfortably above ordinary non-screenshot transcript sizes), not a timing
|
|
791
|
-
* guarantee — verify against real transcripts before relying on a specific
|
|
792
|
-
* elapsed-time bound.
|
|
793
|
-
*/
|
|
794
564
|
const PREVIEW_DIGEST_MAX_PARSE_BYTES = 4 * 1024 * 1024;
|
|
795
|
-
/** Fold a harness-normalized event stream into the stable preview data model. */
|
|
796
565
|
export function buildSessionPreviewDigest(events, session) {
|
|
797
566
|
let firstUser = '';
|
|
798
567
|
let lastAssistant = '';
|
|
@@ -800,22 +569,12 @@ export function buildSessionPreviewDigest(events, session) {
|
|
|
800
569
|
const toolCounts = {};
|
|
801
570
|
let toolCalls = 0;
|
|
802
571
|
let planFile = '';
|
|
803
|
-
/** Latest checklist from the transcript (Claude TodoWrite / Codex update_plan). */
|
|
804
572
|
let latestTodos;
|
|
805
573
|
let subAgentCount = 0;
|
|
806
|
-
// undefined, not 0, when the harness records no background-shell concept —
|
|
807
|
-
// formatFanOut renders absence for both, but conflating them here would let a
|
|
808
|
-
// later consumer read "0 shells" as a positive "none running" claim.
|
|
809
574
|
let backgroundShellCount = harnessTracksBackgroundShells(session.agent)
|
|
810
575
|
? 0
|
|
811
576
|
: undefined;
|
|
812
577
|
const toolTags = new Set();
|
|
813
|
-
// usedBrowser/usedComputer are computed at scan time from a sessionId-scoped
|
|
814
|
-
// events-log read (session/db.ts detectToolUsage), NOT a transcript regex —
|
|
815
|
-
// undefined means a legacy row this scanner hasn't computed the field for
|
|
816
|
-
// yet, so only THEN does classifySessionTool's transcript-derived guess run
|
|
817
|
-
// below (mirrors directoriesTouched's prefer-persisted/fall-back-to-derived
|
|
818
|
-
// pattern for recentDirectoriesTouched).
|
|
819
578
|
const knownToolUsage = session.usedBrowser !== undefined;
|
|
820
579
|
for (const event of events) {
|
|
821
580
|
if (event.type === 'message') {
|
|
@@ -846,9 +605,6 @@ export function buildSessionPreviewDigest(events, session) {
|
|
|
846
605
|
if (!planFile && p && /\/plans\/[^/]+\.md$/.test(p)) {
|
|
847
606
|
planFile = p;
|
|
848
607
|
}
|
|
849
|
-
// Every harness's checklist-snapshot tool (Claude TodoWrite, Kimi TodoList,
|
|
850
|
-
// Codex update_plan, …) — the same registry the state engine folds through
|
|
851
|
-
// extractTodoProgress. Prefer the most recent write.
|
|
852
608
|
if (SNAPSHOT_TODO_TOOLS.has(tool)) {
|
|
853
609
|
const progress = extractTodoProgress(event.args);
|
|
854
610
|
if (progress)
|
|
@@ -859,15 +615,10 @@ export function buildSessionPreviewDigest(events, session) {
|
|
|
859
615
|
toolCalls++;
|
|
860
616
|
}
|
|
861
617
|
}
|
|
862
|
-
// Persisted field wins when computed — it comes from real browser.navigate/
|
|
863
|
-
// browser.screenshot/computer.action events, not a fuzzy tool-name regex.
|
|
864
618
|
if (session.usedBrowser)
|
|
865
619
|
toolTags.add('browser');
|
|
866
620
|
if (session.usedComputer)
|
|
867
621
|
toolTags.add('computer');
|
|
868
|
-
// Prefer the transcript-derived list when we just re-parsed the file (freshest
|
|
869
|
-
// checklist write); fall back to SessionMeta.todos for rows where the scan/
|
|
870
|
-
// fan-out attached progress but the event stream has no TodoWrite yet.
|
|
871
622
|
const todos = latestTodos ?? session.todos;
|
|
872
623
|
const changes = classifyFileChanges(events);
|
|
873
624
|
const chg = changeCounts(changes);
|
|
@@ -884,9 +635,6 @@ export function buildSessionPreviewDigest(events, session) {
|
|
|
884
635
|
backgroundShellCount,
|
|
885
636
|
toolTags: [...toolTags],
|
|
886
637
|
changes: chg,
|
|
887
|
-
// Full per-file list the picker used to collapse to `chg` and throw away.
|
|
888
|
-
// Bounded so a mass-rewrite session can't blow up the cached digest; the
|
|
889
|
-
// counts above remain the true totals.
|
|
890
638
|
changedFiles: changes.slice(0, CHANGED_FILES_MAX),
|
|
891
639
|
dirs: directoriesTouched(session, events, changes),
|
|
892
640
|
repos: extractRepos(events, session.cwd),
|
|
@@ -901,8 +649,6 @@ export function buildSessionPreviewDigest(events, session) {
|
|
|
901
649
|
test: detectTestResult(events),
|
|
902
650
|
};
|
|
903
651
|
}
|
|
904
|
-
// Verb-led row gutter (RUSH-2757): every row label pads to this width so the
|
|
905
|
-
// values align into one scannable column. 'Details ▸' is the widest label.
|
|
906
652
|
const VERB_GUTTER = 9;
|
|
907
653
|
function verbLabel(v) {
|
|
908
654
|
return chalk.cyan(v.padEnd(VERB_GUTTER)) + ' ';
|
|
@@ -912,15 +658,12 @@ function formatCompactPreview(digest, session, events) {
|
|
|
912
658
|
const lines = [];
|
|
913
659
|
const termWidth = process.stdout.columns || 80;
|
|
914
660
|
const valueWidth = termWidth - VERB_GUTTER - 5;
|
|
915
|
-
// Asked — the originating user prompt (first non-system user turn), quoted.
|
|
916
661
|
const asked = firstUser
|
|
917
662
|
? (extractSessionTopic(firstUser) || cleanSessionPrompt(firstUser).split('\n').find(l => l.trim()) || '')
|
|
918
663
|
: (session.topic && !isSyntheticUserMessage(session.topic) ? session.topic : '');
|
|
919
664
|
if (asked.trim()) {
|
|
920
665
|
lines.push(verbLabel('Asked') + chalk.white(`"${truncate(asked.trim(), valueWidth)}"`));
|
|
921
666
|
}
|
|
922
|
-
// Doing — the work in motion: checklist progress (RUSH-2045), team lineage,
|
|
923
|
-
// sub-agent fan-out. The full checklist renders indented beneath.
|
|
924
667
|
const compact = formatTodoCompact(todos);
|
|
925
668
|
const teamLine = formatTeamLineage(session);
|
|
926
669
|
const doing = [
|
|
@@ -934,8 +677,6 @@ function formatCompactPreview(digest, session, events) {
|
|
|
934
677
|
const todosRendered = todos?.items?.length ? renderTodos(todos.items, termWidth) : [];
|
|
935
678
|
for (const l of todosRendered)
|
|
936
679
|
lines.push(' ' + l);
|
|
937
|
-
// Made — what the session produced: file deltas, reads, artifacts (named +
|
|
938
|
-
// clickable), the plan file, and the PR when the session carries one.
|
|
939
680
|
const made = [];
|
|
940
681
|
const changed = chg.created + chg.modified + chg.deleted;
|
|
941
682
|
if (changed) {
|
|
@@ -962,7 +703,6 @@ function formatCompactPreview(digest, session, events) {
|
|
|
962
703
|
if (made.length) {
|
|
963
704
|
lines.push(verbLabel('Made') + made.join(DOT));
|
|
964
705
|
}
|
|
965
|
-
// Health — error tally + the last test/build verdict; absent when both clean.
|
|
966
706
|
const health = [];
|
|
967
707
|
if (errorCount) {
|
|
968
708
|
health.push(chalk.red(`${errorCount} failure${errorCount === 1 ? '' : 's'}`) + chalk.gray(` — first: ${firstError || 'unknown'}`));
|
|
@@ -978,8 +718,6 @@ function formatCompactPreview(digest, session, events) {
|
|
|
978
718
|
if (health.length) {
|
|
979
719
|
lines.push(verbLabel('Health') + health.join(DOT));
|
|
980
720
|
}
|
|
981
|
-
// Cost — volume: messages, tokens (moved here from the header's old line 3),
|
|
982
|
-
// and the top of the tool mix.
|
|
983
721
|
const totalMessages = session.messageCount ?? (events ? countMessages(events) : undefined);
|
|
984
722
|
const cost = [];
|
|
985
723
|
if (totalMessages !== undefined) {
|
|
@@ -997,12 +735,8 @@ function formatCompactPreview(digest, session, events) {
|
|
|
997
735
|
if (cost.length) {
|
|
998
736
|
lines.push(verbLabel('Cost') + cost.join(DOT));
|
|
999
737
|
}
|
|
1000
|
-
// Latest — the agent's last message, full and wrapped to the pane (the densest
|
|
1001
|
-
// line in the preview; parts 1-2 of RUSH-2757 made it wrap instead of clip).
|
|
1002
738
|
if (lastAssistant) {
|
|
1003
739
|
const maxLines = todosRendered.length > 0 || compact ? LAST_RESPONSE_MAX_LINES_WITH_TODOS : LAST_RESPONSE_MAX_LINES;
|
|
1004
|
-
// Content sits at column 4 (outer body indent + the ' ' prefix below), so
|
|
1005
|
-
// wrap it to the pane minus that indent.
|
|
1006
740
|
const rendered = renderLastResponse(lastAssistant, maxLines, terminalWidth() - 4);
|
|
1007
741
|
if (rendered.length > 0) {
|
|
1008
742
|
lines.push('');
|
|
@@ -1011,12 +745,6 @@ function formatCompactPreview(digest, session, events) {
|
|
|
1011
745
|
lines.push(' ' + l);
|
|
1012
746
|
}
|
|
1013
747
|
}
|
|
1014
|
-
// Details ▸ — the folded long tail: session id, skills, plugins, hooks, links,
|
|
1015
|
-
// dirs, repos, capability tags. One width-capped line instead of seven labeled
|
|
1016
|
-
// rows (a long tail used to wrap and swamp the whole pane); links stay
|
|
1017
|
-
// clickable (OSC 8), hook failures stay red. Full lists go to the cap — it is
|
|
1018
|
-
// the ONLY bounding, so its `… +N more` tail accounts for every hidden item
|
|
1019
|
-
// (pre-slicing here made overflow vanish with no trace).
|
|
1020
748
|
const details = [
|
|
1021
749
|
session.filePath ? chalk.gray(linkPath(session.filePath, session.id.slice(0, 8))) : chalk.gray(session.id.slice(0, 8)),
|
|
1022
750
|
...skills.map(s => chalk.white(s.name) + (s.count > 1 ? chalk.gray(` ×${s.count}`) : '')),
|
|
@@ -1040,19 +768,9 @@ function classifySessionTool(tool, command) {
|
|
|
1040
768
|
tags.push('computer');
|
|
1041
769
|
return tags;
|
|
1042
770
|
}
|
|
1043
|
-
/**
|
|
1044
|
-
* Unique directories the session touched, compact and human-readable.
|
|
1045
|
-
* Prefer `session.recentDirectoriesTouched` — the scan records it on the row, so
|
|
1046
|
-
* it is present for remote rows whose transcript we can't parse here — otherwise
|
|
1047
|
-
* derive from the file-change + tool paths already available.
|
|
1048
|
-
*/
|
|
1049
771
|
function directoriesTouched(session, events, changes) {
|
|
1050
772
|
const fromMeta = session.recentDirectoriesTouched;
|
|
1051
773
|
if (Array.isArray(fromMeta) && fromMeta.length > 0) {
|
|
1052
|
-
// The scan stores ABSOLUTE paths, so they go through the same relativizer the
|
|
1053
|
-
// derived branch below uses — otherwise adopting this field (which a remote row
|
|
1054
|
-
// needs, having no transcript to derive from) would turn every local preview's
|
|
1055
|
-
// `Dirs:` line from `src/lib · docs` into a column of full home-rooted paths.
|
|
1056
774
|
const seen = new Set();
|
|
1057
775
|
for (const raw of fromMeta) {
|
|
1058
776
|
const dir = relativizeDir(sanitizeForTerminal(String(raw).trim()), session.cwd);
|
|
@@ -1085,31 +803,10 @@ function directoriesTouched(session, events, changes) {
|
|
|
1085
803
|
.map(([d]) => d)
|
|
1086
804
|
.slice(0, DIRS_TOUCHED_MAX);
|
|
1087
805
|
}
|
|
1088
|
-
/**
|
|
1089
|
-
* Claude names its per-project transcript store `~/.claude/projects/<slug>`, where
|
|
1090
|
-
* `<slug>` is the cwd with every `/` AND `.` replaced by `-` — so `/Users/me/app`
|
|
1091
|
-
* → `-Users-me-app` and `.agents/worktrees/x` → `--agents-worktrees-x`. That slug
|
|
1092
|
-
* leaks into transcript paths as a leading segment (`<slug>/<session-id>/…`).
|
|
1093
|
-
*
|
|
1094
|
-
* The encoding is LOSSY and irreversible (`-`, `/`, and `.` all collapse to `-`),
|
|
1095
|
-
* so we never try to decode it back to a path. Instead we ENCODE the comparison
|
|
1096
|
-
* targets (cwd, the worktree marker) into the same slug space and match there. See
|
|
1097
|
-
* {@link relativizeDir}. `encodeClaudeSlug` mirrors Claude's own transform.
|
|
1098
|
-
*/
|
|
1099
806
|
function encodeClaudeSlug(absPath) {
|
|
1100
807
|
return absPath.replace(/[/.]/g, '-');
|
|
1101
808
|
}
|
|
1102
|
-
/** The `.agents/worktrees/<name>` marker, Claude-slug-encoded (`/.` → `--`). */
|
|
1103
809
|
const SLUG_WORKTREE_RE = /--agents-worktrees-(.+)$/;
|
|
1104
|
-
/**
|
|
1105
|
-
* Join display tokens with ` · `, stopping before the line exceeds `maxWidth`
|
|
1106
|
-
* and appending `… +N more` for the rest. Keeps the Dirs line on one row.
|
|
1107
|
-
*/
|
|
1108
|
-
/**
|
|
1109
|
-
* Join pre-styled items with ` · ` up to a visible width, then `… +N more`.
|
|
1110
|
-
* Width is measured ANSI-aware (stringWidth), so colored / OSC 8-linked items
|
|
1111
|
-
* are not miscounted; items arrive already styled and are not recolored.
|
|
1112
|
-
*/
|
|
1113
810
|
function joinWidthCapped(items, maxWidth) {
|
|
1114
811
|
let out = '';
|
|
1115
812
|
let width = 0;
|
|
@@ -1126,52 +823,31 @@ function joinWidthCapped(items, maxWidth) {
|
|
|
1126
823
|
const remaining = items.length - shown;
|
|
1127
824
|
return out + (remaining > 0 ? chalk.gray(` … +${remaining} more`) : '');
|
|
1128
825
|
}
|
|
1129
|
-
/** Relativize a file path to its parent dir, short enough for one preview line. */
|
|
1130
826
|
export function relativizeDir(filePath, cwd) {
|
|
1131
827
|
const norm = filePath.replace(/\\/g, '/');
|
|
1132
828
|
if (!norm || norm.includes('node_modules') || norm.includes('/.git/') || norm.includes('/plans/')) {
|
|
1133
829
|
return undefined;
|
|
1134
830
|
}
|
|
1135
|
-
// agents-cli internals — version homes, session/run archives, the bare
|
|
1136
|
-
// worktree container/root — are never meaningful "directories the user works
|
|
1137
|
-
// in". Cwd is exempt: a session running inside such a dir keeps its own paths.
|
|
1138
831
|
const normBase = cwd?.replace(/\\/g, '/').replace(/\/$/, '');
|
|
1139
832
|
const underCwd = normBase && (norm === normBase || norm.startsWith(normBase + '/'));
|
|
1140
833
|
if (!underCwd && (norm.includes('/.agents/.history/') || /\/\.agents\/worktrees(\/[^/]+)?\/?$/.test(norm))) {
|
|
1141
834
|
return undefined;
|
|
1142
835
|
}
|
|
1143
836
|
let dir = path.posix.dirname(norm);
|
|
1144
|
-
// Claude project-slug form: a leading `-`-segment (`-home-me-…`) that carries
|
|
1145
|
-
// the cwd, lossily encoded. Handle it in SLUG SPACE — never lossy-decode to a
|
|
1146
|
-
// fake path. The slug is the first path segment; any real `/`-subdirs after it
|
|
1147
|
-
// are Claude's internal storage (`<session-id>/scratchpad|tasks`), not code.
|
|
1148
837
|
if (dir.startsWith('-')) {
|
|
1149
838
|
const slash = dir.indexOf('/');
|
|
1150
839
|
const slug = slash === -1 ? dir : dir.slice(0, slash);
|
|
1151
|
-
// CWD FIRST: if the slug is (or is under) this session's own cwd, the leaked
|
|
1152
|
-
// path is Claude's internal projects-storage scratch (`<id>/scratchpad`) —
|
|
1153
|
-
// not a meaningful code dir — so drop it like node_modules. Precedence over
|
|
1154
|
-
// the worktree collapse so a session editing its OWN worktree isn't relabeled.
|
|
1155
840
|
if (cwd) {
|
|
1156
841
|
const cwdSlug = encodeClaudeSlug(cwd.replace(/\\/g, '/').replace(/\/$/, ''));
|
|
1157
842
|
if (slug === cwdSlug || slug.startsWith(cwdSlug + '-'))
|
|
1158
843
|
return undefined;
|
|
1159
844
|
}
|
|
1160
|
-
// Only a DIFFERENT worktree than cwd reaches here: a worktree encodes its
|
|
1161
|
-
// `/.agents/worktrees/<name>` marker as `--agents-worktrees-<name>`, so
|
|
1162
|
-
// collapse to the worktree name to disambiguate. (The name may contain `-`;
|
|
1163
|
-
// we can't losslessly re-split it, so show the whole encoded remainder.)
|
|
1164
845
|
const wtSlug = slug.match(SLUG_WORKTREE_RE);
|
|
1165
846
|
if (wtSlug)
|
|
1166
847
|
return `⧉ ${wtSlug[1]}`;
|
|
1167
|
-
// An unattributable slug: don't invent a `/`-joined fake path. Show only the
|
|
1168
|
-
// trailing `-`-group as a minimal, honest token.
|
|
1169
848
|
const segs = slug.split('-').filter(Boolean);
|
|
1170
849
|
return segs.length ? segs[segs.length - 1] : undefined;
|
|
1171
850
|
}
|
|
1172
|
-
// CWD FIRST for real paths too: strip the session-cwd prefix so a session
|
|
1173
|
-
// editing its OWN worktree renders the concise relative remainder (`src/lib`),
|
|
1174
|
-
// not the longer `⧉ <slug>/…` collapse.
|
|
1175
851
|
if (cwd) {
|
|
1176
852
|
const base = cwd.replace(/\\/g, '/').replace(/\/$/, '');
|
|
1177
853
|
if (dir === base)
|
|
@@ -1179,18 +855,14 @@ export function relativizeDir(filePath, cwd) {
|
|
|
1179
855
|
if (dir.startsWith(base + '/'))
|
|
1180
856
|
return dir.slice(base.length + 1);
|
|
1181
857
|
}
|
|
1182
|
-
// No cwd match. If the dir is in a (different) git worktree, collapse to the
|
|
1183
|
-
// worktree NAME + in-worktree remainder to disambiguate; else home→`~` + trim.
|
|
1184
858
|
const wt = dir.match(WORKTREE_RE);
|
|
1185
859
|
if (wt) {
|
|
1186
860
|
const after = dir.slice(dir.indexOf(wt[0]) + wt[0].length).replace(/^\//, '');
|
|
1187
861
|
return after ? `⧉ ${wt[1]}/${after}` : `⧉ ${wt[1]}`;
|
|
1188
862
|
}
|
|
1189
|
-
// Collapse home prefix.
|
|
1190
863
|
const home = (process.env.HOME || '').replace(/\\/g, '/');
|
|
1191
864
|
if (home && dir.startsWith(home + '/'))
|
|
1192
865
|
dir = '~' + dir.slice(home.length);
|
|
1193
|
-
// Drop ultra-deep absolute noise; keep last 3 segments.
|
|
1194
866
|
const parts = dir.split('/').filter(Boolean);
|
|
1195
867
|
if (parts.length > 3 && dir.startsWith('/'))
|
|
1196
868
|
dir = parts.slice(-3).join('/');
|
|
@@ -1207,16 +879,10 @@ export function renderLastResponse(content, maxLines = LAST_RESPONSE_MAX_LINES,
|
|
|
1207
879
|
catch {
|
|
1208
880
|
rendered = cleaned;
|
|
1209
881
|
}
|
|
1210
|
-
// `marked-terminal` runs with `reflowText` off, so a paragraph with no hard
|
|
1211
|
-
// breaks renders as one long line that overflows the pane. Wrap any line whose
|
|
1212
|
-
// VISIBLE width exceeds the budget; leave lines that already fit untouched so
|
|
1213
|
-
// rendered-markdown indentation (lists, code blocks) is preserved. The text is
|
|
1214
|
-
// ANSI-coloured, so width is measured with `stringWidth`, never `String.length`.
|
|
1215
882
|
const all = rendered
|
|
1216
883
|
.replace(/\s+$/, '')
|
|
1217
884
|
.split('\n')
|
|
1218
885
|
.flatMap(line => (stringWidth(line) <= width ? [line] : wrapToWidth(line, width)));
|
|
1219
|
-
// Drop leading/trailing empty lines
|
|
1220
886
|
while (all.length && !all[0].trim())
|
|
1221
887
|
all.shift();
|
|
1222
888
|
while (all.length && !all[all.length - 1].trim())
|
|
@@ -1231,7 +897,6 @@ export function renderLastResponse(content, maxLines = LAST_RESPONSE_MAX_LINES,
|
|
|
1231
897
|
function renderTodos(todos, termWidth) {
|
|
1232
898
|
const out = [];
|
|
1233
899
|
const shown = todos.slice(0, TODOS_MAX_ITEMS);
|
|
1234
|
-
// Outer body indent (2) + inner ' ' (2) + marker (3) + space (1) = 8
|
|
1235
900
|
const maxText = Math.max(20, termWidth - 8);
|
|
1236
901
|
for (const item of shown) {
|
|
1237
902
|
const rawText = (item.content || item.text || '').trim();
|
|
@@ -1261,7 +926,6 @@ function renderTodos(todos, termWidth) {
|
|
|
1261
926
|
}
|
|
1262
927
|
return out;
|
|
1263
928
|
}
|
|
1264
|
-
/** Show an interactive session picker and return the selected session with its action (resume or view). */
|
|
1265
929
|
export async function sessionPicker(config) {
|
|
1266
930
|
const picked = await itemPicker({
|
|
1267
931
|
message: config.message,
|
|
@@ -1270,8 +934,6 @@ export async function sessionPicker(config) {
|
|
|
1270
934
|
filter: config.filter,
|
|
1271
935
|
labelFor: config.labelFor,
|
|
1272
936
|
buildPreview,
|
|
1273
|
-
// A remote row's digest arrives over SSH after the pane painted — this is
|
|
1274
|
-
// what lets its completion swap the metadata card for the full preview.
|
|
1275
937
|
registerPreviewRepaint: setRemotePreviewRepaint,
|
|
1276
938
|
shortIdFor: (s) => s.shortId,
|
|
1277
939
|
pageSize: config.pageSize,
|
|
@@ -1279,7 +941,6 @@ export async function sessionPicker(config) {
|
|
|
1279
941
|
emptyMessage: 'No sessions match.',
|
|
1280
942
|
enterHint: config.enterHint ?? 'resume',
|
|
1281
943
|
linesAbovePrompt: config.linesAbovePrompt,
|
|
1282
|
-
// A late digest fetch must not poke a closed prompt.
|
|
1283
944
|
}).finally(() => setRemotePreviewRepaint(undefined));
|
|
1284
945
|
if (!picked)
|
|
1285
946
|
return null;
|