@phnx-labs/agents-cli 1.22.34 → 1.22.37
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 +672 -2
- package/README.md +82 -35
- package/dist/bin/agents +0 -0
- package/dist/bootstrap.d.ts +15 -0
- package/dist/bootstrap.js +1211 -0
- package/dist/commands/accounts.d.ts +4 -11
- package/dist/commands/accounts.js +159 -27
- package/dist/commands/attach.js +17 -4
- package/dist/commands/audit.d.ts +8 -8
- package/dist/commands/audit.js +57 -47
- package/dist/commands/browser.js +15 -11
- package/dist/commands/cloud.js +1 -1
- package/dist/commands/commands.js +0 -11
- package/dist/commands/computer-actions.js +33 -0
- package/dist/commands/computer-sessions-picker.d.ts +21 -0
- package/dist/commands/computer-sessions-picker.js +141 -0
- package/dist/commands/computer.d.ts +16 -0
- package/dist/commands/computer.js +37 -0
- package/dist/commands/config.d.ts +17 -0
- package/dist/commands/config.js +401 -0
- package/dist/commands/cp.d.ts +84 -0
- package/dist/commands/cp.js +231 -0
- package/dist/commands/daemon.js +243 -14
- package/dist/commands/detach-core.d.ts +1 -1
- package/dist/commands/detach-core.js +12 -2
- package/dist/commands/detach.js +1 -1
- package/dist/commands/doctor.js +64 -5
- package/dist/commands/events.d.ts +24 -12
- package/dist/commands/events.js +144 -28
- package/dist/commands/exec.js +85 -41
- package/dist/commands/feed.d.ts +1 -1
- package/dist/commands/feed.js +16 -8
- package/dist/commands/focus.d.ts +33 -1
- package/dist/commands/focus.js +177 -17
- package/dist/commands/funnel.d.ts +1 -1
- package/dist/commands/go.js +9 -8
- package/dist/commands/harness-wizard.d.ts +1 -0
- package/dist/commands/harness-wizard.js +18 -20
- package/dist/commands/harness.d.ts +2 -0
- package/dist/commands/harness.js +59 -26
- package/dist/commands/hooks.js +0 -11
- package/dist/commands/inspect.d.ts +94 -1
- package/dist/commands/inspect.js +866 -40
- package/dist/commands/lease.d.ts +4 -4
- package/dist/commands/lease.js +6 -6
- package/dist/commands/login.js +0 -13
- package/dist/commands/logs.d.ts +2 -2
- package/dist/commands/logs.js +2 -2
- package/dist/commands/mcp.js +7 -2
- package/dist/commands/memory.js +7 -2
- package/dist/commands/message.d.ts +1 -1
- package/dist/commands/message.js +37 -6
- package/dist/commands/models.js +4 -0
- package/dist/commands/monitors.d.ts +0 -1
- package/dist/commands/monitors.js +199 -16
- package/dist/commands/open.d.ts +18 -0
- package/dist/commands/open.js +57 -0
- package/dist/commands/packages.js +2 -107
- package/dist/commands/plugins.js +6 -3
- package/dist/commands/profiles.d.ts +1 -0
- package/dist/commands/profiles.js +16 -160
- package/dist/commands/projects.d.ts +28 -0
- package/dist/commands/projects.js +125 -5
- package/dist/commands/reconnect.js +9 -3
- package/dist/commands/repo.js +42 -1
- package/dist/commands/resource-view.d.ts +17 -0
- package/dist/commands/resource-view.js +36 -14
- package/dist/commands/resume.js +9 -2
- package/dist/commands/routines.d.ts +0 -2
- package/dist/commands/routines.js +473 -289
- package/dist/commands/secrets.js +52 -9
- package/dist/commands/sessions-export.d.ts +47 -0
- package/dist/commands/sessions-export.js +116 -6
- package/dist/commands/sessions-import.d.ts +17 -0
- package/dist/commands/sessions-import.js +114 -6
- package/dist/commands/sessions-migrate.d.ts +27 -0
- package/dist/commands/sessions-migrate.js +50 -9
- package/dist/commands/sessions-picker.js +23 -4
- package/dist/commands/sessions-resume.d.ts +5 -3
- package/dist/commands/sessions-resume.js +30 -8
- package/dist/commands/sessions-watch.d.ts +2 -0
- package/dist/commands/sessions-watch.js +53 -0
- package/dist/commands/sessions.d.ts +66 -3
- package/dist/commands/sessions.js +298 -47
- package/dist/commands/set.d.ts +1 -1
- package/dist/commands/set.js +2 -2
- package/dist/commands/setup-browser.js +2 -2
- package/dist/commands/setup-mine.js +0 -1
- package/dist/commands/setup-preferences.js +1 -1
- package/dist/commands/setup-share.js +34 -4
- package/dist/commands/setup.d.ts +5 -0
- package/dist/commands/setup.js +26 -0
- package/dist/commands/share.d.ts +85 -0
- package/dist/commands/share.js +379 -8
- package/dist/commands/skills.js +0 -11
- package/dist/commands/snapshot.js +1 -1
- package/dist/commands/ssh.d.ts +18 -0
- package/dist/commands/ssh.js +549 -210
- package/dist/commands/sync.d.ts +5 -0
- package/dist/commands/sync.js +212 -32
- package/dist/commands/teams.d.ts +13 -0
- package/dist/commands/teams.js +187 -30
- package/dist/commands/tickets.d.ts +2 -0
- package/dist/commands/tickets.js +43 -0
- package/dist/commands/update.js +2 -4
- package/dist/commands/usage.js +5 -3
- package/dist/commands/versions.js +11 -5
- package/dist/commands/view.js +15 -7
- package/dist/commands/webhook.d.ts +2 -2
- package/dist/commands/webhook.js +7 -7
- package/dist/index.d.ts +18 -2
- package/dist/index.js +53 -1264
- package/dist/lib/account-catalog.d.ts +18 -0
- package/dist/lib/account-catalog.js +38 -0
- package/dist/lib/account-provider-registry.d.ts +18 -0
- package/dist/lib/account-provider-registry.js +59 -0
- package/dist/lib/account-registry.d.ts +40 -0
- package/dist/lib/account-registry.js +239 -0
- package/dist/lib/account-schema.d.ts +44 -0
- package/dist/lib/account-schema.js +91 -0
- package/dist/lib/account-state-service.d.ts +21 -0
- package/dist/lib/account-state-service.js +60 -0
- package/dist/lib/activity.d.ts +1 -1
- package/dist/lib/activity.js +8 -1
- package/dist/lib/add-dir.d.ts +80 -0
- package/dist/lib/add-dir.js +241 -0
- package/dist/lib/agent-cli-commands.d.ts +11 -0
- package/dist/lib/agent-cli-commands.js +30 -0
- package/dist/lib/agents.js +44 -36
- package/dist/lib/answer-router.js +1 -1
- package/dist/lib/audit/log.d.ts +10 -27
- package/dist/lib/audit/log.js +20 -33
- package/dist/lib/auth-health.d.ts +9 -2
- package/dist/lib/auth-health.js +42 -9
- package/dist/lib/auto-pull-worker.js +7 -3
- package/dist/lib/auto-pull.d.ts +44 -3
- package/dist/lib/auto-pull.js +88 -5
- package/dist/lib/binary-shadow.d.ts +28 -0
- package/dist/lib/binary-shadow.js +121 -0
- package/dist/lib/brand.js +9 -3
- package/dist/lib/browser/ipc.d.ts +30 -0
- package/dist/lib/browser/ipc.js +81 -4
- package/dist/lib/browser/profiles.d.ts +3 -2
- package/dist/lib/browser/profiles.js +65 -22
- package/dist/lib/browser/service.d.ts +4 -0
- package/dist/lib/browser/service.js +30 -3
- package/dist/lib/browser/sessions-list.d.ts +22 -2
- package/dist/lib/browser/sessions-list.js +54 -6
- package/dist/lib/browser/stream.d.ts +2 -0
- package/dist/lib/browser/stream.js +1 -0
- package/dist/lib/browser/types.d.ts +19 -0
- package/dist/lib/byok-usage.d.ts +9 -2
- package/dist/lib/byok-usage.js +133 -31
- package/dist/lib/cli-entry.d.ts +11 -0
- package/dist/lib/cli-entry.js +46 -0
- package/dist/lib/cloud/host.d.ts +1 -1
- package/dist/lib/cloud/host.js +2 -2
- package/dist/lib/cloud/registry.js +1 -1
- package/dist/lib/cloud/types.d.ts +1 -1
- package/dist/lib/codex-policy.d.ts +9 -1
- package/dist/lib/codex-policy.js +17 -2
- package/dist/lib/commands.d.ts +2 -0
- package/dist/lib/commands.js +2 -0
- package/dist/lib/computer/sessions-list.d.ts +150 -0
- package/dist/lib/computer/sessions-list.js +363 -0
- package/dist/lib/config-keys.d.ts +86 -0
- package/dist/lib/config-keys.js +193 -0
- package/dist/lib/config-machine-keys.d.ts +12 -0
- package/dist/lib/config-machine-keys.js +17 -0
- package/dist/lib/config-transfer.js +3 -4
- package/dist/lib/crabbox/cli.d.ts +2 -2
- package/dist/lib/crabbox/cli.js +3 -3
- package/dist/lib/daemon-health.d.ts +22 -0
- package/dist/lib/daemon-health.js +33 -3
- package/dist/lib/daemon-services.d.ts +50 -0
- package/dist/lib/daemon-services.js +147 -0
- package/dist/lib/daemon-ticks.d.ts +35 -66
- package/dist/lib/daemon-ticks.js +77 -159
- package/dist/lib/daemon.d.ts +72 -4
- package/dist/lib/daemon.js +792 -202
- package/dist/lib/deeplink/register.d.ts +49 -0
- package/dist/lib/deeplink/register.js +253 -0
- package/dist/lib/deeplink/url.d.ts +34 -0
- package/dist/lib/deeplink/url.js +78 -0
- package/dist/lib/device-config.d.ts +124 -29
- package/dist/lib/device-config.js +346 -141
- package/dist/lib/devices/config-migration.d.ts +42 -0
- package/dist/lib/devices/config-migration.js +203 -0
- package/dist/lib/devices/connect.js +14 -7
- package/dist/lib/devices/doctor-findings.d.ts +4 -1
- package/dist/lib/devices/doctor-findings.js +20 -1
- package/dist/lib/devices/harness-inventory.d.ts +11 -2
- package/dist/lib/devices/harness-inventory.js +0 -0
- package/dist/lib/devices/health.d.ts +1 -1
- package/dist/lib/devices/health.js +1 -1
- package/dist/lib/devices/pending.d.ts +22 -1
- package/dist/lib/devices/pending.js +67 -2
- package/dist/lib/devices/registry.d.ts +0 -25
- package/dist/lib/devices/registry.js +2 -83
- package/dist/lib/devices/resolve-profile.d.ts +20 -0
- package/dist/lib/devices/resolve-profile.js +44 -0
- package/dist/lib/devices/rollout-verify.d.ts +101 -0
- package/dist/lib/devices/rollout-verify.js +193 -0
- package/dist/lib/devices/ssh-config.js +10 -6
- package/dist/lib/event-families.d.ts +28 -0
- package/dist/lib/event-families.js +159 -0
- package/dist/lib/event-stream.d.ts +9 -1
- package/dist/lib/event-stream.js +26 -9
- package/dist/lib/events.d.ts +9 -1
- package/dist/lib/events.js +21 -6
- package/dist/lib/exec.d.ts +30 -0
- package/dist/lib/exec.js +220 -122
- package/dist/lib/feed-broadcast.d.ts +25 -0
- package/dist/lib/feed-broadcast.js +33 -0
- package/dist/lib/feed.d.ts +1 -1
- package/dist/lib/feed.js +12 -2
- package/dist/lib/fleet/capture.js +15 -0
- package/dist/lib/fleet/manifest.js +9 -0
- package/dist/lib/fleet/types.d.ts +9 -0
- package/dist/lib/fleet-status.js +10 -8
- package/dist/lib/git.d.ts +20 -6
- package/dist/lib/git.js +121 -17
- package/dist/lib/hosts/dispatch.d.ts +8 -3
- package/dist/lib/hosts/dispatch.js +29 -3
- package/dist/lib/hosts/logs.d.ts +2 -2
- package/dist/lib/hosts/logs.js +2 -2
- package/dist/lib/hosts/option.js +1 -1
- package/dist/lib/hosts/passthrough.d.ts +2 -3
- package/dist/lib/hosts/passthrough.js +10 -24
- package/dist/lib/hosts/progress.js +2 -2
- package/dist/lib/hosts/providers/devices.d.ts +3 -3
- package/dist/lib/hosts/providers/devices.js +18 -12
- package/dist/lib/hosts/ready.d.ts +5 -1
- package/dist/lib/hosts/ready.js +9 -3
- package/dist/lib/hosts/reconcile.d.ts +2 -2
- package/dist/lib/hosts/reconcile.js +2 -2
- package/dist/lib/hosts/registry.js +14 -9
- package/dist/lib/hosts/remote-cmd.js +1 -1
- package/dist/lib/hosts/remote-os.d.ts +9 -6
- package/dist/lib/hosts/remote-os.js +13 -6
- package/dist/lib/hosts/routing-flag.d.ts +23 -0
- package/dist/lib/hosts/routing-flag.js +41 -0
- package/dist/lib/hosts/run-target.js +1 -1
- package/dist/lib/hosts/session-index.js +1 -1
- package/dist/lib/hosts/tasks.d.ts +6 -6
- package/dist/lib/hosts/tasks.js +4 -4
- package/dist/lib/hosts/types.js +1 -2
- package/dist/lib/installations/resolve.js +2 -8
- package/dist/lib/isolation-boundary-report.js +0 -1
- package/dist/lib/linear-cache.d.ts +7 -0
- package/dist/lib/linear-cache.js +31 -4
- package/dist/lib/linear-project-counts.d.ts +1 -1
- package/dist/lib/linear-project-counts.js +2 -3
- package/dist/lib/linear-projects.js +1 -1
- package/dist/lib/loop.d.ts +2 -2
- package/dist/lib/loop.js +1 -1
- package/dist/lib/mailbox-target.d.ts +1 -1
- package/dist/lib/mailbox-target.js +1 -1
- package/dist/lib/manifest.js +7 -4
- package/dist/lib/menubar/MenubarHelper.app/Contents/CodeResources +0 -0
- package/dist/lib/menubar/MenubarHelper.app/Contents/MacOS/MenubarHelper +0 -0
- package/dist/lib/menubar/snapshot.d.ts +3 -2
- package/dist/lib/menubar/snapshot.js +6 -2
- package/dist/lib/migrate-fold.d.ts +33 -0
- package/dist/lib/migrate-fold.js +130 -0
- package/dist/lib/migrate.d.ts +34 -34
- package/dist/lib/migrate.js +106 -128
- package/dist/lib/model-tier-overrides.d.ts +1 -1
- package/dist/lib/model-tier-overrides.js +15 -2
- package/dist/lib/monitors/config.d.ts +17 -3
- package/dist/lib/monitors/config.js +52 -18
- package/dist/lib/monitors/engine.d.ts +32 -1
- package/dist/lib/monitors/engine.js +94 -11
- package/dist/lib/monitors/fingerprint.d.ts +46 -0
- package/dist/lib/monitors/fingerprint.js +100 -0
- package/dist/lib/monitors/remote.d.ts +47 -0
- package/dist/lib/monitors/remote.js +81 -0
- package/dist/lib/monitors/state.d.ts +39 -0
- package/dist/lib/monitors/state.js +56 -0
- package/dist/lib/onepassword.d.ts +17 -0
- package/dist/lib/onepassword.js +52 -22
- package/dist/lib/open-url.js +1 -1
- package/dist/lib/picker.d.ts +14 -2
- package/dist/lib/picker.js +35 -13
- package/dist/lib/placement.d.ts +1 -1
- package/dist/lib/placement.js +1 -1
- package/dist/lib/pr-land-detach.d.ts +32 -0
- package/dist/lib/pr-land-detach.js +79 -0
- package/dist/lib/profiles-presets.js +13 -0
- package/dist/lib/profiles.d.ts +2 -0
- package/dist/lib/profiles.js +44 -1
- package/dist/lib/project-focus.d.ts +1 -1
- package/dist/lib/project-focus.js +1 -1
- package/dist/lib/project-key.d.ts +17 -0
- package/dist/lib/project-key.js +26 -0
- package/dist/lib/project-probe.d.ts +4 -1
- package/dist/lib/project-probe.js +5 -4
- package/dist/lib/project-resources.js +2 -18
- package/dist/lib/project-root.d.ts +16 -0
- package/dist/lib/project-root.js +20 -2
- package/dist/lib/projects.d.ts +20 -1
- package/dist/lib/projects.js +78 -1
- package/dist/lib/refresh-coordinator.d.ts +24 -0
- package/dist/lib/refresh-coordinator.js +52 -0
- package/dist/lib/registry.d.ts +2 -2
- package/dist/lib/registry.js +1 -1
- package/dist/lib/resource-aliases.d.ts +13 -0
- package/dist/lib/resource-aliases.js +26 -0
- package/dist/lib/resources/types.d.ts +1 -1
- package/dist/lib/resources.d.ts +16 -0
- package/dist/lib/resources.js +66 -10
- package/dist/lib/rotate.d.ts +3 -4
- package/dist/lib/rotate.js +4 -5
- package/dist/lib/routine-activation.d.ts +22 -2
- package/dist/lib/routine-activation.js +63 -16
- package/dist/lib/routine-context.d.ts +9 -2
- package/dist/lib/routine-context.js +21 -6
- package/dist/lib/routines-project.d.ts +58 -48
- package/dist/lib/routines-project.js +190 -159
- package/dist/lib/routines.d.ts +41 -6
- package/dist/lib/routines.js +92 -34
- package/dist/lib/run-defaults.d.ts +5 -0
- package/dist/lib/run-defaults.js +11 -1
- package/dist/lib/runner.d.ts +10 -8
- package/dist/lib/runner.js +122 -39
- package/dist/lib/secrets/Agents CLI.app/Contents/CodeResources +0 -0
- package/dist/lib/secrets/Agents CLI.app/Contents/MacOS/Agents CLI +0 -0
- package/dist/lib/secrets/agent.d.ts +10 -3
- package/dist/lib/secrets/agent.js +43 -8
- package/dist/lib/secrets/bundles.d.ts +1 -0
- package/dist/lib/secrets/bundles.js +92 -80
- package/dist/lib/secrets/index.js +32 -9
- package/dist/lib/secrets/install-helper.d.ts +4 -4
- package/dist/lib/secrets/install-helper.js +4 -4
- package/dist/lib/secrets/push.d.ts +40 -6
- package/dist/lib/secrets/push.js +58 -11
- package/dist/lib/secrets/read-backoff.d.ts +1 -1
- package/dist/lib/secrets/read-backoff.js +1 -1
- package/dist/lib/secrets/remote.d.ts +24 -0
- package/dist/lib/secrets/remote.js +54 -4
- package/dist/lib/self-update.d.ts +108 -0
- package/dist/lib/self-update.js +276 -1
- package/dist/lib/session/active.d.ts +89 -5
- package/dist/lib/session/active.js +165 -10
- package/dist/lib/session/actor-sidecar.d.ts +1 -1
- package/dist/lib/session/actor-sidecar.js +2 -1
- package/dist/lib/session/db.d.ts +176 -2
- package/dist/lib/session/db.js +484 -17
- package/dist/lib/session/discover.js +27 -4
- package/dist/lib/session/hook-sessions.js +2 -2
- package/dist/lib/session/host-link.d.ts +2 -2
- package/dist/lib/session/host-link.js +2 -2
- package/dist/lib/session/pid-registry.d.ts +21 -0
- package/dist/lib/session/pid-registry.js +57 -0
- package/dist/lib/session/remote-active.js +15 -1
- package/dist/lib/session/remote.js +2 -2
- package/dist/lib/session/session-cache.d.ts +14 -7
- package/dist/lib/session/session-cache.js +51 -9
- package/dist/lib/session/state.d.ts +2 -2
- package/dist/lib/session/state.js +1 -1
- package/dist/lib/session/sync/config.d.ts +10 -10
- package/dist/lib/session/sync/config.js +10 -10
- package/dist/lib/session/sync/r2.d.ts +34 -0
- package/dist/lib/session/sync/r2.js +123 -0
- package/dist/lib/session/throughput.d.ts +1 -1
- package/dist/lib/session/throughput.js +1 -1
- package/dist/lib/session/types.d.ts +23 -1
- package/dist/lib/session/types.js +15 -0
- package/dist/lib/session/viewing-in.d.ts +1 -1
- package/dist/lib/session/viewing-in.js +1 -1
- package/dist/lib/session/watch.d.ts +101 -0
- package/dist/lib/session/watch.js +242 -0
- package/dist/lib/share/config.d.ts +4 -0
- package/dist/lib/share/config.js +1 -0
- package/dist/lib/share/delete.d.ts +93 -0
- package/dist/lib/share/delete.js +127 -0
- package/dist/lib/share/provision.d.ts +38 -0
- package/dist/lib/share/provision.js +50 -0
- package/dist/lib/share/publish.d.ts +40 -1
- package/dist/lib/share/publish.js +116 -3
- package/dist/lib/share/worker-template.js +71 -6
- package/dist/lib/shims.d.ts +17 -3
- package/dist/lib/shims.js +136 -27
- package/dist/lib/signin-badge.js +3 -2
- package/dist/lib/skills.js +2 -0
- package/dist/lib/smart-launch.d.ts +8 -8
- package/dist/lib/smart-launch.js +80 -59
- package/dist/lib/ssh-exec.d.ts +1 -1
- package/dist/lib/ssh-exec.js +1 -1
- package/dist/lib/staleness/prune.d.ts +88 -0
- package/dist/lib/staleness/prune.js +69 -0
- package/dist/lib/staleness/registry.d.ts +1 -1
- package/dist/lib/staleness/writers/commands.js +34 -2
- package/dist/lib/staleness/writers/hooks.js +16 -0
- package/dist/lib/staleness/writers/kinds.d.ts +6 -0
- package/dist/lib/staleness/writers/skills.js +19 -0
- package/dist/lib/staleness/writers/subagents.d.ts +2 -3
- package/dist/lib/staleness/writers/subagents.js +0 -4
- package/dist/lib/staleness/writers/types.d.ts +32 -0
- package/dist/lib/startup/command-registry.d.ts +6 -12
- package/dist/lib/startup/command-registry.js +14 -31
- package/dist/lib/startup/dev-build.d.ts +10 -0
- package/dist/lib/startup/dev-build.js +13 -1
- package/dist/lib/startup/spellcheck.d.ts +18 -0
- package/dist/lib/startup/spellcheck.js +45 -0
- package/dist/lib/state.d.ts +36 -9
- package/dist/lib/state.js +96 -46
- package/dist/lib/subagents-registry.d.ts +0 -7
- package/dist/lib/subagents-registry.js +38 -65
- package/dist/lib/subagents.d.ts +0 -33
- package/dist/lib/subagents.js +0 -75
- package/dist/lib/sync-umbrella.js +1 -1
- package/dist/lib/teams/agents.d.ts +41 -1
- package/dist/lib/teams/agents.js +187 -9
- package/dist/lib/teams/api.d.ts +11 -1
- package/dist/lib/teams/api.js +11 -2
- package/dist/lib/teams/delivery.d.ts +41 -0
- package/dist/lib/teams/delivery.js +60 -0
- package/dist/lib/teams/registry.d.ts +14 -0
- package/dist/lib/teams/registry.js +51 -1
- package/dist/lib/teams/remoteWorktree.d.ts +19 -0
- package/dist/lib/teams/remoteWorktree.js +29 -0
- package/dist/lib/teams/scheduler.d.ts +1 -1
- package/dist/lib/teams/scheduler.js +1 -1
- package/dist/lib/teams/worktree.d.ts +24 -0
- package/dist/lib/teams/worktree.js +42 -0
- package/dist/lib/terminal/backends/vscodium-agent.d.ts +10 -1
- package/dist/lib/terminal/backends/vscodium-agent.js +16 -5
- package/dist/lib/terminal/engine.d.ts +4 -0
- package/dist/lib/terminal/engine.js +8 -2
- package/dist/lib/terminal/types.d.ts +21 -2
- package/dist/lib/testdata/refresh-coordinator-worker.d.ts +1 -0
- package/dist/lib/testdata/refresh-coordinator-worker.js +23 -0
- package/dist/lib/tickets/list.d.ts +53 -0
- package/dist/lib/tickets/list.js +153 -0
- package/dist/lib/tmux/orphan-reap.d.ts +320 -0
- package/dist/lib/tmux/orphan-reap.js +644 -0
- package/dist/lib/tmux/session.d.ts +68 -3
- package/dist/lib/tmux/session.js +95 -5
- package/dist/lib/triggers/handlers.d.ts +20 -0
- package/dist/lib/triggers/handlers.js +6 -1
- package/dist/lib/types.d.ts +46 -34
- package/dist/lib/usage-fleet.d.ts +32 -0
- package/dist/lib/usage-fleet.js +125 -0
- package/dist/lib/usage-refresh.d.ts +3 -3
- package/dist/lib/usage-refresh.js +19 -16
- package/dist/lib/usage.d.ts +51 -47
- package/dist/lib/usage.js +145 -153
- package/dist/lib/version-duplicates.js +2 -2
- package/dist/lib/versions.d.ts +56 -13
- package/dist/lib/versions.js +195 -45
- package/dist/lib/watchdog/log.d.ts +1 -1
- package/dist/lib/watchdog/log.js +3 -3
- package/dist/lib/watchdog/rotate.d.ts +6 -6
- package/dist/lib/watchdog/rotate.js +6 -6
- package/dist/lib/workflows.d.ts +1 -1
- package/dist/lib/yaml-io.d.ts +47 -0
- package/dist/lib/yaml-io.js +55 -0
- package/package.json +2 -1
- package/scripts/install-helper.js +2 -2
- package/scripts/postinstall.js +23 -20
- package/dist/commands/defaults.d.ts +0 -7
- package/dist/commands/defaults.js +0 -107
- package/dist/commands/export.d.ts +0 -11
- package/dist/commands/export.js +0 -215
- package/dist/commands/helper.d.ts +0 -12
- package/dist/commands/helper.js +0 -87
- package/dist/commands/hosts.d.ts +0 -11
- package/dist/commands/hosts.js +0 -330
- package/dist/commands/lock.d.ts +0 -12
- package/dist/commands/lock.js +0 -70
- package/dist/commands/pull.d.ts +0 -17
- package/dist/commands/pull.js +0 -39
- package/dist/commands/push.d.ts +0 -14
- package/dist/commands/push.js +0 -30
- package/dist/commands/wallet.d.ts +0 -20
- package/dist/commands/wallet.js +0 -216
- package/dist/commands/worktree.d.ts +0 -19
- package/dist/commands/worktree.js +0 -272
- package/dist/lib/account-labels.d.ts +0 -24
- package/dist/lib/account-labels.js +0 -72
- package/dist/lib/auto-dispatch-linear.d.ts +0 -18
- package/dist/lib/auto-dispatch-linear.js +0 -107
- package/dist/lib/auto-dispatch-provider.d.ts +0 -10
- package/dist/lib/auto-dispatch-provider.js +0 -30
- package/dist/lib/auto-dispatch.d.ts +0 -93
- package/dist/lib/auto-dispatch.js +0 -128
- package/dist/lib/export.d.ts +0 -72
- package/dist/lib/export.js +0 -269
- package/dist/lib/lock.d.ts +0 -93
- package/dist/lib/lock.js +0 -207
- package/dist/lib/wallet/index.d.ts +0 -78
- package/dist/lib/wallet/index.js +0 -253
package/dist/lib/wallet/index.js
DELETED
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wallet: device-local credit-card vault.
|
|
3
|
-
*
|
|
4
|
-
* Two-tier storage so listing the wallet doesn't pop Touch ID, but reading
|
|
5
|
-
* a card always does:
|
|
6
|
-
*
|
|
7
|
-
* Card metadata (id, nickname, brand, last4, expiry, created_at, kind)
|
|
8
|
-
* -> ~/.agents/wallet/cards.json, mode 0600
|
|
9
|
-
* -> Display-only data, equivalent of Apple Wallet's "card art" tier.
|
|
10
|
-
*
|
|
11
|
-
* Card secret (PAN, CVC, cardholder)
|
|
12
|
-
* -> Keychain item `agents-cli.secrets.wallet.<id>` (JSON-encoded)
|
|
13
|
-
* -> Routed through the signed helper, so the OS gates decryption with
|
|
14
|
-
* Touch ID + biometryCurrentSet. Re-enrolling Touch ID invalidates
|
|
15
|
-
* the item, matching Apple Pay's AR-value rotation behavior.
|
|
16
|
-
*
|
|
17
|
-
* Not Apple Pay: we store a real PAN, not a network DPAN, and we do not
|
|
18
|
-
* generate per-transaction cryptograms. Callers must surface this clearly.
|
|
19
|
-
*/
|
|
20
|
-
import * as fs from 'fs';
|
|
21
|
-
import * as os from 'os';
|
|
22
|
-
import * as path from 'path';
|
|
23
|
-
import * as crypto from 'crypto';
|
|
24
|
-
import { deleteKeychainToken, getKeychainToken, secretsKeychainItem, setKeychainToken, } from '../secrets/index.js';
|
|
25
|
-
const WALLET_BUNDLE = 'wallet';
|
|
26
|
-
const DEFAULT_INDEX_DIR = path.join(os.homedir(), '.agents', 'wallet');
|
|
27
|
-
const DEFAULT_INDEX_PATH = path.join(DEFAULT_INDEX_DIR, 'cards.json');
|
|
28
|
-
let indexPathOverride = null;
|
|
29
|
-
function indexPath() {
|
|
30
|
-
return indexPathOverride ?? DEFAULT_INDEX_PATH;
|
|
31
|
-
}
|
|
32
|
-
function indexDir() {
|
|
33
|
-
return path.dirname(indexPath());
|
|
34
|
-
}
|
|
35
|
-
/** Test seam: override the index path. Returns the previous override (or null). */
|
|
36
|
-
export function _setIndexPathForTest(p) {
|
|
37
|
-
const prev = indexPathOverride;
|
|
38
|
-
indexPathOverride = p;
|
|
39
|
-
return prev;
|
|
40
|
-
}
|
|
41
|
-
/** Compute the Luhn checksum and verify a candidate PAN. */
|
|
42
|
-
export function isValidLuhn(pan) {
|
|
43
|
-
const digits = pan.replace(/\D/g, '');
|
|
44
|
-
if (digits.length < 12 || digits.length > 19)
|
|
45
|
-
return false;
|
|
46
|
-
let sum = 0;
|
|
47
|
-
let alt = false;
|
|
48
|
-
for (let i = digits.length - 1; i >= 0; i--) {
|
|
49
|
-
let n = digits.charCodeAt(i) - 48;
|
|
50
|
-
if (alt) {
|
|
51
|
-
n *= 2;
|
|
52
|
-
if (n > 9)
|
|
53
|
-
n -= 9;
|
|
54
|
-
}
|
|
55
|
-
sum += n;
|
|
56
|
-
alt = !alt;
|
|
57
|
-
}
|
|
58
|
-
return sum % 10 === 0;
|
|
59
|
-
}
|
|
60
|
-
/** Detect card brand from the BIN (first 6 digits). */
|
|
61
|
-
export function detectBrand(pan) {
|
|
62
|
-
const d = pan.replace(/\D/g, '');
|
|
63
|
-
if (/^4/.test(d))
|
|
64
|
-
return 'visa';
|
|
65
|
-
if (/^(5[1-5]|2[2-7])/.test(d))
|
|
66
|
-
return 'mastercard';
|
|
67
|
-
if (/^3[47]/.test(d))
|
|
68
|
-
return 'amex';
|
|
69
|
-
if (/^6(011|5|4[4-9])/.test(d))
|
|
70
|
-
return 'discover';
|
|
71
|
-
if (/^3(0[0-5]|[689])/.test(d))
|
|
72
|
-
return 'diners';
|
|
73
|
-
if (/^35(2[89]|[3-8])/.test(d))
|
|
74
|
-
return 'jcb';
|
|
75
|
-
if (/^(62|81)/.test(d))
|
|
76
|
-
return 'unionpay';
|
|
77
|
-
return 'unknown';
|
|
78
|
-
}
|
|
79
|
-
function normalizeMonth(mm) {
|
|
80
|
-
const n = Number(mm);
|
|
81
|
-
if (!Number.isInteger(n) || n < 1 || n > 12) {
|
|
82
|
-
throw new Error(`Invalid expiration month: ${mm}`);
|
|
83
|
-
}
|
|
84
|
-
return n.toString().padStart(2, '0');
|
|
85
|
-
}
|
|
86
|
-
function normalizeYear(yy) {
|
|
87
|
-
const d = yy.replace(/\D/g, '');
|
|
88
|
-
if (d.length === 2)
|
|
89
|
-
return '20' + d;
|
|
90
|
-
if (d.length === 4) {
|
|
91
|
-
const n = Number(d);
|
|
92
|
-
if (n < 2000 || n > 2100)
|
|
93
|
-
throw new Error(`Invalid expiration year: ${yy}`);
|
|
94
|
-
return d;
|
|
95
|
-
}
|
|
96
|
-
throw new Error(`Invalid expiration year: ${yy}`);
|
|
97
|
-
}
|
|
98
|
-
function ensureIndexDir() {
|
|
99
|
-
fs.mkdirSync(indexDir(), { recursive: true, mode: 0o700 });
|
|
100
|
-
}
|
|
101
|
-
/** Atomically read the index file. Returns [] when missing. */
|
|
102
|
-
export function readIndex() {
|
|
103
|
-
const p = indexPath();
|
|
104
|
-
if (!fs.existsSync(p))
|
|
105
|
-
return [];
|
|
106
|
-
const raw = fs.readFileSync(p, 'utf-8');
|
|
107
|
-
if (!raw.trim())
|
|
108
|
-
return [];
|
|
109
|
-
const parsed = JSON.parse(raw);
|
|
110
|
-
if (!Array.isArray(parsed)) {
|
|
111
|
-
throw new Error(`Wallet index at ${p} is not an array.`);
|
|
112
|
-
}
|
|
113
|
-
return parsed;
|
|
114
|
-
}
|
|
115
|
-
/** Atomically write the index file via tmp + rename. */
|
|
116
|
-
function writeIndex(cards) {
|
|
117
|
-
ensureIndexDir();
|
|
118
|
-
const p = indexPath();
|
|
119
|
-
const tmp = p + '.tmp.' + process.pid;
|
|
120
|
-
fs.writeFileSync(tmp, JSON.stringify(cards, null, 2), { mode: 0o600 });
|
|
121
|
-
fs.renameSync(tmp, indexPath());
|
|
122
|
-
}
|
|
123
|
-
function walletKeychainItem(id) {
|
|
124
|
-
return secretsKeychainItem(WALLET_BUNDLE, id);
|
|
125
|
-
}
|
|
126
|
-
function generateId() {
|
|
127
|
-
// 12 hex chars (6 bytes). Unique enough for a per-user wallet; short
|
|
128
|
-
// enough to type if needed.
|
|
129
|
-
return crypto.randomBytes(6).toString('hex');
|
|
130
|
-
}
|
|
131
|
-
/** List all stored cards. Does NOT trigger biometric auth. */
|
|
132
|
-
export function listCards() {
|
|
133
|
-
return readIndex();
|
|
134
|
-
}
|
|
135
|
-
/** Look up a card by id (or by case-insensitive nickname). Returns undefined when missing. */
|
|
136
|
-
export function findCard(idOrNickname) {
|
|
137
|
-
const cards = readIndex();
|
|
138
|
-
const exact = cards.find((c) => c.id === idOrNickname);
|
|
139
|
-
if (exact)
|
|
140
|
-
return exact;
|
|
141
|
-
const lc = idOrNickname.toLowerCase();
|
|
142
|
-
return cards.find((c) => c.nickname.toLowerCase() === lc);
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Add a new card. Validates Luhn + expiry. Returns the metadata for the
|
|
146
|
-
* stored card. The PAN/CVC/cardholder are written to Keychain in a single
|
|
147
|
-
* JSON blob; only metadata is mirrored to the index file.
|
|
148
|
-
*/
|
|
149
|
-
export function addCard(input) {
|
|
150
|
-
const pan = input.pan.replace(/\s+/g, '');
|
|
151
|
-
if (!/^\d+$/.test(pan))
|
|
152
|
-
throw new Error('PAN must contain only digits.');
|
|
153
|
-
if (!isValidLuhn(pan))
|
|
154
|
-
throw new Error('PAN failed Luhn checksum.');
|
|
155
|
-
const cvc = input.cvc.replace(/\s+/g, '');
|
|
156
|
-
if (!/^\d{3,4}$/.test(cvc))
|
|
157
|
-
throw new Error('CVC must be 3 or 4 digits.');
|
|
158
|
-
const nickname = input.nickname.trim();
|
|
159
|
-
if (!nickname)
|
|
160
|
-
throw new Error('Nickname is required.');
|
|
161
|
-
const cardholder = input.cardholder.trim();
|
|
162
|
-
if (!cardholder)
|
|
163
|
-
throw new Error('Cardholder name is required.');
|
|
164
|
-
if (/[\r\n]/.test(cardholder))
|
|
165
|
-
throw new Error('Cardholder name contains newlines.');
|
|
166
|
-
const exp_month = normalizeMonth(input.exp_month);
|
|
167
|
-
const exp_year = normalizeYear(input.exp_year);
|
|
168
|
-
const last4 = pan.slice(-4);
|
|
169
|
-
const brand = detectBrand(pan);
|
|
170
|
-
const cards = readIndex();
|
|
171
|
-
if (cards.some((c) => c.nickname.toLowerCase() === nickname.toLowerCase())) {
|
|
172
|
-
throw new Error(`A card named '${nickname}' already exists. Pick a different nickname.`);
|
|
173
|
-
}
|
|
174
|
-
const id = generateId();
|
|
175
|
-
const meta = {
|
|
176
|
-
id,
|
|
177
|
-
nickname,
|
|
178
|
-
brand,
|
|
179
|
-
last4,
|
|
180
|
-
exp_month,
|
|
181
|
-
exp_year,
|
|
182
|
-
created_at: new Date().toISOString(),
|
|
183
|
-
kind: 'pan_encrypted',
|
|
184
|
-
};
|
|
185
|
-
const secret = { pan, cvc, cardholder };
|
|
186
|
-
// Keychain item first; if it succeeds, mirror to index. If the index
|
|
187
|
-
// write fails afterward, attempt to roll back the keychain insertion
|
|
188
|
-
// so callers don't see ghost secrets.
|
|
189
|
-
setKeychainToken(walletKeychainItem(id), JSON.stringify(secret));
|
|
190
|
-
try {
|
|
191
|
-
writeIndex([...cards, meta]);
|
|
192
|
-
}
|
|
193
|
-
catch (err) {
|
|
194
|
-
try {
|
|
195
|
-
deleteKeychainToken(walletKeychainItem(id));
|
|
196
|
-
}
|
|
197
|
-
catch { /* best-effort rollback */ }
|
|
198
|
-
throw err;
|
|
199
|
-
}
|
|
200
|
-
return meta;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Reveal a card by id. **Triggers Touch ID on macOS.** Throws if the card
|
|
204
|
-
* isn't in the index or if the keychain entry is missing/cancelled.
|
|
205
|
-
*/
|
|
206
|
-
export function showCard(idOrNickname) {
|
|
207
|
-
const meta = findCard(idOrNickname);
|
|
208
|
-
if (!meta)
|
|
209
|
-
throw new Error(`No card found matching '${idOrNickname}'.`);
|
|
210
|
-
const raw = getKeychainToken(walletKeychainItem(meta.id));
|
|
211
|
-
let secret;
|
|
212
|
-
try {
|
|
213
|
-
secret = JSON.parse(raw);
|
|
214
|
-
}
|
|
215
|
-
catch (err) {
|
|
216
|
-
throw new Error(`Card secret for '${meta.nickname}' is corrupted (not valid JSON).`);
|
|
217
|
-
}
|
|
218
|
-
if (!secret.pan || !secret.cvc || !secret.cardholder) {
|
|
219
|
-
throw new Error(`Card secret for '${meta.nickname}' is missing required fields.`);
|
|
220
|
-
}
|
|
221
|
-
return { ...meta, ...secret };
|
|
222
|
-
}
|
|
223
|
-
/** Delete a card from both the index and Keychain. Returns the removed metadata or undefined. */
|
|
224
|
-
export function removeCard(idOrNickname) {
|
|
225
|
-
const cards = readIndex();
|
|
226
|
-
const meta = findCard(idOrNickname);
|
|
227
|
-
if (!meta)
|
|
228
|
-
return undefined;
|
|
229
|
-
const remaining = cards.filter((c) => c.id !== meta.id);
|
|
230
|
-
writeIndex(remaining);
|
|
231
|
-
try {
|
|
232
|
-
deleteKeychainToken(walletKeychainItem(meta.id));
|
|
233
|
-
}
|
|
234
|
-
catch { /* keychain may already be gone */ }
|
|
235
|
-
return meta;
|
|
236
|
-
}
|
|
237
|
-
/** Rename a card. Throws if the new nickname collides with an existing card. */
|
|
238
|
-
export function renameCard(idOrNickname, newNickname) {
|
|
239
|
-
const nickname = newNickname.trim();
|
|
240
|
-
if (!nickname)
|
|
241
|
-
throw new Error('Nickname is required.');
|
|
242
|
-
const cards = readIndex();
|
|
243
|
-
const meta = findCard(idOrNickname);
|
|
244
|
-
if (!meta)
|
|
245
|
-
throw new Error(`No card found matching '${idOrNickname}'.`);
|
|
246
|
-
if (cards.some((c) => c.id !== meta.id && c.nickname.toLowerCase() === nickname.toLowerCase())) {
|
|
247
|
-
throw new Error(`A card named '${nickname}' already exists.`);
|
|
248
|
-
}
|
|
249
|
-
const updated = { ...meta, nickname };
|
|
250
|
-
const next = cards.map((c) => (c.id === meta.id ? updated : c));
|
|
251
|
-
writeIndex(next);
|
|
252
|
-
return updated;
|
|
253
|
-
}
|