@alexkroman1/aai-cli 7.0.0 → 8.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 (122) hide show
  1. package/README.md +1 -0
  2. package/dist/{_bundler-B4RqNF5Z.mjs → _bundler-CDuYl5Gb.mjs} +1 -1
  3. package/dist/{_dev-server-CiKFH9qw.mjs → _dev-server-Me06wgeF.mjs} +2 -2
  4. package/dist/{_init-CE4HKdgV.mjs → _init-BhEfQ6Yi.mjs} +1 -1
  5. package/dist/_resource-commands.d.ts +23 -0
  6. package/dist/{_slug-api-nRFaBEPJ.mjs → _slug-api-z-USxPtL.mjs} +14 -10
  7. package/dist/_slug-api.d.ts +5 -2
  8. package/dist/{_templates-FI3xPEMj.mjs → _templates-4WcKOjS5.mjs} +4 -5
  9. package/dist/_templates.d.ts +3 -4
  10. package/dist/{build-6jfaakgc.mjs → build-BBxf8vom.mjs} +2 -2
  11. package/dist/cli.mjs +338 -346
  12. package/dist/{deploy-DvYeD8ia.mjs → deploy-DRC8jWr8.mjs} +1 -1
  13. package/dist/{dev-B59JIfWO.mjs → dev-BvcctCn2.mjs} +1 -1
  14. package/dist/eval-DfQ8cm5p.mjs +56 -0
  15. package/dist/eval.d.ts +43 -0
  16. package/dist/{init-CpJVjEg0.mjs → init-CUo87gcI.mjs} +2 -2
  17. package/dist/{logs-9q-psa4q.mjs → logs-CQ2T46dr.mjs} +1 -1
  18. package/dist/scaffold/CLAUDE.md +409 -68
  19. package/dist/scaffold/package.json +5 -4
  20. package/dist/scaffold/server.mjs +10 -3
  21. package/dist/scaffold/tsconfig.json +0 -1
  22. package/dist/{secret-CVvSLIDV.mjs → secret-Ct34kdgU.mjs} +1 -1
  23. package/dist/{storage-BvUrnvM3.mjs → storage-i_79ZwAR.mjs} +1 -1
  24. package/dist/{studio--MUV0cid.mjs → studio-CzTzPqe1.mjs} +1 -1
  25. package/dist/templates/briefing-desk/agent.test.ts +350 -0
  26. package/dist/templates/briefing-desk/agent.ts +30 -0
  27. package/dist/templates/briefing-desk/shared.ts +200 -0
  28. package/dist/templates/briefing-desk/system-prompt.md +39 -0
  29. package/dist/templates/briefing-desk/tools/briefing_so_far.ts +35 -0
  30. package/dist/templates/briefing-desk/tools/research_topic.ts +88 -0
  31. package/dist/templates/briefing-desk/tools/verify_claim.ts +77 -0
  32. package/dist/templates/call-audit/agent.eval.test.ts +474 -0
  33. package/dist/templates/code-interpreter/agent.eval.test.ts +165 -0
  34. package/dist/templates/dispatch-center/agent.eval.test.ts +349 -0
  35. package/dist/templates/embedded-assets/agent.eval.test.ts +138 -0
  36. package/dist/templates/health-assistant/agent.eval.test.ts +167 -0
  37. package/dist/templates/infocom-adventure/agent.eval.test.ts +158 -0
  38. package/dist/templates/infocom-adventure/agent.test.ts +49 -18
  39. package/dist/templates/infocom-adventure/agent.ts +21 -0
  40. package/dist/templates/infocom-adventure/shared.ts +20 -9
  41. package/dist/templates/infocom-adventure/system-prompt.md +1 -1
  42. package/dist/templates/infocom-adventure/tools/game_state_move.ts +3 -2
  43. package/dist/templates/link-digest/agent.eval.test.ts +195 -0
  44. package/dist/templates/math-buddy/agent.eval.test.ts +146 -0
  45. package/dist/templates/night-owl/agent.eval.test.ts +272 -0
  46. package/dist/templates/personal-finance/agent.eval.test.ts +168 -0
  47. package/dist/templates/personal-finance/system-prompt.md +4 -0
  48. package/dist/templates/pipeline-simple/agent.eval.test.ts +78 -0
  49. package/dist/templates/pipeline-simple/agent.ts +2 -2
  50. package/dist/templates/pizza-ordering/agent.eval.test.ts +171 -0
  51. package/dist/templates/pizza-ordering/agent.test.ts +15 -0
  52. package/dist/templates/pizza-ordering/shared.ts +20 -1
  53. package/dist/templates/pizza-ordering/system-prompt.md +6 -0
  54. package/dist/templates/plan-and-execute/agent.eval.test.ts +209 -0
  55. package/dist/templates/podcast-digest/agent.eval.test.ts +411 -0
  56. package/dist/templates/podcast-digest/agent.test.ts +30 -59
  57. package/dist/templates/podcast-digest/agent.ts +1 -1
  58. package/dist/templates/podcast-digest/workflows/digest.ts +52 -19
  59. package/dist/templates/podcast-digest/workflows/slack.ts +48 -169
  60. package/dist/templates/recap-workflow/agent.eval.test.ts +366 -0
  61. package/dist/templates/redline/agent.eval.test.ts +209 -0
  62. package/dist/templates/research-workflow/agent.eval.test.ts +329 -0
  63. package/dist/templates/retail/address.ts +87 -1
  64. package/dist/templates/retail/agent.eval.test.ts +314 -0
  65. package/dist/templates/retail/agent.test.ts +171 -91
  66. package/dist/templates/retail/agent.ts +35 -1
  67. package/dist/templates/retail/cancel.ts +116 -0
  68. package/dist/templates/retail/client.tsx +39 -0
  69. package/dist/templates/retail/payment.ts +107 -0
  70. package/dist/templates/retail/pending.test.ts +196 -0
  71. package/dist/templates/retail/pending.ts +137 -0
  72. package/dist/templates/retail/registry.test.ts +119 -8
  73. package/dist/templates/retail/returns.ts +102 -0
  74. package/dist/templates/retail/shared.test.ts +42 -0
  75. package/dist/templates/retail/shared.ts +35 -0
  76. package/dist/templates/retail/store.test.ts +6 -4
  77. package/dist/templates/retail/store.ts +113 -57
  78. package/dist/templates/retail/swap.test.ts +4 -4
  79. package/dist/templates/retail/swap.ts +248 -15
  80. package/dist/templates/retail/system-prompt.md +62 -30
  81. package/dist/templates/retail/tools/cancel_change.ts +33 -0
  82. package/dist/templates/retail/tools/cancel_pending_order.ts +15 -59
  83. package/dist/templates/retail/tools/confirm_change.ts +42 -0
  84. package/dist/templates/retail/tools/exchange_delivered_order_items.ts +21 -66
  85. package/dist/templates/retail/tools/modify_pending_order_address.ts +12 -24
  86. package/dist/templates/retail/tools/modify_pending_order_items.ts +22 -60
  87. package/dist/templates/retail/tools/modify_pending_order_payment.ts +15 -77
  88. package/dist/templates/retail/tools/modify_user_address.ts +12 -15
  89. package/dist/templates/retail/tools/return_delivered_order_items.ts +16 -71
  90. package/dist/templates/retail/tools/transfer_to_human_agents.ts +4 -2
  91. package/dist/templates/simple/agent.eval.test.ts +54 -0
  92. package/dist/templates/solo-rpg/agent.eval.test.ts +320 -0
  93. package/dist/templates/spoken-summary/agent.eval.test.ts +342 -0
  94. package/dist/templates/support-line/agent.eval.test.ts +273 -0
  95. package/dist/templates/support-line/system-prompt.md +2 -1
  96. package/dist/templates/support-line/tools/answer_question.ts +56 -7
  97. package/dist/templates/transcription-workflow/agent.eval.test.ts +234 -0
  98. package/dist/templates/travel-concierge/agent.eval.test.ts +323 -0
  99. package/dist/templates/travel-concierge/agent.test.ts +110 -10
  100. package/dist/templates/travel-concierge/agent.ts +18 -9
  101. package/dist/templates/travel-concierge/shared.ts +110 -9
  102. package/dist/templates/travel-concierge/system-prompt.md +7 -1
  103. package/dist/templates/travel-concierge/tools/book_car_rental.ts +6 -3
  104. package/dist/templates/travel-concierge/tools/book_excursion.ts +6 -3
  105. package/dist/templates/travel-concierge/tools/book_hotel.ts +6 -3
  106. package/dist/templates/travel-concierge/tools/cancel_ticket.ts +6 -3
  107. package/dist/templates/travel-concierge/tools/search_car_rentals.ts +9 -5
  108. package/dist/templates/travel-concierge/tools/search_excursions.ts +9 -5
  109. package/dist/templates/travel-concierge/tools/search_flights.ts +9 -6
  110. package/dist/templates/travel-concierge/tools/search_hotels.ts +9 -5
  111. package/dist/templates/travel-concierge/tools/update_ticket.ts +6 -3
  112. package/dist/templates/web-researcher/agent.eval.test.ts +121 -0
  113. package/dist/templates/web-researcher/system-prompt.md +15 -4
  114. package/dist/{test-9kPKJI-w.mjs → test-BvyT6sAc.mjs} +24 -10
  115. package/dist/test.d.ts +29 -5
  116. package/dist/{worker-bundler-COxnqstQ.mjs → worker-bundler-CCVEDjm1.mjs} +45 -25
  117. package/dist/worker-bundler.mjs +1 -1
  118. package/dist/{workflow-D2AQf2Pl.mjs → workflow-BflATMmU.mjs} +19 -11
  119. package/package.json +5 -5
  120. package/dist/eject-C9WJyyr2.mjs +0 -116
  121. package/dist/eject.d.ts +0 -60
  122. package/dist/templates/infocom-adventure/tools/game_state_history.ts +0 -14
