@phnx-labs/agents-cli 1.22.119 → 1.22.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +236 -0
- package/README.md +19 -2
- package/dist/bootstrap.d.ts +0 -15
- package/dist/bootstrap.js +10 -409
- package/dist/cli/command-registry.d.ts +0 -58
- package/dist/cli/command-registry.js +2 -74
- package/dist/commands/accounts.d.ts +0 -17
- package/dist/commands/accounts.js +1 -52
- package/dist/commands/alias.d.ts +0 -12
- package/dist/commands/alias.js +0 -6
- package/dist/commands/apply.d.ts +0 -15
- package/dist/commands/apply.js +0 -63
- package/dist/commands/audit.d.ts +0 -12
- package/dist/commands/audit.js +0 -13
- package/dist/commands/auth.js +4 -12
- package/dist/commands/beta.d.ts +0 -6
- package/dist/commands/beta.js +2 -6
- package/dist/commands/browser-sessions-picker.d.ts +0 -8
- package/dist/commands/browser-sessions-picker.js +0 -26
- package/dist/commands/browser.d.ts +0 -57
- package/dist/commands/browser.js +0 -80
- package/dist/commands/budget.d.ts +0 -13
- package/dist/commands/budget.js +0 -2
- package/dist/commands/cli.d.ts +0 -12
- package/dist/commands/cli.js +0 -4
- package/dist/commands/cloud.d.ts +0 -9
- package/dist/commands/cloud.js +0 -43
- package/dist/commands/commands.d.ts +0 -9
- package/dist/commands/commands.js +0 -18
- package/dist/commands/computer-sessions-picker.d.ts +0 -11
- package/dist/commands/computer-sessions-picker.js +0 -29
- package/dist/commands/computer.d.ts +0 -62
- package/dist/commands/computer.js +3 -114
- package/dist/commands/config.d.ts +0 -14
- package/dist/commands/config.js +21 -60
- package/dist/commands/cost.d.ts +0 -11
- package/dist/commands/cost.js +1 -17
- package/dist/commands/daemon-test-harness.d.ts +0 -32
- package/dist/commands/daemon-test-harness.js +1 -36
- package/dist/commands/daemon.d.ts +0 -46
- package/dist/commands/daemon.js +8 -255
- package/dist/commands/detach-core.d.ts +0 -28
- package/dist/commands/detach-core.js +0 -30
- package/dist/commands/detach.d.ts +1 -12
- package/dist/commands/detach.js +16 -52
- package/dist/commands/device-config-test-harness.js +0 -12
- package/dist/commands/doctor.d.ts +0 -103
- package/dist/commands/doctor.js +3 -279
- package/dist/commands/events.d.ts +0 -29
- package/dist/commands/events.js +1 -55
- package/dist/commands/exec.d.ts +0 -163
- package/dist/commands/exec.js +15 -964
- package/dist/commands/factory.d.ts +0 -6
- package/dist/commands/factory.js +0 -2
- package/dist/commands/feed-watch.js +0 -20
- package/dist/commands/feed.d.ts +0 -38
- package/dist/commands/feed.js +1 -151
- package/dist/commands/feedback.d.ts +0 -5
- package/dist/commands/feedback.js +0 -5
- package/dist/commands/fleet-capture.d.ts +0 -12
- package/dist/commands/fleet-capture.js +1 -39
- package/dist/commands/focus.d.ts +6 -94
- package/dist/commands/focus.js +13 -183
- package/dist/commands/fork.d.ts +0 -21
- package/dist/commands/fork.js +0 -45
- package/dist/commands/funnel.d.ts +0 -3
- package/dist/commands/go.d.ts +2 -71
- package/dist/commands/go.js +5 -99
- package/dist/commands/harness-hooks.d.ts +0 -41
- package/dist/commands/harness-hooks.js +0 -48
- package/dist/commands/harness-wizard.d.ts +0 -137
- package/dist/commands/harness-wizard.js +0 -109
- package/dist/commands/harness.d.ts +0 -63
- package/dist/commands/harness.js +0 -103
- package/dist/commands/hooks.d.ts +0 -9
- package/dist/commands/hooks.js +0 -26
- package/dist/commands/humans.d.ts +0 -8
- package/dist/commands/humans.js +0 -8
- package/dist/commands/import.d.ts +0 -22
- package/dist/commands/import.js +0 -79
- package/dist/commands/insights.d.ts +0 -37
- package/dist/commands/insights.js +3 -115
- package/dist/commands/inspect.d.ts +0 -117
- package/dist/commands/inspect.js +2 -448
- package/dist/commands/lease.d.ts +0 -28
- package/dist/commands/lease.js +0 -43
- package/dist/commands/logs.d.ts +0 -23
- package/dist/commands/logs.js +0 -30
- package/dist/commands/mailboxes.d.ts +0 -18
- package/dist/commands/mailboxes.js +0 -29
- package/dist/commands/mcp.d.ts +0 -9
- package/dist/commands/mcp.js +0 -53
- package/dist/commands/memory.d.ts +0 -7
- package/dist/commands/memory.js +0 -7
- package/dist/commands/menubar.d.ts +0 -8
- package/dist/commands/menubar.js +0 -24
- package/dist/commands/message.d.ts +0 -23
- package/dist/commands/message.js +0 -50
- package/dist/commands/mine.d.ts +0 -22
- package/dist/commands/mine.js +0 -21
- package/dist/commands/models.d.ts +0 -8
- package/dist/commands/models.js +0 -33
- package/dist/commands/modes.d.ts +0 -10
- package/dist/commands/modes.js +0 -13
- package/dist/commands/monitors.d.ts +0 -9
- package/dist/commands/monitors.js +3 -160
- package/dist/commands/open.d.ts +0 -26
- package/dist/commands/open.js +0 -10
- package/dist/commands/output.d.ts +0 -18
- package/dist/commands/output.js +1 -34
- package/dist/commands/packages-materialize.d.ts +0 -11
- package/dist/commands/packages-materialize.js +0 -3
- package/dist/commands/packages.d.ts +0 -10
- package/dist/commands/packages.js +0 -50
- package/dist/commands/perf.d.ts +0 -41
- package/dist/commands/perf.js +0 -55
- package/dist/commands/permissions.d.ts +0 -9
- package/dist/commands/permissions.js +0 -43
- package/dist/commands/plugins.d.ts +0 -14
- package/dist/commands/plugins.js +2 -55
- package/dist/commands/profiles.d.ts +0 -25
- package/dist/commands/profiles.js +0 -27
- package/dist/commands/projects-todo.d.ts +2 -0
- package/dist/commands/projects-todo.js +132 -0
- package/dist/commands/projects.d.ts +0 -85
- package/dist/commands/projects.js +344 -291
- package/dist/commands/prune.js +0 -30
- package/dist/commands/ps-roster.d.ts +92 -0
- package/dist/commands/ps-roster.js +744 -0
- package/dist/commands/ps.d.ts +6 -0
- package/dist/commands/ps.js +98 -0
- package/dist/commands/refresh-rules.d.ts +0 -13
- package/dist/commands/refresh-rules.js +0 -14
- package/dist/commands/reminders.d.ts +0 -7
- package/dist/commands/repo.d.ts +0 -89
- package/dist/commands/repo.js +7 -205
- package/dist/commands/resource-view.d.ts +0 -33
- package/dist/commands/resource-view.js +0 -49
- package/dist/commands/resume.d.ts +1 -19
- package/dist/commands/resume.js +0 -50
- package/dist/commands/route.d.ts +0 -10
- package/dist/commands/route.js +0 -19
- package/dist/commands/routines.d.ts +0 -42
- package/dist/commands/routines.js +5 -290
- package/dist/commands/routines.test-fixture.d.ts +0 -34
- package/dist/commands/routines.test-fixture.js +4 -100
- package/dist/commands/rules.d.ts +0 -9
- package/dist/commands/rules.js +1 -6
- package/dist/commands/run-account-picker.d.ts +0 -59
- package/dist/commands/run-account-picker.js +0 -71
- package/dist/commands/run-broadcast.d.ts +0 -9
- package/dist/commands/run-broadcast.js +0 -7
- package/dist/commands/run-cloud.d.ts +0 -15
- package/dist/commands/run-cloud.js +0 -37
- package/dist/commands/run-device-picker.d.ts +0 -25
- package/dist/commands/run-device-picker.js +1 -53
- package/dist/commands/secrets-passthrough.d.ts +0 -31
- package/dist/commands/secrets-passthrough.js +0 -10
- package/dist/commands/send.d.ts +0 -20
- package/dist/commands/send.js +14 -18
- package/dist/commands/sessions-backfill.d.ts +0 -7
- package/dist/commands/sessions-backfill.js +1 -16
- package/dist/commands/sessions-backup-setup.js +0 -11
- package/dist/commands/sessions-bookmark.d.ts +0 -8
- package/dist/commands/sessions-bookmark.js +0 -28
- package/dist/commands/sessions-browser.d.ts +2 -117
- package/dist/commands/sessions-browser.js +5 -243
- package/dist/commands/sessions-export.d.ts +1 -26
- package/dist/commands/sessions-export.js +3 -81
- package/dist/commands/sessions-import.d.ts +0 -14
- package/dist/commands/sessions-import.js +0 -59
- package/dist/commands/sessions-inject.d.ts +0 -60
- package/dist/commands/sessions-inject.js +3 -96
- package/dist/commands/sessions-migrate.d.ts +2 -37
- package/dist/commands/sessions-migrate.js +7 -159
- package/dist/commands/sessions-optimize.d.ts +0 -12
- package/dist/commands/sessions-picker-factory.d.ts +0 -7
- package/dist/commands/sessions-picker-factory.js +0 -8
- package/dist/commands/sessions-picker.d.ts +4 -103
- package/dist/commands/sessions-picker.js +13 -352
- package/dist/commands/sessions-render.d.ts +1 -2
- package/dist/commands/sessions-render.js +3 -7
- package/dist/commands/sessions-resume.d.ts +1 -24
- package/dist/commands/sessions-resume.js +2 -65
- package/dist/commands/sessions-share.d.ts +1 -9
- package/dist/commands/sessions-share.js +1 -45
- package/dist/commands/sessions-stats.d.ts +0 -24
- package/dist/commands/sessions-stats.js +0 -49
- package/dist/commands/sessions-stop.d.ts +1 -20
- package/dist/commands/sessions-stop.js +4 -9
- package/dist/commands/sessions-tail.d.ts +1 -19
- package/dist/commands/sessions-tail.js +3 -36
- package/dist/commands/sessions-trace.d.ts +5 -36
- package/dist/commands/sessions-trace.js +7 -82
- package/dist/commands/sessions.d.ts +1 -666
- package/dist/commands/sessions.js +30 -2279
- package/dist/commands/sessions.test-fixture.d.ts +0 -9
- package/dist/commands/sessions.test-fixture.js +8 -23
- package/dist/commands/setup-accounts.d.ts +0 -6
- package/dist/commands/setup-browser.d.ts +0 -23
- package/dist/commands/setup-browser.js +0 -28
- package/dist/commands/setup-computer.d.ts +0 -16
- package/dist/commands/setup-computer.js +0 -28
- package/dist/commands/setup-fleet.d.ts +0 -8
- package/dist/commands/setup-fleet.js +0 -11
- package/dist/commands/setup-mine.d.ts +0 -14
- package/dist/commands/setup-mine.js +0 -25
- package/dist/commands/setup-preferences.d.ts +0 -47
- package/dist/commands/setup-preferences.js +0 -53
- package/dist/commands/setup-secrets.d.ts +2 -24
- package/dist/commands/setup-secrets.js +0 -24
- package/dist/commands/setup-term.d.ts +0 -21
- package/dist/commands/setup-term.js +0 -21
- package/dist/commands/setup-terminal.d.ts +0 -1
- package/dist/commands/setup-terminal.js +0 -1
- package/dist/commands/setup-tools.d.ts +2 -0
- package/dist/commands/setup-tools.js +73 -0
- package/dist/commands/setup.d.ts +0 -20
- package/dist/commands/setup.js +4 -57
- package/dist/commands/skills.d.ts +0 -9
- package/dist/commands/skills.js +1 -22
- package/dist/commands/snapshot.d.ts +0 -9
- package/dist/commands/snapshot.js +0 -10
- package/dist/commands/ssh.d.ts +0 -64
- package/dist/commands/ssh.js +9 -420
- package/dist/commands/status.d.ts +0 -12
- package/dist/commands/status.js +0 -26
- package/dist/commands/subagents.d.ts +0 -8
- package/dist/commands/subagents.js +0 -31
- package/dist/commands/sync.d.ts +0 -37
- package/dist/commands/sync.js +0 -256
- package/dist/commands/teams-picker.d.ts +0 -3
- package/dist/commands/teams-picker.js +0 -34
- package/dist/commands/teams.d.ts +1 -76
- package/dist/commands/teams.js +9 -477
- package/dist/commands/tmux.d.ts +0 -25
- package/dist/commands/tmux.js +0 -46
- package/dist/commands/traces.js +0 -19
- package/dist/commands/trash.d.ts +0 -17
- package/dist/commands/trash.js +1 -11
- package/dist/commands/uninstall.d.ts +0 -9
- package/dist/commands/uninstall.js +0 -6
- package/dist/commands/update.d.ts +0 -22
- package/dist/commands/update.js +0 -44
- package/dist/commands/upgrade.d.ts +0 -1
- package/dist/commands/upgrade.js +0 -1
- package/dist/commands/utils.d.ts +0 -85
- package/dist/commands/utils.js +1 -95
- package/dist/commands/versions.d.ts +0 -16
- package/dist/commands/versions.js +0 -134
- package/dist/commands/view.d.ts +0 -90
- package/dist/commands/view.js +4 -343
- package/dist/commands/watchdog.d.ts +0 -19
- package/dist/commands/watchdog.js +3 -43
- package/dist/commands/webhook.d.ts +0 -8
- package/dist/commands/webhook.js +0 -14
- package/dist/commands/workflows.d.ts +0 -8
- package/dist/commands/workflows.js +0 -6
- package/dist/index.d.ts +0 -25
- package/dist/index.js +5 -119
- package/dist/lib/account-capabilities.d.ts +0 -34
- package/dist/lib/account-capabilities.js +0 -32
- package/dist/lib/account-catalog.d.ts +0 -128
- package/dist/lib/account-catalog.js +8 -154
- package/dist/lib/account-provider-registry.d.ts +0 -14
- package/dist/lib/account-provider-registry.js +0 -8
- package/dist/lib/account-registry.d.ts +0 -74
- package/dist/lib/account-registry.js +14 -189
- package/dist/lib/account-schema.d.ts +0 -19
- package/dist/lib/account-schema.js +0 -43
- package/dist/lib/accounting/account-launch.d.ts +0 -15
- package/dist/lib/accounting/account-launch.js +1 -3
- package/dist/lib/accounting/account-pool-collect.d.ts +0 -26
- package/dist/lib/accounting/account-pool-collect.js +0 -42
- package/dist/lib/accounting/account-pool.d.ts +0 -41
- package/dist/lib/accounting/account-pool.js +0 -17
- package/dist/lib/accounting/capacity.d.ts +0 -32
- package/dist/lib/accounting/capacity.js +0 -32
- package/dist/lib/accounting/rotate.d.ts +0 -518
- package/dist/lib/accounting/rotate.js +4 -598
- package/dist/lib/accounting/usage-ingest.d.ts +0 -1
- package/dist/lib/accounting/usage-ingest.js +0 -44
- package/dist/lib/accounting/usage-sync.d.ts +0 -60
- package/dist/lib/accounting/usage-sync.js +4 -51
- package/dist/lib/accounting/usage.d.ts +0 -632
- package/dist/lib/accounting/usage.js +14 -1055
- package/dist/lib/accounts/add.d.ts +0 -60
- package/dist/lib/accounts/add.js +0 -127
- package/dist/lib/accounts/auth-operation-lock.d.ts +0 -1
- package/dist/lib/accounts/auth-operation-lock.js +0 -4
- package/dist/lib/accounts/migrate.d.ts +0 -9
- package/dist/lib/accounts/migrate.js +3 -42
- package/dist/lib/accounts/slots.d.ts +0 -25
- package/dist/lib/accounts/slots.js +1 -49
- package/dist/lib/acp/client.d.ts +0 -16
- package/dist/lib/acp/client.js +0 -29
- package/dist/lib/acp/harnesses.d.ts +0 -15
- package/dist/lib/acp/harnesses.js +0 -16
- package/dist/lib/acp/run.d.ts +0 -8
- package/dist/lib/acp/run.js +0 -8
- package/dist/lib/actor.d.ts +1 -71
- package/dist/lib/actor.js +1 -99
- package/dist/lib/add-dir.d.ts +0 -46
- package/dist/lib/add-dir.js +1 -70
- package/dist/lib/address.d.ts +0 -17
- package/dist/lib/address.js +0 -15
- package/dist/lib/agent-cli-commands.d.ts +0 -10
- package/dist/lib/agent-cli-commands.js +0 -10
- package/dist/lib/agent-modes.d.ts +0 -29
- package/dist/lib/agent-modes.js +0 -31
- package/dist/lib/agent-spec/agents.d.ts +0 -426
- package/dist/lib/agent-spec/agents.js +37 -924
- package/dist/lib/agent-spec/index.d.ts +0 -5
- package/dist/lib/agent-spec/index.js +0 -14
- package/dist/lib/agent-spec/materialize.d.ts +0 -10
- package/dist/lib/agent-spec/materialize.js +2 -139
- package/dist/lib/agent-spec/package-resolve.d.ts +0 -8
- package/dist/lib/agent-spec/package-resolve.js +1 -44
- package/dist/lib/agent-spec/package-schema.d.ts +0 -2
- package/dist/lib/agent-spec/package-schema.js +0 -11
- package/dist/lib/agent-spec/package-types.d.ts +0 -27
- package/dist/lib/agent-spec/package-types.js +0 -1
- package/dist/lib/agent-spec/primitives.d.ts +0 -18
- package/dist/lib/agent-spec/primitives.js +0 -27
- package/dist/lib/agent-spec/provider.js +0 -2
- package/dist/lib/agent-spec/resolve.d.ts +0 -23
- package/dist/lib/agent-spec/resolve.js +0 -41
- package/dist/lib/agent-spec/types.d.ts +0 -34
- package/dist/lib/agent-spec/types.js +0 -6
- package/dist/lib/agents.d.ts +0 -1
- package/dist/lib/agents.js +0 -1
- package/dist/lib/analytics/mix-commands.d.ts +0 -23
- package/dist/lib/analytics/mix-commands.js +0 -26
- package/dist/lib/analytics/recipes.d.ts +0 -1
- package/dist/lib/analytics/recipes.js +5 -10
- package/dist/lib/analytics/usage-db.js +4 -6
- package/dist/lib/answer-router.d.ts +0 -61
- package/dist/lib/answer-router.js +0 -57
- package/dist/lib/app-bundle-install.d.ts +0 -13
- package/dist/lib/app-bundle-install.js +0 -50
- package/dist/lib/artifact-actions.d.ts +0 -15
- package/dist/lib/artifact-actions.js +0 -18
- package/dist/lib/artifacts-client.d.ts +0 -10
- package/dist/lib/artifacts-client.js +0 -17
- package/dist/lib/ask-classifier.d.ts +0 -38
- package/dist/lib/ask-classifier.js +0 -27
- package/dist/lib/audit/log.d.ts +0 -47
- package/dist/lib/audit/log.js +1 -59
- package/dist/lib/auth-health.d.ts +0 -213
- package/dist/lib/auth-health.js +16 -266
- package/dist/lib/auth-mint.d.ts +0 -83
- package/dist/lib/auth-mint.js +8 -85
- package/dist/lib/auto-pull-worker.d.ts +0 -10
- package/dist/lib/auto-pull-worker.js +3 -48
- package/dist/lib/auto-pull.d.ts +0 -64
- package/dist/lib/auto-pull.js +0 -79
- package/dist/lib/beta.d.ts +0 -9
- package/dist/lib/beta.js +0 -9
- package/dist/lib/binary-shadow.d.ts +0 -22
- package/dist/lib/binary-shadow.js +4 -34
- package/dist/lib/boot-profile.d.ts +0 -10
- package/dist/lib/boot-profile.js +1 -31
- package/dist/lib/brand.d.ts +0 -20
- package/dist/lib/brand.js +0 -50
- package/dist/lib/browser/context.d.ts +0 -54
- package/dist/lib/browser/context.js +0 -49
- package/dist/lib/browser/paths.d.ts +0 -21
- package/dist/lib/browser/paths.js +0 -26
- package/dist/lib/browser/record.d.ts +0 -34
- package/dist/lib/browser/record.js +0 -38
- package/dist/lib/browser/sessions-list.d.ts +1 -79
- package/dist/lib/browser/sessions-list.js +2 -98
- package/dist/lib/browser-client.d.ts +0 -112
- package/dist/lib/browser-client.js +1 -90
- package/dist/lib/budget/config.d.ts +0 -6
- package/dist/lib/budget/config.js +0 -29
- package/dist/lib/budget/enforce.d.ts +0 -50
- package/dist/lib/budget/enforce.js +0 -27
- package/dist/lib/budget/ledger.d.ts +0 -23
- package/dist/lib/budget/ledger.js +0 -28
- package/dist/lib/budget/live-cloud.d.ts +0 -26
- package/dist/lib/budget/live-cloud.js +0 -12
- package/dist/lib/budget/live-team.d.ts +0 -17
- package/dist/lib/budget/live-team.js +1 -35
- package/dist/lib/budget/preflight.d.ts +0 -51
- package/dist/lib/budget/preflight.js +0 -36
- package/dist/lib/byok-usage.d.ts +0 -20
- package/dist/lib/byok-usage.js +1 -24
- package/dist/lib/capabilities.d.ts +0 -24
- package/dist/lib/capabilities.js +0 -29
- package/dist/lib/catchup.d.ts +0 -87
- package/dist/lib/catchup.js +1 -81
- package/dist/lib/channels/owner-forward.d.ts +0 -70
- package/dist/lib/channels/owner-forward.js +1 -43
- package/dist/lib/channels/owner-sink.js +0 -21
- package/dist/lib/channels/providers/desktop.d.ts +0 -37
- package/dist/lib/channels/providers/desktop.js +0 -72
- package/dist/lib/channels/providers/index.d.ts +0 -1
- package/dist/lib/channels/providers/index.js +2 -6
- package/dist/lib/channels/providers/mailbox.js +0 -7
- package/dist/lib/channels/providers/openclaw-telegram.js +0 -8
- package/dist/lib/channels/providers/rush.d.ts +0 -2
- package/dist/lib/channels/providers/rush.js +0 -26
- package/dist/lib/channels/providers/session.d.ts +2 -0
- package/dist/lib/channels/providers/session.js +26 -0
- package/dist/lib/channels/registry.d.ts +0 -27
- package/dist/lib/channels/registry.js +0 -10
- package/dist/lib/channels/resolve.d.ts +0 -19
- package/dist/lib/channels/resolve.js +0 -2
- package/dist/lib/channels/send.d.ts +0 -50
- package/dist/lib/channels/send.js +0 -25
- package/dist/lib/checkpoint.d.ts +0 -36
- package/dist/lib/checkpoint.js +0 -28
- package/dist/lib/claude-account-token.d.ts +0 -98
- package/dist/lib/claude-account-token.js +7 -169
- package/dist/lib/claude-statusline.d.ts +0 -41
- package/dist/lib/claude-statusline.js +0 -68
- package/dist/lib/cli-entry.d.ts +0 -26
- package/dist/lib/cli-entry.js +1 -61
- package/dist/lib/cli-resources.d.ts +31 -89
- package/dist/lib/cli-resources.js +116 -152
- package/dist/lib/cloud/antigravity.d.ts +0 -29
- package/dist/lib/cloud/antigravity.js +0 -36
- package/dist/lib/cloud/codex.d.ts +0 -8
- package/dist/lib/cloud/codex.js +0 -41
- package/dist/lib/cloud/cursor.d.ts +0 -5
- package/dist/lib/cloud/cursor.js +2 -7
- package/dist/lib/cloud/dispatch.d.ts +0 -13
- package/dist/lib/cloud/dispatch.js +1 -48
- package/dist/lib/cloud/factory.d.ts +0 -52
- package/dist/lib/cloud/factory.js +3 -67
- package/dist/lib/cloud/host.d.ts +0 -39
- package/dist/lib/cloud/host.js +5 -48
- package/dist/lib/cloud/registry.d.ts +0 -25
- package/dist/lib/cloud/registry.js +0 -29
- package/dist/lib/cloud/rush.d.ts +0 -47
- package/dist/lib/cloud/rush.js +1 -82
- package/dist/lib/cloud/session-index.d.ts +0 -27
- package/dist/lib/cloud/session-index.js +1 -32
- package/dist/lib/cloud/store.d.ts +0 -18
- package/dist/lib/cloud/store.js +0 -28
- package/dist/lib/cloud/stream.d.ts +0 -14
- package/dist/lib/cloud/stream.js +0 -25
- package/dist/lib/cloud/types.d.ts +0 -168
- package/dist/lib/cloud/types.js +0 -46
- package/dist/lib/cloudflare/creds.d.ts +0 -2
- package/dist/lib/cloudflare/creds.js +0 -14
- package/dist/lib/cloudflare/provision.d.ts +0 -8
- package/dist/lib/cloudflare/provision.js +1 -19
- package/dist/lib/codex-home.d.ts +0 -60
- package/dist/lib/codex-home.js +2 -72
- package/dist/lib/codex-policy.d.ts +0 -10
- package/dist/lib/codex-policy.js +0 -13
- package/dist/lib/command-skills.d.ts +0 -10
- package/dist/lib/command-skills.js +0 -10
- package/dist/lib/commands.d.ts +0 -74
- package/dist/lib/commands.js +0 -112
- package/dist/lib/comms-render.d.ts +0 -5
- package/dist/lib/comms-render.js +0 -5
- package/dist/lib/computer/context.d.ts +0 -23
- package/dist/lib/computer/context.js +0 -14
- package/dist/lib/computer/policy.d.ts +0 -20
- package/dist/lib/computer/policy.js +0 -53
- package/dist/lib/computer/record.d.ts +0 -33
- package/dist/lib/computer/record.js +1 -48
- package/dist/lib/computer/sessions-list.d.ts +1 -128
- package/dist/lib/computer/sessions-list.js +6 -165
- package/dist/lib/computer-client.d.ts +0 -106
- package/dist/lib/computer-client.js +5 -86
- package/dist/lib/concurrency.d.ts +0 -14
- package/dist/lib/concurrency.js +0 -3
- package/dist/lib/config-drift.d.ts +0 -31
- package/dist/lib/config-drift.js +0 -32
- package/dist/lib/config-keys.d.ts +1 -65
- package/dist/lib/config-keys.js +6 -52
- package/dist/lib/config-transfer.d.ts +0 -14
- package/dist/lib/config-transfer.js +0 -26
- package/dist/lib/convert.d.ts +0 -17
- package/dist/lib/convert.js +0 -18
- package/dist/lib/crabbox/cli.d.ts +0 -156
- package/dist/lib/crabbox/cli.js +1 -188
- package/dist/lib/crabbox/config.d.ts +0 -18
- package/dist/lib/crabbox/config.js +1 -19
- package/dist/lib/crabbox/lease.d.ts +0 -93
- package/dist/lib/crabbox/lease.js +4 -148
- package/dist/lib/crabbox/progress.d.ts +0 -56
- package/dist/lib/crabbox/progress.js +2 -49
- package/dist/lib/crabbox/runtimes.d.ts +0 -94
- package/dist/lib/crabbox/runtimes.js +1 -111
- package/dist/lib/crabbox/setup-copy.d.ts +0 -64
- package/dist/lib/crabbox/setup-copy.js +1 -53
- package/dist/lib/daemon/account-state-daemon-service.d.ts +0 -48
- package/dist/lib/daemon/account-state-daemon-service.js +2 -63
- package/dist/lib/daemon/attention-notify-service.d.ts +0 -12
- package/dist/lib/daemon/attention-notify-service.js +1 -24
- package/dist/lib/daemon/auth-sync-service.d.ts +0 -28
- package/dist/lib/daemon/auth-sync-service.js +0 -56
- package/dist/lib/daemon/catchup-service.d.ts +0 -34
- package/dist/lib/daemon/catchup-service.js +0 -30
- package/dist/lib/daemon/daemon.d.ts +0 -374
- package/dist/lib/daemon/daemon.js +44 -1049
- package/dist/lib/daemon/daemon.test-fixture.d.ts +0 -19
- package/dist/lib/daemon/daemon.test-fixture.js +1 -24
- package/dist/lib/daemon/device-probe-service.d.ts +0 -16
- package/dist/lib/daemon/device-probe-service.js +0 -20
- package/dist/lib/daemon/feed-stream-service.d.ts +0 -15
- package/dist/lib/daemon/feed-stream-service.js +0 -20
- package/dist/lib/daemon/harness-update-service.d.ts +2 -61
- package/dist/lib/daemon/harness-update-service.js +6 -86
- package/dist/lib/daemon/heartbeat-service.d.ts +0 -1
- package/dist/lib/daemon/heartbeat-service.js +0 -1
- package/dist/lib/daemon/leaked-daemons.d.ts +0 -46
- package/dist/lib/daemon/leaked-daemons.js +2 -78
- package/dist/lib/daemon/monitor-engine-service.d.ts +0 -13
- package/dist/lib/daemon/monitor-engine-service.js +3 -15
- package/dist/lib/daemon/runner.d.ts +0 -194
- package/dist/lib/daemon/runner.js +39 -760
- package/dist/lib/daemon/self-heal-service.d.ts +18 -17
- package/dist/lib/daemon/self-heal-service.js +83 -37
- package/dist/lib/daemon/self-update-service.d.ts +1 -131
- package/dist/lib/daemon/self-update-service.js +26 -189
- package/dist/lib/daemon/service.d.ts +0 -73
- package/dist/lib/daemon/service.js +0 -34
- package/dist/lib/daemon/session-index-service.d.ts +0 -12
- package/dist/lib/daemon/session-index-service.js +0 -23
- package/dist/lib/daemon/session-state-service.d.ts +0 -8
- package/dist/lib/daemon/session-state-service.js +0 -8
- package/dist/lib/daemon/session-summarizer-service.d.ts +0 -14
- package/dist/lib/daemon/session-summarizer-service.js +1 -19
- package/dist/lib/daemon/session-title-service.d.ts +0 -25
- package/dist/lib/daemon/session-title-service.js +0 -32
- package/dist/lib/daemon/state-dir-check-service.d.ts +0 -24
- package/dist/lib/daemon/state-dir-check-service.js +0 -29
- package/dist/lib/daemon/supervisor.d.ts +0 -112
- package/dist/lib/daemon/supervisor.js +4 -147
- package/dist/lib/daemon/testdata/process-view-daemon.js +0 -2
- package/dist/lib/daemon/testdata/process-view-start.js +0 -5
- package/dist/lib/daemon/tmux-reap-service.d.ts +0 -1
- package/dist/lib/daemon/tmux-reap-service.js +0 -1
- package/dist/lib/daemon/usage-sync-service.d.ts +0 -23
- package/dist/lib/daemon/usage-sync-service.js +0 -26
- package/dist/lib/daemon/watchdog-service.d.ts +0 -9
- package/dist/lib/daemon/watchdog-service.js +0 -13
- package/dist/lib/daemon/webhook-receiver-service.d.ts +0 -1
- package/dist/lib/daemon/webhook-receiver-service.js +0 -1
- package/dist/lib/daemon-health.d.ts +0 -55
- package/dist/lib/daemon-health.js +4 -77
- package/dist/lib/daemon-services.d.ts +0 -36
- package/dist/lib/daemon-services.js +0 -45
- package/dist/lib/daemon-ticks.d.ts +0 -126
- package/dist/lib/daemon-ticks.js +1 -156
- package/dist/lib/daemon-webhooks.d.ts +0 -57
- package/dist/lib/daemon-webhooks.js +2 -54
- package/dist/lib/deeplink/register.d.ts +0 -15
- package/dist/lib/deeplink/register.js +0 -60
- package/dist/lib/deeplink/url.d.ts +0 -24
- package/dist/lib/deeplink/url.js +1 -33
- package/dist/lib/device-config.d.ts +1 -192
- package/dist/lib/device-config.js +86 -240
- package/dist/lib/devices/config-migration.d.ts +0 -43
- package/dist/lib/devices/config-migration.js +7 -127
- package/dist/lib/devices/connect.d.ts +0 -168
- package/dist/lib/devices/connect.js +6 -254
- package/dist/lib/devices/device-docs.d.ts +0 -24
- package/dist/lib/devices/device-docs.js +0 -46
- package/dist/lib/devices/discovery-policy.d.ts +0 -30
- package/dist/lib/devices/discovery-policy.js +3 -34
- package/dist/lib/devices/doctor-findings.d.ts +0 -109
- package/dist/lib/devices/doctor-findings.js +30 -326
- package/dist/lib/devices/doctor-overview-cache.d.ts +0 -33
- package/dist/lib/devices/doctor-overview-cache.js +0 -81
- package/dist/lib/devices/fleet-divergence.d.ts +0 -89
- package/dist/lib/devices/fleet-divergence.js +1 -60
- package/dist/lib/devices/fleet-inventory.d.ts +0 -27
- package/dist/lib/devices/fleet-inventory.js +0 -38
- package/dist/lib/devices/fleet.d.ts +0 -95
- package/dist/lib/devices/fleet.js +0 -79
- package/dist/lib/devices/harness-inventory.d.ts +0 -75
- package/dist/lib/devices/harness-inventory.js +0 -101
- package/dist/lib/devices/health-report.d.ts +0 -37
- package/dist/lib/devices/health-report.js +0 -73
- package/dist/lib/devices/health.d.ts +0 -71
- package/dist/lib/devices/health.js +2 -82
- package/dist/lib/devices/interactive-host.d.ts +0 -10
- package/dist/lib/devices/interactive-host.js +0 -34
- package/dist/lib/devices/known-hosts.d.ts +0 -45
- package/dist/lib/devices/known-hosts.js +0 -77
- package/dist/lib/devices/pending.d.ts +0 -31
- package/dist/lib/devices/pending.js +7 -67
- package/dist/lib/devices/pool.d.ts +0 -36
- package/dist/lib/devices/pool.js +0 -30
- package/dist/lib/devices/reachability.d.ts +0 -25
- package/dist/lib/devices/reachability.js +0 -14
- package/dist/lib/devices/registry.d.ts +0 -141
- package/dist/lib/devices/registry.js +4 -151
- package/dist/lib/devices/resolve-profile.d.ts +0 -18
- package/dist/lib/devices/resolve-profile.js +0 -18
- package/dist/lib/devices/resolve-target.d.ts +0 -20
- package/dist/lib/devices/resolve-target.js +1 -51
- package/dist/lib/devices/rollout-verify.d.ts +1 -81
- package/dist/lib/devices/rollout-verify.js +0 -77
- package/dist/lib/devices/self-host.d.ts +0 -7
- package/dist/lib/devices/self-host.js +1 -29
- package/dist/lib/devices/ssh-config.d.ts +0 -18
- package/dist/lib/devices/ssh-config.js +0 -9
- package/dist/lib/devices/stats-cache.d.ts +0 -48
- package/dist/lib/devices/stats-cache.js +0 -80
- package/dist/lib/devices/sync.d.ts +0 -97
- package/dist/lib/devices/sync.js +0 -88
- package/dist/lib/devices/tailscale.d.ts +0 -18
- package/dist/lib/devices/tailscale.js +1 -38
- package/dist/lib/devices/terminfo.d.ts +0 -27
- package/dist/lib/devices/terminfo.js +2 -64
- package/dist/lib/devices/worker-pick.d.ts +0 -15
- package/dist/lib/devices/worker-pick.js +0 -48
- package/dist/lib/diff-text.d.ts +0 -18
- package/dist/lib/diff-text.js +0 -15
- package/dist/lib/doctor-diff.d.ts +0 -79
- package/dist/lib/doctor-diff.js +2 -181
- package/dist/lib/drift-sync.d.ts +0 -29
- package/dist/lib/drift-sync.js +0 -40
- package/dist/lib/drift.d.ts +0 -43
- package/dist/lib/drift.js +0 -31
- package/dist/lib/event-families.d.ts +0 -17
- package/dist/lib/event-families.js +0 -33
- package/dist/lib/event-provenance.d.ts +0 -4
- package/dist/lib/event-provenance.js +0 -5
- package/dist/lib/event-stream.d.ts +0 -29
- package/dist/lib/event-stream.js +0 -36
- package/dist/lib/events-ingest.d.ts +0 -27
- package/dist/lib/events-ingest.js +0 -54
- package/dist/lib/exec-account-home.d.ts +0 -24
- package/dist/lib/exec-account-home.js +0 -41
- package/dist/lib/exec-bounded.d.ts +1 -37
- package/dist/lib/exec-bounded.js +10 -46
- package/dist/lib/exec.d.ts +3 -583
- package/dist/lib/exec.js +18 -1025
- package/dist/lib/factory/snapshot.js +1 -15
- package/dist/lib/feed/activity-stream.d.ts +0 -27
- package/dist/lib/feed/activity-stream.js +4 -80
- package/dist/lib/feed/activity.d.ts +1 -243
- package/dist/lib/feed/activity.js +8 -273
- package/dist/lib/feed/answer.d.ts +0 -103
- package/dist/lib/feed/answer.js +0 -267
- package/dist/lib/feed/attention.d.ts +0 -56
- package/dist/lib/feed/attention.js +0 -161
- package/dist/lib/feed/envelope.d.ts +2 -17
- package/dist/lib/feed/envelope.js +0 -14
- package/dist/lib/feed/events.d.ts +0 -118
- package/dist/lib/feed/events.js +13 -213
- package/dist/lib/feed/feed.d.ts +1 -250
- package/dist/lib/feed/feed.js +24 -334
- package/dist/lib/feed/hub-server.d.ts +0 -100
- package/dist/lib/feed/hub-server.js +1 -191
- package/dist/lib/feed/hub.d.ts +0 -53
- package/dist/lib/feed/hub.js +0 -89
- package/dist/lib/feed/pr-status.d.ts +1 -19
- package/dist/lib/feed/pr-status.js +0 -18
- package/dist/lib/feed/tool-activity.d.ts +0 -59
- package/dist/lib/feed/tool-activity.js +1 -119
- package/dist/lib/feed/tools.d.ts +0 -100
- package/dist/lib/feed/tools.js +0 -89
- package/dist/lib/feed/watch.d.ts +0 -33
- package/dist/lib/feed/watch.js +2 -94
- package/dist/lib/feed-broadcast.d.ts +0 -148
- package/dist/lib/feed-broadcast.js +1 -283
- package/dist/lib/feed-outcome.d.ts +0 -50
- package/dist/lib/feed-outcome.js +1 -67
- package/dist/lib/feed-policy.d.ts +0 -6
- package/dist/lib/feed-policy.js +1 -27
- package/dist/lib/feed-post.d.ts +0 -61
- package/dist/lib/feed-post.js +4 -61
- package/dist/lib/feed-ranking.d.ts +1 -1
- package/dist/lib/fleet/apply.d.ts +0 -64
- package/dist/lib/fleet/apply.js +0 -125
- package/dist/lib/fleet/auth-sync.d.ts +0 -48
- package/dist/lib/fleet/auth-sync.js +4 -49
- package/dist/lib/fleet/capture.d.ts +0 -26
- package/dist/lib/fleet/capture.js +1 -36
- package/dist/lib/fleet/manifest.d.ts +0 -38
- package/dist/lib/fleet/manifest.js +0 -40
- package/dist/lib/fleet/types.d.ts +1 -138
- package/dist/lib/fleet/types.js +0 -12
- package/dist/lib/fleet-cache.d.ts +0 -12
- package/dist/lib/fleet-cache.js +0 -24
- package/dist/lib/fleet-shared-state.d.ts +6 -59
- package/dist/lib/fleet-shared-state.js +5 -51
- package/dist/lib/fleet-status.d.ts +0 -27
- package/dist/lib/fleet-status.js +0 -48
- package/dist/lib/format.d.ts +0 -74
- package/dist/lib/format.js +3 -77
- package/dist/lib/friction-heuristics.d.ts +0 -20
- package/dist/lib/friction-heuristics.js +0 -8
- package/dist/lib/fs-atomic.d.ts +0 -51
- package/dist/lib/fs-atomic.js +8 -66
- package/dist/lib/fs-walk.d.ts +0 -13
- package/dist/lib/fs-walk.js +0 -22
- package/dist/lib/fuzzy.d.ts +0 -29
- package/dist/lib/fuzzy.js +0 -31
- package/dist/lib/gemini-settings.js +0 -12
- package/dist/lib/git.d.ts +0 -366
- package/dist/lib/git.js +7 -574
- package/dist/lib/github/ci-failure.d.ts +30 -0
- package/dist/lib/github/ci-failure.js +95 -0
- package/dist/lib/github/gh-overload.d.ts +0 -38
- package/dist/lib/github/gh-overload.js +3 -55
- package/dist/lib/github/pr-mergeable.d.ts +3 -34
- package/dist/lib/github/pr-mergeable.js +2 -42
- package/dist/lib/github/pr-verdict.d.ts +0 -44
- package/dist/lib/github/pr-verdict.js +0 -36
- package/dist/lib/github/project-prs.d.ts +135 -105
- package/dist/lib/github/project-prs.js +530 -170
- package/dist/lib/github/release-drift.d.ts +45 -0
- package/dist/lib/github/release-drift.js +91 -0
- package/dist/lib/github/rest.d.ts +0 -50
- package/dist/lib/github/rest.js +0 -49
- package/dist/lib/github/viewer.d.ts +27 -0
- package/dist/lib/github/viewer.js +101 -0
- package/dist/lib/goose-commands.d.ts +0 -29
- package/dist/lib/goose-commands.js +3 -48
- package/dist/lib/harness/adapter.d.ts +0 -151
- package/dist/lib/harness/adapter.js +0 -41
- package/dist/lib/harness/adapters/claude.d.ts +0 -8
- package/dist/lib/harness/adapters/claude.js +0 -89
- package/dist/lib/harness/adapters/codex.js +0 -18
- package/dist/lib/harness/adapters/copilot.js +0 -3
- package/dist/lib/harness/adapters/cursor.js +0 -16
- package/dist/lib/harness/adapters/droid.js +0 -3
- package/dist/lib/harness/adapters/kimi.js +0 -19
- package/dist/lib/harness/adapters/muse.js +0 -9
- package/dist/lib/harness/adapters/opencode.js +0 -2
- package/dist/lib/harness/exec-config-version.d.ts +0 -2
- package/dist/lib/harness/exec-config-version.js +0 -13
- package/dist/lib/harness/index.js +0 -10
- package/dist/lib/harness-auth-capabilities.d.ts +0 -26
- package/dist/lib/harness-auth-capabilities.js +0 -18
- package/dist/lib/harness-connection-test.d.ts +0 -27
- package/dist/lib/harness-connection-test.js +2 -20
- package/dist/lib/heal.d.ts +0 -45
- package/dist/lib/heal.js +2 -82
- package/dist/lib/help.d.ts +0 -32
- package/dist/lib/help.js +0 -41
- package/dist/lib/helper-download.d.ts +0 -85
- package/dist/lib/helper-download.js +0 -95
- package/dist/lib/helper-versions.d.ts +0 -51
- package/dist/lib/helper-versions.js +1 -45
- package/dist/lib/hooks/cache.d.ts +0 -40
- package/dist/lib/hooks/cache.js +8 -122
- package/dist/lib/hooks/install.d.ts +0 -253
- package/dist/lib/hooks/install.js +49 -822
- package/dist/lib/hooks/match.d.ts +0 -24
- package/dist/lib/hooks/match.js +0 -31
- package/dist/lib/hooks/profile.d.ts +0 -21
- package/dist/lib/hooks/profile.js +0 -28
- package/dist/lib/hosts/credential-transport.d.ts +0 -6
- package/dist/lib/hosts/credential-transport.js +0 -17
- package/dist/lib/hosts/credentials.d.ts +0 -35
- package/dist/lib/hosts/credentials.js +0 -38
- package/dist/lib/hosts/dispatch.d.ts +0 -140
- package/dist/lib/hosts/dispatch.js +0 -176
- package/dist/lib/hosts/logs.d.ts +0 -25
- package/dist/lib/hosts/logs.js +1 -51
- package/dist/lib/hosts/option.d.ts +0 -12
- package/dist/lib/hosts/option.js +0 -12
- package/dist/lib/hosts/passthrough.d.ts +0 -129
- package/dist/lib/hosts/passthrough.js +12 -249
- package/dist/lib/hosts/progress.d.ts +0 -90
- package/dist/lib/hosts/progress.js +5 -115
- package/dist/lib/hosts/providers/devices.d.ts +0 -19
- package/dist/lib/hosts/providers/devices.js +1 -34
- package/dist/lib/hosts/providers/local.d.ts +0 -14
- package/dist/lib/hosts/providers/local.js +0 -22
- package/dist/lib/hosts/ready.d.ts +0 -99
- package/dist/lib/hosts/ready.js +0 -101
- package/dist/lib/hosts/reconcile.d.ts +0 -38
- package/dist/lib/hosts/reconcile.js +1 -50
- package/dist/lib/hosts/reconnect.d.ts +0 -75
- package/dist/lib/hosts/reconnect.js +0 -98
- package/dist/lib/hosts/registry.d.ts +0 -74
- package/dist/lib/hosts/registry.js +0 -110
- package/dist/lib/hosts/remote-cmd.d.ts +1 -228
- package/dist/lib/hosts/remote-cmd.js +19 -294
- package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +0 -1
- package/dist/lib/hosts/remote-cmd.test-fixture.js +0 -12
- package/dist/lib/hosts/remote-os.d.ts +0 -19
- package/dist/lib/hosts/remote-os.js +0 -22
- package/dist/lib/hosts/remote-session-id.d.ts +0 -22
- package/dist/lib/hosts/remote-session-id.js +0 -24
- package/dist/lib/hosts/routing-flag.d.ts +0 -21
- package/dist/lib/hosts/routing-flag.js +0 -21
- package/dist/lib/hosts/run-target.d.ts +0 -53
- package/dist/lib/hosts/run-target.js +0 -56
- package/dist/lib/hosts/session-index.d.ts +1 -53
- package/dist/lib/hosts/session-index.js +2 -59
- package/dist/lib/hosts/session-marker.d.ts +0 -31
- package/dist/lib/hosts/session-marker.js +0 -32
- package/dist/lib/hosts/ssh-config.d.ts +0 -25
- package/dist/lib/hosts/ssh-config.js +1 -32
- package/dist/lib/hosts/tasks.d.ts +0 -54
- package/dist/lib/hosts/tasks.js +0 -35
- package/dist/lib/hosts/types.d.ts +0 -39
- package/dist/lib/hosts/types.js +0 -22
- package/dist/lib/humans.d.ts +0 -21
- package/dist/lib/humans.js +0 -30
- package/dist/lib/identity/client.d.ts +1 -35
- package/dist/lib/identity/client.js +3 -29
- package/dist/lib/identity/index.d.ts +3 -27
- package/dist/lib/identity/index.js +8 -24
- package/dist/lib/import.d.ts +0 -104
- package/dist/lib/import.js +1 -137
- package/dist/lib/installations/active-check.d.ts +0 -53
- package/dist/lib/installations/active-check.js +0 -49
- package/dist/lib/installations/index.d.ts +0 -9
- package/dist/lib/installations/index.js +0 -9
- package/dist/lib/installations/installation-lock.js +0 -8
- package/dist/lib/installations/launch-gate.d.ts +0 -56
- package/dist/lib/installations/launch-gate.js +0 -83
- package/dist/lib/installations/migrate.d.ts +0 -100
- package/dist/lib/installations/migrate.js +105 -572
- package/dist/lib/installations/native-command.d.ts +0 -1
- package/dist/lib/installations/native-command.js +0 -6
- package/dist/lib/installations/resolve.d.ts +0 -24
- package/dist/lib/installations/resolve.js +0 -24
- package/dist/lib/installations/shims.d.ts +0 -395
- package/dist/lib/installations/shims.js +30 -957
- package/dist/lib/installations/store.d.ts +0 -199
- package/dist/lib/installations/store.js +1 -297
- package/dist/lib/installations/strategies.d.ts +0 -44
- package/dist/lib/installations/strategies.js +0 -87
- package/dist/lib/installations/types.d.ts +1 -67
- package/dist/lib/installations/types.js +0 -6
- package/dist/lib/installations/update-cancellation.d.ts +0 -74
- package/dist/lib/installations/update-cancellation.js +0 -74
- package/dist/lib/installations/update-policy.d.ts +0 -57
- package/dist/lib/installations/update-policy.js +0 -62
- package/dist/lib/installations/update-runtime.d.ts +0 -88
- package/dist/lib/installations/update-runtime.js +1 -127
- package/dist/lib/installations/update.d.ts +0 -53
- package/dist/lib/installations/update.js +0 -95
- package/dist/lib/installations/versions.d.ts +0 -310
- package/dist/lib/installations/versions.js +14 -837
- package/dist/lib/isolation-boundary-report.d.ts +0 -7
- package/dist/lib/isolation-boundary-report.js +0 -7
- package/dist/lib/launch-identity.d.ts +0 -8
- package/dist/lib/launch-identity.js +0 -8
- package/dist/lib/linear-autoclose.d.ts +0 -25
- package/dist/lib/linear-autoclose.js +0 -19
- package/dist/lib/linear-cache.d.ts +0 -57
- package/dist/lib/linear-cache.js +1 -81
- package/dist/lib/linear-project-counts.d.ts +0 -83
- package/dist/lib/linear-project-counts.js +2 -64
- package/dist/lib/linear-projects.d.ts +0 -62
- package/dist/lib/linear-projects.js +0 -85
- package/dist/lib/linear-rate-limit.d.ts +0 -21
- package/dist/lib/linear-rate-limit.js +1 -93
- package/dist/lib/linux-userns.d.ts +1 -42
- package/dist/lib/linux-userns.js +0 -47
- package/dist/lib/lock-compromise.d.ts +0 -7
- package/dist/lib/lock-compromise.js +0 -7
- package/dist/lib/log-follow.d.ts +0 -2
- package/dist/lib/log-follow.js +5 -15
- package/dist/lib/loop.d.ts +0 -106
- package/dist/lib/loop.js +0 -135
- package/dist/lib/machine-id.d.ts +0 -19
- package/dist/lib/machine-id.js +0 -19
- package/dist/lib/mailbox-gc.d.ts +0 -7
- package/dist/lib/mailbox-gc.js +0 -25
- package/dist/lib/mailbox-target.d.ts +0 -31
- package/dist/lib/mailbox-target.js +0 -27
- package/dist/lib/mailbox.d.ts +0 -77
- package/dist/lib/mailbox.js +5 -105
- package/dist/lib/manifest.d.ts +0 -4
- package/dist/lib/manifest.js +0 -36
- package/dist/lib/markdown.d.ts +0 -3
- package/dist/lib/markdown.js +0 -9
- package/dist/lib/mcp-registry.d.ts +1 -50
- package/dist/lib/mcp-registry.js +0 -64
- package/dist/lib/mcp.d.ts +0 -115
- package/dist/lib/mcp.js +3 -199
- package/dist/lib/memory-cache.d.ts +0 -11
- package/dist/lib/memory-cache.js +0 -9
- package/dist/lib/memory.d.ts +0 -52
- package/dist/lib/memory.js +12 -74
- package/dist/lib/menubar/download-menubar.d.ts +0 -35
- package/dist/lib/menubar/download-menubar.js +0 -38
- package/dist/lib/menubar/install-menubar.d.ts +0 -405
- package/dist/lib/menubar/install-menubar.js +25 -667
- package/dist/lib/menubar/migrate-prefs.d.ts +0 -47
- package/dist/lib/menubar/migrate-prefs.js +1 -70
- package/dist/lib/menubar/notify-desktop.d.ts +0 -82
- package/dist/lib/menubar/notify-desktop.js +0 -68
- package/dist/lib/menubar/resolve-version.d.ts +0 -41
- package/dist/lib/menubar/resolve-version.js +2 -44
- package/dist/lib/menubar/snapshot.d.ts +13 -66
- package/dist/lib/menubar/snapshot.js +45 -39
- package/dist/lib/merged-resources.d.ts +0 -10
- package/dist/lib/merged-resources.js +0 -10
- package/dist/lib/migrate-fold.d.ts +0 -31
- package/dist/lib/migrate-fold.js +6 -38
- package/dist/lib/model-tier-overrides.d.ts +0 -30
- package/dist/lib/model-tier-overrides.js +0 -14
- package/dist/lib/model-tiers.d.ts +0 -43
- package/dist/lib/model-tiers.js +5 -78
- package/dist/lib/models.d.ts +0 -145
- package/dist/lib/models.js +3 -333
- package/dist/lib/monitors/config.d.ts +0 -187
- package/dist/lib/monitors/config.js +4 -101
- package/dist/lib/monitors/dispatch.d.ts +0 -22
- package/dist/lib/monitors/dispatch.js +0 -35
- package/dist/lib/monitors/engine.d.ts +1 -53
- package/dist/lib/monitors/engine.js +17 -106
- package/dist/lib/monitors/fingerprint.d.ts +0 -43
- package/dist/lib/monitors/fingerprint.js +0 -57
- package/dist/lib/monitors/pid-watch.d.ts +0 -31
- package/dist/lib/monitors/pid-watch.js +0 -31
- package/dist/lib/monitors/remote.d.ts +0 -52
- package/dist/lib/monitors/remote.js +0 -42
- package/dist/lib/monitors/sources/command.d.ts +2 -9
- package/dist/lib/monitors/sources/command.js +13 -34
- package/dist/lib/monitors/sources/device.d.ts +0 -10
- package/dist/lib/monitors/sources/device.js +0 -14
- package/dist/lib/monitors/sources/failure.d.ts +0 -27
- package/dist/lib/monitors/sources/failure.js +0 -27
- package/dist/lib/monitors/sources/file.d.ts +0 -10
- package/dist/lib/monitors/sources/file.js +0 -11
- package/dist/lib/monitors/sources/http.d.ts +0 -7
- package/dist/lib/monitors/sources/http.js +0 -9
- package/dist/lib/monitors/sources/index.d.ts +0 -9
- package/dist/lib/monitors/sources/index.js +0 -9
- package/dist/lib/monitors/sources/poll.d.ts +0 -8
- package/dist/lib/monitors/sources/poll.js +0 -8
- package/dist/lib/monitors/sources/types.d.ts +0 -18
- package/dist/lib/monitors/sources/types.js +0 -8
- package/dist/lib/monitors/sources/webhook.d.ts +0 -7
- package/dist/lib/monitors/sources/webhook.js +0 -7
- package/dist/lib/monitors/sources/ws.d.ts +0 -10
- package/dist/lib/monitors/sources/ws.js +3 -13
- package/dist/lib/monitors/state.d.ts +0 -132
- package/dist/lib/monitors/state.js +2 -86
- package/dist/lib/native-accounts.d.ts +0 -32
- package/dist/lib/native-accounts.js +0 -17
- package/dist/lib/net-close.d.ts +0 -9
- package/dist/lib/net-close.js +0 -5
- package/dist/lib/notify.d.ts +0 -47
- package/dist/lib/notify.js +0 -30
- package/dist/lib/onepassword.d.ts +0 -14
- package/dist/lib/onepassword.js +0 -12
- package/dist/lib/open-url.d.ts +0 -38
- package/dist/lib/open-url.js +1 -69
- package/dist/lib/openclaw-keychain.js +2 -7
- package/dist/lib/operator.d.ts +0 -9
- package/dist/lib/operator.js +0 -34
- package/dist/lib/origin-machine.d.ts +0 -16
- package/dist/lib/origin-machine.js +0 -16
- package/dist/lib/output/git-output.d.ts +0 -31
- package/dist/lib/output/git-output.js +4 -43
- package/dist/lib/overdue.d.ts +0 -35
- package/dist/lib/overdue.js +0 -60
- package/dist/lib/owner-message.d.ts +0 -20
- package/dist/lib/owner-message.js +1 -40
- package/dist/lib/packages/output-home.d.ts +0 -28
- package/dist/lib/packages/output-home.js +0 -114
- package/dist/lib/paths.d.ts +0 -26
- package/dist/lib/paths.js +1 -27
- package/dist/lib/percentile.d.ts +0 -11
- package/dist/lib/percentile.js +0 -11
- package/dist/lib/perf/db.d.ts +0 -16
- package/dist/lib/perf/db.js +3 -32
- package/dist/lib/perf/spool.d.ts +0 -12
- package/dist/lib/perf/spool.js +0 -13
- package/dist/lib/perf/types.d.ts +0 -26
- package/dist/lib/perf/types.js +0 -1
- package/dist/lib/permissions-registry.d.ts +0 -48
- package/dist/lib/permissions-registry.js +0 -108
- package/dist/lib/permissions.d.ts +0 -215
- package/dist/lib/permissions.js +4 -407
- package/dist/lib/picker.d.ts +0 -124
- package/dist/lib/picker.js +0 -140
- package/dist/lib/placement.d.ts +0 -57
- package/dist/lib/placement.js +0 -47
- package/dist/lib/platform/exec.d.ts +0 -73
- package/dist/lib/platform/exec.js +0 -80
- package/dist/lib/platform/index.d.ts +0 -14
- package/dist/lib/platform/index.js +0 -14
- package/dist/lib/platform/ipc.d.ts +0 -10
- package/dist/lib/platform/ipc.js +0 -13
- package/dist/lib/platform/links.d.ts +0 -14
- package/dist/lib/platform/links.js +0 -25
- package/dist/lib/platform/paths.d.ts +0 -48
- package/dist/lib/platform/paths.js +0 -52
- package/dist/lib/platform/posixpath.d.ts +0 -18
- package/dist/lib/platform/posixpath.js +0 -62
- package/dist/lib/platform/process.d.ts +0 -67
- package/dist/lib/platform/process.js +5 -99
- package/dist/lib/platform/winpath.d.ts +0 -50
- package/dist/lib/platform/winpath.js +0 -81
- package/dist/lib/plugins/plugin-marketplace.d.ts +0 -165
- package/dist/lib/plugins/plugin-marketplace.js +10 -238
- package/dist/lib/plugins/plugins.d.ts +0 -238
- package/dist/lib/plugins/plugins.js +20 -454
- package/dist/lib/plugins/skills.d.ts +0 -86
- package/dist/lib/plugins/skills.js +1 -139
- package/dist/lib/pr-land-detach.d.ts +0 -17
- package/dist/lib/pr-land-detach.js +0 -30
- package/dist/lib/pricing/cost.d.ts +0 -29
- package/dist/lib/pricing/cost.js +0 -38
- package/dist/lib/pricing/index.d.ts +0 -6
- package/dist/lib/pricing/index.js +0 -6
- package/dist/lib/pricing/table.d.ts +0 -8
- package/dist/lib/pricing/table.js +3 -56
- package/dist/lib/probe.d.ts +0 -5
- package/dist/lib/probe.js +0 -40
- package/dist/lib/profiles-presets.d.ts +0 -20
- package/dist/lib/profiles-presets.js +1 -36
- package/dist/lib/profiles.d.ts +0 -185
- package/dist/lib/profiles.js +1 -158
- package/dist/lib/project-doctor.d.ts +0 -29
- package/dist/lib/project-doctor.js +0 -26
- package/dist/lib/project-focus.d.ts +0 -41
- package/dist/lib/project-focus.js +0 -49
- package/dist/lib/project-import.d.ts +0 -41
- package/dist/lib/project-import.js +0 -36
- package/dist/lib/project-key.d.ts +0 -65
- package/dist/lib/project-key.js +0 -70
- package/dist/lib/project-launch.d.ts +0 -49
- package/dist/lib/project-launch.js +2 -91
- package/dist/lib/project-probe.d.ts +0 -86
- package/dist/lib/project-probe.js +1 -88
- package/dist/lib/project-pull.d.ts +0 -96
- package/dist/lib/project-pull.js +0 -122
- package/dist/lib/project-resources.d.ts +0 -44
- package/dist/lib/project-resources.js +7 -171
- package/dist/lib/project-root.d.ts +0 -95
- package/dist/lib/project-root.js +0 -101
- package/dist/lib/project-schedule.d.ts +0 -43
- package/dist/lib/project-schedule.js +0 -52
- package/dist/lib/project-status.d.ts +0 -108
- package/dist/lib/project-status.js +0 -117
- package/dist/lib/projects.d.ts +0 -197
- package/dist/lib/projects.js +1 -213
- package/dist/lib/pwsh.d.ts +0 -41
- package/dist/lib/pwsh.js +0 -51
- package/dist/lib/quick-todo.d.ts +84 -0
- package/dist/lib/quick-todo.js +243 -0
- package/dist/lib/reconcile-and-repair.d.ts +0 -78
- package/dist/lib/reconcile-and-repair.js +3 -66
- package/dist/lib/redact.d.ts +0 -29
- package/dist/lib/redact.js +0 -54
- package/dist/lib/refresh-coordinator.d.ts +0 -15
- package/dist/lib/refresh-coordinator.js +0 -10
- package/dist/lib/refresh.d.ts +0 -39
- package/dist/lib/refresh.js +0 -45
- package/dist/lib/registry.d.ts +0 -65
- package/dist/lib/registry.js +0 -127
- package/dist/lib/reminders.d.ts +0 -21
- package/dist/lib/reminders.js +0 -30
- package/dist/lib/remote-agents-json.d.ts +0 -44
- package/dist/lib/remote-agents-json.js +1 -44
- package/dist/lib/reserved-stores.d.ts +0 -28
- package/dist/lib/reserved-stores.js +2 -28
- package/dist/lib/resource-aliases.d.ts +0 -12
- package/dist/lib/resource-aliases.js +0 -12
- package/dist/lib/resource-content-diff.d.ts +0 -28
- package/dist/lib/resource-content-diff.js +7 -34
- package/dist/lib/resource-inventory.d.ts +0 -51
- package/dist/lib/resource-inventory.js +0 -45
- package/dist/lib/resource-patterns.d.ts +0 -32
- package/dist/lib/resource-patterns.js +0 -34
- package/dist/lib/resource-profiles.d.ts +0 -7
- package/dist/lib/resource-profiles.js +0 -11
- package/dist/lib/resources/types.d.ts +0 -50
- package/dist/lib/resources/types.js +0 -7
- package/dist/lib/resources/workflows.d.ts +0 -7
- package/dist/lib/resources/workflows.js +0 -13
- package/dist/lib/resources.d.ts +0 -65
- package/dist/lib/resources.js +0 -78
- package/dist/lib/routers.d.ts +0 -67
- package/dist/lib/routers.js +0 -60
- package/dist/lib/routine-activation.d.ts +0 -23
- package/dist/lib/routine-activation.js +0 -24
- package/dist/lib/routine-context.d.ts +1 -91
- package/dist/lib/routine-context.js +0 -107
- package/dist/lib/routine-notify-owner.d.ts +0 -79
- package/dist/lib/routine-notify-owner.js +1 -103
- package/dist/lib/routine-notify.d.ts +0 -70
- package/dist/lib/routine-notify.js +1 -75
- package/dist/lib/routine-process-cleanup.d.ts +0 -1
- package/dist/lib/routine-process-cleanup.js +1 -4
- package/dist/lib/routine-readiness.d.ts +0 -63
- package/dist/lib/routine-readiness.js +4 -86
- package/dist/lib/routines-format.d.ts +0 -40
- package/dist/lib/routines-format.js +0 -67
- package/dist/lib/routines-placement.d.ts +0 -33
- package/dist/lib/routines-placement.js +0 -40
- package/dist/lib/routines-project.d.ts +0 -57
- package/dist/lib/routines-project.js +6 -80
- package/dist/lib/rules/compile.d.ts +0 -66
- package/dist/lib/rules/compile.js +6 -118
- package/dist/lib/rules/compose.d.ts +0 -56
- package/dist/lib/rules/compose.js +2 -83
- package/dist/lib/rules/rules.d.ts +0 -23
- package/dist/lib/rules/rules.js +0 -35
- package/dist/lib/rules/run-sync.d.ts +0 -16
- package/dist/lib/rules/run-sync.js +1 -44
- package/dist/lib/run-config.d.ts +0 -7
- package/dist/lib/run-config.js +0 -8
- package/dist/lib/run-defaults.d.ts +0 -14
- package/dist/lib/run-defaults.js +0 -14
- package/dist/lib/run-notify.d.ts +0 -18
- package/dist/lib/run-notify.js +0 -36
- package/dist/lib/run-trace-sync.d.ts +0 -21
- package/dist/lib/run-trace-sync.js +2 -66
- package/dist/lib/rush-session.d.ts +0 -26
- package/dist/lib/rush-session.js +0 -28
- package/dist/lib/sandbox.d.ts +0 -45
- package/dist/lib/sandbox.js +5 -93
- package/dist/lib/scheduler.d.ts +0 -28
- package/dist/lib/scheduler.js +0 -45
- package/dist/lib/scheduling/routines.d.ts +0 -652
- package/dist/lib/scheduling/routines.js +8 -475
- package/dist/lib/secrets-cli.d.ts +3 -8
- package/dist/lib/secrets-cli.js +1 -19
- package/dist/lib/secrets-client.d.ts +0 -117
- package/dist/lib/secrets-client.js +4 -275
- package/dist/lib/secrets-policy.d.ts +0 -142
- package/dist/lib/secrets-policy.js +4 -237
- package/dist/lib/secrets-types.d.ts +0 -87
- package/dist/lib/secrets-types.js +0 -13
- package/dist/lib/self-heal/checks/hook-manifest.js +0 -25
- package/dist/lib/self-heal/checks/hook-runtime.js +0 -5
- package/dist/lib/self-heal/checks/install-staging.d.ts +0 -1
- package/dist/lib/self-heal/checks/install-staging.js +1 -28
- package/dist/lib/self-heal/checks/menubar-helper.js +0 -5
- package/dist/lib/self-heal/checks/path.js +0 -9
- package/dist/lib/self-heal/checks/resources.js +0 -5
- package/dist/lib/self-heal/checks/shadowing.js +2 -16
- package/dist/lib/self-heal/checks/shims.js +0 -14
- package/dist/lib/self-heal/child.d.ts +12 -0
- package/dist/lib/self-heal/child.js +23 -0
- package/dist/lib/self-heal/registry.d.ts +0 -9
- package/dist/lib/self-heal/registry.js +0 -16
- package/dist/lib/self-heal/types.d.ts +0 -12
- package/dist/lib/self-heal/types.js +0 -15
- package/dist/lib/self-update.d.ts +0 -312
- package/dist/lib/self-update.js +9 -360
- package/dist/lib/service-manifest.d.ts +0 -39
- package/dist/lib/service-manifest.js +0 -72
- package/dist/lib/session/active.d.ts +13 -869
- package/dist/lib/session/active.js +20 -976
- package/dist/lib/session/actor-sidecar.d.ts +1 -32
- package/dist/lib/session/actor-sidecar.js +1 -41
- package/dist/lib/session/bookmarks.d.ts +0 -33
- package/dist/lib/session/bookmarks.js +0 -37
- package/dist/lib/session/bundle.d.ts +0 -86
- package/dist/lib/session/bundle.js +0 -54
- package/dist/lib/session/claude-accounts.d.ts +0 -40
- package/dist/lib/session/claude-accounts.js +0 -49
- package/dist/lib/session/cloud.d.ts +1 -23
- package/dist/lib/session/cloud.js +0 -26
- package/dist/lib/session/db.d.ts +5 -658
- package/dist/lib/session/db.js +22 -1443
- package/dist/lib/session/detached.d.ts +0 -21
- package/dist/lib/session/detached.js +0 -29
- package/dist/lib/session/discover.d.ts +3 -420
- package/dist/lib/session/discover.js +30 -1123
- package/dist/lib/session/fork.d.ts +1 -41
- package/dist/lib/session/fork.js +0 -19
- package/dist/lib/session/ghostty-tabs.d.ts +0 -24
- package/dist/lib/session/ghostty-tabs.js +0 -37
- package/dist/lib/session/glance-files.d.ts +19 -0
- package/dist/lib/session/glance-files.js +258 -0
- package/dist/lib/session/hook-sessions.d.ts +0 -33
- package/dist/lib/session/hook-sessions.js +4 -99
- package/dist/lib/session/host-link.d.ts +1 -94
- package/dist/lib/session/host-link.js +1 -81
- package/dist/lib/session/inject-target.d.ts +8 -0
- package/dist/lib/session/inject-target.js +32 -0
- package/dist/lib/session/inject.d.ts +0 -15
- package/dist/lib/session/inject.js +0 -15
- package/dist/lib/session/live-metadata.d.ts +1 -34
- package/dist/lib/session/live-metadata.js +1 -73
- package/dist/lib/session/local-tmux-attach.d.ts +0 -37
- package/dist/lib/session/local-tmux-attach.js +1 -76
- package/dist/lib/session/migrate-targets.d.ts +0 -46
- package/dist/lib/session/migrate-targets.js +0 -24
- package/dist/lib/session/migrations.d.ts +0 -12
- package/dist/lib/session/migrations.js +1 -20
- package/dist/lib/session/mirror.d.ts +0 -32
- package/dist/lib/session/mirror.js +0 -77
- package/dist/lib/session/origin-machine.js +0 -3
- package/dist/lib/session/pid-registry.d.ts +0 -80
- package/dist/lib/session/pid-registry.js +2 -81
- package/dist/lib/session/presence.d.ts +0 -39
- package/dist/lib/session/presence.js +2 -52
- package/dist/lib/session/process-view.d.ts +0 -11
- package/dist/lib/session/process-view.js +0 -25
- package/dist/lib/session/projection.d.ts +0 -3
- package/dist/lib/session/projection.js +0 -10
- package/dist/lib/session/provenance.d.ts +1 -37
- package/dist/lib/session/provenance.js +0 -69
- package/dist/lib/session/recovery.d.ts +1 -40
- package/dist/lib/session/recovery.js +2 -80
- package/dist/lib/session/relative-time.js +0 -3
- package/dist/lib/session/remote/peer-stream.d.ts +0 -42
- package/dist/lib/session/remote/peer-stream.js +0 -64
- package/dist/lib/session/remote/remote-bundle.d.ts +0 -6
- package/dist/lib/session/remote/remote-bundle.js +0 -21
- package/dist/lib/session/remote/remote-list.d.ts +1 -110
- package/dist/lib/session/remote/remote-list.js +5 -139
- package/dist/lib/session/remote/remote.d.ts +0 -98
- package/dist/lib/session/remote/remote.js +3 -119
- package/dist/lib/session/remote/watch.d.ts +1 -34
- package/dist/lib/session/remote/watch.js +12 -72
- package/dist/lib/session/remote-active.d.ts +0 -35
- package/dist/lib/session/remote-active.js +0 -48
- package/dist/lib/session/remote-bundle.js +0 -2
- package/dist/lib/session/remote-list.js +0 -2
- package/dist/lib/session/remote-preview-cache.d.ts +0 -7
- package/dist/lib/session/remote-preview-cache.js +1 -76
- package/dist/lib/session/remote.js +0 -2
- package/dist/lib/session/resume-command.d.ts +0 -6
- package/dist/lib/session/resume-command.js +0 -6
- package/dist/lib/session/resume-owner.d.ts +1 -52
- package/dist/lib/session/resume-owner.js +0 -56
- package/dist/lib/session/run-names.d.ts +0 -24
- package/dist/lib/session/run-names.js +0 -26
- package/dist/lib/session/session-cache.d.ts +2 -146
- package/dist/lib/session/session-cache.js +26 -203
- package/dist/lib/session/short-id.js +0 -3
- package/dist/lib/session/sync/agents.d.ts +0 -68
- package/dist/lib/session/sync/agents.js +0 -0
- package/dist/lib/session/sync/backend.d.ts +0 -39
- package/dist/lib/session/sync/backend.js +0 -45
- package/dist/lib/session/sync/config.d.ts +0 -27
- package/dist/lib/session/sync/config.js +0 -56
- package/dist/lib/session/sync/managed-config.d.ts +0 -17
- package/dist/lib/session/sync/managed-config.js +0 -17
- package/dist/lib/session/sync/managed-key.d.ts +0 -38
- package/dist/lib/session/sync/managed-key.js +1 -42
- package/dist/lib/session/sync/net-client.d.ts +0 -36
- package/dist/lib/session/sync/net-client.js +0 -30
- package/dist/lib/session/sync/provision.d.ts +0 -2
- package/dist/lib/session/sync/provision.js +0 -13
- package/dist/lib/session/sync/r2.d.ts +0 -20
- package/dist/lib/session/sync/r2.js +0 -20
- package/dist/lib/session/sync/transcript-crypto.d.ts +0 -37
- package/dist/lib/session/sync/transcript-crypto.js +5 -37
- package/dist/lib/session/sync/worker-template.d.ts +0 -5
- package/dist/lib/session/sync/worker-template.js +0 -40
- package/dist/lib/session/testdata/pid-registry-namespace.js +0 -2
- package/dist/lib/session/testdata/process-view-private.js +0 -1
- package/dist/lib/session/throughput.d.ts +0 -24
- package/dist/lib/session/throughput.js +1 -25
- package/dist/lib/session/timeline-pass.d.ts +1 -63
- package/dist/lib/session/timeline-pass.js +161 -148
- package/dist/lib/session/title.d.ts +0 -182
- package/dist/lib/session/title.js +0 -139
- package/dist/lib/session/tool-index.d.ts +2 -21
- package/dist/lib/session/tool-index.js +3 -75
- package/dist/lib/session/tool-store.d.ts +2 -48
- package/dist/lib/session/tool-store.js +1 -33
- package/dist/lib/session/viewing-in.d.ts +0 -67
- package/dist/lib/session/viewing-in.js +1 -71
- package/dist/lib/session/watch.js +0 -2
- package/dist/lib/session/width.js +0 -3
- package/dist/lib/sessions-client.d.ts +0 -46
- package/dist/lib/sessions-client.js +36 -113
- package/dist/lib/settings-manifest.d.ts +1 -17
- package/dist/lib/settings-manifest.js +4 -57
- package/dist/lib/setup-tool-install.d.ts +0 -1
- package/dist/lib/setup-tool-install.js +2 -7
- package/dist/lib/setup-tool-status.d.ts +0 -3
- package/dist/lib/setup-tool-status.js +4 -14
- package/dist/lib/sha256-asset.d.ts +0 -20
- package/dist/lib/sha256-asset.js +0 -20
- package/dist/lib/share-runtime.d.ts +0 -10
- package/dist/lib/share-runtime.js +1 -27
- package/dist/lib/shim-heal.d.ts +0 -15
- package/dist/lib/shim-heal.js +3 -29
- package/dist/lib/signin-badge.d.ts +0 -72
- package/dist/lib/signin-badge.js +0 -86
- package/dist/lib/sink-format.d.ts +0 -32
- package/dist/lib/sink-format.js +0 -14
- package/dist/lib/smart-launch.d.ts +0 -75
- package/dist/lib/smart-launch.js +1 -83
- package/dist/lib/snapshot.d.ts +0 -46
- package/dist/lib/snapshot.js +5 -31
- package/dist/lib/spinner.d.ts +0 -37
- package/dist/lib/spinner.js +0 -37
- package/dist/lib/sqlite.d.ts +0 -13
- package/dist/lib/sqlite.js +3 -71
- package/dist/lib/ssh-exec.d.ts +0 -209
- package/dist/lib/ssh-exec.js +11 -248
- package/dist/lib/ssh-tunnel.d.ts +0 -43
- package/dist/lib/ssh-tunnel.js +2 -48
- package/dist/lib/staleness/checkers/commands.d.ts +0 -4
- package/dist/lib/staleness/checkers/commands.js +0 -4
- package/dist/lib/staleness/checkers/hooks.d.ts +0 -10
- package/dist/lib/staleness/checkers/hooks.js +0 -15
- package/dist/lib/staleness/checkers/mcp.d.ts +0 -9
- package/dist/lib/staleness/checkers/mcp.js +0 -9
- package/dist/lib/staleness/checkers/permissions.d.ts +0 -12
- package/dist/lib/staleness/checkers/permissions.js +0 -13
- package/dist/lib/staleness/checkers/plugins.d.ts +0 -8
- package/dist/lib/staleness/checkers/plugins.js +0 -8
- package/dist/lib/staleness/checkers/rules.d.ts +0 -15
- package/dist/lib/staleness/checkers/rules.js +0 -26
- package/dist/lib/staleness/checkers/skills.d.ts +0 -4
- package/dist/lib/staleness/checkers/skills.js +0 -4
- package/dist/lib/staleness/checkers/subagents.d.ts +0 -9
- package/dist/lib/staleness/checkers/subagents.js +0 -9
- package/dist/lib/staleness/checkers/types.d.ts +0 -34
- package/dist/lib/staleness/checkers/types.js +0 -19
- package/dist/lib/staleness/checkers/workflows.d.ts +0 -7
- package/dist/lib/staleness/checkers/workflows.js +0 -7
- package/dist/lib/staleness/detectors/commands.js +0 -17
- package/dist/lib/staleness/detectors/hooks.js +1 -6
- package/dist/lib/staleness/detectors/mcp.js +0 -4
- package/dist/lib/staleness/detectors/permissions.js +10 -23
- package/dist/lib/staleness/detectors/rules.js +0 -6
- package/dist/lib/staleness/detectors/skills.d.ts +0 -1
- package/dist/lib/staleness/detectors/skills.js +1 -12
- package/dist/lib/staleness/detectors/types.d.ts +0 -10
- package/dist/lib/staleness/fingerprint.d.ts +0 -19
- package/dist/lib/staleness/fingerprint.js +0 -35
- package/dist/lib/staleness/index.d.ts +0 -28
- package/dist/lib/staleness/index.js +1 -45
- package/dist/lib/staleness/layers.d.ts +0 -23
- package/dist/lib/staleness/layers.js +0 -34
- package/dist/lib/staleness/prune.d.ts +0 -71
- package/dist/lib/staleness/prune.js +2 -27
- package/dist/lib/staleness/registry.d.ts +0 -10
- package/dist/lib/staleness/registry.js +3 -33
- package/dist/lib/staleness/types.d.ts +0 -36
- package/dist/lib/staleness/types.js +0 -5
- package/dist/lib/staleness/writers/commands.js +1 -48
- package/dist/lib/staleness/writers/hooks.js +1 -18
- package/dist/lib/staleness/writers/kinds.d.ts +0 -12
- package/dist/lib/staleness/writers/kinds.js +0 -1
- package/dist/lib/staleness/writers/lazy-map.d.ts +0 -11
- package/dist/lib/staleness/writers/mcp.js +0 -13
- package/dist/lib/staleness/writers/plugins.js +0 -4
- package/dist/lib/staleness/writers/rules.d.ts +0 -1
- package/dist/lib/staleness/writers/rules.js +1 -19
- package/dist/lib/staleness/writers/skills.js +3 -14
- package/dist/lib/staleness/writers/sources.d.ts +0 -11
- package/dist/lib/staleness/writers/sources.js +0 -32
- package/dist/lib/staleness/writers/subagents.js +0 -16
- package/dist/lib/staleness/writers/types.d.ts +0 -58
- package/dist/lib/staleness/writers/workflows.js +1 -1
- package/dist/lib/standalone-tools.d.ts +24 -0
- package/dist/lib/standalone-tools.js +58 -0
- package/dist/lib/star-nudge.d.ts +0 -32
- package/dist/lib/star-nudge.js +2 -36
- package/dist/lib/startup/command-registry.d.ts +0 -45
- package/dist/lib/startup/command-registry.js +1 -46
- package/dist/lib/startup/dev-build.d.ts +0 -9
- package/dist/lib/startup/dev-build.js +1 -42
- package/dist/lib/startup/root-command.d.ts +0 -19
- package/dist/lib/startup/root-command.js +0 -19
- package/dist/lib/startup/spellcheck.d.ts +0 -13
- package/dist/lib/startup/spellcheck.js +0 -13
- package/dist/lib/state.d.ts +0 -376
- package/dist/lib/state.js +19 -737
- package/dist/lib/storage/selection.d.ts +0 -40
- package/dist/lib/storage/selection.js +0 -29
- package/dist/lib/subagents-registry.d.ts +0 -56
- package/dist/lib/subagents-registry.js +0 -99
- package/dist/lib/subagents.d.ts +0 -128
- package/dist/lib/subagents.js +1 -158
- package/dist/lib/summarizer/config.d.ts +0 -37
- package/dist/lib/summarizer/config.js +0 -37
- package/dist/lib/summarizer/pass.d.ts +0 -20
- package/dist/lib/summarizer/pass.js +1 -34
- package/dist/lib/summarizer/summarize.d.ts +1 -49
- package/dist/lib/summarizer/summarize.js +0 -35
- package/dist/lib/sync-passphrase.d.ts +0 -16
- package/dist/lib/sync-passphrase.js +1 -18
- package/dist/lib/sync-status.d.ts +0 -72
- package/dist/lib/sync-status.js +0 -55
- package/dist/lib/sync-umbrella.d.ts +0 -54
- package/dist/lib/sync-umbrella.js +0 -48
- package/dist/lib/system-run-sync.d.ts +0 -5
- package/dist/lib/system-run-sync.js +1 -31
- package/dist/lib/teams/agents.d.ts +1 -444
- package/dist/lib/teams/agents.js +11 -871
- package/dist/lib/teams/api.d.ts +2 -52
- package/dist/lib/teams/api.js +4 -63
- package/dist/lib/teams/debug.d.ts +0 -6
- package/dist/lib/teams/debug.js +0 -6
- package/dist/lib/teams/delivery.d.ts +0 -41
- package/dist/lib/teams/delivery.js +0 -32
- package/dist/lib/teams/file_ops.d.ts +0 -11
- package/dist/lib/teams/file_ops.js +0 -11
- package/dist/lib/teams/forEach.d.ts +0 -76
- package/dist/lib/teams/forEach.js +1 -77
- package/dist/lib/teams/index.d.ts +1 -7
- package/dist/lib/teams/index.js +1 -7
- package/dist/lib/teams/parsers.d.ts +0 -4
- package/dist/lib/teams/parsers.js +0 -81
- package/dist/lib/teams/persistence.d.ts +0 -2
- package/dist/lib/teams/persistence.js +0 -12
- package/dist/lib/teams/placement-probe.d.ts +0 -12
- package/dist/lib/teams/placement-probe.js +1 -51
- package/dist/lib/teams/pr-watch.d.ts +0 -107
- package/dist/lib/teams/pr-watch.js +1 -107
- package/dist/lib/teams/registry.d.ts +0 -36
- package/dist/lib/teams/registry.js +0 -47
- package/dist/lib/teams/remoteWorktree.d.ts +0 -50
- package/dist/lib/teams/remoteWorktree.js +1 -96
- package/dist/lib/teams/scheduler.d.ts +0 -111
- package/dist/lib/teams/scheduler.js +2 -125
- package/dist/lib/teams/summarizer.d.ts +0 -22
- package/dist/lib/teams/summarizer.js +6 -50
- package/dist/lib/teams/supervisor.d.ts +0 -38
- package/dist/lib/teams/supervisor.js +0 -21
- package/dist/lib/teams/worktree.d.ts +0 -95
- package/dist/lib/teams/worktree.js +3 -110
- package/dist/lib/template.d.ts +0 -21
- package/dist/lib/template.js +0 -23
- package/dist/lib/term-client.d.ts +0 -26
- package/dist/lib/term-client.js +0 -48
- package/dist/lib/term-driver.d.ts +0 -5
- package/dist/lib/term-driver.js +0 -8
- package/dist/lib/terminal/backends/ghostty.d.ts +0 -2
- package/dist/lib/terminal/backends/ghostty.js +0 -12
- package/dist/lib/terminal/backends/index.d.ts +0 -17
- package/dist/lib/terminal/backends/index.js +0 -15
- package/dist/lib/terminal/backends/iterm.d.ts +0 -2
- package/dist/lib/terminal/backends/iterm.js +0 -10
- package/dist/lib/terminal/backends/terminal-app.d.ts +0 -10
- package/dist/lib/terminal/backends/terminal-app.js +0 -30
- package/dist/lib/terminal/backends/tmux.d.ts +0 -10
- package/dist/lib/terminal/backends/tmux.js +0 -2
- package/dist/lib/terminal/backends/vscodium-agent.d.ts +0 -25
- package/dist/lib/terminal/backends/vscodium-agent.js +0 -36
- package/dist/lib/terminal/engine.d.ts +0 -17
- package/dist/lib/terminal/engine.js +0 -10
- package/dist/lib/terminal/index.d.ts +0 -8
- package/dist/lib/terminal/inject.d.ts +1 -173
- package/dist/lib/terminal/inject.js +0 -146
- package/dist/lib/terminal/policy.d.ts +0 -8
- package/dist/lib/terminal/policy.js +0 -1
- package/dist/lib/terminal/preferred.d.ts +0 -66
- package/dist/lib/terminal/preferred.js +0 -30
- package/dist/lib/terminal/quote.d.ts +0 -8
- package/dist/lib/terminal/quote.js +0 -8
- package/dist/lib/terminal/resolve.d.ts +0 -46
- package/dist/lib/terminal/resolve.js +0 -30
- package/dist/lib/terminal/run-surface.d.ts +0 -56
- package/dist/lib/terminal/run-surface.js +0 -46
- package/dist/lib/terminal/shell.d.ts +0 -3
- package/dist/lib/terminal/shell.js +0 -13
- package/dist/lib/terminal/transport.d.ts +0 -14
- package/dist/lib/terminal/transport.js +1 -30
- package/dist/lib/terminal/types.d.ts +0 -40
- package/dist/lib/terminal/types.js +0 -10
- package/dist/lib/text/relative-time.d.ts +0 -36
- package/dist/lib/text/relative-time.js +0 -43
- package/dist/lib/text/short-id.d.ts +0 -16
- package/dist/lib/text/short-id.js +0 -16
- package/dist/lib/text/width.d.ts +0 -24
- package/dist/lib/text/width.js +10 -52
- package/dist/lib/tmux/binary.d.ts +0 -36
- package/dist/lib/tmux/binary.js +0 -28
- package/dist/lib/tmux/index.d.ts +0 -5
- package/dist/lib/tmux/index.js +0 -5
- package/dist/lib/tmux/orphan-reap.d.ts +0 -253
- package/dist/lib/tmux/orphan-reap.js +3 -299
- package/dist/lib/tmux/paths.d.ts +0 -14
- package/dist/lib/tmux/paths.js +0 -14
- package/dist/lib/tmux/session.d.ts +0 -263
- package/dist/lib/tmux/session.js +6 -344
- package/dist/lib/traces/backend.d.ts +0 -20
- package/dist/lib/traces/backend.js +0 -23
- package/dist/lib/traces/classify.d.ts +0 -20
- package/dist/lib/traces/classify.js +0 -7
- package/dist/lib/traces/insights.d.ts +1 -84
- package/dist/lib/traces/insights.js +0 -126
- package/dist/lib/traces/phenotype.d.ts +0 -69
- package/dist/lib/traces/phenotype.js +0 -150
- package/dist/lib/traces/provision.d.ts +0 -1
- package/dist/lib/traces/provision.js +0 -5
- package/dist/lib/traces/schema2-build.d.ts +3 -60
- package/dist/lib/traces/schema2-build.js +8 -149
- package/dist/lib/traces/schema2-danger.d.ts +0 -30
- package/dist/lib/traces/schema2-danger.js +1 -63
- package/dist/lib/traces/schema2.d.ts +0 -11
- package/dist/lib/traces/segments.d.ts +0 -44
- package/dist/lib/traces/segments.js +0 -65
- package/dist/lib/traces/sync.d.ts +2 -239
- package/dist/lib/traces/sync.js +15 -237
- package/dist/lib/traces/worker-template.d.ts +0 -3
- package/dist/lib/traces/worker-template.js +0 -29
- package/dist/lib/triggers/handlers.d.ts +0 -82
- package/dist/lib/triggers/handlers.js +0 -75
- package/dist/lib/triggers/webhook.d.ts +0 -158
- package/dist/lib/triggers/webhook.js +0 -143
- package/dist/lib/types.d.ts +0 -736
- package/dist/lib/types.js +0 -50
- package/dist/lib/uninstall.d.ts +0 -17
- package/dist/lib/uninstall.js +0 -75
- package/dist/lib/usage-backoff.d.ts +0 -20
- package/dist/lib/usage-backoff.js +3 -60
- package/dist/lib/usage-refresh.d.ts +0 -154
- package/dist/lib/usage-refresh.js +8 -212
- package/dist/lib/verbs.d.ts +0 -12
- package/dist/lib/verbs.js +0 -12
- package/dist/lib/version-duplicates.d.ts +0 -6
- package/dist/lib/version-duplicates.js +0 -6
- package/dist/lib/version.d.ts +0 -55
- package/dist/lib/version.js +1 -58
- package/dist/lib/view-types.d.ts +0 -48
- package/dist/lib/warn-unpushed.d.ts +0 -27
- package/dist/lib/warn-unpushed.js +1 -45
- package/dist/lib/watchdog/history.d.ts +0 -1
- package/dist/lib/watchdog/history.js +0 -3
- package/dist/lib/watchdog/index.js +0 -2
- package/dist/lib/watchdog/log.d.ts +0 -19
- package/dist/lib/watchdog/log.js +0 -34
- package/dist/lib/watchdog/read.d.ts +0 -27
- package/dist/lib/watchdog/read.js +3 -58
- package/dist/lib/watchdog/rotate.d.ts +0 -139
- package/dist/lib/watchdog/rotate.js +2 -151
- package/dist/lib/watchdog/runner.d.ts +0 -125
- package/dist/lib/watchdog/runner.js +3 -223
- package/dist/lib/watchdog/service.d.ts +0 -1
- package/dist/lib/watchdog/service.js +0 -2
- package/dist/lib/watchdog/watchdog-agent.d.ts +0 -31
- package/dist/lib/watchdog/watchdog-agent.js +0 -27
- package/dist/lib/watchdog/watchdog.d.ts +0 -7
- package/dist/lib/watchdog/watchdog.js +0 -10
- package/dist/lib/watchdog/watchdogTail.js +0 -7
- package/dist/lib/whats-new.d.ts +0 -10
- package/dist/lib/whats-new.js +0 -21
- package/dist/lib/workflows-registry.d.ts +0 -45
- package/dist/lib/workflows-registry.js +0 -60
- package/dist/lib/workflows.d.ts +0 -282
- package/dist/lib/workflows.js +3 -213
- package/dist/lib/worktree/held.d.ts +0 -89
- package/dist/lib/worktree/held.js +1 -103
- package/dist/lib/wrap.d.ts +0 -32
- package/dist/lib/wrap.js +0 -32
- package/dist/lib/yaml-io.d.ts +0 -45
- package/dist/lib/yaml-io.js +0 -47
- package/dist/session-tracker/dist/adapters/claude.js +0 -2
- package/dist/session-tracker/dist/hook.sh +4 -37
- package/dist/session-tracker/dist/index.d.ts +0 -7
- package/dist/session-tracker/dist/index.js +0 -5
- package/dist/session-tracker/dist/install-hook.d.ts +0 -5
- package/dist/session-tracker/dist/install-hook.js +1 -15
- package/dist/session-tracker/dist/prune-state.js +0 -4
- package/dist/session-tracker/dist/reader.js +0 -4
- package/dist/session-tracker/dist/state-file.d.ts +0 -3
- package/dist/session-tracker/dist/state-file.js +3 -8
- package/package.json +3 -4
- package/scripts/postinstall.js +8 -116
- package/dist/lib/session/artifacts.d.ts +0 -14
- package/dist/lib/session/artifacts.js +0 -101
- package/dist/lib/session/bash-command.d.ts +0 -63
- package/dist/lib/session/bash-command.js +0 -490
- package/dist/lib/session/digest.d.ts +0 -66
- package/dist/lib/session/digest.js +0 -328
- package/dist/lib/session/highlights.d.ts +0 -151
- package/dist/lib/session/highlights.js +0 -391
- package/dist/lib/session/insights.d.ts +0 -165
- package/dist/lib/session/insights.js +0 -563
- package/dist/lib/session/linear.d.ts +0 -19
- package/dist/lib/session/linear.js +0 -99
- package/dist/lib/session/parse.d.ts +0 -224
- package/dist/lib/session/parse.js +0 -2408
- package/dist/lib/session/prompt.d.ts +0 -213
- package/dist/lib/session/prompt.js +0 -601
- package/dist/lib/session/render.d.ts +0 -133
- package/dist/lib/session/render.js +0 -1047
- package/dist/lib/session/share-html.d.ts +0 -35
- package/dist/lib/session/share-html.js +0 -319
- package/dist/lib/session/shell-programs.d.ts +0 -33
- package/dist/lib/session/shell-programs.js +0 -380
- package/dist/lib/session/state.d.ts +0 -269
- package/dist/lib/session/state.js +0 -777
- package/dist/lib/session/stream-render.d.ts +0 -4
- package/dist/lib/session/stream-render.js +0 -131
- package/dist/lib/session/tail.d.ts +0 -88
- package/dist/lib/session/tail.js +0 -294
- package/dist/lib/session/team-filter.d.ts +0 -129
- package/dist/lib/session/team-filter.js +0 -269
- package/dist/lib/session/timeline.d.ts +0 -172
- package/dist/lib/session/timeline.js +0 -636
- package/dist/lib/session/tool-calls.d.ts +0 -132
- package/dist/lib/session/tool-calls.js +0 -674
- package/dist/lib/session/trajectory-compare.d.ts +0 -48
- package/dist/lib/session/trajectory-compare.js +0 -116
- package/dist/lib/session/trajectory-html.d.ts +0 -19
- package/dist/lib/session/trajectory-html.js +0 -771
- package/dist/lib/session/trajectory-lineage.d.ts +0 -93
- package/dist/lib/session/trajectory-lineage.js +0 -195
- package/dist/lib/session/trajectory-text.d.ts +0 -38
- package/dist/lib/session/trajectory-text.js +0 -284
- package/dist/lib/session/trajectory.d.ts +0 -145
- package/dist/lib/session/trajectory.js +0 -394
- package/dist/lib/session/types.d.ts +0 -627
- package/dist/lib/session/types.js +0 -43
package/dist/lib/feed/feed.js
CHANGED
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Feed store -- structured block records published by agents waiting on user
|
|
3
|
-
* input (AskUserQuestion). The outbound counterpart to the inbound mailbox:
|
|
4
|
-
* the mailbox delivers messages TO agents; the feed surfaces decisions agents
|
|
5
|
-
* need FROM the user.
|
|
6
|
-
*
|
|
7
|
-
* Layout: <feedDir>/<blockId>.json
|
|
8
|
-
* Each file is one open block -- a question the agent asked. One block per
|
|
9
|
-
* session: a new AskUserQuestion in the same session replaces the previous
|
|
10
|
-
* block (an agent can only ask one question at a time). Removed when the
|
|
11
|
-
* session advances past the block.
|
|
12
|
-
*
|
|
13
|
-
* A block carries enough identity (sessionId, mailboxId, host, runtime) for
|
|
14
|
-
* `agents feed` to aggregate across hosts and for `agents message` to route
|
|
15
|
-
* a reply back to the right agent.
|
|
16
|
-
*
|
|
17
|
-
* Answer lifecycle:
|
|
18
|
-
* - A block may be answered from any surface (feed, terminal, tmux, cloud).
|
|
19
|
-
* - The first answer wins: `recordAnswer` atomically checks an answered
|
|
20
|
-
* marker so exactly one surface can claim the block.
|
|
21
|
-
* - Answered blocks stay visible until the agent consumes the message and
|
|
22
|
-
* continues, so the UI can show delivered/consumed/continued receipts.
|
|
23
|
-
*/
|
|
24
1
|
import * as fs from 'fs';
|
|
25
2
|
import * as path from 'path';
|
|
26
3
|
import * as os from 'os';
|
|
@@ -30,42 +7,15 @@ import { getFeedDir, getUserAgentsDir } from '../state.js';
|
|
|
30
7
|
import { isAdmin, isHighConsequenceAllowed, isKnownOperator } from '../operator.js';
|
|
31
8
|
import { projectKeyFromCwd } from '../project-key.js';
|
|
32
9
|
import { atomicWriteJsonSync } from '../fs-atomic.js';
|
|
33
|
-
/**
|
|
34
|
-
* Whether a receipt describes THIS ask.
|
|
35
|
-
*
|
|
36
|
-
* Identity is the GENERATION alone, never the attempt. The question is "does
|
|
37
|
-
* this receipt answer this ask?", and a second attempt on the same ask carries
|
|
38
|
-
* the same answer -- so a stranded claim that is adopted (which necessarily
|
|
39
|
-
* mints a new attempt) must still recognise the message its predecessor queued,
|
|
40
|
-
* or it enqueues a duplicate. `attempt` rides along as provenance for the
|
|
41
|
-
* delivery check, not as part of identity.
|
|
42
|
-
*
|
|
43
|
-
* An UNBOUND receipt (written before these fields existed) matches NOTHING: it
|
|
44
|
-
* cannot name an ask, so attributing it to one would let a message queued for an
|
|
45
|
-
* earlier question resolve whichever question is current (PHNX-3999).
|
|
46
|
-
*/
|
|
47
10
|
export function receiptMatchesOrigin(receipt, origin) {
|
|
48
11
|
if (receipt.generation === undefined)
|
|
49
12
|
return false;
|
|
50
13
|
return receipt.generation === origin.generation;
|
|
51
14
|
}
|
|
52
15
|
function resolutionDir(root) { return path.join(root, 'resolutions'); }
|
|
53
|
-
/**
|
|
54
|
-
* Canonical generation for a block. A writer that stamped `generation` wins;
|
|
55
|
-
* otherwise the publish timestamp `ts` is the generation, because the feed
|
|
56
|
-
* rewrites `ts` only when a NEW question replaces the old one (an answer/continue
|
|
57
|
-
* update to the same block keeps `ts`). So `ts` changes exactly when the ask
|
|
58
|
-
* changes — which is what a generation must track.
|
|
59
|
-
*/
|
|
60
16
|
export function blockGeneration(block) {
|
|
61
17
|
return block.generation ?? block.ts;
|
|
62
18
|
}
|
|
63
|
-
/**
|
|
64
|
-
* Canonical source for a block. A writer that stamped `source` wins; otherwise it
|
|
65
|
-
* is derived from `kind`: a declared block is `declared`, a synthetic control card
|
|
66
|
-
* is `system`, everything else (question / notification, written by a harness hook)
|
|
67
|
-
* is `hook`.
|
|
68
|
-
*/
|
|
69
19
|
export function blockSource(block) {
|
|
70
20
|
if (block.source)
|
|
71
21
|
return block.source;
|
|
@@ -75,13 +25,6 @@ export function blockSource(block) {
|
|
|
75
25
|
default: return 'hook';
|
|
76
26
|
}
|
|
77
27
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Canonical lifecycle state for a block. A writer that stamped `state` wins;
|
|
80
|
-
* otherwise it is derived from the markers already on the block: `continuedAt`
|
|
81
|
-
* means `continued`, a recorded `answer` means `answered`, and anything else is
|
|
82
|
-
* still `open`. This is the ONE place that turns the historical marker fields into
|
|
83
|
-
* the lifecycle axis, so no consumer re-derives it and drifts.
|
|
84
|
-
*/
|
|
85
28
|
export function deriveBlockState(block) {
|
|
86
29
|
if (block.state)
|
|
87
30
|
return block.state;
|
|
@@ -91,24 +34,14 @@ export function deriveBlockState(block) {
|
|
|
91
34
|
return 'answered';
|
|
92
35
|
return 'open';
|
|
93
36
|
}
|
|
94
|
-
/**
|
|
95
|
-
* Record a resolution tombstone (latest-wins per block id). Called from the
|
|
96
|
-
* answer / continue / clear paths BEFORE the open-block view is removed, so the
|
|
97
|
-
* reconciler always has the tombstone by the time the block file is gone.
|
|
98
|
-
*/
|
|
99
37
|
export function recordResolution(resolution, root) {
|
|
100
38
|
const dir = resolutionDir(root ?? getFeedDir());
|
|
101
39
|
ensureDir(dir);
|
|
102
40
|
atomicWriteJsonSync(path.join(dir, `${resolution.blockId}.json`), resolution);
|
|
103
41
|
}
|
|
104
|
-
/** Read the latest resolution tombstone for a block, if one exists. */
|
|
105
42
|
export function readResolution(blockId, root) {
|
|
106
43
|
return safeReadJson(path.join(resolutionDir(root ?? getFeedDir()), `${blockId}.json`));
|
|
107
44
|
}
|
|
108
|
-
/**
|
|
109
|
-
* Stable block id for a session. One block per session -- a new question
|
|
110
|
-
* replaces the previous one (the agent can only ask one question at a time).
|
|
111
|
-
*/
|
|
112
45
|
export function blockIdForSession(sessionId) {
|
|
113
46
|
const safeSessionId = sessionId.replace(/[^A-Za-z0-9._-]/g, '-');
|
|
114
47
|
return `block-${safeSessionId}`;
|
|
@@ -133,28 +66,17 @@ function safeReadJson(file) {
|
|
|
133
66
|
return undefined;
|
|
134
67
|
}
|
|
135
68
|
}
|
|
136
|
-
/** Read one block record. Returns undefined when missing or corrupt. */
|
|
137
69
|
export function readBlock(blockId, root) {
|
|
138
70
|
const parsed = safeReadJson(blockPath(root ?? getFeedDir(), blockId));
|
|
139
71
|
if (!parsed || !parsed.blockId || !parsed.sessionId || !parsed.questions?.length)
|
|
140
72
|
return undefined;
|
|
141
73
|
return parsed;
|
|
142
74
|
}
|
|
143
|
-
/**
|
|
144
|
-
* Atomically claim the first answer for a block. Returns `{ ok: true }` when
|
|
145
|
-
* this call is the first to answer; returns `{ ok: false, existing }` when a
|
|
146
|
-
* different surface already answered the block. The marker file is created
|
|
147
|
-
* with `O_EXCL` so two concurrent claimers cannot both succeed.
|
|
148
|
-
*
|
|
149
|
-
* High-consequence blocks require a verified operator identity. Unverified
|
|
150
|
-
* answers (no operatorId or not in the registry/allowed list) are refused.
|
|
151
|
-
*/
|
|
152
75
|
export function recordAnswer(blockId, answer, root, options = {}) {
|
|
153
76
|
const dir = root ?? getFeedDir();
|
|
154
77
|
const block = readBlock(blockId, dir);
|
|
155
78
|
const operatorId = answer.operatorId;
|
|
156
79
|
if (block?.consequence && block.consequence !== 'normal') {
|
|
157
|
-
// Operators live in ~/.agents/operators.yaml — never the feed store root.
|
|
158
80
|
if (!operatorId || answer.verified !== true || !isKnownOperator(operatorId)) {
|
|
159
81
|
return {
|
|
160
82
|
ok: false,
|
|
@@ -188,7 +110,6 @@ export function recordAnswer(blockId, answer, root, options = {}) {
|
|
|
188
110
|
operatorId: answer.operatorId,
|
|
189
111
|
verified: answer.verified,
|
|
190
112
|
};
|
|
191
|
-
// Try to create the answered marker atomically.
|
|
192
113
|
try {
|
|
193
114
|
const fd = fs.openSync(marker, fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL, 0o644);
|
|
194
115
|
try {
|
|
@@ -207,21 +128,6 @@ export function recordAnswer(blockId, answer, root, options = {}) {
|
|
|
207
128
|
}
|
|
208
129
|
throw err;
|
|
209
130
|
}
|
|
210
|
-
// Marker created successfully -- mirror the answer into the block file.
|
|
211
|
-
//
|
|
212
|
-
// A `pending` claim stops there: the claim is recorded so no second surface
|
|
213
|
-
// can take it, but the generation is NOT resolved and the lifecycle stays
|
|
214
|
-
// `open`, so the card remains in the operator's feed until a rail reports a
|
|
215
|
-
// real receipt (`confirmAnswerResolution`). A claim is not a delivery, and a
|
|
216
|
-
// claim whose delivery is never confirmed must not silently remove the item
|
|
217
|
-
// (PHNX-3999). `state` wins over `answer` in `deriveBlockState`, so the
|
|
218
|
-
// explicit `open` is what keeps the claimed block visible.
|
|
219
|
-
//
|
|
220
|
-
// The default one-phase path advances straight to `answered` for surfaces
|
|
221
|
-
// that resolve atomically (a policy default, a synchronous enqueue). The
|
|
222
|
-
// resolution tombstone is written first, so if a stale lifecycle re-read races
|
|
223
|
-
// the block-file update the reconciler already refuses to resurrect this
|
|
224
|
-
// generation.
|
|
225
131
|
if (block) {
|
|
226
132
|
if (!options.pending) {
|
|
227
133
|
recordResolution({
|
|
@@ -238,29 +144,12 @@ export function recordAnswer(blockId, answer, root, options = {}) {
|
|
|
238
144
|
}
|
|
239
145
|
return { ok: true };
|
|
240
146
|
}
|
|
241
|
-
/**
|
|
242
|
-
* Promote a pending claim to a resolved answer — the second half of the
|
|
243
|
-
* two-phase answer protocol (see `recordAnswer`'s `pending` option).
|
|
244
|
-
*
|
|
245
|
-
* Called only once a rail has reported a real {@link MessageReceipt}: that is
|
|
246
|
-
* the point the item stops needing a human, so that is the point the tombstone
|
|
247
|
-
* is written and the card may leave the feed. An unconfirmed delivery never
|
|
248
|
-
* reaches here, so its card stays up.
|
|
249
|
-
*/
|
|
250
147
|
export function confirmAnswerResolution(blockId, root, expected) {
|
|
251
148
|
const dir = root ?? getFeedDir();
|
|
252
149
|
const block = readBlock(blockId, dir);
|
|
253
150
|
const record = getAnswerRecord(blockId, dir);
|
|
254
151
|
if (!block || !record)
|
|
255
152
|
return false;
|
|
256
|
-
// One block id serves every generation of a session's asks, so a slow
|
|
257
|
-
// delivery for the PREVIOUS question must not resolve the one the agent has
|
|
258
|
-
// moved on to. A caller that knows which ask and which attempt it is
|
|
259
|
-
// confirming says so, and a mismatch is a no-op rather than a wrong tombstone.
|
|
260
|
-
// Bound to the ASK. The attempt is deliberately NOT compared: adopting a
|
|
261
|
-
// stranded claim mints a new attempt for the same question, and that adoption
|
|
262
|
-
// must still be able to resolve the ask it completed. The generation is what
|
|
263
|
-
// distinguishes one question from the next, which is the actual hazard.
|
|
264
153
|
if (expected && blockGeneration(block) !== expected.generation)
|
|
265
154
|
return false;
|
|
266
155
|
recordResolution({
|
|
@@ -275,28 +164,15 @@ export function confirmAnswerResolution(blockId, root, expected) {
|
|
|
275
164
|
publishBlock(block, dir);
|
|
276
165
|
return true;
|
|
277
166
|
}
|
|
278
|
-
/** Read the answer record for a block, if one exists. */
|
|
279
167
|
export function getAnswerRecord(blockId, root) {
|
|
280
168
|
return safeReadJson(path.join(answeredDir(root ?? getFeedDir()), `${blockId}.json`));
|
|
281
169
|
}
|
|
282
|
-
/**
|
|
283
|
-
* Release one specific answer claim after its reply rail failed. The compare on
|
|
284
|
-
* `answeredAt` makes this a conditional rollback: it can never erase a newer
|
|
285
|
-
* claimant. The caller supplies the exact pre-claim block/resolution snapshots,
|
|
286
|
-
* restoring the attention lifecycle to the state another surface observed.
|
|
287
|
-
*/
|
|
288
170
|
export function rollbackAnswerClaim(blockId, answeredAt, previousBlock, previousResolution, root) {
|
|
289
171
|
const dir = root ?? getFeedDir();
|
|
290
172
|
const marker = path.join(answeredDir(dir), `${blockId}.json`);
|
|
291
173
|
const current = safeReadJson(marker);
|
|
292
174
|
if (!current || current.answeredAt !== answeredAt)
|
|
293
175
|
return false;
|
|
294
|
-
// Read-compare-then-unlink is NOT atomic, and two callers releasing the SAME
|
|
295
|
-
// claim is a real interleaving: both pass the compare, the first unlinks and
|
|
296
|
-
// re-claims, then the second unlinks the FIRST'S fresh marker and both end up
|
|
297
|
-
// holding a claim. The release is therefore gated on an O_EXCL token keyed by
|
|
298
|
-
// the exact claim being released -- the same primitive `recordAnswer` uses, so
|
|
299
|
-
// exactly one caller can ever release a given `answeredAt` (PHNX-3999).
|
|
300
176
|
const release = path.join(answeredDir(dir), `${blockId}.${answeredAt.replace(/[^0-9A-Za-z]/g, '')}.release`);
|
|
301
177
|
if (!acquireReleaseToken(release))
|
|
302
178
|
return false;
|
|
@@ -309,16 +185,11 @@ export function rollbackAnswerClaim(blockId, answeredAt, previousBlock, previous
|
|
|
309
185
|
throw error;
|
|
310
186
|
}
|
|
311
187
|
};
|
|
312
|
-
// Re-read INSIDE the token: a racer that released-and-re-claimed between our
|
|
313
|
-
// first read and the token acquisition would otherwise be clobbered.
|
|
314
188
|
const held = safeReadJson(marker);
|
|
315
189
|
if (!held || held.answeredAt !== answeredAt) {
|
|
316
190
|
dropToken();
|
|
317
191
|
return false;
|
|
318
192
|
}
|
|
319
|
-
// Restore while the O_EXCL marker still excludes every other claimant. The
|
|
320
|
-
// marker is removed LAST; once another writer can win recordAnswer, this
|
|
321
|
-
// rollback has no state left to overwrite.
|
|
322
193
|
publishBlock(previousBlock, dir);
|
|
323
194
|
const resolutionFile = path.join(resolutionDir(dir), `${blockId}.json`);
|
|
324
195
|
if (previousResolution)
|
|
@@ -339,38 +210,17 @@ export function rollbackAnswerClaim(blockId, answeredAt, previousBlock, previous
|
|
|
339
210
|
if (error.code !== 'ENOENT')
|
|
340
211
|
throw error;
|
|
341
212
|
}
|
|
342
|
-
// The token has done its job: this exact claim can never be released again,
|
|
343
|
-
// because the claim it names no longer exists. Leaving it would accumulate one
|
|
344
|
-
// dead file per released claim forever.
|
|
345
213
|
dropToken();
|
|
346
214
|
return true;
|
|
347
215
|
}
|
|
348
|
-
/**
|
|
349
|
-
* How long a release token may sit before it is treated as abandoned. A release
|
|
350
|
-
* is a handful of synchronous file operations, so anything this old belongs to a
|
|
351
|
-
* process that died holding it.
|
|
352
|
-
*/
|
|
353
216
|
export const RELEASE_TOKEN_STALE_MS = 60_000;
|
|
354
|
-
/**
|
|
355
|
-
* Take the O_EXCL token that serialises releasing one specific claim.
|
|
356
|
-
*
|
|
357
|
-
* The token MUST be recoverable: a process killed between creating it and
|
|
358
|
-
* finishing would otherwise wedge that claim forever, and "the answer can never
|
|
359
|
-
* be released again" is a worse failure than the race the token prevents. So the
|
|
360
|
-
* token records its owner and its age, and a token whose owner is provably gone
|
|
361
|
-
* (same host, no such pid) or which is simply stale is reclaimed once.
|
|
362
|
-
*/
|
|
363
217
|
function acquireReleaseToken(release) {
|
|
364
218
|
const mine = { pid: process.pid, host: os.hostname(), at: Date.now() };
|
|
365
219
|
const create = () => {
|
|
220
|
+
const staged = `${release}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`;
|
|
366
221
|
try {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
fs.writeSync(fd, Buffer.from(JSON.stringify(mine), 'utf-8'));
|
|
370
|
-
}
|
|
371
|
-
finally {
|
|
372
|
-
fs.closeSync(fd);
|
|
373
|
-
}
|
|
222
|
+
fs.writeFileSync(staged, JSON.stringify(mine), { mode: 0o644 });
|
|
223
|
+
fs.linkSync(staged, release);
|
|
374
224
|
return true;
|
|
375
225
|
}
|
|
376
226
|
catch (error) {
|
|
@@ -378,14 +228,28 @@ function acquireReleaseToken(release) {
|
|
|
378
228
|
return false;
|
|
379
229
|
throw error;
|
|
380
230
|
}
|
|
231
|
+
finally {
|
|
232
|
+
fs.rmSync(staged, { force: true });
|
|
233
|
+
}
|
|
381
234
|
};
|
|
382
235
|
if (create())
|
|
383
236
|
return true;
|
|
384
237
|
const held = safeReadJson(release);
|
|
385
|
-
|
|
238
|
+
let ageMs;
|
|
239
|
+
if (held?.at)
|
|
240
|
+
ageMs = Date.now() - held.at;
|
|
241
|
+
else {
|
|
242
|
+
try {
|
|
243
|
+
ageMs = Date.now() - fs.statSync(release).mtimeMs;
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
if (error.code === 'ENOENT')
|
|
247
|
+
return create();
|
|
248
|
+
throw error;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
386
251
|
let ownerGone = false;
|
|
387
252
|
if (held?.host === mine.host && typeof held.pid === 'number') {
|
|
388
|
-
// Signal 0 probes liveness without delivering anything.
|
|
389
253
|
try {
|
|
390
254
|
process.kill(held.pid, 0);
|
|
391
255
|
}
|
|
@@ -394,7 +258,7 @@ function acquireReleaseToken(release) {
|
|
|
394
258
|
}
|
|
395
259
|
}
|
|
396
260
|
if (!ownerGone && ageMs < RELEASE_TOKEN_STALE_MS)
|
|
397
|
-
return false;
|
|
261
|
+
return false;
|
|
398
262
|
try {
|
|
399
263
|
fs.unlinkSync(release);
|
|
400
264
|
}
|
|
@@ -402,14 +266,11 @@ function acquireReleaseToken(release) {
|
|
|
402
266
|
if (error.code !== 'ENOENT')
|
|
403
267
|
throw error;
|
|
404
268
|
}
|
|
405
|
-
// Exactly one reclaimer wins the re-create; the rest see EEXIST and back off.
|
|
406
269
|
return create();
|
|
407
270
|
}
|
|
408
|
-
/** True when the block has already been answered. */
|
|
409
271
|
export function isBlockAnswered(blockId, root) {
|
|
410
272
|
return fs.existsSync(path.join(answeredDir(root ?? getFeedDir()), `${blockId}.json`));
|
|
411
273
|
}
|
|
412
|
-
/** Receipt lifecycle rank — higher means further along; never regress. */
|
|
413
274
|
const RECEIPT_STATUS_RANK = {
|
|
414
275
|
queued: 0,
|
|
415
276
|
consumed: 1,
|
|
@@ -417,12 +278,6 @@ const RECEIPT_STATUS_RANK = {
|
|
|
417
278
|
dropped: 3,
|
|
418
279
|
expired: 3,
|
|
419
280
|
};
|
|
420
|
-
/**
|
|
421
|
-
* Record a delivery-receipt transition for a message tied to a block.
|
|
422
|
-
* Updates the receipts list in the block file. Status is monotonic
|
|
423
|
-
* (queued → consumed → continued): a late `queued` write cannot overwrite
|
|
424
|
-
* an already-recorded `consumed`/`continued` (race with mailbox drain).
|
|
425
|
-
*/
|
|
426
281
|
export function recordMessageReceipt(blockId, receipt, root) {
|
|
427
282
|
const dir = root ?? getFeedDir();
|
|
428
283
|
const block = readBlock(blockId, dir);
|
|
@@ -433,7 +288,7 @@ export function recordMessageReceipt(blockId, receipt, root) {
|
|
|
433
288
|
if (idx >= 0) {
|
|
434
289
|
const prev = receipts[idx];
|
|
435
290
|
if (RECEIPT_STATUS_RANK[receipt.status] < RECEIPT_STATUS_RANK[prev.status]) {
|
|
436
|
-
return;
|
|
291
|
+
return;
|
|
437
292
|
}
|
|
438
293
|
receipts[idx] = receipt;
|
|
439
294
|
}
|
|
@@ -442,21 +297,6 @@ export function recordMessageReceipt(blockId, receipt, root) {
|
|
|
442
297
|
}
|
|
443
298
|
block.receipts = receipts;
|
|
444
299
|
publishBlock(block, dir);
|
|
445
|
-
// The AGENT's own acknowledgement is what resolves a pending claim: `queued`
|
|
446
|
-
// only says a rail took the answer, so it must never remove the card
|
|
447
|
-
// (PHNX-3999).
|
|
448
|
-
//
|
|
449
|
-
// The promotion is bound to the RECEIPT's own origin, not to whatever the
|
|
450
|
-
// block happens to hold now. Checking `block.answer` alone was not enough: if
|
|
451
|
-
// the agent moved to question N+1 AND that ask was itself claimed, a late
|
|
452
|
-
// acknowledgement for question N found a live claim and resolved the wrong
|
|
453
|
-
// question. `confirmAnswerResolution`'s own compare is what rejects it.
|
|
454
|
-
//
|
|
455
|
-
// An UNBOUND receipt never resolves. It cannot say which ask it acknowledges,
|
|
456
|
-
// so promoting it against whatever claim happens to be live would resolve the
|
|
457
|
-
// wrong question -- the exact failure this binding exists to prevent. Its
|
|
458
|
-
// delivery evidence is still recorded above; the card then clears through the
|
|
459
|
-
// ordinary session-advance path instead.
|
|
460
300
|
if ((receipt.status === 'consumed' || receipt.status === 'continued')
|
|
461
301
|
&& receipt.generation !== undefined && block.answer) {
|
|
462
302
|
confirmAnswerResolution(blockId, dir, {
|
|
@@ -464,23 +304,11 @@ export function recordMessageReceipt(blockId, receipt, root) {
|
|
|
464
304
|
});
|
|
465
305
|
}
|
|
466
306
|
}
|
|
467
|
-
/** Read the receipt list for a block. */
|
|
468
307
|
export function getBlockReceipts(blockId, root) {
|
|
469
308
|
return readBlock(blockId, root)?.receipts ?? [];
|
|
470
309
|
}
|
|
471
|
-
/**
|
|
472
|
-
* The furthest-along receipt recorded for a block, or undefined when no rail
|
|
473
|
-
* ever reported one. This is the ONLY truthful evidence that an answer reached
|
|
474
|
-
* a delivery rail: an answer marker alone proves a claim was taken, not that
|
|
475
|
-
* anything was delivered, so a caller reporting on a block it did not deliver
|
|
476
|
-
* must read this rather than synthesize a receipt (PHNX-3999).
|
|
477
|
-
*/
|
|
478
310
|
export function latestMessageReceipt(blockId, root, origin) {
|
|
479
311
|
const all = getBlockReceipts(blockId, root);
|
|
480
|
-
// A block id is per SESSION, so its receipt list accumulates across every
|
|
481
|
-
// generation of that session's asks. Reading it unfiltered lets question N's
|
|
482
|
-
// receipt answer for question N+1 -- so a caller that knows which ask it is
|
|
483
|
-
// asking about passes the origin and sees only that ask's evidence.
|
|
484
312
|
const receipts = origin ? all.filter((receipt) => receiptMatchesOrigin(receipt, origin)) : all;
|
|
485
313
|
let best;
|
|
486
314
|
for (const receipt of receipts) {
|
|
@@ -494,7 +322,6 @@ export function latestMessageReceipt(blockId, root, origin) {
|
|
|
494
322
|
}
|
|
495
323
|
return best;
|
|
496
324
|
}
|
|
497
|
-
/** Mark a block as "continued" -- the agent consumed the answer and moved on. */
|
|
498
325
|
export function recordContinued(blockId, root) {
|
|
499
326
|
const dir = root ?? getFeedDir();
|
|
500
327
|
const block = readBlock(blockId, dir);
|
|
@@ -512,7 +339,6 @@ export function recordContinued(blockId, root) {
|
|
|
512
339
|
}, dir);
|
|
513
340
|
publishBlock(block, dir);
|
|
514
341
|
}
|
|
515
|
-
/** Mark a decision-class block as hard-parked (no safe default existed). */
|
|
516
342
|
export function recordParked(blockId, root) {
|
|
517
343
|
const dir = root ?? getFeedDir();
|
|
518
344
|
const block = readBlock(blockId, dir);
|
|
@@ -521,7 +347,6 @@ export function recordParked(blockId, root) {
|
|
|
521
347
|
block.parkedAt = new Date().toISOString();
|
|
522
348
|
publishBlock(block, dir);
|
|
523
349
|
}
|
|
524
|
-
/** Mark that the approval safe-default was applied by policy. */
|
|
525
350
|
export function recordDefaulted(blockId, root) {
|
|
526
351
|
const dir = root ?? getFeedDir();
|
|
527
352
|
const block = readBlock(blockId, dir);
|
|
@@ -530,7 +355,6 @@ export function recordDefaulted(blockId, root) {
|
|
|
530
355
|
block.defaultedAt = new Date().toISOString();
|
|
531
356
|
publishBlock(block, dir);
|
|
532
357
|
}
|
|
533
|
-
/** Mark that an urgent block was paged to the phone. */
|
|
534
358
|
export function recordNotified(blockId, root) {
|
|
535
359
|
const dir = root ?? getFeedDir();
|
|
536
360
|
const block = readBlock(blockId, dir);
|
|
@@ -539,7 +363,6 @@ export function recordNotified(blockId, root) {
|
|
|
539
363
|
block.notifiedAt = new Date().toISOString();
|
|
540
364
|
publishBlock(block, dir);
|
|
541
365
|
}
|
|
542
|
-
/** Remove answered marker and receipts for a block (used by block removal/GC). */
|
|
543
366
|
function clearBlockLifecycle(blockId, root) {
|
|
544
367
|
const dir = root ?? getFeedDir();
|
|
545
368
|
for (const sub of [answeredDir(dir), receiptDir(dir)]) {
|
|
@@ -547,27 +370,9 @@ function clearBlockLifecycle(blockId, root) {
|
|
|
547
370
|
fs.unlinkSync(path.join(sub, `${blockId}.json`));
|
|
548
371
|
}
|
|
549
372
|
catch {
|
|
550
|
-
// ignore missing
|
|
551
373
|
}
|
|
552
374
|
}
|
|
553
375
|
}
|
|
554
|
-
/**
|
|
555
|
-
* Build the block record for `agents feed post --blocked` — pure, so the shape is testable
|
|
556
|
-
* without touching the store or the broadcast layer.
|
|
557
|
-
*
|
|
558
|
-
* Class is derived, not asked for: a `--default` means the user could be absent
|
|
559
|
-
* and policy could still resolve it (approval); no default means only a human can
|
|
560
|
-
* choose (decision). `feed-policy.ts` reads exactly that distinction, so deriving
|
|
561
|
-
* it here keeps one rule in one place instead of letting a caller set a class that
|
|
562
|
-
* contradicts its own safeDefault.
|
|
563
|
-
*
|
|
564
|
-
* `costOfDelay: high` because a declared block is, by definition, an agent that
|
|
565
|
-
* has already stopped making progress — that is what makes it worth interrupting
|
|
566
|
-
* someone over, and what `feed --dispatch`'s urgency filter keys off.
|
|
567
|
-
*
|
|
568
|
-
* `sourceCursor` is stamped from `ts` at write time so a fresh generation is
|
|
569
|
-
* comparable even when the live session's `lastActivityMs` is unresolvable.
|
|
570
|
-
*/
|
|
571
376
|
export function buildDeclaredBlock(agent, input) {
|
|
572
377
|
const text = input.text.trim().replace(/\s+/g, ' ');
|
|
573
378
|
if (!text) {
|
|
@@ -586,14 +391,9 @@ export function buildDeclaredBlock(agent, input) {
|
|
|
586
391
|
host: agent.host,
|
|
587
392
|
runtime: agent.runtime,
|
|
588
393
|
ts,
|
|
589
|
-
// A declared block is an explicit, agent-raised attention record: it opens the
|
|
590
|
-
// lifecycle here, sourced `declared`, with `ts` as its generation so a later
|
|
591
|
-
// `--blocked` in the same session mints a fresh generation past any tombstone.
|
|
592
394
|
generation: ts,
|
|
593
395
|
source: 'declared',
|
|
594
396
|
state: 'open',
|
|
595
|
-
// Write-time cursor so a new generation is not suppressed when
|
|
596
|
-
// session.lastActivityMs is unresolvable (cloud / remote / index-lag).
|
|
597
397
|
sourceCursor: { lastActivityMs: Date.parse(ts) },
|
|
598
398
|
kind: 'declared',
|
|
599
399
|
questions: [{ text, header: 'Needs you', ...(options.length ? { options } : {}) }],
|
|
@@ -604,14 +404,12 @@ export function buildDeclaredBlock(agent, input) {
|
|
|
604
404
|
...(input.timeoutMinutes !== undefined ? { timeoutMinutes: input.timeoutMinutes } : {}),
|
|
605
405
|
};
|
|
606
406
|
}
|
|
607
|
-
/** Atomic write a block record to the feed store. Clears stale lifecycle state. */
|
|
608
407
|
export function publishBlock(block, root) {
|
|
609
408
|
const dir = root ?? getFeedDir();
|
|
610
409
|
fs.mkdirSync(dir, { recursive: true });
|
|
611
410
|
const target = blockPath(dir, block.blockId);
|
|
612
411
|
atomicWriteJsonSync(target, block);
|
|
613
412
|
}
|
|
614
|
-
/** Read all block records. Returns them sorted by stable block filename. */
|
|
615
413
|
export function listBlocks(root) {
|
|
616
414
|
const dir = root ?? getFeedDir();
|
|
617
415
|
let names;
|
|
@@ -631,12 +429,10 @@ export function listBlocks(root) {
|
|
|
631
429
|
}
|
|
632
430
|
}
|
|
633
431
|
catch {
|
|
634
|
-
// skip corrupt / partial files
|
|
635
432
|
}
|
|
636
433
|
}
|
|
637
434
|
return blocks;
|
|
638
435
|
}
|
|
639
|
-
/** Read per-session ask history written by the feed publish hook. */
|
|
640
436
|
export function listAskStats(root) {
|
|
641
437
|
const dir = askStatsDir(root ?? getFeedDir());
|
|
642
438
|
let names;
|
|
@@ -662,15 +458,8 @@ export function listAskStats(root) {
|
|
|
662
458
|
}
|
|
663
459
|
return stats;
|
|
664
460
|
}
|
|
665
|
-
/** Remove a block record and its lifecycle sidecars. Returns true if the file was deleted. */
|
|
666
461
|
export function removeBlock(blockId, root) {
|
|
667
462
|
const dir = root ?? getFeedDir();
|
|
668
|
-
// Record a resolution tombstone BEFORE the block file and answered marker are
|
|
669
|
-
// gone, so a stale lifecycle re-read of the same session cannot resurrect this
|
|
670
|
-
// cleared generation. The reason names how it closed: an answered marker means
|
|
671
|
-
// the operator answered, `continuedAt` means the agent moved on, otherwise the
|
|
672
|
-
// transcript advanced past it (a Stop/PostToolUse clear). The tombstone itself
|
|
673
|
-
// is deliberately NOT cleared — it must outlive the block to do its job.
|
|
674
463
|
const block = readBlock(blockId, dir);
|
|
675
464
|
if (block) {
|
|
676
465
|
const reason = isBlockAnswered(blockId, dir)
|
|
@@ -693,14 +482,6 @@ export function removeBlock(blockId, root) {
|
|
|
693
482
|
return false;
|
|
694
483
|
}
|
|
695
484
|
}
|
|
696
|
-
// ---------------------------------------------------------------------------
|
|
697
|
-
// Hook installation
|
|
698
|
-
// ---------------------------------------------------------------------------
|
|
699
|
-
/**
|
|
700
|
-
* The feed-publish PreToolUse hook script (Python, mirroring 09-mailbox-inject.py).
|
|
701
|
-
* Embedded so it ships with the compiled CLI and can be installed to the
|
|
702
|
-
* CLI-writable user hooks dir without a separate file in the npm tarball.
|
|
703
|
-
*/
|
|
704
485
|
export const FEED_PUBLISH_HOOK_SCRIPT = `#!/usr/bin/env python3
|
|
705
486
|
"""Publish and clear open-block records for \`agents feed\`.
|
|
706
487
|
|
|
@@ -723,10 +504,6 @@ import socket
|
|
|
723
504
|
import tempfile
|
|
724
505
|
from datetime import datetime, timezone
|
|
725
506
|
|
|
726
|
-
# Notification subtypes that mean something is PENDING. Claude's idle_prompt is
|
|
727
|
-
# deliberately absent: it fires a minute after the turn ended with the operator
|
|
728
|
-
# idle, which is a finished turn, not a request -- publishing it put an
|
|
729
|
-
# Approve/Deny banner on a session that had already answered "pong" (PHNX-3999).
|
|
730
507
|
WAITING_NOTIFICATION_TYPES = {
|
|
731
508
|
"permission_prompt",
|
|
732
509
|
"elicitation_dialog",
|
|
@@ -736,10 +513,6 @@ CLEAR_EVENTS = {
|
|
|
736
513
|
"Stop",
|
|
737
514
|
"SessionEnd",
|
|
738
515
|
}
|
|
739
|
-
# Codex emits a PermissionRequest event (not Claude's Notification) when it
|
|
740
|
-
# blocks on an approval prompt. Claude never fires PermissionRequest, so the
|
|
741
|
-
# same script handles both: PermissionRequest maps to an approval-class block
|
|
742
|
-
# with a high cost-of-delay so 'agents feed --dispatch' pages it as urgent.
|
|
743
516
|
|
|
744
517
|
|
|
745
518
|
def read_json(path):
|
|
@@ -790,7 +563,6 @@ def main():
|
|
|
790
563
|
except Exception:
|
|
791
564
|
return
|
|
792
565
|
|
|
793
|
-
# Sub-agent gate.
|
|
794
566
|
if payload.get("agent_type"):
|
|
795
567
|
return
|
|
796
568
|
|
|
@@ -808,30 +580,16 @@ def main():
|
|
|
808
580
|
hook_event = payload.get("hook_event_name", "PreToolUse")
|
|
809
581
|
|
|
810
582
|
if hook_event in CLEAR_EVENTS:
|
|
811
|
-
# A declared block (\`agents feed post --blocked\`) is the agent explicitly
|
|
812
|
-
# saying it is stuck. Unlike a question/notification/approval block -- which
|
|
813
|
-
# tracks an in-flight harness prompt that a lifecycle event resolves -- a
|
|
814
|
-
# declared block stays open until it is actually ANSWERED. So while it is
|
|
815
|
-
# still UNANSWERED, Stop/SessionEnd/PostToolUse must never silently drop it:
|
|
816
|
-
# otherwise the needs-you record vanishes the moment the agent parks the block
|
|
817
|
-
# and its turn ends -- exactly when the owner still needs to see and answer it.
|
|
818
|
-
# Once it IS answered (an answered marker exists), it clears like any other
|
|
819
|
-
# block by falling through below -- which frees that marker too, so a later
|
|
820
|
-
# \`--blocked\` in the same session is not falsely locked as already-answered
|
|
821
|
-
# (recordAnswer creates the marker with O_EXCL).
|
|
822
583
|
try:
|
|
823
584
|
with open(target) as existing_file:
|
|
824
585
|
existing = json.load(existing_file)
|
|
825
586
|
answered = os.path.exists(os.path.join(answered_dir, f"{block_id}.json"))
|
|
587
|
+
|
|
588
|
+
# Ordinary lifecycle hooks cannot clear a declared block before it is answered.
|
|
826
589
|
if existing.get("kind") == "declared" and not answered:
|
|
827
590
|
return
|
|
828
591
|
except Exception:
|
|
829
592
|
pass
|
|
830
|
-
# A matcher-less PostToolUse clear (registered for Codex so an approved
|
|
831
|
-
# tool clears its approval card) must NOT wipe an open AskUserQuestion
|
|
832
|
-
# while an unrelated tool runs mid-question -- those are cleared only by
|
|
833
|
-
# the AskUserQuestion-matched PostToolUse. So on PostToolUse, keep a
|
|
834
|
-
# 'question' block; approval/notification blocks clear once the tool runs.
|
|
835
593
|
if hook_event == "PostToolUse":
|
|
836
594
|
try:
|
|
837
595
|
with open(target) as existing_file:
|
|
@@ -846,8 +604,6 @@ def main():
|
|
|
846
604
|
pass
|
|
847
605
|
except Exception:
|
|
848
606
|
pass
|
|
849
|
-
# Also clear the answered marker so a future question for this session
|
|
850
|
-
# is not permanently locked.
|
|
851
607
|
try:
|
|
852
608
|
os.unlink(os.path.join(answered_dir, f"{block_id}.json"))
|
|
853
609
|
except FileNotFoundError:
|
|
@@ -856,11 +612,6 @@ def main():
|
|
|
856
612
|
pass
|
|
857
613
|
return
|
|
858
614
|
|
|
859
|
-
# Terminal answers (human typed in the TUI) record an answered marker and
|
|
860
|
-
# remove the block file so the feed stops showing it within one poll cycle.
|
|
861
|
-
# The marker stays behind so a concurrent surface cannot double-answer.
|
|
862
|
-
# A resolution tombstone is written BEFORE unlink (matching TS recordAnswer)
|
|
863
|
-
# so a stale lifecycle re-read cannot resurrect this generation.
|
|
864
615
|
if hook_event == "UserPromptSubmit":
|
|
865
616
|
os.makedirs(answered_dir, exist_ok=True)
|
|
866
617
|
marker = os.path.join(answered_dir, f"{block_id}.json")
|
|
@@ -877,8 +628,6 @@ def main():
|
|
|
877
628
|
pass
|
|
878
629
|
except Exception:
|
|
879
630
|
pass
|
|
880
|
-
# Tombstone first, then drop the open-block view. A missing/corrupt
|
|
881
|
-
# block means there is nothing to resolve; fail open.
|
|
882
631
|
existing = read_json(target)
|
|
883
632
|
if isinstance(existing, dict):
|
|
884
633
|
generation = existing.get("generation") or existing.get("ts")
|
|
@@ -896,7 +645,6 @@ def main():
|
|
|
896
645
|
os.path.join(feed_dir, "resolutions", f"{block_id}.json"),
|
|
897
646
|
tombstone,
|
|
898
647
|
)
|
|
899
|
-
# Remove the visible block so the feed drops the answered question.
|
|
900
648
|
try:
|
|
901
649
|
os.unlink(target)
|
|
902
650
|
except FileNotFoundError:
|
|
@@ -911,10 +659,6 @@ def main():
|
|
|
911
659
|
notification_type = payload.get("notification_type", "")
|
|
912
660
|
if notification_type not in WAITING_NOTIFICATION_TYPES:
|
|
913
661
|
return
|
|
914
|
-
# Claude emits a generic permission notification after presenting an
|
|
915
|
-
# AskUserQuestion. Keep the structured questions and options already
|
|
916
|
-
# published for this session instead of replacing them with that less
|
|
917
|
-
# useful notification text.
|
|
918
662
|
try:
|
|
919
663
|
with open(target) as existing_file:
|
|
920
664
|
existing = json.load(existing_file)
|
|
@@ -932,12 +676,6 @@ def main():
|
|
|
932
676
|
}]
|
|
933
677
|
kind = "notification"
|
|
934
678
|
elif hook_event == "PermissionRequest":
|
|
935
|
-
# Codex approval prompt. The payload mirrors PreToolUse (tool_name,
|
|
936
|
-
# tool_input) but carries no questions -- Codex is asking to run a tool,
|
|
937
|
-
# not asking the operator a multiple-choice question. Publish it as a
|
|
938
|
-
# notification-kind approval block naming the tool so the feed and the
|
|
939
|
-
# phone notifier can surface it, and so AGI EXT can bridge
|
|
940
|
-
# it to a VS Code notification.
|
|
941
679
|
tool_name = payload.get("tool_name") or "a tool"
|
|
942
680
|
tool_input = payload.get("tool_input", {})
|
|
943
681
|
command = ""
|
|
@@ -985,7 +723,6 @@ def main():
|
|
|
985
723
|
return
|
|
986
724
|
kind = "question"
|
|
987
725
|
|
|
988
|
-
# Identity from env (set by agents-cli at spawn).
|
|
989
726
|
mailbox_id = os.path.basename(
|
|
990
727
|
os.environ.get("AGENTS_MAILBOX_DIR", "").rstrip("/")
|
|
991
728
|
) or session_id
|
|
@@ -999,8 +736,6 @@ def main():
|
|
|
999
736
|
if not isinstance(recent, list):
|
|
1000
737
|
recent = []
|
|
1001
738
|
recent.append(now_iso)
|
|
1002
|
-
# Keep enough history for rolling one-hour needy detection without unbounded
|
|
1003
|
-
# per-session files. The TypeScript reader applies the exact time window.
|
|
1004
739
|
recent = recent[-200:]
|
|
1005
740
|
write_json(stats_path, {
|
|
1006
741
|
"sessionId": session_id,
|
|
@@ -1026,8 +761,6 @@ def main():
|
|
|
1026
761
|
"host": host,
|
|
1027
762
|
"runtime": runtime,
|
|
1028
763
|
"ts": now_iso,
|
|
1029
|
-
# Write-time cursor so a new generation is not suppressed when
|
|
1030
|
-
# session.lastActivityMs is unresolvable (cloud / remote / index-lag).
|
|
1031
764
|
"sourceCursor": {"lastActivityMs": now_ms},
|
|
1032
765
|
"questions": normalized_questions,
|
|
1033
766
|
"kind": kind,
|
|
@@ -1037,20 +770,11 @@ def main():
|
|
|
1037
770
|
if notification_type:
|
|
1038
771
|
block["notificationType"] = notification_type
|
|
1039
772
|
|
|
1040
|
-
# A Codex PermissionRequest is a real approval gate: mark it approval-class
|
|
1041
|
-
# with a high cost-of-delay so 'agents feed --dispatch' classifies it urgent
|
|
1042
|
-
# (isPhoneUrgent gates on costOfDelay >= phoneNotifyThreshold, default
|
|
1043
|
-
# 'medium') and pages the phone. A plain 'deny' is the safe default.
|
|
1044
773
|
if codex_approval:
|
|
1045
774
|
block["blockClass"] = "approval"
|
|
1046
775
|
block["costOfDelay"] = "high"
|
|
1047
776
|
block["safeDefault"] = "deny"
|
|
1048
777
|
|
|
1049
|
-
# Optional multi-operator control metadata passed by the agent in the
|
|
1050
|
-
# AskUserQuestion tool_input. Defaults keep the existing behavior. A Codex
|
|
1051
|
-
# PermissionRequest carries tool ARGS in tool_input (command/path), not
|
|
1052
|
-
# operator controls, so it is excluded here -- its class/cost is stamped
|
|
1053
|
-
# above from codex_approval.
|
|
1054
778
|
controls = payload.get("tool_input", {}) if hook_event not in ("Notification", "PermissionRequest") else {}
|
|
1055
779
|
block_class = controls.get("blockClass") if isinstance(controls, dict) else None
|
|
1056
780
|
if block_class in ("approval", "decision"):
|
|
@@ -1071,8 +795,6 @@ def main():
|
|
|
1071
795
|
if cost in ("low", "medium", "high"):
|
|
1072
796
|
block["costOfDelay"] = cost
|
|
1073
797
|
|
|
1074
|
-
# Publishing a new question clears any stale answered marker from the
|
|
1075
|
-
# previous question in this session.
|
|
1076
798
|
try:
|
|
1077
799
|
os.unlink(os.path.join(answered_dir, f"{block_id}.json"))
|
|
1078
800
|
except FileNotFoundError:
|
|
@@ -1080,9 +802,6 @@ def main():
|
|
|
1080
802
|
except Exception:
|
|
1081
803
|
pass
|
|
1082
804
|
|
|
1083
|
-
# Python's expanduser() ignores HOME on Windows, while agents-cli honors a
|
|
1084
|
-
# HOME override on every platform. Use the same anchor so hooks and the CLI
|
|
1085
|
-
# always read/write one feed store (including temp-home and sandbox runs).
|
|
1086
805
|
os.makedirs(feed_dir, exist_ok=True)
|
|
1087
806
|
|
|
1088
807
|
fd, tmp = tempfile.mkstemp(dir=feed_dir, suffix=".tmp")
|
|
@@ -1101,14 +820,8 @@ if __name__ == "__main__":
|
|
|
1101
820
|
try:
|
|
1102
821
|
main()
|
|
1103
822
|
except Exception:
|
|
1104
|
-
pass
|
|
823
|
+
pass
|
|
1105
824
|
`;
|
|
1106
|
-
/**
|
|
1107
|
-
* Install the feed-publish hook script into the user hooks dir and add its
|
|
1108
|
-
* manifest entry to the user agents.yaml. The system repo is an auto-pulled,
|
|
1109
|
-
* read-only mirror, so runtime-managed hooks must never write there.
|
|
1110
|
-
* Idempotent -- skips if the script is already present and up to date.
|
|
1111
|
-
*/
|
|
1112
825
|
export function ensureFeedPublishHook(userAgentsDir = getUserAgentsDir()) {
|
|
1113
826
|
try {
|
|
1114
827
|
const hooksDir = path.join(userAgentsDir, 'hooks');
|
|
@@ -1136,9 +849,6 @@ export function ensureFeedPublishHook(userAgentsDir = getUserAgentsDir()) {
|
|
|
1136
849
|
script: '10-feed-publish.py',
|
|
1137
850
|
timeout: 5,
|
|
1138
851
|
},
|
|
1139
|
-
// idle_prompt is not matched: an idle reminder is a finished turn, not a
|
|
1140
|
-
// pending request (PHNX-3999). An installed agents.yaml that still carries
|
|
1141
|
-
// the old matcher is harmless -- the script drops the subtype itself.
|
|
1142
852
|
'feed-publish-notification': {
|
|
1143
853
|
agents: ['claude', 'codex'],
|
|
1144
854
|
events: ['Notification'],
|
|
@@ -1146,8 +856,6 @@ export function ensureFeedPublishHook(userAgentsDir = getUserAgentsDir()) {
|
|
|
1146
856
|
script: '10-feed-publish.py',
|
|
1147
857
|
timeout: 5,
|
|
1148
858
|
},
|
|
1149
|
-
// Codex-specific approval gate: Codex emits PermissionRequest (Claude does
|
|
1150
|
-
// not), so this hook is where a blocked Codex agent surfaces to the feed.
|
|
1151
859
|
'feed-publish-permission': {
|
|
1152
860
|
agents: ['claude', 'codex'],
|
|
1153
861
|
events: ['PermissionRequest'],
|
|
@@ -1161,15 +869,6 @@ export function ensureFeedPublishHook(userAgentsDir = getUserAgentsDir()) {
|
|
|
1161
869
|
script: '10-feed-publish.py',
|
|
1162
870
|
timeout: 5,
|
|
1163
871
|
},
|
|
1164
|
-
// Matcher-less PostToolUse clear: after Codex runs an approved tool, the
|
|
1165
|
-
// approval card is stale, so clear it. Codex-only on purpose -- Claude
|
|
1166
|
-
// never fires PermissionRequest, so it has no approval card to clear here,
|
|
1167
|
-
// and a matcher-less PostToolUse for Claude would (1) re-run the script on
|
|
1168
|
-
// every tool completion and (2) wipe Claude's notification-kind blocks
|
|
1169
|
-
// (permission_prompt/elicitation_dialog) the moment any later
|
|
1170
|
-
// tool runs, instead of letting them persist to Stop/SessionEnd like they
|
|
1171
|
-
// did before RUSH-2039. Registering it for codex alone keeps Claude's
|
|
1172
|
-
// card lifetime exactly as it was.
|
|
1173
872
|
'feed-clear-permission': {
|
|
1174
873
|
agents: ['codex'],
|
|
1175
874
|
events: ['PostToolUse'],
|
|
@@ -1191,15 +890,6 @@ export function ensureFeedPublishHook(userAgentsDir = getUserAgentsDir()) {
|
|
|
1191
890
|
}
|
|
1192
891
|
if (installed) {
|
|
1193
892
|
const tmpYaml = `${agentsYamlPath}.${process.pid}.tmp`;
|
|
1194
|
-
// `flowCollectionPadding: false` matches the committed formatting. The yaml
|
|
1195
|
-
// emitter defaults to padded flow sequences (`[ a, b ]`), but the tracked
|
|
1196
|
-
// `agents.yaml` uses `[a, b]`. Re-emitting a committed flow node (e.g. a
|
|
1197
|
-
// notify hook's `command: [agents, notify, "{message}"]`) with padding left
|
|
1198
|
-
// the git-backed `~/.agents` tree permanently dirty on this file, so
|
|
1199
|
-
// `agents repo pull` refused and seven boxes silently fell 37-52 commits
|
|
1200
|
-
// behind fleet-wide (RUSH-2505). Preserve each node's committed block/flow
|
|
1201
|
-
// style — do NOT force `collectionStyle`, which would flatten a committed
|
|
1202
|
-
// flow hook to a block list and reintroduce a diff.
|
|
1203
893
|
fs.writeFileSync(tmpYaml, stringifyDoc(yamlDoc));
|
|
1204
894
|
fs.renameSync(tmpYaml, agentsYamlPath);
|
|
1205
895
|
}
|