@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/dist/deploy-command.js
CHANGED
|
@@ -1,7 +1,33 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import {
|
|
2
|
+
import { CloudApiClient, clearStoredAuth, defaultApiUrl, ensureAuthenticated, issueWorkspaceToken } from '@agent-relay/cloud';
|
|
3
|
+
import { clearStoredWorkspaceToken, createTerminalIO, deploy, writeStoredWorkspaceToken } from '@agentworkforce/deploy';
|
|
4
|
+
import { BUILD_YOUR_OWN_RUNTIME_DOCS_URL, pickRuntime } from './runtime-picker.js';
|
|
5
|
+
const defaultDeployCommandDeps = {
|
|
6
|
+
ensureAuthenticated,
|
|
7
|
+
issueWorkspaceToken,
|
|
8
|
+
clearStoredAuth,
|
|
9
|
+
clearStoredWorkspaceToken,
|
|
10
|
+
writeStoredWorkspaceToken,
|
|
11
|
+
createTerminalIO,
|
|
12
|
+
createCloudApiClient(auth, apiUrl) {
|
|
13
|
+
return new CloudApiClient({
|
|
14
|
+
apiUrl,
|
|
15
|
+
accessToken: auth.accessToken,
|
|
16
|
+
refreshToken: auth.refreshToken,
|
|
17
|
+
accessTokenExpiresAt: auth.accessTokenExpiresAt
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
let deployCommandDeps = defaultDeployCommandDeps;
|
|
22
|
+
export function configureDeployCommandForTest(overrides) {
|
|
23
|
+
const previous = deployCommandDeps;
|
|
24
|
+
deployCommandDeps = { ...deployCommandDeps, ...overrides };
|
|
25
|
+
return () => {
|
|
26
|
+
deployCommandDeps = previous;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
3
29
|
/**
|
|
4
|
-
* Argv parser + dispatcher for `
|
|
30
|
+
* Argv parser + dispatcher for `agentworkforce deploy <persona-path> [flags]`.
|
|
5
31
|
* Keeps cli.ts itself slim — the file is already a large dispatcher and
|
|
6
32
|
* each command lands in its own module when it grows past trivial.
|
|
7
33
|
*/
|
|
@@ -10,7 +36,18 @@ export async function runDeploy(args) {
|
|
|
10
36
|
process.stdout.write(DEPLOY_USAGE);
|
|
11
37
|
process.exit(args.length === 0 ? 1 : 0);
|
|
12
38
|
}
|
|
13
|
-
|
|
39
|
+
let parsed = parseDeployArgs(args);
|
|
40
|
+
if (!parsed.mode && (parsed.noPrompt || !process.stdin.isTTY || !process.stdout.isTTY)) {
|
|
41
|
+
die('deploy: --mode is required when prompts are disabled or stdio is non-interactive');
|
|
42
|
+
}
|
|
43
|
+
if (!parsed.mode) {
|
|
44
|
+
const picked = await pickRuntime();
|
|
45
|
+
if (picked === 'docs') {
|
|
46
|
+
process.stdout.write(`${BUILD_YOUR_OWN_RUNTIME_DOCS_URL}\n`);
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
parsed = { ...parsed, mode: picked };
|
|
50
|
+
}
|
|
14
51
|
try {
|
|
15
52
|
const result = await deploy(parsed);
|
|
16
53
|
if (parsed.dryRun) {
|
|
@@ -32,7 +69,7 @@ export async function runDeploy(args) {
|
|
|
32
69
|
process.exit(exit.code);
|
|
33
70
|
}
|
|
34
71
|
catch (err) {
|
|
35
|
-
process.stderr.write(`\
|
|
72
|
+
process.stderr.write(`\nagentworkforce deploy failed: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
36
73
|
process.exit(1);
|
|
37
74
|
}
|
|
38
75
|
}
|
|
@@ -48,17 +85,57 @@ export async function runLogin(args) {
|
|
|
48
85
|
process.stdout.write(LOGIN_USAGE);
|
|
49
86
|
process.exit(0);
|
|
50
87
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
88
|
+
const opts = parseLoginArgs(args);
|
|
89
|
+
const io = deployCommandDeps.createTerminalIO();
|
|
90
|
+
const cloudUrl = normalizeCloudUrl(opts.cloudUrl ?? process.env.WORKFORCE_DEPLOY_CLOUD_URL ?? process.env.WORKFORCE_CLOUD_URL ?? defaultApiUrl());
|
|
91
|
+
try {
|
|
92
|
+
const auth = await deployCommandDeps.ensureAuthenticated(cloudUrl);
|
|
93
|
+
const apiUrl = normalizeCloudUrl(auth.apiUrl || cloudUrl);
|
|
94
|
+
const workspaces = await listWorkspacesForLogin(auth, apiUrl);
|
|
95
|
+
const chosen = opts.workspace
|
|
96
|
+
?? await pickWorkspaceInteractive(workspaces, io);
|
|
97
|
+
const tokenResp = await deployCommandDeps.issueWorkspaceToken(chosen, {
|
|
98
|
+
apiUrl,
|
|
99
|
+
name: 'agentworkforce-cli'
|
|
100
|
+
});
|
|
101
|
+
const token = readWorkspaceToken(tokenResp);
|
|
102
|
+
const workspaceId = readWorkspaceId(tokenResp) ?? findWorkspace(workspaces, chosen)?.id ?? chosen;
|
|
103
|
+
await deployCommandDeps.writeStoredWorkspaceToken({
|
|
104
|
+
workspace: chosen,
|
|
105
|
+
workspaceSlug: findWorkspace(workspaces, chosen)?.slug ?? chosen,
|
|
106
|
+
workspaceId,
|
|
107
|
+
token,
|
|
108
|
+
cloudUrl: apiUrl
|
|
109
|
+
});
|
|
110
|
+
process.stdout.write(`\nlogged in: ${chosen}\n`);
|
|
111
|
+
process.exit(0);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
process.stderr.write(`\nagentworkforce login failed: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
57
117
|
}
|
|
58
|
-
|
|
118
|
+
export async function runLogout(args) {
|
|
119
|
+
if (args.length > 0 && (args[0] === '-h' || args[0] === '--help')) {
|
|
120
|
+
process.stdout.write(LOGOUT_USAGE);
|
|
121
|
+
process.exit(0);
|
|
122
|
+
}
|
|
123
|
+
const opts = parseLogoutArgs(args);
|
|
124
|
+
try {
|
|
125
|
+
await deployCommandDeps.clearStoredAuth();
|
|
126
|
+
await deployCommandDeps.clearStoredWorkspaceToken(opts.workspace);
|
|
127
|
+
process.stdout.write('logged out\n');
|
|
128
|
+
process.exit(0);
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
process.stderr.write(`\nagentworkforce logout failed: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const DEPLOY_USAGE = `usage: agentworkforce deploy <persona-path> [flags]
|
|
59
136
|
|
|
60
137
|
Flags:
|
|
61
|
-
--mode dev|sandbox|cloud Pick a run mode (
|
|
138
|
+
--mode dev|sandbox|cloud Pick a run mode (prompts in an interactive terminal)
|
|
62
139
|
--workspace <name> Workforce workspace; defaults to the active workspace
|
|
63
140
|
--no-connect Skip integration-connect prompts; fail if any are missing
|
|
64
141
|
--byo-sandbox Force BYO Daytona auth even when logged in
|
|
@@ -66,17 +143,34 @@ Flags:
|
|
|
66
143
|
--bundle-out <dir> Emit the bundle to <dir> and exit (no launch)
|
|
67
144
|
--dry-run Validate the persona and exit before any side effects
|
|
68
145
|
--cloud-url <url> Override the workforce cloud base URL
|
|
146
|
+
--no-prompt Fail instead of prompting for cloud setup
|
|
147
|
+
--harness-source <source> Cloud harness source: plan, byok, or oauth
|
|
148
|
+
--byok-key <key> API key for --harness-source byok
|
|
149
|
+
--on-exists <choice> Existing cloud persona behavior: cancel, update, or destroy
|
|
69
150
|
--input <key>=<value> Override a declared persona input (repeatable)
|
|
70
151
|
-h, --help Print this message
|
|
71
152
|
`;
|
|
72
|
-
const LOGIN_USAGE = `usage:
|
|
153
|
+
const LOGIN_USAGE = `usage: agentworkforce login [flags]
|
|
73
154
|
|
|
74
|
-
Connect this machine to a workforce workspace
|
|
75
|
-
|
|
155
|
+
Connect this machine to a workforce workspace using the browser OAuth flow.
|
|
156
|
+
The resulting workspace token is stored in the OS keychain when available,
|
|
157
|
+
falling back to ~/.agentworkforce/login.json.
|
|
76
158
|
|
|
77
|
-
|
|
78
|
-
|
|
159
|
+
Flags:
|
|
160
|
+
--workspace <name> Workforce workspace; defaults to WORKFORCE_WORKSPACE_ID or prompt
|
|
161
|
+
--cloud-url <url> Override the workforce cloud base URL
|
|
162
|
+
-h, --help Print this message
|
|
79
163
|
`;
|
|
164
|
+
const LOGOUT_USAGE = `usage: agentworkforce logout [flags]
|
|
165
|
+
|
|
166
|
+
Clear the browser OAuth login and the stored workspace token.
|
|
167
|
+
|
|
168
|
+
Flags:
|
|
169
|
+
--workspace <name> Optional workspace token entry to clear
|
|
170
|
+
-h, --help Print this message
|
|
171
|
+
`;
|
|
172
|
+
const HARNESS_SOURCES = ['plan', 'byok', 'oauth'];
|
|
173
|
+
const ON_EXISTS_CHOICES = ['update', 'destroy', 'cancel'];
|
|
80
174
|
export function parseDeployArgs(args) {
|
|
81
175
|
let personaPath;
|
|
82
176
|
let mode;
|
|
@@ -87,6 +181,10 @@ export function parseDeployArgs(args) {
|
|
|
87
181
|
let bundleOut;
|
|
88
182
|
let dryRun = false;
|
|
89
183
|
let cloudUrl;
|
|
184
|
+
let noPrompt = false;
|
|
185
|
+
let harnessSource;
|
|
186
|
+
let byokKey;
|
|
187
|
+
let onExists;
|
|
90
188
|
const inputs = {};
|
|
91
189
|
for (let i = 0; i < args.length; i += 1) {
|
|
92
190
|
const a = args[i];
|
|
@@ -122,6 +220,31 @@ export function parseDeployArgs(args) {
|
|
|
122
220
|
else if (a === '--cloud-url') {
|
|
123
221
|
cloudUrl = expectValue('--cloud-url', args[++i]);
|
|
124
222
|
}
|
|
223
|
+
else if (a.startsWith('--cloud-url=')) {
|
|
224
|
+
cloudUrl = expectInlineValue('--cloud-url', a.slice('--cloud-url='.length));
|
|
225
|
+
}
|
|
226
|
+
else if (a === '--no-prompt') {
|
|
227
|
+
noPrompt = true;
|
|
228
|
+
noConnect = true;
|
|
229
|
+
}
|
|
230
|
+
else if (a === '--harness-source') {
|
|
231
|
+
harnessSource = expectChoice('--harness-source', expectValue('--harness-source', args[++i]), HARNESS_SOURCES);
|
|
232
|
+
}
|
|
233
|
+
else if (a.startsWith('--harness-source=')) {
|
|
234
|
+
harnessSource = expectChoice('--harness-source', expectInlineValue('--harness-source', a.slice('--harness-source='.length)), HARNESS_SOURCES);
|
|
235
|
+
}
|
|
236
|
+
else if (a === '--byok-key') {
|
|
237
|
+
byokKey = expectValue('--byok-key', args[++i]);
|
|
238
|
+
}
|
|
239
|
+
else if (a.startsWith('--byok-key=')) {
|
|
240
|
+
byokKey = expectInlineValue('--byok-key', a.slice('--byok-key='.length));
|
|
241
|
+
}
|
|
242
|
+
else if (a === '--on-exists') {
|
|
243
|
+
onExists = expectChoice('--on-exists', expectValue('--on-exists', args[++i]), ON_EXISTS_CHOICES);
|
|
244
|
+
}
|
|
245
|
+
else if (a.startsWith('--on-exists=')) {
|
|
246
|
+
onExists = expectChoice('--on-exists', expectInlineValue('--on-exists', a.slice('--on-exists='.length)), ON_EXISTS_CHOICES);
|
|
247
|
+
}
|
|
125
248
|
else if (a === '--input') {
|
|
126
249
|
parseDeployInputValue(expectDeployInputValue(args[++i]), inputs);
|
|
127
250
|
}
|
|
@@ -139,7 +262,7 @@ export function parseDeployArgs(args) {
|
|
|
139
262
|
}
|
|
140
263
|
}
|
|
141
264
|
if (!personaPath) {
|
|
142
|
-
die('deploy: missing persona path. Usage:
|
|
265
|
+
die('deploy: missing persona path. Usage: agentworkforce deploy <persona-path>');
|
|
143
266
|
}
|
|
144
267
|
return {
|
|
145
268
|
personaPath,
|
|
@@ -151,6 +274,10 @@ export function parseDeployArgs(args) {
|
|
|
151
274
|
...(bundleOut ? { bundleOut } : {}),
|
|
152
275
|
...(dryRun ? { dryRun: true } : {}),
|
|
153
276
|
...(cloudUrl ? { cloudUrl } : {}),
|
|
277
|
+
...(noPrompt ? { noPrompt: true } : {}),
|
|
278
|
+
...(harnessSource ? { harnessSource } : {}),
|
|
279
|
+
...(byokKey ? { byokKey } : {}),
|
|
280
|
+
...(onExists ? { onExists } : {}),
|
|
154
281
|
...(Object.keys(inputs).length > 0 ? { inputs } : {})
|
|
155
282
|
};
|
|
156
283
|
}
|
|
@@ -180,6 +307,170 @@ function expectValue(flag, value) {
|
|
|
180
307
|
}
|
|
181
308
|
return value;
|
|
182
309
|
}
|
|
310
|
+
function expectInlineValue(flag, value) {
|
|
311
|
+
if (!value.trim()) {
|
|
312
|
+
die(`${flag}: missing value`);
|
|
313
|
+
}
|
|
314
|
+
return value;
|
|
315
|
+
}
|
|
316
|
+
function expectChoice(flag, value, allowed) {
|
|
317
|
+
if (!allowed.includes(value)) {
|
|
318
|
+
die(`${flag}: expected one of ${allowed.join('|')}; got "${value}"`);
|
|
319
|
+
}
|
|
320
|
+
return value;
|
|
321
|
+
}
|
|
322
|
+
function parseLoginArgs(args) {
|
|
323
|
+
let workspace;
|
|
324
|
+
let cloudUrl;
|
|
325
|
+
for (let i = 0; i < args.length; i += 1) {
|
|
326
|
+
const a = args[i];
|
|
327
|
+
if (a === '-h' || a === '--help') {
|
|
328
|
+
process.stdout.write(LOGIN_USAGE);
|
|
329
|
+
process.exit(0);
|
|
330
|
+
}
|
|
331
|
+
else if (a === '--workspace') {
|
|
332
|
+
workspace = expectValue('--workspace', args[++i]);
|
|
333
|
+
}
|
|
334
|
+
else if (a.startsWith('--workspace=')) {
|
|
335
|
+
workspace = expectInlineValue('--workspace', a.slice('--workspace='.length));
|
|
336
|
+
}
|
|
337
|
+
else if (a === '--cloud-url') {
|
|
338
|
+
cloudUrl = expectValue('--cloud-url', args[++i]);
|
|
339
|
+
}
|
|
340
|
+
else if (a.startsWith('--cloud-url=')) {
|
|
341
|
+
cloudUrl = expectInlineValue('--cloud-url', a.slice('--cloud-url='.length));
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
die(`login: unknown argument "${a}"`);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return {
|
|
348
|
+
...(workspace ? { workspace } : {}),
|
|
349
|
+
...(cloudUrl ? { cloudUrl } : {})
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
function parseLogoutArgs(args) {
|
|
353
|
+
let workspace;
|
|
354
|
+
for (let i = 0; i < args.length; i += 1) {
|
|
355
|
+
const a = args[i];
|
|
356
|
+
if (a === '-h' || a === '--help') {
|
|
357
|
+
process.stdout.write(LOGOUT_USAGE);
|
|
358
|
+
process.exit(0);
|
|
359
|
+
}
|
|
360
|
+
else if (a === '--workspace') {
|
|
361
|
+
workspace = expectValue('--workspace', args[++i]);
|
|
362
|
+
}
|
|
363
|
+
else if (a.startsWith('--workspace=')) {
|
|
364
|
+
workspace = expectInlineValue('--workspace', a.slice('--workspace='.length));
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
die(`logout: unknown argument "${a}"`);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
return {
|
|
371
|
+
...(workspace ? { workspace } : {})
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
async function listWorkspacesForLogin(auth, apiUrl) {
|
|
375
|
+
const client = deployCommandDeps.createCloudApiClient(auth, apiUrl);
|
|
376
|
+
const res = await client.fetch('/api/v1/workspaces');
|
|
377
|
+
if (res.ok) {
|
|
378
|
+
return parseWorkspaceList(await res.json().catch(() => null));
|
|
379
|
+
}
|
|
380
|
+
if (res.status !== 404 && res.status !== 405) {
|
|
381
|
+
throw new Error(`workspace list failed: ${res.status} ${await res.text().catch(() => '')}`.trim());
|
|
382
|
+
}
|
|
383
|
+
const who = await client.fetch('/api/v1/auth/whoami');
|
|
384
|
+
if (!who.ok)
|
|
385
|
+
return [];
|
|
386
|
+
return parseWorkspaceList(await who.json().catch(() => null));
|
|
387
|
+
}
|
|
388
|
+
async function pickWorkspaceInteractive(workspaces, io) {
|
|
389
|
+
if (workspaces.length === 1) {
|
|
390
|
+
return workspaceKey(workspaces[0]);
|
|
391
|
+
}
|
|
392
|
+
if (workspaces.length > 1) {
|
|
393
|
+
for (let i = 0; i < workspaces.length; i += 1) {
|
|
394
|
+
const ws = workspaces[i];
|
|
395
|
+
io.info(`[${i + 1}] ${workspaceKey(ws)}${ws.name ? ` (${ws.name})` : ''}`);
|
|
396
|
+
}
|
|
397
|
+
const answer = await io.prompt('Workspace', { defaultValue: '1' });
|
|
398
|
+
const index = Number(answer.trim());
|
|
399
|
+
if (Number.isInteger(index) && index >= 1 && index <= workspaces.length) {
|
|
400
|
+
return workspaceKey(workspaces[index - 1]);
|
|
401
|
+
}
|
|
402
|
+
const found = findWorkspace(workspaces, answer.trim());
|
|
403
|
+
if (found)
|
|
404
|
+
return workspaceKey(found);
|
|
405
|
+
throw new Error(`unknown workspace "${answer}"`);
|
|
406
|
+
}
|
|
407
|
+
const answer = await io.prompt('Workspace');
|
|
408
|
+
if (!answer.trim()) {
|
|
409
|
+
throw new Error('workspace is required');
|
|
410
|
+
}
|
|
411
|
+
return answer.trim();
|
|
412
|
+
}
|
|
413
|
+
function parseWorkspaceList(payload) {
|
|
414
|
+
const candidates = Array.isArray(payload)
|
|
415
|
+
? payload
|
|
416
|
+
: payload && typeof payload === 'object' && Array.isArray(payload.workspaces)
|
|
417
|
+
? payload.workspaces
|
|
418
|
+
: payload && typeof payload === 'object' && Array.isArray(payload.items)
|
|
419
|
+
? payload.items
|
|
420
|
+
: payload && typeof payload === 'object' && payload.currentWorkspace
|
|
421
|
+
? [payload.currentWorkspace]
|
|
422
|
+
: [];
|
|
423
|
+
return candidates.flatMap((candidate) => {
|
|
424
|
+
if (!candidate || typeof candidate !== 'object' || Array.isArray(candidate))
|
|
425
|
+
return [];
|
|
426
|
+
const record = candidate;
|
|
427
|
+
const id = readString(record, 'id') ?? readString(record, 'workspaceId');
|
|
428
|
+
if (!id)
|
|
429
|
+
return [];
|
|
430
|
+
return [{
|
|
431
|
+
id,
|
|
432
|
+
...(readString(record, 'slug') ? { slug: readString(record, 'slug') } : {}),
|
|
433
|
+
...(readString(record, 'name') ? { name: readString(record, 'name') } : {})
|
|
434
|
+
}];
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
function findWorkspace(workspaces, value) {
|
|
438
|
+
return workspaces.find((workspace) => [workspace.id, workspace.slug, workspace.name].includes(value));
|
|
439
|
+
}
|
|
440
|
+
function workspaceKey(workspace) {
|
|
441
|
+
return workspace.slug ?? workspace.id;
|
|
442
|
+
}
|
|
443
|
+
function readWorkspaceToken(value) {
|
|
444
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
445
|
+
throw new Error('workspace token response was not an object');
|
|
446
|
+
}
|
|
447
|
+
const record = value;
|
|
448
|
+
const token = readString(record, 'token') ?? readString(record, 'key');
|
|
449
|
+
if (!token) {
|
|
450
|
+
throw new Error('workspace token response did not include a token');
|
|
451
|
+
}
|
|
452
|
+
return token;
|
|
453
|
+
}
|
|
454
|
+
function readWorkspaceId(value) {
|
|
455
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
456
|
+
return undefined;
|
|
457
|
+
const record = value;
|
|
458
|
+
const direct = readString(record, 'workspaceId');
|
|
459
|
+
if (direct)
|
|
460
|
+
return direct;
|
|
461
|
+
const nested = record.workspaceToken;
|
|
462
|
+
if (!nested || typeof nested !== 'object' || Array.isArray(nested))
|
|
463
|
+
return undefined;
|
|
464
|
+
return readString(nested, 'workspaceId');
|
|
465
|
+
}
|
|
466
|
+
function readString(record, key) {
|
|
467
|
+
const value = record[key];
|
|
468
|
+
return typeof value === 'string' && value.trim() ? value.trim() : undefined;
|
|
469
|
+
}
|
|
470
|
+
function normalizeCloudUrl(url) {
|
|
471
|
+
const trimmed = url.trim();
|
|
472
|
+
return trimmed ? trimmed.replace(/\/+$/, '') : defaultApiUrl().replace(/\/+$/, '');
|
|
473
|
+
}
|
|
183
474
|
function die(message) {
|
|
184
475
|
process.stderr.write(`${message}\n`);
|
|
185
476
|
process.exit(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-command.js","sourceRoot":"","sources":["../src/deploy-command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deploy-command.js","sourceRoot":"","sources":["../src/deploy-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,121 @@
|
|
|
1
1
|
import test from 'node:test';
|
|
2
2
|
import assert from 'node:assert/strict';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { parseDeployArgs } from './deploy-command.js';
|
|
5
|
-
|
|
4
|
+
import { configureDeployCommandForTest, parseDeployArgs, runLogin, runLogout } from './deploy-command.js';
|
|
5
|
+
import { createBufferedIO } from '@agentworkforce/deploy';
|
|
6
|
+
function trapExit(throwOnExit = true) {
|
|
6
7
|
const trap = {
|
|
7
8
|
exits: [],
|
|
9
|
+
stdout: '',
|
|
8
10
|
stderr: '',
|
|
9
11
|
restore: () => {
|
|
10
12
|
/* replaced below */
|
|
11
13
|
}
|
|
12
14
|
};
|
|
13
15
|
const origExit = process.exit;
|
|
16
|
+
const origOut = process.stdout.write.bind(process.stdout);
|
|
14
17
|
const origErr = process.stderr.write.bind(process.stderr);
|
|
15
18
|
const fakeExit = ((code) => {
|
|
16
19
|
trap.exits.push(code ?? 0);
|
|
17
|
-
|
|
20
|
+
if (throwOnExit) {
|
|
21
|
+
throw new Error(`__exit_trap__:${code ?? 0}`);
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
18
24
|
});
|
|
19
25
|
process.exit = fakeExit;
|
|
26
|
+
process.stdout.write = ((chunk) => {
|
|
27
|
+
trap.stdout += typeof chunk === 'string' ? chunk : chunk.toString();
|
|
28
|
+
return true;
|
|
29
|
+
});
|
|
20
30
|
process.stderr.write = ((chunk) => {
|
|
21
31
|
trap.stderr += typeof chunk === 'string' ? chunk : chunk.toString();
|
|
22
32
|
return true;
|
|
23
33
|
});
|
|
24
34
|
trap.restore = () => {
|
|
25
35
|
process.exit = origExit;
|
|
36
|
+
process.stdout.write = origOut;
|
|
26
37
|
process.stderr.write = origErr;
|
|
27
38
|
};
|
|
28
39
|
return trap;
|
|
29
40
|
}
|
|
41
|
+
test('runLogin uses cloud SDK auth, mints a workspace token, and stores it', async () => {
|
|
42
|
+
const calls = [];
|
|
43
|
+
const writes = [];
|
|
44
|
+
const restoreDeps = configureDeployCommandForTest({
|
|
45
|
+
createTerminalIO: () => createBufferedIO(),
|
|
46
|
+
ensureAuthenticated: async (apiUrl) => {
|
|
47
|
+
calls.push(`ensure:${apiUrl}`);
|
|
48
|
+
return {
|
|
49
|
+
apiUrl,
|
|
50
|
+
accessToken: 'access',
|
|
51
|
+
refreshToken: 'refresh',
|
|
52
|
+
accessTokenExpiresAt: '2999-01-01T00:00:00.000Z'
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
createCloudApiClient() {
|
|
56
|
+
return {
|
|
57
|
+
async fetch(pathname) {
|
|
58
|
+
calls.push(`fetch:${pathname}`);
|
|
59
|
+
return new Response(JSON.stringify({ workspaces: [{ id: 'ws-1', slug: 'acme' }] }), {
|
|
60
|
+
status: 200,
|
|
61
|
+
headers: { 'content-type': 'application/json' }
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
issueWorkspaceToken: async (workspace, options = {}) => {
|
|
67
|
+
calls.push(`issue:${workspace}:${options.apiUrl}:${options.name}`);
|
|
68
|
+
return { key: 'tok-ws', workspaceToken: { workspaceId: 'ws-1', kind: 'workspace_token' } };
|
|
69
|
+
},
|
|
70
|
+
writeStoredWorkspaceToken: async (login) => {
|
|
71
|
+
writes.push(login);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
const trap = trapExit(false);
|
|
75
|
+
try {
|
|
76
|
+
await runLogin(['--cloud-url', 'https://cloud.example.test/']);
|
|
77
|
+
assert.deepEqual(trap.exits, [0]);
|
|
78
|
+
assert.deepEqual(calls, [
|
|
79
|
+
'ensure:https://cloud.example.test',
|
|
80
|
+
'fetch:/api/v1/workspaces',
|
|
81
|
+
'issue:acme:https://cloud.example.test:agentworkforce-cli'
|
|
82
|
+
]);
|
|
83
|
+
assert.deepEqual(writes, [{
|
|
84
|
+
workspace: 'acme',
|
|
85
|
+
workspaceSlug: 'acme',
|
|
86
|
+
workspaceId: 'ws-1',
|
|
87
|
+
token: 'tok-ws',
|
|
88
|
+
cloudUrl: 'https://cloud.example.test'
|
|
89
|
+
}]);
|
|
90
|
+
assert.match(trap.stdout, /logged in: acme/);
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
trap.restore();
|
|
94
|
+
restoreDeps();
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
test('runLogout clears cloud auth and workspace token even when a workspace is passed', async () => {
|
|
98
|
+
const calls = [];
|
|
99
|
+
const restoreDeps = configureDeployCommandForTest({
|
|
100
|
+
clearStoredAuth: async () => {
|
|
101
|
+
calls.push('clear-auth');
|
|
102
|
+
},
|
|
103
|
+
clearStoredWorkspaceToken: async (workspace) => {
|
|
104
|
+
calls.push(`clear-workspace:${workspace ?? ''}`);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
const trap = trapExit(false);
|
|
108
|
+
try {
|
|
109
|
+
await runLogout(['--workspace', 'acme']);
|
|
110
|
+
assert.deepEqual(trap.exits, [0]);
|
|
111
|
+
assert.deepEqual(calls, ['clear-auth', 'clear-workspace:acme']);
|
|
112
|
+
assert.match(trap.stdout, /logged out/);
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
trap.restore();
|
|
116
|
+
restoreDeps();
|
|
117
|
+
}
|
|
118
|
+
});
|
|
30
119
|
test('parseDeployArgs: single --input parses and forwards', () => {
|
|
31
120
|
const parsed = parseDeployArgs(['./persona.json', '--input', 'TOPIC=Deploy v1']);
|
|
32
121
|
assert.equal(parsed.personaPath, path.resolve('./persona.json'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-command.test.js","sourceRoot":"","sources":["../src/deploy-command.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"deploy-command.test.js","sourceRoot":"","sources":["../src/deploy-command.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface DestroyOptions {
|
|
2
|
+
/** Either a persona file path (.json) or a literal agent UUID. */
|
|
3
|
+
target: string;
|
|
4
|
+
/** Workforce workspace id. Falls back to WORKFORCE_WORKSPACE_ID. */
|
|
5
|
+
workspace?: string;
|
|
6
|
+
/** Override cloud base URL. Falls back to env, then DEFAULT_CLOUD_URL. */
|
|
7
|
+
cloudUrl?: string;
|
|
8
|
+
/** Fail instead of opening the browser to log in. */
|
|
9
|
+
noPrompt?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Argv parser + dispatcher for `agentworkforce destroy <persona-or-agent-id> [flags]`.
|
|
13
|
+
* Mirrors the shape of runDeploy so cli.ts stays slim — destroy is a single
|
|
14
|
+
* remote DELETE plus user-friendly resolution from persona file -> agentId.
|
|
15
|
+
*/
|
|
16
|
+
export declare function runDestroy(args: readonly string[]): Promise<void>;
|
|
17
|
+
export declare const DESTROY_USAGE = "usage: agentworkforce destroy <persona-or-agent-id> [flags]\n\nTear down a deployed agent: cancel all relaycron schedules and mark the\nagent as destroyed in the workspace. Accepts either a persona JSON path\n(slug/id is resolved via the workspace's agents index) or a literal agent\nUUID.\n\nFlags:\n --workspace <id> Workforce workspace; defaults to WORKFORCE_WORKSPACE_ID\n --cloud-url <url> Override the workforce cloud base URL\n --no-prompt Fail instead of opening the browser to log in\n -h, --help Print this message\n\nExit codes:\n 0 destroyed\n 2 agent not found or already destroyed\n 1 any other error\n";
|
|
18
|
+
export declare function parseDestroyArgs(args: readonly string[]): DestroyOptions;
|
|
19
|
+
//# sourceMappingURL=destroy-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destroy-command.d.ts","sourceRoot":"","sources":["../src/destroy-command.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA4BD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBvE;AAsMD,eAAO,MAAM,aAAa,opBAiBzB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,CAwCxE"}
|