package/dist/cli.mjs CHANGED
@@ -237,8 +237,191 @@ function defineExec(spec) {
237
237
  }
238
238
  });
239
239
  }
240
+ const secret = defineCommand({
241
+ meta: {
242
+ name: "secret",
243
+ description: "Manage agent secrets"
244
+ },
245
+ 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-Ct34kdgU.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-Ct34kdgU.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-Ct34kdgU.mjs");
300
+ return executeSecretList(cwd, args.server);
301
+ }
302
+ })
303
+ }
304
+ });
305
+ /** An optional `[dir]` positional, resolved against the working directory. */
306
+ function resolveDirArg(cwd, dir) {
307
+ return dir ? path.resolve(cwd, dir) : cwd;
308
+ }
309
+ /**
310
+ * The optional `[dir]` positional the project-scoped subcommands share.
311
+ *
312
+ * Named for what it is rather than for `storage`, which was the only group
313
+ * that had one when it was written — `logs` takes the same positional and
314
+ * read as borrowing another command's arg.
315
+ */
316
+ const dirArg = {
317
+ type: "positional",
318
+ description: "Project directory",
319
+ required: false
320
+ };
321
+ const storageStatus = defineExec({
322
+ meta: {
323
+ name: "status",
324
+ description: "Show whether storage is enabled"
325
+ },
326
+ args: {
327
+ dir: dirArg,
328
+ server: sharedArgs.server,
329
+ json: sharedArgs.json
330
+ },
331
+ cwd: "any",
332
+ async run({ args, cwd }) {
333
+ const { executeStorageStatus } = await import("./storage-i_79ZwAR.mjs");
334
+ return executeStorageStatus(resolveDirArg(cwd, args.dir), args.server);
335
+ }
336
+ });
337
+ const storageEnable = defineExec({
338
+ meta: {
339
+ name: "enable",
340
+ description: "Enable the agent's app database"
341
+ },
342
+ args: {
343
+ dir: dirArg,
344
+ server: sharedArgs.server,
345
+ json: sharedArgs.json
346
+ },
347
+ cwd: "any",
348
+ async run({ args, cwd }) {
349
+ const { executeStorageEnable } = await import("./storage-i_79ZwAR.mjs");
350
+ return executeStorageEnable(resolveDirArg(cwd, args.dir), args.server);
351
+ }
352
+ });
353
+ const storageDisable = defineExec({
354
+ meta: {
355
+ name: "disable",
356
+ description: "Disable storage and DROP the database schema with all its data"
357
+ },
358
+ args: {
359
+ dir: dirArg,
360
+ force: {
361
+ type: "boolean",
362
+ alias: "f",
363
+ description: "Skip confirmation prompt"
364
+ },
365
+ server: sharedArgs.server,
366
+ json: sharedArgs.json
367
+ },
368
+ cwd: "any",
369
+ async run({ args, cwd }) {
370
+ const { executeStorageDisable } = await import("./storage-i_79ZwAR.mjs");
371
+ return executeStorageDisable(resolveDirArg(cwd, args.dir), {
372
+ server: args.server,
373
+ force: args.force
374
+ });
375
+ }
376
+ });
377
+ const logs = defineExec({
378
+ meta: {
379
+ name: "logs",
380
+ description: "Show what the deployed agent has printed"
381
+ },
382
+ args: {
383
+ dir: dirArg,
384
+ follow: {
385
+ type: "boolean",
386
+ alias: "f",
387
+ description: "Keep printing new output"
388
+ },
389
+ server: sharedArgs.server,
390
+ json: sharedArgs.json
391
+ },
392
+ cwd: "any",
393
+ async run({ args, cwd }) {
394
+ const { executeLogs } = await import("./logs-CQ2T46dr.mjs");
395
+ return executeLogs(resolveDirArg(cwd, args.dir), {
396
+ server: args.server,
397
+ follow: args.follow
398
+ });
399
+ }
400
+ });
401
+ const storage = defineCommand({
402
+ meta: {
403
+ name: "storage",
404
+ description: "Manage the agent's app database"
405
+ },
406
+ subCommands: {
407
+ status: storageStatus,
408
+ enable: storageEnable,
409
+ disable: storageDisable
410
+ }
411
+ });
240
412
  //#endregion
