@alexkroman1/aai-cli 10.0.1 → 11.0.0
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/dist/{_bundler-B31MqYaD.mjs → _bundler-C31rlcYz.mjs} +1 -1
- package/dist/{_dev-server-Bo5dSBzQ.mjs → _dev-server-DWvkNoIS.mjs} +3 -3
- package/dist/{_vite-env-BNveawd1.mjs → _vite-env-D9Qj6KPX.mjs} +4 -2
- package/dist/_workflow-determinism-f9J-5Zlj.mjs +206 -0
- package/dist/_workflow-determinism.d.ts +118 -0
- package/dist/{build-DKC2e9o_.mjs → build-BLlLOrng.mjs} +4 -2
- package/dist/cli.mjs +372 -353
- package/dist/{client-bundler-CWnG42cU.mjs → client-bundler-j5c46x0G.mjs} +3 -2
- package/dist/client-bundler.mjs +1 -1
- package/dist/{deploy-CchW5pmw.mjs → deploy-BzZ-r4iM.mjs} +6 -4
- package/dist/{dev-BfVl1uBA.mjs → dev-BDykFvcc.mjs} +1 -1
- package/dist/{eval-DwNwdqmS.mjs → eval-0qEOdm0l.mjs} +1 -1
- package/dist/{init-BRfoc2EK.mjs → init-BtJI306C.mjs} +1 -1
- package/dist/{login-BBuM1sxH.mjs → login-DeUETobb.mjs} +4 -1
- package/dist/scaffold/CLAUDE.md +190 -11
- package/dist/scaffold/package.json +4 -4
- package/dist/{studio-wVWNLREn.mjs → studio-BxAS_FQQ.mjs} +4 -1
- package/dist/templates/call-audit/agent.test.ts +105 -26
- package/dist/templates/call-audit/workflows/audit.ts +9 -26
- package/dist/templates/dispatch-center/client.tsx +36 -2
- package/dist/templates/infocom-adventure/client.tsx +37 -9
- package/dist/templates/link-digest/agent.eval.test.ts +1 -1
- package/dist/templates/link-digest/agent.test.ts +164 -8
- package/dist/templates/link-digest/workflows/digest.ts +63 -20
- package/dist/templates/podcast-digest/agent.eval.test.ts +7 -4
- package/dist/templates/podcast-digest/agent.test.ts +265 -24
- package/dist/templates/podcast-digest/workflows/digest.ts +2 -2
- package/dist/templates/podcast-digest/workflows/feeds.ts +78 -73
- package/dist/templates/recap-workflow/agent.test.ts +206 -20
- package/dist/templates/recap-workflow/workflows/recap.ts +17 -14
- package/dist/templates/redline/agent.test.ts +137 -11
- package/dist/templates/research-workflow/agent.eval.test.ts +1 -1
- package/dist/templates/research-workflow/agent.test.ts +131 -9
- package/dist/templates/research-workflow/workflows/research.ts +1 -1
- package/dist/templates/retail/client.tsx +30 -2
- package/dist/templates/spoken-summary/agent.eval.test.ts +4 -1
- package/dist/templates/spoken-summary/agent.test.ts +117 -8
- package/dist/templates/spoken-summary/workflows/summarize.ts +1 -1
- package/dist/templates/transcription-workflow/agent.test.ts +127 -13
- package/dist/templates/transcription-workflow/workflows/batch.ts +6 -6
- package/dist/templates/transcription-workflow/workflows/stream.ts +4 -3
- package/dist/templates/transcription-workflow/workflows/transcribe.ts +4 -23
- package/dist/{test-CvwgeVSQ.mjs → test-CiLab-AA.mjs} +2 -1
- package/dist/worker-bundler.mjs +1 -1
- package/package.json +25 -24
package/dist/cli.mjs
CHANGED
|
@@ -237,69 +237,74 @@ function defineExec(spec) {
|
|
|
237
237
|
}
|
|
238
238
|
});
|
|
239
239
|
}
|
|
240
|
+
//#endregion
|
|
241
|
+
//#region _resource-commands.ts
|
|
242
|
+
const secretPut = defineExec({
|
|
243
|
+
meta: {
|
|
244
|
+
name: "put",
|
|
245
|
+
description: "Create or update a secret"
|
|
246
|
+
},
|
|
247
|
+
args: {
|
|
248
|
+
name: {
|
|
249
|
+
type: "positional",
|
|
250
|
+
description: "Secret name",
|
|
251
|
+
required: true
|
|
252
|
+
},
|
|
253
|
+
server: sharedArgs.server,
|
|
254
|
+
json: sharedArgs.json
|
|
255
|
+
},
|
|
256
|
+
cwd: "any",
|
|
257
|
+
async run({ args, mode, cwd }) {
|
|
258
|
+
const { executeSecretPut, NO_INPUT, readStdin } = await import("./secret-B-3T5tvr.mjs");
|
|
259
|
+
const value = mode === "json" ? await readStdin() : void 0;
|
|
260
|
+
if (mode === "json" && !value) throw new CliError(...NO_INPUT);
|
|
261
|
+
return executeSecretPut(cwd, args.name, value, args.server);
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
const secretDelete = defineExec({
|
|
265
|
+
meta: {
|
|
266
|
+
name: "delete",
|
|
267
|
+
description: "Delete a secret"
|
|
268
|
+
},
|
|
269
|
+
args: {
|
|
270
|
+
name: {
|
|
271
|
+
type: "positional",
|
|
272
|
+
description: "Secret name",
|
|
273
|
+
required: true
|
|
274
|
+
},
|
|
275
|
+
server: sharedArgs.server,
|
|
276
|
+
json: sharedArgs.json
|
|
277
|
+
},
|
|
278
|
+
cwd: "any",
|
|
279
|
+
async run({ args, cwd }) {
|
|
280
|
+
const { executeSecretDelete } = await import("./secret-B-3T5tvr.mjs");
|
|
281
|
+
return executeSecretDelete(cwd, args.name, args.server);
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
const secretList = defineExec({
|
|
285
|
+
meta: {
|
|
286
|
+
name: "list",
|
|
287
|
+
description: "List all secrets"
|
|
288
|
+
},
|
|
289
|
+
args: {
|
|
290
|
+
server: sharedArgs.server,
|
|
291
|
+
json: sharedArgs.json
|
|
292
|
+
},
|
|
293
|
+
cwd: "any",
|
|
294
|
+
async run({ args, cwd }) {
|
|
295
|
+
const { executeSecretList } = await import("./secret-B-3T5tvr.mjs");
|
|
296
|
+
return executeSecretList(cwd, args.server);
|
|
297
|
+
}
|
|
298
|
+
});
|
|
240
299
|
const secret = defineCommand({
|
|
241
300
|
meta: {
|
|
242
301
|
name: "secret",
|
|
243
302
|
description: "Manage agent secrets"
|
|
244
303
|
},
|
|
245
304
|
subCommands: {
|
|
246
|
-
put:
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
description: "Create or update a secret"
|
|
250
|
-
},
|
|
251
|
-
args: {
|
|
252
|
-
name: {
|
|
253
|
-
type: "positional",
|
|
254
|
-
description: "Secret name",
|
|
255
|
-
required: true
|
|
256
|
-
},
|
|
257
|
-
server: sharedArgs.server,
|
|
258
|
-
json: sharedArgs.json
|
|
259
|
-
},
|
|
260
|
-
cwd: "any",
|
|
261
|
-
async run({ args, mode, cwd }) {
|
|
262
|
-
const { executeSecretPut, NO_INPUT, readStdin } = await import("./secret-B-3T5tvr.mjs");
|
|
263
|
-
const value = mode === "json" ? await readStdin() : void 0;
|
|
264
|
-
if (mode === "json" && !value) throw new CliError(...NO_INPUT);
|
|
265
|
-
return executeSecretPut(cwd, args.name, value, args.server);
|
|
266
|
-
}
|
|
267
|
-
}),
|
|
268
|
-
delete: defineExec({
|
|
269
|
-
meta: {
|
|
270
|
-
name: "delete",
|
|
271
|
-
description: "Delete a secret"
|
|
272
|
-
},
|
|
273
|
-
args: {
|
|
274
|
-
name: {
|
|
275
|
-
type: "positional",
|
|
276
|
-
description: "Secret name",
|
|
277
|
-
required: true
|
|
278
|
-
},
|
|
279
|
-
server: sharedArgs.server,
|
|
280
|
-
json: sharedArgs.json
|
|
281
|
-
},
|
|
282
|
-
cwd: "any",
|
|
283
|
-
async run({ args, cwd }) {
|
|
284
|
-
const { executeSecretDelete } = await import("./secret-B-3T5tvr.mjs");
|
|
285
|
-
return executeSecretDelete(cwd, args.name, args.server);
|
|
286
|
-
}
|
|
287
|
-
}),
|
|
288
|
-
list: defineExec({
|
|
289
|
-
meta: {
|
|
290
|
-
name: "list",
|
|
291
|
-
description: "List all secrets"
|
|
292
|
-
},
|
|
293
|
-
args: {
|
|
294
|
-
server: sharedArgs.server,
|
|
295
|
-
json: sharedArgs.json
|
|
296
|
-
},
|
|
297
|
-
cwd: "any",
|
|
298
|
-
async run({ args, cwd }) {
|
|
299
|
-
const { executeSecretList } = await import("./secret-B-3T5tvr.mjs");
|
|
300
|
-
return executeSecretList(cwd, args.server);
|
|
301
|
-
}
|
|
302
|
-
})
|
|
305
|
+
put: secretPut,
|
|
306
|
+
delete: secretDelete,
|
|
307
|
+
list: secretList
|
|
303
308
|
}
|
|
304
309
|
});
|
|
305
310
|
/** An optional `[dir]` positional, resolved against the working directory. */
|
|
@@ -358,7 +363,7 @@ const list = defineExec({
|
|
|
358
363
|
},
|
|
359
364
|
cwd: "any",
|
|
360
365
|
async run({ args, cwd }) {
|
|
361
|
-
const { executeList } = await import("./studio-
|
|
366
|
+
const { executeList } = await import("./studio-BxAS_FQQ.mjs");
|
|
362
367
|
return executeList({
|
|
363
368
|
cwd,
|
|
364
369
|
server: args.server
|
|
@@ -391,7 +396,7 @@ const pull = defineExec({
|
|
|
391
396
|
},
|
|
392
397
|
cwd: "any",
|
|
393
398
|
async run({ args, cwd }) {
|
|
394
|
-
const { executePull } = await import("./studio-
|
|
399
|
+
const { executePull } = await import("./studio-BxAS_FQQ.mjs");
|
|
395
400
|
return executePull({
|
|
396
401
|
cwd,
|
|
397
402
|
project: args.project,
|
|
@@ -413,7 +418,7 @@ const push = defineExec({
|
|
|
413
418
|
},
|
|
414
419
|
cwd: "agent",
|
|
415
420
|
async run({ args, cwd }) {
|
|
416
|
-
const { executePush } = await import("./studio-
|
|
421
|
+
const { executePush } = await import("./studio-BxAS_FQQ.mjs");
|
|
417
422
|
return executePush({
|
|
418
423
|
cwd,
|
|
419
424
|
server: args.server,
|
|
@@ -437,7 +442,7 @@ const publish = defineExec({
|
|
|
437
442
|
},
|
|
438
443
|
cwd: "agent",
|
|
439
444
|
async run({ args, cwd }) {
|
|
440
|
-
const { executePublish } = await import("./studio-
|
|
445
|
+
const { executePublish } = await import("./studio-BxAS_FQQ.mjs");
|
|
441
446
|
return executePublish({
|
|
442
447
|
cwd,
|
|
443
448
|
server: args.server,
|
|
@@ -510,96 +515,100 @@ const workflowArgs = {
|
|
|
510
515
|
* never edited still names a deployed agent whose runs are worth asking about.
|
|
511
516
|
*/
|
|
512
517
|
const WORKFLOW_CWD = "any";
|
|
518
|
+
const workflowList = defineExec({
|
|
519
|
+
meta: {
|
|
520
|
+
name: "list",
|
|
521
|
+
description: "List the workflows this agent declares"
|
|
522
|
+
},
|
|
523
|
+
args: workflowArgs,
|
|
524
|
+
cwd: WORKFLOW_CWD,
|
|
525
|
+
async run({ args, cwd }) {
|
|
526
|
+
const { executeWorkflowList } = await import("./workflow-BBu5oEDw.mjs");
|
|
527
|
+
return executeWorkflowList(cwd, {
|
|
528
|
+
server: args.server,
|
|
529
|
+
token: args.token,
|
|
530
|
+
agent: args.agent
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
});
|
|
534
|
+
const workflowRuns = defineExec({
|
|
535
|
+
meta: {
|
|
536
|
+
name: "runs",
|
|
537
|
+
description: "List recent runs of one workflow, newest first"
|
|
538
|
+
},
|
|
539
|
+
args: {
|
|
540
|
+
workflow: {
|
|
541
|
+
type: "positional",
|
|
542
|
+
description: "Workflow name",
|
|
543
|
+
required: true
|
|
544
|
+
},
|
|
545
|
+
limit: {
|
|
546
|
+
type: "string",
|
|
547
|
+
description: "How many runs to list"
|
|
548
|
+
},
|
|
549
|
+
...workflowArgs
|
|
550
|
+
},
|
|
551
|
+
cwd: WORKFLOW_CWD,
|
|
552
|
+
async run({ args, cwd }) {
|
|
553
|
+
const { executeWorkflowRuns } = await import("./workflow-BBu5oEDw.mjs");
|
|
554
|
+
const limit = args.limit === void 0 ? void 0 : Number(args.limit);
|
|
555
|
+
if (limit !== void 0 && !Number.isFinite(limit)) throw new CliError("bad_limit", "--limit must be a number");
|
|
556
|
+
return executeWorkflowRuns(cwd, args.workflow, {
|
|
557
|
+
server: args.server,
|
|
558
|
+
token: args.token,
|
|
559
|
+
agent: args.agent,
|
|
560
|
+
limit
|
|
561
|
+
});
|
|
562
|
+
}
|
|
563
|
+
});
|
|
564
|
+
const workflowShow = defineExec({
|
|
565
|
+
meta: {
|
|
566
|
+
name: "show",
|
|
567
|
+
description: "Show one run, including its output"
|
|
568
|
+
},
|
|
569
|
+
args: {
|
|
570
|
+
runId: runIdArg,
|
|
571
|
+
...workflowArgs
|
|
572
|
+
},
|
|
573
|
+
cwd: WORKFLOW_CWD,
|
|
574
|
+
async run({ args, cwd }) {
|
|
575
|
+
const { executeWorkflowShow } = await import("./workflow-BBu5oEDw.mjs");
|
|
576
|
+
return executeWorkflowShow(cwd, args.runId, {
|
|
577
|
+
server: args.server,
|
|
578
|
+
token: args.token,
|
|
579
|
+
agent: args.agent
|
|
580
|
+
});
|
|
581
|
+
}
|
|
582
|
+
});
|
|
583
|
+
const workflowCancel = defineExec({
|
|
584
|
+
meta: {
|
|
585
|
+
name: "cancel",
|
|
586
|
+
description: "Stop a running workflow run"
|
|
587
|
+
},
|
|
588
|
+
args: {
|
|
589
|
+
runId: runIdArg,
|
|
590
|
+
...workflowArgs
|
|
591
|
+
},
|
|
592
|
+
cwd: WORKFLOW_CWD,
|
|
593
|
+
async run({ args, cwd }) {
|
|
594
|
+
const { executeWorkflowCancel } = await import("./workflow-BBu5oEDw.mjs");
|
|
595
|
+
return executeWorkflowCancel(cwd, args.runId, {
|
|
596
|
+
server: args.server,
|
|
597
|
+
token: args.token,
|
|
598
|
+
agent: args.agent
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
});
|
|
513
602
|
const workflow = defineCommand({
|
|
514
603
|
meta: {
|
|
515
604
|
name: "workflow",
|
|
516
605
|
description: "Inspect and steer durable workflow runs"
|
|
517
606
|
},
|
|
518
607
|
subCommands: {
|
|
519
|
-
list:
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
},
|
|
524
|
-
args: workflowArgs,
|
|
525
|
-
cwd: WORKFLOW_CWD,
|
|
526
|
-
async run({ args, cwd }) {
|
|
527
|
-
const { executeWorkflowList } = await import("./workflow-BBu5oEDw.mjs");
|
|
528
|
-
return executeWorkflowList(cwd, {
|
|
529
|
-
server: args.server,
|
|
530
|
-
token: args.token,
|
|
531
|
-
agent: args.agent
|
|
532
|
-
});
|
|
533
|
-
}
|
|
534
|
-
}),
|
|
535
|
-
runs: defineExec({
|
|
536
|
-
meta: {
|
|
537
|
-
name: "runs",
|
|
538
|
-
description: "List recent runs of one workflow, newest first"
|
|
539
|
-
},
|
|
540
|
-
args: {
|
|
541
|
-
workflow: {
|
|
542
|
-
type: "positional",
|
|
543
|
-
description: "Workflow name",
|
|
544
|
-
required: true
|
|
545
|
-
},
|
|
546
|
-
limit: {
|
|
547
|
-
type: "string",
|
|
548
|
-
description: "How many runs to list"
|
|
549
|
-
},
|
|
550
|
-
...workflowArgs
|
|
551
|
-
},
|
|
552
|
-
cwd: WORKFLOW_CWD,
|
|
553
|
-
async run({ args, cwd }) {
|
|
554
|
-
const { executeWorkflowRuns } = await import("./workflow-BBu5oEDw.mjs");
|
|
555
|
-
const limit = args.limit === void 0 ? void 0 : Number(args.limit);
|
|
556
|
-
if (limit !== void 0 && !Number.isFinite(limit)) throw new CliError("bad_limit", "--limit must be a number");
|
|
557
|
-
return executeWorkflowRuns(cwd, args.workflow, {
|
|
558
|
-
server: args.server,
|
|
559
|
-
token: args.token,
|
|
560
|
-
agent: args.agent,
|
|
561
|
-
limit
|
|
562
|
-
});
|
|
563
|
-
}
|
|
564
|
-
}),
|
|
565
|
-
show: defineExec({
|
|
566
|
-
meta: {
|
|
567
|
-
name: "show",
|
|
568
|
-
description: "Show one run, including its output"
|
|
569
|
-
},
|
|
570
|
-
args: {
|
|
571
|
-
runId: runIdArg,
|
|
572
|
-
...workflowArgs
|
|
573
|
-
},
|
|
574
|
-
cwd: WORKFLOW_CWD,
|
|
575
|
-
async run({ args, cwd }) {
|
|
576
|
-
const { executeWorkflowShow } = await import("./workflow-BBu5oEDw.mjs");
|
|
577
|
-
return executeWorkflowShow(cwd, args.runId, {
|
|
578
|
-
server: args.server,
|
|
579
|
-
token: args.token,
|
|
580
|
-
agent: args.agent
|
|
581
|
-
});
|
|
582
|
-
}
|
|
583
|
-
}),
|
|
584
|
-
cancel: defineExec({
|
|
585
|
-
meta: {
|
|
586
|
-
name: "cancel",
|
|
587
|
-
description: "Stop a running workflow run"
|
|
588
|
-
},
|
|
589
|
-
args: {
|
|
590
|
-
runId: runIdArg,
|
|
591
|
-
...workflowArgs
|
|
592
|
-
},
|
|
593
|
-
cwd: WORKFLOW_CWD,
|
|
594
|
-
async run({ args, cwd }) {
|
|
595
|
-
const { executeWorkflowCancel } = await import("./workflow-BBu5oEDw.mjs");
|
|
596
|
-
return executeWorkflowCancel(cwd, args.runId, {
|
|
597
|
-
server: args.server,
|
|
598
|
-
token: args.token,
|
|
599
|
-
agent: args.agent
|
|
600
|
-
});
|
|
601
|
-
}
|
|
602
|
-
})
|
|
608
|
+
list: workflowList,
|
|
609
|
+
runs: workflowRuns,
|
|
610
|
+
show: workflowShow,
|
|
611
|
+
cancel: workflowCancel
|
|
603
612
|
}
|
|
604
613
|
});
|
|
605
614
|
//#endregion
|
|
@@ -630,225 +639,235 @@ function readCliVersion(dir) {
|
|
|
630
639
|
* commands that display it. Memoized because usage rendering reads it twice.
|
|
631
640
|
*/
|
|
632
641
|
let _version;
|
|
633
|
-
const
|
|
642
|
+
const mainMeta = {
|
|
643
|
+
name: "aai",
|
|
644
|
+
description: "Voice agent development kit",
|
|
645
|
+
get version() {
|
|
646
|
+
_version ??= readCliVersion(cliDir);
|
|
647
|
+
return _version;
|
|
648
|
+
}
|
|
649
|
+
};
|
|
650
|
+
const init = defineExec({
|
|
651
|
+
meta: {
|
|
652
|
+
name: "init",
|
|
653
|
+
description: "Scaffold a new agent project"
|
|
654
|
+
},
|
|
655
|
+
args: {
|
|
656
|
+
dir: {
|
|
657
|
+
type: "positional",
|
|
658
|
+
description: "Project directory",
|
|
659
|
+
required: false
|
|
660
|
+
},
|
|
661
|
+
force: {
|
|
662
|
+
type: "boolean",
|
|
663
|
+
alias: "f",
|
|
664
|
+
description: "Overwrite existing files"
|
|
665
|
+
},
|
|
666
|
+
template: {
|
|
667
|
+
type: "string",
|
|
668
|
+
alias: "t",
|
|
669
|
+
description: "Template to use (run `aai templates` for the list)"
|
|
670
|
+
},
|
|
671
|
+
server: sharedArgs.server,
|
|
672
|
+
yes: sharedArgs.yes,
|
|
673
|
+
json: sharedArgs.json,
|
|
674
|
+
skipDeploy: {
|
|
675
|
+
type: "boolean",
|
|
676
|
+
description: "Skip deploy after scaffolding"
|
|
677
|
+
}
|
|
678
|
+
},
|
|
679
|
+
cwd: "none",
|
|
680
|
+
async run({ args, mode }) {
|
|
681
|
+
const { executeInit } = await import("./init-BtJI306C.mjs");
|
|
682
|
+
return executeInit({
|
|
683
|
+
dir: args.dir,
|
|
684
|
+
force: args.force,
|
|
685
|
+
template: args.template,
|
|
686
|
+
yes: mode === "json" ? true : args.yes,
|
|
687
|
+
skipDeploy: args.skipDeploy,
|
|
688
|
+
server: args.server
|
|
689
|
+
}, mode === "json" ? { silent: true } : void 0);
|
|
690
|
+
}
|
|
691
|
+
});
|
|
692
|
+
const dev = defineExec({
|
|
693
|
+
meta: {
|
|
694
|
+
name: "dev",
|
|
695
|
+
description: "Start a local development server"
|
|
696
|
+
},
|
|
697
|
+
args: {
|
|
698
|
+
port: {
|
|
699
|
+
type: "string",
|
|
700
|
+
alias: "p",
|
|
701
|
+
description: "Port to listen on",
|
|
702
|
+
default: "3000"
|
|
703
|
+
},
|
|
704
|
+
watch: {
|
|
705
|
+
type: "boolean",
|
|
706
|
+
description: "Restart on file changes (also AAI_DEV_WATCH=1)"
|
|
707
|
+
},
|
|
708
|
+
json: sharedArgs.json
|
|
709
|
+
},
|
|
710
|
+
cwd: "agent",
|
|
711
|
+
async run({ args, cwd }) {
|
|
712
|
+
const { executeDev } = await import("./dev-BDykFvcc.mjs");
|
|
713
|
+
return executeDev({
|
|
714
|
+
cwd,
|
|
715
|
+
port: args.port,
|
|
716
|
+
watch: args.watch
|
|
717
|
+
});
|
|
718
|
+
}
|
|
719
|
+
});
|
|
720
|
+
const test = defineExec({
|
|
634
721
|
meta: {
|
|
635
|
-
name: "
|
|
636
|
-
description: "
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
722
|
+
name: "test",
|
|
723
|
+
description: "Run agent tests"
|
|
724
|
+
},
|
|
725
|
+
args: { json: sharedArgs.json },
|
|
726
|
+
cwd: "agent",
|
|
727
|
+
async run({ cwd }) {
|
|
728
|
+
const { executeTest } = await import("./test-CiLab-AA.mjs");
|
|
729
|
+
return executeTest(cwd);
|
|
730
|
+
}
|
|
731
|
+
});
|
|
732
|
+
const evalCommand = defineExec({
|
|
733
|
+
meta: {
|
|
734
|
+
name: "eval",
|
|
735
|
+
description: "Run agent behaviour evals against a live model"
|
|
736
|
+
},
|
|
737
|
+
args: { json: sharedArgs.json },
|
|
738
|
+
cwd: "agent",
|
|
739
|
+
async run({ cwd }) {
|
|
740
|
+
const { executeEval } = await import("./eval-0qEOdm0l.mjs");
|
|
741
|
+
return executeEval(cwd);
|
|
742
|
+
}
|
|
743
|
+
});
|
|
744
|
+
const build = defineExec({
|
|
745
|
+
meta: {
|
|
746
|
+
name: "build",
|
|
747
|
+
description: "Bundle agent without deploying"
|
|
748
|
+
},
|
|
749
|
+
args: {
|
|
750
|
+
json: sharedArgs.json,
|
|
751
|
+
skipTests: {
|
|
752
|
+
type: "boolean",
|
|
753
|
+
description: "Skip running tests before build"
|
|
754
|
+
},
|
|
755
|
+
skipTypecheck: {
|
|
756
|
+
type: "boolean",
|
|
757
|
+
description: "Skip type checking before build"
|
|
640
758
|
}
|
|
641
759
|
},
|
|
760
|
+
cwd: "agent",
|
|
761
|
+
async run({ args, cwd }) {
|
|
762
|
+
const { executeBuild } = await import("./build-BLlLOrng.mjs");
|
|
763
|
+
return executeBuild({
|
|
764
|
+
cwd,
|
|
765
|
+
skipTests: args.skipTests,
|
|
766
|
+
skipTypecheck: args.skipTypecheck
|
|
767
|
+
});
|
|
768
|
+
}
|
|
769
|
+
});
|
|
770
|
+
const deploy = defineExec({
|
|
771
|
+
meta: {
|
|
772
|
+
name: "deploy",
|
|
773
|
+
description: "(internal) used by studio Publish",
|
|
774
|
+
hidden: true
|
|
775
|
+
},
|
|
776
|
+
args: {
|
|
777
|
+
server: sharedArgs.server,
|
|
778
|
+
json: sharedArgs.json,
|
|
779
|
+
allowPreviewSlug: {
|
|
780
|
+
type: "boolean",
|
|
781
|
+
description: "Permit a `-preview`-suffixed slug (reserved for studio auto-previews; studio-internal — a slug you claim this way is subject to the preview reaper)"
|
|
782
|
+
},
|
|
783
|
+
skipTypecheck: {
|
|
784
|
+
type: "boolean",
|
|
785
|
+
description: "Skip type checking before deploy"
|
|
786
|
+
}
|
|
787
|
+
},
|
|
788
|
+
cwd: "agent",
|
|
789
|
+
async run({ args, cwd }) {
|
|
790
|
+
const { executeDeploy } = await import("./deploy-BzZ-r4iM.mjs");
|
|
791
|
+
return executeDeploy({
|
|
792
|
+
cwd,
|
|
793
|
+
server: args.server,
|
|
794
|
+
allowPreviewSlug: args.allowPreviewSlug,
|
|
795
|
+
skipTypecheck: args.skipTypecheck
|
|
796
|
+
});
|
|
797
|
+
}
|
|
798
|
+
});
|
|
799
|
+
const del = defineExec({
|
|
800
|
+
meta: {
|
|
801
|
+
name: "delete",
|
|
802
|
+
description: "Delete the studio project and its deployed agents"
|
|
803
|
+
},
|
|
804
|
+
args: {
|
|
805
|
+
server: sharedArgs.server,
|
|
806
|
+
json: sharedArgs.json
|
|
807
|
+
},
|
|
808
|
+
cwd: "any",
|
|
809
|
+
async run({ args, cwd }) {
|
|
810
|
+
const { executeDelete } = await import("./delete-X_CRgCf6.mjs");
|
|
811
|
+
return executeDelete({
|
|
812
|
+
cwd,
|
|
813
|
+
server: args.server
|
|
814
|
+
});
|
|
815
|
+
}
|
|
816
|
+
});
|
|
817
|
+
const login = defineExec({
|
|
818
|
+
meta: {
|
|
819
|
+
name: "login",
|
|
820
|
+
description: "Link your signed-in browser account and save your API key"
|
|
821
|
+
},
|
|
822
|
+
args: {
|
|
823
|
+
server: sharedArgs.server,
|
|
824
|
+
json: sharedArgs.json
|
|
825
|
+
},
|
|
826
|
+
cwd: "none",
|
|
827
|
+
async run({ args }) {
|
|
828
|
+
const { executeLogin } = await import("./login-DeUETobb.mjs");
|
|
829
|
+
return executeLogin({ server: args.server });
|
|
830
|
+
}
|
|
831
|
+
});
|
|
832
|
+
const templates = defineExec({
|
|
833
|
+
meta: {
|
|
834
|
+
name: "templates",
|
|
835
|
+
description: "List available project templates"
|
|
836
|
+
},
|
|
837
|
+
args: { json: sharedArgs.json },
|
|
838
|
+
cwd: "none",
|
|
839
|
+
async run({ mode }) {
|
|
840
|
+
const { listTemplates } = await import("./_templates-0Zr2z6yA.mjs");
|
|
841
|
+
const names = await listTemplates();
|
|
842
|
+
if (mode === "human") {
|
|
843
|
+
for (const name of names) log.message(name);
|
|
844
|
+
log.info("Scaffold one with `aai init --template <name>`.");
|
|
845
|
+
}
|
|
846
|
+
return {
|
|
847
|
+
ok: true,
|
|
848
|
+
data: { templates: names }
|
|
849
|
+
};
|
|
850
|
+
}
|
|
851
|
+
});
|
|
852
|
+
const mainCommand = defineCommand({
|
|
853
|
+
meta: mainMeta,
|
|
642
854
|
subCommands: {
|
|
643
|
-
init
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
args: {
|
|
649
|
-
dir: {
|
|
650
|
-
type: "positional",
|
|
651
|
-
description: "Project directory",
|
|
652
|
-
required: false
|
|
653
|
-
},
|
|
654
|
-
force: {
|
|
655
|
-
type: "boolean",
|
|
656
|
-
alias: "f",
|
|
657
|
-
description: "Overwrite existing files"
|
|
658
|
-
},
|
|
659
|
-
template: {
|
|
660
|
-
type: "string",
|
|
661
|
-
alias: "t",
|
|
662
|
-
description: "Template to use (run `aai templates` for the list)"
|
|
663
|
-
},
|
|
664
|
-
server: sharedArgs.server,
|
|
665
|
-
yes: sharedArgs.yes,
|
|
666
|
-
json: sharedArgs.json,
|
|
667
|
-
skipDeploy: {
|
|
668
|
-
type: "boolean",
|
|
669
|
-
description: "Skip deploy after scaffolding"
|
|
670
|
-
}
|
|
671
|
-
},
|
|
672
|
-
cwd: "none",
|
|
673
|
-
async run({ args, mode }) {
|
|
674
|
-
const { executeInit } = await import("./init-BRfoc2EK.mjs");
|
|
675
|
-
return executeInit({
|
|
676
|
-
dir: args.dir,
|
|
677
|
-
force: args.force,
|
|
678
|
-
template: args.template,
|
|
679
|
-
yes: mode === "json" ? true : args.yes,
|
|
680
|
-
skipDeploy: args.skipDeploy,
|
|
681
|
-
server: args.server
|
|
682
|
-
}, mode === "json" ? { silent: true } : void 0);
|
|
683
|
-
}
|
|
684
|
-
}),
|
|
685
|
-
dev: defineExec({
|
|
686
|
-
meta: {
|
|
687
|
-
name: "dev",
|
|
688
|
-
description: "Start a local development server"
|
|
689
|
-
},
|
|
690
|
-
args: {
|
|
691
|
-
port: {
|
|
692
|
-
type: "string",
|
|
693
|
-
alias: "p",
|
|
694
|
-
description: "Port to listen on",
|
|
695
|
-
default: "3000"
|
|
696
|
-
},
|
|
697
|
-
watch: {
|
|
698
|
-
type: "boolean",
|
|
699
|
-
description: "Restart on file changes (also AAI_DEV_WATCH=1)"
|
|
700
|
-
},
|
|
701
|
-
json: sharedArgs.json
|
|
702
|
-
},
|
|
703
|
-
cwd: "agent",
|
|
704
|
-
async run({ args, cwd }) {
|
|
705
|
-
const { executeDev } = await import("./dev-BfVl1uBA.mjs");
|
|
706
|
-
return executeDev({
|
|
707
|
-
cwd,
|
|
708
|
-
port: args.port,
|
|
709
|
-
watch: args.watch
|
|
710
|
-
});
|
|
711
|
-
}
|
|
712
|
-
}),
|
|
713
|
-
test: defineExec({
|
|
714
|
-
meta: {
|
|
715
|
-
name: "test",
|
|
716
|
-
description: "Run agent tests"
|
|
717
|
-
},
|
|
718
|
-
args: { json: sharedArgs.json },
|
|
719
|
-
cwd: "agent",
|
|
720
|
-
async run({ cwd }) {
|
|
721
|
-
const { executeTest } = await import("./test-CvwgeVSQ.mjs");
|
|
722
|
-
return executeTest(cwd);
|
|
723
|
-
}
|
|
724
|
-
}),
|
|
725
|
-
eval: defineExec({
|
|
726
|
-
meta: {
|
|
727
|
-
name: "eval",
|
|
728
|
-
description: "Run agent behaviour evals against a live model"
|
|
729
|
-
},
|
|
730
|
-
args: { json: sharedArgs.json },
|
|
731
|
-
cwd: "agent",
|
|
732
|
-
async run({ cwd }) {
|
|
733
|
-
const { executeEval } = await import("./eval-DwNwdqmS.mjs");
|
|
734
|
-
return executeEval(cwd);
|
|
735
|
-
}
|
|
736
|
-
}),
|
|
737
|
-
build: defineExec({
|
|
738
|
-
meta: {
|
|
739
|
-
name: "build",
|
|
740
|
-
description: "Bundle agent without deploying"
|
|
741
|
-
},
|
|
742
|
-
args: {
|
|
743
|
-
json: sharedArgs.json,
|
|
744
|
-
skipTests: {
|
|
745
|
-
type: "boolean",
|
|
746
|
-
description: "Skip running tests before build"
|
|
747
|
-
},
|
|
748
|
-
skipTypecheck: {
|
|
749
|
-
type: "boolean",
|
|
750
|
-
description: "Skip type checking before build"
|
|
751
|
-
}
|
|
752
|
-
},
|
|
753
|
-
cwd: "agent",
|
|
754
|
-
async run({ args, cwd }) {
|
|
755
|
-
const { executeBuild } = await import("./build-DKC2e9o_.mjs");
|
|
756
|
-
return executeBuild({
|
|
757
|
-
cwd,
|
|
758
|
-
skipTests: args.skipTests,
|
|
759
|
-
skipTypecheck: args.skipTypecheck
|
|
760
|
-
});
|
|
761
|
-
}
|
|
762
|
-
}),
|
|
855
|
+
init,
|
|
856
|
+
dev,
|
|
857
|
+
test,
|
|
858
|
+
eval: evalCommand,
|
|
859
|
+
build,
|
|
763
860
|
list,
|
|
764
861
|
pull,
|
|
765
862
|
push,
|
|
766
863
|
publish,
|
|
767
|
-
deploy
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
description: "(internal) used by studio Publish",
|
|
771
|
-
hidden: true
|
|
772
|
-
},
|
|
773
|
-
args: {
|
|
774
|
-
server: sharedArgs.server,
|
|
775
|
-
json: sharedArgs.json,
|
|
776
|
-
allowPreviewSlug: {
|
|
777
|
-
type: "boolean",
|
|
778
|
-
description: "Permit a `-preview`-suffixed slug (reserved for studio auto-previews; studio-internal — a slug you claim this way is subject to the preview reaper)"
|
|
779
|
-
},
|
|
780
|
-
skipTypecheck: {
|
|
781
|
-
type: "boolean",
|
|
782
|
-
description: "Skip type checking before deploy"
|
|
783
|
-
}
|
|
784
|
-
},
|
|
785
|
-
cwd: "agent",
|
|
786
|
-
async run({ args, cwd }) {
|
|
787
|
-
const { executeDeploy } = await import("./deploy-CchW5pmw.mjs");
|
|
788
|
-
return executeDeploy({
|
|
789
|
-
cwd,
|
|
790
|
-
server: args.server,
|
|
791
|
-
allowPreviewSlug: args.allowPreviewSlug,
|
|
792
|
-
skipTypecheck: args.skipTypecheck
|
|
793
|
-
});
|
|
794
|
-
}
|
|
795
|
-
}),
|
|
796
|
-
delete: defineExec({
|
|
797
|
-
meta: {
|
|
798
|
-
name: "delete",
|
|
799
|
-
description: "Delete the studio project and its deployed agents"
|
|
800
|
-
},
|
|
801
|
-
args: {
|
|
802
|
-
server: sharedArgs.server,
|
|
803
|
-
json: sharedArgs.json
|
|
804
|
-
},
|
|
805
|
-
cwd: "any",
|
|
806
|
-
async run({ args, cwd }) {
|
|
807
|
-
const { executeDelete } = await import("./delete-X_CRgCf6.mjs");
|
|
808
|
-
return executeDelete({
|
|
809
|
-
cwd,
|
|
810
|
-
server: args.server
|
|
811
|
-
});
|
|
812
|
-
}
|
|
813
|
-
}),
|
|
814
|
-
login: defineExec({
|
|
815
|
-
meta: {
|
|
816
|
-
name: "login",
|
|
817
|
-
description: "Link your signed-in browser account and save your API key"
|
|
818
|
-
},
|
|
819
|
-
args: {
|
|
820
|
-
server: sharedArgs.server,
|
|
821
|
-
json: sharedArgs.json
|
|
822
|
-
},
|
|
823
|
-
cwd: "none",
|
|
824
|
-
async run({ args }) {
|
|
825
|
-
const { executeLogin } = await import("./login-BBuM1sxH.mjs");
|
|
826
|
-
return executeLogin({ server: args.server });
|
|
827
|
-
}
|
|
828
|
-
}),
|
|
864
|
+
deploy,
|
|
865
|
+
delete: del,
|
|
866
|
+
login,
|
|
829
867
|
secret,
|
|
830
868
|
logs,
|
|
831
869
|
workflow,
|
|
832
|
-
templates
|
|
833
|
-
meta: {
|
|
834
|
-
name: "templates",
|
|
835
|
-
description: "List available project templates"
|
|
836
|
-
},
|
|
837
|
-
args: { json: sharedArgs.json },
|
|
838
|
-
cwd: "none",
|
|
839
|
-
async run({ mode }) {
|
|
840
|
-
const { listTemplates } = await import("./_templates-0Zr2z6yA.mjs");
|
|
841
|
-
const names = await listTemplates();
|
|
842
|
-
if (mode === "human") {
|
|
843
|
-
for (const name of names) log.message(name);
|
|
844
|
-
log.info("Scaffold one with `aai init --template <name>`.");
|
|
845
|
-
}
|
|
846
|
-
return {
|
|
847
|
-
ok: true,
|
|
848
|
-
data: { templates: names }
|
|
849
|
-
};
|
|
850
|
-
}
|
|
851
|
-
})
|
|
870
|
+
templates
|
|
852
871
|
}
|
|
853
872
|
});
|
|
854
873
|
if (process.env.VITEST !== "true") {
|