@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 +20 -0
- package/README.md +6 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +80 -5
- package/dist/cli.js.map +1 -1
- package/dist/deploy-command.d.ts +16 -2
- package/dist/deploy-command.d.ts.map +1 -1
- package/dist/deploy-command.js +309 -18
- package/dist/deploy-command.js.map +1 -1
- package/dist/deploy-command.test.js +92 -3
- package/dist/deploy-command.test.js.map +1 -1
- package/dist/destroy-command.d.ts +19 -0
- package/dist/destroy-command.d.ts.map +1 -0
- package/dist/destroy-command.js +288 -0
- package/dist/destroy-command.js.map +1 -0
- package/dist/destroy-command.test.d.ts +2 -0
- package/dist/destroy-command.test.d.ts.map +1 -0
- package/dist/destroy-command.test.js +312 -0
- package/dist/destroy-command.test.js.map +1 -0
- package/dist/list-command.d.ts +23 -0
- package/dist/list-command.d.ts.map +1 -0
- package/dist/list-command.js +228 -0
- package/dist/list-command.js.map +1 -0
- package/dist/list-command.test.d.ts +2 -0
- package/dist/list-command.test.d.ts.map +1 -0
- package/dist/list-command.test.js +42 -0
- package/dist/list-command.test.js.map +1 -0
- package/dist/runtime-picker.d.ts +8 -0
- package/dist/runtime-picker.d.ts.map +1 -0
- package/dist/runtime-picker.js +35 -0
- package/dist/runtime-picker.js.map +1 -0
- package/dist/runtime-picker.test.d.ts +2 -0
- package/dist/runtime-picker.test.d.ts.map +1 -0
- package/dist/runtime-picker.test.js +27 -0
- package/dist/runtime-picker.test.js.map +1 -0
- package/package.json +5 -4
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":";AAsBA,OAAO,EAgBL,KAAK,OAAO,EAIZ,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAGrB,KAAK,aAAa,EAEnB,MAAM,6BAA6B,CAAC;
|
|
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
|
}
|