241
413
  //#region _studio-commands.ts
414
+ /**
415
+ * The fast-forward override `push` and `publish` share — `publish` pushes
416
+ * first, so the two must always describe the same thing to the user.
417
+ * `pull`'s `--force` is a different act (overwriting local files) and keeps
418
+ * its own wording.
419
+ */
420
+ const forceArg = {
421
+ type: "boolean",
422
+ alias: "f",
423
+ description: "Overwrite studio-side changes instead of failing the fast-forward check"
424
+ };
242
425
  const list = defineExec({
243
426
  meta: {
244
427
  name: "list",
@@ -250,7 +433,7 @@ const list = defineExec({
250
433
  },
251
434
  cwd: "any",
252
435
  async run({ args, cwd }) {
253
- const { executeList } = await import("./studio--MUV0cid.mjs");
436
+ const { executeList } = await import("./studio-CzTzPqe1.mjs");
254
437
  return executeList({
255
438
  cwd,
256
439
  server: args.server
@@ -283,7 +466,7 @@ const pull = defineExec({
283
466
  },
284
467
  cwd: "any",
285
468
  async run({ args, cwd }) {
286
- const { executePull } = await import("./studio--MUV0cid.mjs");
469
+ const { executePull } = await import("./studio-CzTzPqe1.mjs");
287
470
  return executePull({
288
471
  cwd,
289
472
  project: args.project,
@@ -299,17 +482,13 @@ const push = defineExec({
299
482
  description: "Sync this project's source to its studio workspace"
300
483
  },
301
484
  args: {
302
- force: {
303
- type: "boolean",
304
- alias: "f",
305
- description: "Overwrite studio-side changes instead of failing the fast-forward check"
306
- },
485
+ force: forceArg,
307
486
  server: sharedArgs.server,
308
487
  json: sharedArgs.json
309
488
  },
310
489
  cwd: "agent",
311
490
  async run({ args, cwd }) {
312
- const { executePush } = await import("./studio--MUV0cid.mjs");
491
+ const { executePush } = await import("./studio-CzTzPqe1.mjs");
313
492
  return executePush({
314
493
  cwd,
315
494
  server: args.server,
@@ -323,11 +502,7 @@ const publish = defineExec({
323
502
  description: "Push to the studio and deploy to production (the studio's Publish button)"
324
503
  },
325
504
  args: {
326
- force: {
327
- type: "boolean",
328
- alias: "f",
329
- description: "Overwrite studio-side changes instead of failing the fast-forward check"
330
- },
505
+ force: forceArg,
331
506
  server: sharedArgs.server,
332
507
  json: sharedArgs.json,
333
508
  skipTypecheck: {
@@ -337,7 +512,7 @@ const publish = defineExec({
337
512
  },
338
513
  cwd: "agent",
339
514
  async run({ args, cwd }) {
340
- const { executePublish } = await import("./studio--MUV0cid.mjs");
515
+ const { executePublish } = await import("./studio-CzTzPqe1.mjs");
341
516
  return executePublish({
342
517
  cwd,
343
518
  server: args.server,
@@ -404,7 +579,7 @@ const workflow = defineCommand({
404
579
  args: workflowArgs,
405
580
  cwd: WORKFLOW_CWD,
406
581
  async run({ args, cwd }) {
407
- const { executeWorkflowList } = await import("./workflow-D2AQf2Pl.mjs");
582
+ const { executeWorkflowList } = await import("./workflow-BflATMmU.mjs");
408
583
  return executeWorkflowList(cwd, {
409
584
  server: args.server,
410
585
  token: args.token
@@ -430,7 +605,7 @@ const workflow = defineCommand({
430
605
  },
431
606
  cwd: WORKFLOW_CWD,
432
607
  async run({ args, cwd }) {
433
- const { executeWorkflowRuns } = await import("./workflow-D2AQf2Pl.mjs");
608
+ const { executeWorkflowRuns } = await import("./workflow-BflATMmU.mjs");
434
609
  const limit = args.limit === void 0 ? void 0 : Number(args.limit);
435
610
  if (limit !== void 0 && !Number.isFinite(limit)) throw new CliError("bad_limit", "--limit must be a number");
436
611
  return executeWorkflowRuns(cwd, args.workflow, {
@@ -451,7 +626,7 @@ const workflow = defineCommand({
451
626
  },
452
627
  cwd: WORKFLOW_CWD,
453
628
  async run({ args, cwd }) {
454
- const { executeWorkflowShow } = await import("./workflow-D2AQf2Pl.mjs");
629
+ const { executeWorkflowShow } = await import("./workflow-BflATMmU.mjs");
455
630
  return executeWorkflowShow(cwd, args.runId, {
456
631
  server: args.server,
457
632
  token: args.token
@@ -469,7 +644,7 @@ const workflow = defineCommand({
469
644
  },
470
645
  cwd: WORKFLOW_CWD,
471
646
  async run({ args, cwd }) {
472
- const { executeWorkflowCancel } = await import("./workflow-D2AQf2Pl.mjs");
647
+ const { executeWorkflowCancel } = await import("./workflow-BflATMmU.mjs");
473
648
  return executeWorkflowCancel(cwd, args.runId, {
474
649
  server: args.server,
475
650
  token: args.token
@@ -506,365 +681,182 @@ function readCliVersion(dir) {
506
681
  * commands that display it. Memoized because usage rendering reads it twice.
507
682
  */
508
683
  let _version;
509
- const mainMeta = {
510
- name: "aai",
511
- description: "Voice agent development kit",
512
- get version() {
513
- _version ??= readCliVersion(cliDir);
514
- return _version;
515
- }
516
- };
517
- const init = defineExec({
518
- meta: {
519
- name: "init",
520
- description: "Scaffold a new agent project"
521
- },
522
- args: {
523
- dir: {
524
- type: "positional",
525
- description: "Project directory",
526
- required: false
527
- },
528
- force: {
529
- type: "boolean",
530
- alias: "f",
531
- description: "Overwrite existing files"
532
- },
533
- template: {
534
- type: "string",
535
- alias: "t",
536
- description: "Template to use (run `aai templates` for the list)"
537
- },
538
- server: sharedArgs.server,
539
- yes: sharedArgs.yes,
540
- json: sharedArgs.json,
541
- skipDeploy: {
542
- type: "boolean",
543
- description: "Skip deploy after scaffolding"
544
- }
545
- },
546
- cwd: "none",
547
- async run({ args, mode }) {
548
- const { executeInit } = await import("./init-CpJVjEg0.mjs");
549
- return executeInit({
550
- dir: args.dir,
551
- force: args.force,
552
- template: args.template,
553
- yes: mode === "json" ? true : args.yes,
554
- skipDeploy: args.skipDeploy,
555
- server: args.server
556
- }, mode === "json" ? { silent: true } : void 0);
557
- }
558
- });
559
- const dev = defineExec({
560
- meta: {
561
- name: "dev",
562
- description: "Start a local development server"
563
- },
564
- args: {
565
- port: {
566
- type: "string",
567
- alias: "p",
568
- description: "Port to listen on",
569
- default: "3000"
570
- },
571
- json: sharedArgs.json
572
- },
573
- cwd: "agent",
574
- async run({ args, cwd }) {
575
- const { executeDev } = await import("./dev-B59JIfWO.mjs");
576
- return executeDev({
577
- cwd,
578
- port: args.port
579
- });
580
- }
581
- });
582
- const test = defineExec({
583
- meta: {
584
- name: "test",
585
- description: "Run agent tests"
586
- },
587
- args: { json: sharedArgs.json },
588
- cwd: "agent",
589
- async run({ cwd }) {
590
- const { executeTest } = await import("./test-9kPKJI-w.mjs");
591
- return executeTest(cwd);
592
- }
593
- });
594
- const build = defineExec({
595
- meta: {
596
- name: "build",
597
- description: "Bundle agent without deploying"
598
- },
599
- args: {
600
- json: sharedArgs.json,
601
- skipTests: {
602
- type: "boolean",
603
- description: "Skip running tests before build"
604
- },
605
- skipTypecheck: {
606
- type: "boolean",
607
- description: "Skip type checking before build"
608
- }
609
- },
610
- cwd: "agent",
611
- async run({ args, cwd }) {
612
- const { executeBuild } = await import("./build-6jfaakgc.mjs");
613
- return executeBuild({
614
- cwd,
615
- skipTests: args.skipTests,
616
- skipTypecheck: args.skipTypecheck
617
- });
618
- }
619
- });
620
- const eject = defineExec({
621
- meta: {
622
- name: "eject",
623
- description: "Add the self-hosted server.mjs entrypoint to an older project"
624
- },
625
- args: {
626
- force: {
627
- type: "boolean",
628
- alias: "f",
629
- description: "Replace an existing server.mjs"
630
- },
631
- json: sharedArgs.json
632
- },
633
- cwd: "agent",
634
- async run({ args, cwd }) {
635
- const { executeEject } = await import("./eject-C9WJyyr2.mjs");
636
- return executeEject({
637
- cwd,
638
- force: args.force
639
- });
640
- }
641
- });
642
- const deploy = defineExec({
684
+ const mainCommand = defineCommand({
643
685
  meta: {
644
- name: "deploy",
645
- description: "(internal) used by studio Publish",
646
- hidden: true
647
- },
648
- args: {
649
- server: sharedArgs.server,
650
- json: sharedArgs.json,
651
- allowPreviewSlug: {
652
- type: "boolean",
653
- 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)"
654
- },
655
- skipTypecheck: {
656
- type: "boolean",
657
- description: "Skip type checking before deploy"
686
+ name: "aai",
687
+ description: "Voice agent development kit",
688
+ get version() {
689
+ _version ??= readCliVersion(cliDir);
690
+ return _version;
658
691
  }
659
692
  },
660
- cwd: "agent",
661
- async run({ args, cwd }) {
662
- const { executeDeploy } = await import("./deploy-DvYeD8ia.mjs");
663
- return executeDeploy({
664
- cwd,
665
- server: args.server,
666
- allowPreviewSlug: args.allowPreviewSlug,
667
- skipTypecheck: args.skipTypecheck
668
- });
669
- }
670
- });
671
- const del = defineExec({
672
- meta: {
673
- name: "delete",
674
- description: "Delete the studio project and its deployed agents"
675
- },
676
- args: {
677
- server: sharedArgs.server,
678
- json: sharedArgs.json
679
- },
680
- cwd: "any",
681
- async run({ args, cwd }) {
682
- const { executeDelete } = await import("./delete-Dl_LSfvI.mjs");
683
- return executeDelete({
684
- cwd,
685
- server: args.server
686
- });
687
- }
688
- });
689
- const secret = defineCommand({
690
- meta: {
691
- name: "secret",
692
- description: "Manage agent secrets"
693
- },
694
693
  subCommands: {
695
- put: defineExec({
694
+ init: defineExec({
696
695
  meta: {
697
- name: "put",
698
- description: "Create or update a secret"
696
+ name: "init",
697
+ description: "Scaffold a new agent project"
699
698
  },
700
699
  args: {
701
- name: {
700
+ dir: {
702
701
  type: "positional",
703
- description: "Secret name",
704
- required: true
702
+ description: "Project directory",
703
+ required: false
704
+ },
705
+ force: {
706
+ type: "boolean",
707
+ alias: "f",
708
+ description: "Overwrite existing files"
709
+ },
710
+ template: {
711
+ type: "string",
712
+ alias: "t",
713
+ description: "Template to use (run `aai templates` for the list)"
705
714
  },
706
715
  server: sharedArgs.server,
707
- json: sharedArgs.json
716
+ yes: sharedArgs.yes,
717
+ json: sharedArgs.json,
718
+ skipDeploy: {
719
+ type: "boolean",
720
+ description: "Skip deploy after scaffolding"
721
+ }
708
722
  },
709
- cwd: "any",
710
- async run({ args, mode, cwd }) {
711
- const { executeSecretPut, NO_INPUT, readStdin } = await import("./secret-CVvSLIDV.mjs");
712
- const value = mode === "json" ? await readStdin() : void 0;
713
- if (mode === "json" && !value) throw new CliError(...NO_INPUT);
714
- return executeSecretPut(cwd, args.name, value, args.server);
723
+ cwd: "none",
724
+ async run({ args, mode }) {
725
+ const { executeInit } = await import("./init-CUo87gcI.mjs");
726
+ return executeInit({
727
+ dir: args.dir,
728
+ force: args.force,
729
+ template: args.template,
730
+ yes: mode === "json" ? true : args.yes,
731
+ skipDeploy: args.skipDeploy,
732
+ server: args.server
733
+ }, mode === "json" ? { silent: true } : void 0);
715
734
  }
716
735
  }),
717
- delete: defineExec({
736
+ dev: defineExec({
718
737
  meta: {
719
- name: "delete",
720
- description: "Delete a secret"
738
+ name: "dev",
739
+ description: "Start a local development server"
721
740
  },
722
741
  args: {
723
- name: {
724
- type: "positional",
725
- description: "Secret name",
726
- required: true
742
+ port: {
743
+ type: "string",
744
+ alias: "p",
745
+ description: "Port to listen on",
746
+ default: "3000"
727
747
  },
728
- server: sharedArgs.server,
729
748
  json: sharedArgs.json
730
749
  },
731
- cwd: "any",
750
+ cwd: "agent",
732
751
  async run({ args, cwd }) {
733
- const { executeSecretDelete } = await import("./secret-CVvSLIDV.mjs");
734
- return executeSecretDelete(cwd, args.name, args.server);
752
+ const { executeDev } = await import("./dev-BvcctCn2.mjs");
753
+ return executeDev({
754
+ cwd,
755
+ port: args.port
756
+ });
735
757
  }
736
758
  }),
737
- list: defineExec({
759
+ test: defineExec({
738
760
  meta: {
739
- name: "list",
740
- description: "List all secrets"
761
+ name: "test",
762
+ description: "Run agent tests"
763
+ },
764
+ args: { json: sharedArgs.json },
765
+ cwd: "agent",
766
+ async run({ cwd }) {
767
+ const { executeTest } = await import("./test-BvyT6sAc.mjs");
768
+ return executeTest(cwd);
769
+ }
770
+ }),
771
+ eval: defineExec({
772
+ meta: {
773
+ name: "eval",
774
+ description: "Run agent behaviour evals against a live model"
775
+ },
776
+ args: { json: sharedArgs.json },
777
+ cwd: "agent",
778
+ async run({ cwd }) {
779
+ const { executeEval } = await import("./eval-DfQ8cm5p.mjs");
780
+ return executeEval(cwd);
781
+ }
782
+ }),
783
+ build: defineExec({
784
+ meta: {
785
+ name: "build",
786
+ description: "Bundle agent without deploying"
741
787
  },
742
788
  args: {
743
- server: sharedArgs.server,
744
- json: sharedArgs.json
789
+ json: sharedArgs.json,
790
+ skipTests: {
791
+ type: "boolean",
792
+ description: "Skip running tests before build"
793
+ },
794
+ skipTypecheck: {
795
+ type: "boolean",
796
+ description: "Skip type checking before build"
797
+ }
745
798
  },
746
- cwd: "any",
799
+ cwd: "agent",
747
800
  async run({ args, cwd }) {
748
- const { executeSecretList } = await import("./secret-CVvSLIDV.mjs");
749
- return executeSecretList(cwd, args.server);
801
+ const { executeBuild } = await import("./build-BBxf8vom.mjs");
802
+ return executeBuild({
803
+ cwd,
804
+ skipTests: args.skipTests,
805
+ skipTypecheck: args.skipTypecheck
806
+ });
750
807
  }
751
- })
752
- }
753
- });
754
- /** A storage subcommand's optional [dir], resolved against the working directory. */
755
- function resolveStorageCwd(cwd, dir) {
756
- return dir ? path.resolve(cwd, dir) : cwd;
757
- }
758
- const storageDir = {
759
- type: "positional",
760
- description: "Project directory",
761
- required: false
762
- };
763
- const storageStatus = defineExec({
764
- meta: {
765
- name: "status",
766
- description: "Show whether storage is enabled"
767
- },
768
- args: {
769
- dir: storageDir,
770
- server: sharedArgs.server,
771
- json: sharedArgs.json
772
- },
773
- cwd: "any",
774
- async run({ args, cwd }) {
775
- const { executeStorageStatus } = await import("./storage-BvUrnvM3.mjs");
776
- return executeStorageStatus(resolveStorageCwd(cwd, args.dir), args.server);
777
- }
778
- });
779
- const storageEnable = defineExec({
780
- meta: {
781
- name: "enable",
782
- description: "Enable the agent's app database"
783
- },
784
- args: {
785
- dir: storageDir,
786
- server: sharedArgs.server,
787
- json: sharedArgs.json
788
- },
789
- cwd: "any",
790
- async run({ args, cwd }) {
791
- const { executeStorageEnable } = await import("./storage-BvUrnvM3.mjs");
792
- return executeStorageEnable(resolveStorageCwd(cwd, args.dir), args.server);
793
- }
794
- });
795
- const storageDisable = defineExec({
796
- meta: {
797
- name: "disable",
798
- description: "Disable storage and DROP the database schema with all its data"
799
- },
800
- args: {
801
- dir: storageDir,
802
- force: {
803
- type: "boolean",
804
- alias: "f",
805
- description: "Skip confirmation prompt"
806
- },
807
- server: sharedArgs.server,
808
- json: sharedArgs.json
809
- },
810
- cwd: "any",
811
- async run({ args, cwd }) {
812
- const { executeStorageDisable } = await import("./storage-BvUrnvM3.mjs");
813
- return executeStorageDisable(resolveStorageCwd(cwd, args.dir), {
814
- server: args.server,
815
- force: args.force
816
- });
817
- }
818
- });
819
- const logs = defineExec({
820
- meta: {
821
- name: "logs",
822
- description: "Show what the deployed agent has printed"
823
- },
824
- args: {
825
- dir: storageDir,
826
- follow: {
827
- type: "boolean",
828
- alias: "f",
829
- description: "Keep printing new output"
830
- },
831
- server: sharedArgs.server,
832
- json: sharedArgs.json
833
- },
834
- cwd: "any",
835
- async run({ args, cwd }) {
836
- const { executeLogs } = await import("./logs-9q-psa4q.mjs");
837
- return executeLogs(resolveStorageCwd(cwd, args.dir), {
838
- server: args.server,
839
- follow: args.follow
840
- });
841
- }
842
- });
843
- const storage = defineCommand({
844
- meta: {
845
- name: "storage",
846
- description: "Manage the agent's app database"
847
- },
848
- subCommands: {
849
- status: storageStatus,
850
- enable: storageEnable,
851
- disable: storageDisable
852
- }
853
- });
854
- const mainCommand = defineCommand({
855
- meta: mainMeta,
856
- subCommands: {
857
- init,
858
- dev,
859
- test,
860
- build,
861
- eject,
808
+ }),
862
809
  list,
863
810
  pull,
864
811
  push,
865
812
  publish,
866
- deploy,
867
- delete: del,
813
+ deploy: defineExec({
814
+ meta: {
815
+ name: "deploy",
816
+ description: "(internal) used by studio Publish",
817
+ hidden: true
818
+ },
819
+ args: {
820
+ server: sharedArgs.server,
821
+ json: sharedArgs.json,
822
+ allowPreviewSlug: {
823
+ type: "boolean",
824
+ 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)"
825
+ },
826
+ skipTypecheck: {
827
+ type: "boolean",
828
+ description: "Skip type checking before deploy"
829
+ }
830
+ },
831
+ cwd: "agent",
832
+ async run({ args, cwd }) {
833
+ const { executeDeploy } = await import("./deploy-DRC8jWr8.mjs");
834
+ return executeDeploy({
835
+ cwd,
836
+ server: args.server,
837
+ allowPreviewSlug: args.allowPreviewSlug,
838
+ skipTypecheck: args.skipTypecheck
839
+ });
840
+ }
841
+ }),
842
+ delete: defineExec({
843
+ meta: {
844
+ name: "delete",
845
+ description: "Delete the studio project and its deployed agents"
846
+ },
847
+ args: {
848
+ server: sharedArgs.server,
849
+ json: sharedArgs.json
850
+ },
851
+ cwd: "any",
852
+ async run({ args, cwd }) {
853
+ const { executeDelete } = await import("./delete-Dl_LSfvI.mjs");
854
+ return executeDelete({
855
+ cwd,
856
+ server: args.server
857
+ });
858
+ }
859
+ }),
868
860
  login: defineExec({
869
861
  meta: {
870
862
  name: "login",
@@ -892,7 +884,7 @@ const mainCommand = defineCommand({
892
884
  args: { json: sharedArgs.json },
893
885
  cwd: "none",
894
886
  async run({ mode }) {
895
- const { listTemplates } = await import("./_templates-FI3xPEMj.mjs");
887
+ const { listTemplates } = await import("./_templates-4WcKOjS5.mjs");
896
888
  const names = await listTemplates();
897
889
  if (mode === "human") {
898
890
  for (const name of names) log.message(name);