@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/activity.js
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
import * as fs from 'fs';
|
|
21
21
|
import * as path from 'path';
|
|
22
22
|
import * as yaml from 'yaml';
|
|
23
|
+
import { stringifyDoc } from './yaml-io.js';
|
|
23
24
|
import chalk from 'chalk';
|
|
24
25
|
import { relTime, truncate } from './format.js';
|
|
25
26
|
import { getActivityDir, getUserAgentsDir } from './state.js';
|
|
@@ -1561,7 +1562,13 @@ export function ensureActivityLogHook(userAgentsDir = getUserAgentsDir()) {
|
|
|
1561
1562
|
}
|
|
1562
1563
|
if (installed) {
|
|
1563
1564
|
const tmpYaml = `${agentsYamlPath}.${process.pid}.tmp`;
|
|
1564
|
-
|
|
1565
|
+
// `flowCollectionPadding: false` matches the committed formatting — see the
|
|
1566
|
+
// twin `ensureFeedPublishHook` in feed.ts. Without it, re-emitting a
|
|
1567
|
+
// committed flow node (`[a, b]` -> `[ a, b ]`) leaves the git-backed
|
|
1568
|
+
// `~/.agents` tree permanently dirty and blocks `agents repo pull`
|
|
1569
|
+
// fleet-wide (RUSH-2505). This writer runs back-to-back with the feed one
|
|
1570
|
+
// on the `agents feed` path, so both must round-trip cleanly.
|
|
1571
|
+
fs.writeFileSync(tmpYaml, stringifyDoc(yamlDoc));
|
|
1565
1572
|
fs.renameSync(tmpYaml, agentsYamlPath);
|
|
1566
1573
|
}
|
|
1567
1574
|
return { installed };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-harness application of project / `--add-dir` directory grants.
|
|
3
|
+
*
|
|
4
|
+
* A multi-repo project binds several checkouts; the primary becomes cwd and the
|
|
5
|
+
* rest become grants so the agent can read and write the siblings. How a grant
|
|
6
|
+
* lands depends on the harness:
|
|
7
|
+
*
|
|
8
|
+
* - `native-flag` — Claude, Kimi, Cursor: repeatable `--add-dir <path>`
|
|
9
|
+
* - `codex-policy` — Codex: folded into the named edit profile's workspace_roots
|
|
10
|
+
* (handled in buildExecCommand / codex-policy, not here)
|
|
11
|
+
* - `grok-sandbox` — Grok: OS sandbox is off by default (siblings already
|
|
12
|
+
* writable); when a non-off sandbox is active, write a
|
|
13
|
+
* project-local profile with `read_write` and select it.
|
|
14
|
+
* Always appends a short `--rules` note so the model knows
|
|
15
|
+
* the siblings are in scope.
|
|
16
|
+
* - `none` — harness has no multi-root surface; grants are ignored
|
|
17
|
+
* (caller may warn). Not a configuration mistake — the CLI
|
|
18
|
+
* has nowhere to put the grant.
|
|
19
|
+
*
|
|
20
|
+
* Capability honesty: only strategies that actually change the launch count as
|
|
21
|
+
* support. Silent no-ops stay `none`.
|
|
22
|
+
*/
|
|
23
|
+
import type { AgentId } from './types.js';
|
|
24
|
+
export type AddDirStrategy = 'native-flag' | 'codex-policy' | 'grok-sandbox' | 'none';
|
|
25
|
+
/** How each harness consumes directory grants. Keep in lockstep with apply* below. */
|
|
26
|
+
export declare const ADD_DIR_STRATEGY: Record<AgentId, AddDirStrategy>;
|
|
27
|
+
/** Agents whose launch command is widened by applyAddDirs (excludes codex — policy path). */
|
|
28
|
+
export declare function agentsWithNativeOrGrokAddDir(): AgentId[];
|
|
29
|
+
/** Expand `~` / `$HOME` and de-dupe, preserving order. */
|
|
30
|
+
export declare function normalizeAddDirs(dirs: string[] | undefined): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Append native `--add-dir` flags for harnesses that take them (Claude, Kimi, Cursor).
|
|
33
|
+
* No-op for other strategies — call sites route by ADD_DIR_STRATEGY.
|
|
34
|
+
*/
|
|
35
|
+
export declare function appendNativeAddDirFlags(cmd: string[], dirs: string[]): void;
|
|
36
|
+
/** Profile name written into `.grok/sandbox.toml` under the run cwd. */
|
|
37
|
+
export declare const GROK_PROJECT_SANDBOX_PROFILE = "agents-project";
|
|
38
|
+
/**
|
|
39
|
+
* Active Grok sandbox profile from the env, if a non-off profile is set.
|
|
40
|
+
* Returns null when sandbox is off / unset / devbox (no widen needed).
|
|
41
|
+
*
|
|
42
|
+
* Only `GROK_SANDBOX` is consulted — a profile set only in config.toml is not
|
|
43
|
+
* visible here (Grok does not expose it on the CLI), so those runs still get
|
|
44
|
+
* the rules note but not a custom widen. Prefer env when launching sandboxed.
|
|
45
|
+
*/
|
|
46
|
+
export declare function grokActiveSandboxProfile(env?: NodeJS.ProcessEnv): string | null;
|
|
47
|
+
/** Whether Grok's active sandbox needs a custom profile with extra read_write. */
|
|
48
|
+
export declare function grokNeedsSandboxWiden(env?: NodeJS.ProcessEnv): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Ensure `.grok/sandbox.toml` under `cwd` defines `[profiles.agents-project]`
|
|
51
|
+
* with `read_write` covering every grant, **extending the active base profile**
|
|
52
|
+
* (so `GROK_SANDBOX=strict` does not silently widen to `workspace`).
|
|
53
|
+
* Returns the profile name to pass as `--sandbox`, or null when not needed.
|
|
54
|
+
*
|
|
55
|
+
* Idempotent: rewrites only the managed profile block.
|
|
56
|
+
*/
|
|
57
|
+
export declare function ensureGrokProjectSandboxProfile(cwd: string, dirs: string[], opts?: {
|
|
58
|
+
extendsBase?: string;
|
|
59
|
+
}): string | null;
|
|
60
|
+
/**
|
|
61
|
+
* Short rules blob so Grok's model treats sibling dirs as in-scope.
|
|
62
|
+
* Wording tracks whether we actually widened the sandbox for write access.
|
|
63
|
+
*/
|
|
64
|
+
export declare function grokAddDirRules(dirs: string[], opts?: {
|
|
65
|
+
writeGranted?: boolean;
|
|
66
|
+
}): string;
|
|
67
|
+
/**
|
|
68
|
+
* Apply directory grants on the argv for harnesses handled here.
|
|
69
|
+
* Codex is intentionally excluded — its path lives next to codexPolicyArgs.
|
|
70
|
+
*
|
|
71
|
+
* @returns true when any argv / on-disk change was made for the grants
|
|
72
|
+
*/
|
|
73
|
+
export declare function applyAddDirs(agent: AgentId, cmd: string[], dirs: string[] | undefined, opts?: {
|
|
74
|
+
cwd?: string;
|
|
75
|
+
env?: NodeJS.ProcessEnv;
|
|
76
|
+
}): boolean;
|
|
77
|
+
/** Whether this harness effectively consumes directory grants. */
|
|
78
|
+
export declare function supportsAddDir(agent: AgentId): boolean;
|
|
79
|
+
/** One-line note for harnesses that ignore grants (used by callers that want to warn). */
|
|
80
|
+
export declare function addDirUnsupportedNote(agent: AgentId): string | null;
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-harness application of project / `--add-dir` directory grants.
|
|
3
|
+
*
|
|
4
|
+
* A multi-repo project binds several checkouts; the primary becomes cwd and the
|
|
5
|
+
* rest become grants so the agent can read and write the siblings. How a grant
|
|
6
|
+
* lands depends on the harness:
|
|
7
|
+
*
|
|
8
|
+
* - `native-flag` — Claude, Kimi, Cursor: repeatable `--add-dir <path>`
|
|
9
|
+
* - `codex-policy` — Codex: folded into the named edit profile's workspace_roots
|
|
10
|
+
* (handled in buildExecCommand / codex-policy, not here)
|
|
11
|
+
* - `grok-sandbox` — Grok: OS sandbox is off by default (siblings already
|
|
12
|
+
* writable); when a non-off sandbox is active, write a
|
|
13
|
+
* project-local profile with `read_write` and select it.
|
|
14
|
+
* Always appends a short `--rules` note so the model knows
|
|
15
|
+
* the siblings are in scope.
|
|
16
|
+
* - `none` — harness has no multi-root surface; grants are ignored
|
|
17
|
+
* (caller may warn). Not a configuration mistake — the CLI
|
|
18
|
+
* has nowhere to put the grant.
|
|
19
|
+
*
|
|
20
|
+
* Capability honesty: only strategies that actually change the launch count as
|
|
21
|
+
* support. Silent no-ops stay `none`.
|
|
22
|
+
*/
|
|
23
|
+
import * as fs from 'fs';
|
|
24
|
+
import * as path from 'path';
|
|
25
|
+
import { expandLocalHome } from './project-root.js';
|
|
26
|
+
/** How each harness consumes directory grants. Keep in lockstep with apply* below. */
|
|
27
|
+
export const ADD_DIR_STRATEGY = {
|
|
28
|
+
claude: 'native-flag',
|
|
29
|
+
kimi: 'native-flag',
|
|
30
|
+
cursor: 'native-flag',
|
|
31
|
+
codex: 'codex-policy',
|
|
32
|
+
grok: 'grok-sandbox',
|
|
33
|
+
// No multi-root CLI surface today (single --dir / project path).
|
|
34
|
+
opencode: 'none',
|
|
35
|
+
gemini: 'none',
|
|
36
|
+
pi: 'none',
|
|
37
|
+
openclaw: 'none',
|
|
38
|
+
copilot: 'none',
|
|
39
|
+
amp: 'none',
|
|
40
|
+
kiro: 'none',
|
|
41
|
+
goose: 'none',
|
|
42
|
+
antigravity: 'none',
|
|
43
|
+
droid: 'none',
|
|
44
|
+
hermes: 'none',
|
|
45
|
+
muse: 'none',
|
|
46
|
+
warp: 'none',
|
|
47
|
+
};
|
|
48
|
+
/** Agents whose launch command is widened by applyAddDirs (excludes codex — policy path). */
|
|
49
|
+
export function agentsWithNativeOrGrokAddDir() {
|
|
50
|
+
return Object.keys(ADD_DIR_STRATEGY).filter((id) => ADD_DIR_STRATEGY[id] === 'native-flag' || ADD_DIR_STRATEGY[id] === 'grok-sandbox');
|
|
51
|
+
}
|
|
52
|
+
/** Expand `~` / `$HOME` and de-dupe, preserving order. */
|
|
53
|
+
export function normalizeAddDirs(dirs) {
|
|
54
|
+
if (!dirs?.length)
|
|
55
|
+
return [];
|
|
56
|
+
const seen = new Set();
|
|
57
|
+
const out = [];
|
|
58
|
+
for (const raw of dirs) {
|
|
59
|
+
const expanded = expandLocalHome(raw);
|
|
60
|
+
if (!expanded || seen.has(expanded))
|
|
61
|
+
continue;
|
|
62
|
+
seen.add(expanded);
|
|
63
|
+
out.push(expanded);
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Append native `--add-dir` flags for harnesses that take them (Claude, Kimi, Cursor).
|
|
69
|
+
* No-op for other strategies — call sites route by ADD_DIR_STRATEGY.
|
|
70
|
+
*/
|
|
71
|
+
export function appendNativeAddDirFlags(cmd, dirs) {
|
|
72
|
+
for (const dir of dirs) {
|
|
73
|
+
cmd.push('--add-dir', dir);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/** Profile name written into `.grok/sandbox.toml` under the run cwd. */
|
|
77
|
+
export const GROK_PROJECT_SANDBOX_PROFILE = 'agents-project';
|
|
78
|
+
/**
|
|
79
|
+
* Active Grok sandbox profile from the env, if a non-off profile is set.
|
|
80
|
+
* Returns null when sandbox is off / unset / devbox (no widen needed).
|
|
81
|
+
*
|
|
82
|
+
* Only `GROK_SANDBOX` is consulted — a profile set only in config.toml is not
|
|
83
|
+
* visible here (Grok does not expose it on the CLI), so those runs still get
|
|
84
|
+
* the rules note but not a custom widen. Prefer env when launching sandboxed.
|
|
85
|
+
*/
|
|
86
|
+
export function grokActiveSandboxProfile(env = process.env) {
|
|
87
|
+
const raw = (env.GROK_SANDBOX ?? '').trim();
|
|
88
|
+
if (!raw)
|
|
89
|
+
return null;
|
|
90
|
+
const lower = raw.toLowerCase();
|
|
91
|
+
if (lower === 'off' || lower === 'devbox')
|
|
92
|
+
return null;
|
|
93
|
+
// Never extend our own managed profile (would recurse).
|
|
94
|
+
if (lower === GROK_PROJECT_SANDBOX_PROFILE.toLowerCase())
|
|
95
|
+
return 'workspace';
|
|
96
|
+
return raw;
|
|
97
|
+
}
|
|
98
|
+
/** Whether Grok's active sandbox needs a custom profile with extra read_write. */
|
|
99
|
+
export function grokNeedsSandboxWiden(env = process.env) {
|
|
100
|
+
return grokActiveSandboxProfile(env) !== null;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Ensure `.grok/sandbox.toml` under `cwd` defines `[profiles.agents-project]`
|
|
104
|
+
* with `read_write` covering every grant, **extending the active base profile**
|
|
105
|
+
* (so `GROK_SANDBOX=strict` does not silently widen to `workspace`).
|
|
106
|
+
* Returns the profile name to pass as `--sandbox`, or null when not needed.
|
|
107
|
+
*
|
|
108
|
+
* Idempotent: rewrites only the managed profile block.
|
|
109
|
+
*/
|
|
110
|
+
export function ensureGrokProjectSandboxProfile(cwd, dirs, opts = {}) {
|
|
111
|
+
if (!dirs.length)
|
|
112
|
+
return null;
|
|
113
|
+
if (!cwd)
|
|
114
|
+
return null;
|
|
115
|
+
const base = opts.extendsBase ?? 'workspace';
|
|
116
|
+
// Refuse to extend ourselves or an empty name.
|
|
117
|
+
const extendsBase = !base || base.toLowerCase() === GROK_PROJECT_SANDBOX_PROFILE.toLowerCase()
|
|
118
|
+
? 'workspace'
|
|
119
|
+
: base;
|
|
120
|
+
const grokDir = path.join(cwd, '.grok');
|
|
121
|
+
const sandboxPath = path.join(grokDir, 'sandbox.toml');
|
|
122
|
+
const readWriteLines = dirs
|
|
123
|
+
.map((d) => ` ${JSON.stringify(d)},`)
|
|
124
|
+
.join('\n');
|
|
125
|
+
const managedBlock = [
|
|
126
|
+
'# BEGIN agents-cli managed — project multi-repo grants (do not edit by hand)',
|
|
127
|
+
`[profiles.${GROK_PROJECT_SANDBOX_PROFILE}]`,
|
|
128
|
+
`extends = ${JSON.stringify(extendsBase)}`,
|
|
129
|
+
'read_write = [',
|
|
130
|
+
readWriteLines,
|
|
131
|
+
']',
|
|
132
|
+
'# END agents-cli managed',
|
|
133
|
+
'',
|
|
134
|
+
].join('\n');
|
|
135
|
+
let existing = '';
|
|
136
|
+
try {
|
|
137
|
+
existing = fs.readFileSync(sandboxPath, 'utf-8');
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
// create fresh
|
|
141
|
+
}
|
|
142
|
+
const begin = '# BEGIN agents-cli managed';
|
|
143
|
+
const end = '# END agents-cli managed';
|
|
144
|
+
let next;
|
|
145
|
+
const beginIdx = existing.indexOf(begin);
|
|
146
|
+
const endIdx = existing.indexOf(end);
|
|
147
|
+
if (beginIdx !== -1 && endIdx !== -1 && endIdx > beginIdx) {
|
|
148
|
+
// Replace through end of the end-marker line
|
|
149
|
+
const afterEnd = existing.indexOf('\n', endIdx);
|
|
150
|
+
const endCut = afterEnd === -1 ? existing.length : afterEnd + 1;
|
|
151
|
+
next = existing.slice(0, beginIdx) + managedBlock + existing.slice(endCut);
|
|
152
|
+
}
|
|
153
|
+
else if (existing.trim()) {
|
|
154
|
+
// If a hand-written [profiles.agents-project] already exists without our
|
|
155
|
+
// markers, refuse to append a second block with the same name.
|
|
156
|
+
const bare = new RegExp(`\\[profiles\\.${GROK_PROJECT_SANDBOX_PROFILE}\\]`);
|
|
157
|
+
if (bare.test(existing)) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
next = existing.replace(/\s*$/, '\n\n') + managedBlock;
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
next = managedBlock;
|
|
164
|
+
}
|
|
165
|
+
fs.mkdirSync(grokDir, { recursive: true });
|
|
166
|
+
fs.writeFileSync(sandboxPath, next, 'utf-8');
|
|
167
|
+
return GROK_PROJECT_SANDBOX_PROFILE;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Short rules blob so Grok's model treats sibling dirs as in-scope.
|
|
171
|
+
* Wording tracks whether we actually widened the sandbox for write access.
|
|
172
|
+
*/
|
|
173
|
+
export function grokAddDirRules(dirs, opts = {}) {
|
|
174
|
+
const list = dirs.map((d) => `- ${d}`).join('\n');
|
|
175
|
+
const access = opts.writeGranted === false
|
|
176
|
+
? 'intended as first-class workspace roots (OS sandbox may still restrict writes unless GROK_SANDBOX is set so agents-cli can widen it)'
|
|
177
|
+
: 'read + write';
|
|
178
|
+
return [
|
|
179
|
+
`Project sibling directories (part of this multi-repo project; ${access}):`,
|
|
180
|
+
list,
|
|
181
|
+
'Treat these as first-class workspace roots alongside the primary cwd.',
|
|
182
|
+
].join('\n');
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Apply directory grants on the argv for harnesses handled here.
|
|
186
|
+
* Codex is intentionally excluded — its path lives next to codexPolicyArgs.
|
|
187
|
+
*
|
|
188
|
+
* @returns true when any argv / on-disk change was made for the grants
|
|
189
|
+
*/
|
|
190
|
+
export function applyAddDirs(agent, cmd, dirs, opts = {}) {
|
|
191
|
+
const normalized = normalizeAddDirs(dirs);
|
|
192
|
+
if (normalized.length === 0)
|
|
193
|
+
return false;
|
|
194
|
+
const strategy = ADD_DIR_STRATEGY[agent];
|
|
195
|
+
if (strategy === 'native-flag') {
|
|
196
|
+
appendNativeAddDirFlags(cmd, normalized);
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
if (strategy === 'grok-sandbox') {
|
|
200
|
+
const env = opts.env ?? process.env;
|
|
201
|
+
const activeBase = grokActiveSandboxProfile(env);
|
|
202
|
+
let writeGranted = true; // default off sandbox = unrestricted FS
|
|
203
|
+
if (activeBase) {
|
|
204
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
205
|
+
const profile = ensureGrokProjectSandboxProfile(cwd, normalized, {
|
|
206
|
+
extendsBase: activeBase,
|
|
207
|
+
});
|
|
208
|
+
if (profile) {
|
|
209
|
+
// Drop a prior --sandbox <x> pair so the managed profile wins.
|
|
210
|
+
for (let i = cmd.length - 2; i >= 0; i--) {
|
|
211
|
+
if (cmd[i] === '--sandbox') {
|
|
212
|
+
cmd.splice(i, 2);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
cmd.push('--sandbox', profile);
|
|
216
|
+
writeGranted = true;
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
// Could not write the profile (e.g. hand-owned agents-project block).
|
|
220
|
+
writeGranted = false;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// Model awareness always — even when the OS sandbox is off.
|
|
224
|
+
cmd.push('--rules', grokAddDirRules(normalized, { writeGranted }));
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
// codex-policy / none — not applied here
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
/** Whether this harness effectively consumes directory grants. */
|
|
231
|
+
export function supportsAddDir(agent) {
|
|
232
|
+
const s = ADD_DIR_STRATEGY[agent];
|
|
233
|
+
return s === 'native-flag' || s === 'codex-policy' || s === 'grok-sandbox';
|
|
234
|
+
}
|
|
235
|
+
/** One-line note for harnesses that ignore grants (used by callers that want to warn). */
|
|
236
|
+
export function addDirUnsupportedNote(agent) {
|
|
237
|
+
if (supportsAddDir(agent))
|
|
238
|
+
return null;
|
|
239
|
+
return (`${agent} has no multi-root / --add-dir surface; project sibling directory ` +
|
|
240
|
+
`grants are ignored (cwd only). Claude, Codex, Cursor, Kimi, and Grok consume them.`);
|
|
241
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent CLI binary names — the `cliCommand` field of each harness in AGENTS.
|
|
3
|
+
*
|
|
4
|
+
* Leaf module with zero imports. brand.ts uses this for reservedBrandNames so
|
|
5
|
+
* the eager index.ts → brand.js graph never pulls agents.ts / versions.ts on
|
|
6
|
+
* every invocation (RUSH-2331). agents.ts AGENTS[*].cliCommand values are
|
|
7
|
+
* pinned equal by agent-cli-commands.test.ts — when a harness is added or
|
|
8
|
+
* renamed, both this list and AGENTS must change together.
|
|
9
|
+
*/
|
|
10
|
+
/** Every managed harness CLI binary name (no `agents` / `ag`). */
|
|
11
|
+
export declare const AGENT_CLI_COMMANDS: readonly string[];
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent CLI binary names — the `cliCommand` field of each harness in AGENTS.
|
|
3
|
+
*
|
|
4
|
+
* Leaf module with zero imports. brand.ts uses this for reservedBrandNames so
|
|
5
|
+
* the eager index.ts → brand.js graph never pulls agents.ts / versions.ts on
|
|
6
|
+
* every invocation (RUSH-2331). agents.ts AGENTS[*].cliCommand values are
|
|
7
|
+
* pinned equal by agent-cli-commands.test.ts — when a harness is added or
|
|
8
|
+
* renamed, both this list and AGENTS must change together.
|
|
9
|
+
*/
|
|
10
|
+
/** Every managed harness CLI binary name (no `agents` / `ag`). */
|
|
11
|
+
export const AGENT_CLI_COMMANDS = [
|
|
12
|
+
'claude',
|
|
13
|
+
'codex',
|
|
14
|
+
'gemini',
|
|
15
|
+
'cursor-agent',
|
|
16
|
+
'opencode',
|
|
17
|
+
'omp',
|
|
18
|
+
'openclaw',
|
|
19
|
+
'copilot',
|
|
20
|
+
'amp',
|
|
21
|
+
'kiro-cli',
|
|
22
|
+
'goose',
|
|
23
|
+
'agy',
|
|
24
|
+
'grok',
|
|
25
|
+
'kimi',
|
|
26
|
+
'droid',
|
|
27
|
+
'hermes',
|
|
28
|
+
'muse',
|
|
29
|
+
'warp',
|
|
30
|
+
];
|
package/dist/lib/agents.js
CHANGED
|
@@ -654,7 +654,12 @@ export const AGENTS = {
|
|
|
654
654
|
skills: true,
|
|
655
655
|
commands: false,
|
|
656
656
|
plugins: true,
|
|
657
|
-
|
|
657
|
+
// Claude-shaped agent markdown under ~/.kimi-code/agents/. kimi-code
|
|
658
|
+
// discovers that dir from `USER_BRAND_DIRS = ["agents"]` (agent-file
|
|
659
|
+
// discovery, added in 0.29.0); 0.28.x and older compile their four agent
|
|
660
|
+
// profiles into the bundle with no filesystem loader at all, so a synced
|
|
661
|
+
// file there is never read.
|
|
662
|
+
subagents: { since: '0.29.0' },
|
|
658
663
|
rules: { file: 'AGENTS.md' },
|
|
659
664
|
workflows: true,
|
|
660
665
|
memory: false,
|
|
@@ -859,27 +864,32 @@ export const AGENTS = {
|
|
|
859
864
|
interactiveRepl: true,
|
|
860
865
|
},
|
|
861
866
|
},
|
|
862
|
-
// Warp Agent CLI (`
|
|
863
|
-
//
|
|
864
|
-
//
|
|
865
|
-
//
|
|
866
|
-
//
|
|
867
|
-
//
|
|
868
|
-
//
|
|
869
|
-
// `
|
|
870
|
-
//
|
|
871
|
-
//
|
|
872
|
-
//
|
|
873
|
-
//
|
|
874
|
-
//
|
|
875
|
-
//
|
|
867
|
+
// Warp Agent CLI (`warp`) — Warp's standalone interactive TUI coding agent
|
|
868
|
+
// (docs.warp.dev/cli). Installed by the official cross-platform installer
|
|
869
|
+
// `curl -fsSL https://app.warp.dev/download/agent-cli | bash` (Windows: the
|
|
870
|
+
// sibling agent-cli.ps1), which drops a self-updating `warp` binary at
|
|
871
|
+
// ~/.local/bin/warp — NOT the older `oz` platform runner (brew cask `oz` /
|
|
872
|
+
// apt `oz-stable`), a separate headless product that no longer matches this
|
|
873
|
+
// CLI. Config lives under `~/.warp/` (`.mcp.json`, `skills/`, `tui/`). It is
|
|
874
|
+
// interactive-only: bare `warp` opens the TUI (streamed responses, diffs,
|
|
875
|
+
// inline approvals). There is NO headless one-shot form — the documented
|
|
876
|
+
// flags are --api-key / --auto-approve / --resume <token> /
|
|
877
|
+
// --set-provider-api-key / --clear-provider-api-key / --version / --help; no
|
|
878
|
+
// -p/--prompt, no --model (model is the `/model` picker), no JSON output.
|
|
879
|
+
// Auth: interactive browser sign-in on launch, or the `WARP_API_KEY` env
|
|
880
|
+
// token / `--api-key` for CI. Rules/context file is `AGENTS.md` (also reads
|
|
881
|
+
// WARP.md / CLAUDE.md). Conversations sync SERVER-SIDE to the Warp/Oz
|
|
882
|
+
// platform (resume a prior one with `warp --resume <token>`), so there is no
|
|
883
|
+
// local transcript for `agents sessions` to index — warp is intentionally
|
|
884
|
+
// absent from SESSION_AGENTS.
|
|
885
|
+
// Docs: https://docs.warp.dev/cli/quickstart
|
|
876
886
|
warp: {
|
|
877
887
|
id: 'warp',
|
|
878
888
|
name: 'Warp',
|
|
879
889
|
color: 'blueBright',
|
|
880
|
-
cliCommand: '
|
|
890
|
+
cliCommand: 'warp',
|
|
881
891
|
npmPackage: '',
|
|
882
|
-
installScript: '
|
|
892
|
+
installScript: 'curl -fsSL https://app.warp.dev/download/agent-cli | bash',
|
|
883
893
|
configDir: path.join(HOME, '.warp'),
|
|
884
894
|
commandsDir: '',
|
|
885
895
|
commandsSubdir: '',
|
|
@@ -888,44 +898,42 @@ export const AGENTS = {
|
|
|
888
898
|
instructionsFile: 'AGENTS.md',
|
|
889
899
|
format: 'markdown',
|
|
890
900
|
variableSyntax: '$ARGUMENTS',
|
|
891
|
-
//
|
|
892
|
-
//
|
|
893
|
-
//
|
|
901
|
+
// Warp has no event->shell-command hook registration surface (its startup
|
|
902
|
+
// flags are --api-key/--auto-approve/--resume/--set-provider-api-key/
|
|
903
|
+
// --clear-provider-api-key — no hooks).
|
|
894
904
|
supportsHooks: false,
|
|
895
905
|
capabilities: {
|
|
896
906
|
hooks: false,
|
|
897
|
-
// MCP:
|
|
898
|
-
// `.warp/.mcp.json` (user `~/.warp/.mcp.json`, project `<root>/.warp/.mcp.json`)
|
|
899
|
-
//
|
|
900
|
-
// back. stdio + http with headers, same schema as Claude's .mcp.json.
|
|
907
|
+
// MCP: Warp reads the Claude `{ "mcpServers": {...} }` schema from
|
|
908
|
+
// `.warp/.mcp.json` (user `~/.warp/.mcp.json`, project `<root>/.warp/.mcp.json`),
|
|
909
|
+
// stdio + http with headers, same schema as Claude's .mcp.json.
|
|
901
910
|
mcp: true,
|
|
902
911
|
mcpHttp: true,
|
|
903
912
|
mcpHeaders: true,
|
|
904
|
-
// Autonomy is
|
|
905
|
-
//
|
|
906
|
-
//
|
|
913
|
+
// Autonomy is a single toggle (`--auto-approve`), not a Claude-style
|
|
914
|
+
// tool-name allow/deny list agents-cli can write — so no allowlist writer
|
|
915
|
+
// (mirrors muse).
|
|
907
916
|
allowlist: false,
|
|
908
|
-
// Skills
|
|
909
|
-
// `.
|
|
917
|
+
// Skills searched in `.agents/skills/`, `.warp/skills/`, `.claude/skills/`,
|
|
918
|
+
// `.codex/skills/`.
|
|
910
919
|
skills: true,
|
|
911
920
|
// Slash-commands are native/server-managed (no droppable markdown
|
|
912
921
|
// command-file directory for agents-cli to sync into).
|
|
913
922
|
commands: false,
|
|
914
923
|
// No Claude marketplace / plugin manifest support.
|
|
915
924
|
plugins: false,
|
|
916
|
-
// Cloud agents
|
|
917
|
-
//
|
|
925
|
+
// Cloud agents are server-side; no installable subagent-definition
|
|
926
|
+
// directory to sync into (keeps the table truthful).
|
|
918
927
|
subagents: false,
|
|
919
928
|
rules: { file: 'AGENTS.md' },
|
|
920
929
|
workflows: false,
|
|
921
930
|
memory: false,
|
|
922
|
-
//
|
|
923
|
-
//
|
|
931
|
+
// No per-run permission flag beyond `--auto-approve`; the single `edit`
|
|
932
|
+
// mode maps to no flags (mirrors hermes).
|
|
924
933
|
modes: ['edit'],
|
|
925
934
|
rulesImports: false,
|
|
926
|
-
// `
|
|
927
|
-
|
|
928
|
-
interactiveRepl: false,
|
|
935
|
+
// Bare `warp` opens the interactive TUI (its only run form).
|
|
936
|
+
interactiveRepl: true,
|
|
929
937
|
},
|
|
930
938
|
},
|
|
931
939
|
};
|
|
@@ -123,7 +123,7 @@ export function resolveAnswerRoute(input) {
|
|
|
123
123
|
return {
|
|
124
124
|
kind: 'refuse',
|
|
125
125
|
reason: 'Agent is parked on a question but has no addressable terminal (no tmux/iterm/pty rail). ' +
|
|
126
|
-
'Open its terminal and answer there, or run `agents sessions
|
|
126
|
+
'Open its terminal and answer there, or run `agents sessions resume <id>` first.',
|
|
127
127
|
};
|
|
128
128
|
}
|
|
129
129
|
// Open block but agent is still looping between tool calls — mailbox is correct.
|
package/dist/lib/audit/log.d.ts
CHANGED
|
@@ -1,29 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Run-dispatch recording (issue #347) — now a thin write into the unified
|
|
3
|
+
* event stream (`emit('run.dispatched', …)`). The historical hash-chained file
|
|
4
|
+
* at `~/.agents/.history/audit/log.jsonl` is still readable via
|
|
5
|
+
* `readAuditLog` / `verifyAuditChain` for pre-unification history; new runs do
|
|
6
|
+
* NOT append there. Operators list run outcomes with:
|
|
3
7
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* each record embeds the previous record's `hash` as `prevHash`, and its own
|
|
7
|
-
* `hash` is `sha256(canonicalJSON(record-without-hash))`. Because `prevHash`
|
|
8
|
-
* is part of the hashed payload, rewriting or reordering any record breaks the
|
|
9
|
-
* chain from that point forward — `verifyAuditChain()` reports the first index
|
|
10
|
-
* that fails to reproduce.
|
|
11
|
-
*
|
|
12
|
-
* Storage is append-only JSONL under the durable-runtime bucket
|
|
13
|
-
* (`~/.agents/.history/audit/log.jsonl`), one record per line. `.history/` is
|
|
14
|
-
* machine-local, gitignored, and NEVER synced by `agents repo push/pull` — so
|
|
15
|
-
* the `repo` field (a git remote url that can embed an access token) never
|
|
16
|
-
* lands in a version-controlled DotAgents repo, and a cross-machine pull can't
|
|
17
|
-
* splice a foreign chain into this one. The write path is deliberately cheap
|
|
18
|
-
* and non-fatal: a logging failure must never crash a run (see
|
|
19
|
-
* `recordDispatchedRun`). Concurrent writers (parallel teams/routines dispatch)
|
|
20
|
-
* are serialized by an advisory lock file so the chain never forks — see
|
|
21
|
-
* `appendAuditRecord`.
|
|
22
|
-
*
|
|
23
|
-
* Governance context: this is the evidence trail an operator needs to answer
|
|
24
|
-
* "which agent, at which version, ran against which repo, and did it succeed?"
|
|
25
|
-
* — the kind of automated-decision logging the EU AI Act (Art. 12) expects of
|
|
26
|
-
* high-risk systems, kept tamper-evident so the log itself can be trusted.
|
|
8
|
+
* agents events --include runs
|
|
9
|
+
* agents audit # alias of the above
|
|
27
10
|
*/
|
|
28
11
|
/** First record's `prevHash` — a fixed anchor so the chain has a root. */
|
|
29
12
|
export declare const GENESIS_HASH = "GENESIS";
|
|
@@ -79,9 +62,9 @@ export declare function verifyAuditChain(logPath?: string): {
|
|
|
79
62
|
/** Read the whole chain, oldest-first. Exposed for `agents audit list`. */
|
|
80
63
|
export declare function readAuditLog(logPath?: string): AuditRecord[];
|
|
81
64
|
/**
|
|
82
|
-
* Record ONE dispatched run at the single exec chokepoint
|
|
83
|
-
* contract: any failure is caught and warned, never
|
|
84
|
-
* hiccup must not crash a run that already finished.
|
|
65
|
+
* Record ONE dispatched run at the single exec chokepoint into the unified
|
|
66
|
+
* event stream. Non-fatal by contract: any failure is caught and warned, never
|
|
67
|
+
* thrown — a log hiccup must not crash a run that already finished.
|
|
85
68
|
*/
|
|
86
69
|
export declare function recordDispatchedRun(run: {
|
|
87
70
|
agent: string;
|