@agentworkforce/cli 3.0.2 → 3.0.4

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,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [3.0.4] - 2026-05-13
11
+
12
+ ### Added
13
+
14
+ - **Add destroy command for tearing down deployed agents** (#107)
15
+
16
+ ### Changed
17
+
18
+ - Deploy v1 CLI runtime credentials and customer example (#109)
19
+
20
+ ## [3.0.3] - 2026-05-13
21
+
22
+ ### Added
23
+
24
+ - **--mode cloud (OSS-generic persona+bundle POST)** (#102)
25
+
26
+ ### Fixed
27
+
28
+ - Use the real binary name (agentworkforce) in help text, add deploy + login to Commands (#106)
29
+
10
30
  ## [3.0.2] - 2026-05-13
11
31
 
12
32
  ### 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(' | ')})
@@ -119,6 +122,44 @@ Commands:
119
122
  persona-maker with the task as input, or exits non-zero
120
123
  (non-TTY) with a hint.
121
124
  Exit codes: 0 match, 2 no match, 3 picker unavailable.
125
+ deploy <persona-path> [flags]
126
+ Deploy a persona as a managed agent. Modes:
127
+ --mode dev run the persona locally (default if
128
+ no Daytona/workspace creds resolve)
129
+ --mode sandbox run inside a Daytona sandbox
130
+ (default when creds resolve)
131
+ --mode cloud POST persona + bundle to the
132
+ workforce cloud workspace
133
+ Flags:
134
+ --workspace <name> pick a non-default workspace
135
+ --no-connect skip integration-connect prompts
136
+ (fail if any integration is missing)
137
+ --byo-sandbox force BYO Daytona auth
138
+ --detach background the runner instead of
139
+ streaming logs in the foreground
140
+ --bundle-out <dir> emit the bundle to <dir> and exit
141
+ without launching
142
+ --dry-run validate the persona; no side effects
143
+ --cloud-url <url> override the workforce cloud URL
144
+ --input KEY=value override a declared persona input
145
+ (repeat for multiple)
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.
122
163
 
123
164
  Options:
124
165
  -h, --help Show this help text.
@@ -145,6 +186,11 @@ Examples:
145
186
  agentworkforce harness check
146
187
  agentworkforce pick "review this PR for security issues"
147
188
  agentworkforce agent "$(agentworkforce pick "fix the flaky test in foo.test.ts")"
189
+ agentworkforce deploy ./personas/weekly-digest.json --mode cloud
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
193
+ agentworkforce login
148
194
  `;
149
195
  function die(msg, withUsage = true) {
150
196
  process.stderr.write(`${msg}\n`);
@@ -1732,6 +1778,7 @@ function parseListArgs(args) {
1732
1778
  let filterHarness;
1733
1779
  let filterTag;
1734
1780
  const display = { description: true };
1781
+ let deployments = false;
1735
1782
  const valueOf = (i, flag) => {
1736
1783
  const v = args[i + 1];
1737
1784
  if (v === undefined || v.startsWith('--')) {
@@ -1744,8 +1791,11 @@ function parseListArgs(args) {
1744
1791
  if (arg === '--json') {
1745
1792
  json = true;
1746
1793
  }
1794
+ else if (arg === '--deployments') {
1795
+ deployments = true;
1796
+ }
1747
1797
  else if (arg === '-h' || arg === '--help') {
1748
- 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');
1749
1799
  process.exit(0);
1750
1800
  }
1751
1801
  else if (arg === '--filter-harness') {
@@ -1772,9 +1822,13 @@ function parseListArgs(args) {
1772
1822
  die(`list: unexpected argument "${arg}".`);
1773
1823
  }
1774
1824
  }
1775
- return { json, filterHarness, filterTag, display };
1825
+ return { json, filterHarness, filterTag, display, deployments };
1776
1826
  }
1777
- 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
+ }
1778
1832
  const { json, filterHarness, filterTag, display } = parseListArgs(args);
1779
1833
  const rows = collectPersonaRows().filter((r) => {
1780
1834
  if (filterHarness && r.harness !== filterHarness)
@@ -3221,7 +3275,8 @@ export async function main() {
3221
3275
  process.exit(0);
3222
3276
  }
3223
3277
  if (subcommand === 'list') {
3224
- runList(rest);
3278
+ await runList(rest);
3279
+ return;
3225
3280
  }
3226
3281
  if (subcommand === 'show') {
3227
3282
  runShow(rest);
@@ -3256,10 +3311,30 @@ export async function main() {
3256
3311
  await runDeploy(rest);
3257
3312
  return;
3258
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
+ }
3259
3330
  if (subcommand === 'login') {
3260
3331
  await runLogin(rest);
3261
3332
  return;
3262
3333
  }
3334
+ if (subcommand === 'logout') {
3335
+ await runLogout(rest);
3336
+ return;
3337
+ }
3263
3338
  if (subcommand !== 'agent') {
3264
3339
  die(`Unknown subcommand "${subcommand}".`);
3265
3340
  }