@alexkroman1/aai-cli 10.0.1 → 12.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.
Files changed (45) hide show
  1. package/dist/{_bundler-B31MqYaD.mjs → _bundler-C31rlcYz.mjs} +1 -1
  2. package/dist/{_dev-server-Bo5dSBzQ.mjs → _dev-server-DWvkNoIS.mjs} +3 -3
  3. package/dist/{_vite-env-BNveawd1.mjs → _vite-env-D9Qj6KPX.mjs} +4 -2
  4. package/dist/_workflow-determinism-f9J-5Zlj.mjs +206 -0
  5. package/dist/_workflow-determinism.d.ts +118 -0
  6. package/dist/{build-DKC2e9o_.mjs → build-BLlLOrng.mjs} +4 -2
  7. package/dist/cli.mjs +372 -353
  8. package/dist/{client-bundler-CWnG42cU.mjs → client-bundler-j5c46x0G.mjs} +3 -2
  9. package/dist/client-bundler.mjs +1 -1
  10. package/dist/{deploy-CchW5pmw.mjs → deploy-BzZ-r4iM.mjs} +6 -4
  11. package/dist/{dev-BfVl1uBA.mjs → dev-BDykFvcc.mjs} +1 -1
  12. package/dist/{eval-DwNwdqmS.mjs → eval-0qEOdm0l.mjs} +1 -1
  13. package/dist/{init-BRfoc2EK.mjs → init-BtJI306C.mjs} +1 -1
  14. package/dist/{login-BBuM1sxH.mjs → login-DeUETobb.mjs} +4 -1
  15. package/dist/scaffold/CLAUDE.md +190 -11
  16. package/dist/scaffold/package.json +4 -4
  17. package/dist/{studio-wVWNLREn.mjs → studio-BxAS_FQQ.mjs} +4 -1
  18. package/dist/templates/call-audit/agent.test.ts +105 -26
  19. package/dist/templates/call-audit/workflows/audit.ts +9 -26
  20. package/dist/templates/dispatch-center/client.tsx +36 -2
  21. package/dist/templates/infocom-adventure/client.tsx +37 -9
  22. package/dist/templates/link-digest/agent.eval.test.ts +1 -1
  23. package/dist/templates/link-digest/agent.test.ts +164 -8
  24. package/dist/templates/link-digest/workflows/digest.ts +63 -20
  25. package/dist/templates/podcast-digest/agent.eval.test.ts +7 -4
  26. package/dist/templates/podcast-digest/agent.test.ts +265 -24
  27. package/dist/templates/podcast-digest/workflows/digest.ts +2 -2
  28. package/dist/templates/podcast-digest/workflows/feeds.ts +78 -73
  29. package/dist/templates/recap-workflow/agent.test.ts +206 -20
  30. package/dist/templates/recap-workflow/workflows/recap.ts +17 -14
  31. package/dist/templates/redline/agent.test.ts +137 -11
  32. package/dist/templates/research-workflow/agent.eval.test.ts +1 -1
  33. package/dist/templates/research-workflow/agent.test.ts +131 -9
  34. package/dist/templates/research-workflow/workflows/research.ts +1 -1
  35. package/dist/templates/retail/client.tsx +30 -2
  36. package/dist/templates/spoken-summary/agent.eval.test.ts +4 -1
  37. package/dist/templates/spoken-summary/agent.test.ts +117 -8
  38. package/dist/templates/spoken-summary/workflows/summarize.ts +1 -1
  39. package/dist/templates/transcription-workflow/agent.test.ts +127 -13
  40. package/dist/templates/transcription-workflow/workflows/batch.ts +6 -6
  41. package/dist/templates/transcription-workflow/workflows/stream.ts +4 -3
  42. package/dist/templates/transcription-workflow/workflows/transcribe.ts +4 -23
  43. package/dist/{test-CvwgeVSQ.mjs → test-CiLab-AA.mjs} +2 -1
  44. package/dist/worker-bundler.mjs +1 -1
  45. 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: defineExec({
247
- meta: {
248
- name: "put",
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-wVWNLREn.mjs");
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-wVWNLREn.mjs");
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-wVWNLREn.mjs");
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-wVWNLREn.mjs");
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: defineExec({
520
- meta: {
521
- name: "list",
522
- description: "List the workflows this agent declares"
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 mainCommand = defineCommand({
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: "aai",
636
- description: "Voice agent development kit",
637
- get version() {
638
- _version ??= readCliVersion(cliDir);
639
- return _version;
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: defineExec({
644
- meta: {
645
- name: "init",
646
- description: "Scaffold a new agent project"
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: defineExec({
768
- meta: {
769
- name: "deploy",
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: 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
- })
870
+ templates
852
871
  }
853
872
  });
854
873
  if (process.env.VITEST !== "true") {