@agentworkforce/cli 3.0.3 → 3.0.5

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 CHANGED
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [3.0.5] - 2026-05-13
11
+
12
+ ### Changed
13
+
14
+ - Preserve relay cloud login on workforce logout (#111)
15
+
16
+ ## [3.0.4] - 2026-05-13
17
+
18
+ ### Added
19
+
20
+ - **Add destroy command for tearing down deployed agents** (#107)
21
+
22
+ ### Changed
23
+
24
+ - Deploy v1 CLI runtime credentials and customer example (#109)
25
+
10
26
  ## [3.0.3] - 2026-05-13
11
27
 
12
28
  ### Added
package/README.md CHANGED
@@ -13,6 +13,7 @@ agentworkforce show <persona>[@<tier>]
13
13
  agentworkforce install [flags] <pkg|path>
14
14
  agentworkforce sources <list|add|remove>
15
15
  agentworkforce harness check
16
+ agentworkforce destroy <persona-or-agent-id> [--workspace <id>] [--cloud-url <url>] [--no-prompt]
16
17
  agentworkforce --version
17
18
  ```
18
19
 
@@ -29,6 +30,11 @@ agentworkforce --version
29
30
  - `sources` — list, add, or remove persona source directories.
30
31
  - `harness check` — probe which harnesses (`claude`, `codex`, `opencode`)
31
32
  are installed. See [`## Harness check`](#harness-check) below.
33
+ - `destroy` — tear down a deployed cloud agent: cancels all relaycron
34
+ schedules and marks the agent as destroyed. Accepts either a persona
35
+ JSON path (slug resolved via the workspace's agents index) or a literal
36
+ agent UUID. Exits `0` on success, `2` when the agent is unknown or
37
+ already destroyed, `1` for any other failure.
32
38
  - `--version` — print the installed package version.
33
39
 
34
40
  ## Install
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -9,7 +9,9 @@ import { buildCleanupArtifacts, buildInstallArtifacts, buildInteractiveSpec, bui
9
9
  import { listBuiltInPersonas, personaCatalog, routingProfiles } from '@agentworkforce/workload-router';
10
10
  import { createMount, readAgentDotfiles } from '@relayfile/local-mount';
11
11
  import ora from 'ora';
12
- import { runDeploy, runLogin } from './deploy-command.js';
12
+ import { runDeploy, runLogin, runLogout } from './deploy-command.js';
13
+ import { runDestroy } from './destroy-command.js';
14
+ import { runDeploymentList } from './list-command.js';
13
15
  import { startLaunchMetadataRecording } from './launch-metadata.js';
14
16
  import { buildPersonaSourceDirectories, defaultCwdPersonaDir, formatPersonaSourceLabel, loadLocalPersonas, loadPersonaSourceConfig, normalizePersonaDir, savePersonaSourceConfig } from './local-personas.js';
15
17
  import { installPersonas } from './persona-install.js';
@@ -85,6 +87,7 @@ Commands:
85
87
  inspection.
86
88
  list [flags] List available personas from the cascade (cwd →
87
89
  configured persona dirs → library). Flags:
90
+ --deployments list deployed cloud agents
88
91
  --json emit JSON instead of a table
89
92
  --filter-harness <harness> only show this harness
90
93
  (${HARNESS_VALUES.join(' | ')})
@@ -140,10 +143,23 @@ Commands:
140
143
  --cloud-url <url> override the workforce cloud URL
141
144
  --input KEY=value override a declared persona input
142
145
  (repeat for multiple)
143
- login Connect this machine to a workforce workspace. The
144
- browser-based flow is rolling out; until then it prints
145
- the WORKFORCE_WORKSPACE_ID / WORKFORCE_WORKSPACE_TOKEN
146
- env-var setup instructions and exits non-zero.
146
+ deployments list List deployed cloud agents in the active workspace.
147
+ destroy <persona-or-agent-id> [flags]
148
+ Tear down a deployed agent: cancel all schedules and
149
+ mark the agent as destroyed in the workspace. Accepts
150
+ either a persona JSON path (resolved to an agent id
151
+ via the workspace's agents index) or a literal agent
152
+ UUID.
153
+ Flags:
154
+ --workspace <id> pick a non-default workspace
155
+ --cloud-url <url> override the workforce cloud URL
156
+ --no-prompt fail instead of opening the
157
+ browser login flow
158
+ Exit codes: 0 destroyed, 2 not found / already
159
+ destroyed, 1 any other error.
160
+ login Connect this machine to a workforce workspace using
161
+ browser OAuth and store a workspace token.
162
+ logout Clear browser OAuth auth and the stored workspace token.
147
163
 
148
164
  Options:
149
165
  -h, --help Show this help text.
@@ -172,6 +188,8 @@ Examples:
172
188
  agentworkforce agent "$(agentworkforce pick "fix the flaky test in foo.test.ts")"
173
189
  agentworkforce deploy ./personas/weekly-digest.json --mode cloud
174
190
  agentworkforce deploy ./personas/weekly-digest.json --mode sandbox --input TOPIC="Deploy v1"
191
+ agentworkforce destroy ./personas/weekly-digest.json
192
+ agentworkforce destroy 11111111-2222-4333-8444-555555555555
175
193
  agentworkforce login
176
194
  `;
177
195
  function die(msg, withUsage = true) {
@@ -1760,6 +1778,7 @@ function parseListArgs(args) {
1760
1778
  let filterHarness;
1761
1779
  let filterTag;
1762
1780
  const display = { description: true };
1781
+ let deployments = false;
1763
1782
  const valueOf = (i, flag) => {
1764
1783
  const v = args[i + 1];
1765
1784
  if (v === undefined || v.startsWith('--')) {
@@ -1772,8 +1791,11 @@ function parseListArgs(args) {
1772
1791
  if (arg === '--json') {
1773
1792
  json = true;
1774
1793
  }
1794
+ else if (arg === '--deployments') {
1795
+ deployments = true;
1796
+ }
1775
1797
  else if (arg === '-h' || arg === '--help') {
1776
- process.stdout.write('Usage: agentworkforce list [--json] [--filter-harness <harness>] [--filter-tag <tag>] [--no-display-description]\n');
1798
+ process.stdout.write('Usage: agentworkforce list [--deployments] [--status <status>] [--persona <slug>] [--json] [--filter-harness <harness>] [--filter-tag <tag>] [--no-display-description]\n');
1777
1799
  process.exit(0);
1778
1800
  }
1779
1801
  else if (arg === '--filter-harness') {
@@ -1800,9 +1822,13 @@ function parseListArgs(args) {
1800
1822
  die(`list: unexpected argument "${arg}".`);
1801
1823
  }
1802
1824
  }
1803
- return { json, filterHarness, filterTag, display };
1825
+ return { json, filterHarness, filterTag, display, deployments };
1804
1826
  }
1805
- function runList(args) {
1827
+ async function runList(args) {
1828
+ if (args.includes('--deployments')) {
1829
+ await runDeploymentList(args.filter((arg) => arg !== '--deployments'));
1830
+ process.exit(0);
1831
+ }
1806
1832
  const { json, filterHarness, filterTag, display } = parseListArgs(args);
1807
1833
  const rows = collectPersonaRows().filter((r) => {
1808
1834
  if (filterHarness && r.harness !== filterHarness)
@@ -3249,7 +3275,8 @@ export async function main() {
3249
3275
  process.exit(0);
3250
3276
  }
3251
3277
  if (subcommand === 'list') {
3252
- runList(rest);
3278
+ await runList(rest);
3279
+ return;
3253
3280
  }
3254
3281
  if (subcommand === 'show') {
3255
3282
  runShow(rest);
@@ -3284,10 +3311,30 @@ export async function main() {
3284
3311
  await runDeploy(rest);
3285
3312
  return;
3286
3313
  }
3314
+ if (subcommand === 'deployments') {
3315
+ const [action, ...extra] = rest;
3316
+ if (!action || action === '-h' || action === '--help') {
3317
+ process.stdout.write('Usage: agentworkforce deployments list [flags]\n');
3318
+ process.exit(action ? 0 : 1);
3319
+ }
3320
+ if (action !== 'list') {
3321
+ die(`deployments: unknown action "${action}". Expected: list`);
3322
+ }
3323
+ await runDeploymentList(extra);
3324
+ return;
3325
+ }
3326
+ if (subcommand === 'destroy') {
3327
+ await runDestroy(rest);
3328
+ return;
3329
+ }
3287
3330
  if (subcommand === 'login') {
3288
3331
  await runLogin(rest);
3289
3332
  return;
3290
3333
  }
3334
+ if (subcommand === 'logout') {
3335
+ await runLogout(rest);
3336
+ return;
3337
+ }
3291
3338
  if (subcommand !== 'agent') {
3292
3339
  die(`Unknown subcommand "${subcommand}".`);
3293
3340
  }